from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from collections.abc import Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class PaymentMethod(_message.Message):
    __slots__ = ("id", "name", "default", "country", "sepa_transfer", "swift_transfer", "crypto_transfer", "neft_transfer", "ach_transfer")
    class TransferSEPA(_message.Message):
        __slots__ = ("iban",)
        IBAN_FIELD_NUMBER: _ClassVar[int]
        iban: str
        def __init__(self, iban: _Optional[str] = ...) -> None: ...
    class TransferSWIFT(_message.Message):
        __slots__ = ("bic_code", "account_number")
        BIC_CODE_FIELD_NUMBER: _ClassVar[int]
        ACCOUNT_NUMBER_FIELD_NUMBER: _ClassVar[int]
        bic_code: str
        account_number: str
        def __init__(self, bic_code: _Optional[str] = ..., account_number: _Optional[str] = ...) -> None: ...
    class TransferNEFT(_message.Message):
        __slots__ = ("account_number", "ifsc_code")
        ACCOUNT_NUMBER_FIELD_NUMBER: _ClassVar[int]
        IFSC_CODE_FIELD_NUMBER: _ClassVar[int]
        account_number: str
        ifsc_code: str
        def __init__(self, account_number: _Optional[str] = ..., ifsc_code: _Optional[str] = ...) -> None: ...
    class TransferACH(_message.Message):
        __slots__ = ("routing_number", "account_number")
        ROUTING_NUMBER_FIELD_NUMBER: _ClassVar[int]
        ACCOUNT_NUMBER_FIELD_NUMBER: _ClassVar[int]
        routing_number: str
        account_number: str
        def __init__(self, routing_number: _Optional[str] = ..., account_number: _Optional[str] = ...) -> None: ...
    class TransferCrypto(_message.Message):
        __slots__ = ("token", "network", "address")
        TOKEN_FIELD_NUMBER: _ClassVar[int]
        NETWORK_FIELD_NUMBER: _ClassVar[int]
        ADDRESS_FIELD_NUMBER: _ClassVar[int]
        token: str
        network: str
        address: str
        def __init__(self, token: _Optional[str] = ..., network: _Optional[str] = ..., address: _Optional[str] = ...) -> None: ...
    ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DEFAULT_FIELD_NUMBER: _ClassVar[int]
    COUNTRY_FIELD_NUMBER: _ClassVar[int]
    SEPA_TRANSFER_FIELD_NUMBER: _ClassVar[int]
    SWIFT_TRANSFER_FIELD_NUMBER: _ClassVar[int]
    CRYPTO_TRANSFER_FIELD_NUMBER: _ClassVar[int]
    NEFT_TRANSFER_FIELD_NUMBER: _ClassVar[int]
    ACH_TRANSFER_FIELD_NUMBER: _ClassVar[int]
    id: str
    name: str
    default: bool
    country: str
    sepa_transfer: PaymentMethod.TransferSEPA
    swift_transfer: PaymentMethod.TransferSWIFT
    crypto_transfer: PaymentMethod.TransferCrypto
    neft_transfer: PaymentMethod.TransferNEFT
    ach_transfer: PaymentMethod.TransferACH
    def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., default: bool = ..., country: _Optional[str] = ..., sepa_transfer: _Optional[_Union[PaymentMethod.TransferSEPA, _Mapping]] = ..., swift_transfer: _Optional[_Union[PaymentMethod.TransferSWIFT, _Mapping]] = ..., crypto_transfer: _Optional[_Union[PaymentMethod.TransferCrypto, _Mapping]] = ..., neft_transfer: _Optional[_Union[PaymentMethod.TransferNEFT, _Mapping]] = ..., ach_transfer: _Optional[_Union[PaymentMethod.TransferACH, _Mapping]] = ...) -> None: ...
