import { LocationDescriptor } from 'history';
import { default as React } from 'react';
import { Data } from '../../types/data';
import { ActionData } from '../Actions/Actions.models';
import { FilterType, FilterValues } from '../Filters/Filters.model';
import { Column, ListSelectMode, SortData } from '../List';
import { PageHeaderActionProps } from '../PageHeader';
import { BulkEditRegistration, ExplorerBulkAction, ExplorerDataProvider, ExplorerDataProviderConnection, ExplorerStateOptions, QuickEditConfig, QuickEditRegistration } from './Explorer.model';
export interface ExplorerProps<T extends Data> {
    /** Title shown in page header */
    title?: string;
    /**
     * Column definitions
     * The order of this array determines the order of columns
     */
    columns: Column<T>[];
    /** The filters that should be available on the Explorer */
    filterOptions?: FilterType<T>[];
    /** Default values for filters */
    defaultFilterValues?: FilterValues<T>;
    /** Options for disabling states that persist such as filters and sorting. All states persist by default */
    persistExplorerStates?: ExplorerStateOptions;
    /** The name of the property on the data object that should be used to identify objects (default: 'id') */
    keyProperty?: keyof T;
    /** Minimum width of this component */
    minimumWidth?: string;
    /** Spacing between columns */
    columnGap?: string;
    /** Header row height */
    headerRowHeight?: string;
    /** List row height */
    listRowHeight?: string;
    /** List row action button and checkbox size */
    listRowActionSize?: string;
    /** Header checkbox size */
    headerRowActionSize?: string;
    /** Spacing between rows */
    rowGap?: string;
    /** Horizontal alignment of text */
    horizontalTextAlign?: 'left' | 'right' | 'center';
    /** Vertical alignment of text */
    verticalTextAlign?: 'start' | 'center' | 'end';
    /** If set to true, column text overflow will be wrapped to a new line. Otherwise, it will be truncated with an ellipsis (default: true) */
    textWrap?: boolean;
    /** Defines when the loading of the next page is triggered. The number represents the number of row left, before a load is triggered. (default: 10) */
    loadingTriggerOffset?: number;
    /** Array of actions to be rendered. */
    actions?: PageHeaderActionProps[];
    /** Array of Bulk Actions to be rendered. If populated, Bulk Actions will become available. */
    bulkActions?: ExplorerBulkAction<T>[];
    /** Whether or not bulk actions are shown by default. (default: false) */
    openBulkActionsOnStart?: boolean;
    /** Unique identifier used to store states related to explorer */
    stationKey: string;
    /** Determines which select mode the list is in.
     * If 'None' is selected, a right chevron will be rendered for each row of data
     * If 'Single' is selected, a check mark will be rendered for each row of data
     * If 'Multi' is selected or Bulk Actions is open, a checkbox will be rendered for the header and each row of data
     */
    selectionMode?: ListSelectMode;
    /** In multiselect mode, whether the Select All button will be displayed. When Select All button is clicked the onItemClicked button will return a filter query instead of an array of items. (default: true) */
    enableSelectAll?: boolean;
    /** Callback used to request new or additional data */
    dataProvider: ExplorerDataProvider<T>;
    /** If true, the explorer will leave some margin for the modal backdrop. */
    modalMode?: boolean;
    /** CSS Class name for additional styles */
    className?: string;
    /** Sets the default sort order for the Explorer. (default: undefined) */
    defaultSortOrder?: SortData<T>;
    /** Update the tab title using the 'title' field. (default: true) */
    setTabTitle?: boolean;
    /** Quick Edit Registrations */
    quickEditRegistrations?: QuickEditRegistration<T>[];
    /** Optional Quick Edit Configuration */
    quickEditConfig?: QuickEditConfig;
    /** Bulk Edit Registration
     * @experimental The feature Bulk Edit and it's underlying implementation is still in beta. */
    bulkEditRegistration?: BulkEditRegistration<T>;
    /**
     * When set, this function is used to generate the link that the user should be navigated to for each item.
     *
     * This property takes precedence over `onItemClicked`, which will not be executed in case `generateItemLink` is set!
     */
    generateItemLink?: (data: T) => LocationDescriptor<unknown>;
    /**
     * Raised when an data item is clicked
     * Row data is supplied as the first argument
     * List mode is supplied as the second argument. List mode may change depending on the bulk actions toggled state
     */
    onItemClicked?: (data: T, mode?: ListSelectMode) => void;
    /**
     * Callback to emit when Bulk Actions is toggled
     * The expanded state is supplied as an argument
     */
    onBulkActionsToggled?: (expanded: boolean) => void;
    /** Provide inline actions which are available through '...' context menu */
    inlineMenuActions?: (data: T) => ActionData[];
}
/**
 * Renders an Explorer that can show a list of assets and allows selection of single assets,
 * performing bulk operations on multiple assets, filtering, sorting as well as a button to create new assets.
 *
 * @example
 * <Explorer<DataInterface>
 *  title="Title"
 *  columns={[{propertyName: 'id', size: '1fr', label: 'Id'}]}
 *  stationKey="station-key"
 *  dataProvider={dataProvider}
 *  bulkActions={[{ label: 'Action One'}]}
 *  onItemClicked={itemClickedHandler}
 * />
 */
export declare const Explorer: <T extends Data>(props: ExplorerProps<T> & React.RefAttributes<ExplorerDataProviderConnection<T>>) => React.ReactElement | null;
//# sourceMappingURL=Explorer.d.ts.map