import { CsdlAnnotable } from './csdl-annotation';
import { CsdlProperty, CsdlNavigationProperty } from './csdl-structural-property';
import type { CsdlSchema } from './csdl-schema';
export declare class CsdlStructuredType extends CsdlAnnotable {
    private schema;
    Name: string;
    Property?: CsdlProperty[];
    NavigationProperty?: CsdlNavigationProperty[];
    BaseType?: string;
    OpenType?: boolean;
    Abstract?: boolean;
    constructor(schema: CsdlSchema, { Name, Property, NavigationProperty, BaseType, OpenType, Abstract, Annotation, }: {
        Name: string;
        Property?: any[];
        NavigationProperty?: any[];
        BaseType?: string;
        OpenType?: boolean;
        Abstract?: boolean;
        Annotation?: any[];
    });
    toJson(): {
        [key: string]: any;
    };
    name(): string;
    namespace(): string;
    fullName(): string;
}
export declare class CsdlComplexType extends CsdlStructuredType {
    constructor(schema: CsdlSchema, { Name, Property, NavigationProperty, BaseType, OpenType, Abstract, Annotation, }: {
        Name: string;
        Property?: any[];
        NavigationProperty?: any[];
        BaseType?: string;
        OpenType?: boolean;
        Abstract?: boolean;
        Annotation?: any[];
    });
    toJson(): {
        [x: string]: any;
    };
}
export declare class CsdlEntityType extends CsdlStructuredType {
    Key?: CsdlKey;
    HasStream?: boolean;
    constructor(schema: CsdlSchema, { Name, Key, Property, NavigationProperty, BaseType, OpenType, Abstract, HasStream, Annotation, }: {
        Name: string;
        Key?: any;
        Property?: any[];
        NavigationProperty?: any[];
        BaseType?: string;
        OpenType?: boolean;
        Abstract?: boolean;
        HasStream?: boolean;
        Annotation?: any[];
    });
    toJson(): {
        [key: string]: any;
    };
}
export declare class CsdlKey {
    PropertyRef: CsdlPropertyRef[];
    constructor({ PropertyRef }: {
        PropertyRef: any[];
    });
    toJson(): {
        PropertyRef: {
            Name: string;
            Alias: string | undefined;
        }[];
    };
}
export declare class CsdlPropertyRef {
    Name: string;
    Alias?: string;
    constructor({ Name, Alias }: {
        Name: string;
        Alias?: string;
    });
    toJson(): {
        Name: string;
        Alias: string | undefined;
    };
}
