/**
 * Pipeline node management — create, update, delete, and query individual
 * nodes within multi-node agent pipelines.
 *
 * Pipeline nodes represent individual steps in a pipeline DAG. Each node has
 * a type (prompt, command, connector_exec, checkpoint), an optional phase
 * (define, plan, build, verify, review, ship), and dependency declarations.
 */
import type { RequestOptions } from "../base-client";
import type { RequestBuilder } from "../request-builder";
/** Node type classification */
export type PipelineNodeType = "prompt" | "command" | "connector_exec" | "checkpoint";
/** Lifecycle phase for ISV portal workflow */
export type PipelineNodePhase = "define" | "plan" | "build" | "verify" | "review" | "ship";
/** Pipeline node response type */
export interface PipelineNode {
    id: string;
    pipeline_id: string;
    node_key: string;
    node_type: PipelineNodeType;
    label: string;
    description?: string | null;
    position_x: number;
    position_y: number;
    order: number;
    phase?: PipelineNodePhase | null;
    agent_id?: string | null;
    prompt_template?: string | null;
    model_id?: string | null;
    tool_grants?: string[] | null;
    action_type?: string | null;
    action_config?: Record<string, unknown> | null;
    connector_type?: string | null;
    command_template?: string | null;
    slot_definitions?: Record<string, unknown> | null;
    approval_message?: string | null;
    depends_on: string[];
    inputs?: Record<string, unknown> | null;
    output_schema?: Record<string, unknown> | null;
    timeout_ms?: number | null;
    max_retries: number;
    condition?: Record<string, unknown> | null;
    acceptance_criteria?: Array<Record<string, unknown>> | null;
    feedback_loop_acknowledged: boolean;
    inserted_at: string;
    updated_at: string;
}
/** Attributes for creating a pipeline node */
export interface CreatePipelineNodeAttributes {
    /** UUID of the parent pipeline (required) */
    pipeline_id: string;
    /** Unique key within the pipeline, lowercase snake_case (required) */
    node_key: string;
    /** Node type classification (required) */
    node_type: PipelineNodeType;
    /** Human-readable label (required) */
    label: string;
    /** Optional description */
    description?: string;
    /** Canvas X position */
    position_x?: number;
    /** Canvas Y position */
    position_y?: number;
    /** Execution order within phase */
    order?: number;
    /** Lifecycle phase */
    phase?: PipelineNodePhase;
    /** Agent to execute (for prompt nodes) */
    agent_id?: string;
    /** Prompt template (for prompt nodes without agent_id) */
    prompt_template?: string;
    /** LLM model override */
    model_id?: string;
    /** Tool grants for the agent */
    tool_grants?: string[];
    /** Action type (for command nodes) */
    action_type?: string;
    /** Action configuration */
    action_config?: Record<string, unknown>;
    /** Connector type (for connector_exec nodes) */
    connector_type?: string;
    /** Command template */
    command_template?: string;
    /** Slot definitions for input/output mapping */
    slot_definitions?: Record<string, unknown>;
    /** Approval message (for checkpoint nodes) */
    approval_message?: string;
    /** Node IDs this node depends on */
    depends_on?: string[];
    /** Input mappings (dot-path resolution) */
    inputs?: Record<string, unknown>;
    /** Expected output JSON Schema */
    output_schema?: Record<string, unknown>;
    /** Execution timeout in milliseconds */
    timeout_ms?: number;
    /** Maximum retry attempts */
    max_retries?: number;
    /** Conditional execution rule */
    condition?: Record<string, unknown>;
    /** Acceptance criteria for quality gating */
    acceptance_criteria?: Array<Record<string, unknown>>;
    /** Acknowledge feedback loop in DAG */
    feedback_loop_acknowledged?: boolean;
}
/** Attributes for updating a pipeline node (all optional) */
export interface UpdatePipelineNodeAttributes {
    label?: string;
    description?: string;
    position_x?: number;
    position_y?: number;
    order?: number;
    phase?: PipelineNodePhase;
    agent_id?: string;
    prompt_template?: string;
    model_id?: string;
    tool_grants?: string[];
    action_type?: string;
    action_config?: Record<string, unknown>;
    connector_type?: string;
    command_template?: string;
    slot_definitions?: Record<string, unknown>;
    approval_message?: string;
    depends_on?: string[];
    inputs?: Record<string, unknown>;
    output_schema?: Record<string, unknown>;
    timeout_ms?: number;
    max_retries?: number;
    condition?: Record<string, unknown>;
    acceptance_criteria?: Array<Record<string, unknown>>;
    feedback_loop_acknowledged?: boolean;
}
/**
 * Creates the pipeline nodes namespace with typed CRUD operations.
 *
 * @example
 * ```typescript
 * const node = await admin.pipelineNodes.create({
 *   pipeline_id: pipelineId,
 *   node_key: "clarify_intent",
 *   node_type: "prompt",
 *   label: "Clarify Intent",
 *   agent_id: agentId,
 *   phase: "define",
 *   depends_on: [],
 * });
 *
 * const nodes = await admin.pipelineNodes.listByPipeline(pipelineId);
 * ```
 */
export declare function createPipelineNodesNamespace(rb: RequestBuilder): {
    /**
     * List all pipeline nodes across all pipelines (global index, policy-scoped).
     * For pipeline-specific listing, prefer {@link listByPipeline}.
     *
     * @param options - Request options (filters, pagination, includes)
     * @returns Array of pipeline nodes
     */
    list(options?: RequestOptions): Promise<PipelineNode[]>;
    /**
     * Get a pipeline node by ID.
     *
     * @param id - Pipeline node UUID
     * @param options - Request options
     * @returns The pipeline node
     */
    get(id: string, options?: RequestOptions): Promise<PipelineNode>;
    /**
     * List pipeline nodes for a specific pipeline.
     *
     * @param pipelineId - Pipeline UUID
     * @param options - Request options
     * @returns Array of pipeline nodes belonging to the pipeline
     */
    listByPipeline(pipelineId: string, options?: RequestOptions): Promise<PipelineNode[]>;
    /**
     * Create a new pipeline node.
     *
     * @param attributes - Node attributes (pipeline_id, node_key, node_type, label required)
     * @param options - Request options
     * @returns The created pipeline node
     */
    create(attributes: CreatePipelineNodeAttributes, options?: RequestOptions): Promise<PipelineNode>;
    /**
     * Update a pipeline node.
     *
     * @param id - Pipeline node UUID
     * @param attributes - Attributes to update
     * @param options - Request options
     * @returns The updated pipeline node
     */
    update(id: string, attributes: UpdatePipelineNodeAttributes, options?: RequestOptions): Promise<PipelineNode>;
    /**
     * Delete a pipeline node.
     *
     * @param id - Pipeline node UUID
     * @param options - Request options
     */
    delete(id: string, options?: RequestOptions): Promise<void>;
};
//# sourceMappingURL=pipeline-nodes.d.ts.map