import { CommonRequestData, CommonActionMetadata, ServiceHandlerMetadata, CommonRequestResponse, IManager } from './common';
import { IContainer } from '../di/resolvers';
import { Domain } from '../schemas/schema';
import { RequestContext } from '../servers/requestContext';
import { HttpResponse } from './response';
export interface QueryData extends CommonRequestData {
    maxByPage?: number;
    page?: number;
}
export interface QueryResponse<T> extends CommonRequestResponse<T> {
    maxByPage?: number;
    page?: number;
    totalPages?: number;
    total?: number;
}
/**
 *
 *
 * @export
 * @interface QueryMetadata
 * @extends {ServiceHandlerMetadata}
 */
export interface QueryMetadata extends ServiceHandlerMetadata {
}
/**
 *
 *
 * @export
 * @interface QueryActionMetadata
 * @extends {CommonActionMetadata}
 */
export interface QueryActionMetadata extends CommonActionMetadata {
    outputSchema?: string | Function;
    outputType?: "one" | "many";
}
export declare class QueryManager implements IManager {
    container: IContainer;
    private _domain;
    private _serviceDescriptors;
    /**
     * Get the current domain model
     * @returns {Domain}
     */
    readonly domain: Domain;
    constructor(container: IContainer);
    private createResponse(ctx, query, error?);
    getInfoHandler(command: CommonRequestData, container?: IContainer): {
        handler: any;
        metadata: QueryActionMetadata;
        method: string;
        verb: string;
        kind: "query" | "action" | "event";
    };
    private validateRequestData(ctx, info, query);
    runAsync(query: QueryData, ctx: RequestContext): Promise<HttpResponse>;
}
