/**
 * Variable resolver — handles dynamic variable interpolation.
 *
 * Resolves dynamic variables ($latest, $env, $now, etc.) in task
 * configurations. All resolved values are recorded in the
 * VariableEnvelope with provenance metadata for audit and cache
 * invalidation.
 *
 * Design decision: dynamic variables are opt-in and logged.
 * A task must explicitly use `$latest` or `$env(VAR)` syntax —
 * there's no implicit resolution. Every dynamic resolution is
 * recorded in provenance for reproducibility tracking.
 *
 * @see docs/design-docs/architecture-overhaul/domain-model.md (VariableEnvelope)
 * @see docs/archive/exec-plans/architecture-overhaul/phase-2-config-compiler.md
 */
import type { VariableDeclaration, VariableEnvelope } from "../../_vendor/ailf-core/index.d.ts";
/** Options for variable resolution */
export interface VariableResolverOptions {
    /** Environment variables available for $env() resolution */
    env?: Record<string, string | undefined>;
    /** Log dynamic resolutions */
    log?: (message: string) => void;
}
/** Result of resolving variables */
export interface VariableResolutionResult {
    /** Updated variable envelope with resolved values */
    envelope: VariableEnvelope;
    /** Resolution log entries */
    resolutions: string[];
    /** Warnings for unresolvable references */
    warnings: string[];
}
/**
 * Resolve dynamic variables in a VariableEnvelope.
 *
 * Scans all string values for dynamic patterns and replaces them
 * with resolved values. Non-string values are passed through unchanged.
 */
export declare function resolveVariables(envelope: VariableEnvelope, options?: VariableResolverOptions): VariableResolutionResult;
/**
 * Create a VariableEnvelope from a plain key-value map.
 *
 * Convenience function for wrapping raw variables with empty provenance.
 */
export declare function createEnvelope(values: Record<string, unknown>, declarations?: VariableDeclaration[]): VariableEnvelope;
