import { PiElement } from "../language/PiModel";
export declare type PropertyType = "primitive" | "part" | "reference";
export declare type Property = {
    name: string;
    type: string;
    isList: boolean;
    isPublic: boolean;
    propertyType: PropertyType;
};
export declare type Concept = {
    isUnit: boolean;
    isModel: boolean;
    isAbstract: boolean;
    isPublic: boolean;
    typeName: string;
    baseName: string;
    subConceptNames: string[];
    properties: Map<string, Property>;
    constructor: () => PiElement;
};
export declare type Interface = {
    isPublic: boolean;
    typeName: string;
    subConceptNames: string[];
    properties: Map<string, Property>;
};
export declare class Language {
    private static theInstance;
    private concepts;
    private interfaces;
    private constructor();
    static getInstance(): Language;
    concept(typeName: any): Concept;
    interface(typeName: any): Interface;
    conceptProperty(typeName: any, propertyName: any): Property;
    interfaceProperty(typeName: any, propertyName: any): Property;
    allConceptProperties(typeName: string): IterableIterator<Property>;
    createConcept(typeName: string): PiElement;
    addConcept(concept: Concept): void;
    addInterface(intface: Interface): void;
    subConcepts(typeName: string): string[];
    referenceCreator: (name: string, type: string) => any;
    addReferenceCreator(creator: (name: string, type: string) => any): void;
}
//# sourceMappingURL=Language.d.ts.map