import { type Ref, VNode } from 'vue';
export declare const actionsColumnProp = "_@_actions";
type VNodeWithSeenChildren = VNode & {
    _seenChildren?: VNode[];
};
type Column = {
    type: string;
    prop: string;
    label: string;
    checked: boolean;
    disabled: boolean;
    children?: Column[];
};
type SettingDataConstructorParam = Partial<SettingData> & Pick<SettingData, 'slotItems'>;
/**
 * 表格设置
 *
 * 有两个`map`：一个在`static`中，`new`时使用；一个在`storage`中，`retrieve`时使用
 *
 */
export declare class SettingData {
    columns: Column[];
    slotItems: VNode[];
    purifiedSlotItems: VNode[];
    propEnum: string[];
    id: string;
    static key: string;
    /**
     * see getInstance
     */
    private constructor();
    static getInstance(param: SettingDataConstructorParam): SettingData;
    private validateProp;
    purifySlotItems(slotItems: VNode[]): VNodeWithSeenChildren[];
    generateColumns(purifiedSlotItems: VNode[]): {
        type: any;
        prop: any;
        label: any;
        checked: boolean;
        disabled: boolean;
    }[];
    setColumns(): void;
    clear(): void;
    watch(theRef?: Ref<SettingData>): void;
    store(): void;
    static clear(): void;
    /**
     * 获取表格设置
     * @param option
     * @returns 无id，返回所有设置，需要自行 new SettingData(item)
     * @returns 有id，返回对应设置
     * @returns 有id和columns，返回合并的设置 columns:[...{...columnInOption,...columnInStorage}]
     * columns 由 option.columns.map 合并 storage 中的设置
     */
    static unstore(): Record<string, object> | null;
    static unstore(option: Pick<SettingData, 'id' | 'slotItems'>): SettingData | null;
    static unstore(option: Pick<SettingData, 'id' | 'slotItems' | 'columns'>): SettingData | null;
    static unstore(option: SettingDataConstructorParam): SettingData | Record<string, Partial<SettingData>> | null;
}
export {};
