import type { Logger } from "pino";
import type { TerminalManager } from "../../../terminal/terminal-manager.js";
import type { WorkspaceGitService } from "../../workspace-git-service.js";
import type { AgentWorktreeSetupContinuation, CreatePaseoWorktreeWorkflowFn } from "../../worktree-session.js";
import type { AgentAttachment, FirstAgentContext, GitSetupOptions } from "../../messages.js";
import type { AgentManager, ManagedAgent } from "../agent-manager.js";
import type { StructuredGenerationDaemonConfig } from "../structured-generation-providers.js";
import type { AgentSessionConfig } from "../agent-sdk-types.js";
import type { AgentStorage } from "../agent-storage.js";
import type { ProviderSnapshotManager } from "../provider-snapshot-manager.js";
export interface CreateAgentWorkspace {
    workspaceId: string;
}
export interface CreateAgentSessionWorktreeResult {
    sessionConfig: AgentSessionConfig;
    setupContinuation?: AgentWorktreeSetupContinuation;
}
interface CreateAgentCommandDependencies {
    agentManager: AgentManager;
    agentStorage: AgentStorage;
    logger: Logger;
    paseoHome?: string;
    worktreesRoot?: string;
    workspaceGitService?: Pick<WorkspaceGitService, "getSnapshot" | "listWorktrees" | "resolveRepoRoot">;
    terminalManager?: TerminalManager | null;
    providerSnapshotManager: ProviderSnapshotManager;
    daemonConfig?: StructuredGenerationDaemonConfig | null;
    createPaseoWorktree?: CreatePaseoWorktreeWorkflowFn;
}
export interface CreateAgentFromSessionInput {
    kind: "session";
    config: AgentSessionConfig;
    workspaceId?: string;
    worktreeName?: string;
    initialPrompt?: string;
    clientMessageId?: string;
    outputSchema?: Record<string, unknown>;
    images?: Array<{
        data: string;
        mimeType: string;
    }>;
    attachments?: AgentAttachment[];
    git?: GitSetupOptions;
    labels: Record<string, string>;
    env?: Record<string, string>;
    provisionalTitle: string | null;
    explicitTitle: string | null;
    firstAgentContext: FirstAgentContext;
    buildSessionConfig: (config: AgentSessionConfig, gitOptions?: GitSetupOptions, legacyWorktreeName?: string, firstAgentContext?: FirstAgentContext) => Promise<CreateAgentSessionWorktreeResult>;
    resolveWorkspace: (input: {
        cwd: string;
        workspaceId?: string;
    }) => Promise<CreateAgentWorkspace>;
}
export interface CreateAgentFromMcpInput {
    kind: "mcp";
    provider: string;
    title: string;
    initialPrompt: string;
    cwd?: string;
    thinking?: string;
    features?: Record<string, unknown>;
    labels?: Record<string, string>;
    mode?: string;
    background: boolean;
    notifyOnFinish: boolean;
    detached?: boolean;
    callerAgentId?: string;
    callerContext?: {
        lockedCwd?: string;
        allowCustomCwd?: boolean;
        childAgentDefaultLabels?: Record<string, string>;
    } | null;
    worktree?: {
        worktreeName?: string;
        baseBranch?: string;
        refName?: string;
        action?: "branch-off" | "checkout";
        githubPrNumber?: number;
    };
}
export type CreateAgentCommandInput = CreateAgentFromSessionInput | CreateAgentFromMcpInput;
export interface CreateAgentCommandResult {
    snapshot: ManagedAgent;
    liveSnapshot: ManagedAgent;
    background: boolean;
    initialPromptStarted: boolean;
}
export declare function createAgentCommand(dependencies: CreateAgentCommandDependencies, input: CreateAgentCommandInput): Promise<CreateAgentCommandResult>;
export {};
//# sourceMappingURL=create.d.ts.map