import { Control, FieldErrors, UseFormGetValues, UseFormSetValue, UseFormWatch } from 'react-hook-form';
import { InputType } from "reactstrap/types/lib/Input";
export interface IFDataProps {
    open: boolean;
    children: any;
    toggleSidebar: any;
    width?: string | number;
    keyboard?: boolean;
    hiddenBackground?: boolean;
    hiddenFullScreenButton?: boolean;
}
export interface IFDataProps {
    open: boolean;
    children: any;
    toggleSidebar: any;
    width?: string | number;
    keyboard?: boolean;
    hiddenBackground?: boolean;
    hiddenFullScreenButton?: boolean;
}
export type IFColumnSelectTable = {
    field: string;
    headerText: string;
    visible?: boolean;
    textAlign?: 'left' | 'right' | 'center';
    type?: 'text' | 'numeric' | 'date' | 'datetime';
    template?: any;
    typeCondition?: any;
    fraction?: number;
    width?: number;
    maxWidth?: number;
    minWidth?: number;
};
export interface ISelectTableBox {
    id?: string;
    name: string;
    control: any;
    defaultValue?: any;
    isMulti?: boolean;
    isLabel?: boolean;
    inLine?: boolean;
    labelComponent?: any;
    options: any[];
    loadOptions?: any;
    placeholder?: string;
    disabled?: boolean;
    label?: any;
    labelSize?: any;
    required?: boolean;
    errors?: any;
    cssClass?: string;
    callback?: any;
    confirmHandle?: any;
    columns?: IFColumnSelectTable[];
    handleAddNew?: any;
    fieldLabel?: string;
    fieldValue?: string;
    isClearable?: boolean;
    noHeader?: boolean;
    desciptionLabel?: string;
    classLabel?: string;
}
export interface IPropLabel {
    id: string;
    required?: boolean;
    label: string;
    name: string;
    classLabel?: string;
    isLabel?: boolean;
    desciptionLabel?: string;
}
export type IFDataProps_ExportExcel = {
    openModal: boolean;
    typeModal: string;
    handleModal: any;
    windowSize: any;
    dataItem: any;
    columns: any;
    setCheckDetailExport?: any;
    columnGroups?: any[];
    stateid: string;
    url?: string;
    dataOption?: string;
    t?: any;
};
export interface IFPropsDetail_TabSelect_ImportExcel {
    control?: Control<IFDataExcel>;
    watch?: UseFormWatch<IFDataExcel>;
    errors?: FieldErrors<IFDataExcel>;
    setValue?: UseFormSetValue<IFDataExcel>;
    getValues?: UseFormGetValues<IFDataExcel>;
    optionField?: any[];
    windowSize?: any;
    formatNumber?: IFNumberFormat;
    getExcelTemplate?: any;
    stateId: string | undefined | '';
    nameExportTemplate: string | undefined | '';
}
export interface IFPropsDetail_TabMerge_ImportExcel {
    control?: Control<IFDataExcel>;
    watch?: UseFormWatch<IFDataExcel>;
    errors?: FieldErrors<IFDataExcel>;
    setValue?: UseFormSetValue<IFDataExcel>;
    getValues?: UseFormGetValues<IFDataExcel>;
    optionField?: any[];
    windowSize?: any;
    formatNumber?: IFNumberFormat;
    getExcelTemplate?: any;
}
export interface IFPropsDetail_Lite {
    control?: Control<IFDataExcel>;
    watch?: UseFormWatch<IFDataExcel>;
    errors?: FieldErrors<IFDataExcel>;
    setValue?: UseFormSetValue<IFDataExcel>;
    getValues?: UseFormGetValues<IFDataExcel>;
    windowSize?: any;
    formatNumber?: IFNumberFormat;
    getExcelTemplate?: any;
}
export interface IFPropsDetail extends IFPropsDetail_Lite {
    modelExcel: IFDataExcel;
    isOpen: boolean | false;
    isOpenHandle: (isOpen: any) => void;
    isBreakValidData?: boolean | false;
    isBreakSaveErrorRow?: boolean | false;
    dataPostServer?: string | "";
    funcCheckValid?: ((value: any) => any) | undefined;
    pageOptions?: number[] | [];
    pageSizeDefault?: number | 10;
    headerHandleErrorExcelColumns?: any[];
    stateid: string;
    isBreakAutoImport: boolean | false;
    breakAutoImportHandle: ((data: any) => any) | undefined;
    nameExportTemplate: string | undefined | '';
    isDebug?: boolean | undefined | false;
}
export interface IFPropsDetail_ImportInvalid extends IFPropsDetail_Lite {
    isOpen: boolean | false;
    pageOptions: number[];
    pageSizeDefault: number;
    dataInvalid: any[];
    dataValid: any[];
    dataValidate: any[];
    dataError: any[];
    headerValidateExcelColumns?: any[];
    headerHandleErrorExcelColumns: any[];
    callback?: any;
}
export interface IFDataExcel {
    step: number;
    file?: any;
    sheetId?: string;
    headerRow?: number;
    dataMap: IFDataMapExcel[];
}
export interface IFDataMapExcel {
    field: string;
    headerDefault: string[];
    header: string;
    dataType: 'numeric' | 'string' | 'date' | 'datetime' | 'boolean';
    column?: string;
    disableEdit?: boolean;
    isRequired?: boolean;
    width?: number;
    minWidth?: number;
    maxWidth?: number;
    textAlign?: 'center' | 'left' | 'right';
}
export type IFNumberFormat = {
    dateFormat?: string;
    decimalSeparator?: string;
    thousandSeparator?: string;
    colorNegative?: string;
    prefixNegative?: string;
    suffixNegative?: string;
};
export interface IFDataProps_ModelHeader {
    title: string;
    handleModal?: any;
    typeModal?: string;
    component?: any;
}
export interface IFDataStyleSetting {
    color?: string;
    backgroundColor?: string;
    fontFamily?: string;
    fontSize?: number;
    row?: number;
    bold?: boolean;
    italic?: boolean;
    underline?: boolean;
}
export interface IFGetInfoSheetApiParams {
    file: any;
}
export interface IFGetInfoColumnApiParams {
    file: any;
    headerRow: number;
    sheetId: string;
}
export interface IFExportExcel {
    columns: any[];
    keyword?: string;
    id?: string;
    countRowHeader: number;
    title: string;
    subtitle: string;
    organizationId: string;
    filter: string;
    order: string;
}
export interface IFReportExportExcel extends IFExportExcel {
    fieldSums: string[];
    groupby: string[];
    style: IFDataExportExcelSetting;
}
export interface IFLastTMSReportApi {
    resourceCode: string;
    organizationId: string;
}
export interface IFDataExportExcelSetting {
    title: IFDataStyleSetting;
    subtitle: IFDataStyleSetting;
    header: IFDataStyleSetting;
    group1: IFDataStyleSetting;
    group2: IFDataStyleSetting;
    group3: IFDataStyleSetting;
    content: IFDataStyleSetting;
    summary: IFDataStyleSetting;
    nameFile?: string;
    textTitle?: string;
    textSubtitle?: string;
}
export interface IPropLabel_input {
    required?: boolean;
    label: string;
    name: string;
    isLabel?: boolean;
}
export interface IFormInput {
    control: any;
    name: string;
    label: string;
    labelSize?: string;
    disabled?: boolean;
    callback?: any;
    isLabel?: boolean;
    inLine?: boolean;
    confirmHandle?: any;
    reverse?: boolean;
    desciptionLabel?: string;
    text?: string;
    checked?: boolean;
}
export interface IFFormInput {
    id?: string;
    onKeyDown: any;
    dateFormat: string;
    onChange: any;
    className?: string;
    value: Date;
}
export interface IFFormInput_InputNumber {
    control: any;
    name: string;
    id?: string;
    type?: InputType;
    label: string;
    labelSize?: string;
    required?: boolean;
    errors?: any;
    classes?: string;
    min?: number;
    max?: number;
    fractionCurrency?: number;
    disabled?: boolean;
    width?: number;
    isLabel?: boolean;
    inLine?: boolean;
    placeholder?: string;
    thousandSeparator?: string;
    decimalSeparator?: string;
    callback?: any;
    allowNegative?: boolean;
    fixedDecimalScale?: boolean;
}
export interface IFDataStyleSetting_Style {
    color: string;
    backgroundColor: string;
    fontFamily: string;
    fontSize: number;
    bold: boolean;
    italic: boolean;
    underline: boolean;
}
export interface IFDataInputStyle {
    value: IFDataStyleSetting_Style;
    onChange: any;
    disabled?: boolean;
    disabledColor?: boolean;
    disabledBackgroundColor?: boolean;
    disabledFontFamily?: boolean;
    disabledFontSize?: boolean;
    disabledBold?: boolean;
    disabledItalic?: boolean;
    disabledUnderline?: boolean;
}
export interface IFFormInput_Style {
    control: any;
    name: string;
    label: string;
    labelSize?: string;
    required?: boolean;
    errors?: any;
    classes?: string;
    height?: number | string;
    disabled?: boolean;
    isLabel?: boolean;
    inLine?: boolean;
    placeholder?: string;
    callback?: any;
    tooltipText?: string;
    disabledBackgroundColor?: boolean;
    disabledFontFamily?: boolean;
    disabledFontSize?: boolean;
    disabledBold?: boolean;
    disabledItalic?: boolean;
    disabledUnderline?: boolean;
}
export interface IFFormInput_InputText {
    control: any;
    name: string;
    id?: string;
    type?: InputType;
    label: string;
    labelSize?: string;
    required?: boolean;
    errors?: any;
    classes?: string;
    height?: number | string;
    min?: number;
    max?: number;
    disabled?: boolean;
    row?: number;
    isLabel?: boolean;
    inLine?: boolean;
    autoFocus?: boolean;
    placeholder?: string;
    callback?: any;
    readOnly?: boolean;
}
