import { Buffer32 } from '@aztec/foundation/buffer'; import { Fr } from '@aztec/foundation/curves/bn254'; import type { ZodFor } from '@aztec/foundation/schemas'; import { BufferReader } from '@aztec/foundation/serialize'; import { type FieldsOf } from '@aztec/foundation/types'; import type { GasSettings } from '../gas/gas_settings.js'; import type { GetPublicLogsResponse } from '../interfaces/get_logs_response.js'; import type { L2LogsSource } from '../interfaces/l2_logs_source.js'; import { PrivateKernelTailCircuitPublicInputs } from '../kernel/private_kernel_tail_circuit_public_inputs.js'; import { ContractClassLog, ContractClassLogFields } from '../logs/contract_class_log.js'; import { Gossipable } from '../p2p/gossipable.js'; import { TopicType } from '../p2p/topic_type.js'; import { ChonkProof } from '../proofs/chonk_proof.js'; import type { TxStats } from '../stats/stats.js'; import { HashedValues } from './hashed_values.js'; import { PublicCallRequestWithCalldata } from './public_call_request_with_calldata.js'; import { TxHash } from './tx_hash.js'; /** * The interface of an L2 transaction. */ export declare class Tx extends Gossipable { #private; /** * Identifier of the tx. * It's a hash of the public inputs of the tx's proof. * This claimed hash is reconciled against the tx's public inputs (`this.data`) in data_validator.ts. */ readonly txHash: TxHash; /** * Output of the private kernel circuit for this tx. */ readonly data: PrivateKernelTailCircuitPublicInputs; /** * Proof from the private kernel circuit. */ readonly chonkProof: ChonkProof; /** * Contract class log fields emitted from the tx. * Their order should match the order of the log hashes returned from `this.data.getNonEmptyContractClassLogsHashes`. * This claimed data is reconciled against a hash of this data (that is contained within * the tx's public inputs (`this.data`)), in data_validator.ts. */ readonly contractClassLogFields: ContractClassLogFields[]; /** * An array of calldata for the enqueued public function calls and the teardown function call. * This claimed data is reconciled against hashes of this data (that are contained within * the tx's public inputs (`this.data`)), in data_validator.ts. */ readonly publicFunctionCalldata: HashedValues[]; static p2pTopic: TopicType; private calldataMap; constructor( /** * Identifier of the tx. * It's a hash of the public inputs of the tx's proof. * This claimed hash is reconciled against the tx's public inputs (`this.data`) in data_validator.ts. */ txHash: TxHash, /** * Output of the private kernel circuit for this tx. */ data: PrivateKernelTailCircuitPublicInputs, /** * Proof from the private kernel circuit. */ chonkProof: ChonkProof, /** * Contract class log fields emitted from the tx. * Their order should match the order of the log hashes returned from `this.data.getNonEmptyContractClassLogsHashes`. * This claimed data is reconciled against a hash of this data (that is contained within * the tx's public inputs (`this.data`)), in data_validator.ts. */ contractClassLogFields: ContractClassLogFields[], /** * An array of calldata for the enqueued public function calls and the teardown function call. * This claimed data is reconciled against hashes of this data (that are contained within * the tx's public inputs (`this.data`)), in data_validator.ts. */ publicFunctionCalldata: HashedValues[]); generateP2PMessageIdentifier(): Promise; hasPublicCalls(): boolean; numberOfPublicCalls(): number; getNonRevertiblePublicCallRequestsWithCalldata(): PublicCallRequestWithCalldata[]; getRevertiblePublicCallRequestsWithCalldata(): PublicCallRequestWithCalldata[]; getTeardownPublicCallRequestWithCalldata(): PublicCallRequestWithCalldata | undefined; getPublicCallRequestsWithCalldata(): PublicCallRequestWithCalldata[]; getTotalPublicCalldataCount(): number; getGasSettings(): GasSettings; /** * Deserializes the Tx object from a Buffer. * @param buffer - Buffer or BufferReader object to deserialize. * @returns An instance of Tx. */ static fromBuffer(buffer: Buffer | BufferReader): Tx; /** * Serializes the Tx object into a Buffer. * @returns Buffer representation of the Tx object. */ toBuffer(): Buffer; static get schema(): ZodFor; static computeTxHash(fields: Pick, 'data'>): Promise; static create(fields: Omit, 'txHash'>): Promise; static from(fields: FieldsOf): Tx; /** * Validates that the tx hash matches the computed hash from the tx data. * This should be called when deserializing a tx from an untrusted source. * @returns true if the hash is valid, false otherwise */ validateTxHash(): Promise; /** * Gets public logs emitted by this tx. * @param logsSource - An instance of `L2LogsSource` which can be used to obtain the logs. * @returns The requested logs. */ getPublicLogs(logsSource: L2LogsSource): Promise; getContractClassLogs(): ContractClassLog[]; /** * Gets either revertible or non revertible contract class logs emitted by this tx. * @param revertible - true for revertible only logs, false for non revertible only logs. * @returns The requested logs. */ getSplitContractClassLogs(revertible: boolean): ContractClassLog[]; /** * Return transaction hash. * @returns The hash of the public inputs of the private kernel tail circuit. */ getTxHash(): TxHash; getCalldataMap(): Map; /** Returns stats about this tx. */ getStats(): TxStats; private sizeCache; getSize(): number; /** * Returns the number of fields this tx's effects will occupy in the blob, * based on its private side effects only. Accurate for txs without public calls. * For txs with public calls, the actual size will be larger due to public execution outputs. */ getPrivateTxEffectsSizeInFields(): number; /** * Clones a tx, making a deep copy of all fields. * @param tx - The transaction to be cloned. * @param cloneProof - Whether to clone the proof as well. If false, will shallow copy. * @returns The cloned transaction. */ static clone(tx: Tx, cloneProof?: boolean): Tx; /** * Creates a random tx. * @param randomProof - Whether to create a random proof - this will be random bytes of the full size. * @returns A random tx. */ static random(args?: { randomProof?: boolean; txHash?: string | TxHash; }): Tx; /** Recomputes the tx hash. Used for testing purposes only when a property of the tx was mutated. */ recomputeHash(): Promise; } /** * Helper class to handle Serialization and Deserialization of Txs array. */ export declare class TxArray extends Array { static fromBuffer(buffer: Buffer | BufferReader): TxArray; toBuffer(): Buffer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eC90eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQXlELE1BQU0sNkJBQTZCLENBQUM7QUFDbEgsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFZLE1BQU0seUJBQXlCLENBQUM7QUFJbEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0Qzs7R0FFRztBQUVILHFC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