/**
 * remote/gateway/gateway — the multi-platform Gateway.
 *
 * One running agent session, several messaging surfaces. The gateway:
 *   - subscribes to the `RemoteControlHub` event stream, renders each event
 *     for chat, and broadcasts it to every adapter;
 *   - receives inbound messages from every adapter, parses control commands
 *     (/approve, /reject, /whisper, /status) and otherwise enqueues the text
 *     into the hub's `InstructionInbox` — mid-run steering from any platform.
 *
 * This is the Hermes-style assistant gateway built entirely on the T1-T3
 * primitives: the same agent is reachable from the CLI, Telegram, Discord and
 * Slack at once, with no surface-specific agent logic.
 *
 * @public @since 2.14.0 — preste remote-control T4
 */
import type { RemoteApprovalChannel } from "../approval.js";
import type { RemoteControlPort } from "../port.js";
import type { GatewayAdapter, GatewayLogger } from "./types.js";
export interface GatewayOptions {
    /**
     * The remote-control hub: inbound instructions land in its `inbox`,
     * outbound `SessionEvent`s stream from its `subscribe`.
     */
    hub: RemoteControlPort;
    /** Platform adapters to multiplex. */
    adapters: GatewayAdapter[];
    /**
     * Optional HITL channel — chat `/approve` and `/reject` commands route
     * here. Without it those commands are logged and ignored.
     */
    approvalChannel?: RemoteApprovalChannel;
    /** Render tool.* events too (chattier). Default false. */
    verbose?: boolean;
    /**
     * Message broadcast to every platform once the gateway is up. Set `false`
     * to stay silent. Default: a short usage hint.
     */
    greeting?: string | false;
    /** Logger. Default no-op. */
    log?: GatewayLogger;
}
export interface GatewayHandle {
    /** Start every adapter + begin forwarding the event stream. Idempotent. */
    start(): Promise<void>;
    /** Stop every adapter + detach from the hub. Idempotent. */
    stop(): Promise<void>;
    /** Platform slugs currently multiplexed. */
    readonly platforms: string[];
}
/** Create a Gateway over a RemoteControlHub. */
export declare function createGateway(opts: GatewayOptions): GatewayHandle;
//# sourceMappingURL=gateway.d.ts.map