/// <reference types="node" />
import { ApiEdgeQueryContext } from "../edge/ApiEdgeQueryContext";
import { ApiEdgeQueryResponse } from "../edge/ApiEdgeQueryResponse";
import { ApiRequest } from "../request/ApiRequest";
export interface ApiQueryScope {
    context: ApiEdgeQueryContext;
    body: any | null;
    stream?: NodeJS.ReadableStream | null;
    identity: any | null;
    response: ApiEdgeQueryResponse | null;
    query: ApiQuery;
    request: ApiRequest;
    step: number;
}
export interface QueryStep {
    execute(scope: ApiQueryScope): Promise<ApiQueryScope>;
}
export declare class ApiQuery {
    readonly id: string;
    request: ApiRequest;
    steps: QueryStep[];
    constructor();
    unshift: (step: QueryStep) => ApiQuery;
    execute: (identity?: any) => Promise<ApiEdgeQueryResponse>;
}
