import React, { Component, ReactNode, ReactText } from 'react';
import DataSet from '../../pro/lib/data-set/DataSet';
import DsRecord from '../../pro/lib/data-set/Record';
import { TablePaginationConfig } from '../../pro/lib/table/interface';
import { PaginationProps } from '../../pro/lib/pagination/interface';
import { SpinProps } from '../spin';
import { Size } from '../_util/enum';
import Item from './Item';
import ConfigContext, { ConfigContextValue } from '../config-provider/ConfigContext';
export { ListItemProps, ListItemMetaProps } from './Item';
export declare type ColumnCount = 1 | 2 | 3 | 4 | 6 | 8 | 12 | 24;
export declare type ColumnType = 'gutter' | 'column' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
export interface ListGridType {
    gutter?: number;
    column?: ColumnCount;
    xs?: ColumnCount;
    sm?: ColumnCount;
    md?: ColumnCount;
    lg?: ColumnCount;
    xl?: ColumnCount;
    xxl?: ColumnCount;
}
export interface RowSelection {
    selectedRowKeys?: ReactText[];
    defaultSelectedRowKeys?: ReactText[];
    onChange?: (keys: ReactText[]) => void;
}
export interface ListProps {
    bordered?: boolean;
    className?: string;
    children?: ReactNode;
    dataSource?: any;
    extra?: ReactNode;
    grid?: ListGridType;
    id?: string;
    itemLayout?: string;
    loading?: boolean | SpinProps;
    loadMore?: ReactNode;
    paginationProps?: PaginationProps & {
        current?: number;
        defaultCurrent?: number;
        defaultPageSize?: number;
        tiny?: boolean;
        size?: string;
        onShowSizeChange?: Function;
    };
    pagination?: TablePaginationConfig | false;
    prefixCls?: string;
    rowPrefixCls?: string;
    spinPrefixCls?: string;
    rowKey?: any;
    renderItem: any;
    size?: Size;
    split?: boolean;
    header?: ReactNode;
    footer?: ReactNode;
    empty?: ReactNode;
    locale?: Record<string, any>;
    dataSet?: DataSet;
    rowSelection?: RowSelection | boolean;
}
export interface ListLocale {
    emptyText: string;
}
export default class List extends Component<ListProps> {
    static displayName: string;
    static Item: typeof Item;
    static get contextType(): typeof ConfigContext;
    static defaultProps: {
        dataSource: never[];
        bordered: boolean;
        split: boolean;
        loading: boolean;
        pagination: boolean;
    };
    context: ConfigContextValue;
    stateCheckedKeys: ReactText[];
    paginationCurrent: number;
    defaultPaginationProps: {
        page: number;
        pageSize: number;
        onChange: (page: number, pageSize: number) => void;
        total: number;
    };
    private keys;
    get rowSelectionKeys(): ReactText[] | undefined;
    get checkedKeys(): ReactText[];
    get paginationProps(): {
        total: any;
        page: number;
        pageSize: number;
        position?: import("../../components-pro/table/enum").TablePaginationPosition | undefined;
        maxPageSize?: number | undefined;
        onChange: ((page: number, pageSize: number) => void) | ((page: number, pageSize: number) => void);
        beforeChange?: ((page: number, pageSize: number) => boolean | void | Promise<boolean | undefined> | undefined) | undefined;
        itemRender?: ((page: number, type: import("../../components-pro/pagination/Pagination").PagerType) => React.ReactNode) | undefined;
        pageSizeOptions?: string[] | undefined;
        pageSizeEditable?: boolean | undefined;
        sizeChangerPosition?: import("../../components-pro/pagination/enum").SizeChangerPosition | undefined;
        sizeChangerOptionRenderer?: import("../../components-pro/field/FormField").Renderer<import("../../components-pro/field/FormField").RenderProps> | undefined;
        showSizeChanger?: boolean | undefined;
        showQuickJumper?: boolean | {
            goButton?: React.ReactNode;
        } | undefined;
        showSizeChangerLabel?: boolean | undefined;
        showTotal?: boolean | ((total: number, range: [number, number], counting?: boolean | undefined) => React.ReactNode) | undefined;
        showPager?: boolean | undefined;
        hideOnSinglePage?: boolean | undefined;
        simple?: boolean | undefined;
        quickJumperPosition?: import("../../components-pro/pagination/enum").QuickJumperPosition | undefined;
        dataSet?: DataSet | undefined;
        code?: boolean | undefined;
        disabled?: boolean | undefined;
        title?: React.ReactNode;
        size?: Size | undefined;
        onAuxClick?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onAuxClickCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onClick?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onClickCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onDoubleClick?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onDoubleClickCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onContextMenu?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onContextMenuCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseUp?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseUpCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseDown?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseDownCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseMove?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseMoveCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseEnter?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseEnterCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseLeave?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseLeaveCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseOver?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseOverCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseOut?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onMouseOutCapture?: ((event: React.MouseEvent<any, MouseEvent>) => void) | undefined;
        onKeyDown?: ((event: React.KeyboardEvent<any>) => void) | undefined;
        onKeyDownCapture?: ((event: React.KeyboardEvent<any>) => void) | undefined;
        onKeyUp?: ((event: React.KeyboardEvent<any>) => void) | undefined;
        onKeyUpCapture?: ((event: React.KeyboardEvent<any>) => void) | undefined;
        onKeyPress?: ((event: React.KeyboardEvent<any>) => void) | undefined;
        onKeyPressCapture?: ((event: React.KeyboardEvent<any>) => void) | undefined;
        onFocus?: ((event: React.FocusEvent<any, Element>) => void) | undefined;
        onFocusCapture?: ((event: React.FocusEvent<any, Element>) => void) | undefined;
        onBlur?: ((event: React.FocusEvent<any, Element>) => void) | undefined;
        onBlurCapture?: ((event: React.FocusEvent<any, Element>) => void) | undefined;
        onCopy?: ((event: React.ClipboardEvent<any>) => void) | undefined;
        onCopyCapture?: ((event: React.ClipboardEvent<any>) => void) | undefined;
        onCut?: ((event: React.ClipboardEvent<any>) => void) | undefined;
        onCutCapture?: ((event: React.ClipboardEvent<any>) => void) | undefined;
        onPaste?: ((event: React.ClipboardEvent<any>) => void) | undefined;
        onPasteCapture?: ((event: React.ClipboardEvent<any>) => void) | undefined;
        onCompositionEnd?: ((event: React.CompositionEvent<any>) => void) | undefined;
        onCompositionEndCapture?: ((event: React.CompositionEvent<any>) => void) | undefined;
        onCompositionStart?: ((event: React.CompositionEvent<any>) => void) | undefined;
        onCompositionStartCapture?: ((event: React.CompositionEvent<any>) => void) | undefined;
        onCompositionUpdate?: ((event: React.CompositionEvent<any>) => void) | undefined;
        onCompositionUpdateCapture?: ((event: React.CompositionEvent<any>) => void) | undefined;
        'aria-activedescendant'?: string | undefined;
        'aria-atomic'?: boolean | "false" | "true" | undefined;
        'aria-autocomplete'?: "none" | "both" | "inline" | "list" | undefined;
        'aria-busy'?: boolean | "false" | "true" | undefined;
        'aria-checked'?: boolean | "mixed" | "false" | "true" | undefined;
        'aria-colcount'?: number | undefined;
        'aria-colindex'?: number | undefined;
        'aria-colspan'?: number | undefined;
        'aria-controls'?: string | undefined;
        'aria-current'?: boolean | "time" | "page" | "false" | "true" | "step" | "date" | "location" | undefined;
        'aria-describedby'?: string | undefined;
        'aria-details'?: string | undefined;
        'aria-disabled'?: boolean | "false" | "true" | undefined;
        'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
        'aria-errormessage'?: string | undefined;
        'aria-expanded'?: boolean | "false" | "true" | undefined;
        'aria-flowto'?: string | undefined;
        'aria-grabbed'?: boolean | "false" | "true" | undefined;
        'aria-haspopup'?: boolean | "dialog" | "menu" | "listbox" | "grid" | "false" | "true" | "tree" | undefined;
        'aria-hidden'?: boolean | "false" | "true" | undefined;
        'aria-invalid'?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
        'aria-keyshortcuts'?: string | undefined;
        'aria-label'?: string | undefined;
        'aria-labelledby'?: string | undefined;
        'aria-level'?: number | undefined;
        'aria-live'?: "off" | "assertive" | "polite" | undefined;
        'aria-modal'?: boolean | "false" | "true" | undefined;
        'aria-multiline'?: boolean | "false" | "true" | undefined;
        'aria-multiselectable'?: boolean | "false" | "true" | undefined;
        'aria-orientation'?: "horizontal" | "vertical" | undefined;
        'aria-owns'?: string | undefined;
        'aria-placeholder'?: string | undefined;
        'aria-posinset'?: number | undefined;
        'aria-pressed'?: boolean | "mixed" | "false" | "true" | undefined;
        'aria-readonly'?: boolean | "false" | "true" | undefined;
        'aria-relevant'?: "all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
        'aria-required'?: boolean | "false" | "true" | undefined;
        'aria-roledescription'?: string | undefined;
        'aria-rowcount'?: number | undefined;
        'aria-rowindex'?: number | undefined;
        'aria-rowspan'?: number | undefined;
        'aria-selected'?: boolean | "false" | "true" | undefined;
        'aria-setsize'?: number | undefined;
        'aria-sort'?: "none" | "ascending" | "descending" | "other" | undefined;
        'aria-valuemax'?: number | undefined;
        'aria-valuemin'?: number | undefined;
        'aria-valuenow'?: number | undefined;
        'aria-valuetext'?: string | undefined;
        id?: string | undefined;
        tabIndex?: number | undefined;
        key?: string | number | undefined;
        suffixCls?: string | undefined;
        prefixCls?: string | undefined;
        className?: string | undefined;
        elementClassName?: string | undefined;
        style?: React.CSSProperties | undefined;
        hidden?: boolean | undefined;
        lang?: import("../../components-dataset/locale-context/enum").Lang | undefined;
        spellCheck?: boolean | "false" | "true" | undefined;
        autoFocus?: boolean | undefined;
        dir?: string | undefined;
        accessKey?: string | undefined;
        contentEditable?: boolean | "inherit" | "false" | "true" | undefined;
        draggable?: boolean | "false" | "true" | undefined;
    };
    componentWillMount(): void;
    componentWillUnmount(): void;
    handleDataSetLoad(): void;
    processDataSetListener(flag: boolean): void;
    initDefaultCheckRows(): void;
    getContextValue(): {
        grid: ListGridType | undefined;
        getPrefixCls: typeof import("../configure").getPrefixCls;
    };
    renderItem: (item: React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | DsRecord, index: number) => any;
    isSomethingAfterLastItem(): boolean;
    renderEmpty: (contextLocale: ListLocale) => JSX.Element;
    getPrefixCls(): string;
    updateStateKey(value: any, key: any): (string | number)[];
    handleChange(value: any, key: any): void;
    renderCheckBox(key: any): {
        element: () => JSX.Element;
        isChecked: boolean;
    } | undefined;
    render(): JSX.Element;
}
