<?php
namespace EasyChat\Library\Messenger\Marketplace;







final class MarketplaceProviderCatalog {
    private const PROVIDERS = [
        'wildberries' => [
            'title' => 'Wildberries',
            'short' => 'WB',
            'brand_class' => 'wb',
            'brand_text' => 'WB',
            'credential_fields' => ['api_token'],
            'description' => 'Чаты покупателей, вопросы, отзывы и заявки на возврат в едином окне.',
            'credential_hint' => 'Нужен Personal token с категориями Buyers Chat, Feedbacks and Questions и Buyers Returns.',
            'docs_url' => 'https://docs.easychat24.ru/docs/integrations/wildberries/',
            'empty_text' => 'Добавьте первый кабинет Wildberries. EasyChat проверит права токена и включит доступные обращения.',
            'webhook_mode' => 'polling',
        ],
        'ozon' => [
            'title' => 'Ozon',
            'short' => 'Ozon',
            'brand_class' => 'ozon',
            'brand_text' => 'O',
            'credential_fields' => ['client_id', 'api_key'],
            'description' => 'Чаты, вопросы, отзывы и возвраты с быстрыми уведомлениями и резервной сверкой.',
            'credential_hint' => 'Нужны Client ID и API key с правами Chat и соответствующими методами коммуникаций.',
            'docs_url' => 'https://docs.easychat24.ru/docs/integrations/ozon/',
            'empty_text' => 'Добавьте первый кабинет Ozon. EasyChat проверит Seller API и настроит доступные обращения.',
            'webhook_mode' => 'automatic',
        ],
        'yandex_market' => [
            'title' => 'Яндекс Маркет',
            'short' => 'Маркет',
            'brand_class' => 'yandex-market',
            'brand_text' => '',
            'brand_asset' => 'assets/marketplace/yandex-market.svg',
            'credential_fields' => ['api_key'],
            'description' => 'Чаты покупателей, вопросы и отзывы Маркета с быстрыми уведомлениями и обязательной сверкой.',
            'credential_hint' => 'Нужен API-Key кабинета с доступом communication. Дополнительные права на заказы не обязательны.',
            'docs_url' => 'https://docs.easychat24.ru/docs/integrations/yandex-market/',
            'empty_text' => 'Добавьте кабинет Маркета. EasyChat проверит business, магазины и доступ к коммуникациям.',
            'webhook_mode' => 'manual',
        ],
    ];

    public static function all(): array {
        return self::PROVIDERS;
    }

    public static function get(string $provider): array {
        $provider = self::normalize($provider);
        return self::PROVIDERS[$provider] ?? [];
    }

    public static function codes(): array {
        return array_keys(self::PROVIDERS);
    }

    public static function has(string $provider): bool {
        return self::normalize($provider) !== '';
    }

    public static function credentialFields(string $provider): array {
        $definition = self::get($provider);
        return is_array($definition['credential_fields'] ?? null)
            ? $definition['credential_fields']
            : [];
    }

    public static function normalize(string $provider): string {
        $provider = strtolower(preg_replace('/[^a-z0-9_\-]/i', '', trim($provider)));
        return isset(self::PROVIDERS[$provider]) ? $provider : '';
    }
}
