<?php
/**
 * AI provider interface — all providers (OpenAI, Gemini, Perplexity) implement this.
 *
 * @package WPLens
 */

namespace WPLens\AI;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

interface Provider {

	public function get_slug(): string;

	public function get_label(): string;

	public function is_configured(): bool;

	public function supports_citation_check(): bool;

	/**
	 * Run a text generation request.
	 *
	 * @param string               $system_prompt
	 * @param string               $user_prompt
	 * @param array<string, mixed> $opts
	 */
	public function generate( string $system_prompt, string $user_prompt, array $opts = array() ): GenerationResult;

	/**
	 * Check whether a target domain is cited for a given query.
	 */
	public function check_citation( string $query, string $target_domain ): CitationResult;
}
