/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import { type Fr } from '@aztec/circuits.js';
import { type ZodFor } from '@aztec/foundation/schemas';
import { BufferReader } from '@aztec/foundation/serialize';
import { inspect } from 'util';
import { ContractClass2BlockL2Logs, UnencryptedL2BlockL2Logs } from './logs/index.js';
import { TxEffect } from './tx_effect.js';
export declare class Body {
    txEffects: TxEffect[];
    constructor(txEffects: TxEffect[]);
    static get schema(): ZodFor<Body>;
    /**
     * Serializes a block body
     * @returns A serialized L2 block body.
     */
    toBuffer(): Buffer;
    /**
     * Deserializes a block from a buffer
     * @returns A deserialized L2 block.
     */
    static fromBuffer(buf: Buffer | BufferReader): Body;
    /**
     * Returns a flat packed array of fields of all tx effects - used for blobs.
     */
    toBlobFields(): Fr[];
    /**
     * Decodes a block from blob fields.
     * TODO(#8954): When logs are refactored into fields, we won't need to inject them here, instead just reading from fields in TxEffect.fromBlobFields.
     * Logs are best input by gathering from the getters below, as they don't remove empty log arrays.
     */
    static fromBlobFields(fields: Fr[], unencryptedLogs?: UnencryptedL2BlockL2Logs, contractClassLogs?: ContractClass2BlockL2Logs): Body;
    [inspect.custom](): string;
    get unencryptedLogs(): UnencryptedL2BlockL2Logs;
    get contractClassLogs(): ContractClass2BlockL2Logs;
    /**
     * Computes the number of transactions in the block including padding transactions.
     */
    get numberOfTxsIncludingPadded(): number;
    static random(txsPerBlock?: number, numPublicCallsPerTx?: number, numUnencryptedLogsPerCall?: number): Body;
    static empty(): Body;
}
//# sourceMappingURL=body.d.ts.map