import { logger as rootLogger } from '../logger.js';
import type { ToolDispatcher } from './tool-dispatcher.js';
import type { ToolDef } from './provider-base.js';
/** Per-turn caller identity. Matches the subset of `RunContext` the
 *  agim RPC handlers consume + the optional `agent` for A2A self-call
 *  detection. */
export interface ImhubDispatcherCtx {
    platform: string;
    channelId: string;
    threadId: string;
    userId: string;
    /** Calling agent name. A2A uses this to reject self-calls. */
    callerAgent: string;
    /** Optional pino-compatible logger for the RouteContext A2A needs. */
    logger?: typeof rootLogger;
    /** Optional A2A depth — defaults to 0 for native-originated calls. */
    callerDepth?: number;
}
/**
 * Tool roster the LLM sees. JSON Schemas are kept terse — they match
 * the RPC handlers' real expectations without copying claude-code's
 * MCP server's full prose docstrings, which can grow to multi-KB.
 */
export declare function getImhubTools(): ToolDef[];
/** Build a dispatcher closure over the per-turn IM context. */
export declare function buildImhubDispatcher(ctx: ImhubDispatcherCtx): ToolDispatcher;
//# sourceMappingURL=imhub-dispatcher.d.ts.map