UNPKG

blackjack-mcp-server

Version:

Professional-grade Blackjack MCP server with multi-player support, advanced rule variations, and comprehensive game management

269 lines 6.36 kB
/** * Core TypeScript interfaces for the Blackjack MCP Server * Comprehensive type system supporting advanced blackjack features */ export declare enum Suit { HEARTS = "hearts", DIAMONDS = "diamonds", CLUBS = "clubs", SPADES = "spades" } export declare enum Rank { ACE = "A", TWO = "2", THREE = "3", FOUR = "4", FIVE = "5", SIX = "6", SEVEN = "7", EIGHT = "8", NINE = "9", TEN = "10", JACK = "J", QUEEN = "Q", KING = "K" } export interface Card { suit: Suit; rank: Rank; id: string; } export declare enum GamePhase { WAITING_FOR_PLAYERS = "waiting_for_players", BETTING = "betting", DEALING = "dealing", PLAYER_TURN = "player_turn", DEALER_TURN = "dealer_turn", ROUND_END = "round_end", GAME_OVER = "game_over" } export declare enum HandStatus { ACTIVE = "active", STAND = "stand", BUST = "bust", BLACKJACK = "blackjack", SURRENDER = "surrender", DOUBLE_DOWN = "double_down" } export declare enum HandResult { WIN = "win", LOSE = "lose", PUSH = "push", BLACKJACK = "blackjack", SURRENDER = "surrender" } export interface Hand { id: string; cards: Card[]; bet: number; status: HandStatus; isDoubleDown: boolean; isSplit: boolean; parentHandId?: string; value: number; softValue: boolean; result?: HandResult; payout?: number; } export interface Player { id: string; name: string; balance: number; hands: Hand[]; isActive: boolean; totalBet: number; insurance?: number; statistics: PlayerStatistics; joinedAt: Date; lastAction?: Date; } export interface PlayerStatistics { gamesPlayed: number; handsWon: number; handsLost: number; handsPush: number; blackjacks: number; busts: number; totalWagered: number; totalWon: number; totalLost: number; winRate: number; averageBet: number; biggestWin: number; biggestLoss: number; currentStreak: number; longestWinStreak: number; longestLoseStreak: number; } export interface DealerHand { cards: Card[]; value: number; softValue: boolean; holeCard?: Card; showHoleCard: boolean; } export interface GameRules { decks: number; minBet: number; maxBet: number; dealerHitsSoft17: boolean; blackjackPayout: number; maxPlayers: number; allowSurrender: boolean; allowDoubleAfterSplit: boolean; allowResplitAces: boolean; maxSplits: number; insurancePayout: number; doubleDownRules: 'any' | 'hard9-11' | 'hard10-11'; splitRules: 'any' | 'pairs-only'; penetration: number; } export interface GameState { gameId: string; phase: GamePhase; players: Map<string, Player>; dealerHand: DealerHand; deck: Card[]; discardPile: Card[]; currentPlayerIndex: number; currentHandIndex: number; round: number; rules: GameRules; createdAt: Date; lastActivity: Date; minPlayersToStart: number; maxInactiveTime: number; } export interface Transaction { id: string; playerId: string; gameId: string; type: TransactionType; amount: number; balanceBefore: number; balanceAfter: number; handId?: string; description: string; timestamp: Date; metadata?: Record<string, any>; } export declare enum TransactionType { BET = "bet", WIN = "win", LOSE = "lose", PUSH = "push", INSURANCE = "insurance", DOUBLE_DOWN = "double_down", SPLIT = "split", SURRENDER = "surrender", BLACKJACK = "blackjack", REFUND = "refund" } export interface GameEvent { id: string; gameId: string; playerId?: string; type: GameEventType; data: any; timestamp: Date; } export declare enum GameEventType { GAME_CREATED = "game_created", PLAYER_JOINED = "player_joined", PLAYER_LEFT = "player_left", BETTING_STARTED = "betting_started", BET_PLACED = "bet_placed", CARDS_DEALT = "cards_dealt", PLAYER_ACTION = "player_action", HAND_COMPLETED = "hand_completed", DEALER_REVEAL = "dealer_reveal", ROUND_COMPLETED = "round_completed", GAME_ENDED = "game_ended", ERROR = "error" } export interface SavedGameState { gameState: GameState; transactions: Transaction[]; events: GameEvent[]; savedAt: Date; version: string; } export interface ValidationError { field: string; message: string; code: string; } export interface ActionResult<T = any> { success: boolean; data?: T; error?: string; errors?: ValidationError[]; warnings?: string[]; } export interface PlayerAction { playerId: string; handId: string; action: 'hit' | 'stand' | 'double' | 'split' | 'surrender' | 'insurance'; amount?: number; timestamp: Date; } export interface GameSummary { gameId: string; phase: GamePhase; playerCount: number; round: number; totalPot: number; dealerUpCard?: Card; activePlayer?: string; lastActivity: Date; } export interface PlayerSummary { id: string; name: string; balance: number; totalBet: number; handsCount: number; isActive: boolean; statistics: PlayerStatistics; } export interface ResourceData { uri: string; mimeType: string; text?: string; } export interface ServerConfig { port?: number; host?: string; logLevel?: 'debug' | 'info' | 'warn' | 'error'; persistence?: { enabled: boolean; path?: string; }; security?: { maxGamesPerUser?: number; rateLimit?: number; }; } export interface BlackjackMCPTools { 'blackjack.create_game': any; 'blackjack.join_game': any; 'blackjack.leave_game': any; 'blackjack.start_game': any; 'blackjack.end_game': any; 'blackjack.place_bet': any; 'blackjack.hit': any; 'blackjack.stand': any; 'blackjack.double_down': any; 'blackjack.split': any; 'blackjack.surrender': any; 'blackjack.insurance': any; 'blackjack.deal_cards': any; 'blackjack.next_player': any; 'blackjack.dealer_play': any; 'blackjack.resolve_round': any; 'blackjack.save_game': any; 'blackjack.load_game': any; 'blackjack.get_statistics': any; 'blackjack.reset_deck': any; } //# sourceMappingURL=index.d.ts.map