interface UploadExcelValidation {
    idx: number;
    message: string;
}
export interface UploadExcelOption<T = any> {
    fileName?: string;
    columns?: ExcelColumn<T>[];
    limit?: number;
    key?: string;
    onAccept?: (items?: T[], successItems?: T[], errorItems?: T[], warningItems?: T[], file?: File) => void | Promise<void>;
    mappingItems?: (items: T[]) => T[];
    errorValidation?: (items?: T[]) => UploadExcelValidation[] | Promise<UploadExcelValidation[]>;
    warningValidation?: (items?: T[]) => UploadExcelValidation[] | Promise<UploadExcelValidation[]>;
}
export declare type ExcelColumn<T = any> = ExcelColumnString<T> | ExcelColumnNumber<T> | ExcelColumnBool<T> | ExcelColumnDate<T> | ExcelColumnValues<T>;
export interface ExcelBaseColumn<T = any> {
    field: string;
    title: string;
    required?: boolean;
    width?: string;
    description?: string;
    mappingDisplay?: (item?: T, value?: any) => string | Promise<string>;
    errorValidation?: (item?: T, value?: any) => string | Promise<string>;
    warningValidation?: (item?: T, value?: any) => string | Promise<string>;
}
export interface ExcelColumnString<T = any> extends ExcelBaseColumn<T> {
    type: 'string';
    defaultValue?: string;
    pattern?: string;
    minLength?: number;
    maxLength?: number;
}
export interface ExcelColumnNumber<T = any> extends ExcelBaseColumn<T> {
    type: 'number';
    defaultValue?: number;
    minValue?: number;
    maxValue?: number;
}
export interface ExcelColumnBool<T = any> extends ExcelBaseColumn<T> {
    type: 'bool';
    defaultValue?: boolean;
}
export interface ExcelColumnDate<T = any> extends ExcelBaseColumn<T> {
    type: 'date' | 'time' | 'datetime';
    format?: string;
    defaultValue?: Date;
    minDate?: Date;
    maxDate?: Date;
}
export interface ExcelColumnValues<T = any> extends ExcelBaseColumn<T> {
    type: 'values' | 'radio';
    defaultValue?: string | number;
    values: (string | number)[];
    checkValueInArray?: boolean;
}
export interface Validation {
    error?: string;
    warning?: string;
    data?: {
        [column: string]: {
            error?: string;
            warning?: string;
        };
    };
}
export interface ConfigResult {
    formatDate?: string;
    columns: ExcelColumn[];
}
export {};
