import { SignedAuthToken } from '@socket-mesh/auth'; import { ChannelOptions, PublishOptions } from '@socket-mesh/channels'; export interface HandshakeAuthenticatedStatus { authToken: SignedAuthToken; id: string; pingTimeoutMs: number; } export interface HandshakeErrorStatus { authError: Error; id: string; pingTimeoutMs: number; } export interface HandshakeOptions { authToken: SignedAuthToken; } export type HandshakeStatus = HandshakeAuthenticatedStatus | HandshakeErrorStatus; export type ServerPrivateMap = { '#authenticate': (authToken: string) => void; '#handshake': (options: HandshakeOptions) => HandshakeStatus; '#publish': (options: PublishOptions) => void; '#removeAuthToken': () => void; '#subscribe': (options: SubscribeOptions) => void; '#unsubscribe': (channelName: string) => void; }; export interface SubscribeOptions extends ChannelOptions { channel: string; }