declare global {
    /**
     * Утилиты работы со схемами расширения спецификации OpenAPI для работы с селектором
     *
     * @see Api.Ext
     */
    namespace Api {
        /**
         * Тип операции метода API
         */
        type Oper<Paths extends Api.PathsAbstract, Path extends Api.Path<Paths>> = Path extends `/${infer P extends Api.Ext.Schemas['Oper']}/${string}` ? P : never;
        /**
         * Модель данных метода
         *
         * Для метода без модели вернет `null`
         */
        type Model<Paths extends Api.PathsAbstract, Path extends Api.Path<Paths>> = Paths[Path]['post']['responses'][200]['content'] extends {
            model: infer Model extends Api.Ext.Schemas['Model'];
        } ? Model : never;
        type ModelFields<Model extends Api.Ext.Schemas['Model']> = readonly Api.Field.Name<Model>[];
        /**
         * Результат метода API, выполненного успешно
         */
        type ResponseSuccess<Result, Oper extends Api.Ext.Schemas['Oper']> = {
            result: Result;
            /**
             * Информация о нативных типах данных в результате
             *
             * Возвращается при работе с БД
             */
            meta?: any[];
            /**
             * Списка ошибок в успешных запросах быть не может
             */
            errors: undefined;
            response?: globalThis.Response;
        } & Omit<Api.Ext.Schemas['ResponseSuccess'], 'result' | 'errors'> & ('get' extends Oper ? Api.Ext.Schemas['Pagination'] : {});
        /**
         * Результат метода API с ошибкой
         */
        type ResponseError<Result> = {
            /**
             * При ошибках результат всегда null
             */
            result: null | Result;
            response?: globalThis.Response;
        } & Omit<Api.Ext.Schemas['ResponseError'], 'result'>;
    }
}
export {};
