import { type Logger, type LoggerBindings } from '@aztec-labs/foundation/log'; import { type PublicSimulatorConfig, PublicTxResult } from '@aztec-labs/stdlib/avm'; import type { GlobalVariables, Tx } from '@aztec-labs/stdlib/tx'; import { type TelemetryClient, type Tracer } from '@aztec-labs/telemetry-client'; import type { AvmSimulator } from '../avm_simulator.js'; import type { ExecutorMetricsInterface } from '../executor_metrics_interface.js'; import type { PublicContractsDB } from '../public_db_sources.js'; import { PublicTxSimulatorBase } from './public_tx_simulator_base.js'; import type { MeasuredPublicTxSimulatorInterface, PublicTxSimulatorInterface } from './public_tx_simulator_interface.js'; /** * Simulates a transaction's public portion by running its public calls through an {@link AvmSimulator}. * `forkId` selects the fork whose contract data the simulation reads. */ export declare class PublicTxSimulator extends PublicTxSimulatorBase implements PublicTxSimulatorInterface { protected log: Logger; /** Aborts the in-flight simulation. */ private abortController?; /** Current simulation promise, used to wait for completion after cancellation. */ private simulationPromise?; constructor(avmSimulator: AvmSimulator, globalVariables: GlobalVariables, contractsDB: PublicContractsDB, forkId: number, config?: Partial, bindings?: LoggerBindings); /** * Simulate a transaction's public portion. * * @param tx - The transaction to simulate. * @returns The result of the transaction's public execution. */ simulate(tx: Tx): Promise; protected doSimulate(tx: Tx, signal: AbortSignal): Promise; /** * Cancel the current simulation if one is in progress. * This signals the underlying simulator to stop at the next safe point (between opcodes, before a * world-state write). Safe to call even if no simulation is in progress. * * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop. * Cancellation is cooperative: the simulator may be mid slow-operation and * won't observe the cancellation until it completes. * Default timeout of 100ms after cancellation. */ cancel(waitTimeoutMs?: number): Promise; } export declare class MeasuredPublicTxSimulator extends PublicTxSimulator implements MeasuredPublicTxSimulatorInterface { protected readonly metrics: ExecutorMetricsInterface; constructor(avmSimulator: AvmSimulator, globalVariables: GlobalVariables, contractsDB: PublicContractsDB, forkId: number, metrics: ExecutorMetricsInterface, config?: Partial, bindings?: LoggerBindings); simulate(tx: Tx, txLabel?: string): Promise; } /** * A public tx simulator that tracks runtime/production metrics with telemetry. */ export declare class TelemetryPublicTxSimulator extends MeasuredPublicTxSimulator { readonly tracer: Tracer; constructor(avmSimulator: AvmSimulator, globalVariables: GlobalVariables, contractsDB: PublicContractsDB, forkId: number, telemetryClient?: TelemetryClient, config?: Partial, bindings?: LoggerBindings); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfdHhfc2ltdWxhdG9yL3B1YmxpY190eF9zaW11bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLDRCQUE0QixDQUFDO0FBRTVGLE9BQU8sRUFHTCxLQUFLLHFCQUFxQixFQUMxQixjQUFjLEVBRWYsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakUsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLEtBQUssTUFBTSxFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBR3JHLE9BQU8sS0FBSyxFQUF5QixZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRSxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMzQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDOzs7R0FHRztBQUNILHFCQUFhLGlCQUFrQixTQUFRLHFCQUFzQixZQUFXLDBCQUEwQjtJQUNoRyxVQUFtQixHQUFHLEVBQUUsTUFBTSxDQUFDO0lBQy9CLHVDQUF1QztJQUN2QyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQWtCO0lBQzFDLGtGQUFrRjtJQUNsRixPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBMEI7SUFFcEQsWUFDRSxZQUFZLEVBQUUsWUFBWSxFQUMxQixlQUFlLEVBQUUsZUFBZSxFQUNoQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFJMUI7SUFFRDs7Ozs7T0FLRztJQUNVLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FTckQ7SUFFRCxVQUFnQixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FtRC9FO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ1UsTUFBTSxDQUFDLGFBQWEsR0FBRSxNQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWM5RDtDQUNGO0FBRUQscUJBQWEseUJBQTBCLFNBQVEsaUJBQWtCLFlBQVcsa0NBQWtDO0lBTTFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHdCQUF3QjtJQUx0RCxZQUNFLFlBQVksRUFBRSxZQUFZLEVBQzFCLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsTUFBTSxFQUFFLE1BQU0sRUFDSyxPQUFPLEVBQUUsd0JBQXdCLEVBQ3BELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRXFCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sR0FBRSxNQUFzQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FTL0Y7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsMEJBQTJCLFNBQVEseUJBQXlCO0lBRXZFLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsWUFDRSxZQUFZLEVBQUUsWUFBWSxFQUMxQixlQUFlLEVBQUUsZUFBZSxFQUNoQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsZUFBZSxHQUFFLGVBQXNDLEVBQ3ZELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBSzFCO0NBQ0YifQ==