/** @packageDocumentation
 * @module Picker
 */
import "./ListPicker.scss";
import * as React from "react";
import type { CommonProps, SizeProps } from "@itwin/core-react";
/** Enum for the list picker item type
 * @beta
 */
export declare enum ListItemType {
    Item = 0,
    Separator = 1,
    Container = 2
}
/** List picker item
 * @beta
 */
export interface ListItem {
    [key: string]: any;
    id?: string;
    name?: string;
    enabled: boolean;
    type?: ListItemType;
    children?: ListItem[];
}
/** Properties for the [[ListPicker]] component
 * @beta
 */
export interface ListPickerProps {
    title: string;
    items: ListItem[];
    iconSpec?: string | React.ReactNode;
    setEnabled: (item: ListItem, enabled: boolean) => any;
    onExpanded?: (expand: boolean) => void;
    onSizeKnown?: (size: SizeProps) => void;
    searchBox?: boolean;
    onSearchValueChange?: (search: string) => void;
    panelOnly?: boolean;
    expanded?: boolean;
}
/** Properties for the [[ListPickerItem]] component
 * @beta
 */
export interface ListPickerItemProps extends CommonProps {
    key: any;
    isActive?: boolean;
    isFocused?: boolean;
    onClick?: () => void;
    label?: string;
}
/** List Picker Item React component
 * @beta
 */
export declare class ListPickerItem extends React.PureComponent<ListPickerItemProps> {
    /** Renders ListPickerItem */
    render(): React.JSX.Element;
}
/** Properties for the [[ExpandableSection]] component
 * @beta
 */
export interface ExpandableSectionProps extends CommonProps {
    title?: string;
    expanded?: boolean;
    /** Content */
    children?: React.ReactNode;
}
/** State for the [[ExpandableSection]] component
 * @internal
 */
interface ExpandableSectionState {
    expanded: boolean;
}
/** Expandable Section React component
 * @beta
 */
export declare class ExpandableSection extends React.PureComponent<ExpandableSectionProps, ExpandableSectionState> {
    /** Creates an ExpandableSection */
    constructor(props: ExpandableSectionProps);
    componentDidUpdate(prevProps: Readonly<ExpandableSectionProps>): Promise<void>;
    private _onClick;
    /** Renders ExpandableSection */
    render(): React.JSX.Element;
}
/** @beta */
export declare function getListPanel(props: ListPickerProps): React.ReactNode;
/** Properties for the [[ListPicker]] component
 * @beta
 */
export interface ListPickerPropsExtended extends ListPickerProps {
    enableAllFunc?: () => void;
    disableAllFunc?: () => void;
    invertFunc?: () => void;
}
/**
 * List Picker that lets the user pick from a list of items to enable/disable
 * It also provides options to enable all, disable all and invert selection
 * @beta
 */
export declare class ListPicker extends React.Component<ListPickerPropsExtended> {
    static get Key_All(): number;
    static get Key_None(): number;
    static get Key_Invert(): number;
    static get Key_Separator(): number;
    /** Creates a ListPicker */
    constructor(props: ListPickerPropsExtended);
    private createItems;
    /**
     * Checks if item is a special item.
     * @param item Item to check
     */
    isSpecialItem(item: ListItem): boolean;
    private _setEnabled;
    /** Renders ListPicker */
    render(): React.JSX.Element;
}
export {};
//# sourceMappingURL=ListPicker.d.ts.map