// This file is @generated by prost-build.
/// Represents a note's ID.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct NoteId {
    /// A unique identifier of the note which is a 32-byte commitment to the underlying note data.
    #[prost(message, optional, tag = "1")]
    pub id: ::core::option::Option<super::primitives::Digest>,
}
/// List of note IDs.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NoteIdList {
    /// List of note IDs to be queried from the database.
    #[prost(message, repeated, tag = "1")]
    pub ids: ::prost::alloc::vec::Vec<NoteId>,
}
/// Represents a note's metadata.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct NoteMetadata {
    /// The account which sent the note.
    #[prost(message, optional, tag = "1")]
    pub sender: ::core::option::Option<super::account::AccountId>,
    /// The type of the note (0b01 = public, 0b10 = private, 0b11 = encrypted).
    #[prost(uint32, tag = "2")]
    pub note_type: u32,
    /// A value which can be used by the recipient(s) to identify notes intended for them.
    ///
    /// See `miden_objects::note::note_tag` for more info.
    #[prost(fixed32, tag = "3")]
    pub tag: u32,
    /// Specifies when a note is ready to be consumed.
    ///
    /// See `miden_objects::note::execution_hint` for more info.
    #[prost(fixed64, tag = "4")]
    pub execution_hint: u64,
    /// An arbitrary user-defined value.
    #[prost(fixed64, tag = "5")]
    pub aux: u64,
}
/// Represents a note.
///
/// The note is composed of the note metadata and its serialized details.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Note {
    /// The note's metadata.
    #[prost(message, optional, tag = "1")]
    pub metadata: ::core::option::Option<NoteMetadata>,
    /// Serialized note details (empty for private notes).
    #[prost(bytes = "vec", optional, tag = "2")]
    pub details: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// Represents a network note.
///
/// Network notes are a subtype of public notes, and as such, their details are always publicly
/// known.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct NetworkNote {
    /// The note's metadata.
    #[prost(message, optional, tag = "1")]
    pub metadata: ::core::option::Option<NoteMetadata>,
    /// Serialized note details (i.e., assets and recipient).
    #[prost(bytes = "vec", tag = "2")]
    pub details: ::prost::alloc::vec::Vec<u8>,
}
/// Represents a committed note.
///
/// A committed note is a note that has been included in a block.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CommittedNote {
    /// Either private, public, or network note.
    #[prost(message, optional, tag = "1")]
    pub note: ::core::option::Option<Note>,
    /// The data needed to prove that the note is present in the chain.
    #[prost(message, optional, tag = "2")]
    pub inclusion_proof: ::core::option::Option<NoteInclusionInBlockProof>,
}
/// Represents the result of getting committed notes.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CommittedNoteList {
    /// List of committed notes.
    #[prost(message, repeated, tag = "1")]
    pub notes: ::prost::alloc::vec::Vec<CommittedNote>,
}
/// Represents a proof of note's inclusion in a block.
///
/// Does not include proof of the block's inclusion in the chain.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NoteInclusionInBlockProof {
    /// A unique identifier of the note which is a 32-byte commitment to the underlying note data.
    #[prost(message, optional, tag = "1")]
    pub note_id: ::core::option::Option<NoteId>,
    /// The block number in which the note was created.
    #[prost(fixed32, tag = "2")]
    pub block_num: u32,
    /// The index of the note in the block.
    #[prost(uint32, tag = "3")]
    pub note_index_in_block: u32,
    /// The note's inclusion proof in the block.
    #[prost(message, optional, tag = "4")]
    pub inclusion_path: ::core::option::Option<super::primitives::SparseMerklePath>,
}
/// Represents proof of a note inclusion in the block.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NoteSyncRecord {
    /// A unique identifier of the note which is a 32-byte commitment to the underlying note data.
    #[prost(message, optional, tag = "1")]
    pub note_id: ::core::option::Option<NoteId>,
    /// The index of the note in the block.
    #[prost(uint32, tag = "2")]
    pub note_index_in_block: u32,
    /// The note's metadata.
    #[prost(message, optional, tag = "3")]
    pub metadata: ::core::option::Option<NoteMetadata>,
    /// The note's inclusion proof in the block.
    #[prost(message, optional, tag = "4")]
    pub inclusion_path: ::core::option::Option<super::primitives::SparseMerklePath>,
}
/// Represents a note root.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct NoteRoot {
    /// The root of the note.
    #[prost(message, optional, tag = "1")]
    pub root: ::core::option::Option<super::primitives::Digest>,
}
/// Represents a note script.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct NoteScript {
    /// Entrypoint of the script.
    #[prost(uint32, tag = "1")]
    pub entrypoint: u32,
    /// Mast of the script.
    #[prost(bytes = "vec", tag = "2")]
    pub mast: ::prost::alloc::vec::Vec<u8>,
}
