import type { ToolDefinition } from "@sheason/pi-coding-agent";
import { type Static, Type } from "typebox";
import type { HubAgentAdapter } from "../agent/hub-agent-adapter.js";
/** Runtimes expose `agentAdapter` for messaging; keep structural to avoid importing `HubAgentRuntime` (cycle). */
export interface AgentMessagingTargetRuntime {
    agentAdapter: HubAgentAdapter | undefined;
}
/**
 * `HubRuntime` implements this: resolve agent runtimes and list hub agent ids (main + children with runtimes).
 */
export interface AgentMessagingToolHost {
    tryGetAgentRuntime(agentId: string): AgentMessagingTargetRuntime | undefined;
    ensureAgentStarted?: (agentId: string, reason?: string) => Promise<AgentMessagingTargetRuntime | undefined>;
    getAllMessagingAgentIds(): readonly string[];
    deliverMessageToGuest?: (senderAgentId: string, targetAgentId: string, message: string, options?: {
        messageId?: string;
        responseIds?: string[];
    }) => Promise<boolean> | boolean;
}
declare const sendSchema: Type.TObject<{
    agentIds: Type.TUnion<[Type.TString, Type.TArray<Type.TString>]>;
    message: Type.TString;
    flush: Type.TOptional<Type.TBoolean>;
    response_timeout: Type.TOptional<Type.TNumber>;
    response_ids: Type.TOptional<Type.TArray<Type.TString>>;
}>;
declare const broadcastSchema: Type.TObject<{
    message: Type.TString;
}>;
export type SendMessageToAgentToolInput = Static<typeof sendSchema>;
export type BroadcastMessageToAgentsToolInput = Static<typeof broadcastSchema>;
export declare function createAgentMessagingToolDefinitions(getHost: () => AgentMessagingToolHost, senderAgentId: string): ToolDefinition[];
export {};
//# sourceMappingURL=agent-messaging-tools.d.ts.map