"""TypeID implementation with type + domain + id.

Type-safe, K-sortable, globally unique identifier inspired by Stripe IDs.

Here is an example of a TypeID of type `resource` in domain `domain1`:

    resource_domain1_2x4y6z8a0b1c2d3e4f5g6h7j8k
    └──────┘ └─────┘ └────────────────────────┘
      type    domain    uuid suffix (base32)
"""

from .exceptions import (
    DomainValidationException,
    InvalidTypeIDStringException,
    SuffixValidationException,
    TypeIDException,
    TypeValidationException,
)
from .pydantic import TypeIdType, typeid_validator
from .typeid import TypeID

__all__ = [
    "TypeID",
    "TypeIdType",
    "typeid_validator",
    "DomainValidationException",
    "InvalidTypeIDStringException",
    "SuffixValidationException",
    "TypeIDException",
    "TypeValidationException",
]
