import type { PlanArtifactPlanningType, PlanArtifactWbsItem } from "./plan-artifact-v1.js";
/**
 * Row shape accepted by `persist-planning-execution-drafts` / `buildTaskFromConversionPayload`.
 * `phase` may be filled by the caller context when omitted on the WBS payload.
 */
export type PlanningExecutionTaskDraft = {
    id?: string;
    title: string;
    type?: string;
    priority?: "P1" | "P2" | "P3";
    phase?: string;
    phaseKey?: string;
    approach: string;
    technicalScope: string[];
    acceptanceCriteria: string[];
    dependsOn?: string[];
    status?: "proposed" | "ready";
    metadata?: Record<string, unknown>;
};
export type NormalizeWbsToTaskDraftContext = {
    planRef: string;
    planId: string;
    planVersion: number;
    planningType: PlanArtifactPlanningType;
    /** Applied when neither payload nor WBS `recommendedPhase` supplies phase text. */
    defaultPhase: string;
    defaultPhaseKey?: string;
    defaultStatus?: "proposed" | "ready";
};
export type WbsShapeFinding = {
    code: string;
    message: string;
    field?: string;
};
export type WbsShapeGuardResult = {
    ok: true;
    item: PlanArtifactWbsItem;
} | {
    ok: false;
    code: "wbs-shape-invalid";
    findings: WbsShapeFinding[];
};
export type NormalizeWbsToTaskDraftResult = {
    ok: true;
    draft: PlanningExecutionTaskDraft;
    /** Provenance fields for finalize (WP-6); not part of persist argv today. */
    planningProvenance: {
        planId: string;
        planVersion: number;
        wbsId: string;
        wbsPath?: string;
        planRef: string;
        planningType: PlanArtifactPlanningType;
        source: "normalize-wbs-to-task-draft";
    };
} | {
    ok: false;
    code: "wbs-shape-invalid";
    findings: WbsShapeFinding[];
};
/** Structural guard for WBS rows (schema validation is separate — see plan-artifact JSON Schema). */
export declare function validatePlanArtifactWbsItemShape(item: unknown): WbsShapeGuardResult;
export declare function isPlanArtifactWbsItem(value: unknown): value is PlanArtifactWbsItem;
/**
 * Stub normalizer (WP-1.3): maps a WBS row to a persist-compatible task draft.
 * Full provenance attachment and id allocation happen in WP-6 finalize.
 */
export declare function normalizeWbsItemToTaskDraft(item: PlanArtifactWbsItem, context: NormalizeWbsToTaskDraftContext): NormalizeWbsToTaskDraftResult;
