/* Copyright (c) 2024 Rune AI Inc. All rights reserved. This code is proprietary to Rune AI Inc. The code may be used solely for accessing the Service provided by Rune AI Inc. following the Rune AI Inc. Terms of Service ("Terms") accessible at rune.ai/eula. You may not use this code for any use or purpose other than as expressly permitted by the Terms. Restrictions set forth in the Terms include, but is not limited to, that you may not copy, adapt, modify, prepare derivative works based upon, distribute, license, sell, transfer, publicly display, publicly perform, transmit, stream, broadcast, attempt to discover any source code, reverse engineer, decompile, dissemble, or otherwise exploit the code as a whole or any portion of the code. */ type GameId = number; type PlayerId = string; type Player = { playerId: PlayerId; displayName: string; avatarUrl: string; }; type Players = Record; type Base64Png = string; type LogInfo = { devDash: null; } | { devDash: { type: "CLIENT" | "LOGIC"; userType?: "UNKNOWN" | "PLAYER" | "SPECTATOR"; }; }; type ServerErrorMessage = keyof typeof errorMap; declare const errorMap: { SERVER_UPDATE_LOOP_FASTER_THAN_GAME_TIME: { devUIUnexpected: true; logInfo: { devDash: null; }; }; GET_GAME_STATE_FAILED: { devUIUnexpected: true; logInfo: { devDash: null; }; }; SERVER_RECEIVED_MESSAGE_TOO_BIG: { devUIUnexpected: true; logInfo: { devDash: null; }; }; SERVER_MESSAGE_TO_CLIENTS_TOO_BIG: { devUIUnexpected: true; logInfo: { devDash: null; }; }; SERVER_FULL: { devUIUnexpected: true; logInfo: { devDash: null; }; }; ON_PLAYER_JOINED_CALLBACK_MISSING: { devUIUnexpected: true; logInfo: { devDash: null; }; }; ROOM_GAME_STATE_MISSING: { devUIUnexpected: true; logInfo: { devDash: null; }; }; PERSIST_DATA_AFTER_ERROR_NOT_AVAILABLE: { devUIUnexpected: true; logInfo: { devDash: null; }; }; GET_PERSISTED_STATE_FAILED: { devUIUnexpected: true; logInfo: { devDash: null; }; }; GAME_END_PERSIST_USER_NOT_FOUND: { devUIUnexpected: true; logInfo: { devDash: null; }; }; PLAYER_LEFT_NO_USERS_INCORRECT_PERSISTED_PLAYERS: { devUIUnexpected: true; logInfo: { devDash: null; }; }; PERSISTED_STATE_NOT_ENABLED: { devUIUnexpected: true; logInfo: { devDash: null; }; }; UPDATE_LOOP_BEHIND_GAME_TIME: { devUIMessage: string; logInfo: { devDash: null; }; }; AI_PROMPT_REQUEST_FAILED: { devUIUnexpected: true; logInfo: { devDash: null; }; }; ACTION_PARAMS_SIZE_OVER_LIMIT: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PLAYER_JOINED_FAILED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PLAYER_LEFT_FAILED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); AI_PROMPT_RESPONSE_FAILED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); ACTION_TRIGGERED_IN_LOGIC: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); STATE_SYNC_TOO_BIG: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); GAME_OVER_INVALID_OPTIONS: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); SERVER_UPDATE_LOOP_FAILED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); ACTION_FAILED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); SETUP_GAME_OVER_NOT_ALLOWED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); SETUP_FAILED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PERSISTED_STATE_USED_WITHOUT_FLAG: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); SETUP_PERSISTED_KEY_NOT_ALLOWED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PERSISTED_NOT_AN_OBJECT: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PERSISTED_KEY_MISSING: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PERSISTED_EXTRA_KEY_DETECTED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PERSISTED_PLAYER_MISSING: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PERSISTED_PLAYER_NOT_AN_OBJECT: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); PERSISTED_PLAYER_OVER_LIMIT: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); AI_PROMPT_RESPONSE_NOT_DEFINED: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); AI_PROMPT_REQUEST_PARAM_WRONG_FORMAT: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); NON_ERROR_THROWN_FROM_GAME_LOGIC: { logInfo: LogInfo; } & ({ devUIMessage?: string | ((data: any) => string) | undefined; consoleMessage?: string | ((data: any) => string) | undefined; printExtraDataInDevUI?: boolean | undefined; devUIErrorTitle?: string | undefined; } | { devUIUnexpected: true; }); }; type GameOverResult = "WON" | "LOST" | "TIE" | number; type GameOverOptions = { delayPopUp?: boolean; minimizePopUp?: boolean; } & ({ players: { [playerId: PlayerId]: GameOverResult; }; everyone?: never; } | { players?: never; everyone: GameOverResult; }); type GameOverGameEnded = { reason: "gameEnded"; options: GameOverOptions; }; type GameOverPlayerLeft = { reason: "playerLeft"; }; type GameOverMinPlayers = { reason: "minPlayers"; }; type GameOverError = { reason: "err"; err?: { message: ServerErrorMessage; data?: object; }; }; type GameOverContext = (GameOverMinPlayers | GameOverPlayerLeft | GameOverGameEnded | GameOverError) & { players: Players; }; type ClientToGame = { type: "setForceMuteStatus"; muted: boolean; } | { type: "setDebugOverlayStatus"; enabled: boolean; } | { type: "DISCONNECTED"; } | { type: "READY_TO_REQUEST_STATE_SYNC"; } | { type: "CLIPBOARD_WRITE_RES"; reqId: string; success: boolean; } | { type: "CLIPBOARD_READ_RES"; reqId: string; text: string | null; } | { type: "STORAGE_WRITE_RES"; reqId: string; success: boolean; } | { type: "STORAGE_READ_RES"; reqId: string; value: string | null; }; type GameToClient = { type: "INIT"; version: string; } | { type: "ERR"; msg: string; err?: string; errInfo: object; stack?: string; } | { type: "WARNING"; msg: string; data?: unknown; } | { type: "INFO"; msg: string; data?: unknown; } | { type: "WINDOW_ERR"; err: { msg: string; filename: string; lineno: number; colno: number; stack?: string; }; } | { type: "UNHANDLED_PROMISE_REJECTION"; reason: string; } | { type: "WINDOW_ALERT"; message: string; } | { type: "BROWSER_INITIAL_OVERLAY_CLICKED"; } | { type: "BROWSER_IFRAME_LOADED"; } | { type: "GAME_OVER"; context: GameOverContext; } | { type: "OPEN_EXTERNAL_APP"; url: string; } | { type: "CLIPBOARD_WRITE_REQ"; reqId: string; text: string; } | { type: "CLIPBOARD_READ_REQ"; reqId: string; } | { type: "STORAGE_WRITE_REQ"; reqId: string; key: string; value: string; } | { type: "STORAGE_READ_REQ"; reqId: string; key: string; } | { type: "SHOW_GAME_OVER_POP_UP"; } | { type: "SHOW_INVITE_SHEET"; } | { type: "SHOW_SHARE_IMAGE"; img: Base64Png | null; } | { type: "ON_STATE_SYNC"; } | { type: "ON_CHANGE"; } | { type: "FPS_STATS"; min: number; max: number; avg: number; } | { type: "FPS_WARNING"; fps: number; isLowFps: boolean; }; type StaticLogInfo = { gameId: GameId; gameVersionId: number; isGameMsg: true; }; type GameToClientWithGameInfo = GameToClient & { gameId: GameId; logInfo: LogInfo & StaticLogInfo; }; type GameClient = { onServerMsg: (msg: string) => void; onGameMsg: (msg: string) => void; onDisconnected: () => void; onConnected: () => void; sendMsgToGame: (msg: ClientToGame) => void; stop: () => void; }; type NetworkClient = { sendMsgToServer: (msg: string) => void; sendMsgToGame: (msg: string) => void; }; type ClientProtocolVersion = number; type OnGameStateChangedStates = { state: "LOADING"; } | { state: "PLAYING"; } | { state: "ERR"; } | { state: "GAME_OVER"; context: GameOverContext; }; declare function createGameClient({ network, onGameToClientPayload, onGameStateChanged, onReloadRequested, gameId, clientProtocolVersion, }: { network: NetworkClient; onGameToClientPayload: (gameToClient: GameToClientWithGameInfo) => void; onGameStateChanged: (state: OnGameStateChangedStates) => void; onReloadRequested: () => void; gameId: number; clientProtocolVersion: ClientProtocolVersion; }): GameClient; export { GameOverContext, GameOverOptions, GameOverResult, OnGameStateChangedStates, createGameClient };