import * as react_jsx_runtime from 'react/jsx-runtime';
import React, { ReactNode, RefObject, PropsWithChildren, ButtonHTMLAttributes, Dispatch, SetStateAction, ReactElement } from 'react';
import { ValidateStatus as ValidateStatus$1, BORDER_TYPE as BORDER_TYPE$1, NUMBER_TYPE as NUMBER_TYPE$1, MODAL_SIZE as MODAL_SIZE$1, NUMBER_BUTTON as NUMBER_BUTTON$1, UPLOADTYPE_IMAGE as UPLOADTYPE_IMAGE$1, TAG_STATUS as TAG_STATUS$1 } from '@Configs/enum';
import { TFunction } from 'i18next';
import { Model, ModelFilter } from 'react-3layer-common';
import { Observable } from 'rxjs';
import { DatePickerProps as DatePickerProps$1, TimePickerProps as TimePickerProps$1, ModalProps, PaginationProps as PaginationProps$1, RadioGroupProps, RadioProps } from 'antd';
import * as dayjs from 'dayjs';
import dayjs__default, { Dayjs } from 'dayjs';
import { RangePickerProps } from 'antd/lib/date-picker';
import { InputAction as InputAction$2 } from '@Components/Input/InputText/InputText';
import { TreeNode as TreeNode$1 } from '@Components/Tree/TreeNode';
import { DataNode, TreeProps as TreeProps$1 } from 'antd/lib/tree';
import { AxiosError } from 'axios';
import { TabsProps as TabsProps$1, TabsType } from 'antd/lib/tabs';
import { TableProps } from 'antd/lib/table';
import { Key } from 'antd/lib/table/interface';

interface ValidateObject {
    validateStatus: ValidateStatus$1;
    message: string;
}
interface FormItemProps {
    /**Show the status validation*/
    validateStatus?: ValidateStatus$1;
    /**The validated message*/
    message?: string;
    children: ReactNode;
    /**Place content to the right*/
    placeRight?: boolean;
    /**Pass object validated to display state of  children field*/
    validateObject?: ValidateObject;
    /**Pass true to only show error in tooltip */
    isTableCell?: boolean;
}
declare function FormItem(props: FormItemProps): react_jsx_runtime.JSX.Element;

interface InputAction$1 {
    name?: ReactNode;
    action?: never;
}
interface InputTextProps {
    /**Label for current field*/
    label?: string;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**Option to set password field */
    typeInput?: "text" | "password";
    /**Show symbol * as required field*/
    isRequired?: boolean;
    /**Prefix for filter value*/
    prefix?: string | JSX.Element;
    /**Suffix for filter value*/
    suffix?: string | JSX.Element;
    /**User-filled value*/
    value?: string;
    /**Not allow to handle change value*/
    disabled?: boolean;
    /**Read only field*/
    readOnly?: boolean;
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Use to custom style the component*/
    className?: string;
    /**Boolean to show the lenght of value user-filled*/
    showCount?: boolean;
    /**Set maximum length of value*/
    maxLength?: number;
    /**Control the size of the component*/
    isSmall?: boolean;
    /**Provide a custom action (onClick) to the component*/
    action?: InputAction$1;
    /**Handle the change value of the field*/
    onChange?: (T: string | null) => void;
    /**Handle onEnter action*/
    onEnter?: (T: string | null) => void;
    /**Handle onBlur action*/
    onBlur?: (T: string | null) => void;
    /**Handle onKeyDown action*/
    onKeyDown?: (event: unknown) => void;
    /**Handle onKeyDown action*/
    onFocus?: () => void;
    /**Handle onKeyUp action*/
    onKeyUp?: (event: unknown) => void;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
    autoComplete?: boolean;
    nameAttr?: string;
    /** */
    autoFocusInput?: boolean;
    /**Regex to check validate input text */
    regexInput?: RegExp;
    /**Description for error if value match regexInput*/
    regexErrorDescription?: string;
    /**pass translate to explain the description of errors */
    translate?: TFunction;
    /** Allow to remove input content with clear icon */
    allowClear?: boolean;
    /**Check byte count */
    isByteCheck?: boolean;
    isShowTooltip?: boolean;
    /**Pass true to only show error in tooltip */
    isTableCell?: boolean;
}
declare const InputText: React.ForwardRefExoticComponent<InputTextProps & React.RefAttributes<HTMLDivElement>>;

interface InputNumberAction {
    name?: string;
    action?: never;
}
interface InputNumberProps {
    /**Label for current field*/
    label?: string;
    /**Show symbol * as required field*/
    isRequired?: boolean;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**User-filled value*/
    value?: number;
    /**Prefix for filter value*/
    prefix?: string | ReactNode;
    /**Suffix for filter value*/
    suffix?: string | ReactNode;
    /**Allow value to be negative or not*/
    allowNegative?: boolean;
    /**Provide an option set decimal number type for value*/
    numberType?: NUMBER_TYPE$1;
    /**Reverse symbol “.” and “,”*/
    isReverseSymb?: boolean;
    /**Provide a length of number behind the point (character)*/
    decimalDigit?: number;
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Not allow to handle change value*/
    disabled?: boolean /**Not allow to handle change value*/;
    /**Read only field*/
    readOnly?: boolean;
    /**Use to custom style the component*/
    className?: string;
    /**Min of the value number*/
    min?: number | string;
    /**Max of the value number*/
    max?: number | string;
    /** Provide a custom action (onClick) to the component */
    action?: InputNumberAction;
    /**Control the size of the component*/
    isSmall?: boolean;
    /**Handle the change value of the component*/
    onChange?: (T: number) => void;
    /**Handle onEnter action*/
    onEnter?: (T: number) => void;
    /**Handle onBlur action*/
    onBlur?: (T: number) => void;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
    /** Allow to remove input content with clear icon */
    allowClear?: boolean;
    /**pass translate to explain the description of errors */
    translate?: TFunction;
    isShowTooltip?: boolean;
    /**Pass true to only show error in tooltip */
    isTableCell?: boolean;
    /**Show input right */
    isInputRight?: boolean;
}
declare function InputNumber(props: InputNumberProps): react_jsx_runtime.JSX.Element;

interface InputSelectProps<T extends Model> {
    /**User-selected value*/
    value?: T;
    /**Not allow to handle change value*/
    disabled?: boolean;
    /** Focus to input of inputSelect */
    expanded?: boolean;
    /** Set expand value */
    handlePressExpandedIcon?: () => void;
    /** Placeholder of the Component */
    placeHolder?: string;
    /**Provide a function to render a specific property as name*/
    render?: (t: T) => string;
    /**Handle the action when click clear value*/
    onClear?: (T: T) => void;
    /**Handle action on search*/
    onSearch?: (T: string) => void;
    /**Handle onKeyDown action*/
    onKeyDown?: (event: any) => void;
    /**Handle onEnter action*/
    onKeyEnter?: (event: any) => void;
    /**Handle the action when clear input search*/
    handleClearInput?: () => void;
    /**Use to custom style the component*/
    className?: string;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**Label for current field*/
    label?: string;
    /** Show symbol * as required field */
    isRequired?: boolean;
    /**Control the size of the component*/
    isSmall?: boolean;
    /**True for data list of filter is Enum (not use in code)*/
    isEnumerable?: boolean;
    /**Boolean true if used for filter*/
    isFilter?: boolean;
    /** Provide a custom action (onClick) to the component */
    action?: InputAction$1;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
    /** If allow to remove input content with clear icon */
    allowClear?: boolean;
    /**Suffix for filter value*/
    suffix?: string | JSX.Element;
    readOnly?: boolean;
    /**Show tooltip */
    isShowTooltip?: boolean;
    /** handle onblur input */
    onBlur?: () => void;
    /** Handle the action when the label is clicked */
    handleClickLabel?: () => void;
}
declare function InputSelect(props: InputSelectProps<Model>): react_jsx_runtime.JSX.Element;

interface InputTagProps<T extends Model> {
    /**List value users select*/
    listValue?: T[];
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Not allow to handle change value*/
    disabled?: boolean;
    /**Provide a function to render a specific property as name*/
    render?: (t: T) => string;
    /**Handle the action when click clear value*/
    onClear?: (T: T) => void;
    /**Handle the action when click clear mutiValue*/
    onClearMulti?: () => void;
    /**Handle action on search*/
    onSearch?: (T: string) => void;
    /**Show symbol * as required field*/
    isRequired?: boolean;
    /**Label for current field*/
    label?: string;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**border by select case*/
    isSelectOption?: boolean;
    /**Control the size of the component*/
    isSmall?: boolean;
    /**Component enable to search data list*/
    isUsingSearch?: boolean;
    /**Handle onKeyDown action*/
    onKeyDown?: (event: any) => void;
    /**Handle onEnter action*/
    onKeyEnter?: (event: any) => void;
    /**Boolean true if used for filter*/
    isFilter?: boolean;
    /**Not expand the title row to see more detail on each post (each row)*/
    isNotExpand?: boolean;
    /**Boolean to set show tooltip */
    isShowTooltip?: boolean;
    /** Provide a custom action (onClick) to the component */
    action?: InputAction$1;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
    /** Set expand value */
    handlePressExpandedIcon?: () => void;
    /**Clear search value when open */
    clearSearchTerm?: boolean;
}
declare function InputTag(props: InputTagProps<Model>): react_jsx_runtime.JSX.Element;

interface InputSearchProps<T extends Model, TModelFilter extends ModelFilter> {
    /**User-filled value to filter*/
    value?: string | null;
    /**Property of inputSearchSelect*/
    valueFilter?: TModelFilter;
    /**Property of inputSearchSelect*/
    getList?: (TModelFilter?: TModelFilter) => Observable<T[]>;
    /**Property of inputSearchSelect*/
    classFilter: new () => TModelFilter;
    /**Property of inputSearchSelect*/
    render?: (t: T) => string;
    /**Property of inputSearchSelect*/
    searchType?: string;
    /**Property of inputSearchSelect*/
    searchProperty?: string;
    /**Use to custom style the component*/
    className?: string;
    /**Property of inputSearchSelect*/
    onChangeSearchField?: (id: number, T?: T) => void;
    /**Handle the change value of the component*/
    onChange?: (value: string) => void;
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Boolean to set input show with animation*/
    animationInput?: boolean;
    /**Option to set position for InputSearch */
    position?: "left" | "right";
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
}
declare function InputSearch(props: InputSearchProps<Model, ModelFilter>): react_jsx_runtime.JSX.Element;

interface TextAreaAction {
    name?: string;
    action?: never;
}
interface TextAreaProps {
    /**Label for current field*/
    label?: string;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**Show symbol * as required field*/
    isRequired?: boolean;
    /**User-filled value*/
    value?: string;
    /**Not allow to handle change value*/
    disabled?: boolean;
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Use to custom style the component*/
    className?: string;
    /**Boolean to show the lenght of value user-filled*/
    showCount?: boolean;
    /**Set maximum length of value*/
    maxLength?: number;
    /**Provide a custom action (onClick) to the component*/
    action?: TextAreaAction;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
    /**Handle the change value of the field*/
    onChange?: (T: string | null) => void;
    /**Handle onEnter action*/
    onEnter?: (T: string | null) => void;
    /**Handle onBlur action*/
    onBlur?: (T: string | null) => void;
    rows?: number;
    cols?: number;
    /**pass translate to explain the description of errors */
    translate?: TFunction;
    /**Pass resize to set type of resize or disable resize */
    resize?: "none" | "both" | "horizontal" | "vertical" | "block" | "inline";
    /**Pass true to only show error in tooltip */
    isTableCell?: boolean;
    /**Read only field*/
    readOnly?: boolean;
}
declare function TextArea(props: TextAreaProps): react_jsx_runtime.JSX.Element;

interface InputAction {
    name?: ReactNode;
    action?: any;
}
interface InputViewProps {
    /**Label for current field*/
    label?: string;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL, NOT_BORDERED */
    type?: BORDER_TYPE$1;
    /**Prefix for filter value*/
    prefix?: string | JSX.Element;
    /**Show * as require field */
    isRequired?: boolean;
    disabled?: boolean;
    /**Suffix for filter value*/
    suffix?: string | JSX.Element;
    /**User-filled value*/
    value?: string;
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Use to custom style the component*/
    className?: string;
    /**Boolean to show the lenght of value user-filled*/
    showCount?: boolean;
    /**Set maximum length of value*/
    maxLength?: number;
    /**Control the size of the component*/
    isSmall?: boolean;
    /**Provide a custom action (onClick) to the component*/
    action?: InputAction;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
}
declare const InputView: React.ForwardRefExoticComponent<InputViewProps & React.RefAttributes<HTMLDivElement>>;

interface InputRangeProps extends InputNumberProps {
    /**User-filled values*/
    valueRange: [number, number] | [];
    /**Placeholder of the component*/
    placeHolderRange?: [string, string];
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**Handle the change [fromNumber, toNumber] of the component*/
    onChangeRange: (T: [number, number]) => void;
    /**Control the size of the component*/
    isSmall?: boolean;
}
declare function InputRange(props: InputRangeProps): react_jsx_runtime.JSX.Element;

interface DatePickerAction {
    name?: string;
    action?: never;
}
interface DatePickerProps {
    /**User-selected value*/
    value?: dayjs__default.Dayjs;
    /**Label for current field*/
    label?: string;
    /** Use to format the date selected */
    dateFormat?: string[];
    /** Handle the change value of the component */
    onChange?: (value: dayjs__default.Dayjs | null, dateString?: string) => void;
    /** Control the style borderType of component: MATERIAL, BORDERED, FLOAT_LABEL */
    borderType?: BORDER_TYPE$1;
    /** Control the size of the component */
    isSmall?: boolean;
    /** Not allow to handle change the component */
    disabled?: boolean;
    /**Read only field*/
    readOnly?: boolean;
    /** Show * as required field */
    isRequired?: boolean;
    /** Use to custom style the component */
    className?: string;
    /** Provide a custom action (onClick) to the component */
    action?: DatePickerAction;
    /** Placeholder of the component */
    placeholder?: string;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
}
declare function DatePicker(props: DatePickerProps & DatePickerProps$1): react_jsx_runtime.JSX.Element;

interface TimePickerAction {
    name?: string;
    action?: any;
}
interface TimePickerProps {
    /**User-selected time value*/
    value?: dayjs__default.Dayjs | any;
    /**Label for current field*/
    label?: string;
    /** Use to format the time selected */
    timeFormat?: string | any[];
    /** Handle the change value of the component */
    onChange?: (value: dayjs__default.Dayjs | null, timeString?: string) => void;
    /** Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    borderType?: BORDER_TYPE$1;
    /** Control the size of the component */
    isSmall?: boolean;
    /** Not allow to handle change the component */
    disabled?: boolean;
    /** Show * as required field */
    isRequired?: boolean;
    /** Use to custom style the component */
    className?: string;
    /** Provide a custom action (onClick) to the component */
    action?: TimePickerAction;
    /** Placeholder of the component */
    placeholder?: string;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
}
declare function TimePicker(props: TimePickerProps & TimePickerProps$1): react_jsx_runtime.JSX.Element;

interface DateRangePickerAction {
    name?: string;
    action?: any;
}
interface DateRangePickerProps {
    /**Label for current field*/
    label?: string;
    /**User-selected values*/
    value: [dayjs.Dayjs, dayjs.Dayjs];
    /** Use to format the date selected */
    dateFormat?: string[];
    /** Handle the change value of the component */
    onChange?: (value: [dayjs.Dayjs, dayjs.Dayjs], dateString?: [string, string]) => void;
    /** Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    borderType?: BORDER_TYPE$1;
    /** Control the size of the component */
    isSmall?: boolean;
    /** Not allow to handle change the component */
    disabled?: boolean;
    /**Read only field*/
    readOnly?: boolean;
    /** Show * as required field */
    isRequired?: boolean;
    /** Use to custom style the component */
    className?: string;
    /** Provide a custom action (onClick) to the component */
    action?: DateRangePickerAction;
    /** Placeholder of the component */
    placeholder?: [string, string];
    /**Return element Popup container */
    getPopupContainer?: () => HTMLElement;
    /**Pass className to style for dropdown */
    popupClassName?: string;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
}
declare function DateRangePicker(props: DateRangePickerProps & RangePickerProps): react_jsx_runtime.JSX.Element;

interface SelectProps$1<T extends Model, TModelFilter extends ModelFilter> {
    /**Value users select*/
    value?: Model;
    /**Value filter for api get data option*/
    valueFilter?: TModelFilter;
    /**The property name of the model filter you want to search in the list data*/
    searchProperty?: string;
    /**The type of searchProperty you want to search in the list data*/
    searchType?: string;
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Not allow to handle change value*/
    disabled?: boolean;
    /**True for data list  is Enum*/
    isEnumerable?: boolean;
    /**Append this component to body*/
    appendToBody?: boolean;
    /**Show symbol * as required field*/
    isRequired?: boolean;
    /**Api to get list data*/
    getList?: (TModelFilter?: TModelFilter) => Observable<T[]>;
    /**Handle the change value of the component*/
    onChange?: (id: number, T?: T) => void;
    /**Provide a function to render a specific property as name*/
    render?: (t: T) => string;
    /**Model filter class of API get list data*/
    classFilter: new () => TModelFilter;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**Label for current field*/
    label?: string;
    /**Option show button add new*/
    selectWithAdd?: () => void;
    /**Title of button add new */
    selectWithAddTitle?: string;
    /** Control the size of the component */
    isSmall?: boolean;
    /**Prefer option to select*/
    preferOptions?: T[];
    /** Provide a custom action (onClick) to the component */
    action?: InputAction$2;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
    /**Use to custom style the component*/
    className?: string;
    /** If allow to remove input content with clear icon */
    allowClear?: boolean;
    /** Search in Select */
    isSearch?: boolean;
    readOnly?: boolean;
    isShowTooltip?: boolean;
}
declare function Select(props: SelectProps$1<Model, ModelFilter>): react_jsx_runtime.JSX.Element;

interface MultipleSelectProps<T extends Model, TFilter extends ModelFilter> {
    /**list value users select*/
    values?: Model[];
    /**Value filter for api get data option*/
    valueFilter?: TFilter;
    /**The property name of the model filter you want to search in the list data*/
    searchProperty?: string;
    /**The type of searchProperty you want to search in the list data*/
    searchType?: string;
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Not allow to handle change value*/
    disabled?: boolean;
    /**Show symbol * as required field*/
    isRequired?: boolean;
    /**Append this component to body*/
    appendToBody?: boolean;
    /**Api to get list data*/
    getList?: (TModelFilter?: TFilter) => Observable<T[]>;
    /**Handle the change value of the field*/
    onChange?: (selectedList?: T[], ids?: []) => void;
    /**Provide a function to render a specific property as name*/
    render?: (t: T) => string;
    /**Model filter class of API get list data*/
    classFilter: new () => TFilter;
    /**Label for current field*/
    label?: string;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**Control the size of the component*/
    isSmall?: boolean;
    /**Option show button add new*/
    selectWithAdd?: () => void;
    /**Component enable to search data list*/
    isUsingSearch?: boolean;
    /**Not expand the title row to see more detail on each post (each row)*/
    isNotExpand?: boolean;
    /**Set enum value */
    isEnumerable?: boolean;
    /**Set material */
    isMaterial?: boolean;
    /**Prefer option to select*/
    preferOptions?: T[];
    /**Set show tooltip or not */
    isShowTooltip?: boolean;
    /** Provide a custom action (onClick) to the component */
    action?: InputAction$2;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
    /**Use to custom style the component*/
    className?: string;
    /**Handle onKeyDown action*/
    onKeyDown?: (event: any) => void;
    /**Handle onEnter action*/
    onKeyEnter?: (event: any) => void;
}
declare function MultipleSelect(props: MultipleSelectProps<Model, ModelFilter>): react_jsx_runtime.JSX.Element;

interface SelectProps<T extends Model> {
    /**Value users select*/
    value?: Model;
    /**List value users select*/
    listValue?: Model[];
    /**Placeholder of the component*/
    placeHolder?: string;
    /**Not allow to handle change value*/
    disabled?: boolean;
    /**Append this component to body*/
    appendToBody?: boolean;
    /**Show symbol * as required field*/
    isRequired?: boolean;
    /**Handle the change value of the field*/
    onChange?: (id: number, T?: T) => void;
    /**Handle the change list value of the component */
    onChangeMultiple?: (selectedList?: T[], ids?: []) => void;
    /**Provide a function to render a specific property as name*/
    render?: (t: T) => string;
    /**Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /**Label for current field*/
    label?: string;
    /**Option show button add new*/
    selectWithAdd?: () => void;
    /**Control the size of the component*/
    isSmall?: boolean;
    /**Prefer option to select*/
    preferOptions?: T[];
    /**Option to select multiple*/
    isMultiple?: boolean;
    /**Api to get list data*/
    getList?: () => Observable<T[]>;
    /**Custom height of dropdown data list*/
    height?: number;
    /** Provide a custom action (onClick) to the component */
    action?: InputAction$2;
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "white" | "gray";
    /**Use to custom style the component*/
    className?: string;
    /**Use to set time get list to call*/
    isLoadMultipleTimes?: boolean;
}
declare function EnumSelect(props: SelectProps<Model>): react_jsx_runtime.JSX.Element;

declare class TreeNode<T extends Model> implements DataNode {
    title: string;
    key: number;
    item: Model;
    children: TreeNode<T>[];
    disabled: boolean;
    constructor(value?: T);
}

interface TreeProps<T extends Model, TModelFilter extends ModelFilter> {
    /**Item selected*/
    items?: Model[];
    /**List TreeNode data*/
    treeData?: TreeNode<T>[];
    /**Value filter for api getTreeData*/
    valueFilter?: TModelFilter;
    /**List key of node is expanding*/
    expandedKeys?: number[];
    /**List key of node checked*/
    checkedKeys?: number[];
    /**Switch to multiple check option*/
    checkable?: boolean;
    /**Key of selected node */
    selectedKey?: number;
    /**Not allow to select the father item that contain a lot of items inside*/
    onlySelectLeaf?: boolean;
    /**API to get data*/
    getTreeData?: (TModelFilter?: TModelFilter) => Observable<T[]>;
    /**Function to change selected items*/
    onChange?: (treeNode: TreeNode<T>[], disableChange?: boolean) => void;
    /**Provide a function to render a specific property as name*/
    render?: (treeNode: T) => string;
    /**Option to show add new button*/
    selectWithAdd?: () => void;
    /**Prefer node item of tree*/
    preferOptions?: T[];
    /**Pass ref of list data select */
    selectListRef?: RefObject<any>;
    /** Prop of AntdTreeProps*/
    titleRender?: (T: T) => ReactNode;
    /** Option to collapse and expand tree data */
    isExpand?: boolean;
    /** Option to let user cant select the selected item in tree list */
    isDisableSelected?: boolean;
    /** Option to let developer can modify tree data */
    buildTree?: (flatData: Model[]) => [TreeNode$1<Model>[], number[]];
    /** Key property when you want to customize build tree object */
    keyField?: string;
}
declare function Tree(props: TreeProps<Model, ModelFilter> & TreeProps$1): react_jsx_runtime.JSX.Element;

interface TreeSelectProps<T extends Model, TModelFilter extends ModelFilter> {
    /**Title for filter field*/
    title?: string;
    /** User-selected values*/
    listItem?: Model[];
    /** User-selected value*/
    item?: Model;
    /**The property name of the model filter you want to search in the list data*/
    searchProperty?: string;
    /**The type of searchProperty you want to search in the list data*/
    searchType?: string;
    /** An optional to multiple check filter values*/
    checkable?: boolean;
    /** Prop of AntdTreeProps*/
    selectable?: boolean;
    /**Check treeNode precisely; parent treeNode and children treeNodes are not associated*/
    checkStrictly?: boolean;
    /** Not allow to handle change filter*/
    disabled?: boolean;
    /** Value filter for api get data option*/
    valueFilter?: TModelFilter;
    /** Placeholder of the component*/
    placeHolder?: string;
    /** Key of selected node */
    selectedKey?: number;
    /**Not allow to select the father item that contain a lot of items inside*/
    onlySelectLeaf?: boolean;
    /**Show symbol * as required field*/
    isRequired?: boolean;
    /**Append this component to body*/
    appendToBody?: boolean;
    /**Provide a function to render a specific property as name*/
    render?: (T: T) => string;
    /** API to get data*/
    getTreeData?: (TModelFilter?: TModelFilter) => Observable<T[]>;
    /** Function to change selected items*/
    onChange?: (T: Model[], TT: boolean) => void;
    /** Model filter class of API get list data*/
    classFilter?: new () => TModelFilter;
    /** Control the style type of component: MATERIAL, BORDERED, FLOAT_LABEL */
    type?: BORDER_TYPE$1;
    /** Label for current field*/
    label?: string;
    /** Control the size of the component*/
    isSmall?: boolean;
    /** Prop of AntdTreeProps*/
    treeTitleRender?: (T: T) => ReactNode;
    /**Option show button add new*/
    selectWithAdd?: () => void;
    /**Component enable to search data list*/
    isUsingSearch?: boolean;
    /** Prefer node item of tree*/
    preferOptions?: T[];
    /** Custom background color for component: "white" || "gray" */
    bgColor?: "gray" | "white";
    /**Use to custom style the component*/
    className?: string;
    /** Option to let user cant select the selected item in tree list */
    isDisableSelected?: boolean;
    /** Option to let developer can modify tree data */
    buildTree?: (flatData: Model[]) => [TreeNode$1<Model>[], number[]];
    /** Key property when you want to customize build tree object */
    keyField?: string;
}
declare function TreeSelect(props: TreeSelectProps<Model, ModelFilter>): react_jsx_runtime.JSX.Element;

type ButtonType = "primary" | "secondary" | "tertiary" | "text" | "danger" | "link" | "icon-primary" | "icon-secondary" | "icon-ghost" | "icon-primary-circle";
interface ButtonProps {
    /**Change the design of button*/
    type?: ButtonType;
    /**Is the button loading or not*/
    loading?: boolean;
    /**Type of component – button*/
    htmlType?: ButtonHTMLAttributes<any>["type"];
    /**Pass the classname to change the style of button*/
    className?: string;
    /**Function to be called when the button is clicked*/
    onClick?: ButtonHTMLAttributes<any>["onClick"];
    /** Size md for only button icon */
    size?: "lg" | "sm" | "md";
    children?: ReactNode;
    /**Disabled state of button*/
    disabled?: boolean;
    /**Set the icon of button*/
    icon?: JSX.Element;
    /**Set the icon of button*/
    iconPlace?: "left" | "right" | "both";
    /**Use stroke for color icon */
    isUseStrokeSvg?: boolean;
    /**link for button link */
    link?: string;
    /**link target */
    linkTarget?: "_blank" | "_self" | "_parent" | "_top";
}
declare const Button: (props: PropsWithChildren<ButtonProps>, ref: React.Ref<any>) => react_jsx_runtime.JSX.Element;

interface IconLoadingProps {
    /** Size of icon */
    size?: number;
    /** Color of icon */
    color?: string;
}
declare function IconLoading(props: IconLoadingProps): react_jsx_runtime.JSX.Element;

interface InlineLoadingProps {
    /**Pass the classname to change the style inline loading */
    className?: string;
    /**State of inline loading*/
    status?: "default" | "submitting" | "submitted" | "error";
    /**Title for status submitting*/
    titleLoading?: string;
    /**Title for status submitted*/
    titleSubmitted?: string;
    /**Title for status error*/
    titleError?: string;
}
declare const InlineLoading: {
    (props: PropsWithChildren<InlineLoadingProps>): react_jsx_runtime.JSX.Element;
    defaultProps: {
        status: string;
        titleLoading: string;
        titleSubmitted: string;
        titleError: string;
    };
};

interface ModalCustomProps$1 extends ModalProps {
    children?: ReactNode;
    /**Is the modal footer (cancel, apply, apply next button) visible or not*/
    visibleFooter?: boolean;
    /**Change the size of modal*/
    size?: MODAL_SIZE$1;
    /**Name of apply button*/
    titleButtonApply?: string;
    /**Name of apply next button*/
    /**Name of cancel button*/
    titleButtonCancel?: string;
    /**Cancel the form (Button type secondary)*/
    handleCancel?: (event: any) => void;
    /**Function pass when you need to handle a different feature*/
    handleClickIcon?: (event: any) => void;
    /**Save the form (Button type primary)*/
    handleSave?: (event: any) => void;
    /**Apply and process to next form*/
    /**Pass disable for button cancel */
    disableButtonCancel?: boolean;
    /**Pass disable for button apply */
    disableButtonApply?: boolean;
    isShowButtonCancel?: boolean;
    isShowButtonApply?: boolean;
    isShowIconBack?: boolean;
}
declare function Modal(props: ModalCustomProps$1): react_jsx_runtime.JSX.Element;

interface TearSheetProps extends ModalProps {
    children?: ReactNode;
    /**Is the modal footer (cancel, save button) visible or not*/
    visibleFooter?: boolean;
    /**Name of save button*/
    titleButtonSave?: string;
    /**Name of cancel button*/
    titleButtonCancel?: string;
    /**Cancel the form*/
    handleCancel?: (event: any) => void;
    /**Save the form*/
    handleSave?: (event: any) => void;
    /**Pass state of loading */
    loadingType?: "default" | "submitting" | "submitted" | "error";
    /**Pass the classname to change the style component*/
    className?: string;
    /**Control the TearSheet visible or not*/
    visible?: boolean;
    /**Title of header TearSheet */
    title?: string;
    /**Description of header TearSheet  */
    description?: string;
    /**Additional content of header TearSheet  */
    additionalContent?: string;
}
declare function TearSheet(props: TearSheetProps): react_jsx_runtime.JSX.Element;
declare namespace TearSheet {
    var defaultProps: {
        titleButtonSave: string;
        titleButtonCancel: string;
        visibleFooter: boolean;
        loadingType: string;
    };
}

interface DrawerProps {
    children?: ReactNode;
    /**Control the drawer visible or not*/
    visible?: boolean;
    /**Control the footer of drawer visible or not*/
    visibleFooter?: boolean;
    /**Control the disable state of Apply button and Apply button*/
    disableButton?: boolean;
    /**Control the disable state of Cancel button*/
    disableButtonCancel?: boolean;
    /**Control the disable state of Cancel button*/
    disableButtonDelete?: boolean;
    /**Control the loading state of the drawer*/
    loading?: boolean;
    /**The title for drawer*/
    title?: ReactNode;
    /**The description for title*/
    description?: ReactNode;
    /**The title of Apply button*/
    titleButtonApply?: string;
    /**The title of Delete button*/
    titleButtonDelete?: string;
    /**The title of ApplyNext button*/
    titleButtonApplyNext?: string;
    /**The title of cancel button*/
    titleButtonCancel?: string;
    /**Control number button of footer drawer*/
    numberButton?: NUMBER_BUTTON$1;
    /**Function to be called when user click close icon*/
    handleClose?: () => void;
    /**Function to be called when user click cancel button*/
    handleCancel?: () => void;
    /**Function to be called when user click delete button*/
    handleDelete?: () => void;
    /**Function to be called when user click Apply button. After click the drawer will be closed*/
    handleSave?: () => void;
    /**Function to be called when user click submit button ApplyNext*/
    handleApplyNext?: () => void;
    /**Control close icon visible or not*/
    isHaveCloseIcon?: boolean;
    /**Control the size of drawer*/
    size?: "sm" | "lg" | "xl" | "2xl" | "max";
    /**Control the size of drawer*/
    side?: "left" | "right";
    /**Use to custom style the component*/
    className?: string;
    /**Option to control overlay drawer visible*/
    hasOverlay?: boolean;
    /**Should handle close when click outside */
    shouldCloseWhenClickOutSide?: boolean;
    /**Show button cancel */
    isShowButtonDelete?: boolean;
    /**Show button cancel */
    isShowButtonCancel?: boolean;
    /**Show button apply next*/
    isShowButtonApplyNext?: boolean;
    /**Show button apply*/
    isShowButtonApply?: boolean;
    footer?: ReactNode;
}
declare function Drawer(props: DrawerProps): react_jsx_runtime.JSX.Element;

interface FileLoadingContentProps {
    /**Pass file loading */
    file?: FileModel$2;
    /**Use to custom style the component*/
    className?: string;
}
declare function FileLoadingContent(props: FileLoadingContentProps): react_jsx_runtime.JSX.Element;

interface FileLoadedContentProps {
    /**Pass list file loaded */
    file?: FileModel$2;
    /**Function use to remove file */
    removeFile?: (fileId: string | number) => void;
    /**Option to set component have only view mode */
    isViewMode?: boolean;
    /**Use to custom style the component*/
    className?: string;
    /**Icon */
    icon?: ReactNode;
    onClickFile?: (file: FileModel$2) => void;
    showIconDowload?: boolean;
    showIconArrowSquareOut?: boolean;
    onClickIcon?: (file: FileModel$2) => void;
}
declare function FileLoadedContent(props: FileLoadedContentProps): react_jsx_runtime.JSX.Element;

interface FileModel$2 {
    id?: number;
    fileId?: string | number;
    name?: string;
    url?: string;
    appUserId?: number;
    rowId?: string;
    content?: string;
    mimeType?: string;
    isFile?: boolean;
    key?: any;
    path?: string;
    level?: number;
    isDelete?: boolean;
    clearAction?: (fileId: string | number) => void;
    handleInput?: (e: any) => void;
}
interface UploadFileProps {
    /**Option for multiple UploadFile */
    isMultiple?: boolean;
    /**Title button */
    titleButton?: string;
    /**Content of UploadFile component */
    uploadContent?: string;
    /**Content of UploadFile component */
    textHint?: string;
    /**Function change list file uploaded */
    updateList?: (files: FileModel$2[]) => void;
    /**API use to upload list file selected to server*/
    uploadFile?: (files: File[] | Blob[]) => Observable<FileModel$2[]>;
    /**Option limit maximum size (b) of list file to upload to server */
    maximumSize?: number;
    /** Option to change style of upload  "link", "button", "dragAndDrop"*/
    type?: "link" | "button" | "dragAndDrop";
    /**Icon of component */
    icon?: JSX.Element;
    /**Option to set component have only view mode */
    isViewMode?: boolean;
    /**Function to set list file in status loading */
    setListFileLoading?: (files: FileModel$2[]) => void;
    /**Use to custom style the component*/
    className?: string;
    /**acept file */
    acceptFiles?: string;
    /**Function to handle error when upload file */
    onUploadError?: (error: AxiosError<any>) => void;
    disabled?: boolean;
}
declare function UploadFile(props: UploadFileProps): react_jsx_runtime.JSX.Element;
declare namespace UploadFile {
    var FileLoadedContent: typeof FileLoadedContent;
    var FileLoadingContent: typeof FileLoadingContent;
}

declare class File$1 extends Model {
    id?: number;
    name?: string;
    url?: string;
    appUserId?: number;
    extension?: string;
    size?: number;
    rowId?: string;
    error?: string;
}
interface FileModel$1 extends File$1 {
    content?: string;
    mimeType?: string;
    isFile?: boolean;
    key?: any;
    path?: string;
    level?: number;
    isDelete?: boolean;
    clearAction?: (fileId: string | number) => void;
    handleInput?: (e: any) => void;
}
interface UploadImageProps {
    /** Option to change style of upload  IMAGE, AVATAR*/
    type?: UPLOADTYPE_IMAGE$1;
    /**Auto upload image */
    autoUpload?: boolean;
    /**Option for multiple UploadImage */
    isMultiple?: boolean;
    /**Option for minimized size UploadImage */
    isMinimized?: boolean;
    /**List image uploaded*/
    files?: FileModel$1[];
    /**Function change list image uploaded */
    updateList?: (files: FileModel$1[]) => void;
    /**API use to upload list image selected to server*/
    uploadFile?: (files: File$1[] | Blob[]) => Observable<FileModel$1[]>;
    /**Icon of component */
    icon?: ReactNode;
    /**Url of avatar for type UPLOADTYPE_IMAGE.AVATAR */
    currentAvatar?: string;
    /**API upload image to server for type UPLOADTYPE_IMAGE.AVATAR */
    uploadAvatar?: (file: File$1 | Blob) => Observable<FileModel$1>;
    /**Function change currentAvatar for type UPLOADTYPE_IMAGE.AVATAR */
    updateAvatar?: (files: FileModel$1) => void;
    /**Function use to remove image */
    removeFile?: (fileId?: string | number) => Observable<boolean>;
    /**Option change size of UploadImage */
    size?: "lg" | "md" | "sm" | "xs";
    /**Use to custom style the component*/
    className?: string;
    /**Option limit maximum size (b) of list image to upload to server */
    maximumSize?: number;
}
declare function UploadImage(props: UploadImageProps): react_jsx_runtime.JSX.Element;

interface ProgressIndicatorContentProps {
    children: ReactNode;
    /**Set max height of view cover content */
    height?: number;
    /**Set max width of view cover content */
    width?: number;
    /**Set contentId so ProgressIndicator can control data view/action scroll */
    contentId?: string;
    /**Use to custom style the component*/
    className?: string;
}
declare function ProgressIndicatorContent(props: ProgressIndicatorContentProps): react_jsx_runtime.JSX.Element;
declare namespace ProgressIndicatorContent {
    var defaultProps: {
        height: number;
    };
}

interface ProgressIndicatorModel {
    sectionName?: string;
    sectionId?: number;
}
interface ProgressIndicatorProps {
    /**Pass list section [{sectionName,sectionId}] */
    list?: ProgressIndicatorModel[];
    /**Pass Id of ProgressIndicatorContent to control action scroll */
    idContainer?: string;
    /**An option to set  vertical or horizontal type*/
    type?: "vertical" | "horizontal";
    /**Use to custom style the component*/
    className?: string;
}
declare const ProgressIndicator: {
    (props: ProgressIndicatorProps): react_jsx_runtime.JSX.Element;
    Content: typeof ProgressIndicatorContent;
    defaultProps: {
        list: any[];
        type: string;
    };
};

declare class Message extends Model {
    id?: number;
    content?: string;
    mobileContent?: string;
    creatorId?: number;
    createdAt?: Dayjs;
    createdDate?: Dayjs;
    updatedAt?: Dayjs;
    deletedAt?: Dayjs;
    creator?: Creator;
    isOwner?: boolean;
    isPopup?: boolean;
    constructor(message?: Message);
}
declare class Creator extends Model {
    id?: number;
    userName?: string;
    displayName?: string;
    avatar?: string;
    name?: string;
}
declare class FileModel extends Model {
    id: number;
    key?: string;
    name?: string;
    content?: string;
    mimetype?: string;
    isFile?: boolean;
    path?: string;
    level?: number;
}

interface CommentProps<TFilter extends ModelFilter> {
    /**Creator of comment*/
    userInfo: Creator;
    /**Option to prevent comment submission*/
    canSend?: boolean;
    /**Placeholder of input comment*/
    placeholder?: string;
    /**Title above of comment component*/
    title?: string;
    /**Id of this discussion*/
    defaultFilter: any;
    /**Set true to show the title of comment component*/
    isShowHeader: boolean;
    /**ModelFilter of param of API use for get list comment*/
    classFilter?: new () => TFilter;
    /**API get list of comment/chat*/
    getMessages?: (TModelFilter?: TFilter) => Observable<Message[]>;
    /**Render name of comment*/
    renderName?: (creator: Creator) => string;
    /**API get quantity of comment/chat*/
    countMessages?: (TModelFilter?: TFilter) => Observable<number>;
    /**API to submit new comment/chat*/
    postMessage?: (Message: Message) => Observable<Message>;
    /**API for edit a comment existed*/
    updateMessage?: (Message: Message) => Observable<Message>;
    /**Boolean attribute to control editable comment existed*/
    canEditMessage?: boolean;
    /**API use when you what to delete a comment*/
    deleteMessage?: (Message: Message) => Observable<boolean>;
    /**API show list suggest of user when you enter @ and want to tag someone to this comment*/
    suggestList?: (filter: TFilter) => Observable<Model[]>;
    /**API call when you want to save file to server and save it to this comment*/
    attachFile?: (File: File) => Observable<FileModel>;
}
declare function Comment(props: CommentProps<ModelFilter>): react_jsx_runtime.JSX.Element;

interface TabsProps extends TabsProps$1 {
    /**Option change tab styling */
    mode?: TabsType;
    /**List key of error tab */
    tabErrorKeys?: string[];
    /**Option for change background color tab to white  */
    lightColor?: boolean;
}
declare function Tabs(props: TabsProps): react_jsx_runtime.JSX.Element;

interface StandardTableCustomProps extends TableProps<any> {
    /**Option pass id of table */
    idContainer?: string;
    /**Table is draggable */
    isDragable?: boolean;
    /**Used to change style table */
    className?: string;
    /**Show sorter tooltip */
    showSorterTooltip?: boolean;
}
declare function StandardTable(props: StandardTableCustomProps): react_jsx_runtime.JSX.Element;

interface ActionRowType<T extends Model> {
    record?: T;
    visible?: boolean;
    x?: number;
    y?: number;
    rowHeight?: number;
}
interface ActionRowProps<T extends Model> {
    children?: ReactNode;
    tableKey?: string;
    actionRow?: ActionRowType<T>;
    setActionRow?: Dispatch<SetStateAction<ActionRowType<T>>>;
}
declare const ActionRow: (props: ActionRowProps<Model>) => react_jsx_runtime.JSX.Element;

interface LayoutCellProps {
    /**Used to change style Component */
    className?: string;
    /** Option to align display value */
    position?: "left" | "right" | "center";
    children: ReactNode;
}
declare function LayoutCell(props: LayoutCellProps): react_jsx_runtime.JSX.Element;

interface LayoutHeaderProps {
    /**Used to change style Component */
    className?: string;
    /** Option to align display value */
    position?: "left" | "right" | "center";
    /** Title of header */
    title?: string;
    /** Maxlength of title to display */
    maxLength?: number;
    /** Boolean to check if column is sorting */
    isSorter?: boolean;
}
declare function LayoutHeader(props: LayoutHeaderProps): react_jsx_runtime.JSX.Element;

interface ActionBarComponentProps {
    children?: ReactNode;
    /** SelectedRowKeys of table */
    selectedRowKeys?: Key[];
    /** SetSelectedRowKeys of table*/
    setSelectedRowKeys?: Dispatch<SetStateAction<Key[]>>;
    /**Handle cancel selection */
    handleCancelAction?: () => void;
    /**Row selection */
    rowSelections?: any;
    translateSelected?: string;
    translateLine?: string;
}
declare function ActionBarComponent(props: ActionBarComponentProps): react_jsx_runtime.JSX.Element;

interface PaginationProps extends PaginationProps$1 {
    /**Current page is skipped */
    pageIndex?: number;
    /**Number of records to get in current page */
    pageSize?: number;
    /**Used to custom the page size options */
    pageSizeOptions?: number[];
    /**Function to change current page */
    onChange?: (pageIndex: number, pageSize: number) => void;
    /**Enter page number to go */
    /**Show change page size */
    changePageSize?: boolean;
    recordPerPageTitle?: string;
    showCurrentRecordsNumber?: boolean;
    currentRecordNumberPosition?: "left" | "right";
}
declare function Pagination(props: PaginationProps): react_jsx_runtime.JSX.Element;

interface BadgeTextProps {
    /**Used to change style of badge text */
    className?: string;
    /**Value to display */
    value?: string;
    /**Background color to display */
    backgroundColor?: string;
    /**Customer value color */
    color?: string;
    /**Max length of display value */
    countCharacters?: number;
    /**Has icon */
    hasIconDot?: boolean;
}
declare function BadgeText(props: BadgeTextProps): react_jsx_runtime.JSX.Element;

interface OneLineTextProps {
    /**Used to change style Component */
    className?: string;
    /**URL of avatar to display */
    avatar?: string;
    /**Shape option of avatar*/
    avatarType?: "circle" | "square";
    /** Icon name to display */
    icon?: string;
    /** Value to display */
    value?: string;
    /**Option to add link into cell */
    link?: string;
    /**Use tooltip for data in cell */
    useTooltip?: boolean;
}
declare function OneLineText(props: OneLineTextProps): react_jsx_runtime.JSX.Element;

interface TwoLineTextProps {
    /**Used to change style Component */
    className?: string;
    /**URL of avatar to display */
    avatar?: string;
    /**Shape option of avatar*/
    avatarType?: "circle" | "square";
    /** Icon name to display */
    icon?: string;
    /** Display value of line 1*/
    valueLine1?: string;
    /** Display value of line 2*/
    valueLine2?: string;
    /** ClassName to style for display line 1 */
    classNameFirstLine?: string;
    /** ClassName to style for display line 2 */
    classNameSecondLine?: string;
    /**Option to add link into cell */
    link?: string;
    /**Use tooltip for data in cell */
    useTooltip?: boolean;
}
declare function TwoLineText(props: TwoLineTextProps): react_jsx_runtime.JSX.Element;

interface StatusLineProps {
    /**Used to change style Component */
    className?: string;
    /** Display value of status */
    value?: string;
    /** Count max length to display of value */
    countCharacters?: number;
    /** Color of status */
    color?: string;
}
declare function StatusLine(props: StatusLineProps): react_jsx_runtime.JSX.Element;

interface ListOverflowMenu {
    title: string;
    action: (params?: any) => void;
    isShow: boolean;
}

interface CustomProps {
    /**List object action {name,function} of menu */
    list?: ListOverflowMenu[];
    /**Change the size of button */
    size?: "md" | "xl";
    /**Append this component to body */
    appendToBody?: boolean;
    /**Option to set type vertical or horizontal */
    type?: "vertical" | "horizontal";
    /**option change style type of overflowMenu */
    isActionRowTable?: boolean;
    /**Option to set not allow to click Component */
    disabled?: boolean;
}
declare function OverflowMenu(props: CustomProps): react_jsx_runtime.JSX.Element;

interface RadioGroupComponentProps {
    /**Handle change item checked */
    onChecked?: (value: boolean) => void;
    /**Value of item checked */
    value?: any;
    /**Not allow to change value RadioGroup */
    disabled?: boolean;
}
declare function RadioGroup(props: RadioGroupComponentProps & RadioGroupProps): react_jsx_runtime.JSX.Element;

interface RadioComponentProps {
    /**Handle the change value */
    onChange?: (value: boolean) => void;
    /**Specifies whether the radio is selected */
    checked?: boolean;
    /**Not allow change value */
    disabled?: boolean;
}
declare function Radio(props: RadioComponentProps & RadioProps & RadioGroupProps): react_jsx_runtime.JSX.Element;
declare namespace Radio {
    var Group: typeof RadioGroup;
}

interface CheckboxProps {
    /**Handle change value checkbox */
    onChange?: (value: boolean) => void;
    /**Specifies whether the checkbox is selected */
    checked?: boolean;
    /**True to not allow change value */
    disabled?: boolean;
    /**Label of this checkbox item */
    label?: string;
    /**Type read only is true */
    readOnly?: boolean;
    /**Max length of label checkbox */
    maxLengthItem?: number;
    /**The indeterminate checked state of checkbox */
    indeterminate?: boolean;
}
declare function Checkbox(props: CheckboxProps): react_jsx_runtime.JSX.Element;

interface CheckboxGroupComponentProps<T extends Model> {
    /**Handle change the values of CheckboxGroup */
    onChange?: (values: number[], selectedOptions?: T[]) => void;
    /**List value of checked  */
    values?: number[];
    /**Not allow change value */
    disabled?: boolean;
    /**Label of CheckboxGroup */
    label?: string;
    /**Pass data options (list item and label for list checkbox inside) */
    dataOptions?: T[];
    /**Option to render item as label of checkbox inside */
    render?: (t: T) => string;
    /**Maximum length of label checkbox inside */
    maxLengthItem?: number;
    /**API to get list data for checkbox inside (as dataOptions) */
    getList?: () => Observable<T[]>;
}
declare function CheckboxGroup(props: CheckboxGroupComponentProps<Model>): react_jsx_runtime.JSX.Element;

interface TagProps {
    /**Used to change style Component */
    className?: string;
    /**Value of Tag*/
    value?: string;
    /**Set background color Tag */
    backgroundColor?: string;
    /**Set color Tag */
    color?: string;
    /**Max length of display value */
    countCharacters?: number;
    /** Provide a custom action (onClick) to the component */
    action?: () => void;
    /**Option change size of component */
    size?: "sm" | "md";
    /**Status of the Tag. */
    status?: TAG_STATUS$1;
    isShowBorder?: boolean;
    isShowDot?: boolean;
    colorDot?: string;
    colorBorder?: string;
}
declare function Tag(props: TagProps): react_jsx_runtime.JSX.Element;

interface TagFilterList {
    title: string;
    value: string;
}
interface TagFilterProps {
    listTag?: TagFilterList[];
    className?: string;
    value?: string;
    onClick?: (value: string) => void;
}
declare function TagFilter(props: TagFilterProps): react_jsx_runtime.JSX.Element;

interface InpageNavigationProps {
    /**Use to custom style the component*/
    className?: string;
    /**List navigation */
    list?: Model[];
    /**Title of component */
    title?: string;
    /**Description of component */
    description?: string;
    /**Handle onChange when onClick to navigation_item */
    onChange?: (data?: any) => void;
    /**Option to custom render name of navigation_item */
    render?: (t: Model) => string;
    /**Pass default navigation_item-active */
    defaultActiveItem?: Model;
}
declare function defaultRenderObject<T extends Model>(t: T): any;
declare function InpageNavigation(props: InpageNavigationProps): react_jsx_runtime.JSX.Element;
declare namespace InpageNavigation {
    var defaultProps: {
        render: typeof defaultRenderObject;
    };
}

interface ModalCustomProps extends ModalProps {
    children?: ReactNode;
    /**Name of apply button*/
    titleButtonApply?: string;
    typeButtonApply?: "primary" | "danger";
    /**Name of cancel button*/
    titleButtonCancel?: string;
    /**Cancel the form*/
    handleCancel?: (event: any) => void;
    /**Save the form*/
    handleSave?: (event: any) => void;
    /**Pass state of loading */
    icon?: ReactNode;
    title?: string;
    content?: string | ReactElement;
    showButtonCancel?: boolean;
    showButtonApply?: boolean;
    loadingButton?: boolean;
}
declare function ModalConfirm(props: ModalCustomProps): react_jsx_runtime.JSX.Element;

declare const _default: {
    setGlobalT: (t: (key: string) => string) => void;
    getGlobalT: () => (key: string) => string;
};

declare const PUBLIC_URL: string;
declare const ASSETS_IMAGE: string;
declare const ASSETS_SVG: string;
declare const BASE_API_URL: string;
declare const SIGNALR_CHANNEL = "Receive";
/**
 * Date-time constants
 */
declare const STANDARD_DATE_REGEX: RegExp;
declare const STANDARD_TIME_REGEX: RegExp;
declare const STANDARD_DATE_TIME_REGEX_WITHOUT_TIMEZONE: RegExp;
declare const STANDARD_DATE_TIME_REGEX: RegExp;
declare const STANDARD_DATE_FORMAT = "YYYY-MM-DD";
declare const STANDARD_DATE_FORMAT_INVERSE = "DD-MM-YYYY";
declare const STANDARD_DATE_FORMAT_INVERSE_DEFAULT = "DD/MM/YYYY";
declare const STANDARD_TIME_FORMAT = "HH:mm:ss";
declare const DEFAULT_DATETIME_VALUE = "0001-01-01T00:00:00";
declare const STANDARD_DATE_TIME_FORMAT = "YYYY-MM-DDTHH:mm:ssZ";
declare const STANDARD_DATE_TIME_FORMAT_VIEW = "DD-MM-YYYY HH:mm:ss";
declare const TIMEZONE_OFFSET: string;
/**
 * Debounce time constants
 */
declare const DEBOUNCE_TIME_100 = 100;
declare const DEBOUNCE_TIME_150 = 150;
declare const DEBOUNCE_TIME_200 = 200;
declare const DEBOUNCE_TIME_250 = 250;
declare const DEBOUNCE_TIME_300 = 300;
declare const DEBOUNCE_TIME_350 = 350;
declare const DEBOUNCE_TIME_400 = 400;
declare const INPUT_DEBOUNCE_TIME = 400;
/**
 * limit constants
 */
declare const DEFAULT_LIMIT_WORD = 50;
declare const NOTIFICATION_LIMIT_WORD = 75;
/**
 * Filter constants
 */
declare const DEFAULT_TAKE = 10;
declare const SPECIAL_CHARACTERS: RegExp;
/**
 * url constants
 */
declare const MENU_URL_REGEX: RegExp;
declare const ACTION_URL_REGEX: RegExp;

declare enum BORDER_TYPE {
    MATERIAL = 0,
    BORDERED = 1,
    FLOAT_LABEL = 2,
    NOT_BORDERED = 3
}
declare enum ValidateStatus {
    success = "success",
    warning = "warning",
    error = "error",
    validating = "validating"
}
declare enum NUMBER_BUTTON {
    THREE = "three",
    TWO = "two"
}
declare enum ADVANCE_DATE_RANGE_TYPE {
    SHORT = 0,
    INPUT = 1
}
declare enum ActionFilterEnum {
    ChangeAllField = 0,
    ChangeOneField = 1,
    ChangePageIndexPageSize = 2,
    ChangeOrderType = 3
}
declare enum UPLOADTYPE_IMAGE {
    IMAGE = 0,
    AVATAR = 1
}
declare enum MODAL_SIZE {
    SIZE_400 = 400,
    SIZE_600 = 600,
    SIZE_800 = 800,
    SIZE_1000 = 1000
}
declare enum NUMBER_TYPE {
    DECIMAL = "DECIMAL",
    LONG = "LONG"
}
declare enum TAG_STATUS {
    SUCCESS = "SUCCESS",
    ERROR = "ERROR",
    INFO = "INFO",
    IN_PROGRESS = "IN_PROGRESS",
    DEFAULT = "DEFAULT",
    CLOSE = "CLOSE"
}

export { ACTION_URL_REGEX, ADVANCE_DATE_RANGE_TYPE, ASSETS_IMAGE, ASSETS_SVG, ActionBarComponent, ActionFilterEnum, ActionRow, BASE_API_URL, BORDER_TYPE, BadgeText, Button, Checkbox, CheckboxGroup, Comment, DEBOUNCE_TIME_100, DEBOUNCE_TIME_150, DEBOUNCE_TIME_200, DEBOUNCE_TIME_250, DEBOUNCE_TIME_300, DEBOUNCE_TIME_350, DEBOUNCE_TIME_400, DEFAULT_DATETIME_VALUE, DEFAULT_LIMIT_WORD, DEFAULT_TAKE, DatePicker, DateRangePicker, Drawer, EnumSelect, FormItem, INPUT_DEBOUNCE_TIME, IconLoading, InlineLoading, InpageNavigation, InputNumber, InputRange, InputSearch, InputSelect, InputTag, InputText, InputView, LayoutCell, LayoutHeader, MENU_URL_REGEX, MODAL_SIZE, Modal, ModalConfirm, MultipleSelect, NOTIFICATION_LIMIT_WORD, NUMBER_BUTTON, NUMBER_TYPE, OneLineText, OverflowMenu, PUBLIC_URL, Pagination, ProgressIndicator, Radio, SIGNALR_CHANNEL, SPECIAL_CHARACTERS, STANDARD_DATE_FORMAT, STANDARD_DATE_FORMAT_INVERSE, STANDARD_DATE_FORMAT_INVERSE_DEFAULT, STANDARD_DATE_REGEX, STANDARD_DATE_TIME_FORMAT, STANDARD_DATE_TIME_FORMAT_VIEW, STANDARD_DATE_TIME_REGEX, STANDARD_DATE_TIME_REGEX_WITHOUT_TIMEZONE, STANDARD_TIME_FORMAT, STANDARD_TIME_REGEX, Select, StandardTable, StatusLine, TAG_STATUS, TIMEZONE_OFFSET, Tabs, Tag, TagFilter, TearSheet, TextArea, TimePicker, Tree, TreeSelect, TwoLineText, UPLOADTYPE_IMAGE, UploadFile, UploadImage, ValidateStatus, _default as i18nStore };
