<?php

namespace Limb_Chatbot\Includes\Interfaces;

/**
 * Interface Chat_Export_Formatter_Interface
 *
 * Defines the contract for chat export format strategies.
 * Implements Strategy Pattern for different export formats (CSV, JSON, PDF).
 *
 * @package Limb_Chatbot\Includes\Interfaces
 * @since 1.0.0
 */
interface Chat_Export_Formatter_Interface {

	/**
	 * Format the chat data into the target format.
	 *
	 * @param array $export_data Structured export data containing chatbot info and conversations.
	 *
	 * @return string The formatted output content.
	 */
	public function format( array $export_data ): string;

	/**
	 * Get the MIME content type for the format.
	 *
	 * @return string The MIME type (e.g., 'application/json', 'text/csv', 'application/pdf').
	 */
	public function get_content_type(): string;

	/**
	 * Get the file extension for the format.
	 *
	 * @return string The file extension without dot (e.g., 'json', 'csv', 'pdf').
	 */
	public function get_file_extension(): string;

	/**
	 * Get the format type identifier.
	 *
	 * @return string The format type string (e.g., 'json', 'csv', 'pdf').
	 */
	public function get_type(): string;
}

