"""This file was generated by xsdata, v24.2.1, on 2024-02-24 11:16:42

Generator: DataclassGenerator
See: https://xsdata.readthedocs.io/
"""
from dataclasses import dataclass, field
from nfelib import CommonMixin
from typing import Optional
from nfelib.mdfe_dist_dfe.bindings.v1_0.tipos_dist_dfe_v1_00 import TverDistDfe
from nfelib.mdfe_dist_dfe.bindings.v1_0.tipos_geral_mdfe_v1_00 import Tamb

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


@dataclass
class DistDfeInt(CommonMixin):
    """
    Schema de pedido de distribuição de DF-e de interesse.

    :ivar tpAmb: Identificação do Ambiente: 1 - Produção 2 - Homologação
    :ivar CNPJ: CNPJ do interessado no DF-e
    :ivar CPF: CPF do interessado no DF-e
    :ivar distNSU: Grupo para distribuir DF-e de interesse
    :ivar consNSU: Grupo para consultar um DF-e a partir de um NSU
        específico
    :ivar versao:
    """

    class Meta:
        name = "distDFeInt"
        namespace = "http://www.portalfiscal.inf.br/mdfe"

    tpAmb: Optional[Tamb] = field(
        default=None,
        metadata={
            "type": "Element",
            "required": True,
        },
    )
    CNPJ: Optional[str] = field(
        default=None,
        metadata={
            "type": "Element",
            "white_space": "preserve",
            "pattern": r"[0-9]{14}",
        },
    )
    CPF: Optional[str] = field(
        default=None,
        metadata={
            "type": "Element",
            "white_space": "preserve",
            "pattern": r"[0-9]{11}",
        },
    )
    distNSU: Optional["DistDfeInt.DistNsu"] = field(
        default=None,
        metadata={
            "type": "Element",
        },
    )
    consNSU: Optional["DistDfeInt.ConsNsu"] = field(
        default=None,
        metadata={
            "type": "Element",
        },
    )
    versao: Optional[TverDistDfe] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )

    @dataclass
    class DistNsu(CommonMixin):
        """
        :ivar ultNSU: Último NSU recebido pelo ator. Caso seja informado
            com zero, ou com um NSU muito antigo, a consulta retornará
            unicamente as informações resumidas e documentos fiscais
            eletrônicos que tenham sido recepcionados pelo Ambiente
            Nacional nos últimos 3 meses.
        """

        ultNSU: Optional[str] = field(
            default=None,
            metadata={
                "type": "Element",
                "required": True,
                "pattern": r"[0-9]{15}",
            },
        )

    @dataclass
    class ConsNsu(CommonMixin):
        """
        :ivar NSU: Número Sequencial Único. Geralmente esta consulta
            será utilizada quando identificado pelo interessado um NSU
            faltante. O Web Service retornará o documento ou informará
            que o NSU não existe no Ambiente Nacional. Assim, esta
            consulta fechará a lacuna do NSU identificado como faltante.
        """

        NSU: Optional[str] = field(
            default=None,
            metadata={
                "type": "Element",
                "required": True,
                "pattern": r"[0-9]{15}",
            },
        )
