import type { AppConfig } from "../config.js";
import type { ProviderRegistry } from "../providers/registry.js";
import { type GitStackedAction, type GitStepResult } from "../services/git.js";
import type { SessionStateService } from "../services/session-state.js";
import type { ThreadService } from "../services/threads.js";
import type { UserService } from "../services/users.js";
import type { WsControlPlane } from "../ws.js";
import type { ToolDefinition } from "./contracts.js";
import type { SkillRegistry } from "../skills/index.js";
interface ThreadControlInput {
    action: "list" | "get" | "create" | "create_many" | "update" | "delete" | "start" | "send" | "stop" | "interrupt" | "approve" | "activities" | "create_pr";
    threadId?: string;
    sessionId?: string;
    title?: string;
    providerId?: string;
    model?: string;
    runtimeMode?: "full-access" | "supervised";
    kind?: "delivery" | "delegation";
    workingDirectory?: string;
    branch?: string;
    prompt?: string;
    message?: string;
    attachments?: string[];
    start?: boolean;
    detach?: boolean;
    autoStopAfterTurn?: boolean;
    timeoutMinutes?: number;
    threads?: ThreadCreateSpec[];
    requestId?: string;
    approved?: boolean;
    limit?: number;
    prUrl?: string | null;
    prNumber?: number | null;
    prTitle?: string | null;
    prBaseBranch?: string | null;
    prState?: "creating" | "open" | "closed" | "merged" | null;
    cwd?: string;
    gitAction?: GitStackedAction;
    commitMessage?: string;
    baseBranch?: string;
    featureBranch?: boolean;
}
interface ThreadCreateSpec {
    title: string;
    providerId?: string;
    model?: string;
    runtimeMode?: "full-access" | "supervised";
    kind?: "delivery" | "delegation";
    workingDirectory?: string;
    branch?: string;
    sessionId?: string;
    start?: boolean;
    prompt?: string;
    message?: string;
    attachments?: string[];
    detach?: boolean;
    autoStopAfterTurn?: boolean;
    timeoutMinutes?: number;
}
interface ThreadControlGit {
    runStackedAction(cwd: string, action: GitStackedAction, commitMessage?: string, featureBranch?: boolean, baseBranch?: string, githubToken?: string): Promise<GitStepResult>;
    isRepo?(cwd: string): Promise<boolean>;
    getPreferredRemote?(cwd: string, branch?: string): Promise<string | null>;
    getRemoteUrl?(cwd: string, name: string): Promise<string | null>;
    resolveDefaultBranch?(cwd: string, remoteUrl?: string | null): Promise<string>;
    createWorktree?(cwd: string, baseBranch: string, newBranch: string, customPath?: string): Promise<{
        path: string;
        branch: string;
    }>;
}
export interface ThreadControlToolDeps {
    threadService: ThreadService;
    providerRegistry: ProviderRegistry;
    userService?: UserService;
    sessionState?: SessionStateService;
    skillRegistry?: SkillRegistry;
    ws?: WsControlPlane;
    mcpConfig?: {
        host: string;
        port: number;
    };
    config?: AppConfig;
    gitService?: ThreadControlGit;
}
export declare function createThreadControlTool(deps: ThreadControlToolDeps): ToolDefinition<ThreadControlInput>;
export {};
//# sourceMappingURL=thread-tools.d.ts.map