declare global {
    namespace Api {
        /**
         * Объект с запросом к конкретному методу API
         */
        interface ClientRequest<RequestContext extends Api.ClientRequestContext<any, any, any>, FieldsNarrow extends Api.ParamsFields<RequestContext> | undefined = undefined, Params extends Api.Params<RequestContext> = Api.Params<RequestContext>, ParamsFieldsNarrowed extends Api.PropIfExists<Params, 'fields'> = Api.PropIfExists<Params, 'fields'>> {
            /**
             * Имя метода
             */
            readonly path: Api.PathAbstract;
            /**
             * Url для обращения к методу API
             *
             * Не включает параметры запроса
             */
            readonly url: string;
            /**
             * Параметры метода API
             */
            params: Omit<Params, 'fields'> & (Params extends {
                fields: any;
            } ? Readonly<Pick<Params, 'fields'>> : {});
            /**
             *  Опции запроса
             */
            options: Api.ClientRequestOptions;
            mockerOptions?: Api.Mocker.Options<Api.Mocker.Result, Params>;
            /**
             * Признак загрузки
             */
            inLoading: boolean;
            /**
             * Получить флаг загрузки
             */
            getInLoading(): boolean;
            /**
             * Переназначить параметры запроса
             *
             * Полностью заменит предыдущее значение параметров
             */
            setParams(params: Omit<Params, 'fields' | 'fetch_style'>): this;
            /**
             * Изменить параметры запроса
             */
            changeParams(params: Partial<Omit<Params, 'fields' | 'fetch_style'>>): this;
            /**
             * Установить расширенные настройки запроса
             */
            setOptions(options: Partial<Api.ClientRequestOptions>): this;
            /**
             * Установить генератор данных вместо реальных запросов к серверу
             */
            setMocker<MockerResult extends Api.Mocker.Result>(options?: Api.Mocker.Options<MockerResult, Params>): this;
            /**
             * Выполнить обращение к методу API
             */
            call<Fields extends ParamsFieldsNarrowed & FieldsNarrow>(fields?: Fields): Promise<RequestContext['UseExt'] extends true ? Api.Response<RequestContext, Fields> : Api.ResponseOriginal<RequestContext>>;
            /**
             * Выполнить обращение к методу API с указанием `fetchStyle`
             */
            callFetch: <Fields extends ParamsFieldsNarrowed & FieldsNarrow, FetchStyle extends RequestContext['ParamsFetchStyle']>(fetchStyle: FetchStyle, fields?: Fields) => Promise<Api.Response<RequestContext, Fields, FetchStyle>>;
            /**
             * Выполнить обращение к методу API в новом окне
             *
             * Примеры использования:
             * - скачивание файлов
             * - печать документов
             */
            callInNewWindow(fields?: ParamsFieldsNarrowed & FieldsNarrow): void;
            /**
             * Выполнить обращение к методу API в текущем окне
             *
             * Примеры использования:
             * - переход на станицу интеграции, OAuth
             * - открытие формы оплаты
             */
            callInSelfWindow(fields?: ParamsFieldsNarrowed & FieldsNarrow): void;
            /** Генерация параметров запроса */
            genData<FetchStyle extends RequestContext['ParamsFetchStyle']>(fields?: FieldsNarrow, fetchStyle?: FetchStyle): Record<string, any>;
            exec(fields?: FieldsNarrow, fetchStyle?: RequestContext['ParamsFetchStyle']): Promise<any>;
            /**
             * Создать `AbortController` для `fetch` и остановить предыдущий с тем же checkFingerprint, если он запущен
             *
             * @see `options.checkFingerprint`
             */
            abortByFingerprint(): AbortSignal | undefined;
        }
        /**
         * Объект с запросом к методу API, не описанному в OpenAPI
         */
        interface ClientRequestCustom<useExt extends Api.Ext.UseExt, Params extends Record<string, any>, Result> extends ClientRequest<Api.ClientRequestContext<any, any, useExt>, any[], Params> {
            params: Params;
            call(fields?: any): Promise<useExt extends true ? Api.ResponseCustom<Result> : Result>;
        }
    }
}
export {};
