"""
Capital-related enums for Backpack Exchange SDK.
"""

from enum import Enum


class DepositStatus(Enum):
    """Deposit status."""
    CANCELLED = "cancelled"
    CONFIRMED = "confirmed"
    DECLINED = "declined"
    EXPIRED = "expired"
    INITIATED = "initiated"
    OWNERSHIP_VERIFICATION_REQUIRED = "ownershipVerificationRequired"
    PENDING = "pending"
    REFUNDED = "refunded"
    SENDER_VERIFICATION_COMPLETED = "senderVerificationCompleted"
    SENDER_VERIFICATION_REQUIRED = "senderVerificationRequired"


class WithdrawalStatus(Enum):
    """Withdrawal status."""
    CONFIRMED = "confirmed"
    OWNERSHIP_VERIFICATION_REQUIRED = "ownershipVerificationRequired"
    PENDING = "pending"
    RECIPIENT_INFORMATION_PROVIDED = "recipientInformationProvided"
    RECIPIENT_INFORMATION_REQUIRED = "recipientInformationRequired"


class DepositSource(Enum):
    """Deposit source."""
    ADMINISTRATOR = "administrator"
    ZERO_G = "0G"
    APTOS = "aptos"
    ARBITRUM = "arbitrum"
    AVALANCHE = "avalanche"
    BASE = "base"
    BERACHAIN = "berachain"
    BITCOIN = "bitcoin"
    BITCOIN_CASH = "bitcoinCash"
    BSC = "bsc"
    CARDANO = "cardano"
    DOGECOIN = "dogecoin"
    ECLIPSE = "eclipse"
    ETHEREUM = "ethereum"
    FOGO = "fogo"
    HYPER_EVM = "hyperEVM"
    HYPERLIQUID = "hyperliquid"
    LINEA = "linea"
    LITECOIN = "litecoin"
    MONAD = "monad"
    NEAR = "near"
    OPTIMISM = "optimism"
    PLASMA = "plasma"
    POLYGON = "polygon"
    SEI = "sei"
    STABLE = "stable"
    SOLANA = "solana"
    STORY = "story"
    SUI = "sui"
    TRON = "tron"
    XRP = "xRP"
    ZCASH = "zcash"
    EQUALS_MONEY = "equalsMoney"
    BANXA = "banxa"
    INTERNAL = "internal"


class FiatAsset(Enum):
    """Supported fiat assets."""
    AED = "AED"
    AUD = "AUD"
    BGN = "BGN"
    BHD = "BHD"
    CAD = "CAD"
    CHF = "CHF"
    CNH = "CNH"
    CNY = "CNY"
    CZK = "CZK"
    DKK = "DKK"
    EUR = "EUR"
    GBP = "GBP"
    HKD = "HKD"
    HUF = "HUF"
    ILS = "ILS"
    JOD = "JOD"
    JPY = "JPY"
    KES = "KES"
    KWD = "KWD"
    MUR = "MUR"
    MXN = "MXN"
    NOK = "NOK"
    NZD = "NZD"
    OMR = "OMR"
    PLN = "PLN"
    QAR = "QAR"
    RON = "RON"
    SAR = "SAR"
    SEK = "SEK"
    SGD = "SGD"
    THB = "THB"
    TND = "TND"
    TRY = "TRY"
    USD = "USD"
    ZAR = "ZAR"
    ZMW = "ZMW"


class EqualsMoneyWithdrawalState(Enum):
    """EqualsMoney withdrawal state."""
    INITIALIZED = "initialized"
    PENDING = "pending"
    FULFILLING = "fulfilling"
    PROCESSING = "processing"
    COMPLETE = "complete"
    DECLINED = "declined"
    CANCELLED = "cancelled"
    REVIEW = "review"
    AWAITING_DOCUMENTS = "awaitingDocuments"
    AWAITING_COMPLIANCE_QUESTIONS = "awaitingComplianceQuestions"
    REFUNDED_INTERNAL = "refundedInternal"
    REFUNDED_EXTERNAL = "refundedExternal"


class SettlementSource(Enum):
    """Settlement source."""
    TRADING_FEES = "TradingFees"
    TRADING_FEES_SYSTEM = "TradingFeesSystem"
    FUNDING_PAYMENT = "FundingPayment"
    CULLED_BORROW_INTEREST = "CulledBorrowInterest"
    CULLED_REALIZE_PNL_AUTO = "CulledRealizePnlAuto"
    CULLED_REALIZE_PNL_BOOK_UTILISATION = "CulledRealizePnlBookUtilisation"
    CULLED_REALIZE_PNL_ACCOUNT_THRESHOLD = "CulledRealizePnlAccountThreshold"
    CULLED_REALIZE_PNL_SYSTEM_THRESHOLD = "CulledRealizePnlSystemThreshold"
    REALIZE_PNL = "RealizePnl"
    BACKSTOP_PROVIDER_LIQUIDATION = "BackstopProviderLiquidation"
    BACKSTOP_ADL_LIQUIDATION = "BackstopAdlLiquidation"
    BACKSTOP_LIQUIDITY_FUND_PROCEEDS = "BackstopLiquidityFundProceeds"
    SYSTEM_LIABILITY_TRANSFER = "SystemLiabilityTransfer"


class CustodyAsset(Enum):
    """Custody asset enum values."""
    BTC = "BTC"
    ETH = "ETH"
    SOL = "SOL"
    USDC = "USDC"
    USDT = "USDT"
    PYTH = "PYTH"
    JTO = "JTO"
    BONK = "BONK"
    HNT = "HNT"
    MOBILE = "MOBILE"
    WIF = "WIF"
    JUP = "JUP"
    RENDER = "RENDER"
    WEN = "WEN"
    W = "W"
    TNSR = "TNSR"
    PRCL = "PRCL"
    SHARK = "SHARK"
    KMNO = "KMNO"
    MEW = "MEW"
    BOME = "BOME"
    RAY = "RAY"
    HONEY = "HONEY"
    SHFL = "SHFL"
    BODEN = "BODEN"
    IO = "IO"
    DRIFT = "DRIFT"
    PEPE = "PEPE"
    SHIB = "SHIB"
    LINK = "LINK"
    UNI = "UNI"
    ONDO = "ONDO"
    FTM = "FTM"
    MATIC = "MATIC"
    STRK = "STRK"
    BLUR = "BLUR"
    WLD = "WLD"
    GALA = "GALA"
    NYAN = "NYAN"
    HLG = "HLG"
    MON = "MON"
    ZKJ = "ZKJ"
    MANEKI = "MANEKI"
    HABIBI = "HABIBI"
    UNA = "UNA"
    ZRO = "ZRO"
    ZEX = "ZEX"
    AAVE = "AAVE"
    LDO = "LDO"
    MOTHER = "MOTHER"
    CLOUD = "CLOUD"
    MAX = "MAX"
    POL = "POL"
    TRUMPWIN = "TRUMPWIN"
    HARRISWIN = "HARRISWIN"
    MOODENG = "MOODENG"
    DBR = "DBR"
    GOAT = "GOAT"
    ACT = "ACT"
    DOGE = "DOGE"
    BCH = "BCH"
    LTC = "LTC"
    APE = "APE"
    ENA = "ENA"
    ME = "ME"
    EIGEN = "EIGEN"
    CHILLGUY = "CHILLGUY"
    PENGU = "PENGU"
    EUR = "EUR"
    SONIC = "SONIC"
    J = "J"
    TRUMP = "TRUMP"
    MELANIA = "MELANIA"
    ANIME = "ANIME"
    XRP = "XRP"
    SUI = "SUI"
    VINE = "VINE"
    ADA = "ADA"
    MOVE = "MOVE"
    BERA = "BERA"
    IP = "IP"
    HYPE = "HYPE"
    BNB = "BNB"
    KAITO = "KAITO"
    KPEPE = "kPEPE"
    KBONK = "kBONK"
    KSHIB = "kSHIB"
    AVAX = "AVAX"
    S = "S"
    POINTS = "POINTS"
    ROAM = "ROAM"
    AI16Z = "AI16Z"
    LAYER = "LAYER"
    FARTCOIN = "FARTCOIN"
    NEAR = "NEAR"
    PNUT = "PNUT"
    ARB = "ARB"
    DOT = "DOT"
    APT = "APT"
    OP = "OP"
    PYUSD = "PYUSD"
    HUMA = "HUMA"
    WAL = "WAL"
    DEEP = "DEEP"
    CETUS = "CETUS"
    SEND = "SEND"
    BLUE = "BLUE"
    NS = "NS"
    HAEDAL = "HAEDAL"
    JPY = "JPY"
    TAO = "TAO"
    VIRTUAL = "VIRTUAL"
    TIA = "TIA"
    TRX = "TRX"
    FRAG = "FRAG"
    PUMP = "PUMP"
    WCT = "WCT"
    ES = "ES"
    SEI = "SEI"
    CRV = "CRV"
    TON = "TON"
    BPUSD = "BPUSD"
    HBAR = "HBAR"
    XLM = "XLM"
    ZORA = "ZORA"
    WLFI = "WLFI"
    BPEUR = "BPEUR"
    SWTCH = "SWTCH"
    LINEA = "LINEA"
    XPL = "XPL"
    BARD = "BARD"
    FLOCK = "FLOCK"
    AVNT = "AVNT"
    PENDLE = "PENDLE"
    AERO = "AERO"
    ASTER = "ASTER"
    GLXY = "GLXY"
    ZERO_G = "0G"
    TWO_Z = "2Z"
    FWDI = "FWDI"
    ZEUS = "ZEUS"
    APEX = "APEX"
    EDEN = "EDEN"
    FF = "FF"
    ORDER = "ORDER"
    MNT = "MNT"
    ZEC = "ZEC"
    PAXG = "PAXG"
    MORPHO = "MORPHO"
    ATH = "ATH"
    KGEN = "KGEN"
    XAUT = "XAUT"
    FOGO = "FOGO"
    SPX = "SPX"
    ETHFI = "ETHFI"
    APR = "APR"
    PIPE = "PIPE"
    MET = "MET"
    MONP = "MONP"
    STABLE = "STABLE"
    GUSDT = "GUSDT"
    BTCD121025 = "BTCD121025"
    BTCD121125 = "BTCD121125"
    BTCD121225 = "BTCD121225"
    SOLWP011526A160 = "SOLWP011526A160"
    SOLD121125 = "SOLD121125"
    SOLD121225 = "SOLD121225"
    BTCW12122590000 = "BTCW12122590000"
    BTCW12122591000 = "BTCW12122591000"
    BTCW12122592000 = "BTCW12122592000"
    BTCW12122593000 = "BTCW12122593000"
    BTCW12122594000 = "BTCW12122594000"
    BTCW12122595000 = "BTCW12122595000"
    BTCW121225100000 = "BTCW121225100000"
    SOLW121225140000 = "SOLW121225140000"
    SOLW121225145000 = "SOLW121225145000"
    SOLW121225150000 = "SOLW121225150000"
    SOLW121225155000 = "SOLW121225155000"
    SOLW121225160000 = "SOLW121225160000"
    SOLW121225165000 = "SOLW121225165000"
    SOLW121225170000 = "SOLW121225170000"
    BTCM1225130000 = "BTCM1225130000"
    BTCM1225140000 = "BTCM1225140000"
    BTCM1225150000 = "BTCM1225150000"
    BTCM1225160000 = "BTCM1225160000"
    BTCM1225170000 = "BTCM1225170000"
    BTCM1225200000 = "BTCM1225200000"
    BTCM1225500000 = "BTCM1225500000"
    BTCM12251000000 = "BTCM12251000000"
    SOLDUD011226 = "SOLDUD011226"
    BTCDUD011326 = "BTCDUD011326"
    SOLDUD011326 = "SOLDUD011326"
    BTCDUD011426 = "BTCDUD011426"
    SOLDUD011426 = "SOLDUD011426"
    BTCDUD011526 = "BTCDUD011526"
    SOLDUD011526 = "SOLDUD011526"
    SOLWP011526U120 = "SOLWP011526U120"
    SOLWP011526T120 = "SOLWP011526T120"
    SOLWP011526T130 = "SOLWP011526T130"
    SOLWP011526T140 = "SOLWP011526T140"
    SOLWP011526T150 = "SOLWP011526T150"
    DEMS28NEWSOM = "DEMS28NEWSOM"
    DEMS28AOC = "DEMS28AOC"
    DEMS28BUTTIGIEG = "DEMS28BUTTIGIEG"
    DEMS28SHAPIRO = "DEMS28SHAPIRO"
    DEMS28KELLY = "DEMS28KELLY"
    DEMS28OSSOFF = "DEMS28OSSOFF"
    DEMS28KAMALA = "DEMS28KAMALA"
    DEMS28MOORE = "DEMS28MOORE"
    DEMS28PRITZKER = "DEMS28PRITZKER"
    DEMS28BESHEAR = "DEMS28BESHEAR"
    DEMS28WHITMER = "DEMS28WHITMER"
    DEMS28THEROCK = "DEMS28THEROCK"
    DEMS28EMANUEL = "DEMS28EMANUEL"
    DEMS28MAMDANI = "DEMS28MAMDANI"
    LIT = "LIT"
    FOMC0126H0 = "FOMC0126H0"
    FOMC0126C25 = "FOMC0126C25"
    FOMC0126C50P = "FOMC0126C50P"
    FOMC0126H25P = "FOMC0126H25P"
    BTCWP011526U84 = "BTCWP011526U84"
    BTCWP011526T84 = "BTCWP011526T84"
    BTCWP011526T89 = "BTCWP011526T89"
    BTCWP011526T94 = "BTCWP011526T94"
    BTCWP011526T99 = "BTCWP011526T99"
    BTCWP011526A104 = "BTCWP011526A104"
    BTCDUD011026 = "BTCDUD011026"
    SOLDUD011026 = "SOLDUD011026"
    BTCDUD011126 = "BTCDUD011126"
    SOLDUD011126 = "SOLDUD011126"
    BTCDUD011226 = "BTCDUD011226"
    WHITEWHALE = "WHITEWHALE"
    INX = "INX"
    SKR = "SKR"
    XMR = "XMR"
