import type { RealtimeClientConfig, RealtimeStatus } from './types.js';
import { EventEmitter } from './event-emitter.js';
/**
 * Client-side realtime connection manager.
 * Handles SSE connections with automatic reconnection and polling fallback.
 */
export declare class RealtimeClient extends EventEmitter {
    private config;
    private eventSource;
    private status;
    private reconnectAttempts;
    private reconnectTimer;
    private heartbeatTimer;
    private clientId;
    private lastEventId;
    constructor(config?: RealtimeClientConfig);
    private resolveConfig;
    /**
     * Initialize the realtime client with a client ID
     */
    init(clientId: string): void;
    /**
     * Update configuration at runtime
     */
    configure(config: Partial<RealtimeClientConfig>): void;
    /**
     * Get current connection status
     */
    getStatus(): RealtimeStatus;
    /**
     * Check if currently connected
     */
    isConnected(): boolean;
    /**
     * Connect to the SSE endpoint
     */
    connect(): void;
    /**
     * Disconnect from the SSE endpoint
     */
    disconnect(): void;
    /**
     * Force reconnection
     */
    reconnect(): void;
    /**
     * Enable realtime and connect
     */
    enable(): void;
    /**
     * Disable realtime and disconnect
     */
    disable(): void;
    /**
     * Send a message to the server via POST
     * This enables bidirectional communication (client -> server)
     */
    send(type: string, data: any): Promise<void>;
    /**
     * Join a channel to receive channel-specific events
     */
    joinChannel(channel: string): Promise<void>;
    /**
     * Leave a channel
     */
    leaveChannel(channel: string): Promise<void>;
    /**
     * Clean up resources
     */
    destroy(): void;
    private buildEndpointUrl;
    private handleMessage;
    private handleOperationsEvent;
    private handleError;
    private scheduleReconnect;
    private startHeartbeatMonitor;
    private resetHeartbeatMonitor;
    private clearTimers;
    private setStatus;
}
/**
 * Create a realtime client with the given configuration.
 * Simple factory function for ease of use.
 */
export declare function createRealtimeClient(config?: RealtimeClientConfig): RealtimeClient;
