import type { AgentEvent, AgentTool } from "@cline/shared"; import { type ToolExecutors } from "../../../extensions/tools"; import type { SubAgentEndContext, SubAgentStartContext } from "../../../extensions/tools/team"; import type { CoreSessionConfig } from "../../../types/config"; import type { ActiveSession } from "../../../types/session"; export type SubAgentStartTracker = Map; export interface SpawnToolDeps { getSession(sessionId: string): ActiveSession | undefined; subAgentStarts: SubAgentStartTracker; onAgentEvent(rootSessionId: string, config: CoreSessionConfig, event: AgentEvent): void; invokeBackendOptional(method: string, ...args: unknown[]): Promise; } export interface SessionSubAgentLifecycleCallbacks { onSubAgentEvent: (event: AgentEvent) => void; onSubAgentStart: (context: SubAgentStartContext) => void; onSubAgentEnd: (context: SubAgentEndContext) => void; } export declare function createSessionSubAgentLifecycleCallbacks(deps: SpawnToolDeps, config: CoreSessionConfig, rootSessionId: string): SessionSubAgentLifecycleCallbacks; export declare function createSessionSpawnTool(deps: SpawnToolDeps, config: CoreSessionConfig, rootSessionId: string, toolExecutors?: Partial): AgentTool;