/**
 * Applying {@link KillReference|kills} (e.g., produced by `rm`) to an {@link REnvironmentInformation}.
 * @module
 */
import type { ControlDependency, KillReference } from '../info';
import type { REnvironmentInformation } from './environment';
import type { IdentifierReference } from './identifier';
/**
 * Accounts for the writes after a kill: a re-definition revives a `named` removal (dropping it), a conditional
 * one only revives it in its branch, and a wholesale (`all`/`unknown`) removal stays but spares the names written
 * after it.
 */
export declare function cancelRevivedKills(kills: readonly KillReference[], writes: readonly IdentifierReference[]): KillReference[];
/**
 * Applies the given {@link KillReference|kills} to a copy of `env`. `named` kills remove (or, when conditional,
 * weaken to maybe) a single definition; `all` kills clear the current frame; `unknown` kills weaken every
 * in-scope definition to maybe. Returns `env` unchanged when there is nothing to apply.
 */
export declare function applyKills(env: REnvironmentInformation, kills: readonly KillReference[] | undefined): REnvironmentInformation;
/** Attaches `cds` to a list of kills, turning them into conditional (maybe) kills. */
export declare function makeKillsMaybe(kills: readonly KillReference[] | undefined, cds: readonly ControlDependency[]): KillReference[];
