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 | boolean;
    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(): any;
    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;
}
