/**
 * Ingestor factory registry.
 *
 * Decouples the IngestorManager from specific ingestor implementations.
 * Each provider (Discord, Slack, webhook, poll) registers its own factory
 * function at module load time; the manager calls `createIngestor()` without
 * knowing which concrete classes exist.
 */
import type { BaseIngestor } from './base-ingestor.js';
import type { IngestorConfig } from './types.js';
/** Signature for a factory that creates an ingestor from its config. */
export type IngestorFactory = (connectionAlias: string, config: IngestorConfig, secrets: Record<string, string>, bufferSize?: number, instanceId?: string) => BaseIngestor | null;
/**
 * Register a factory for a given ingestor key.
 *
 * Convention for keys:
 * - WebSocket protocols: `websocket:<protocol>` (e.g., `websocket:discord`, `websocket:slack`)
 * - Webhook protocols: `webhook:<protocol>` (e.g., `webhook:generic` for GitHub, `webhook:stripe`)
 * - Other types: the type name directly (e.g., `poll`)
 */
export declare function registerIngestorFactory(key: string, factory: IngestorFactory): void;
/**
 * Create an ingestor instance using the registered factory for its config type.
 *
 * For WebSocket ingestors, the key is `websocket:<protocol>`.
 * For Webhook ingestors, the key is `webhook:<protocol>` (default: `webhook:generic`).
 * For other types, the key is just the type name.
 *
 * Returns `null` if no factory is registered or if the factory declines to create.
 */
export declare function createIngestor(connectionAlias: string, config: IngestorConfig, secrets: Record<string, string>, bufferSize?: number, instanceId?: string): BaseIngestor | null;
//# sourceMappingURL=registry.d.ts.map