<?php

namespace DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\Config;

use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\AttributesProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\AvailProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\CategoryProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\DescriptionProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\IdProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\ImagesProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\NameProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\PriceProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\StockProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\PriceCompareCategory;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\PriceCompareConfig;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\PriceCompareCategoryConfig;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Form\CategoriesNokautForm;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\DataProvider\CategoryNokautDataProvider;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\DataProvider\NokautExportMapperDataProvider;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Form\NokautExportMapperForm;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\Categories\NokautCategories;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\UrlProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\PriceCompare\ProductFields\Nokaut\WeightProductField;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Service\Writer\XML\NokautXmlWriter;
class NokautConfig implements PriceCompareConfig, PriceCompareCategoryConfig
{
    public const ID = 'nokaut';
    public const EXTENSION = 'xml';
    private NokautCategories $categories;
    public function __construct(NokautCategories $categories)
    {
        $this->categories = $categories;
    }
    public function get_supported_extension(): string
    {
        return self::EXTENSION;
    }
    public function get_mapper_template_name(): string
    {
        return 'Export/NokautExportMapper';
    }
    public function get_mapper_form_class(): string
    {
        return NokautExportMapperForm::class;
    }
    public function get_mapper_data_provider_class(): string
    {
        return NokautExportMapperDataProvider::class;
    }
    public function is_custom(): bool
    {
        return \false;
    }
    public function get_category_template_name(): string
    {
        return 'Settings/Categories';
    }
    public function get_category_form_class(): string
    {
        return CategoriesNokautForm::class;
    }
    public function get_category_data_provider_class(): string
    {
        return CategoryNokautDataProvider::class;
    }
    public function get_id(): string
    {
        return self::ID;
    }
    public function get_name(): string
    {
        return \esc_html__('Nokaut', 'dropshipping-export-free');
    }
    public function get_writer_class_name(): string
    {
        return NokautXmlWriter::class;
    }
    public function get_category(): PriceCompareCategory
    {
        return $this->categories;
    }
    public function get_supported_fields(): array
    {
        return [IdProductField::class, NameProductField::class, DescriptionProductField::class, PriceProductField::class, StockProductField::class, WeightProductField::class, AvailProductField::class, CategoryProductField::class, ImagesProductField::class, AttributesProductField::class, UrlProductField::class];
    }
}
