import { autouml } from "../typings/typings";
/**
 *
 */
export declare class VisitingMapNotDefinedError extends Error {
    constructor();
}
declare abstract class Visitor {
    map: autouml.mapping.IScope | null;
    relations: autouml.mapping.IConnector[];
    constructor(map?: autouml.mapping.IScope | null, relations?: autouml.mapping.IConnector[]);
    visit(map?: autouml.mapping.IScope | null, relations?: autouml.mapping.IConnector[]): string;
    private _visit;
    protected abstract visitProgram(scope: autouml.mapping.IScope, childData: string[][]): string[];
    protected abstract visitFile(scope: autouml.mapping.IScope, childData: string[][]): string[];
    protected abstract visitNamespace(scope: autouml.mapping.IScope, childData: string[][]): string[];
    protected abstract visitClass(scope: autouml.mapping.IClassScope, childData: string[][], fieldData: string[][], methodData: string[][]): string[];
    protected abstract visitInterface(scope: autouml.mapping.IInterfaceScope, childData: string[][], interfaceData: string[][]): string[];
    protected abstract visitEnum(scope: autouml.mapping.IEnumScope, childData: string[][], enumData: string[][]): string[];
    protected abstract visitEnumField(f: string): string[];
    protected abstract visitInterfaceField(f: autouml.mapping.IParam): string[];
    protected abstract visitClassField(f: autouml.mapping.IClassField): string[];
    protected abstract visitClassMethod(m: autouml.mapping.IClassMethods): string[];
    protected abstract compileRelations(): string;
}
export { Visitor };
