{"version":3,"sources":["../../../../src/utils/adapters/types/messages.ts"],"sourcesContent":["import type { AdapterKey } from \".\";\nimport type { BoardSquare, Engine, Mino } from \"../../../engine\";\nimport type { KickTableName } from \"../../../engine/utils/kicks/data\";\nimport type { Game } from \"../../../types\";\n\nexport interface CustomMessageData {\n  info: void;\n  move: void;\n\n  config: void;\n  state: void;\n  pieces: void;\n  play: void;\n}\n\nexport namespace Incoming {\n  export interface Info<Data extends CustomMessageData> {\n    type: \"info\";\n    name: string;\n    version: string;\n    author: string;\n    data: Data[\"info\"];\n  }\n\n  export interface Move<Data extends CustomMessageData> {\n    type: \"move\";\n    keys: AdapterKey[];\n    data: Data[\"move\"];\n  }\n\n  export type all<Data extends CustomMessageData> = Info<Data> | Move<Data>;\n\n  export type EventMap<Data extends CustomMessageData> = {\n    [key in all<Data>[\"type\"]]: Extract<all<Data>, { type: key }>;\n  };\n}\n\nexport namespace Outgoing {\n  export interface Config<Data extends CustomMessageData> {\n    type: \"config\";\n\n    boardWidth: number;\n    boardHeight: number;\n\n    kicks: KickTableName;\n    spins: Game.SpinBonuses;\n    comboTable: Game.ComboTable;\n\n    b2bCharing: boolean;\n    b2bChargeAt: number;\n    b2bChargeBase: number;\n    b2bChaining: boolean;\n\n    garbageMultiplier: number;\n    garbageCap: number;\n    garbageSpecialBonus: boolean;\n\n    pcB2b: number;\n    pcGarbage: number;\n\n    queue: Engine[\"queue\"][\"value\"];\n\n    data: Data[\"config\"];\n  }\n\n  export interface State<Data extends CustomMessageData> {\n    type: \"state\";\n\n    board: BoardSquare[][];\n\n    current: Mino;\n    hold: Mino | null;\n    queue: Mino[];\n\n    garbage: number[];\n\n    combo: number;\n    b2b: number;\n\n    data: Data[\"state\"];\n  }\n\n  export interface Pieces<Data extends CustomMessageData> {\n    type: \"pieces\";\n    pieces: Mino[];\n    data: Data[\"pieces\"];\n  }\n\n  export interface Play<Data extends CustomMessageData> {\n    type: \"play\";\n\n    garbageMultiplier: number;\n    garbageCap: number;\n\n    data: Data[\"play\"];\n  }\n\n  export type all<Data extends CustomMessageData> =\n    | Config<Data>\n    | State<Data>\n    | Pieces<Data>\n    | Play<Data>;\n\n  export type EventMap<Data extends CustomMessageData> = {\n    [key in all<Data>[\"type\"]]: Extract<all<Data>, { type: key }>;\n  };\n}\n"],"names":[],"mappings":"AAqCA,WAqEC"}