"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from dataclasses import dataclass
from typing import Callable, Dict, Optional, Tuple, Union

from pydantic import Field

from anncsu.common.sdk.httpclient import AsyncHttpClient, HttpClient
from anncsu.common.sdk.types import UNSET, OptionalNullable
from anncsu.common.sdk.utils import Logger, RetryConfig, remove_suffix

from . import models
from ._version import (
    __gen_version__,
    __openapi_doc_version__,
    __user_agent__,
    __version__,
)

SERVERS = [
    "https://modipa.agenziaentrate.it/govway/rest/in/AgenziaEntrate/anncsuaccessi/v1",
    # l'accesso all'API e' protetta dai controlli di accesso su GovWay
    "https://modipa-val.agenziaentrate.it/govway/rest/in/AgenziaEntrate/anncsuaccessi/v1",
    # l'accesso alle API di validazione e' protetta dai controlli di accesso su GovWay
]
"""Contains the list of servers available to the SDK"""


@dataclass
class SDKConfiguration:
    client: Union[HttpClient, None]
    client_supplied: bool
    async_client: Union[AsyncHttpClient, None]
    async_client_supplied: bool
    debug_logger: Logger
    security: Optional[Union[models.Security, Callable[[], models.Security]]] = None
    server_url: Optional[str] = ""
    server_idx: Optional[int] = 0
    language: str = "python"
    openapi_doc_version: str = __openapi_doc_version__
    sdk_version: str = __version__
    gen_version: str = __gen_version__
    user_agent: str = __user_agent__
    retry_config: OptionalNullable[RetryConfig] = Field(default_factory=lambda: UNSET)
    timeout_ms: Optional[int] = None

    def get_server_details(self) -> Tuple[str, Dict[str, str]]:
        if self.server_url is not None and self.server_url:
            return remove_suffix(self.server_url, "/"), {}
        if self.server_idx is None:
            self.server_idx = 0

        return SERVERS[self.server_idx], {}
