import { TableColumnType } from 'antdv-next';
import { VNode, VNodeChild } from 'vue';
import { JSX } from 'vue/jsx-runtime';
import { StdFormConfig } from './form';
import { CustomRenderArgs } from './props';
export interface StdTableHeaderScope {
    title: string;
    column: any;
}
export interface StdTableBodyScope {
    text: any;
    value: any;
    record: Record<string, any>;
    index: number;
    column: any;
}
export interface StdTableColumnSlotScope {
    record: Record<string, any>;
    column: any;
    text: any;
    value: any;
    index: number;
}
type CustomHeaderRenderFn = (data: StdTableHeaderScope) => VNode | JSX.Element;
type CustomRenderFn<T> = ((props: CustomRenderArgs<T>, source?: 'table' | 'edit' | 'add' | 'detail') => VNodeChild);
export interface StdTableColumn<T = any> extends Omit<TableColumnType, 'customRender'> {
    title: string | (() => string);
    dataIndex: string | string[];
    customHeaderRender?: CustomHeaderRenderFn;
    pure?: boolean;
    search?: boolean | Partial<StdFormConfig>;
    edit?: StdFormConfig;
    batchEdit?: boolean;
    customRender?: CustomRenderFn<T>;
    hiddenInTable?: boolean;
    hiddenInEdit?: boolean;
    hiddenInAdd?: boolean;
    hiddenInDetail?: boolean;
    hiddenInExport?: boolean;
}
export type ExportColumn = Required<StdTableColumn> & {
    checked: boolean;
};
export {};
