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

/**
 * OpenAI provider 占位实现（PR3）。
 *
 * 同 AnthropicProvider —— 法务合规 + API key 双门控才启用。
 */
@Injectable()
export class OpenAIProvider implements ModelProvider {
  readonly name = 'openai';
  readonly supportedModels = ['gpt-4o', 'gpt-4o-mini', 'o1-preview'] as const;

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

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