import { EClass } from './eclass';
import { EClassifier } from './eclassifier';
import { EFactory } from './efactory';
import { EList } from './elist';
import { EEnum } from './eenum';
import { EAttribute } from './eattribute';
import { EReference } from './ereference';
import { EDataType } from './edata-type';
import { EOperation } from './eoperation';
import { ENamedElementImpl } from './enamed-element-impl';
export declare class EPackage extends ENamedElementImpl {
    static EPACKAGE: EClass;
    static ECORE: EPackage;
    /**
     * A map from {@link EPackage#getNsURI() namespace URI} to {@link EPackage}.
     *
     * NOTE: This is a significant simplication of the EPackage.Registry in EMF, in
     * that it consolidates several classes into one.
     */
    static Registry: {
        new (entries?: readonly (readonly [string, EPackage])[] | null | undefined): {
            register(pkg: EPackage): void;
            /**
             * Looks up the value in the map.
             */
            getEPackage(nsURI: string): EPackage;
            /**
             * Looks up the value in the map.
             */
            getEFactory(nsURI: string): EFactory;
            clear(): void;
            delete(key: string): boolean;
            forEach(callbackfn: (value: EPackage, key: string, map: Map<string, EPackage>) => void, thisArg?: any): void;
            get(key: string): EPackage | undefined;
            has(key: string): boolean;
            set(key: string, value: EPackage): /*elided*/ any;
            readonly size: number;
            entries(): MapIterator<[string, EPackage]>;
            keys(): MapIterator<string>;
            values(): MapIterator<EPackage>;
            [Symbol.iterator](): MapIterator<[string, EPackage]>;
            readonly [Symbol.toStringTag]: string;
        };
        new (iterable?: Iterable<readonly [string, EPackage]> | null | undefined): {
            register(pkg: EPackage): void;
            /**
             * Looks up the value in the map.
             */
            getEPackage(nsURI: string): EPackage;
            /**
             * Looks up the value in the map.
             */
            getEFactory(nsURI: string): EFactory;
            clear(): void;
            delete(key: string): boolean;
            forEach(callbackfn: (value: EPackage, key: string, map: Map<string, EPackage>) => void, thisArg?: any): void;
            get(key: string): EPackage | undefined;
            has(key: string): boolean;
            set(key: string, value: EPackage): /*elided*/ any;
            readonly size: number;
            entries(): MapIterator<[string, EPackage]>;
            keys(): MapIterator<string>;
            values(): MapIterator<EPackage>;
            [Symbol.iterator](): MapIterator<[string, EPackage]>;
            readonly [Symbol.toStringTag]: string;
        };
        INSTANCE: {
            register(pkg: EPackage): void;
            /**
             * Looks up the value in the map.
             */
            getEPackage(nsURI: string): EPackage;
            /**
             * Looks up the value in the map.
             */
            getEFactory(nsURI: string): EFactory;
            clear(): void;
            delete(key: string): boolean;
            forEach(callbackfn: (value: EPackage, key: string, map: Map<string, EPackage>) => void, thisArg?: any): void;
            get(key: string): EPackage | undefined;
            has(key: string): boolean;
            set(key: string, value: EPackage): /*elided*/ any;
            readonly size: number;
            entries(): MapIterator<[string, EPackage]>;
            keys(): MapIterator<string>;
            values(): MapIterator<EPackage>;
            [Symbol.iterator](): MapIterator<[string, EPackage]>;
            readonly [Symbol.toStringTag]: string;
        };
        readonly [Symbol.species]: MapConstructor;
    };
    private _eClassifiers;
    private _eSubPackages;
    private _eSuperPackage;
    private _nsPrefix;
    private _nsURI;
    protected _eFactoryInstance: EFactory;
    constructor(name: string, nsUri?: string, nsPrefix?: string);
    getEClassifier(name: string): EClassifier;
    getESubPackageByName(name: string): EPackage;
    protected addEClassifier(eClassifier: EClassifier): void;
    getEClassifiers(): EList<EClassifier>;
    getESubPackages(): EList<EPackage>;
    getESuperPackage(): EPackage;
    setESuperPackage(superPkg: EPackage): void;
    getNsPrefix(): string;
    setNsPrefix(value: string): void;
    getNsURI(): string;
    setNsURI(value: string): void;
    getEFactoryInstance(): EFactory;
    setEFactoryInstance(value: EFactory): void;
    protected createEEnum(id: number): EEnum;
    protected createEDataType(id: number): EDataType;
    protected createEClass(id: number): EClass;
    protected addEEnumLiteral(owner: EEnum, literal: string, value: number): void;
    protected initEClass(c: EClass, instanceClassName: string, isAbstract: boolean, isInterface: boolean, isGenerated: boolean): EClass;
    protected initEEnum(e: EEnum, instanceClassName: string): EEnum;
    protected initEDataType(e: EDataType, instanceClassName: string): EDataType;
    private initEClassifier;
    protected initEReference(r: EReference, type: EClassifier, otherEnd: EReference | undefined, name: string, defaultValue: string, lowerBound: number, upperBound: number, containerClass: string, isTransient: boolean, isVolatile: boolean, isChangeable: boolean, isContainment: boolean, isResolveProxies: boolean, isUnsettable: boolean, isUnique: boolean, isDerived: boolean, isOrdered: boolean): EReference;
    protected initEAttribute(a: EAttribute, type: EClassifier, name: string, defaultValue: string, lowerBound: number, upperBound: number, containerClass: string, isTransient: boolean, isVolatile: boolean, isChangeable: boolean, isUnsettable: boolean, isID: boolean, isUnique: boolean, isDerived: boolean, isOrdered: boolean): EAttribute;
    private initEStructuralFeature;
    protected initEOperation(eOperation: EOperation, type: EClassifier | undefined, name: string, lowerBound?: number, upperBound?: number, isUnique?: boolean, isOrdered?: boolean): EOperation;
    protected createEOperation(owner: EClass, id: number): void;
    protected createEParameter(owner: EOperation, name: string, upperBound: number, type?: EClassifier): void;
    protected createEAttribute(owner: EClass, id: number): void;
    protected createEReference(owner: EClass, id: number): void;
    getRootPackage(): EPackage;
}
//# sourceMappingURL=epackage.d.ts.map