/**
 * Cache TTL policies per "tool class".
 *
 * Источник: `todo/error-logs-service/mcp/05-high-load.md` § 2.1.
 *
 * Class имена используются:
 *   - как `tool_class` label в Prometheus метриках (`mcp_cache_hit_ratio`);
 *   - как первая часть Redis key namespace (`mcp:cache:{class}:...`).
 *
 * Изменения дефолтов делайте здесь, не в `cachedElsClient.ts` — chair pattern.
 *
 * Значения можно override через ENV `MCP_CACHE_TTL_OVERRIDE_{CLASS}=secs`
 * (см. `src/config.ts`).
 */
export declare const CACHE_POLICIES: {
    readonly log_details: 3600;
    readonly traffic_long: 300;
    readonly traffic_short: 60;
    readonly top_messages: 120;
    readonly stats_breakdown: 120;
    readonly search_recent: 15;
    readonly list_apps: 30;
    readonly heatmap: 300;
    readonly histogram: 60;
    readonly baseline: 300;
    readonly version_timeline: 300;
    readonly grouped_errors: 120;
};
export type CacheClass = keyof typeof CACHE_POLICIES;
export interface CachePolicyOverrides {
    [k: string]: number | undefined;
}
/**
 * Объединяет дефолтные политики с user overrides из конфига.
 */
export declare function resolvePolicies(overrides?: CachePolicyOverrides): Record<CacheClass, number>;
/**
 * Стабильный sha256 hash от объекта параметров (отсортированные ключи).
 *
 * НЕ криптографически стойкий — это просто детерминированный fingerprint.
 * Используется для построения cache key (paramsHash).
 *
 * Возвращает base64url-encoded 16 chars.
 */
export declare function paramsHash(params: Record<string, unknown>): string;
/**
 * Tenant-isolated cache key builder.
 *
 * **Обязательная** проверка: в key всегда присутствует tenant-идентификатор
 * (`appSlug` или `keyPrefix`). Иначе — `Error`.
 *
 * Формат:
 *   `mcp:cache:{scope}:{tenant}:{...parts}`
 *
 * Это **единственный** разрешённый путь создания cache key в проекте.
 *
 * @throws Error если tenant=null AND keyPrefix=empty (cross-tenant leak guard)
 */
export declare function tenantKey(scope: string, appSlug: string | null, parts: Array<string | number>, fallbackKeyPrefix?: string): string;
//# sourceMappingURL=policies.d.ts.map