/**
 * @fileoverview Pure, framework-agnostic helpers for the Knowledge Hub
 * **Feature Pipelines** resource component's AI-agent integration.
 *
 * Free of Angular / component dependencies so they can be unit-tested in
 * isolation. The component supplies its `FeaturePipelineSummary[]` snapshot and
 * these helpers shape the deep agent context + resolve agent-supplied pipeline
 * references (by id → name → contains).
 *
 * 🔒 SAFETY: these helpers only PROJECT state and RESOLVE references — no
 * mutation, no side effects.
 */
import type { FeaturePipelineSummary, FeaturePipelineRunStatus } from './feature-pipeline.engine';
/**
 * The salient slice of a feature pipeline the agent reasons over. Structurally a
 * subset of {@link FeaturePipelineSummary} so the component can pass its
 * summaries straight in.
 */
export interface FeaturePipelineCandidate {
    ID: string;
    Name: string;
    TargetEntity: string;
    OutputAttribute: string | null;
    Status: 'Active' | 'Disabled' | 'Draft';
    /** Derived from {@link FeaturePipelineSummary} (ultimately the entity's CodeGen union) so the two never drift. */
    WorkType: FeaturePipelineSummary['WorkType'];
    LastRunStatus: FeaturePipelineRunStatus;
    OnDemandEnabled: boolean;
}
/**
 * Resolve a pipeline reference the way the agent expresses it — by id (exact,
 * case-insensitive) → name (exact, case-insensitive) → name *contains*
 * (case-insensitive). Pure + deterministic.
 *
 * @returns the matched pipeline, or null on a miss.
 */
export declare function resolvePipeline<T extends {
    ID: string;
    Name: string;
}>(input: string, pipelines: readonly T[]): T | null;
/** Build a tolerant "no pipeline matches" error listing a bounded sample of names. */
export declare function buildPipelineNotFoundError(input: string, available: readonly string[]): string;
/** Component-supplied snapshot for the Feature Pipelines agent context. */
export interface FeaturePipelinesAgentContextInput {
    /** Every pipeline (unfiltered) — drives counts + the bounded name list. */
    AllPipelines: FeaturePipelineSummary[];
    /** Pipelines after the search filter — drives the filtered count. */
    FilteredPipelines: FeaturePipelineSummary[];
    /** The active search query. */
    SearchQuery: string;
    /** Ids of pipelines with a Run currently in flight. */
    RunningIDs: ReadonlySet<string>;
    /** Whether the surface is mid-load. */
    IsLoading: boolean;
}
/**
 * Build the agent-visible context for the Feature Pipelines surface. Publishes
 * deep counts (by status, by run-outcome, by work-type), the active search,
 * which pipelines are running, and a **bounded** structured list of the filtered
 * pipelines (name · target entity · output attribute · status · last-run) so the
 * agent can pick one to run or open. A companion truncation flag tells it when
 * the list is capped.
 */
export declare function buildFeaturePipelinesAgentContext(input: FeaturePipelinesAgentContextInput): Record<string, unknown>;
//# sourceMappingURL=feature-pipelines-agent-context.d.ts.map