/// <reference types="lodash" />
import React from 'react';
import { ThemeProps } from '../theme';
import { CheckboxesProps } from './Checkboxes';
import { Options, Option } from './Select';
export interface TransferPorps extends ThemeProps, CheckboxesProps {
    inline?: boolean;
    selectTitle: string;
    selectMode?: 'table' | 'list' | 'tree';
    columns?: Array<{
        name: string;
        label: string;
        [propName: string]: any;
    }>;
    searchResultMode?: 'table' | 'list' | 'tree';
    searchResultColumns?: Array<{
        name: string;
        label: string;
        [propName: string]: any;
    }>;
    searchPlaceholder?: string;
    noResultsText?: string;
    onSearch?: (term: string, setCancel: (cancel: () => void) => void) => Promise<Options | void>;
    selectRender?: (props: TransferPorps) => JSX.Element;
    resultTitle: string;
    sortable?: boolean;
}
export interface TransferState {
    inputValue: string;
    searchResult: Options | null;
}
export declare class Transfer extends React.Component<TransferPorps, TransferState> {
    static defaultProps: {
        selectTitle: string;
        resultTitle: string;
        itemRender: (option: Option) => JSX.Element;
    };
    state: {
        inputValue: string;
        searchResult: null;
    };
    valueArray: Options;
    availableOptions: Options;
    unmounted: boolean;
    cancelSearch?: () => void;
    componentWillUnmount(): void;
    toggleAll(): void;
    clearAll(): void;
    handleSearch(text: string): void;
    handleSeachCancel(): void;
    lazySearch: ((text: string) => void) & import("lodash").Cancelable;
    renderSelect(): JSX.Element;
    renderSearchResult(): JSX.Element;
    renderOptions(): JSX.Element;
    render(): JSX.Element;
}
declare const _default: React.ComponentClass<Pick<Pick<TransferPorps, "disabled" | "inline" | "value" | "options" | "sortable" | "className" | "columns" | "classPrefix" | "classnames" | "placeholder" | "onChange" | "labelClassName" | "option2value" | "itemClassName" | "selectMode" | "searchResultMode" | "searchResultColumns" | "searchPlaceholder" | "noResultsText" | "onSearch" | "selectRender"> & Partial<Pick<TransferPorps, "itemRender" | "selectTitle" | "resultTitle">> & Partial<Pick<{
    selectTitle: string;
    resultTitle: string;
    itemRender: (option: Option) => JSX.Element;
}, never>>, "disabled" | "inline" | "value" | "options" | "sortable" | "className" | "columns" | "placeholder" | "onChange" | "labelClassName" | "option2value" | "itemClassName" | "itemRender" | "selectTitle" | "selectMode" | "searchResultMode" | "searchResultColumns" | "searchPlaceholder" | "noResultsText" | "onSearch" | "selectRender" | "resultTitle"> & {
    theme?: string | undefined;
    classPrefix?: string | undefined;
    classnames?: import("../theme").ClassNamesFn | undefined;
}, any> & {
    ComposedComponent: typeof Transfer;
};
export default _default;
