/** * createRealtimeChannel — wrapper sobre WebSocket con auto-reconnect y * handlers tipados. Diseñado para usarse dentro de un `defineStore`: * * export const useChatStore = defineStore('chat', { * state: { messages: signal([]) }, * actions: { * send(text: string) { channel.send({ text, at: Date.now() }) }, * }, * }) * * const channel = createRealtimeChannel({ * url: 'wss://api.example.com/chat', * onMessage: (m) => { useChatStore().state.messages.value = [...useChatStore().state.messages.value, m] }, * }) */ export interface RealtimeOptions { url: string; /** Mensaje entrante ya parseado a T. Default parser: JSON.parse */ onMessage: (data: T) => void; onOpen?: () => void; onClose?: (ev: CloseEvent) => void; onError?: (ev: Event) => void; /** Auto-reconnect cuando la conexión se cierra inesperadamente. Default activo. */ reconnect?: { delay: number; maxRetries: number; } | false; /** WebSocket subprotocols */ protocols?: string | string[]; /** * Parser custom — si no se pasa usa JSON.parse. Útil si el server * manda binarios o formato distinto. */ parse?: (raw: string) => T; /** * Serializer custom para send() — default JSON.stringify. */ serialize?: (data: T) => string; } export interface RealtimeChannel { /** Envía data. Si el socket no está OPEN, se descarta silenciosamente. */ send: (data: T) => void; /** Cierra conexión y deshabilita auto-reconnect */ close: () => void; /** WebSocket.readyState (0=CONNECTING, 1=OPEN, 2=CLOSING, 3=CLOSED, -1=desactivado) */ readyState: () => number; } export declare function createRealtimeChannel(options: RealtimeOptions): RealtimeChannel; //# sourceMappingURL=realtime.d.ts.map