import type { HerokuApiClientOptions } from '@heroku/heroku-fetch'; import type { Pipeline } from '@heroku/types/3.sdk'; import type { ResourceCtx } from '../../../core/extend-resource.js'; export type ResolvePipelineOptions = { clientOptions?: HerokuApiClientOptions; signal?: AbortSignal; }; export declare class PipelineNotFoundError extends Error { readonly identity: string; readonly id = "not_found"; readonly statusCode = 404; constructor(identity: string); get body(): { id: string; message: string; resource: string; }; } export declare class PipelineAmbiguousError extends Error { readonly identity: string; readonly matches: Pipeline[]; readonly id = "multiple_matches"; readonly statusCode = 422; constructor(identity: string, matches: Pipeline[]); get body(): { id: string; message: string; }; } /** * Resolve a Pipeline by identity. * * The identity may be: * - a UUID — fetched directly via `pipeline.info`. * - a name — looked up via `GET /pipelines?eq[name]=`. Pipeline * names are not unique platform-wide, so a name lookup may return * zero, one, or many matches. * * The name path uses a raw `HerokuApiClient` because the route * registry's `pipeline.list` doesn't accept query params, and we don't * want to bake those params into the routes-generated client (where * they would leak across unrelated calls). * * Errors: * - throws `PipelineNotFoundError` when no pipeline matches the name. * - throws `PipelineAmbiguousError` when more than one does. Callers * that want to prompt the user should catch this and inspect * `error.matches`. */ export declare function resolvePipeline(ctx: Pick, identity: string, options?: ResolvePipelineOptions): Promise; export declare const pipelineExtensions: import("../../../core/extend-resource.js").ResourceExtension<"platform", "pipeline", { resolve: (identity: string, options?: ResolvePipelineOptions) => Promise; }>;