declare global {
    namespace Api {
        /**
         * Расширенные настройки выполнения запроса
         */
        interface ClientRequestOptions {
            /**
             * Элемент, который получит статус загрузки
             *
             * Для использования в хуке `onLoading()`
             */
            loadingEl: HTMLElement;
            /**
             * Отображать ли индикатор загрузки
             *
             * Для использования в хуке `onLoading()`
             */
            loadingShowSpinner: boolean;
            /**
             * Событие смены статуса загрузки
             */
            onLoading?: (isLoading: boolean, ctx: Api.MiddlewareCallbackParams) => void | Promise<void>;
            /**
             * Событие, которое сработает при получении результата API
             *
             * Не путать с результатами `fetch()`
             *
             * Только при использовании `useExt`
             *
             * При переопределении на уровне запроса API, вы можете переиспользовать ранее определенное событие на уровне API клиента:
             * ```
             * onApiLoaded = (res, ctx, clientOnApiLoaded) => clientOnApiLoaded?.(res, ctx);
             * ```
             */
            onApiLoaded?: (res: Api.Response<any>, ctx: Api.MiddlewareCallbackParams, clientOnApiLoaded?: this['onApiLoaded']) => void | Promise<void>;
            /**
             * Событие, которое сработает при получении ошибки API в `res.errors`
             *
             * Не путать с ошибками `fetch()`
             *
             * Только при использовании `useExt`
             *
             * При переопределении на уровне запроса API, вы можете переиспользовать ранее определенное событие на уровне API клиента:
             * ```
             * onApiError = (res, ctx, clientOnApiError) => clientOnApiError?.(res, ctx);
             * ```
             *
             * @see createClient
             */
            onApiError?: (res: Api.Response<any>, ctx: Api.MiddlewareCallbackParams & {
                formatError?: FormatError;
            }, clientOnApiError?: this['onApiError']) => void | Promise<void>;
            /**
             * Событие, которое сработает при получении сообщения API в `res.messages`
             *
             * Только при использовании `useExt`
             */
            onApiMessage?: (res: Api.Response<any>, ctx: Api.MiddlewareCallbackParams) => void | Promise<void>;
            /**
             * Отклонить предыдущий запрос, если запрошен новый с таким же значением `checkFingerprint`
             *
             * В этом случае запрос вернет результат с ошибкой соединения с кодом `0`
             */
            checkFingerprint?: string;
            /**
             * Метод HTTP запроса
             *
             * @see https://developer.mozilla.org/ru/docs/Web/HTTP/Reference/Methods
             */
            method: 'GET' | 'POST';
            /**
             * Ожидаемый тип контента в ответе
             */
            accept: 'application/json' | 'text/csv';
        }
    }
}
export {};
