import { Socket } from 'socket.io-client'; import type { Packet } from 'socket.io-parser'; export type { Socket } from 'socket.io-client'; type GetState = () => State; interface AnyAction extends Action { [extraProps: string]: any; } interface Action { type: T; } export interface Dispatch { (action: T): T; } export type StoreType = { dispatch: Dispatch; getState: GetState; }; export type HistoryType = { push: (target: string) => void; }; export type AdditionalParameters = { [key: string]: number | string | string[] | Record; }; type DefaultResultType = boolean | string | Record; type DefaultMessageType = string | boolean | boolean[] | Record | undefined; export type EventCallback = (result: Result, message: Message) => void; export type SocketEventEmitter = (emitName: string, dataToEmit?: DataToEmit, ack?: EventCallback | null) => void; type EmitArgs = T extends [...infer U] ? U : unknown; type EmitGenericArgs = any[]; type InnerEmmiter = NonNullable> = (emitter: SocketEventEmitter, state: State, dispatch: Dispatch, ...args: EmitGenericArgs) => void; export type PushToEmitQueueFunction = >(innerEmitter: InnerEmmiter, ...args: EmitArgs) => void; export type GetPushToEmitQueueFunction = (getState: GetState, dispatch: Dispatch) => PushToEmitQueueFunction; export type ConnectionManager = { emitQueue: GetPushToEmitQueueFunction; closeConnection: (closeCallback?: () => void) => void; connectToSockets(store: StoreType, history: HistoryType, connectCallback?: () => void, disconnectCallback?: () => void, additionalParametersAddedOnConnect?: AdditionalParameters): void; }; export type FirstEmitCallback = (getState: GetState, dispatch: Dispatch) => { emit: InnerEmmiter; args: unknown[]; }; type DisconnectDescription = Error | { description: string; context?: unknown; }; export type ManagerReservedEventsHandlers = { open: (store: StoreType, emitQueue: PushToEmitQueueFunction) => void; error: (store: StoreType, err: Error) => void; ping: () => void; packet: (store: StoreType, packet: Packet) => void; close: (reason: string, description?: DisconnectDescription) => void; reconnect_failed: (store: StoreType, emitQueue: PushToEmitQueueFunction) => void; reconnect_attempt: (store: StoreType, emitQueue: PushToEmitQueueFunction, attempt: number) => void; reconnect_error: (store: StoreType, emitQueue: PushToEmitQueueFunction, err: Error) => void; reconnect: (store: StoreType, emitQueue: PushToEmitQueueFunction, attempt: number) => void; }; export type SocketEventListener = (socket: Socket, getState: GetState, dispatch: Dispatch, history: HistoryType, ...args: unknown[]) => void; export type SocketAndManagerReservedEvents = Partial & ManagerReservedEventsHandlers>; export type SocketEmitWrapperFunction = >(emitName: string, dataToSend: DataToEmit, newAck: EventCallback | null, callback: SocketEventEmitter) => void; export type SocketReservedEvents = { connect: (store: StoreType, toEmitQueue: PushToEmitQueueFunction, history: HistoryType, connectCallback: () => void, disconnectCallback: () => void) => void; connect_error: (store: StoreType, toEmitQueue: PushToEmitQueueFunction, err: Error) => void; disconnect: (store: StoreType, reason: Socket.DisconnectReason, description?: DisconnectDescription) => void; }; export type ToEmitItem = [ emitName: string, newArgs: Record, ack: EventCallback | null ]; //# sourceMappingURL=SocketConnectionManager.types.d.ts.map