import type { StreamFn } from "@earendil-works/pi-agent-core";
import type { ExtensionAPI, ExtensionFactory } from "@earendil-works/pi-coding-agent";
import { type ForgeToolDefs } from "./forge-tools.js";
/**
 * Test-only seam (forge-cli#17). Resolves a StreamFn for a given dispatch
 * context — ceremony or per-phase. Production callers leave this undefined.
 */
export type SprintStreamFnFactory = (ctx: {
    kind: "task-phase" | "ceremony";
    persona: string;
    phase?: string;
    taskId?: string;
}) => StreamFn | undefined;
export interface RegisterRunSprintOptions {
    cwd?: string;
    /**
     * Test-only seam (forge-cli#17). When set, each `runForgeSubagent` call
     * spawned by the sprint handler (ceremony) and by the per-task pipeline
     * (each phase) is dispatched with `streamFn = factory({...})`. Production
     * callers leave this undefined.
     */
    streamFnFactory?: SprintStreamFnFactory;
    forgeToolDefs?: ForgeToolDefs;
    /** Extension factories forwarded to each task's subagent sessions (see RunTaskPipelineOptions). */
    extensionFactories?: ExtensionFactory[];
}
export declare function registerRunSprint(pi: ExtensionAPI, options?: RegisterRunSprintOptions): void;
