import type { Algorithm } from "jsonwebtoken"; import type { Socket } from "socket.io"; import { UnauthorizedError } from "./UnauthorizedError.js"; declare module "socket.io" { interface Socket extends ExtendedSocket { } } interface ExtendedSocket { encodedToken?: string; decodedToken?: any; user?: any; } type SocketIOMiddleware = (socket: Socket, next: (error?: UnauthorizedError) => void) => void; interface CompleteDecodedToken { header: { alg: Algorithm; [key: string]: any; }; payload: any; } type SecretCallback = (decodedToken: CompleteDecodedToken) => Promise | string; export interface AuthorizeOptions { secret: string | SecretCallback; algorithms?: Algorithm[]; onAuthentication?: (decodedToken: any) => Promise | any; } export declare const authorize: (options: AuthorizeOptions) => SocketIOMiddleware; export {};