class TransferWindowError(Exception):
    """Base exception for transfer-window domain errors."""


class TransferWindowNotFoundError(TransferWindowError):
    pass


class InvalidTransferWindowDatesError(TransferWindowError, ValueError):
    pass


class InvalidTransferWindowStatusError(TransferWindowError):
    pass


class InvalidTransferWindowTypeError(TransferWindowError, ValueError):
    pass


class InvalidTransferWindowNameError(TransferWindowError, ValueError):
    pass


class TransferWindowNameAlreadyExistsError(TransferWindowError):
    pass


class TransferWindowAlreadyOpenError(TransferWindowError):
    pass


class TransferWindowAlreadyClosedError(TransferWindowError):
    pass


class TransferWindowCannotOpenError(TransferWindowError):
    pass


class TransferWindowOverlapError(TransferWindowError):
    pass


class TransferWindowAlreadyCancelledError(TransferWindowError):
    pass


class TransferError(Exception):
    """Base exception for transfer-domain errors."""


class TransferNotFoundError(TransferError):
    pass


class TransferAlreadyExistsError(TransferError):
    pass


class TransferDeniedError(TransferError):
    pass


class TransferApprovalRequiredError(TransferError):
    pass


class TransferAlreadyProcessedError(TransferError):
    pass


class TransferInvalidStatusError(TransferError):
    pass


class TransferNotApprovableError(TransferInvalidStatusError):
    pass


class TransferNotRejectableError(TransferInvalidStatusError):
    pass


class TransferNotCancellableError(TransferInvalidStatusError):
    pass


class TransferCompletionIntegrationRequiredError(TransferError):
    """Completion requires contract/economy/roster orchestration not yet wired."""


class InvalidTransferFeeError(TransferError, ValueError):
    pass


class InvalidTransferRejectionReasonError(TransferError, ValueError):
    pass


class InvalidTransferInternationalFlagError(TransferError, ValueError):
    pass


class TransferCompletionError(TransferError):
    """Base error for atomic cross-domain completion failures."""


class TransferCompletionContractError(TransferCompletionError):
    pass


class TransferCompletionFinancialError(TransferCompletionError):
    pass


class TransferInsufficientFundsError(TransferCompletionFinancialError):
    pass


class TransferWalletUnavailableError(TransferCompletionFinancialError):
    pass
