import type { ChorusProgress, ChorusResult } from "../types.js"; import type { ChorusJob } from "../jobs.js"; import type { PiLikeContext } from "../pi-context.js"; export interface ChorusCommandJobResponse { result: ChorusResult; text: string; } export interface ChorusCommandJobHooks { signal: AbortSignal; onProgress: (updates: ChorusProgress[]) => void; onStatus: (message: string) => void; } export interface ChorusCommandJobOptions { job: ChorusJob; kind: "ask" | "agent"; title: string; presetName: string; prompt: string; optimizedPrompt?: string; outputDir?: string; initialStatus: string; widgetTitle: string; workingMessage: string; actorLabel: "voice" | "agent"; actorPlural: string; statusPattern: RegExp; failedStatus: string; failedMessagePrefix: string; run: (hooks: ChorusCommandJobHooks) => Promise; details: (response: ChorusCommandJobResponse) => unknown; } export declare function runChorusCommandJob(ctx: PiLikeContext, options: ChorusCommandJobOptions): void; export declare function bindJobToHostSignal(job: ChorusJob, hostSignal: AbortSignal | undefined): () => void;