/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import { AztecAddress, type PrivateLog } from '@aztec/circuits.js';
import { NoteSelector } from '@aztec/foundation/abi';
import { type Fq, Fr } from '@aztec/foundation/fields';
import { BufferReader } from '@aztec/foundation/serialize';
/**
 * A class which wraps note data which is pushed on L1.
 * @remarks This data is required to compute a nullifier/to spend a note. Along with that this class contains
 * the necessary functionality to encrypt and decrypt the data.
 */
export declare class L1NotePayload {
    /**
     * Address of the contract this tx is interacting with.
     */
    contractAddress: AztecAddress;
    /**
     * Storage slot of the underlying note.
     */
    storageSlot: Fr;
    /**
     * Type identifier for the underlying note, required to determine how to compute its hash and nullifier.
     */
    noteTypeId: NoteSelector;
    /**
     * Note values delivered encrypted.
     * @dev Note that to recreate the correct note we need to merge privateNoteValues and publicNoteValues. To do that
     * we need access to the contract ABI (that is done in the NoteProcessor).
     */
    privateNoteValues: Fr[];
    /**
     * Note values delivered in plaintext.
     * @dev Note that to recreate the correct note we need to merge privateNoteValues and publicNoteValues. To do that
     * we need access to the contract ABI (that is done in the NoteProcessor).
     */
    publicNoteValues: Fr[];
    constructor(
    /**
     * Address of the contract this tx is interacting with.
     */
    contractAddress: AztecAddress, 
    /**
     * Storage slot of the underlying note.
     */
    storageSlot: Fr, 
    /**
     * Type identifier for the underlying note, required to determine how to compute its hash and nullifier.
     */
    noteTypeId: NoteSelector, 
    /**
     * Note values delivered encrypted.
     * @dev Note that to recreate the correct note we need to merge privateNoteValues and publicNoteValues. To do that
     * we need access to the contract ABI (that is done in the NoteProcessor).
     */
    privateNoteValues: Fr[], 
    /**
     * Note values delivered in plaintext.
     * @dev Note that to recreate the correct note we need to merge privateNoteValues and publicNoteValues. To do that
     * we need access to the contract ABI (that is done in the NoteProcessor).
     */
    publicNoteValues: Fr[]);
    static fromIncomingBodyPlaintextContractAndPublicValues(plaintext: Buffer, contractAddress: AztecAddress, publicNoteValues: Fr[]): L1NotePayload | undefined;
    static decryptAsIncoming(log: PrivateLog, sk: Fq): L1NotePayload | undefined;
    static decryptAsIncomingFromPublic(log: Buffer, sk: Fq): L1NotePayload | undefined;
    /**
     * Serializes the L1NotePayload object into a Buffer.
     * @returns Buffer representation of the L1NotePayload object.
     */
    toIncomingBodyPlaintext(): Buffer;
    /**
     * Create a random L1NotePayload object (useful for testing purposes).
     * @param contract - The address of a contract the note was emitted from.
     * @returns A random L1NotePayload object.
     */
    static random(contract?: AztecAddress): L1NotePayload;
    equals(other: L1NotePayload): boolean;
    toBuffer(): Buffer;
    static fromBuffer(buffer: Buffer | BufferReader): L1NotePayload;
}
//# sourceMappingURL=l1_note_payload.d.ts.map