// This file is @generated by prost-build.
/// Uniquely identifies a specific account.
///
/// A Miden account ID is a 120-bit value derived from the commitments to account code and storage,
/// and a random user-provided seed.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
#[prost(skip_debug)]
pub struct AccountId {
    /// 15 bytes (120 bits) encoded using \[winter_utils::Serializable\] implementation for
    /// \[miden_objects::account::account_id::AccountId\].
    #[prost(bytes = "vec", tag = "1")]
    pub id: ::prost::alloc::vec::Vec<u8>,
}
/// The state of an account at a specific block height.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct AccountSummary {
    /// The account ID.
    #[prost(message, optional, tag = "1")]
    pub account_id: ::core::option::Option<AccountId>,
    /// The current account commitment or zero if the account does not exist.
    #[prost(message, optional, tag = "2")]
    pub account_commitment: ::core::option::Option<super::primitives::Digest>,
    /// Block number at which the summary was made.
    #[prost(uint32, tag = "3")]
    pub block_num: u32,
}
/// Represents the storage header of an account.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AccountStorageHeader {
    /// Storage slots with their types and commitments.
    #[prost(message, repeated, tag = "1")]
    pub slots: ::prost::alloc::vec::Vec<account_storage_header::StorageSlot>,
}
/// Nested message and enum types in `AccountStorageHeader`.
pub mod account_storage_header {
    /// A single storage slot in the account storage header.
    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct StorageSlot {
        /// The type of the storage slot.
        #[prost(uint32, tag = "1")]
        pub slot_type: u32,
        /// The commitment (Word) for this storage slot.
        #[prost(message, optional, tag = "2")]
        pub commitment: ::core::option::Option<super::super::primitives::Digest>,
    }
}
/// An account details.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct AccountDetails {
    /// Account summary.
    #[prost(message, optional, tag = "1")]
    pub summary: ::core::option::Option<AccountSummary>,
    /// Account details encoded using \[winter_utils::Serializable\] implementation for
    /// \[miden_objects::account::Account\].
    #[prost(bytes = "vec", optional, tag = "2")]
    pub details: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// An account header.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct AccountHeader {
    /// The account ID.
    #[prost(message, optional, tag = "1")]
    pub account_id: ::core::option::Option<AccountId>,
    /// Vault root hash.
    #[prost(message, optional, tag = "2")]
    pub vault_root: ::core::option::Option<super::primitives::Digest>,
    /// Storage root hash.
    #[prost(message, optional, tag = "3")]
    pub storage_commitment: ::core::option::Option<super::primitives::Digest>,
    /// Code root hash.
    #[prost(message, optional, tag = "4")]
    pub code_commitment: ::core::option::Option<super::primitives::Digest>,
    /// Account nonce.
    #[prost(uint64, tag = "5")]
    pub nonce: u64,
}
/// An account witness.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AccountWitness {
    /// Account ID for which this proof is requested.
    #[prost(message, optional, tag = "1")]
    pub account_id: ::core::option::Option<AccountId>,
    /// The account ID within the proof, which may be different from the above account ID.
    /// This can happen when the requested account ID's prefix matches the prefix of an existing
    /// account ID in the tree. Then the witness will prove inclusion of this witness ID in the tree.
    #[prost(message, optional, tag = "2")]
    pub witness_id: ::core::option::Option<AccountId>,
    /// The state commitment whose inclusion the witness proves.
    #[prost(message, optional, tag = "3")]
    pub commitment: ::core::option::Option<super::primitives::Digest>,
    /// The merkle path of the state commitment in the account tree.
    #[prost(message, optional, tag = "4")]
    pub path: ::core::option::Option<super::primitives::SparseMerklePath>,
}
