import type React from 'react';
import type { PopupPropsCommon } from '../popup/interface';
export declare type OptionData<T> = {
    value: T;
    label: string;
    index?: string;
    [index: string]: any;
};
export declare type RequestResponseData<T> = {
    placeholder?: string;
    options: OptionData<T>[];
};
export interface StepSelectorProps<T> extends PopupPropsCommon {
    /**
     * 标题
     * @default '请选择'
     */
    title?: React.ReactNode;
    /**
     * 顶部安全高度
     * @default safeAreaInsets.top
     */
    safeAreaInsetTop?: number;
    /**
     * 是否在显示弹层时才渲染节点
     * @default true
     */
    lazyRender?: boolean;
    /**
     * 是否显示圆角
     * @default true
     */
    round?: boolean;
    value?: T[];
    defaultValue?: T[];
    onChange?: (v: T[], o: OptionData<T>[], isEnd?: boolean) => void;
    /**
     * 点击关闭按钮
     */
    onPressClose?: () => void;
    /**
     * 请求数据
     */
    request: (parentId: T, index: number) => Promise<RequestResponseData<T>>;
}
export interface StepSelectorLineProps {
    /**
     * 当前的索引
     */
    index: number;
    /**
     * 总数量
     */
    total: number;
    /**
     * 是否是激活的样子
     * @default false
     */
    active?: boolean;
}
export interface StepSelectorMethodProps<T> extends Omit<StepSelectorProps<T>, 'value' | 'onChange' | 'onPressClose' | 'visible' | 'onRequestClose'> {
    /**
     * 当选择到最末端时触发，返回 false 可阻止关闭，支持返回 Promise
     */
    beforeClose?: (v: T[], o: OptionData<T>[], isEnd?: boolean) => boolean | Promise<boolean>;
    /**
     * 类似确定的回调，当选择到最末端时触发，部分业务需要把选项其他值提取出来
     */
    onConfirm?: (v: T[], o: OptionData<T>[], isEnd?: boolean) => void;
    /**
     * 取消
     */
    onCancel?: () => void;
}
export interface StepSelectorInstance {
    <T>(p: StepSelectorMethodProps<T>): Promise<T[]>;
    Component: <T>(p: StepSelectorProps<T>) => React.ReactElement;
}
