/**
 * WebSocket Transport for SyncEngine (TRL-334)
 *
 * Provides WebSocket-based bidirectional sync transport for realtime
 * full-state sync. Integrates with existing SyncEngine protocol.
 */
import type { SyncTransport, SyncMessage, PeerId } from './types.js';
import { type RateLimiterOptions } from './rate-limiter.js';
export interface WebSocketTransportOptions {
    /** WebSocket server URL (e.g., wss://localhost:8231/sync) */
    url: string;
    /** Local peer identity. */
    localPeerId: string;
    /** Reconnection delay in ms (default: 5000). */
    reconnectDelay?: number;
    /** Maximum reconnection attempts (default: infinite). */
    maxReconnectAttempts?: number;
    /** Authentication token (JWT or API key). */
    authToken?: string;
    /** Maximum message size in bytes (default: 10MB). */
    maxMessageSize?: number;
    /** Enforce TLS (reject ws://) - defaults to true in production. */
    enforceTls?: boolean;
    /** Rate limiter options. */
    rateLimiter?: RateLimiterOptions;
}
export interface WebSocketTransportState {
    connected: boolean;
    reconnectAttempts: number;
    lastError?: string;
}
/**
 * WebSocket-based sync transport.
 * Maintains persistent connection with automatic reconnection.
 */
export declare class WebSocketTransport implements SyncTransport {
    private options;
    private ws;
    private messageHandler;
    private state;
    private reconnectTimer;
    private rateLimiter;
    constructor(opts: WebSocketTransportOptions);
    /**
     * Connect to the sync server.
     */
    connect(): Promise<void>;
    /**
     * Disconnect from the sync server.
     */
    disconnect(): Promise<void>;
    /**
     * Send a message to the sync server.
     */
    send(_peerId: string, message: SyncMessage): Promise<void>;
    /**
     * Register a handler for incoming messages.
     */
    onMessage(handler: (message: SyncMessage) => void): void;
    /**
     * List connected peers.
     * Note: WebSocket transport connects to a single server, so this returns
     * the server as a peer if connected.
     */
    peers(): PeerId[];
    /**
     * Get current transport state.
     */
    getState(): WebSocketTransportState;
    /**
     * Schedule reconnection attempt.
     */
    private scheduleReconnect;
}
//# sourceMappingURL=websocket-transport.d.ts.map