/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import { Fr, PrivateLog, PublicDataWrite, RevertCode } from '@aztec/circuits.js';
import { type FieldsOf } from '@aztec/foundation/array';
import { BufferReader } from '@aztec/foundation/serialize';
import { inspect } from 'util';
import { z } from 'zod';
import { ContractClassTxL2Logs, UnencryptedTxL2Logs } from './logs/index.js';
import { TxHash } from './tx/tx_hash.js';
export { RevertCodeEnum } from '@aztec/circuits.js';
export declare class TxEffect {
    /**
     * Whether the transaction reverted during public app logic.
     */
    revertCode: RevertCode;
    /**
     * The transaction fee, denominated in FPA.
     */
    transactionFee: Fr;
    /**
     * The note hashes to be inserted into the note hash tree.
     */
    noteHashes: Fr[];
    /**
     * The nullifiers to be inserted into the nullifier tree.
     */
    nullifiers: Fr[];
    /**
     * The hash of L2 to L1 messages to be inserted into the messagebox on L1.
     * TODO(just-mitch): rename to l2ToL1MsgHashes
     */
    l2ToL1Msgs: Fr[];
    /**
     * The public data writes to be inserted into the public data tree.
     */
    publicDataWrites: PublicDataWrite[];
    /**
     * The private logs.
     */
    privateLogs: PrivateLog[];
    /**
     * The logs and logs lengths of the txEffect
     */
    unencryptedLogsLength: Fr;
    contractClassLogsLength: Fr;
    unencryptedLogs: UnencryptedTxL2Logs;
    contractClassLogs: ContractClassTxL2Logs;
    constructor(
    /**
     * Whether the transaction reverted during public app logic.
     */
    revertCode: RevertCode, 
    /**
     * The transaction fee, denominated in FPA.
     */
    transactionFee: Fr, 
    /**
     * The note hashes to be inserted into the note hash tree.
     */
    noteHashes: Fr[], 
    /**
     * The nullifiers to be inserted into the nullifier tree.
     */
    nullifiers: Fr[], 
    /**
     * The hash of L2 to L1 messages to be inserted into the messagebox on L1.
     * TODO(just-mitch): rename to l2ToL1MsgHashes
     */
    l2ToL1Msgs: Fr[], 
    /**
     * The public data writes to be inserted into the public data tree.
     */
    publicDataWrites: PublicDataWrite[], 
    /**
     * The private logs.
     */
    privateLogs: PrivateLog[], 
    /**
     * The logs and logs lengths of the txEffect
     */
    unencryptedLogsLength: Fr, contractClassLogsLength: Fr, unencryptedLogs: UnencryptedTxL2Logs, contractClassLogs: ContractClassTxL2Logs);
    toBuffer(): Buffer;
    /**
     * Deserializes the TxEffect object from a Buffer.
     * @param buffer - Buffer or BufferReader object to deserialize.
     * @returns An instance of TxEffect.
     */
    static fromBuffer(buffer: Buffer | BufferReader): TxEffect;
    /**
     * Computes the hash of the TxEffect object.
     * @returns The hash of the TxEffect object.
     * @dev This function must correspond with compute_tx_effects_hash() in Noir and TxsDecoder.sol decode().
     */
    hash(): Buffer;
    /**
     * Computes txOutHash of this tx effect.
     * TODO(#7218): Revert to fixed height tree for outbox
     * @dev Follows computeTxOutHash in TxsDecoder.sol and new_sha in variable_merkle_tree.nr
     */
    txOutHash(): Buffer;
    static random(numPublicCallsPerTx?: number, numUnencryptedLogsPerCall?: number): TxEffect;
    static empty(): TxEffect;
    isEmpty(): boolean;
    /** Returns a hex representation of the TxEffect object. */
    toString(): `0x${string}`;
    static from(fields: Omit<FieldsOf<TxEffect>, 'txHash'>): TxEffect;
    static get schema(): z.ZodEffects<z.ZodObject<{
        revertCode: z.ZodEffects<z.ZodNativeEnum<typeof import("@aztec/circuits.js").RevertCodeEnum>, RevertCode, import("@aztec/circuits.js").RevertCodeEnum>;
        transactionFee: z.ZodType<Fr, any, string>;
        noteHashes: z.ZodArray<z.ZodType<Fr, any, string>, "many">;
        nullifiers: z.ZodArray<z.ZodType<Fr, any, string>, "many">;
        l2ToL1Msgs: z.ZodArray<z.ZodType<Fr, any, string>, "many">;
        publicDataWrites: z.ZodArray<z.ZodEffects<z.ZodObject<{
            leafSlot: z.ZodType<Fr, any, string>;
            value: z.ZodType<Fr, any, string>;
        }, "strip", z.ZodTypeAny, {
            value: Fr;
            leafSlot: Fr;
        }, {
            value: string;
            leafSlot: string;
        }>, PublicDataWrite, {
            value: string;
            leafSlot: string;
        }>, "many">;
        privateLogs: z.ZodArray<z.ZodEffects<z.ZodObject<{
            fields: z.ZodArray<z.ZodType<Fr, any, string>, "many">;
        }, "strip", z.ZodTypeAny, {
            fields: Fr[];
        }, {
            fields: string[];
        }>, PrivateLog, {
            fields: string[];
        }>, "many">;
        unencryptedLogsLength: z.ZodType<Fr, any, string>;
        contractClassLogsLength: z.ZodType<Fr, any, string>;
        unencryptedLogs: z.ZodEffects<z.ZodObject<{
            functionLogs: z.ZodArray<z.ZodEffects<z.ZodObject<{
                logs: z.ZodArray<z.ZodEffects<z.ZodObject<{
                    contractAddress: z.ZodType<import("@aztec/circuits.js").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/circuits.js").AztecAddress;
                    data: Buffer;
                }, {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }>, import("./logs/unencrypted_l2_log.js").UnencryptedL2Log, {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }>, "many">;
            }, "strip", z.ZodTypeAny, {
                logs: import("./logs/unencrypted_l2_log.js").UnencryptedL2Log[];
            }, {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }>, import("./logs/function_l2_logs.js").UnencryptedFunctionL2Logs, {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }>, "many">;
        }, "strip", z.ZodTypeAny, {
            functionLogs: import("./logs/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[];
                    };
                }[];
            }[];
        }>;
        contractClassLogs: z.ZodEffects<z.ZodObject<{
            functionLogs: z.ZodArray<z.ZodEffects<z.ZodObject<{
                logs: z.ZodArray<z.ZodEffects<z.ZodObject<{
                    contractAddress: z.ZodType<import("@aztec/circuits.js").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/circuits.js").AztecAddress;
                    data: Buffer;
                }, {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }>, import("./logs/unencrypted_l2_log.js").UnencryptedL2Log, {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }>, "many">;
            }, "strip", z.ZodTypeAny, {
                logs: import("./logs/unencrypted_l2_log.js").UnencryptedL2Log[];
            }, {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }>, import("./logs/function_l2_logs.js").UnencryptedFunctionL2Logs, {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }>, "many">;
        }, "strip", z.ZodTypeAny, {
            functionLogs: import("./logs/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[];
                    };
                }[];
            }[];
        }>;
    }, "strip", z.ZodTypeAny, {
        l2ToL1Msgs: Fr[];
        revertCode: RevertCode;
        transactionFee: Fr;
        noteHashes: Fr[];
        nullifiers: Fr[];
        publicDataWrites: PublicDataWrite[];
        privateLogs: PrivateLog[];
        unencryptedLogsLength: Fr;
        contractClassLogsLength: Fr;
        unencryptedLogs: UnencryptedTxL2Logs;
        contractClassLogs: ContractClassTxL2Logs;
    }, {
        l2ToL1Msgs: string[];
        revertCode: import("@aztec/circuits.js").RevertCodeEnum;
        transactionFee: string;
        noteHashes: string[];
        nullifiers: string[];
        publicDataWrites: {
            value: string;
            leafSlot: string;
        }[];
        privateLogs: {
            fields: string[];
        }[];
        unencryptedLogsLength: string;
        contractClassLogsLength: string;
        unencryptedLogs: {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        };
        contractClassLogs: {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        };
    }>, TxEffect, {
        l2ToL1Msgs: string[];
        revertCode: import("@aztec/circuits.js").RevertCodeEnum;
        transactionFee: string;
        noteHashes: string[];
        nullifiers: string[];
        publicDataWrites: {
            value: string;
            leafSlot: string;
        }[];
        privateLogs: {
            fields: string[];
        }[];
        unencryptedLogsLength: string;
        contractClassLogsLength: string;
        unencryptedLogs: {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        };
        contractClassLogs: {
            functionLogs: {
                logs: {
                    contractAddress: string;
                    data: string | {
                        type: "Buffer";
                        data: number[];
                    };
                }[];
            }[];
        };
    }>;
    [inspect.custom](): string;
    /**
     * Deserializes an TxEffect object from a string.
     * @param str - String to deserialize.
     * @returns An instance of TxEffect.
     */
    static fromString(str: string): TxEffect;
    get txHash(): TxHash;
}
//# sourceMappingURL=tx_effect.d.ts.map