import { AxiosInstance } from "axios";
import { EnumValidateState } from "../../enums";
import { ElementFactory } from "../../Page/ElementsOfFormFactory/ElementFactory";
import { StructureCoding } from "../../StructureCoding";
import { IMainStateFactory } from "../../Types";
import { TREECODE } from "amisa-paths";
import { SettingInfo } from "../../AmisaAuth/Models/SettingInfo";
export type IResultOfValidate = true | [string, EnumValidateState];
export type IStructuralCodeState = 'clear' | 'ok' | 'dirty' | 'withoutParent' | 'newCode';
export type IStructuralTypeInitilaValue = {
    name: string;
    fullName: IFullName[];
    childCount: number;
    id?: number;
    codeValueState: IStructuralCodeState;
    code: string;
    text: string;
};
export type IStructuralTypeOfCode = 'hesab' | 'markaz1' | 'markaz2' | 'markaz3' | 'kala';
export type IStructuralCodeUseCaseType = 'MainPageCode' | 'Filter' | 'SelectCode';
export interface IFullName {
    id: number;
    code: string;
    name: string;
}
export declare class StructrulCodeFactory extends ElementFactory {
    #private;
    useCaseType: IStructuralCodeUseCaseType;
    required: boolean;
    onlyLastLevel: boolean;
    caption: string;
    typeOfCode: IStructuralTypeOfCode;
    showHasChangeFlag: boolean;
    tabIndex?: number | undefined;
    onChange?: ((dateBoxFactory: StructrulCodeFactory) => void) | undefined;
    forceUpdate: () => void;
    urls: TREECODE;
    apiAxios: AxiosInstance;
    get any(): any;
    focusToElement: () => void;
    showTreeView?: () => void;
    showListView?: (value?: string) => void;
    private refreshAllfromOfMainCode;
    private setValidationState;
    codeWaitForLoad: null | string;
    private timerForLoad;
    private clearTimerForLoad;
    getNewCode: () => void;
    private setCachedData;
    private getNewCodeData;
    getCodeData: () => void;
    private getCodeDataAxios;
    clearData: () => void;
    id: number | null;
    fullName: IFullName[];
    name: string;
    codeValueState: IStructuralCodeState;
    childCount: number;
    validate: () => IResultOfValidate;
    get text(): string;
    setText(text: string): void;
    get value(): string | null;
    get code(): string;
    setValue(code: string): void;
    deseriallize: (e?: string | null) => void;
    private _defaultValue;
    restartDefaultValue: () => void;
    refreshHasChange: () => void;
    settingInfo: SettingInfo;
    coding: StructureCoding;
    placeholder: string;
    maxLength: number;
    constructor(_mainStateFactory: IMainStateFactory, _fieldName: string, _dispose: () => void, useCaseType: IStructuralCodeUseCaseType, required: boolean, onlyLastLevel: boolean, caption: string, typeOfCode: IStructuralTypeOfCode, showHasChangeFlag: boolean, tabIndex?: number | undefined, initialValue?: IStructuralTypeInitilaValue, payLoadKey?: string, responseKey?: string, history?: {
        key: string;
        axios: (controllerPath: string) => AxiosInstance;
        controllerPath: string;
        actionPath?: string;
    }, onChange?: ((dateBoxFactory: StructrulCodeFactory) => void) | undefined);
    forceUpdateSpinner: () => void;
    private getMaxLength;
    onChangeHandlerElement: (element: HTMLInputElement) => void;
    onChangeHandlerCode: (code: string, cursorPosition?: number) => void;
    private getPlaceholder;
}
