import { CallableConfig, ParameterConfig } from '../../types';
import { CsdlAnnotable } from './csdl-annotation';
import type { CsdlEntityContainer } from './csdl-entity-container';
import type { CsdlSchema } from './csdl-schema';
export declare const BINDING_PARAMETER_NAME: string;
export declare class CsdlCallable {
    private schema;
    Name: string;
    ReturnType?: CsdlReturnType;
    IsBound?: boolean;
    EntitySetPath?: string;
    Parameter?: CsdlParameter[];
    constructor(schema: CsdlSchema, { Name, ReturnType, IsBound, EntitySetPath, Parameter, }: {
        Name: string;
        ReturnType?: any;
        IsBound?: boolean;
        EntitySetPath?: string;
        Parameter?: any[];
    });
    toJson(): {
        [key: string]: any;
    };
    name(): string;
    namespace(): string;
    fullName(): string;
}
export declare class CsdlFunction extends CsdlCallable {
    IsComposable?: boolean;
    constructor(schema: CsdlSchema, { Name, ReturnType, IsBound, EntitySetPath, IsComposable, Parameter, }: {
        Name: string;
        ReturnType: any;
        IsBound?: boolean;
        EntitySetPath?: string;
        IsComposable?: boolean;
        Parameter?: any[];
    });
    toJson(): {
        IsComposable: boolean | undefined;
    };
    toConfig(base?: Partial<CallableConfig>): CallableConfig;
}
export declare class CsdlAction extends CsdlCallable {
    constructor(schema: CsdlSchema, { Name, ReturnType, IsBound, EntitySetPath, Parameter, }: {
        Name: string;
        ReturnType?: any;
        IsBound?: boolean;
        EntitySetPath?: string;
        Parameter?: any[];
    });
    toJson(): {
        [x: string]: any;
    };
    toConfig(base?: Partial<CallableConfig>): CallableConfig;
}
export declare class CsdlFunctionImport {
    private container;
    Name: string;
    FunctionName: string;
    EntitySet?: string;
    IncludeInServiceDocument?: boolean;
    constructor(container: CsdlEntityContainer, { Name, FunctionName, EntitySet, IncludeInServiceDocument, }: {
        Name: string;
        FunctionName: string;
        EntitySet?: string;
        IncludeInServiceDocument?: boolean;
    });
    toJson(): {
        Name: string;
        FunctionName: string;
        EntitySet: string | undefined;
        IncludeInServiceDocument: boolean | undefined;
    };
}
export declare class CsdlActionImport {
    private container;
    Name: string;
    Action: string;
    EntitySet?: string;
    constructor(container: CsdlEntityContainer, { Name, Action, EntitySet, }: {
        Name: string;
        Action: string;
        EntitySet?: string;
    });
    toJson(): {
        Name: string;
        Action: string;
        EntitySet: string | undefined;
    };
}
export declare class CsdlParameter extends CsdlAnnotable {
    Name: string;
    Type: string;
    Collection: boolean;
    Nullable?: boolean;
    MaxLength?: number;
    Precision?: number;
    Scale?: number;
    SRID?: string;
    constructor({ Name, Type, Nullable, MaxLength, Precision, Scale, SRID, Annotation, }: {
        Name: string;
        Type: string;
        Nullable?: boolean;
        MaxLength?: number;
        Precision?: number;
        Scale?: number;
        SRID?: string;
        Annotation?: any[];
    });
    toJson(): {
        Name: string;
        Type: string;
        Nullable: boolean | undefined;
        MaxLength: number | undefined;
        Precision: number | undefined;
        Scale: number | undefined;
        SRID: string | undefined;
    };
    toConfig(): ParameterConfig;
}
export declare class CsdlReturnType {
    Type: string;
    Collection: boolean;
    Nullable?: boolean;
    MaxLength?: number;
    Precision?: number;
    Scale?: number;
    SRID?: string;
    constructor({ Type, Nullable, MaxLength, Precision, Scale, SRID, }: {
        Type: string;
        Nullable?: boolean;
        MaxLength?: number;
        Precision?: number;
        Scale?: number;
        SRID?: string;
    });
    toJson(): {
        Type: string;
        Nullable: boolean | undefined;
        MaxLength: number | undefined;
        Precision: number | undefined;
        Scale: number | undefined;
        SRID: string | undefined;
    };
    toConfig(): {
        type: string;
        collection?: boolean | undefined;
    } | undefined;
}
