import { type BlockBlobData } from '@aztec/blob-lib/encoding'; import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types'; import { Fr } from '@aztec/foundation/curves/bn254'; import { BufferReader } from '@aztec/foundation/serialize'; import { z } from 'zod'; import type { PrivateLog } from '../logs/private_log.js'; import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js'; import { BlockHeader } from '../tx/block_header.js'; import type { BlockHash } from './block_hash.js'; import { Body } from './body.js'; import type { L2BlockInfo } from './l2_block_info.js'; /** * An L2 block with a header and a body. */ export declare class L2Block { /** Snapshot of archive tree after the block is applied. */ archive: AppendOnlyTreeSnapshot; /** Header of the block. */ header: BlockHeader; /** L2 block body. */ body: Body; /** Number of the checkpoint that the block belongs to. */ checkpointNumber: CheckpointNumber; /** Index of the block within the checkpoint. */ indexWithinCheckpoint: IndexWithinCheckpoint; constructor( /** Snapshot of archive tree after the block is applied. */ archive: AppendOnlyTreeSnapshot, /** Header of the block. */ header: BlockHeader, /** L2 block body. */ body: Body, /** Number of the checkpoint that the block belongs to. */ checkpointNumber: CheckpointNumber, /** Index of the block within the checkpoint. */ indexWithinCheckpoint: IndexWithinCheckpoint); get number(): BlockNumber; get slot(): SlotNumber; get timestamp(): bigint; static get schema(): z.ZodEffects; nextAvailableLeafIndex: z.ZodPipeline, z.ZodNumber>; }, "strip", z.ZodTypeAny, { root: Fr; nextAvailableLeafIndex: number; }, { root: string; nextAvailableLeafIndex: string | number | bigint; }>, AppendOnlyTreeSnapshot, { root: string; nextAvailableLeafIndex: string | number | bigint; }>; header: import("@aztec/foundation/schemas").ZodFor; body: import("@aztec/foundation/schemas").ZodFor; checkpointNumber: z.ZodEffects, z.ZodNumber>, CheckpointNumber, string | number | bigint>; indexWithinCheckpoint: z.ZodEffects, z.ZodNumber>, IndexWithinCheckpoint, string | number | bigint>; }, "strip", z.ZodTypeAny, { archive: AppendOnlyTreeSnapshot; header: BlockHeader; body: Body; checkpointNumber: number & { _branding: "CheckpointNumber"; }; indexWithinCheckpoint: number & { _branding: "IndexWithinCheckpoint"; }; }, { archive: { root: string; nextAvailableLeafIndex: string | number | bigint; }; header?: any; body?: any; checkpointNumber: string | number | bigint; indexWithinCheckpoint: string | number | bigint; }>, L2Block, { archive: { root: string; nextAvailableLeafIndex: string | number | bigint; }; header?: any; body?: any; checkpointNumber: string | number | bigint; indexWithinCheckpoint: string | number | bigint; }>; /** * Deserializes a block from a buffer * @returns A deserialized L2 block. */ static fromBuffer(buf: Buffer | BufferReader): L2Block; /** * Serializes a block * @returns A serialized L2 block as a Buffer. */ toBuffer(): Buffer; /** * Returns the block's hash (hash of block header). * @returns The block's hash. */ hash(): Promise; /** * Checks if this block equals another block. * @param other - The other block to compare with. * @returns True if both blocks are equal. */ equals(other: this): boolean; toBlobFields(): Fr[]; toBlockBlobData(): BlockBlobData; static empty(header?: BlockHeader): L2Block; /** * Creates an L2 block containing random data. * @param l2BlockNum - The number of the L2 block. * @param txsPerBlock - The number of transactions to include in the block. * @param numPublicCallsPerTx - The number of public function calls to include in each transaction. * @param numPublicLogsPerCall - The number of public logs per 1 public function invocation. * @param inHash - The hash of the L1 to L2 messages subtree which got inserted in this block. * @returns The L2 block. */ static random(blockNumber: BlockNumber, { checkpointNumber, indexWithinCheckpoint, txsPerBlock, txOptions, makeTxOptions, ...blockHeaderOverrides }?: { checkpointNumber?: CheckpointNumber; indexWithinCheckpoint?: IndexWithinCheckpoint; txsPerBlock?: number; txOptions?: Partial[0]>; makeTxOptions?: (txIndex: number) => Partial[0]>; } & Partial[0]>): Promise; /** * Returns stats used for logging. * @returns Stats on tx count, number, and log size and count. */ getStats(): { privateLogCount: number; publicLogCount: number; contractClassLogCount: number; contractClassLogSize: number; txCount: number; blockNumber: BlockNumber; blockTimestamp: number; }; getPrivateLogs(): PrivateLog[]; toBlockInfo(): L2BlockInfo; /** * Compute how much DA gas this block uses. * * @remarks This assumes DA gas is computed solely based on the number of blob fields in transactions. * This may change in the future, but we cannot access the actual DA gas used in a block since it's not exposed * in the L2BlockHeader, so we have to rely on recomputing it. */ computeDAGasUsed(): number; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDJfYmxvY2suZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ibG9jay9sMl9ibG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxhQUFhLEVBQXVCLE1BQU0sMEJBQTBCLENBQUM7QUFFbkYsT0FBTyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsRUFFaEIscUJBQXFCLEVBRXJCLFVBQVUsRUFDWCxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQ7O0dBRUc7QUFDSCxxQkFBYSxPQUFPO0lBRWhCLDJEQUEyRDtJQUNwRCxPQUFPLEVBQUUsc0JBQXNCO0lBQ3RDLDJCQUEyQjtJQUNwQixNQUFNLEVBQUUsV0FBVztJQUMxQixxQkFBcUI7SUFDZCxJQUFJLEVBQUUsSUFBSTtJQUNqQiwwREFBMEQ7SUFDbkQsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ3pDLGdEQUFnRDtJQUN6QyxxQkFBcUIsRUFBRSxxQkFBcUI7SUFWckQ7SUFDRSwyREFBMkQ7SUFDcEQsT0FBTyxFQUFFLHNCQUFzQjtJQUN0QywyQkFBMkI7SUFDcEIsTUFBTSxFQUFFLFdBQVc7SUFDMUIscUJBQXFCO0lBQ2QsSUFBSSxFQUFFLElBQUk7SUFDakIsMERBQTBEO0lBQ25ELGdCQUFnQixFQUFFLGdCQUFnQjtJQUN6QyxnREFBZ0Q7SUFDekMscUJBQXFCLEVBQUUscUJBQXFCLEVBQ2pEO0lBRUosSUFBSSxNQUFNLElBQUksV0FBVyxDQUV4QjtJQUVELElBQUksSUFBSSxJQUFJLFVBQVUsQ0FFckI7SUFFRCxJQUFJLFNBQVMsSUFBSSxNQUFNLENBRXRCO0lBRUQsTUFBTSxLQUFLLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FhaEI7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsWUFBWSxXQVMzQztJQUVEOzs7T0FHRztJQUNILFFBQVEsNEJBRVA7SUFFRDs7O09BR0c7SUFDSSxJQUFJLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUVoQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxPQUFPLENBUWxDO0lBRU0sWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUcxQjtJQUVNLGVBQWUsSUFBSSxhQUFhLENBc0J0QztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxXQVFoQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsT0FBYSxNQUFNLENBQ2pCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLEVBQ0UsZ0JBQXdELEVBQ3hELHFCQUFnRCxFQUNoRCxXQUFlLEVBQ2YsU0FBYyxFQUNkLGFBQWEsRUFDYixHQUFHLG9CQUFvQixFQUN4QixHQUFFO1FBQ0QsZ0JBQWdCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztRQUNwQyxxQkFBcUIsQ0FBQyxFQUFFLHFCQUFxQixDQUFDO1FBQzlDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNyQixTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsYUFBYSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqRixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQU0sR0FDekQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUtsQjtJQUVEOzs7T0FHRztJQUNILFFBQVE7Ozs7Ozs7O01BcUJQO0lBRUQsY0FBYyxJQUFJLFVBQVUsRUFBRSxDQUU3QjtJQUVELFdBQVcsSUFBSSxXQUFXLENBU3pCO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLElBQUksTUFBTSxDQUV6QjtDQUNGIn0=