// https://github.com/hardcpp/BeatSaberPlus/wiki/%5BEN%5D-Song-Overlay export interface HandshakeEvent { _type: "handshake"; protocolVersion: number; gameVersion: string; playerName: string; playerPlatformId: string; } export interface GameStateEvent { _type: "event"; _event: "gameState"; gameStateChanged: "Menu" | "Playing"; } export interface ResumeEvent { _type: "event"; _event: "resume"; resumeTime: number; } export interface PauseEvent { _type: "event"; _event: "pause"; pauseTime: number; } export interface MapInfoChangedEvent { _type: "event"; _event: "mapInfo"; mapInfoChanged: { level_id: string; name: string; sub_name: string; artist: string; mapper: string; characteristic: string; difficulty: string; duration: number; BPM: number; PP: number; BSRKey: string; coverRaw: string; time: number; timeMultiplier: number; }; } export interface ScoreEvent { _type: "event"; _event: "score"; scoreEvent: { time: number; score: number; accuracy: number; combo: number; missCount: number; currentHealth: number; }; } export type BeatSaberPlusEvent = | HandshakeEvent | GameStateEvent | ResumeEvent | PauseEvent | MapInfoChangedEvent | ScoreEvent; export type MapInfo = MapInfoChangedEvent["mapInfoChanged"]; export type Score = ScoreEvent["scoreEvent"]; /** Chat request / queue JSON (e.g. ChatRequest.json beside the overlay) */ export interface ChatRequestEntry { key: string; rqt: number; rqn: string; npr: string; msg: string; } export interface ChatRequestPayload { queue: ChatRequestEntry[]; history: ChatRequestEntry[]; }