use async_trait::async_trait; use crate::{ bridge_engine::{BiddingStatePlayerView, PlayStatePlayerView}, card::Card, actions::Bid, }; #[async_trait] pub trait BiddingBot { async fn bid(&self, bidding: &BiddingStatePlayerView) -> Bid; } #[async_trait] pub trait PlayingBot { // TODO: May need a PlayStateBotView here to expose past cards played, // to avoid the need for stateful bots. async fn play(&self, play_state: &PlayStatePlayerView) -> Card; }