/** * Environment-variable declaration sites in infrastructure files (change: add-iac-code-binding). * * Where a deployment SETS an env var: a Kubernetes container `env`, a compose `environment`, a * Dockerfile `ENV`, a Terraform/OpenTofu or CloudFormation/SAM function environment map, an ECS * container definition, or a GitHub Actions `env`. Each site records the key, the ecosystem, the * resource, the file and line, and whether a value is written there literally — NEVER the value. * * A source that sets variables this reader cannot enumerate (Kubernetes `envFrom`, compose * `env_file`, ECS `EnvironmentFiles`, a Terraform `dynamic "env"`, an environment map built by an * expression) is returned as an opaque source, so the caller can say the variable may be set there * instead of implying it is not. * * Pure, deterministic, and linear in the file size: one file in, sites out. No I/O, no rendering * (Helm), no `terraform plan`. Keys are read only where the format puts keys — never from inside a * value, a string, a comment, or a heredoc. */ export type EnvEcosystem = 'Kubernetes' | 'Docker Compose' | 'Dockerfile' | 'Terraform' | 'CloudFormation' | 'GitHub Actions' | 'Serverless'; export interface EnvDeclaration { name: string; ecosystem: EnvEcosystem; /** The resource that sets it: `Deployment/api/web`, `service/web`, `aws_lambda_function.orders`, `job/build`. */ resource: string; file: string; line: number; /** Whether a non-empty value is written at this site as a literal (no interpolation, reference, or secret source). */ literalValue: boolean; } /** A place that sets variables this reader cannot enumerate. */ export interface OpaqueEnvSource { ecosystem: EnvEcosystem; resource: string; file: string; line: number; reason: string; } export interface EnvDeclarationScan { declarations: EnvDeclaration[]; opaque: OpaqueEnvSource[]; } export declare function extractEnvDeclarations(file: { path: string; content: string; language: string; }): EnvDeclarationScan; //# sourceMappingURL=env-declarations.d.ts.map