import { PipeTransform, TemplateRef } from '@angular/core';
import { Subscription } from 'rxjs';
import { MenuItem } from 'tn-custom-primeng/api';
import { AutoCompletePickerComponent } from '../components/autocomplete-picker/autocomplete-picker.component';
import { EnumLoaiVanBanBase } from '../components/congviec-picker/models/enums';
import { CrudListComponent } from '../components/crud/crud-list/crud-list.component';
import { EntityPickerDataComponent } from '../components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component';
import { EntityPickerSelectedComponent } from '../components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component';
import { EntityPickerTreeDataComponent } from '../components/entity-picker/entity-picker-dialog/components/entity-picker-tree-data/entity-picker-tree-data.component';
import { EntityPickerTreeSelectedComponent } from '../components/entity-picker/entity-picker-dialog/components/entity-picker-tree-selected/entity-picker-tree-selected.component';
import { EntityPickerComponent } from '../components/entity-picker/entity-picker.component';
import { FilePickerSetting } from '../components/file-explorer/models/file-picker-setting';
import { FileManagerSetting, FileUploadSetting } from '../components/file-explorer/models/file-settings';
import { FileDataService } from '../components/file-explorer/services/file-data.service';
import { FileTypeFlag } from '../models/file-type';
import { Filter, Sort } from '../models/grid-info';
import { KeyValueType } from '../models/types';
import { BaseService } from '../services/base.service';
import { EntityMetadataService } from '../services/entity-metadata.service';
import { MasterDataService } from '../services/master-data.service';
import { ControlTreeNode, CrudFormComponent } from './../components/crud/crud-form/crud-form.component';
import { ICorrector } from './base/correctors';
import { IValidator } from './base/validators';
import { EnumControlPickerType, EnumWorkflowCoreCodeSettingKey, FormState, SharedFolderType } from './constants';
import { WorkflowSetting, WorkflowSettingNew } from './workflow-schema';
export declare function mapProperty(init: object, toMap: object): void;
export declare class ModelSchema {
    field: string;
    name: string;
    fullName?: string;
    description?: string;
    dataType?: 'int' | 'decimal' | 'date' | 'datetime' | 'string' | 'boolean' | 'timespan' | 'html' | 'intWithoutMask';
    constructor(init?: ModelSchema);
}
export declare class CrudBase {
    componentSubs: Subscription[];
    constructor(init?: CrudBase);
}
export declare class CrudListSetting {
    key: string;
    title: string;
    targetPath?: string;
    objectName: string;
    entityKey: string;
    settingKey?: string;
    entityMetadataService?: EntityMetadataService;
    modelSchemas?: ModelSchema[];
    cols?: ColumnSchemaBase[];
    commonSchemas?: FormControlBase[];
    columnSetting?: ColumnSetting;
    pageSetting?: PageSetting;
    heightType?: HeightType;
    fixHeightTypeInDialog?: boolean;
    multipleCheckWhenClickRow: boolean;
    customWorkflowCodeTrinhKy: EnumWorkflowCoreCodeSettingKey;
    stickyColumn: boolean;
    tableName?: string;
    baseService?: BaseService;
    reSelectLastItem?: boolean;
    fireEventWhenReSelect?: boolean;
    advanceData?: any;
    fieldNeedGetRef?: RefField[];
    workflowSetting?: WorkflowSetting;
    workflowSettingNew?: WorkflowSettingNew;
    isWorkflowTree?: boolean;
    workflowConfigAdvance?: WorkflowConfigAdvance;
    ignoreWorkflow?: boolean;
    displayField: string | ((item: any) => string);
    getDisplayNameInServer: boolean;
    hasCustomHandleClickRow: boolean;
    checkAllowTrinhKy: (rowData: any) => Promise<boolean>;
    checkAllowSelectRow: (rowData: any, evt?: any) => boolean;
    getItemState: (lstRowData: any[]) => {
        [key: string]: any;
    };
    getDataForNextFirstStepTask?: (rowData: any) => ({});
    checkPermisionTrinhKy: boolean;
    useWorkflowButton?: boolean;
    showEditLink: boolean;
    showButtonThuHoi: boolean;
    showFileManagerFromWfProcess: boolean;
    showConfirmExport: boolean;
    showEditLinkOnlyView: boolean;
    placeholderCommonSearch: string;
    toolTipSearhBoxCommon: string;
    mdWidthCommonSearch: number;
    useCommonSearch: boolean;
    useCommonFullTextSearch: boolean;
    hiddenSearch: boolean;
    hiddenHeader: boolean;
    hiddenPageSetting: boolean;
    hiddenTextPage: boolean;
    hiddenToolbar: boolean;
    hiddenButtons: boolean;
    hiddenAdvanceSearch: boolean;
    hiddenSaveSetting: boolean;
    hiddenSetting: boolean;
    hiddenSettingPermission: boolean;
    hiddenSettingWorkflow: boolean;
    hiddenPageTitle: boolean;
    hiddenCheckbox: boolean;
    hiddenOrderColumn: boolean;
    hiddenWorkflowColumn: boolean;
    hiddenWorkflowHistory: boolean;
    allowFilterWorkflowColumn: boolean;
    hiddenFunctionColumn: boolean;
    hiddenRefresh: boolean;
    hiddenFilterRow: boolean;
    hiddenTrinhKy: boolean;
    useBaseTrinhKy: boolean;
    disableShare: boolean;
    disableViewWorkflowAttach: boolean;
    hiddenWorkflowCoreStatus: boolean;
    requiredVanBanDiAfterTrinhKy: boolean;
    groupColumn?: ColumnSchemaBase;
    showExportAll: boolean;
    showExportSelectedItems: boolean;
    showExportWordSelectedItems: boolean;
    exportAllModel: ExportAllMode;
    exportItemsMode: ExportItemsMode;
    enableVersion: boolean;
    showVersionButton: boolean;
    versionModel?: {
        [key: string]: any;
    };
    showHistory: boolean;
    history?: any;
    colorFilterField: string;
    colorFilterTable?: RowColorOption[];
    entityMetadataSetting?: CrudFormSetting;
    fieldSearchText?: string[];
    filterTemplateAdvs?: Filter[];
    function: CrudListCustomFunction;
    popupHeader?: string;
    popupSize?: PopupSize;
    maskClass?: string;
    hiddenReorder?: boolean;
    reorderField?: string;
    enableReorderRow?: boolean;
    /**
     * Auto generate gridInfo.fields using setting.cols + dataList.addtionalFields
     * @date 11/4/2022 - 2:04:31 PM
     *
     * @type {?boolean}
     */
    autoGenerateSelectFields?: boolean;
    modifyRowDataForTask: (rowData: any) => void;
    modifyItemTask: (modelTask: any, rowData: any) => void;
    getCustomDataTrinhKy: (rowData: any) => any;
    getLabelButtonTrinhKy: (rowData: any) => string;
    checkReadyToTrinhKy: () => boolean;
    constructor(init?: CrudListSetting);
}
export declare class WorkflowConfigAdvance {
    getWorkflowSetting: (rowData: any) => WorkflowSettingNew;
}
export declare class CrudListCustomFunction {
    getSearchControl?: (field: string) => FormSchemaBase[];
    modifyAdvanceSeachModel?: (data: AdvanceSearchData, setting: AdvanceSearchSetting) => Promise<void>;
    constructor(init?: CrudListCustomFunction);
}
export declare class PersonalSetting {
    columnSetting?: ColumnSetting;
    pageSetting?: PageSetting;
    colorFilterField: string;
    colorFilterTable?: RowColorOption[];
    constructor(init?: PersonalSetting);
}
export declare class CrudListData extends CrudBase {
    loading: boolean;
    adjustedPositionLoading: boolean;
    ready: boolean;
    baseReady: boolean;
    dataSource?: any[];
    allDataSource?: {
        raw: any[];
        data: any[];
    };
    selectedItems?: any[];
    selectedItem?: any;
    selectedItemLast?: any;
    selectedId?: number;
    total: number;
    itemData?: any;
    advanceData: any;
    submitting: boolean;
    expandedRowKeys?: {
        [key: string]: boolean;
    };
    constructor(init?: CrudListData);
}
export declare class EntityMedataDataSetting {
    data?: any;
    constructor(init?: EntityMedataDataSetting);
}
export declare class RowColorOption {
    filterValue: string;
    compareType: string;
    color: string;
    constructor(init?: RowColorOption);
}
export declare class PageSetting {
    page: number;
    pageSize: number;
    constructor(init?: PageSetting);
}
export declare class ColumnSetting {
    sorts?: Sort[];
    sortField?: string;
    sortDir?: -1 | 0 | 1 | 2;
    groupField: string;
    groupInClient?: boolean;
    showGroupSize: boolean;
    details?: ColumnSettingDetail[];
    columnReorder?: any;
    constructor(init?: ColumnSetting);
}
export declare class ColumnSettingDetail {
    order?: number;
    columnCode?: string;
    columnName?: string;
    visible?: boolean;
    textAlign?: TextAlign;
    width?: string;
}
export declare class CrudFormData extends CrudBase {
    data?: any;
    submitting?: boolean;
    /**
     * Trạng thái của form đang được mở: Là form thêm mới, hay form sửa, hay form xóa
     */
    formState?: FormState;
    workflowButtons?: any[];
    constructor(init?: CrudFormData);
}
export declare class CrudFormCustomFunction {
    modifyDataAfterGetCache?: (data: any) => void;
    constructor(init?: CrudListCustomFunction);
}
export declare class CrudFormSetting {
    disableCaching: boolean;
    hiddenTrinhKy: boolean;
    schema?: FormSchemaBase[];
    baseService?: BaseService;
    buildInSchema?: FormControlBase[];
    uniqueField?: string[] | string[][];
    fieldDropdown?: {
        [key: string]: DropdownControlSchema;
    };
    fieldNeedGetRef?: {
        [key: string]: TextControlSchema;
    };
    displayField?: string | ((item: any) => string);
    firstFocusControl?: string;
    filterCheckExistByVersion?: Filter[];
    defaultFilterCheckExist?: Filter[] | (() => Filter[]);
    customWorkflowCodeTrinhKy: EnumWorkflowCoreCodeSettingKey;
    entityMetadataData?: CrudFormData;
    entityMetadataSetting?: CrudFormSetting;
    function?: CrudFormCustomFunction;
    hiddenKySoSimCaNhan?: boolean;
    hiddenKySoUsbCaNhan?: boolean;
    hiddenKySoDonVi?: boolean;
    getCustomDataTrinhKy: (rowData: any) => any;
    constructor(init?: CrudFormSetting);
}
export declare class AdvanceSearchData extends CrudFormData {
    initData?: any;
    constructor(init?: AdvanceSearchData);
}
export declare class AdvanceSearchSetting extends CrudFormSetting {
    fieldKey: string;
    entityPermissionSchema?: FormControlBase[];
    keepInitSearchDataNotNull: boolean;
    constructor(init?: AdvanceSearchSetting);
}
export declare class SchemaBase {
    field?: string;
    fieldFilter?: string;
    uniqueField?: string;
    type?: 'boolean' | 'int' | 'decimal' | 'datetime' | 'string';
    constructor(init?: SchemaBase);
}
export declare class FormSchemaBase extends SchemaBase {
    label?: string;
    fullLabel?: string;
    description?: string;
    message?: string;
    messageClass?: string;
    showLabel?: boolean;
    gWidth?: number;
    mdWidth?: number;
    rowSpan?: number;
    width?: string;
    class?: string;
    style?: any;
    disabled?: boolean;
    hidden?: boolean;
    hiddenCheck?: (rootModel: any, currentNode: ControlTreeNode) => boolean;
    hiddenOnView?: boolean;
    visibleInList?: boolean;
    operator?: Operator;
    groupCode?: string;
    defaultValue?: any;
    fieldAlias?: string;
    data?: any;
    isHtmlLabel?: boolean;
    isHorizontallyLabel?: boolean;
    order?: number;
    errorLabel?: string;
    constructor(init?: FormSchemaBase);
}
export declare class ContainerSchema extends FormSchemaBase {
    controls: FormSchemaBase[];
    showInBox?: boolean;
    boxStyle?: any;
    constructor(init?: ContainerSchema);
}
export declare class FormSchemaBaseWithService extends FormSchemaBase {
    serviceUri?: string;
    baseService?: BaseService | MasterDataService;
    refFields?: RefField[];
    groupCode?: string;
    valueField?: string;
    displayField?: string;
    dataSource?: any[];
    isServerLoad?: boolean;
    searchField?: string[];
    isTree?: boolean;
    isTreeBaseModel?: boolean;
    fieldTree?: string;
    valueParentRoot?: any;
    fieldParentTreeItem?: string;
    selectChildItem?: boolean;
    selectDescendant?: boolean;
    plusUrl?: string;
    sorts?: Sort[];
    sortField?: string;
    sortDir?: 1 | -1;
    fieldPlus?: string;
    defaultFilters?: Filter[] | Function | Promise<Filter[]>;
    afterGetData?: Function;
    funcSetDefaultValue?: Function;
    fieldValueParent?: string;
    callbackDataFinish?: (evt: EventData) => void;
    modifyFilter?: Function;
    funcGetLabel?: (item: any) => string;
    funcCompare?: (item: any, value: any) => boolean;
    constructor(init?: FormSchemaBaseWithService);
}
export declare class LabelSchema extends FormSchemaBase {
    for?: string;
    isHtml?: boolean;
    mdWidth?: number;
    indexLabel?: number;
    text?: string;
    constructor(init?: LabelSchema);
}
export declare class TitleSchema extends LabelSchema {
    class?: string;
    mdWidth?: number;
    constructor(init?: TitleSchema);
}
export declare class FormControlBase extends FormSchemaBase {
    _component?: any;
    uniqueField?: string;
    autofocus?: boolean;
    validators?: IValidator[];
    correctors?: ICorrector[];
    required?: boolean;
    showIconRequired?: boolean;
    enableCaching?: boolean;
    onChanged?: Function;
    onAfterChanged?: Function;
    onInit?: Function;
    onRowNodeFinishInit?: Function;
    triggerLoadChild?: Function;
    hasOperatorCanBo?: boolean;
    addToGridInfo?: boolean;
    constructor(init?: FormControlBase);
}
export declare class FormControlBaseWithService extends FormControlBase {
    /** Copy từ FormSchemaBaseWithService */
    serviceUri?: string;
    baseService?: BaseService | MasterDataService;
    refFields?: RefField[];
    groupCode?: string;
    valueField?: string;
    displayField?: string;
    isServerLoad?: boolean;
    preventServerLoadOnInit?: boolean;
    searchField?: string[];
    isTree?: boolean;
    isTreeBaseModel?: boolean;
    fieldTree?: string;
    valueParentRoot?: any;
    fieldParentTreeItem?: string;
    fieldMaPhanCap?: string;
    selectChildItem?: boolean;
    selectDescendant?: boolean;
    pageSize?: number;
    plusUrl?: string;
    sorts?: Sort[];
    sortField?: string;
    sortDir?: 1 | -1;
    fieldPlus?: string;
    defaultFilters?: Filter[] | Function | Promise<Filter[]>;
    filterWhileProcess?: Filter[] | Function | Promise<Filter[]>;
    bindingFilters?: Filter[];
    afterGetData?: Function;
    funcSetDefaultValue?: Function;
    parentField?: string;
    fieldValueParent?: string;
    callbackDataFinish?: (evt: EventData) => void;
    fireCallBackInside?: boolean;
    modifyFilter?: Function | ((filters: Filter[], component?: any, treeNode?: ControlTreeNode) => void);
    funcGetLabel?: (item: any) => string;
    funcGetValue?: (item: any) => any;
    funcCompare?: (item: any, value: any) => boolean;
    /** End copy từ FormSchemaBaseWithService */
    constructor(init?: FormControlBaseWithService);
}
export declare class TextControlSchema extends FormControlBase {
    selectAllText?: boolean;
    placeholder?: string;
    dataFormat?: 'text' | 'password' | 'number' | 'email' | 'phone' | 'fax' | 'money' | 'moneyint' | 'amount';
    maxLength?: number;
    min?: number;
    max?: number;
    baseService?: BaseService | MasterDataService;
    groupCode?: string;
    valueField?: string;
    displayField?: string;
    plusUrl?: string;
    sorts?: Sort[];
    sortField?: string;
    sortDir?: 1 | -1;
    isReadonly?: boolean;
    fieldPlus?: string;
    constructor(init?: TextControlSchema);
}
export declare class ReferenceTextControlSchema extends FormControlBase {
    placeholder?: string;
    suffix?: string;
    prefix?: string;
    baseService?: BaseService | MasterDataService;
    groupCode?: string;
    valueField?: string;
    displayField?: string;
    dataSource?: any[];
    funcGetLabel?: (item: any) => string;
    plusUrl?: string;
    sorts?: Sort[];
    sortField?: string;
    sortDir?: 1 | -1;
    fieldPlus?: string;
    constructor(init?: ReferenceTextControlSchema);
}
export declare class TextControlSchemaWithService extends FormControlBaseWithService {
    placeholder?: string;
    dataFormat?: 'text' | 'number' | 'email' | 'phone' | 'fax' | 'money' | 'moneyint' | 'amount';
    maxLength?: number;
    constructor(init?: TextControlSchemaWithService);
}
export declare class MaskControlSchema extends TextControlSchema {
    maskType?: 'decimal' | 'int';
    autoFormat?: boolean;
    min?: number;
    max?: number;
    prefix?: string;
    suffix?: string;
    decimalPlaces?: number;
    constructor(init?: MaskControlSchema);
}
export declare class NumberRangeControlSchema extends TextControlSchema {
    maskType?: 'decimal' | 'int';
    min?: number;
    max?: number;
    prefix?: string;
    suffix?: string;
    decimalPlaces?: number;
    operators?: any[];
    constructor(init?: NumberRangeControlSchema);
}
export declare class DateTimeControlSchema extends FormControlBase {
    appendTo?: string;
    panelClass?: string;
    placeholder?: string;
    showButtonBar?: boolean;
    showTime?: boolean;
    showIcon?: boolean;
    format?: 'normal' | 'fromNow';
    showOnFocus?: boolean;
    minDate?: Date;
    maxDate?: Date;
    timeOnly?: boolean;
    dateFormat?: string;
    view?: 'date' | 'month';
    yearRange?: string;
    constructor(init?: DateTimeControlSchema);
}
export declare class DateTimeRangeControlSchema extends DateTimeControlSchema {
    showIcon?: boolean;
    constructor(init?: DateTimeControlSchema);
}
export declare class EntityPickerControlSchema extends FormControlBaseWithService {
    baseService?: BaseService;
    returnType?: 'value' | 'object';
    multiple?: boolean;
    limit?: number;
    title?: string;
    columns?: EntityPickerColumn[];
    fieldSearchText?: string[];
    operatorFieldSearchText?: Operator.contain | Operator.equal;
    dataInit?: any;
    advanceSearchModel?: any;
    onSearchFormInitialized?: Function;
    onFormEvent?: Function;
    onSelectEntity?: Function;
    afterContentLeftInit?: (crudList: CrudListComponent) => void;
    afterContentRightInit?: (crudList: CrudListComponent) => void;
    afterGetData?: (sources: any[], element: EntityPickerComponent) => void;
    afterGetDataUnPicked?: (sources: any[], element: EntityPickerDataComponent | EntityPickerTreeDataComponent) => void;
    afterGetDataPicked?: (sources: any[], element: EntityPickerSelectedComponent | EntityPickerTreeSelectedComponent) => void;
    useDefaultPluslUrlInList?: boolean;
    useDefaultFilterInList?: boolean;
    hiddenAdvanceSearch?: boolean;
    readOnly?: boolean;
    ignoreWorkflow?: boolean;
    constructor(init?: EntityPickerControlSchema);
}
export declare class AutoCompletePickerControlSchema extends EntityPickerControlSchema {
    splitchar?: string;
    placeholder?: string;
    dataType?: EnumControlPickerType;
    appendTo?: string;
    modifyInitSearchData?: Function;
    callBack?: {
        [key: string]: Function;
    };
    onReady?: (evt: EventData) => void;
    onAdjustedValue?: Function;
    modifyControl?: Function;
    needClone?: boolean;
    isCheckWriteValue?: boolean;
    usePicker?: boolean;
    isCaching?: boolean;
    afterGetDataDropdown?: (sources: any[], element: AutoCompletePickerComponent) => void;
    constructor(init?: AutoCompletePickerControlSchema);
}
export declare class WrapPickerControlSchema extends AutoCompletePickerControlSchema {
    dataType?: EnumControlPickerType;
    constructor(init?: WrapPickerControlSchema);
}
export declare class CustomControlSchema extends FormControlBase {
    template?: TemplateRef<any>;
    placeholder?: string;
    operators?: any[];
    constructor(init?: CustomControlSchema);
}
export declare class ColorPickerControlSchema extends FormControlBase {
    enableCaching?: boolean;
    constructor(init?: ColorPickerControlSchema);
}
export declare class SpanControlSchema extends FormControlBase {
    sourceField?: string;
    ishtml?: boolean;
    editable?: boolean;
    constructor(init?: SpanControlSchema);
}
export declare class ColorControlSchema extends FormControlBase {
    sourceField?: string;
    constructor(init?: ColorControlSchema);
}
export declare class KeyValueControlSchema extends FormControlBase {
    constructor(init?: KeyValueControlSchema);
}
export declare class ImageUploaderControlSchema extends FormControlBase {
    isAvatar?: boolean;
    multiple?: boolean;
    loadByEntityKey?: boolean;
    entityKey?: string;
    templateItem?: TemplateRef<any>;
    templateItems?: TemplateRef<any>;
    constructor(init?: ImageUploaderControlSchema);
}
export declare class FileManagerControlSchema extends FormControlBase {
    onSelected?: Function;
    mdWidth?: number;
    /**
     * Định dạng file control sẽ nhận, dạng chuỗi cách nhau bởi dấu ','
     * sẽ override acceptFileTypes.
     * VD: '.doc,.docx,.pdf'
     */
    accept?: string;
    /**
     * Flag de biet file upload nhan nhung loai file nao.
     * VD: FileTypeFlag.AUDIO | FileTypeFlag.VIDEO
     */
    acceptFileTypes?: FileTypeFlag;
    maxFileSize?: number;
    invalidFileSizeMessageSummary?: string;
    invalidFileSizeMessageDetail?: string;
    invalidFileTypeMessageSummary?: string;
    invalidFileTypeMessageDetail?: string;
    invalidFileLimitMessageSummary?: string;
    invalidFileLimitMessageDetail?: string;
    mode?: FileManagerMode | FileUploadMode;
    layout?: EnumFileLayout;
    readonly?: boolean;
    hiddenPageSetting?: boolean;
    fileDataService?: FileDataService;
    serviceCode?: string;
    entity?: string;
    entityKey?: string;
    entityKeyField?: string;
    rootFolderId?: string;
    rootFolderName?: string;
    dataKySoDonVi?: Function;
    inTaiLieu?: boolean;
    inTaiLieuChung?: boolean;
    copyToFolderId?: string;
    multiple?: boolean;
    uploadOnly?: boolean;
    useBreadcrumbs?: boolean;
    useSignature?: boolean;
    multiEntityKey?: boolean;
    filePickerSetting?: FilePickerSetting;
    showDelete?: boolean;
    isPublic?: boolean;
    constructor(init?: FileManagerControlSchema);
}
export declare class FileUploadControlSchema extends FileManagerControlSchema {
    mode?: FileUploadMode;
    mdWidth?: number;
    sharedFolderType?: SharedFolderType;
    hiddenButtons?: boolean;
    disabled?: boolean;
    readonly?: boolean;
    autoSaved?: boolean;
    enableScan?: boolean;
    extractZipFile?: boolean;
    enableDriveFile?: boolean;
    showDownloadFile?: boolean;
    showDeleteFile?: boolean;
    showPrintFile?: boolean;
    maxFileSize?: number;
    invalidFileSizeMessageSummary?: string;
    invalidFileSizeMessageDetail?: string;
    invalidFileTypeMessageSummary?: string;
    invalidFileTypeMessageDetail?: string;
    invalidFileLimitMessageSummary?: string;
    invalidFileLimitMessageDetail?: string;
    onRemove?: Function;
    constructor(init?: FileUploadControlSchema);
}
export declare class SwitchControlSchema extends FormControlBase {
    constructor(init?: SwitchControlSchema);
}
export declare class CheckboxControlSchema extends FormControlBase {
    enableCaching?: boolean;
    hiddenLabel?: boolean;
    defaultValue?: boolean;
    displayLabel?: string;
    isCustomLabel?: boolean;
    constructor(init?: CheckboxControlSchema);
}
export declare class ButtonControlSchema extends FormSchemaBase {
    showLabel?: boolean;
    btClass?: string;
    icon?: any;
    btStyle?: {
        width: string;
    };
    onClick?: Function;
    buttonText?: string;
    constructor(init?: ButtonControlSchema);
}
export declare class TemplateControlSchema extends FormSchemaBase {
    template: any;
    constructor(init?: TemplateControlSchema);
}
export declare class TextAreaControlSchema extends FormControlBase {
    rows?: number;
    constructor(init?: TextAreaControlSchema);
}
export declare class UserPickerControlSchema extends FormControlBase {
    appendTo?: string;
    multiple?: boolean;
    userType?: UserType;
    limit?: number;
    title?: string;
    defaultFilters?: Filter[] | Function | Promise<Filter[]>;
    filterWhileProcess?: Filter[] | Function | Promise<Filter[]>;
    enableCaching?: boolean;
    parentOrgCode?: string;
    placeholder?: string;
    lazyLoadOrganization?: boolean;
    valueField?: string;
    displayField?: string;
    fieldPlus?: string;
    plusUrl?: string;
    returnType?: 'value' | 'object';
    pageSize?: number;
    getDisplayName?: false;
    fieldSearchText?: string[];
    operatorFieldSearchText?: Operator.contain | Operator.equal;
    columns?: EntityPickerColumn[];
    usePicker?: boolean;
    hiddenCols?: string[];
    onReady?: (evt: EventData) => void;
    funcGetLabel?: (item: any) => string;
    funcCompare?: (item: any, value: any) => boolean;
    afterContentLeftInit?: (crudList: CrudListComponent) => void;
    afterContentRightInit?: (crudList: CrudListComponent) => void;
    afterGetData?: (sources: any[], element: EntityPickerComponent) => void;
    afterGetDataUnPicked?: (sources: any[], element: EntityPickerDataComponent | EntityPickerTreeDataComponent) => void;
    afterGetDataPicked?: (sources: any[], element: EntityPickerSelectedComponent | EntityPickerTreeSelectedComponent) => void;
    constructor(init?: UserPickerControlSchema);
}
export declare class CoCauToChucPickerControlSchema extends FormControlBase {
    appendTo?: string;
    multiple?: boolean;
    limit?: number;
    title?: string;
    placeholder?: string;
    defaultFilters?: Filter[] | Function | Promise<Filter[]>;
    enableCaching?: boolean;
    valueField?: string;
    displayField?: string;
    fieldPlus?: string;
    plusUrl?: string;
    isTree?: boolean;
    onReady?: (evt: EventData) => void;
    funcGetLabel?: (item: any) => string;
    funcCompare?: (item: any, value: any) => boolean;
    constructor(init?: CoCauToChucPickerControlSchema);
}
export declare class CoCauToChucPickerControlSchemaNew extends CoCauToChucPickerControlSchema {
    isTree?: boolean;
    constructor(init?: CoCauToChucPickerControlSchemaNew);
}
export declare class OrganizationPickerControlSchema extends FormControlBase {
    filter?: boolean;
    multiple?: boolean;
    parentOrgId?: number;
    parentOrgCode?: string;
    enableCaching?: boolean;
    isUsingId?: boolean;
    constructor(init?: OrganizationPickerControlSchema);
}
export declare class CoCauToChucControlSchema extends FormControlBase {
    filter?: boolean;
    multiple?: boolean;
    parentOrgId?: number;
    parentOrgCode?: string;
    enableCaching?: boolean;
    isUsingId?: boolean;
    disabledParentItem?: boolean;
    rootParentId?: string;
    disabled?: boolean;
    constructor(init?: CoCauToChucControlSchema);
}
export declare class EditorControlSchema extends FormControlBase {
    mode?: 'basic' | 'medium' | 'full' | 'simple';
    height?: number;
    init?: any;
    languageCode?: 'vi' | 'en';
    placeholder?: string;
    constructor(init?: EditorControlSchema);
}
export declare class DataSourceControlSchema extends FormControlBaseWithService {
    valueField?: string;
    displayField?: string;
    returnType?: 'value' | 'object';
    dataSource?: any | Function;
    operators?: any[];
    constructor(init?: DataSourceControlSchema);
}
export declare class DropdownControlSchema extends DataSourceControlSchema {
    appendTo?: string;
    panelClass?: string;
    placeholder?: string;
    selectedItemsLabel?: string;
    selectedAllItemLabel?: string;
    filterPlaceholder?: string;
    showClear?: boolean;
    filter?: boolean;
    multiple?: boolean;
    generateTooltip?: (item: any) => string;
    maxSelectedLabels?: number;
    maxItemDisplay?: number;
    virtualScroll?: boolean;
    fitPanel?: boolean;
    enableCaching?: boolean;
    needClone?: boolean;
    templateItem?: TemplateRef<any>;
    templateSelectedItem?: TemplateRef<any>;
    quickAdd?: boolean;
    cols?: FormSchemaBase[];
    quickAddTemplate?: TemplateRef<any>;
    initData?: KeyValueType | Function;
    defaultIndex?: number;
    popupSize?: PopupSize;
    loadInFirstDisplay?: boolean;
    autoGetData?: boolean;
    valueField?: string;
    displayField?: string;
    autoDisplayFirst?: boolean;
    notInCrudForm?: boolean;
    searchMultiple?: boolean;
    disableDisplayFieldServerSearch?: boolean;
    loadOnInit?: boolean;
    allowLoadDataWhenParentNull?: boolean;
    disabledParentItem?: boolean;
    onAdjustedValue?: Function;
    constructor(init?: DropdownControlSchema);
}
export declare class AddressControlSchema extends FormControlBase {
    hideNo?: boolean;
    hideStreet?: boolean;
    hideWard?: boolean;
    hideDistrict?: boolean;
    requiredNo?: boolean;
    requiredStreet?: boolean;
    requiredWard?: boolean;
    requiredDistrict?: boolean;
    requiredProvince?: boolean;
    wardToProvince?: boolean;
    noWidth?: number;
    streetWidth?: number;
    wardWidth?: number;
    districtWidth?: number;
    provinceWidth?: number;
    showInBox?: boolean;
    hideHolder?: boolean;
    baseService?: BaseService;
    caching?: boolean;
    constructor(init?: AddressControlSchema);
}
export declare class VanBanPickerControlSchema extends FormControlBase {
    mdWidth?: number;
    useVbDen?: boolean;
    useVbDi?: boolean;
    readOnly?: boolean;
    readonly?: boolean;
    loaiVanBan?: EnumLoaiVanBanBase;
    constructor(init?: VanBanPickerControlSchema);
}
export declare class CongViecPickerControlSchema extends FormControlBase {
    mdWidth?: number;
    serviceCode?: string;
    entity?: string;
    entityKey?: string;
    state?: any;
    constructor(init?: CongViecPickerControlSchema);
}
export declare class PercentControlSchema extends FormControlBase {
    mdWidth?: number;
    constructor(init?: PercentControlSchema);
}
export declare class ChipsControlSchema extends FormControlBase {
    constructor(init?: ChipsControlSchema);
}
export declare class AutoCompleteControlSchema extends DataSourceControlSchema {
    placeholder?: string;
    multiple?: boolean;
    minLengthFilter?: number;
    appendTo?: string;
    constructor(init?: AutoCompleteControlSchema);
}
export declare class RadioButtonListControlSchema extends DataSourceControlSchema {
    valueField?: string;
    displayField?: string;
    enableCaching?: boolean;
    layout?: 'vertical' | 'horizontal';
    align?: 'left' | 'center' | 'right';
    onAdjustedValue?: Function;
    constructor(init?: RadioButtonListControlSchema);
}
export declare class CheckBoxListControlSchema extends DataSourceControlSchema {
    enableCaching?: boolean;
    layout?: 'vertical' | 'horizontal';
    align?: 'left' | 'center' | 'right';
    classPlus?: string;
    freeText?: string;
    pColClass?: number;
    constructor(init?: CheckBoxListControlSchema);
}
export declare class TableSchema extends FormControlBase {
    rowTemplate: FormSchemaBase[];
    autoGenerateId?: boolean;
    rowButtons?: (rowData: any) => MenuItem[];
    footerButtons?: {
        icon?: string;
        label?: string;
        class?: string;
        message: string;
    }[];
    showNumber?: boolean;
    showFunction?: boolean;
    showFooter?: boolean;
    showSave?: boolean;
    showEdit?: boolean;
    showDelete?: boolean;
    showAdd?: boolean;
    showDialog?: boolean;
    popupSize?: PopupSize;
    enableReorderRow?: boolean;
    enableAddMulti?: boolean;
    pickerControlField?: string;
    isUnique?: boolean;
    enablePaging?: boolean;
    limit?: number;
    initRowCount?: number;
    mdWidth?: number;
    widthFunctionColumn?: string;
    rowButtonTemplate?: TemplateRef<any>;
    summaryTemplate?: TemplateRef<any>;
    headerTemplate?: TemplateRef<any>;
    onReordered?: Function;
    onTableFinishInit?: Function;
    onAdding?: Function;
    onAdded?: Function;
    onSave?: Function;
    onMessage?: Function;
    onDeleting?: Function;
    onDeleted?: Function;
    onRowClick?: Function;
    constructor(init?: TableSchema);
    disableControl?(): void;
    private disableChildrenControl?;
}
export declare class ColumnSchemaBase extends FormSchemaBaseWithService {
    isArrayField?: boolean;
    width?: string;
    showEditLink?: boolean;
    showToggleIcon?: boolean;
    colSpan?: number;
    group?: boolean;
    visible?: boolean;
    removeOnInit?: boolean;
    allowFilter?: boolean;
    textAlign?: TextAlign;
    cellClass?: string;
    fullTextSearch?: boolean;
    isInTable?: boolean;
    rawColumn?: ColumnSchemaBase;
    separator?: string;
    maxItemDisplay?: number;
    pageSize?: number;
    fileSetting?: FileUploadSetting | FileManagerSetting;
    dataTypeRefField?: DataType | string;
    forceGetData?: boolean;
    displayFieldInGrid?: string;
    funcGetRefDataRow?: (refItems: any) => {};
    funcSetValueRow?: (rowItem: any, data: any) => void;
    funcSetValueRowWhenNullOrEmpty?: (rowItem: any) => void;
    funcGetValueOfField?: Function;
    rowSpan?: number;
    format?: string;
    dataType?: DataType | string;
    controlType?: ControlType;
    templateFilter?: TemplateRef<any>;
    disableCheckBox?: boolean;
    order?: number;
    maxWordDisplay?: number;
    maxLengthDisplay?: number;
    mdWidthInSearch?: number;
    min?: number;
    max?: number;
    isForeignField?: boolean;
    isOverrideFilter?: boolean;
    showClear?: boolean;
    multiple?: boolean;
    single?: boolean;
    pipe?: PipeTransform;
    asyncPipe?: boolean;
    sort?: boolean;
    extendData?: any;
    left?: Number;
    /**
     * Is this column ref a ref column generated by base
     * @date 11/4/2022 - 2:05:55 PM
     *
     * @type {?boolean}
     */
    isRefField?: boolean;
    /**
     * should include this col in the gridInfo.fields
     * @date 11/4/2022 - 2:06:16 PM
     *
     * @type {?boolean}
     */
    includeSelect?: boolean;
    isPinned?: boolean;
    hasOperatorCanBo?: boolean;
    minimizeFilter?: boolean;
    bindingFilters?: Filter[];
    forceLoading?: boolean;
    autoDisplayFirst?: boolean;
    notInCrudForm?: boolean;
    showSetting?: boolean;
    click?: Function;
    placeholder?: string;
    constructor(init?: ColumnSchemaBase);
}
export declare class DropdownOptions {
    displayField?: string;
    valueField?: string;
    fieldTree?: string;
    selectChildItem?: boolean;
    selectDescendant?: boolean;
    fieldParentTreeItem?: string;
    sorts?: Sort[];
    sortField?: string;
    sortDir?: 1 | -1;
    fieldPlus?: string;
    plusUrl?: string;
    callbackDataFinish?: (evt: EventData) => void;
    page?: number;
    pageSize?: number;
    isServerLoad?: boolean;
    refFields?: RefField[];
    isTreeBaseModel?: boolean;
    funcGetLabel?: (item: any) => string;
    funcCompare?: (item: any, value: any) => boolean;
    constructor(init?: DropdownOptions);
}
export declare class RefField {
    field?: string;
    multiple?: boolean;
    separator?: string;
    baseService?: BaseService | MasterDataService;
    isChildObject?: boolean;
    displayField?: string;
    displayFieldInGrid?: string;
    valueField?: string;
    fieldPlus?: string;
    groupCode?: string;
    dataSource?: any[];
    order?: number;
    isForeignField?: boolean;
    isTree?: boolean;
    fieldTree?: string;
    valueParentRoot?: any;
    fieldParentTreeItem?: string;
    sorts?: Sort[];
    sortField?: string;
    sortDir?: 1 | -1;
    plusUrl?: string;
    funcGetValueOfField?: Function;
    funcSetValueRow?: (rowItem: any, data: any) => void;
    funcSetValueRowWhenNullOrEmpty?: (rowItem: any) => void;
    funcGetRefDataRow?: (refItems: any) => {};
    callbackDataFinish?: (evt: EventData) => void;
    funcGetLabel?: (item: any) => string;
    funcCompare?: (item: any, value: any) => boolean;
    constructor(init?: RefField);
}
export declare class EntityPickerColumn extends ColumnSchemaBase {
    label?: string;
    code?: string;
    disabled?: boolean;
    isSearchable?: boolean;
    isDisplay?: boolean;
    dataType?: DataType | string;
    operator?: Operator;
    width?: string;
    notInFields?: boolean;
    template?: TemplateRef<any>;
    constructor(init?: EntityPickerColumn);
}
export declare class CrudListConfig {
    tooltipView?: string;
    onView?: Function;
    disableRowSelectWhenClickAction?: boolean;
    constructor(init?: CrudListConfig);
}
export declare class TreeDataOption {
    displayField: string;
    shortDisplayField: string;
    expandedIcon: string;
    collapsedIcon: string;
    constructor(init?: TreeDataOption);
}
export declare class DialogModel {
    showEditForm?: boolean;
    header?: string;
    popupSize?: PopupSize;
    data?: any;
    constructor(init?: DialogModel);
}
export declare class PopupSize {
    width?: number;
    height?: number;
    maximize?: boolean;
    constructor(init?: PopupSize);
}
export declare class EventData {
    currentNode: ControlTreeNode;
    sourceNode?: ControlTreeNode;
    sourceEvent?: any;
    eventType?: any;
    data?: any;
    private _crudForm;
    constructor(init?: {
        currentNode: ControlTreeNode;
        sourceNode?: ControlTreeNode;
        sourceEvent?: any;
        eventType?: any;
        data?: any;
        crudForm?: CrudFormComponent;
    });
    get value(): any;
    get model(): any;
    get parentModel(): any;
    get parentPath(): any;
    get rootModel(): any;
    get control(): FormSchemaBase;
    get parentControl(): FormSchemaBase;
    get formControls(): FormSchemaBase[];
}
export declare class TabViewData {
    code?: string;
    hidden?: boolean;
    alwayRender?: boolean;
    icon?: string;
    label?: string;
    headerStyleClass?: string;
    active?: boolean;
    doNotReload?: boolean;
    useScrollbar?: boolean;
    constructor(init?: TabViewData);
}
export declare class FieldRowSpan {
    field: string;
    funcGetValue?: (item: any) => any;
    constructor(init?: FieldRowSpan);
}
export declare enum DataType {
    date = "date",
    datetime = "datetime",
    html = "html",
    string = "string",
    int = "int",
    intWithoutMask = "intWithoutMask",
    currency = "currency",
    decimal = "decimal",
    boolean = "boolean",
    enum = "enum",
    fileUpload = "fileUpload",
    fileManager = "fileManager"
}
export declare enum ControlType {
    dropdown = "dropdown",
    datetime = "datetime",
    date = "date",
    time = "time",
    number = "number",
    textbox = "textbox",
    checkbox = "checkbox",
    switch = "switch"
}
export declare enum Operator {
    equal = "eq",
    notEqual = "neq",
    greater = "gt",
    greaterThanEqual = "gte",
    lower = "lt",
    lowerThanEqual = "lte",
    relationalData = "relationaldata",
    contain = "contains",
    notContain = "ncontains",
    startWith = "startswith",
    notStartWith = "nstartswith",
    endWith = "endswith",
    notEndWith = "nendswith",
    in = "in",
    notIn = "nin",
    isNull = "isnull",
    isNotNull = "isnotnull",
    inRole = "hasRole",
    notInRole = "notHasRole",
    inCategory = "inCategory",
    notInCategory = "notInCategory",
    inPosition = "inPosition",
    notInPosition = "notInPosition",
    inListUser = "inListUser",
    notInListUser = "notInListUser",
    inListGroup = "inListGroup",
    notInListGroup = "notInListGroup",
    isCurrentUser = "isCurrentUser",
    isCurrentCanBo = "isCurrentCanBo"
}
export declare enum HeightType {
    default = 0,
    dynamic = -1,
    custom = 1
}
export declare enum FileManagerMode {
    single = "single",
    multiple = "multiple"
}
export declare enum FileUploadMode {
    usingFileInstanceId = "usingFileInstanceId",
    usingServiceFile = "usingServiceFile"
}
export declare enum EnumFileLayout {
    SIMPLE = "SIMPLE",
    SIMPLE_FOR_LIST = "SIMPLE_FOR_LIST",
    LIST = "LIST",
    INLINE = "INLINE"
}
export declare enum TextAlign {
    Left = 0,
    Center = 1,
    Right = -1
}
export declare enum ExportItemsMode {
    FromHtml = 0,
    ManualGetData = 1,
    AutoGetData = 2
}
export declare enum ExportAllMode {
    ManualGetData = 0,
    AutoGetData = 1
}
export declare enum UserType {
    CanBo = 0,
    Normal = 1
}
export declare enum EventType {
    CHANGE = "change",
    ADJUST_VALUE = "adjustValue",
    MODEL_CHANGED = "modelChanged",
    FORM_READY = "formReady",
    ENTER = "enter",
    HIDE = "hide",
    ROW_REORDER = "rowReorder",
    BLUR = "blur",
    READY = "READY",
    DATASOURCE_LOADED = "dataSourceLoaded",
    CLICK = "click",
    AUTO_CORRECT = "autoCorrect",
    VALIDATE = "validate",
    INIT = "init",
    ADDING = "adding",
    ADDED = "added",
    DELETING = "deleting",
    DELETED = "deleted",
    SELECT = "select",
    TABLE_CHANGED = "tableChanged",
    SAVE = "save",
    MESSAGE = "message",
    ROW_FINISH_INIT = "rowFinishInit",
    TABLE_FINISH_INIT = "tableFinishInit",
    UPLOADED = "uploaded"
}
//# sourceMappingURL=form-schema.d.ts.map