import { Query } from "./query";
import { EdmEntityType, ApiMetadata } from "./metadata";
import { SingleSource } from "./singleSource";
import { Executable, ExecutableAndCount } from "./executable";
export declare class CollectionSource extends ExecutableAndCount {
    protected __metadata: EdmEntityType;
    protected __apiMetadata: ApiMetadata;
    constructor(__metadata: EdmEntityType, __apiMetadata: ApiMetadata, query: Query);
    private _generateOperationsProperties;
    $byKey(key: any): SingleSource;
    private getExpressionByKeyValue;
    private getExpressionByValues;
    $cast(fullTypeName: string): CollectionSource;
    $count(): Executable;
    $delete(key: any): Executable;
    $expand(prop: string, exp?: Function): CollectionSource;
    $filter(expr: string): CollectionSource;
    $orderBy(...fields: (string | Function)[]): CollectionSource;
    $orderByDesc(...fields: (string | Function)[]): CollectionSource;
    private orderByImpl;
    $insert(obj: any): Executable;
    $patch(key: any, obj: any): Executable;
    $top(num: number): CollectionSource;
    $skip(num: number): CollectionSource;
    $search(expr: string): CollectionSource;
    $select(...fields: string[]): CollectionSource;
    $unsafeExpand(exp: string): CollectionSource;
    $update(key: any, obj: any): Executable;
    $urlWithCount(): string;
}
