import { CallableConfig, ParserOptions, ParameterConfig, Parser } from '../../types';
import { ODataEnumTypeParser } from './enum-type';
import { ODataStructuredTypeParser } from './structured-type';
export declare class ODataParameterParser<T> {
    name: string;
    type: string;
    private parser;
    collection?: boolean;
    nullable?: boolean;
    parserOptions?: ParserOptions;
    constructor(name: string, parameter: ParameterConfig);
    serialize(value: T, options?: ParserOptions): any;
    encode(value: any, options?: ParserOptions): string;
    configure({ options, parserForType, }: {
        options: ParserOptions;
        parserForType: (type: string) => Parser<any>;
    }): void;
    isEdmType(): boolean;
    isEnumType(): boolean;
    enumType(): ODataEnumTypeParser<T>;
    isStructuredType(): boolean;
    structuredType(): ODataStructuredTypeParser<T>;
    field<F>(name: string): import("./structured-type").ODataStructuredTypeFieldParser<F>;
}
export declare class ODataCallableParser<R> implements Parser<R> {
    name: string;
    namespace: string;
    alias?: string;
    return?: {
        type: string;
        collection?: boolean;
    };
    parser: Parser<any>;
    parameters: ODataParameterParser<any>[];
    parserOptions?: ParserOptions;
    constructor(config: CallableConfig, namespace: string, alias?: string);
    isTypeOf(type: string): boolean;
    deserialize(value: any, options?: ParserOptions): R;
    serialize(params: any, options?: ParserOptions): any;
    encode(params: any, options?: ParserOptions): any;
    configure({ options, parserForType, }: {
        options: ParserOptions;
        parserForType: (type: string) => Parser<any>;
    }): void;
    binding(): ODataParameterParser<any> | undefined;
    returnType(): string | undefined;
}
