import { CheckboxProps } from '../checkbox';
import { PopupProps } from '../popup';
import { TreeNodeModel } from '../tree';
import { TNode, TreeOptionData, SizeEnum } from '../common';
export interface TdCascaderProps<CascaderOption extends TreeOptionData = TreeOptionData> {
    checkProps?: CheckboxProps;
    checkStrictly?: boolean;
    clearable?: boolean;
    collapsedItems?: TNode<{
        value: CascaderOption[];
        collapsedSelectedItems: CascaderOption[];
        count: number;
    }>;
    disabled?: boolean;
    empty?: string | TNode;
    filterable?: boolean;
    keys?: CascaderKeysType;
    lazy?: boolean;
    load?: (node: TreeNodeModel<CascaderOption>) => Promise<Array<CascaderOption>>;
    loading?: boolean;
    loadingText?: string | TNode;
    max?: number;
    minCollapsedNum?: number;
    multiple?: boolean;
    options?: Array<CascaderOption>;
    placeholder?: string;
    popupProps?: PopupProps;
    showAllLevels?: boolean;
    size?: SizeEnum;
    trigger?: 'click' | 'hover';
    value?: CascaderValue<CascaderOption>;
    defaultValue?: CascaderValue<CascaderOption>;
    valueMode?: 'onlyLeaf' | 'parentFirst' | 'all';
    onBlur?: (context: {
        value: CascaderValue<CascaderOption>;
        e: FocusEvent;
    }) => void;
    onChange?: (value: CascaderValue<CascaderOption>, context: CascaderChangeContext<CascaderOption>) => void;
    onFocus?: (context: {
        value: CascaderValue<CascaderOption>;
        e: FocusEvent;
    }) => void;
    onRemove?: (context: RemoveContext<CascaderOption>) => void;
}
export interface CascaderKeysType {
    value?: string;
    label?: string;
    children?: string;
}
export declare type CascaderValue<T extends TreeOptionData = TreeOptionData> = string | number | T | Array<CascaderValue<T>>;
export interface CascaderChangeContext<CascaderOption> {
    node?: TreeNodeModel<CascaderOption>;
    source: CascaderChangeSource;
}
export declare type CascaderChangeSource = 'invalid-value' | 'checked' | 'clear' | 'unchecked';
export interface RemoveContext<T> {
    value: CascaderValue<T>;
    node: TreeNodeModel<T>;
}
