/**
 * @license chowa v1.1.3
 *
 * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
import * as React from 'react';
import * as PropTypes from 'prop-types';
export interface Record {
    index?: React.ReactText;
    title: React.ReactText;
    disabled?: boolean;
    guessers?: string[];
    [key: string]: any;
}
export declare type Data = Record[];
export declare type Mode = 'source' | 'target';
export interface TransferProps {
    className?: string;
    style?: React.CSSProperties;
    tabIndex?: number;
    data: Data;
    defaultValue?: React.ReactText[];
    value?: React.ReactText[];
    formatter?: (record: Record) => React.ReactNode;
    selectedIndexs?: React.ReactText[];
    titles?: string[];
    searchable?: boolean;
    onSearch?: (value: string, mode: Mode) => void;
    filterOption?: (data: Data, searchVal: string, mode: Mode) => Data;
    searchPlaceholder?: string;
    noDataDescription?: React.ReactNode;
    noDataImg?: string;
    noDataImgStyle?: React.CSSProperties;
    onChange?: (indexs: React.ReactText[]) => void;
    listStyle?: React.CSSProperties;
    operations?: React.ReactNode[];
    onSelectChange?: (sourceIndexs: React.ReactText[], targetIndexs: React.ReactText[]) => void;
    sourceFooter?: React.ReactNode;
    targetFooter?: React.ReactNode;
    disabled?: boolean;
}
export interface TransferState {
    result: React.ReactText[];
    renderData: Data;
    sourceSelectedIndexs: React.ReactText[];
    targetSelectedIndexs: React.ReactText[];
}
declare class Transfer extends React.PureComponent<TransferProps, TransferState> {
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        tabIndex: PropTypes.Requireable<number>;
        data: PropTypes.Validator<any[]>;
        value: PropTypes.Requireable<any[]>;
        defaultValue: PropTypes.Requireable<any[]>;
        formatter: PropTypes.Requireable<(...args: any[]) => any>;
        selectedIndexs: PropTypes.Requireable<any[]>;
        titles: PropTypes.Requireable<any[]>;
        searchable: PropTypes.Requireable<boolean>;
        onSearch: PropTypes.Requireable<(...args: any[]) => any>;
        filterOption: PropTypes.Requireable<(...args: any[]) => any>;
        searchPlaceholder: PropTypes.Requireable<string>;
        noDataDescription: PropTypes.Requireable<string>;
        noDataImg: PropTypes.Requireable<string>;
        noDataImgStyle: PropTypes.Requireable<object>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        listStyle: PropTypes.Requireable<object>;
        operations: PropTypes.Requireable<any[]>;
        onSelectChange: PropTypes.Requireable<(...args: any[]) => any>;
        sourceFooter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        targetFooter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        disabled: PropTypes.Requireable<boolean>;
    };
    static defaultProps: {
        tabIndex: number;
        searchable: boolean;
        value: any[];
        defaultValue: any[];
        selectedIndexs: any[];
        operations: string[];
        disabled: boolean;
    };
    constructor(props: TransferProps);
    componentDidUpdate(preProps: TransferProps): void;
    private onSourceSelectChangeHandler;
    private onTargetSelectChangeHandler;
    private moveToTarget;
    private moveToSource;
    render(): JSX.Element;
}
export default Transfer;
