import type { Server } from 'node:http'; import { EdgeNodeRepository } from '../identity/drizzle/EdgeNodeRepository'; interface ClusterWebSocketConfiguratorOptions { identityDbUrl: string; edgeNodesEnabled?: string | boolean; repository?: EdgeNodeRepository; clusterIngressDomain: string; } /** * ServerConfigurator that handles WebSocket upgrade requests for edge nodes. * * For proxy mode: proxies WebSocket connections through FRP tunnel * For direct mode: sends 307 redirect to edge node's public IP */ export declare class ClusterWebSocketConfigurator { protected readonly logger: import("global-logger-factory").Logger; private readonly repository; private readonly enabled; private readonly clusterIngressDomain; private readonly wsProxy; constructor(options: ClusterWebSocketConfiguratorOptions); /** * Attach to HTTP server's upgrade event */ handle(server: Server): Promise; /** * Handle WebSocket upgrade request */ private handleUpgrade; /** * Send HTTP error response for WebSocket upgrade failure */ private sendUpgradeError; /** * Resolve upstream endpoint from node metadata */ private resolveUpstream; /** * Extract hostname from request headers */ private extractHostname; /** * Extract node ID from hostname */ private extractNodeIdFromHostname; /** * Normalize domain input */ private normalizeDomain; /** * Normalize boolean values */ private normalizeBoolean; /** * Normalize access mode */ private normalizeMode; } export {};