teasel 0.14.0

Lightweight CLI utilities for inspecting Miden files, local stores, and RPC endpoints
use miden_client::account::{Account, AccountHeader};

use super::asset::format_asset;

pub(crate) fn render_account(account: &Account, include_vault: bool) {
    let header = AccountHeader::from(account);
    println!("- account type: {:?}", account.account_type());
    println!("- nonce: {}", header.nonce());
    println!("- vault commitment: {}", header.vault_root());
    println!("- storage commitment: {}", header.storage_commitment());
    println!("- code commitment: {}", header.code_commitment());
    println!("- header commitment: {}", header.to_commitment());

    if include_vault {
        println!("- storage slots: {}", account.storage().slots().len());
        render_vault(account.vault());
    }
}

fn render_vault(vault: &miden_client::asset::AssetVault) {
    if vault.is_empty() {
        println!("- assets: 0");
        return;
    }

    println!("- assets: {}", vault.num_assets());
    println!("- asset details:");
    for (idx, asset) in vault.assets().enumerate() {
        println!("  [{idx}] {}", format_asset(&asset));
    }
}