import { AxiosInstance } from 'axios';
import { MethodType } from './const/methods.js';
import { IOpenApiAxiosOptions, OptionsType, ValidStatusType } from './types/options.js';
import { GetApiResponse } from './types/response.js';
import { RouteResponsesByStatusCode, RoutesForMethod, SchemaType } from './types/schemeTypes.js';
import { IsNullable } from './types/utils.js';
/**
 * @description OpenApiAxios class is a wrapper around Axios that provides methods to handle API requests
 * and responses based on OpenAPI specifications.
 *
 * @template Schema - The OpenAPI schema type.
 * @template ClassValidStatus - The type that configures the error handling strategy.
 */
export declare class OpenApiAxios<Schema extends SchemaType, ClassValidStatus extends ValidStatusType> {
    private axios;
    private opt;
    /**
     * @description Creates an instance of OpenApiAxios.
     *
     * @param axios - The Axios instance to use for requests.
     * @param options - Configuration options for the OpenApiAxios instance.
     */
    constructor(axios: AxiosInstance, options: IOpenApiAxiosOptions<ClassValidStatus>);
    get: <Route extends RoutesForMethod<Schema, "get">, MethodValidStatus extends ValidStatusType | undefined = undefined>(...args: import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "get", Route, "parameters">, "query">> extends infer T ? T extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "get", Route, "parameters">, "query">> ? T extends true ? [path: Route, options: OptionsType<Schema, "get", Route, MethodValidStatus>] : [path: Route, options?: OptionsType<Schema, "get", Route, MethodValidStatus> | undefined] : never : never) => Promise<GetApiResponse<IsNullable<MethodValidStatus> extends true ? ClassValidStatus : NonNullable<MethodValidStatus>, RouteResponsesByStatusCode<Schema, "get", Route, import('./types/schemeTypes.js').SchemeRouteField<Schema, "get", Route, "responses">>>>;
    head: <Route extends RoutesForMethod<Schema, "head">, MethodValidStatus extends ValidStatusType | undefined = undefined>(...args: import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "head", Route, "parameters">, "query">> extends infer T ? T extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "head", Route, "parameters">, "query">> ? T extends true ? [path: Route, options: OptionsType<Schema, "head", Route, MethodValidStatus>] : [path: Route, options?: OptionsType<Schema, "head", Route, MethodValidStatus> | undefined] : never : never) => Promise<GetApiResponse<IsNullable<MethodValidStatus> extends true ? ClassValidStatus : NonNullable<MethodValidStatus>, RouteResponsesByStatusCode<Schema, "head", Route, import('./types/schemeTypes.js').SchemeRouteField<Schema, "head", Route, "responses">>>>;
    delete: <Route extends RoutesForMethod<Schema, "delete">, MethodValidStatus extends ValidStatusType | undefined = undefined>(...args: import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "delete", Route, "parameters">, "query">> extends infer T ? T extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "delete", Route, "parameters">, "query">> ? T extends true ? [path: Route, options: OptionsType<Schema, "delete", Route, MethodValidStatus>] : [path: Route, options?: OptionsType<Schema, "delete", Route, MethodValidStatus> | undefined] : never : never) => Promise<GetApiResponse<IsNullable<MethodValidStatus> extends true ? ClassValidStatus : NonNullable<MethodValidStatus>, RouteResponsesByStatusCode<Schema, "delete", Route, import('./types/schemeTypes.js').SchemeRouteField<Schema, "delete", Route, "responses">>>>;
    options: <Route extends RoutesForMethod<Schema, "options">, MethodValidStatus extends ValidStatusType | undefined = undefined>(...args: import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "options", Route, "parameters">, "query">> extends infer T ? T extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "options", Route, "parameters">, "query">> ? T extends true ? [path: Route, options: OptionsType<Schema, "options", Route, MethodValidStatus>] : [path: Route, options?: OptionsType<Schema, "options", Route, MethodValidStatus> | undefined] : never : never) => Promise<GetApiResponse<IsNullable<MethodValidStatus> extends true ? ClassValidStatus : NonNullable<MethodValidStatus>, RouteResponsesByStatusCode<Schema, "options", Route, import('./types/schemeTypes.js').SchemeRouteField<Schema, "options", Route, "responses">>>>;
    put: <Route extends RoutesForMethod<Schema, "put">, MethodValidStatus extends ValidStatusType | undefined>(...args: import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "put", Route, "parameters">, "query">> extends infer T ? T extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "put", Route, "parameters">, "query">> ? T extends true ? [path: Route, body: import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "put", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "put", Route> : undefined, options: OptionsType<Schema, "put", Route, MethodValidStatus>] : (import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "put", Route, "parameters">, "query">> extends infer T_1 ? T_1 extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "put", Route, "parameters">, "query">> ? T_1 extends true ? true : import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "put", Route>> : never : never) extends infer T_2 ? T_2 extends (import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "put", Route, "parameters">, "query">> extends infer T_3 ? T_3 extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "put", Route, "parameters">, "query">> ? T_3 extends true ? true : import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "put", Route>> : never : never) ? T_2 extends true ? [path: Route, body: import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "put", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "put", Route> : undefined, options?: OptionsType<Schema, "put", Route, MethodValidStatus> | undefined] : [path: Route, body?: (import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "put", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "put", Route> : undefined) | undefined, options?: OptionsType<Schema, "put", Route, MethodValidStatus> | undefined] : never : never : never : never) => Promise<GetApiResponse<IsNullable<MethodValidStatus> extends true ? ClassValidStatus : NonNullable<MethodValidStatus>, RouteResponsesByStatusCode<Schema, "put", Route, import('./types/schemeTypes.js').SchemeRouteField<Schema, "put", Route, "responses">>>>;
    post: <Route extends RoutesForMethod<Schema, "post">, MethodValidStatus extends ValidStatusType | undefined>(...args: import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "post", Route, "parameters">, "query">> extends infer T ? T extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "post", Route, "parameters">, "query">> ? T extends true ? [path: Route, body: import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "post", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "post", Route> : undefined, options: OptionsType<Schema, "post", Route, MethodValidStatus>] : (import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "post", Route, "parameters">, "query">> extends infer T_1 ? T_1 extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "post", Route, "parameters">, "query">> ? T_1 extends true ? true : import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "post", Route>> : never : never) extends infer T_2 ? T_2 extends (import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "post", Route, "parameters">, "query">> extends infer T_3 ? T_3 extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "post", Route, "parameters">, "query">> ? T_3 extends true ? true : import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "post", Route>> : never : never) ? T_2 extends true ? [path: Route, body: import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "post", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "post", Route> : undefined, options?: OptionsType<Schema, "post", Route, MethodValidStatus> | undefined] : [path: Route, body?: (import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "post", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "post", Route> : undefined) | undefined, options?: OptionsType<Schema, "post", Route, MethodValidStatus> | undefined] : never : never : never : never) => Promise<GetApiResponse<IsNullable<MethodValidStatus> extends true ? ClassValidStatus : NonNullable<MethodValidStatus>, RouteResponsesByStatusCode<Schema, "post", Route, import('./types/schemeTypes.js').SchemeRouteField<Schema, "post", Route, "responses">>>>;
    patch: <Route extends RoutesForMethod<Schema, "patch">, MethodValidStatus extends ValidStatusType | undefined>(...args: import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "patch", Route, "parameters">, "query">> extends infer T ? T extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "patch", Route, "parameters">, "query">> ? T extends true ? [path: Route, body: import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "patch", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "patch", Route> : undefined, options: OptionsType<Schema, "patch", Route, MethodValidStatus>] : (import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "patch", Route, "parameters">, "query">> extends infer T_1 ? T_1 extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "patch", Route, "parameters">, "query">> ? T_1 extends true ? true : import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "patch", Route>> : never : never) extends infer T_2 ? T_2 extends (import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "patch", Route, "parameters">, "query">> extends infer T_3 ? T_3 extends import('./types/utils.js').NotNever<import('./types/utils.js').FilterKeyOrNever<import('./types/schemeTypes.js').SchemeRouteField<Schema, "patch", Route, "parameters">, "query">> ? T_3 extends true ? true : import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "patch", Route>> : never : never) ? T_2 extends true ? [path: Route, body: import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "patch", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "patch", Route> : undefined, options?: OptionsType<Schema, "patch", Route, MethodValidStatus> | undefined] : [path: Route, body?: (import('./types/utils.js').NotNever<import('./types/schemeTypes.js').RouteRequestBody<Schema, "patch", Route>> extends true ? import('./types/schemeTypes.js').RouteRequestBody<Schema, "patch", Route> : undefined) | undefined, options?: OptionsType<Schema, "patch", Route, MethodValidStatus> | undefined] : never : never : never : never) => Promise<GetApiResponse<IsNullable<MethodValidStatus> extends true ? ClassValidStatus : NonNullable<MethodValidStatus>, RouteResponsesByStatusCode<Schema, "patch", Route, import('./types/schemeTypes.js').SchemeRouteField<Schema, "patch", Route, "responses">>>>;
    /**
     * @description Generates a URI for a given API endpoint, including query parameters.
     *
     * @param method - The HTTP method to use.
     * @param path - The API route.
     * @param options - Additional options for the request.
     * @returns The generated URI as a string.
     */
    getUri<Method extends MethodType, Route extends RoutesForMethod<Schema, Method>>(method: Method, path: Route, options?: OptionsType<Schema, Method, Route>): Promise<string>;
    /**
     * @description Prepares the options and URL for an API request.
     *
     * @param path - The API route.
     * @param options - Additional options for the request.
     * @returns An object containing the prepared URL string and new options.
     */
    private prepareOptions;
    /**
     * @description Prepares the API response based on the valid status type.
     *
     * @param response - The Axios response promise.
     * @param options - Options for the request.
     * @returns A promise that resolves to the processed API response.
     */
    private prepareResponse;
    /**
     * @description Converts OpenAPI options to Axios request options.
     *
     * @param options - The options to convert.
     * @returns The converted Axios request configuration.
     */
    private optionsToAxiosOptions;
    /**
     * @description Creates a fetcher method for HTTP methods that do not have a request body (e.g., GET, DELETE).
     *
     * @param method - The HTTP method to create a fetcher for.
     * @returns A function that performs the API request.
     */
    private factoryWithoutBody;
    /**
     * @description Creates a fetcher method for HTTP methods that have a request body (e.g., POST, PUT).
     *
     * @param method - The HTTP method to create a fetcher for.
     * @returns A function that performs the API request.
     */
    private factoryWithBody;
}
export type { GetApiResponse, ApiResponseAll, ApiResponseFetch, ApiResponseAxios, } from './types/response.js';
export type { RouteResponsesByStatusCode, RoutesForMethod, SchemaType, } from './types/schemeTypes.js';
export type { MethodType } from './const/methods.js';
