declare global {
    namespace Api {
        type Middleware = {
            onRequest: MiddlewareOnRequest;
            onResponse?: MiddlewareOnResponse;
            onError?: MiddlewareOnError;
        } | {
            onRequest?: MiddlewareOnRequest;
            onResponse: MiddlewareOnResponse;
            onError?: MiddlewareOnError;
        } | {
            onRequest?: MiddlewareOnRequest;
            onResponse?: MiddlewareOnResponse;
            onError: MiddlewareOnError;
        };
        type MiddlewareOnRequest = (ctx: MiddlewareCallbackParams) => void | globalThis.Request | globalThis.Response | undefined | Promise<globalThis.Request | globalThis.Response | undefined | void>;
        type MiddlewareOnResponse = (ctx: MiddlewareCallbackParams & {
            response: globalThis.Response;
        }) => void | globalThis.Response | undefined | Promise<globalThis.Response | undefined | void>;
        type MiddlewareOnError = (ctx: MiddlewareCallbackParams & {
            error: unknown;
        }) => void | globalThis.Response | Error | Promise<void | globalThis.Response | Error>;
        type MiddlewareCallbackParams = {
            readonly useExt: Api.Ext.UseExt;
            readonly requestOptions: Api.ClientRequestOptions;
            /**
             * Параметры запроса
             *
             * Для модификации параметров запроса используйте настройку клиента: `onPrepareData`
             *
             * @see Api.ClientOptions.onPrepareData
             */
            readonly data: Readonly<Record<string, any>>;
            /**
             * Дополнительная информация о запросе
             *
             * Только для middleware
             */
            middlewareData: Record<string, any>;
            /**
             * Основные параметры клиента API
             */
            readonly options: Api.BaseOptions;
            /**
             * Путь схемы OpenAPI
             */
            readonly schemaPath: Api.PathAbstract;
            /**
             * Уникальный идентификатор этого запроса
             */
            readonly id: string;
            /**
             * Объект запроса, который будет использоваться в `fetch()`
             */
            request: globalThis.Request;
        };
        /**
         * Ошибка при разборе результата API
         */
        type FormatError = (SyntaxError | TypeError) & {
            responseText?: string;
        };
    }
}
export {};
