/** * Observability for the deploy framework. {@link runDeployment} emits structured lifecycle events * to a {@link DeployReporter} instead of writing to the console directly, so callers control where * the signal goes: the default ({@link consoleReporter}) renders human-readably to **stderr** — * keeping stdout clear for the deploy scripts' `export KEY=VAL` lines, which an orchestrator evals — * while e2e, a progress UI, or structured CI logging can inject their own reporter and consume the * events as data. Every hook is optional; an empty `{}` is a valid (silent) reporter. */ import type { AztecAddress } from '@aztec/aztec.js/addresses'; import type { TxHash } from '@aztec/stdlib/tx'; /** What a unit did: publish a contract, send an action's tx, or fund an address with Fee Juice. */ export type DeployUnitKind = 'publish' | 'action' | 'fund'; /** Identity of one execution unit (a single tx), as reported by the unit lifecycle hooks. */ export interface DeployUnitInfo { /** Human label, e.g. `publish goCoin`, `action mintGoCoin`. */ label: string; kind: DeployUnitKind; /** The account that sends and pays for this tx. */ account: AztecAddress; } /** What a unit produced once its tx settled. Fields beyond `durationMs` come from the receipt. */ export interface DeployUnitResult { txHash?: TxHash; blockNumber?: number; feePaid?: bigint; status?: string; durationMs: number; } /** An account's funding posture for this run, as resolved at planning time. */ export type AccountFunding = { kind: 'idle'; } | { kind: 'sponsored'; } | { kind: 'funded'; balance: bigint; } | { kind: 'not-funded'; balance: bigint; fundAmount: bigint; }; export interface DeployPlanAccount { alias: string; address: AztecAddress; funding: AccountFunding; } export interface DeployPlanStep { id: string; kind: 'contract' | 'action' | 'fund'; /** * Status at the start of the run: a contract is `published` / `to publish` (public) or * `registered` (private); an action is `done` / `to run`; a fund step is `funded` / `to fund`. */ status: 'published' | 'to publish' | 'registered' | 'done' | 'to run' | 'funded' | 'to fund'; /** Steps it depends on (constructor-arg refs and explicit `dependsOn`). */ dependsOn: string[]; } export interface DeployPlan { /** Human label for the target (e.g. `local`, or a caller-chosen name). */ label: string; accounts: DeployPlanAccount[]; steps: DeployPlanStep[]; /** Execution layers (step ids) — what will actually run, in dependency order. A layer runs parallel. */ layers: string[][]; } export interface DeploySummary { label: string; contracts: { alias: string; address: AztecAddress; status: 'published' | 'registered'; }[]; accounts: { alias: string; address: AztecAddress; }[]; } export interface BridgeEvent { recipient: AztecAddress; amount: bigint; /** True when resuming a persisted claim instead of bridging anew. */ reused: boolean; } /** Lifecycle hooks the framework emits during a run. All optional — implement only what you need. */ export interface DeployReporter { /** The resolved plan, before execution. */ onPlan?(plan: DeployPlan): void; /** Everything is already on-chain; nothing will be sent. */ onNothingToDo?(label: string): void; /** An account's Fee Juice is being topped up (or a persisted claim is being resumed). */ onBridge?(event: BridgeEvent): void; /** A unit's tx is about to be sent. */ onUnitStart?(unit: DeployUnitInfo): void; /** A unit's tx settled successfully. */ onUnitSettled?(unit: DeployUnitInfo, result: DeployUnitResult): void; /** A unit's tx threw; the run will abort after this. */ onUnitError?(unit: DeployUnitInfo, error: unknown): void; /** The run finished; `summary` holds the final resolved state. */ onComplete?(summary: DeploySummary): void; } /** * The default reporter: renders events human-readably to **stderr**. Stderr (not stdout) so the * traces survive an orchestrator that captures stdout for the scripts' `export` lines. */ export declare function consoleReporter(): DeployReporter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXBsb3kvcmVwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSS9DLG1HQUFtRztBQUNuRyxNQUFNLE1BQU0sY0FBYyxHQUFHLFNBQVMsR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBRTNELDZGQUE2RjtBQUM3RixNQUFNLFdBQVcsY0FBYztJQUM3QiwrREFBK0Q7SUFDL0QsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLElBQUksRUFBRSxjQUFjLENBQUM7SUFDckIsbURBQW1EO0lBQ25ELE9BQU8sRUFBRSxZQUFZLENBQUM7Q0FDdkI7QUFFRCxrR0FBa0c7QUFDbEcsTUFBTSxXQUFXLGdCQUFnQjtJQUMvQixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEIsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNqQixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEIsVUFBVSxFQUFFLE1BQU0sQ0FBQztDQUNwQjtBQUVELCtFQUErRTtBQUMvRSxNQUFNLE1BQU0sY0FBYyxHQUN0QjtJQUFFLElBQUksRUFBRSxNQUFNLENBQUE7Q0FBRSxHQUNoQjtJQUFFLElBQUksRUFBRSxXQUFXLENBQUE7Q0FBRSxHQUNyQjtJQUFFLElBQUksRUFBRSxRQUFRLENBQUM7SUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFBO0NBQUUsR0FDbkM7SUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUFDLFVBQVUsRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFDO0FBRWhFLE1BQU0sV0FBVyxpQkFBaUI7SUFDaEMsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLE9BQU8sRUFBRSxZQUFZLENBQUM7SUFDdEIsT0FBTyxFQUFFLGNBQWMsQ0FBQztDQUN6QjtBQUVELE1BQU0sV0FBVyxjQUFjO0lBQzdCLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDWCxJQUFJLEVBQUUsVUFBVSxHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDckM7OztPQUdHO0lBQ0gsTUFBTSxFQUFFLFdBQVcsR0FBRyxZQUFZLEdBQUcsWUFBWSxHQUFHLE1BQU0sR0FBRyxRQUFRLEdBQUcsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM3RiwyRUFBMkU7SUFDM0UsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO0NBQ3JCO0FBRUQsTUFBTSxXQUFXLFVBQVU7SUFDekIsMEVBQTBFO0lBQzFFLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDZCxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztJQUM5QixLQUFLLEVBQUUsY0FBYyxFQUFFLENBQUM7SUFDeEIsMEdBQXdHO0lBQ3hHLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO0NBQ3BCO0FBRUQsTUFBTSxXQUFXLGFBQWE7SUFDNUIsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLFNBQVMsRUFBRTtRQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7UUFBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO1FBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxZQUFZLENBQUE7S0FBRSxFQUFFLENBQUM7SUFDMUYsUUFBUSxFQUFFO1FBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUFDLE9BQU8sRUFBRSxZQUFZLENBQUE7S0FBRSxFQUFFLENBQUM7Q0FDdEQ7QUFFRCxNQUFNLFdBQVcsV0FBVztJQUMxQixTQUFTLEVBQUUsWUFBWSxDQUFDO0lBQ3hCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixxRUFBcUU7SUFDckUsTUFBTSxFQUFFLE9BQU8sQ0FBQztDQUNqQjtBQUVELHVHQUFxRztBQUNyRyxNQUFNLFdBQVcsY0FBYztJQUM3QiwyQ0FBMkM7SUFDM0MsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDaEMsNERBQTREO0lBQzVELGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLHlGQUF5RjtJQUN6RixRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNwQyx1Q0FBdUM7SUFDdkMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDekMsd0NBQXdDO0lBQ3hDLGFBQWEsQ0FBQyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUNyRSx3REFBd0Q7SUFDeEQsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN6RCxrRUFBa0U7SUFDbEUsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsR0FBRyxJQUFJLENBQUM7Q0FDM0M7QUFvQkQ7OztHQUdHO0FBQ0gsd0JBQWdCLGVBQWUsSUFBSSxjQUFjLENBOERoRCJ9