/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import { BufferReader } from '@aztec/foundation/serialize';
import { z } from 'zod';
import { ContractClassTxL2Logs, type TxL2Logs, UnencryptedTxL2Logs } from './tx_l2_logs.js';
import { type UnencryptedL2Log } from './unencrypted_l2_log.js';
/**
 * Data container of logs emitted in all txs in a given L2 block.
 */
declare abstract class L2BlockL2Logs {
    /**
     * An array containing logs emitted in individual function invocations in this tx.
     */
    readonly txLogs: TxL2Logs[];
    constructor(
    /**
     * An array containing logs emitted in individual function invocations in this tx.
     */
    txLogs: TxL2Logs[]);
    /**
     * Serializes logs into a buffer.
     * @returns A buffer containing the serialized logs.
     */
    toBuffer(): Buffer;
    /**
     * Get the total length of serialized data.
     * @returns Total length of serialized data.
     */
    getSerializedLength(): number;
    /**
     * Gets the total number of logs emitted from all the TxL2Logs.
     */
    getTotalLogCount(): number;
    /**
     * Seralizes logs into a string.
     * @returns A string representation of the serialized logs.
     */
    toString(): string;
    /**
     * Checks if two L2BlockL2Logs objects are equal.
     * @param other - Another L2BlockL2Logs object to compare with.
     * @returns True if the two objects are equal, false otherwise.
     */
    equals(other: L2BlockL2Logs): boolean;
    /**
     * Returns the total number of log entries across an array of L2BlockL2Logs.
     * @param l2BlockL2logs - L2BlockL2Logs to sum over.
     * @returns Total sum of log entries.
     */
    static getTotalLogCount(l2BlockL2logs: L2BlockL2Logs[]): number;
}
export declare class UnencryptedL2BlockL2Logs extends L2BlockL2Logs {
    static get schema(): z.ZodEffects<z.ZodObject<{
        txLogs: z.ZodArray<z.ZodEffects<z.ZodObject<{
            functionLogs: z.ZodArray<z.ZodEffects<z.ZodObject<{
                logs: z.ZodArray<z.ZodEffects<z.ZodObject<{
                    contractAddress: z.ZodType<import("@aztec/foundation/aztec-address").AztecAddress, any, string>;
                    data: z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Buffer, string>, z.ZodEffects<z.ZodObject<{
                        type: z.ZodLiteral<"Buffer">;
                        data: z.ZodArray<z.ZodNumber, "many">;
                    }, "strip", z.ZodTypeAny, {
                        type: "Buffer";
                        data: number[];
                    }, {
                        type: "Buffer";
                        data: number[];
                    }>, Buffer, {
                        type: "Buffer";
                        data: number[];
                    }>]>;
                }, "strip", z.ZodTypeAny, {
                    contractAddress: import("@aztec/foundation/aztec-address").AztecAddress;
                    data: Buffer;
                }, {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }>, UnencryptedL2Log, {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }>, "many">;
            }, "strip", z.ZodTypeAny, {
                logs: UnencryptedL2Log[];
            }, {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }>, import("./function_l2_logs.js").UnencryptedFunctionL2Logs, {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }>, "many">;
        }, "strip", z.ZodTypeAny, {
            functionLogs: import("./function_l2_logs.js").UnencryptedFunctionL2Logs[];
        }, {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        }>, UnencryptedTxL2Logs, {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        }>, "many">;
    }, "strip", z.ZodTypeAny, {
        txLogs: UnencryptedTxL2Logs[];
    }, {
        txLogs: {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        }[];
    }>, UnencryptedL2BlockL2Logs, {
        txLogs: {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        }[];
    }>;
    get type(): string;
    /**
     * Deserializes logs from a buffer.
     * @param buffer - The buffer containing the serialized logs.
     * @returns A new `L2BlockL2Logs` object.
     */
    static fromBuffer(buffer: Buffer | BufferReader): UnencryptedL2BlockL2Logs;
    /**
     * Deserializes logs from a string.
     * @param data - The string containing the serialized logs.
     * @returns A new `L2BlockL2Logs` object.
     */
    static fromString(data: string): UnencryptedL2BlockL2Logs;
    /**
     * Creates a new `L2BlockL2Logs` object with `numCalls` function logs and `numLogsPerCall` logs in each function
     * call.
     * @param numTxs - The number of txs in the block.
     * @param numCalls - The number of function calls in the tx.
     * @param numLogsPerCall - The number of logs emitted in each function call.
     * @returns A new `L2BlockL2Logs` object.
     */
    static random(numTxs: number, numCalls: number, numLogsPerCall: number): UnencryptedL2BlockL2Logs;
    /**
     * Unrolls logs from a set of blocks.
     * @param blockLogs - Input logs from a set of blocks.
     * @returns Unrolled logs.
     */
    static unrollLogs(blockLogs: (UnencryptedL2BlockL2Logs | undefined)[]): UnencryptedL2Log[];
}
export declare class ContractClass2BlockL2Logs extends L2BlockL2Logs {
    static get schema(): z.ZodEffects<z.ZodObject<{
        txLogs: z.ZodArray<z.ZodEffects<z.ZodObject<{
            functionLogs: z.ZodArray<z.ZodEffects<z.ZodObject<{
                logs: z.ZodArray<z.ZodEffects<z.ZodObject<{
                    contractAddress: z.ZodType<import("@aztec/foundation/aztec-address").AztecAddress, any, string>;
                    data: z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Buffer, string>, z.ZodEffects<z.ZodObject<{
                        type: z.ZodLiteral<"Buffer">;
                        data: z.ZodArray<z.ZodNumber, "many">;
                    }, "strip", z.ZodTypeAny, {
                        type: "Buffer";
                        data: number[];
                    }, {
                        type: "Buffer";
                        data: number[];
                    }>, Buffer, {
                        type: "Buffer";
                        data: number[];
                    }>]>;
                }, "strip", z.ZodTypeAny, {
                    contractAddress: import("@aztec/foundation/aztec-address").AztecAddress;
                    data: Buffer;
                }, {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }>, UnencryptedL2Log, {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }>, "many">;
            }, "strip", z.ZodTypeAny, {
                logs: UnencryptedL2Log[];
            }, {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }>, import("./function_l2_logs.js").UnencryptedFunctionL2Logs, {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }>, "many">;
        }, "strip", z.ZodTypeAny, {
            functionLogs: import("./function_l2_logs.js").UnencryptedFunctionL2Logs[];
        }, {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        }>, ContractClassTxL2Logs, {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        }>, "many">;
    }, "strip", z.ZodTypeAny, {
        txLogs: ContractClassTxL2Logs[];
    }, {
        txLogs: {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        }[];
    }>, ContractClass2BlockL2Logs, {
        txLogs: {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        }[];
    }>;
    get type(): string;
    /**
     * Deserializes logs from a buffer.
     * @param buffer - The buffer containing the serialized logs.
     * @returns A new `L2BlockL2Logs` object.
     */
    static fromBuffer(buffer: Buffer | BufferReader): ContractClass2BlockL2Logs;
    /**
     * Deserializes logs from a string.
     * @param data - The string containing the serialized logs.
     * @returns A new `L2BlockL2Logs` object.
     */
    static fromString(data: string): ContractClass2BlockL2Logs;
    /**
     * Creates a new `L2BlockL2Logs` object with `numCalls` function logs and `numLogsPerCall` logs in each function
     * call.
     * @param numTxs - The number of txs in the block.
     * @param numCalls - The number of function calls in the tx.
     * @param numLogsPerCall - The number of logs emitted in each function call.
     * @returns A new `L2BlockL2Logs` object.
     */
    static random(numTxs: number, numCalls: number, numLogsPerCall: number): ContractClass2BlockL2Logs;
    /**
     * Unrolls logs from a set of blocks.
     * @param blockLogs - Input logs from a set of blocks.
     * @returns Unrolled logs.
     */
    static unrollLogs(blockLogs: (ContractClass2BlockL2Logs | undefined)[]): UnencryptedL2Log[];
}
export {};
//# sourceMappingURL=l2_block_l2_logs.d.ts.map