import { ApiEdgeQueryFilter, ApiEdgeQueryFilterType, ExportedApiEdgeQueryFilter } from "./ApiEdgeQueryFilter";
import { OneToOneRelation } from "../relations/OneToOneRelation";
import { Api } from "../Api";
import { ApiEdgeQueryParameter, ExportedApiEdgeQueryParameter } from "./ApiEdgeQueryParameter";
export interface ExportedApiEdgeQueryContext {
    id: string | null;
    fields: string[];
    populatedRelations: string[];
    pagination: {
        skip: number;
        limit: number;
    };
    sortBy: [string, number][];
    filters: ExportedApiEdgeQueryFilter[];
    parameters: ExportedApiEdgeQueryParameter[];
}
export declare class ApiEdgeQueryContext {
    id: string | null;
    fields: string[];
    populatedRelations: OneToOneRelation[];
    pagination: {
        skip: number;
        limit: number;
    };
    sortBy: [string, number][];
    filters: ApiEdgeQueryFilter[];
    parameters: ApiEdgeQueryParameter[];
    identity: any;
    method: string;
    clone: () => ApiEdgeQueryContext;
    toJSON: () => ExportedApiEdgeQueryContext;
    static fromJSON: (obj: ExportedApiEdgeQueryContext, api: Api) => Promise<ApiEdgeQueryContext>;
    constructor(id?: string | null, fields?: string[]);
    paginate: (skip: number, limit: number) => this;
    sort: (fieldName: string, ascending?: boolean) => this;
    populate(relation: OneToOneRelation): this;
    field(field: string): this;
    filter(field: string, type: ApiEdgeQueryFilterType, value: any): this;
    parameter(key: string): any;
    parameter(key: string, value: any): ApiEdgeQueryContext;
}
