use catenis_api_client::{ CatenisClient, ClientOptions, Environment, Result, }; fn main() -> Result<()> { let device_credentials = ( "dnN3Ea43bhMTHtTvpytS", concat!( "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", ), ).into(); let mut ctn_client = CatenisClient::new_with_options( Some(device_credentials), &[ ClientOptions::Environment(Environment::Sandbox), ], )?; let asset_id = "aQjlzShmrnEZeeYBZihc"; let result = ctn_client.list_asset_holders( asset_id, Some(200), Some(0), )?; for idx in 0..result.asset_holders.len() { let asset_holder = &result.asset_holders[idx]; if let Some(holder) = &asset_holder.holder { println!("Asset holder #{}:", idx + 1); println!(" - device holding an amount of the asset: {:?}", holder); println!(" - amount of asset currently held by device: {}", asset_holder.balance.total); println!(" - amount not yet confirmed: {}", asset_holder.balance.unconfirmed); } else { println!("Migrated asset:"); println!(" - total migrated amount: {}", asset_holder.balance.total); println!(" - amount not yet confirmed: {}", asset_holder.balance.unconfirmed); } } if result.has_more { println!("Not all asset holders have been returned"); } Ok(()) }