from enum import Enum
from ..player import PlayerId
from ..animals import Animal
from .. import Money, Value
from dataclasses import dataclass
from typing import Union


class Ok:
    def __init__(self) -> None: ...

NoAction = Union[Ok]


class Draw:
    def __init__(self) -> None: ...

class Trade:
    data: InitialTrade
    def __init__(self, data: InitialTrade) -> None: ...

class InitialTrade:
    opponent: PlayerId
    animal: Animal
    animal_count: int
    amount: list[Money]

PlayerTurnDecision = Union[Draw, Trade]


class Buy:
    def __init__(self) -> None: ...

class Sell:
    def __init__(self) -> None: ...

AuctionDecision = Union[Buy, Sell]


class Accept:
    def __init__(self) -> None: ...

class CounterOffer:
    data: list[Money]
    def __init__(self, data: list[Money]) -> None: ...

TradeOpponentDecision = Union[Accept, CounterOffer]


class WasBluff:
    def __init__(self) -> None: ...

class Amount:
    data: list[Money]
    def __init__(self, data: list[Money]) -> None: ...

SendMoney = Union[WasBluff, Amount]


class Pass:
    def __init__(self) -> None: ...

class Bid:
    data: Value
    def __init__(self, data: Value) -> None: ...

Bidding = Union[Pass, Bid]
