/**
 * Slack Socket Mode ingestor.
 *
 * Connects to Slack via Socket Mode WebSocket and streams real-time events
 * (messages, slash commands, interactions, etc.) into the ring buffer.
 *
 * Implements the Socket Mode lifecycle:
 *   1. POST apps.connections.open (app-level token) → get WebSocket URL
 *   2. Connect to WebSocket → receive `hello`
 *   3. Receive envelopes → acknowledge → buffer events
 *   4. Handle `disconnect` messages → reconnect
 *
 * Uses the native WebSocket API (Node 22+) and native fetch.
 *
 * @see https://docs.slack.dev/apis/events-api/using-socket-mode
 */
import { BaseIngestor } from '../base-ingestor.js';
import type { WebSocketIngestorConfig } from '../types.js';
export declare class SlackSocketModeIngestor extends BaseIngestor {
    private readonly wsConfig;
    private ws;
    private reconnectAttempts;
    private readonly maxReconnectAttempts;
    private reconnectTimer;
    /** The URL for the apps.connections.open endpoint. */
    private readonly connectUrl;
    private readonly eventFilter;
    private readonly channelIds;
    private readonly userIds;
    constructor(connectionAlias: string, secrets: Record<string, string>, wsConfig: WebSocketIngestorConfig, bufferSize?: number, instanceId?: string);
    start(): Promise<void>;
    stop(_permanent?: boolean): Promise<void>;
    /**
     * Call apps.connections.open to get a dynamic WebSocket URL, then connect.
     */
    private openConnection;
    private connectWebSocket;
    private handleEnvelope;
    private handleHello;
    private handleDisconnect;
    private handleEvent;
    private acknowledge;
    private initiateReconnect;
    private scheduleReconnect;
    private send;
    private clearReconnectTimer;
}
//# sourceMappingURL=socket-mode.d.ts.map