<?php
/**
 * Balanced and premium OpenAI vision models — Pro overlay only.
 *
 * Secure design (rafter-secure-design / auth):
 * - Identity: site admin configuring generation.
 * - AuthZ: This file is absent from the wordpress.org Lite zip. Lite only
 *   registers budget models. Presence of the overlay + a valid license
 *   unlocks these IDs. A license filter flip without this file cannot
 *   add models that are not shipped.
 *
 * @package AIAltTextGenerator
 * @since 2.5.3
 */

namespace AIAltTextGenerator;

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

/**
 * Extra OpenAI model groups. Not loaded in Lite.
 *
 * @since 2.5.3
 */
final class PremiumOpenAiModels {

	/**
	 * @param array<string, array{label: string, models: array<string, string>}> $groups
	 * @param array<string, mixed>                                              $settings
	 * @return array<string, array{label: string, models: array<string, string>}>
	 */
	public static function mergeGroups( array $groups, array $settings = [] ): array {
		unset( $settings );

		$groups['balanced'] = [
			'label'  => __( 'Balanced', 'wppowersuite-lite' ),
			'models' => [
				'gpt-4.1-mini' => __( 'GPT-4.1 Mini — sharper descriptions, still efficient', 'wppowersuite-lite' ),
				'gpt-5-mini'   => __( 'GPT-5 Mini — strong quality for WooCommerce and SEO context', 'wppowersuite-lite' ),
				'gpt-5.4-mini' => __( 'GPT-5.4 Mini — fast with improved vision accuracy', 'wppowersuite-lite' ),
			],
		];
		$groups['premium'] = [
			'label'  => __( 'Premium (complex images)', 'wppowersuite-lite' ),
			'models' => [
				'gpt-4.1' => __( 'GPT-4.1 — detailed or SEO-focused alt text', 'wppowersuite-lite' ),
				'gpt-4o'  => __( 'GPT-4o — highest fidelity for busy scenes', 'wppowersuite-lite' ),
				'gpt-5.4' => __( 'GPT-5.4 — advanced reasoning for complex images', 'wppowersuite-lite' ),
				'gpt-5.5' => __( 'GPT-5.5 — highest quality descriptions', 'wppowersuite-lite' ),
				'o4-mini' => __( 'o4-mini — screenshots and images with small text', 'wppowersuite-lite' ),
			],
		];

		return $groups;
	}
}
