"""This file was generated by xsdata, v24.11, on 2025-07-14 05:12:19

Generator: DataclassGenerator
See: https://xsdata.readthedocs.io/
"""

from dataclasses import dataclass, field
from enum import Enum
from typing import Optional

from nfelib import CommonMixin

__NAMESPACE__ = "http://www.portalfiscal.inf.br/cte"


class DutoClassDuto(Enum):
    VALUE_1 = "1"
    VALUE_2 = "2"
    VALUE_3 = "3"


class DutoTpContratacao(Enum):
    VALUE_0 = "0"
    VALUE_1 = "1"
    VALUE_2 = "2"


@dataclass
class Duto(CommonMixin):
    """
    Informações do modal Dutoviário.

    :ivar vTar: Valor da tarifa
    :ivar dIni: Data de Início da prestação do serviço
    :ivar dFim: Data de Fim da prestação do serviço
    :ivar classDuto: Classificação do Dutoviário Informar: 1 - Gasoduto
        2 - Mineroduto 3 - Oleoduto
    :ivar tpContratacao: Tipo de contratação do serviço de transporte
        (apenas para gasoduto) Informar: 0 - Ponta a ponto 1 -
        Capacidade de Entrada 2 - Capacidade de Saida
    :ivar codPontoEntrada: Código do Ponto de Entrada
    :ivar codPontoSaida: Código do Ponto de Saída
    :ivar nContrato: Número do Contrato de Capacidade
    """

    class Meta:
        name = "duto"
        namespace = "http://www.portalfiscal.inf.br/cte"

    vTar: Optional[str] = field(
        default=None,
        metadata={
            "type": "Element",
            "white_space": "preserve",
            "pattern": r"0\.[1-9]{1}[0-9]{5}|0\.[0-9]{1}[1-9]{1}[0-9]{4}|0\.[0-9]{2}[1-9]{1}[0-9]{3}|0\.[0-9]{3}[1-9]{1}[0-9]{2}|0\.[0-9]{4}[1-9]{1}[0-9]{1}|0\.[0-9]{5}[1-9]{1}|[1-9]{1}[0-9]{0,8}(\.[0-9]{6})?",
        },
    )
    dIni: Optional[str] = field(
        default=None,
        metadata={
            "type": "Element",
            "required": True,
            "white_space": "preserve",
            "pattern": r"(((20(([02468][048])|([13579][26]))-02-29))|(20[0-9][0-9])-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))",
        },
    )
    dFim: Optional[str] = field(
        default=None,
        metadata={
            "type": "Element",
            "required": True,
            "white_space": "preserve",
            "pattern": r"(((20(([02468][048])|([13579][26]))-02-29))|(20[0-9][0-9])-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))",
        },
    )
    classDuto: Optional[DutoClassDuto] = field(
        default=None,
        metadata={
            "type": "Element",
        },
    )
    tpContratacao: Optional[DutoTpContratacao] = field(
        default=None,
        metadata={
            "type": "Element",
        },
    )
    codPontoEntrada: Optional[str] = field(
        default=None,
        metadata={
            "type": "Element",
            "min_length": 2,
            "max_length": 20,
            "white_space": "preserve",
            "pattern": r"[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}",
        },
    )
    codPontoSaida: Optional[str] = field(
        default=None,
        metadata={
            "type": "Element",
            "min_length": 2,
            "max_length": 20,
            "white_space": "preserve",
            "pattern": r"[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}",
        },
    )
    nContrato: Optional[str] = field(
        default=None,
        metadata={
            "type": "Element",
            "min_length": 2,
            "max_length": 20,
            "white_space": "preserve",
            "pattern": r"[!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}",
        },
    )
