/** * Binds the ECS services a manifest declares to the services the app's * Compute stack exports as deployable, by the EXACT export name the contract * builds from a service's stack, cluster and name (`deployableServiceExportName` * in `@fjall/util`, or the unqualified form stacks emitted before it). * * This replaces matching a manifest service name by containment in an export * name, which bound `api` to `standardsapi`, and collapsed every service of an * app onto the first export's cluster. */ import { type Result } from "@fjall/generator"; import type { ManifestDockerService } from "@fjall/util/manifest"; import type { DeployableService, DeployableServiceResolution } from "../../services/infrastructure/EcsServiceResolver.js"; export interface BoundService { manifest: ManifestDockerService; live: DeployableService; } /** * `bound` and `unmatchedManifest` follow manifest order; `unmatchedLive` * follows the resolution's order. */ export interface ManifestServiceBinding { bound: BoundService[]; unmatchedManifest: ManifestDockerService[]; unmatchedLive: DeployableService[]; } /** * `manifestServices` are the manifest's ECS services — a container-Lambda * entry has no cluster and must not be passed. A service whose manifest * entry records no cluster cannot be named, so the binding fails closed * naming it and the cure rather than guessing a cluster. */ export declare function bindManifestServicesToLive(manifestServices: readonly ManifestDockerService[], resolution: DeployableServiceResolution): Result;