import { fetch as undiciFetch } from 'undici'; import type { Dispatcher } from '../audit-runner.js'; /** * SECURITY: like decision #7's anthropic-subprocess invariant, the * DeepSeek URL and the model-name allowlist are HARDCODED. Project-local * config can never redirect this dispatcher at a different host or run * an unsupported model. Future contributors who feel tempted to read a * URL from `.scaffold/observability.yaml` here should re-read the parent * design doc's Resolved Decisions table first. */ export declare const DEEPSEEK_URL = "https://api.deepseek.com/chat/completions"; /** * Hardcoded allowlist of DeepSeek model names. KNOWLEDGE_FRESHNESS_DEEPSEEK_MODEL * may override the default, but only to a value in this set — never to * arbitrary text. The previously-supported `deepseek-chat` and * `deepseek-reasoner` IDs are deprecated and intentionally excluded. */ declare const ALLOWED_MODELS: readonly ["deepseek-v4-flash", "deepseek-v4-pro"]; export type DeepseekModel = typeof ALLOWED_MODELS[number]; export declare const DEFAULT_DEEPSEEK_MODEL: DeepseekModel; /** Test-injectable fetch. Production uses undici's fetch. */ export type DeepseekFetch = typeof undiciFetch; export interface BuildDeepseekDispatcherOptions { apiKey: string; timeoutSec: number; /** Optional model override (must be in the allowlist). */ model?: string; /** Test-injectable fetch implementation. Default: undici's fetch. */ fetchImpl?: DeepseekFetch; } export declare function buildDeepseekDispatcher(opts: BuildDeepseekDispatcherOptions): Dispatcher; export {}; //# sourceMappingURL=deepseek.d.ts.map