import { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
import { RequestArgs, BaseAPI } from './base';
import { Configuration, QueryRequest, QueryQueuedRequest } from '../../domain';
import { MetadataConstraint, Metadata, MetadataModel, MetadataParameter, QueryPlan } from 'lambdaorm-base';
/**
 * ExpressionApi - axios parameter creator
 * @export
 */
export declare const QueryApiAxiosParamCreator: (configuration: Configuration) => {
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    constraints: (queryRequest?: QueryRequest, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
         *
         * @param {QueryRequest} queryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    execute: (queryRequest: QueryRequest, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    metadata: (queryRequest?: QueryRequest, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    model: (queryRequest?: QueryRequest, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    parameters: (queryRequest?: QueryRequest, options?: AxiosRequestConfig) => Promise<RequestArgs>;
    /**
         *
         * @param {QueryRequest} queryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    plan: (queryRequest: QueryRequest, options?: AxiosRequestConfig) => Promise<RequestArgs>;
};
/**
* ExpressionApi - functional programming interface
* @export
*/
export declare const QueryApiFp: (configuration: Configuration) => {
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    constraints(queryRequest?: QueryRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<MetadataConstraint>>;
    /**
         *
         * @param {QueryRequest} queryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    execute(queryRequest: QueryRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
         *
         * @param {QueryRequest} queryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    executeQueued(queryQueuedRequest: QueryQueuedRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    metadata(queryRequest?: QueryRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Metadata>>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    model(queryRequest?: QueryRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<MetadataModel>>>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    parameters(queryRequest?: QueryRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<MetadataParameter>>>;
    /**
         *
         * @param {QueryRequest} queryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    plan(queryRequest: QueryRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<QueryPlan>>;
};
/**
* ExpressionApi - factory interface
* @export
*/
export declare const ExpressionApiFactory: (configuration: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    constraints(queryRequest?: QueryRequest, options?: any): AxiosPromise<MetadataConstraint>;
    /**
         *
         * @param {QueryRequest} queryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    execute(queryRequest: QueryRequest, options?: any): AxiosPromise<any>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    metadata(queryRequest?: QueryRequest, options?: any): AxiosPromise<Metadata>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    model(queryRequest?: QueryRequest, options?: any): AxiosPromise<Array<MetadataModel>>;
    /**
         *
         * @param {QueryRequest} [queryRequest]
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    parameters(queryRequest?: QueryRequest, options?: any): AxiosPromise<Array<MetadataParameter>>;
    /**
         *
         * @param {QueryRequest} queryRequest
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
    plan(queryRequest: QueryRequest, options?: any): AxiosPromise<QueryPlan>;
};
/**
* QueryApi - object-oriented interface
* @export
* @class ExpressionApi
* @extends {BaseAPI}
*/
export declare class QueryApi extends BaseAPI {
    /**
     *
     * @param {QueryRequest} [queryRequest]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ExpressionApi
     */
    constraints(queryRequest?: QueryRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<MetadataConstraint, any>>;
    /**
     *
     * @param {QueryRequest} queryRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ExpressionApi
     */
    execute(queryRequest: QueryRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<any, any>>;
    /**
     *
     * @param {QueryQueuedRequest} queryQueuedRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ExpressionApi
     */
    executeQueued(queryQueuedRequest: QueryQueuedRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<any, any>>;
    /**
     *
     * @param {QueryRequest} [queryRequest]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ExpressionApi
     */
    metadata(queryRequest?: QueryRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<Metadata, any>>;
    /**
     *
     * @param {QueryRequest} [queryRequest]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ExpressionApi
     */
    model(queryRequest?: QueryRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<MetadataModel[], any>>;
    /**
     *
     * @param {QueryRequest} [queryRequest]
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ExpressionApi
     */
    parameters(queryRequest?: QueryRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<MetadataParameter[], any>>;
    /**
     *
     * @param {QueryRequest} queryRequest
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ExpressionApi
     */
    plan(queryRequest: QueryRequest, options?: AxiosRequestConfig): Promise<import("axios").AxiosResponse<QueryPlan, any>>;
}
