import * as React from 'react';
import { OverviewDetailItemProps } from '@openshift-console/plugin-shared/src';
import { CodeRef, Extension, ExtensionDeclaration } from '../types';
import { Humanize, TopConsumerPopoverProps, QueryWithDescription } from './console-types';
/** Adds a new inventory item into cluster overview page. */
export declare type ClusterOverviewInventoryItem = ExtensionDeclaration<'console.cluster-overview/inventory-item', {
    /** The component to be rendered. */
    component: CodeRef<React.ComponentType>;
}>;
export declare type GetQuery = (nodeType: string[]) => string;
export declare type GetMultilineQueries = (nodeType: string[]) => QueryWithDescription[];
/** Adds a new cluster overview utilization item. */
export declare type ClusterOverviewUtilizationItem = ExtensionDeclaration<'console.cluster-overview/utilization-item', {
    /** The title of the utilization item. */
    title: string;
    /** Prometheus utilization query. */
    getUtilizationQuery: CodeRef<GetQuery>;
    /** Convert prometheus data to human readable form. */
    humanize: CodeRef<Humanize>;
    /** Prometheus total query. */
    getTotalQuery?: CodeRef<GetQuery>;
    /** Prometheus request query. */
    getRequestQuery?: CodeRef<GetQuery>;
    /** Prometheus limit query. */
    getLimitQuery?: CodeRef<GetQuery>;
    /** Shows Top consumer popover instead of plain value */
    TopConsumerPopover?: CodeRef<React.ComponentType<TopConsumerPopoverProps>>;
}>;
/** Adds a new cluster overview multiline utilization item. */
export declare type ClusterOverviewMultilineUtilizationItem = ExtensionDeclaration<'console.cluster-overview/multiline-utilization-item', {
    /** The title of the utilization item. */
    title: string;
    /** Prometheus utilization query. */
    getUtilizationQueries: CodeRef<GetMultilineQueries>;
    /** Convert prometheus data to human readable form. */
    humanize: CodeRef<Humanize>;
    /** Shows Top consumer popover instead of plain value */
    TopConsumerPopovers?: CodeRef<React.ComponentType<TopConsumerPopoverProps>[]>;
}>;
/**
 * @deprecated use CustomOverviewDetailItem type instead
 */
export declare type OverviewDetailItem = ExtensionDeclaration<'console.dashboards/overview/detail/item', {
    /** The value, based on the DetailItem component */
    component: CodeRef<React.ComponentType>;
}>;
/** Adds an item to the Details card of Overview Dashboard */
export declare type CustomOverviewDetailItem = ExtensionDeclaration<'console.dashboards/custom/overview/detail/item', Omit<OverviewDetailItemProps, 'children' | 'isLoading' | 'error'> & {
    /** The value, rendered by the OverviewDetailItem component */
    component: CodeRef<React.ComponentType>;
    /** Function returning the loading state of the component */
    isLoading?: CodeRef<() => boolean>;
    /** Function returning errors to be displayed by the component */
    error?: CodeRef<() => string>;
}>;
export declare const isClusterOverviewInventoryItem: (e: Extension) => e is ClusterOverviewInventoryItem;
export declare const isClusterOverviewUtilizationItem: (e: Extension) => e is ClusterOverviewUtilizationItem;
export declare const isClusterOverviewMultilineUtilizationItem: (e: Extension) => e is ClusterOverviewMultilineUtilizationItem;
export declare const isOverviewDetailItem: (e: Extension) => e is OverviewDetailItem;
export declare const isCustomOverviewDetailItem: (e: Extension) => e is CustomOverviewDetailItem;
