import { EnumMap } from "@onebro/oba-common"; import { Server, Socket, Namespace } from "socket.io"; export declare type SocketUser = { id: string; username: string; role: string; }; export declare type SocketUserMsg = { room?: string; username: string; message: string; }; export declare type SocketUserTyping = { isTyping: boolean; username: string; }; export declare type SocketEventName = "user_connected" | "user_disconnected" | "room" | "chat_message" | "info_message" | "typing"; export declare type SocketEventPayloadObj = EnumMap; export interface SocketEventPayloads extends SocketEventPayloadObj { user_connected: SocketUser; user_disconnected: SocketUser; room: string; chat_message: SocketUserMsg; info_message: SocketUserMsg; typing: SocketUserTyping; } export declare type SocketActionType = void | boolean | Namespace | Socket; export declare type SocketAction = (data: T) => SocketActionType | Promise; export declare type SocketActionCreator = (io: Server, s: Socket) => SocketAction; export declare type SocketEvent = { name: SocketEventName; action?: SocketActionCreator; }; export interface AppMasterSocketsConfig { events: SocketEvent[]; } export interface AppMasterSocketsType extends Server { }