from application.model.configuration import (
    DefaultManagerConfig,
    CatalogConfigurations,
    MediaConfigurations
)
from application.model.configuration import UserConfigurations
from typing import Dict, Union


class Configurations(object):
    def __init__(
            self,
            required_services=None,     # type: str
            service_name=None,          # type: str
            persistence_name=None,      # type: str
            store_id=None,              # type: str
            base_url=None,              # type: str
            api_key=None,               # type: str
            backup_directory=None,      # type: str
            updaters=None,              # type: Dict[str, Union[DefaultManagerConfig, CatalogConfigurations, MediaConfigurations, UserConfigurations, BinaryConfigurations]] # noqa
            backoffice_urls=None,       # type: str
            replace_demo_info=True,     # type: bool
            chrome_urls=None,           # type: Dict[str]
            path_to_catalog_json=None,  # type: str
        ):
        # type: (...) -> None

        self.required_services = required_services
        self.service_name = service_name
        self.persistence_name = persistence_name
        self.store_id = store_id
        self.base_url = base_url
        self.api_key = api_key
        self.backup_directory = backup_directory
        self.updaters = updaters
        self.backoffice_urls = backoffice_urls
        self.replace_demo_info = replace_demo_info
        self.chrome_urls = chrome_urls
        self.path_to_catalog_json = path_to_catalog_json
