import { Parser, ParserOptions, PathSegment } from '../../types';
import { EntityKey } from '../resource';
import { SegmentHandler } from './handlers';
export type ODataSegment = {
    name: PathSegment;
    path: string;
    outgoingType?: string;
    incomingType?: string;
    bindingType?: string;
    key?: any;
    parameters?: any;
};
export declare const pathAndParamsFromSegments: (segments: ODataSegment[], { escape, parser, options, }?: {
    escape?: boolean;
    parser?: Parser<any>;
    options?: ParserOptions;
}) => [string, {
    [name: string]: any;
}];
export declare class ODataPathSegments {
    private _segments;
    constructor(segments?: ODataSegment[]);
    pathAndParams({ escape, parser, options, }?: {
        escape?: boolean;
        parser?: Parser<any>;
        options?: ParserOptions;
    }): [string, {
        [name: string]: any;
    }];
    types({ key }?: {
        key?: boolean;
    }): string[];
    keys(values?: (EntityKey<any> | undefined)[]): (EntityKey<any> | undefined)[];
    toString({ escape }?: {
        escape?: boolean;
    }): string;
    toJson(): any[];
    static fromJson(json: {
        [name: string]: any;
    }[]): ODataPathSegments;
    clone(): ODataPathSegments;
    find(predicate: (segment: ODataSegment) => boolean): ODataSegment | undefined;
    segments({ key }?: {
        key?: boolean;
    }): SegmentHandler[];
    first({ key }?: {
        key?: boolean;
    }): SegmentHandler | undefined;
    last({ key }?: {
        key?: boolean;
    }): SegmentHandler | undefined;
    add(name: string, path: string): SegmentHandler;
    get(name: string): SegmentHandler;
}
