from enum import Enum


class HTTPMethod(str, Enum):
    """An enum of supported HTTP verbs."""

    GET = "GET"
    POST = "POST"
    PUT = "PUT"
    PATCH = "PATCH"
    DELETE = "DELETE"
    OPTIONS = "OPTIONS"
    HEAD = "HEAD"


class ClientMethod(str, Enum):
    CHARGE_VIA_CARD = "CHARGE_VIA_CARD"
    AUTHORIZE_CARD_CHARGE = "AUTHORIZE_CARD_CHARGE"
    RESEND_CARD_OTP = "RESEND_CARD_OTP"
    CHARGE_VIA_BANK_TRANSFER = "CHARGE_VIA_BANK_TRANSFER"
    CREATE_VIRTUAL_BANK_ACCOUNT = "CRETE_VIRTUAL_BANK_ACCOUNT"
    GET_VIRTUAL_BANK_ACCOUNT = "GET_VIRTUAL_BANK_ACCOUNT"
    GET_VIRTUAL_BANK_ACCOUNT_TRANSACTIONS = "GET_VIRTUAL_BANK_ACCOUNT_TRANSACTIONS"
    CREDIT_SANDBOX_VIRTUAL_BANK_ACCOUNT = "CREDIT_SANDBOX_VIRTUAL_BANK_ACCOUNT"
    CHARGE_VIA_MOBILE_MONEY = "CHARGE_VIA_MOBILE_MONEY"
    AUTHORIZE_MOBILE_MONEY_CHARGE = "AUTHORIZE_MOBILE_MONEY_CHARGE"
    RESEND_MOBILE_MONEY_OTP = "RESEND_MOBILE_MONEY_OTP"
    RESEND_STK = "RESEND_STK"
    AUTHORIZE_STK = "AUTHORIZE_STK"
    INITIATE_CHARGE = "INITIATE_CHARGE"
    GET_CHARGE = "GET_CHARGE"
    RESOLVE_BANK_ACCOUNT = "RESOLVE_BANK_ACCOUNT"
    GET_BALANCES = "GET_BALANCES"
    GET_BANKS = "GET_BANKS"
    GET_MMO = "GET_MMO"
    PAYOUT_TO_BANK_ACCOUNT = "PAYOUT_TO_BANK_ACCOUNT"
    PAYOUT_TO_MOBILE_MONEY = "PAYOUT_TO_MOBILE_MONEY"
    BULK_PAYOUT_TO_BANK_ACCOUNT = "BULK_PAYOUT_TO_BANK_ACCOUNT"
    GET_PAYOUTS = "GET_PAYOUTS"
    GET_BULK_TRANSACTION = "GET_BULK_TRANSACTION"
    VERIFY_PAYOUT_TRANSACTION = "VERIFY_PAYOUT_TRANSACTION"
