import type { TaskCategory } from "./modelCatalog.js";
import type { AdapterKey, OutputEnvelope, WorkflowDefinition } from "./types.js";
export interface StepDigest {
    key: string;
    kind: string;
    title?: string;
    objective?: string;
    /** Resolved adapter for task steps; "approval"/"system" for non-task steps. */
    adapterKey: string;
    model?: string;
    dependsOn: string[];
    stateFrom?: "all" | "none" | string[];
    skills: string[];
    systemPromptCount: number;
    systemPromptChars: number;
    contextChars: number;
}
export interface WorkflowDigest {
    key: string;
    title: string;
    description?: string;
    objectives: string[];
    stepCount: number;
    steps: StepDigest[];
}
export declare function buildWorkflowDigest(workflow: WorkflowDefinition): WorkflowDigest;
export interface StepVerdict {
    stepKey: string;
    category: TaskCategory;
    configuredModel?: string;
    verdict: "ok" | "overkill" | "underpowered" | "unknown";
    suggestedModel?: string;
    reasoning: string;
}
export interface ComplexityFlag {
    kind: "step-too-broad" | "missing-state-scoping" | "context-bloat" | "redundant-step" | "unclear-objective" | "other";
    stepKeys: string[];
    suggestion: string;
}
export interface JudgeVerdict {
    workflowKey: string;
    steps: StepVerdict[];
    complexityFlags: ComplexityFlag[];
    summary: string;
}
export declare function extractFirstJsonObject(text: string): unknown;
export declare function extractVerdictCandidate(output: OutputEnvelope): unknown;
export declare function parseJudgeVerdict(raw: unknown, workflow: WorkflowDefinition): JudgeVerdict | string;
export declare function buildJudgePrompt(digest: WorkflowDigest): string;
export declare function buildMockVerdict(digest: WorkflowDigest): JudgeVerdict;
export interface JudgeOptions {
    adapterKey?: AdapterKey;
    model?: string;
}
export declare function runJudge(workflow: WorkflowDefinition, workflowFilePath: string, options?: JudgeOptions): Promise<JudgeVerdict | string>;
