import type { HeadersInit, Server, ServerWebSocket } from "bun";
export interface WebSocketRouterOptions {
    server?: Server;
}
export type WebSocketData<T> = {
    clientId: string;
} & T;
export interface UpgradeOptions<T> {
    server: Server;
    data?: T;
    headers?: HeadersInit;
}
export interface OpenHandlerContext<Data> {
    ws: ServerWebSocket<Data>;
    send: SendFunction;
}
export type OpenHandler<Data = unknown> = (context: OpenHandlerContext<Data>) => void | Promise<void>;
export interface CloseHandlerContext<Data> {
    ws: ServerWebSocket<Data>;
    code: number;
    reason?: string;
    send: SendFunction;
}
export type CloseHandler<Data = unknown> = (context: CloseHandlerContext<Data>) => void | Promise<void>;
export type SendFunction = (schema: any, data: any, meta?: any) => void;
export type MessageContext<Data> = {
    ws: ServerWebSocket<Data>;
    meta: any;
    send: SendFunction;
} & Record<string, any>;
export type MessageHandler<_Schema, Data> = (context: MessageContext<Data>) => void | Promise<void>;
export type MessageSchemaType = any;
export interface MessageHandlerEntry<Data = unknown> {
    schema: MessageSchemaType;
    handler: MessageHandler<MessageSchemaType, Data>;
}
//# sourceMappingURL=types.d.ts.map