/**
 * Типы для HTTP-транспорта.
 *
 * `RequestContext` собирается в auth middleware и потом доступен в
 * Express handler'ах через `req.context`. Декларация augmentation модуля
 * `express-serve-static-core` лежит ниже — она добавляет `context` к Request.
 */
export type AuthMethod = 'els-key' | 'oidc';
export interface RequestContext {
    /** Способ аутентификации, по которому пользователь прошёл. */
    authMethod: AuthMethod;
    /** Только для `els-key`: оригинальный Bearer-ключ для проксирования в ELS. */
    elsApiKey?: string;
    /** Только для `oidc`: `sub` claim из JWT. */
    oidcSub?: string;
    /** Только для `oidc`: scope claim (raw array). */
    scopes?: string[];
    /**
     * Основной (default) slug приложения, к которому привязан этот запрос. Для
     * `els-key` пока `unknown` (резолвится ELS upstream); для `oidc` — берётся
     * либо из LK resolver, либо fallback на MCP_OIDC_DEMO_APP_SLUG.
     */
    appSlug: string;
    /**
     * Полный список доступных пользователю apps (только для `oidc`).
     * Если у пользователя более одного app — tool принимает optional
     * `appSlug` параметр; иначе используется первый из списка (`appSlug`).
     */
    availableApps?: string[];
    /** Короткий identifier для логов: первые 8 chars ELS-key или OIDC sub. */
    keyId: string;
    ip: string;
    userAgent: string;
    /** MCP `Mcp-Session-Id` header (если есть). */
    sessionId?: string;
    /** request-id middleware: уникален per-запрос. */
    requestId: string;
}
declare module 'express-serve-static-core' {
    interface Request {
        context?: RequestContext;
        /** Per-request child logger (pino). Заполняется в requestId middleware. */
        log?: import('pino').Logger;
    }
}
//# sourceMappingURL=types.d.ts.map