import { ExtractPropTypes, PropType } from 'vue';
import { FormProps, FormItemProps } from 'ant-design-vue';
export type SelfType = 'slot' | 'mixin';
export type FormType = 'input' | 'select' | 'checkbox' | 'date-picker' | 'input-number' | 'radio' | 'switch';
export type Type = FormType | SelfType;
export interface BaseFormItem extends Partial<FormItemProps> {
    type: Type;
    prop: string;
    label?: string;
    width?: string;
    align?: string;
    tooltip?: boolean;
    isFixed?: boolean;
    left?: Partial<HbFormItems>;
    right?: Partial<HbFormItems>;
    showAll?: boolean;
    isUnNeedBorder?: boolean;
    condition?: boolean | ((data?: any) => boolean);
    key?: string;
    attrs?: Record<string, any>;
    [key: string]: any;
}
type FormItemWithConditionalOptions<T extends Type> = T extends 'select' ? BaseFormItem & {
    options: Record<string, any>;
} : BaseFormItem & {
    options?: Record<string, any>;
};
export type HbFormItems = FormItemWithConditionalOptions<SelfType | FormType>;
export declare const HbFormProps: {
    readonly items: {
        readonly type: PropType<HbFormItems[]>;
        readonly required: true;
    };
    readonly formData: {
        readonly type: PropType<Record<string, any>>;
        readonly required: true;
    };
    readonly layoutConfig: {
        readonly type: PropType<{
            row: Record<string, any>;
            col: Record<string, any>;
        }>;
        readonly default: {
            readonly row: {
                readonly gutter: 20;
            };
            readonly col: {
                readonly xs: 24;
                readonly sm: 12;
                readonly md: 8;
                readonly lg: 6;
                readonly xl: 6;
            };
        };
    };
    readonly needFooter: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly isFormExpanded: {
        readonly type: BooleanConstructor;
        readonly default: true;
    };
    readonly needFilter: {
        readonly type: BooleanConstructor;
        readonly default: true;
    };
    readonly calTableHeight: {
        readonly type: PropType<() => void>;
        readonly default: () => void;
    };
};
export interface SearchCaseItems {
    id: string | number;
    title: string;
    [key: string]: any;
}
export interface HbFormProps_Intf {
    items: HbFormItems[];
    formData: Record<string, any>;
    layoutConfig?: {
        row: Record<string, any>;
        col: Record<string, any>;
    };
    saveKey?: string;
    needFooter?: boolean;
    isFormExpanded?: boolean;
    needFilter?: boolean;
    needSearchCase?: boolean;
    showNumber?: number;
    searchList?: SearchCaseItems[];
    calTableHeight?: () => void;
}
export type HbFormPropsType = ExtractPropTypes<typeof HbFormProps> & FormProps;
export {};
//# sourceMappingURL=type.d.ts.map