from .. import Money, Value

class Wallet:
    bank_notes: dict[Money, int]

    def __init__(self, bank_notes: dict[Money, int]) -> None: ...
    def withdraw_py(self, amount: list[Money]): ...
    def deposit_py(self, amount: list[Money]): ...
    def total_money_py(self) -> Value: ...
    def propose_bill_combinations_py(
        self, amount: Value, also_suggest_smaller_values: bool
    ) -> list[tuple[Value, list[Money]]]: ...
    def can_afford_py(self, payment_amount: list[Money]) -> Affordability: ...

class Affordability:
    class Exact(Affordability):
        money_list: list[Money]
        def __init__(self, money_list: list[Money]) -> None: ...
        __match_args__ = ("money_list",)

    class Alternative(Affordability):
        money_list: list[Money]
        def __init__(self, money_list: list[Money]) -> None: ...
        __match_args__ = ("money_list",)

    class CannotAfford(Affordability): ...
