/**
 * Fast Feature Agent Graph Factory
 *
 * Creates a LangGraph StateGraph with nodes: fast-implement (+ evidence sub-agent) → merge.
 * This is the fast-mode alternative to createFeatureAgentGraph() which has
 * 15+ nodes. The merge node and its CI watch/fix loop are reused via
 * composition from the full graph's createMergeNode(). Evidence collection
 * runs as a sub-agent call within fast-implement, not as a separate node.
 *
 * Uses the same FeatureAgentAnnotation state shape as the full graph,
 * enabling checkpointing, resume, and identical worker lifecycle handling.
 */
import { type BaseCheckpointSaver } from '@langchain/langgraph';
import type { IAgentExecutor } from '../../../../application/ports/output/agents/agent-executor.interface.js';
import { type MergeNodeDeps } from './nodes/merge/merge.node.js';
export { FeatureAgentAnnotation, type FeatureAgentState } from './state.js';
/**
 * Dependencies needed to build the fast feature agent graph.
 * Same shape as FeatureAgentGraphDeps for consistency.
 */
export interface FastFeatureAgentGraphDeps {
    executor: IAgentExecutor;
    mergeNodeDeps?: Omit<MergeNodeDeps, 'executor'>;
}
/**
 * Factory function that creates and compiles the fast-mode feature agent graph.
 *
 * The graph defines a minimal workflow:
 *   START → fast-implement (+ evidence sub-agent) → merge → conditional(reexecute or END)
 *
 * Evidence collection runs as a sub-agent call within fast-implement, not as
 * a separate graph node. When merge is rejected, routeReexecution routes back
 * to fast-implement for a fresh implementation pass.
 *
 * @param depsOrExecutor - Graph dependencies or a legacy executor
 * @param checkpointer - Optional checkpoint saver for state persistence
 * @returns A compiled LangGraph ready to be invoked
 */
export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureAgentGraphDeps | IAgentExecutor, checkpointer?: BaseCheckpointSaver): import("@langchain/langgraph").CompiledStateGraph<{
    featureId: string;
    repositoryPath: string;
    specDir: string;
    worktreePath: string;
    currentNode: string;
    error: string | null;
    approvalGates: import("../../../../domain/index.js").ApprovalGates | undefined;
    model: string | undefined;
    messages: string[];
    validationRetries: number;
    lastValidationTarget: string;
    lastValidationErrors: string[];
    _approvalAction: string | null;
    _rejectionFeedback: string | null;
    _needsReexecution: boolean;
    prUrl: string | null;
    prNumber: number | null;
    commitHash: string | null;
    ciStatus: string | null;
    push: boolean;
    openPr: boolean;
    forkAndPr: boolean;
    commitSpecs: boolean;
    ciWatchEnabled: boolean;
    enableEvidence: boolean;
    commitEvidence: boolean;
    evidence: import("../../../../domain/index.js").Evidence[];
    evidenceRetries: number;
    resumeReason: string | undefined;
    ciFixAttempts: number;
    ciFixHistory: import("../../../../domain/index.js").CiFixRecord[];
    ciFixStatus: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted";
}, {
    featureId?: string | undefined;
    repositoryPath?: string | undefined;
    specDir?: string | undefined;
    worktreePath?: string | undefined;
    currentNode?: string | undefined;
    error?: string | null | undefined;
    approvalGates?: import("../../../../domain/index.js").ApprovalGates | undefined;
    model?: string | undefined;
    messages?: string[] | undefined;
    validationRetries?: number | undefined;
    lastValidationTarget?: string | undefined;
    lastValidationErrors?: string[] | undefined;
    _approvalAction?: string | null | undefined;
    _rejectionFeedback?: string | null | undefined;
    _needsReexecution?: boolean | undefined;
    prUrl?: string | null | undefined;
    prNumber?: number | null | undefined;
    commitHash?: string | null | undefined;
    ciStatus?: string | null | undefined;
    push?: boolean | undefined;
    openPr?: boolean | undefined;
    forkAndPr?: boolean | undefined;
    commitSpecs?: boolean | undefined;
    ciWatchEnabled?: boolean | undefined;
    enableEvidence?: boolean | undefined;
    commitEvidence?: boolean | undefined;
    evidence?: import("../../../../domain/index.js").Evidence[] | undefined;
    evidenceRetries?: number | undefined;
    resumeReason?: string | undefined;
    ciFixAttempts?: number | undefined;
    ciFixHistory?: import("../../../../domain/index.js").CiFixRecord[] | undefined;
    ciFixStatus?: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted" | undefined;
}, "fast-implement" | "__start__", {
    featureId: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    repositoryPath: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    specDir: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    worktreePath: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    currentNode: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
    model: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
    messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
    validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
    lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
    lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
    _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
    commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    ciWatchEnabled: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    enableEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    commitEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
    evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
    resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
    ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
    ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
    ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
}, {
    featureId: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    repositoryPath: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    specDir: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    worktreePath: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    currentNode: {
        (): import("@langchain/langgraph").LastValue<string>;
        (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
    };
    error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
    model: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
    messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
    validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
    lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
    lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
    _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
    commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
    push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    ciWatchEnabled: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    enableEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    commitEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
    evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
    evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
    resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
    ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
    ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
    ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
}, import("@langchain/langgraph").StateDefinition, {
    "fast-implement": Partial<import("@langchain/langgraph").StateType<{
        featureId: {
            (): import("@langchain/langgraph").LastValue<string>;
            (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
            Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
        };
        repositoryPath: {
            (): import("@langchain/langgraph").LastValue<string>;
            (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
            Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
        };
        specDir: {
            (): import("@langchain/langgraph").LastValue<string>;
            (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
            Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
        };
        worktreePath: {
            (): import("@langchain/langgraph").LastValue<string>;
            (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
            Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
        };
        currentNode: {
            (): import("@langchain/langgraph").LastValue<string>;
            (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
            Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
        };
        error: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
        approvalGates: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").ApprovalGates | undefined, import("../../../../domain/index.js").ApprovalGates | undefined>;
        model: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
        messages: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
        validationRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
        lastValidationTarget: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
        lastValidationErrors: import("@langchain/langgraph").BinaryOperatorAggregate<string[], string[]>;
        _approvalAction: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
        _rejectionFeedback: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
        _needsReexecution: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
        prUrl: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
        prNumber: import("@langchain/langgraph").BinaryOperatorAggregate<number | null, number | null>;
        commitHash: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
        ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
        push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
        openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
        forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
        commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
        ciWatchEnabled: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
        enableEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
        commitEvidence: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
        evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
        evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
        resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
        ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
        ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
        ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
    }>>;
}, unknown, unknown>;
//# sourceMappingURL=fast-feature-agent-graph.d.ts.map