import type { AztecAddress } from '@aztec/stdlib/aztec-address'; import type { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import type { AvmExecutionEnvironment } from './avm_execution_environment.js'; import { type Gas } from './avm_gas.js'; import { AvmMachineState } from './avm_machine_state.js'; import type { AvmSimulatorInterface } from './avm_simulator_interface.js'; import type { CallData } from './calldata.js'; /** * An execution context includes the information necessary to initiate AVM * execution along with all state maintained by the AVM throughout execution. */ export declare class AvmContext { persistableState: PublicPersistableStateManager; environment: AvmExecutionEnvironment; machineState: AvmMachineState; /** * Create a new AVM context * @param persistableState - Manages world state and accrued substate during execution - (caching, fetching, tracing) * @param environment - Contains constant variables provided by the kernel * @param machineState - VM state that is modified on an instruction-by-instruction basis * @returns new AvmContext instance */ constructor(persistableState: PublicPersistableStateManager, environment: AvmExecutionEnvironment, machineState: AvmMachineState); provideSimulator?: (context: AvmContext) => Promise; /** * Prepare a new AVM context that will be ready for an external/nested call * - Fork the world state journal * - Derive a machine state from the current state * - E.g., gas metering is preserved but pc is reset * - Derive an execution environment from the caller/parent * - Alter address * * @param address - The contract instance to initialize a context for * @param calldata - Data/arguments for nested call * @param allocatedGas - Gas allocated for the nested call * @param callType - Type of call (CALL or STATICCALL) * @returns new AvmContext instance */ createNestedContractCallContext(address: AztecAddress, calldata: CallData, allocatedGas: Gas, callType: 'CALL' | 'STATICCALL'): Promise; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRleHQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2F2bV9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQWdCLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5Qzs7O0dBR0c7QUFDSCxxQkFBYSxVQUFVO0lBU1osZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLFdBQVcsRUFBRSx1QkFBdUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFWdEM7Ozs7OztPQU1HO0lBQ0gsWUFDUyxnQkFBZ0IsRUFBRSw2QkFBNkIsRUFDL0MsV0FBVyxFQUFFLHVCQUF1QixFQUNwQyxZQUFZLEVBQUUsZUFBZSxFQUNsQztJQUlHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRWxGOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDVSwrQkFBK0IsQ0FDMUMsT0FBTyxFQUFFLFlBQVksRUFDckIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsWUFBWSxFQUFFLEdBQUcsRUFDakIsUUFBUSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQzlCLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FTckI7Q0FDRiJ9