import { IoAdapter } from '@nestjs/platform-socket.io'; import { INestApplicationContext, WsMessageHandler } from '@nestjs/common'; import socketio from 'socket.io'; import { FnDbPostgresService } from '../fn.db.postgres/fn.db.postgres.service'; import { IUserGetInfoOut } from '../fn.db.postgres/fn.db.postgres.interface'; import { Handshake } from 'socket.io/dist/socket-types'; import { CorsOptions } from 'cors'; import { IncomingHttpHeaders } from 'http'; import { SessionParams } from '../../fn.core.type'; import { Socket } from 'socket.io'; import { Observable } from 'rxjs'; export interface IClientHttpHeaders extends IncomingHttpHeaders { } export interface SessionGroupInfo { name: string; group_guid: number; short_name: string; group_description: string; } export interface SessionUserInfo { email: string; settings: { [key: string]: any; }; is_active: boolean; user_type: Array; first_name: string; user_group: Array; connection_limit: number; } export interface IdbGrant { grant_id: number; grant_name: string; grant_description: string; } export interface AuthenticatedSocket extends socketio.Socket { sessionParams: SessionParams; } export interface AdapterOptions { maxHttpBufferSize: number; } export declare class FnSocketIoAuthenticationAdapter extends IoAdapter { private readonly app; private _secretAccessToken; private _db; private _cors; private _adapterOptions; adapterOptions: AdapterOptions; constructor(app: INestApplicationContext, _secretAccessToken: string, _db: FnDbPostgresService, _cors?: CorsOptions, _adapterOptions?: Partial); create(port: number, options: socketio.ServerOptions): socketio.Server; setupNewSession(socket: AuthenticatedSocket, handshake: Handshake): void; tokenAuthentication(socketToken: string): Promise; setLastAccessTime(userGuid: number): void; bindMessageHandlers(client: Socket, handlers: WsMessageHandler[], transform: (data: any) => Observable): void; }