/// <reference types="react" />
import { AxiosInstance } from "axios";
import { MainStateManager } from "../../MainStateManager";
import { ElementsOfFormFactory } from "../../Page/ElementsOfFormFactory";
import { IMainStateFactory } from "../../Types";
import { ISpecifierCheckTreeView, IStructrulCodeTreeViewJson, StructrulCodeTreeViewCode } from "./StructrulCodeTreeViewCode";
import { TREECODE } from "amisa-paths";
import { StructureCoding } from "../../StructureCoding";
export interface IStructuralCodeFactoryForTreeView {
    urls: TREECODE;
    apiAxios: AxiosInstance;
    onlyLastLevel: boolean;
    required: boolean;
    coding: StructureCoding;
    code: string;
    focusToElement: () => void;
    onChangeHandlerCode: (code: string) => void;
    getCodeData: () => void;
}
export declare class StructrulCodeTreeView {
    mainStateFactory: IMainStateFactory;
    selfStructuralCode: IStructuralCodeFactoryForTreeView;
    onlyLastLevel: boolean;
    closeModal: () => void;
    forceUpdate: () => void;
    mainStateManager: MainStateManager;
    elementsOfForm: ElementsOfFormFactory;
    get any(): any;
    refForm?: React.RefObject<HTMLFormElement>;
    constructor(mainStateFactory: IMainStateFactory, selfStructuralCode: IStructuralCodeFactoryForTreeView, onlyLastLevel: boolean, closeModal: () => void);
    code: string;
    private _nodes;
    private _flatten?;
    checkStates?: ISpecifierCheckTreeView[];
    waitForLoad: boolean;
    currentNodeWaitForLoading: boolean;
    waitForEndLoading: () => Promise<void>;
    endingWaitForEndLoading: () => void;
    selectedRow: StructrulCodeTreeViewCode | null;
    get nodes(): StructrulCodeTreeViewCode[];
    get flatten(): StructrulCodeTreeViewCode[];
    private getFlatten;
    loadData: () => void;
    loadTreeView: () => void;
    selectPreviousNode(): void;
    selectNextNode(): void;
    nodeCheckChange: (node: IStructrulCodeTreeViewJson) => void;
    private removeCheckToNode;
    private removeCheckToParent;
    private removeCheckToChild;
    private addCheckToNode;
    private addCheckType4ToParent;
    private addCheckType4ToChild;
    private _setUnCheckNodeCheckType;
    private _setParentCheckNodeCheckType;
    private _setDoubleCheckNodeCheckType;
    private _setSingleCheckNodeCheckType;
    selectFirstNode(): void;
    selectLastNode(): void;
    expandCurrentNode: () => void;
    expandThisNode: (node: StructrulCodeTreeViewCode) => void;
    getTreeViewChildren: (node: StructrulCodeTreeViewCode) => void;
    get canCloseItsModal(): boolean;
    collapseCurrentNode: () => void;
    collapseThisNode: (node: IStructrulCodeTreeViewJson) => void;
    toggleThisNode: (node: StructrulCodeTreeViewCode) => void;
    private _updateFlatten;
    currentNode: () => StructrulCodeTreeViewCode | undefined;
    selectThisNodeFirstChild(node: StructrulCodeTreeViewCode): void;
    selectThisNode: (node: StructrulCodeTreeViewCode) => void;
    private _expandParent;
    deserializeRow: (json: IStructrulCodeTreeViewJson) => StructrulCodeTreeViewCode;
    acceptCurrentRow: () => void;
    cancelForm: () => void;
}
