import type {
  ILlmProvider,
  NutritionExtractionResult,
  ParsedRecipe,
  ParsedReceipt,
  MealPlanContext,
  MealPlanSuggestion,
  StructuredAction,
} from './llm-provider.interface.js';

export class NoOpLlmProvider implements ILlmProvider {
  private warn(method: string): void {
    console.warn(`[NoOpLlmProvider] ${method} called but no LLM provider is configured.`);
  }

  public async extractNutrition(_input: {
    text?: string;
    image?: Buffer;
  }): Promise<NutritionExtractionResult | null> {
    this.warn('extractNutrition');
    return null;
  }

  public async parseRecipe(_text: string): Promise<ParsedRecipe | null> {
    this.warn('parseRecipe');
    return null;
  }

  public async parseRecipeFromUrl(_url: string): Promise<ParsedRecipe | null> {
    this.warn('parseRecipeFromUrl');
    return null;
  }

  public async parseReceipt(_image: Buffer): Promise<ParsedReceipt | null> {
    this.warn('parseReceipt');
    return null;
  }

  public async suggestMealPlan(_context: MealPlanContext): Promise<MealPlanSuggestion | null> {
    this.warn('suggestMealPlan');
    return null;
  }

  public async parseNaturalLanguage(_text: string): Promise<StructuredAction | null> {
    this.warn('parseNaturalLanguage');
    return null;
  }
}
