import { Injectable, ServiceUnavailableException } from '@nestjs/common';
import type {
  ModelProvider,
  ProviderRequest,
  ProviderResponse,
} from './provider.types';

/**
 * Anthropic provider 占位实现（PR3）。
 *
 * **前置依赖未通过前不会启用**：法务 LLM 数据出境合规（PIPL / CAC）评估（PRD §11.1）。
 * `isAvailable()` 同时检查 `ANTHROPIC_API_KEY` 是否配置和合规 feature flag。
 * 当前两条都未满足 → 永远 unavailable，Registry 不会路由到它。
 *
 * PR3 真实集成（含 SSE 流式 / SDKMessage 字段对齐）在合规通过后单独 PR 接入。
 */
@Injectable()
export class AnthropicProvider implements ModelProvider {
  readonly name = 'anthropic';
  readonly supportedModels = [
    'claude-opus-4-7',
    'claude-sonnet-4-6',
    'claude-haiku-4-5',
  ] as const;

  isAvailable(): boolean {
    const hasKey = !!process.env.ANTHROPIC_API_KEY;
    const complianceCleared = process.env.FFAI_LLM_EGRESS_COMPLIANCE_CLEARED === 'true';
    return hasKey && complianceCleared;
  }

  async invoke(_request: ProviderRequest): Promise<ProviderResponse> {
    throw new ServiceUnavailableException(
      'Anthropic provider not yet enabled — waiting on LLM egress compliance review',
    );
  }
}
