/// import type { FunctionRuntimeProps } from "../function-props.js"; import { type SocketSpec } from "../internal/service-spec.js"; import type { ServiceContext } from "../service.js"; import type { SocketMiddleware, SocketMiddlewareFunction } from "./middleware.js"; export interface SocketContext { connect: ConnectContext; disconnect: DisconnectContext; message: MessageContext; } export interface SocketHandlerContext { socket: { socketName: string; }; service: ServiceContext; } export type SocketHeaders = Record; export type SocketQuery = Record; export type SocketRequest = SocketConnectRequest | SocketDisconnectRequest | SocketMessageRequest; export interface SocketConnectRequest { type: "connect"; connectionId: string; query?: SocketQuery; headers: SocketHeaders; } export interface SocketDisconnectRequest { type: "disconnect"; connectionId: string; } export interface SocketMessageRequest { type: "message"; connectionId: string; body?: string | Buffer; } export interface SocketResponse { status: number; message?: string | Buffer | any; } export type SocketHandlers = { $connect: (request: SocketConnectRequest, context: Context["connect"]) => Promise | SocketResponse | void; $disconnect: (request: SocketDisconnectRequest, context: Context["disconnect"]) => Promise | SocketResponse | void; $default: (request: SocketMessageRequest, context: Context["message"]) => Promise | SocketResponse | string | Buffer | any | void; }; export type Socket = SocketSpec & { kind: "Socket"; handlers: SocketHandlers; wssEndpoint: string; httpEndpoint: string; middlewares: SocketMiddleware[]; } & { send: (connectionId: string, input: Buffer | string) => Promise; disconnect: (connectionId: string) => Promise; }; export type SocketOptions = FunctionRuntimeProps; export interface SocketRouter { middlewares: SocketMiddleware[]; use(socketMiddleware: SocketMiddleware> | SocketMiddlewareFunction): SocketRouter>; socket(name: Name, options: SocketOptions, handlers: SocketHandlers): Socket; socket(name: Name, handlers: SocketHandlers): Socket; } export interface socket extends SocketRouter { (name: Name, options: SocketOptions, handlers: SocketHandlers): Socket; (name: Name, handlers: SocketHandlers): Socket; } export declare const socket: socket>; export declare function parseSocketArgs(args: any[]): { sourceLocation: import("../internal/service-spec.js").SourceLocation; name: Name; options: FunctionRuntimeProps; handlers: SocketHandlers>; }; //# sourceMappingURL=socket.d.ts.map