/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import { AztecAddress, Fr } from '@aztec/circuits.js';
import { NoteSelector } from '@aztec/foundation/abi';
import { BufferReader } from '@aztec/foundation/serialize';
import { z } from 'zod';
import { Note } from '../logs/l1_payload/payload.js';
import { TxHash } from '../tx/tx_hash.js';
/**
 * A note with contextual data.
 */
export declare class ExtendedNote {
    /** The note as emitted from the Noir contract. */
    note: Note;
    /** The owner whose public key was used to encrypt the note. */
    owner: AztecAddress;
    /** The contract address this note is created in. */
    contractAddress: AztecAddress;
    /** The specific storage location of the note on the contract. */
    storageSlot: Fr;
    /** The type identifier of the note on the contract. */
    noteTypeId: NoteSelector;
    /** The hash of the tx the note was created in. */
    txHash: TxHash;
    constructor(
    /** The note as emitted from the Noir contract. */
    note: Note, 
    /** The owner whose public key was used to encrypt the note. */
    owner: AztecAddress, 
    /** The contract address this note is created in. */
    contractAddress: AztecAddress, 
    /** The specific storage location of the note on the contract. */
    storageSlot: Fr, 
    /** The type identifier of the note on the contract. */
    noteTypeId: NoteSelector, 
    /** The hash of the tx the note was created in. */
    txHash: TxHash);
    toBuffer(): Buffer;
    static fromBuffer(buffer: Buffer | BufferReader): ExtendedNote;
    static get schema(): z.ZodEffects<z.ZodObject<{
        note: z.ZodEffects<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[];
        }>]>, Note, string | {
            type: "Buffer";
            data: number[];
        }>;
        owner: z.ZodType<AztecAddress, any, string>;
        contractAddress: z.ZodType<AztecAddress, any, string>;
        storageSlot: z.ZodType<Fr, any, string>;
        noteTypeId: z.ZodType<NoteSelector, any, string>;
        txHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer, string>, TxHash, string>;
    }, "strip", z.ZodTypeAny, {
        contractAddress: AztecAddress;
        txHash: TxHash;
        note: Note;
        storageSlot: Fr;
        noteTypeId: NoteSelector;
        owner: AztecAddress;
    }, {
        contractAddress: string;
        txHash: string;
        note: string | {
            type: "Buffer";
            data: number[];
        };
        storageSlot: string;
        noteTypeId: string;
        owner: string;
    }>, ExtendedNote, {
        contractAddress: string;
        txHash: string;
        note: string | {
            type: "Buffer";
            data: number[];
        };
        storageSlot: string;
        noteTypeId: string;
        owner: string;
    }>;
    toString(): `0x${string}`;
    static fromString(str: string): ExtendedNote;
    static random(): ExtendedNote;
}
export declare class UniqueNote extends ExtendedNote {
    /** The nonce of the note. */
    nonce: Fr;
    constructor(
    /** The note as emitted from the Noir contract. */
    note: Note, 
    /** The owner whose public key was used to encrypt the note. */
    owner: AztecAddress, 
    /** The contract address this note is created in. */
    contractAddress: AztecAddress, 
    /** The specific storage location of the note on the contract. */
    storageSlot: Fr, 
    /** The type identifier of the note on the contract. */
    noteTypeId: NoteSelector, 
    /** The hash of the tx the note was created in. */
    txHash: TxHash, 
    /** The nonce of the note. */
    nonce: Fr);
    static get schema(): z.ZodEffects<z.ZodObject<{
        note: z.ZodEffects<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[];
        }>]>, Note, string | {
            type: "Buffer";
            data: number[];
        }>;
        owner: z.ZodType<AztecAddress, any, string>;
        contractAddress: z.ZodType<AztecAddress, any, string>;
        storageSlot: z.ZodType<Fr, any, string>;
        noteTypeId: z.ZodType<NoteSelector, any, string>;
        txHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer, string>, TxHash, string>;
        nonce: z.ZodType<Fr, any, string>;
    }, "strip", z.ZodTypeAny, {
        contractAddress: AztecAddress;
        txHash: TxHash;
        note: Note;
        storageSlot: Fr;
        noteTypeId: NoteSelector;
        owner: AztecAddress;
        nonce: Fr;
    }, {
        contractAddress: string;
        txHash: string;
        note: string | {
            type: "Buffer";
            data: number[];
        };
        storageSlot: string;
        noteTypeId: string;
        owner: string;
        nonce: string;
    }>, UniqueNote, {
        contractAddress: string;
        txHash: string;
        note: string | {
            type: "Buffer";
            data: number[];
        };
        storageSlot: string;
        noteTypeId: string;
        owner: string;
        nonce: string;
    }>;
    toBuffer(): Buffer;
    static random(): UniqueNote;
    static fromBuffer(buffer: Buffer | BufferReader): UniqueNote;
    static fromString(str: string): UniqueNote;
}
//# sourceMappingURL=extended_note.d.ts.map