import type { CheckboxProps } from '../checkbox';
import type { InputProps } from '../input';
import type { PopupProps, PopupVisibleChangeContext } from '../popup';
import type { SelectInputProps } from '../select-input';
import type { TagInputProps } from '../tag-input';
import type { TagProps } from '../tag';
import type { LNode, SizeType, TreeOptionData } from '../../common.type';
import type { TreeNodeModel } from '../tree';
export interface TypeCascaderProps<CascaderOption extends TreeOptionData = TreeOptionData> {
    checkProps?: CheckboxProps;
    checkStrictly?: boolean;
    clearable?: boolean;
    collapsedItems?: LNode<{
        value: CascaderOption[];
        collapsedSelectedItems: CascaderOption[];
        count: number;
    }>;
    disabled?: boolean;
    empty?: string | LNode;
    filter?: (filterWords: string, node: TreeNodeModel) => boolean | Promise<boolean>;
    filterable?: boolean;
    inputProps?: InputProps;
    keys?: CascaderKeysType;
    lazy?: boolean;
    load?: (node: TreeNodeModel<CascaderOption>) => Promise<Array<CascaderOption>>;
    loading?: boolean;
    loadingText?: string | LNode;
    max?: number;
    minCollapsedNum?: number;
    multiple?: boolean;
    options?: Array<CascaderOption>;
    placeholder?: string;
    popupProps?: PopupProps;
    popupVisible?: boolean;
    readonly?: boolean;
    selectInputProps?: SelectInputProps;
    showAllLevels?: boolean;
    size?: SizeType;
    status?: 'default' | 'success' | 'warning' | 'error';
    tagInputProps?: TagInputProps;
    tagProps?: TagProps;
    tips?: string | LNode;
    trigger?: 'click' | 'hover';
    value?: CascaderValue<CascaderOption>;
    defaultValue?: CascaderValue<CascaderOption>;
    valueMode?: 'onlyLeaf' | 'parentFirst' | 'all';
    valueType?: 'single' | 'full';
    onBlur?: (context: {
        value: CascaderValue<CascaderOption>;
        e: FocusEvent;
    }) => void;
    onChange?: (value: CascaderValue<CascaderOption>, context: CascaderChangeContext<CascaderOption>) => void;
    onFocus?: (context: {
        value: CascaderValue<CascaderOption>;
        e: FocusEvent;
    }) => void;
    onPopupVisibleChange?: (visible: boolean, context: PopupVisibleChangeContext) => void;
    onRemove?: (context: RemoveContext<CascaderOption>) => void;
}
export interface CascaderKeysType {
    value?: string;
    label?: string;
    children?: string | boolean;
}
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' | 'check' | 'clear' | 'uncheck';
export interface RemoveContext<T> {
    value: CascaderValue<T>;
    node: TreeNodeModel<T>;
}
