<?php
/**
 * LLM Provider Interface
 *
 * @package ZenoChatbot\Contract
 */

namespace ZenoChatbot\Contract;

// Prevent direct access
if (!defined('ABSPATH')) {
    exit;
}

/**
 * Interface for LLM providers
 */
interface LLMProviderInterface {

    /**
     * Send message to LLM API
     *
     * @param string $message User message
     * @param array $context Prepared context data
     * @return array Standardized response format
     * @throws \ZenoChatbot\Exception\LLMException
     */
    public function sendMessage($message, $context = []);

    /**
     * Send message to LLM API with file uploads
     *
     * @param string $message User message
     * @param array $files Array of file data
     * @return array Standardized response format
     * @throws \ZenoChatbot\Exception\LLMException
     */
    public function sendMessageWithFiles($message, $files = []);

    /**
     * Test API connection
     *
     * @return bool
     * @throws \ZenoChatbot\Exception\LLMException
     */
    public function testConnection();

    /**
     * Validate API key format
     *
     * @param string $api_key
     * @return bool
     */
    public function validateApiKey($api_key);

    /**
     * Get provider name
     *
     * @return string
     */
    public function getName();
}
