import { EnumValidateState } from "./enums";
import { IStructuralCodeLevel } from "./Types";
export type IResultOfValidate = true | [string, EnumValidateState];
export type IStructuralCodeState = 'clear' | 'ok' | 'dirty' | 'withoutParent' | 'newCode';
export interface IStructuralCodeChangeEvent {
    code: string | null;
    state: IStructuralCodeState;
    level: IStructuralCodeLevel;
}
export interface IStructureCoding {
    coding: string;
    maxLevel: number;
    maxCodingLen: number;
    levelLen1: number;
    levelLen2: number;
    levelLen3: number;
    levelLen4: number;
    levelLen5: number;
    levelLen6: number;
    levelLen7: number;
    levelLen8: number;
    levelLen9: number;
    untilLevelLen1: number;
    untilLevelLen2: number;
    untilLevelLen3: number;
    untilLevelLen4: number;
    untilLevelLen5: number;
    untilLevelLen6: number;
    untilLevelLen7: number;
    untilLevelLen8: number;
    untilLevelLen9: number;
}
export declare class StructureCoding {
    coding: string;
    maxLevel: number;
    maxCodingLen: number;
    levelLen1: number;
    levelLen2: number;
    levelLen3: number;
    levelLen4: number;
    levelLen5: number;
    levelLen6: number;
    levelLen7: number;
    levelLen8: number;
    levelLen9: number;
    untilLevelLen1: number;
    untilLevelLen2: number;
    untilLevelLen3: number;
    untilLevelLen4: number;
    untilLevelLen5: number;
    untilLevelLen6: number;
    untilLevelLen7: number;
    untilLevelLen8: number;
    untilLevelLen9: number;
    normalWidth: number;
    editedWidth: number;
    constructor(coding: string, maxLevel: number, maxCodingLen: number, levelLen1: number, levelLen2: number, levelLen3: number, levelLen4: number, levelLen5: number, levelLen6: number, levelLen7: number, levelLen8: number, levelLen9: number, untilLevelLen1: number, untilLevelLen2: number, untilLevelLen3: number, untilLevelLen4: number, untilLevelLen5: number, untilLevelLen6: number, untilLevelLen7: number, untilLevelLen8: number, untilLevelLen9: number);
    lengthOfLevel: (level: IStructuralCodeLevel) => number;
    stateOfLevel: (value: string, level: IStructuralCodeLevel) => IStructuralCodeState;
    stateAndLevelOfCode: (value: string) => [IStructuralCodeState, IStructuralCodeLevel];
    changeEventOfCode: (value: string) => IStructuralCodeChangeEvent;
    static buildNew(coding: IStructureCoding): StructureCoding;
}
export declare class StructureCodingFactory {
    static deserialize(json: IStructureCoding): StructureCoding;
    static empty(): StructureCoding;
    static createCopy(old: StructureCoding): StructureCoding;
}
