import type { MessengerAdapter } from './types.js';
export interface InstallOptions {
    /** Resolve a messenger by platform name; same shape as approval-router's. */
    resolveMessenger: (platform: string) => MessengerAdapter | undefined;
    /** Platforms to bind onButtonCallback for. Defaults to a sensible
     *  set; adapters without onButtonCallback are silently skipped. */
    buttonCallbackPlatforms?: string[];
}
/** Install the router. Idempotent — re-calling rebinds button handlers. */
export declare function install(opts: InstallOptions): void;
/** Rebind a single platform's button handler. Used by web/server.ts
 *  when it registers its messenger AFTER install(). */
export declare function bindButtonHandlerForPlatform(platform: string): void;
/**
 * Inbound-text intercept. Called from cli.ts onMessage before the agent
 * router runs. Returns true iff this message resolved a pending ask
 * (caller should stop).
 *
 * threadKey is `platform:channelId:threadId` — same shape approval-
 * router uses; we split it back into the three components here so the
 * underlying pending map can look up by composite key.
 */
export declare function tryHandleAskReply(platform: string, channelId: string, threadId: string, text: string): boolean;
//# sourceMappingURL=ask-user-router.d.ts.map