import type { BlockNumber } from '@aztec/foundation/branded-types'; import { Fr } from '@aztec/foundation/curves/bn254'; import type { FieldsOf } from '@aztec/foundation/types'; import { z } from 'zod'; import { NoteSelector } from '../abi/note_selector.js'; import { PrivateCircuitPublicInputs } from '../kernel/private_circuit_public_inputs.js'; import type { IsEmpty } from '../kernel/utils/interfaces.js'; import { ContractClassLog, ContractClassLogFields } from '../logs/contract_class_log.js'; import { type TaggingIndexRange } from '../logs/tagging_index_range.js'; import { Note } from '../note/note.js'; import { type ZodFor } from '../schemas/index.js'; import { HashedValues } from './hashed_values.js'; import type { OffchainEffect } from './offchain_effect.js'; /** * The contents of a new note. */ export declare class NoteAndSlot { /** The note. */ note: Note; /** The storage slot of the note. */ storageSlot: Fr; /** The randomness injected to the note. */ randomness: Fr; /** The note type identifier. */ noteTypeId: NoteSelector; constructor( /** The note. */ note: Note, /** The storage slot of the note. */ storageSlot: Fr, /** The randomness injected to the note. */ randomness: Fr, /** The note type identifier. */ noteTypeId: NoteSelector); static get schema(): z.ZodEffects>, Note, any>; storageSlot: ZodFor; randomness: ZodFor; noteTypeId: z.ZodType; }, "strip", z.ZodTypeAny, { note: Note; storageSlot: Fr; randomness: Fr; noteTypeId: NoteSelector; }, { note?: any; storageSlot?: any; randomness?: any; noteTypeId: string; }>, NoteAndSlot, { note?: any; storageSlot?: any; randomness?: any; noteTypeId: string; }>; static from(fields: FieldsOf): NoteAndSlot; static random(): NoteAndSlot; } export declare class CountedContractClassLog implements IsEmpty { log: ContractClassLog; counter: number; constructor(log: ContractClassLog, counter: number); static get schema(): ZodFor; static from(fields: { log: ContractClassLog; counter: number; }): CountedContractClassLog; isEmpty(): boolean; } export declare class PrivateExecutionResult { entrypoint: PrivateCallExecutionResult; /** The first non-revertible nullifier emitted by any private call, or the protocol nullifier if there was none. */ firstNullifier: Fr; /** An array of calldata for the enqueued public function calls and the teardown function call. */ publicFunctionCalldata: HashedValues[]; constructor(entrypoint: PrivateCallExecutionResult, /** The first non-revertible nullifier emitted by any private call, or the protocol nullifier if there was none. */ firstNullifier: Fr, /** An array of calldata for the enqueued public function calls and the teardown function call. */ publicFunctionCalldata: HashedValues[]); static get schema(): ZodFor; static from(fields: FieldsOf): PrivateExecutionResult; static random(nested?: number): Promise; /** * The anchor block number that this execution was simulated with. */ getSimulationAnchorBlockNumber(): BlockNumber; } /** * The result of executing a call to a private function. */ export declare class PrivateCallExecutionResult { /** The ACIR bytecode. */ acir: Buffer; /** The verification key. */ vk: Buffer; /** The partial witness. */ partialWitness: Map; /** The call stack item. */ publicInputs: PrivateCircuitPublicInputs; /** The notes created in the executed function. */ newNotes: NoteAndSlot[]; /** Mapping of note hash counter to the counter of its nullifier. */ noteHashNullifierCounterMap: Map; /** The raw return values of the executed function. */ returnValues: Fr[]; /** The offchain effects emitted during execution of this function call via the `emit_offchain_effect` oracle. */ offchainEffects: { data: Fr[]; }[]; /** The tagging index ranges used in this tx to compute tags for private logs */ taggingIndexRanges: TaggingIndexRange[]; /** The nested executions. */ nestedExecutionResults: PrivateCallExecutionResult[]; /** * Contract class logs emitted during execution of this function call. * Note: We only need to collect the ContractClassLogFields as preimages for the tx. * But keep them as ContractClassLog so that we can verify the log hashes before submitting the tx (TODO). */ contractClassLogs: CountedContractClassLog[]; profileResult?: PrivateExecutionProfileResult | undefined; constructor( /** The ACIR bytecode. */ acir: Buffer, /** The verification key. */ vk: Buffer, /** The partial witness. */ partialWitness: Map, /** The call stack item. */ publicInputs: PrivateCircuitPublicInputs, /** The notes created in the executed function. */ newNotes: NoteAndSlot[], /** Mapping of note hash counter to the counter of its nullifier. */ noteHashNullifierCounterMap: Map, /** The raw return values of the executed function. */ returnValues: Fr[], /** The offchain effects emitted during execution of this function call via the `emit_offchain_effect` oracle. */ offchainEffects: { data: Fr[]; }[], /** The tagging index ranges used in this tx to compute tags for private logs */ taggingIndexRanges: TaggingIndexRange[], /** The nested executions. */ nestedExecutionResults: PrivateCallExecutionResult[], /** * Contract class logs emitted during execution of this function call. * Note: We only need to collect the ContractClassLogFields as preimages for the tx. * But keep them as ContractClassLog so that we can verify the log hashes before submitting the tx (TODO). */ contractClassLogs: CountedContractClassLog[], profileResult?: PrivateExecutionProfileResult | undefined); static get schema(): ZodFor; static from(fields: FieldsOf): PrivateCallExecutionResult; static random(nested?: number): Promise; } export declare function collectNoteHashNullifierCounterMap(execResult: PrivateExecutionResult): Map; /** * Collect all contract class logs across all nested executions and sorts by counter. * @param execResult - The topmost execution result. * @returns All contract class logs. */ export declare function collectSortedContractClassLogs(execResult: PrivateExecutionResult): ContractClassLogFields[]; /** * Collect all offchain effects emitted across all nested executions. * @param execResult - The execution result to collect offchain effects from. * @returns Array of offchain effects. */ export declare function collectOffchainEffects(execResult: PrivateExecutionResult): OffchainEffect[]; export declare function getFinalMinRevertibleSideEffectCounter(execResult: PrivateExecutionResult): number; export declare function collectNested(executionStack: PrivateCallExecutionResult[], extractExecutionItems: (execution: PrivateCallExecutionResult) => T[]): T[]; export declare class PrivateExecutionProfileResult { timings: { witgen: number; oracles?: Record; }; constructor(timings: { witgen: number; oracles?: Record; }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leGVjdXRpb25fcmVzdWx0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvcHJpdmF0ZV9leGVjdXRpb25fcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR25FLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBMkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRDs7R0FFRztBQUNILHFCQUFhLFdBQVc7SUFFcEIsZ0JBQWdCO0lBQ1QsSUFBSSxFQUFFLElBQUk7SUFDakIsb0NBQW9DO0lBQzdCLFdBQVcsRUFBRSxFQUFFO0lBQ3RCLDJDQUEyQztJQUNwQyxVQUFVLEVBQUUsRUFBRTtJQUNyQixnQ0FBZ0M7SUFDekIs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