Source code for artifacts.domains.bank

"""Bank domain -- gold and item deposits/withdrawals."""

from __future__ import annotations

from ..cooldown import _auto_cooldown
from ..models.common import SimpleItemSchema
from ..models.responses import (
    BankExtensionTransactionSchema,
    BankGoldTransactionSchema,
    BankItemTransactionSchema,
)
from ._base import CharacterDomain


[docs] class BankDomain(CharacterDomain): """Manage bank operations. Accessed via ``character.bank``:: await char.bank.deposit_gold(quantity=500) await char.bank.withdraw_items(items=[SimpleItemSchema(code="iron_ore", quantity=10)]) await char.bank.buy_expansion() """
[docs] @_auto_cooldown async def deposit_gold(self, *, quantity: int) -> BankGoldTransactionSchema: """Deposit gold into the bank.""" return await self._http.post_model( f"{self._base}/bank/deposit/gold", BankGoldTransactionSchema, json={"quantity": quantity}, )
[docs] @_auto_cooldown async def withdraw_gold(self, *, quantity: int) -> BankGoldTransactionSchema: """Withdraw gold from the bank.""" return await self._http.post_model( f"{self._base}/bank/withdraw/gold", BankGoldTransactionSchema, json={"quantity": quantity}, )
[docs] @_auto_cooldown async def deposit_items( self, items: list[SimpleItemSchema] ) -> BankItemTransactionSchema: """Deposit items into the bank.""" return await self._http.post_model( f"{self._base}/bank/deposit/item", BankItemTransactionSchema, json=[i.model_dump() for i in items], )
[docs] @_auto_cooldown async def withdraw_items( self, items: list[SimpleItemSchema] ) -> BankItemTransactionSchema: """Withdraw items from the bank.""" return await self._http.post_model( f"{self._base}/bank/withdraw/item", BankItemTransactionSchema, json=[i.model_dump() for i in items], )
[docs] @_auto_cooldown async def buy_expansion(self) -> BankExtensionTransactionSchema: """Purchase a 20-slot bank expansion.""" return await self._http.post_model( f"{self._base}/bank/buy_expansion", BankExtensionTransactionSchema, )