import { StructuredTypeFieldConfig } from '../../types';
import { CsdlAnnotable } from './csdl-annotation';
export declare abstract class CsdlStructuralProperty extends CsdlAnnotable {
    Name: string;
    Type: string;
    Collection: boolean;
    Nullable?: boolean;
    constructor({ Name, Type, Nullable, Annotation, }: {
        Name: string;
        Type: string;
        Nullable?: boolean;
        Annotation?: any[];
    });
    toJson(): {
        [key: string]: any;
    };
}
export declare class CsdlProperty extends CsdlStructuralProperty {
    MaxLength?: number;
    Precision?: number;
    Scale?: number;
    Unicode?: boolean;
    SRID?: string;
    DefaultValue?: string;
    constructor({ Name, Type, Nullable, MaxLength, Precision, Scale, Unicode, SRID, DefaultValue, Annotation, }: {
        Name: string;
        Type: string;
        Nullable?: boolean;
        MaxLength?: number;
        Precision?: number;
        Scale?: number;
        Unicode?: boolean;
        SRID?: string;
        DefaultValue?: string;
        Annotation?: any[];
    });
    toJson(): {
        [key: string]: any;
    };
    toConfig(): StructuredTypeFieldConfig & {
        name: string;
    };
}
export declare class CsdlNavigationProperty extends CsdlStructuralProperty {
    Partner?: string;
    ContainsTarget?: boolean;
    ReferentialConstraints?: CsdlReferentialConstraint[];
    OnDelete?: CsdlOnDelete;
    constructor({ Name, Type, Nullable, Partner, ContainsTarget, ReferentialConstraints, OnDelete, Annotation, }: {
        Name: string;
        Type: string;
        Nullable?: boolean;
        Partner?: string;
        ContainsTarget?: boolean;
        ReferentialConstraints?: any[];
        OnDelete?: any;
        Annotation?: any[];
    });
    toJson(): {
        [key: string]: any;
    };
    toConfig(): StructuredTypeFieldConfig & {
        name: string;
    };
}
export declare class CsdlReferentialConstraint {
    Property: string;
    ReferencedProperty: string;
    constructor({ Property, ReferencedProperty, }: {
        Property: string;
        ReferencedProperty: string;
    });
    toJson(): {
        Property: string;
        ReferencedProperty: string;
    };
}
export declare class CsdlOnDelete {
    Action: string;
    constructor({ Action }: {
        Action: string;
    });
    toJson(): {
        Action: string;
    };
}
