import type { PlanArtifactPhaseRecommendation } from "./plan-artifact-v1.js";
/** Aligns with task-engine `PHASE_KEY_RE` (keep in sync manually — core must not import modules). */
export declare const PLAN_ARTIFACT_PHASE_KEY_RE: RegExp;
export declare const PLAN_ARTIFACT_PHASE_DESCRIPTION_MAX_WORDS = 5;
export type PlanArtifactPhaseProposal = {
    phaseKey: string;
    label: string;
    /** Short operator-facing description (target ≤5 words). */
    description: string;
};
export type PlanArtifactPhaseProposalFinding = {
    code: string;
    message: string;
    severity: "blocker" | "warning";
    field?: string;
};
export type ResolvePlanArtifactPhaseProposalInput = {
    /** Command argv override (wins). */
    targetPhaseKey?: string;
    targetPhase?: string;
    /** Alias for explicit phase key (WORKFLOW_PLAN). */
    preferredPhaseKey?: string;
    phaseShortDescription?: string;
    phaseRecommendations: PlanArtifactPhaseRecommendation[];
    /** Phase keys with active execution work (e.g. ready / in_progress). */
    activePhaseKeys?: string[];
    /** When true, an explicit key may reuse an active phase bucket. */
    allowPhaseKeyCollision?: boolean;
    /** Long descriptions are blockers when true; warnings when false. */
    strict?: boolean;
};
export type ResolvePlanArtifactPhaseProposalSuccess = {
    ok: true;
    proposal: PlanArtifactPhaseProposal;
    findings: PlanArtifactPhaseProposalFinding[];
    source: "explicit" | "recommendation" | "auto";
};
export type ResolvePlanArtifactPhaseProposalFailure = {
    ok: false;
    code: "plan-artifact-phase-proposal-blocked";
    findings: PlanArtifactPhaseProposalFinding[];
};
export type ResolvePlanArtifactPhaseProposalResult = ResolvePlanArtifactPhaseProposalSuccess | ResolvePlanArtifactPhaseProposalFailure;
export declare function countDescriptionWords(description: string): number;
/**
 * Deterministic phase target for finalize-plan-to-phase (WP-6 / T-6.2).
 * Pure function — no task-store or filesystem I/O.
 */
export declare function resolvePlanArtifactPhaseProposal(input: ResolvePlanArtifactPhaseProposalInput): ResolvePlanArtifactPhaseProposalResult;
