use amp_rs::{model::CreateAssetAssignmentRequest, ApiClient};
use dotenvy;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
println!("🚀 Create Test Assignments Example");
println!("==================================");
println!("📁 Loading environment variables from .env file");
dotenvy::dotenv().ok();
env::set_var("AMP_TESTS", "live");
println!("🌐 Creating AMP API client");
let client = ApiClient::new().await?;
println!(
"✅ Connected to AMP API with {} strategy",
client.get_strategy_type()
);
let asset_uuid = "bf03c7ce-8cce-400e-9c08-e5231b44036c";
println!("\n🎯 Targeting test asset: {}", asset_uuid);
println!("👥 Getting registered users...");
let users = client.get_registered_users().await?;
if users.is_empty() {
println!("❌ No registered users found");
return Ok(());
}
println!("✅ Found {} registered users", users.len());
let user = &users[0];
println!("👤 Using user: {} (ID: {})", user.name, user.id);
println!("\n📝 Creating test assignment...");
let assignment_request = CreateAssetAssignmentRequest {
registered_user: user.id,
amount: 1000,
vesting_timestamp: None,
ready_for_distribution: true, };
match client
.create_asset_assignments(asset_uuid, &vec![assignment_request])
.await
{
Ok(assignments) => {
println!("✅ Created {} assignment(s):", assignments.len());
for assignment in assignments {
println!(" ID: {}", assignment.id);
println!(" User: {}", assignment.registered_user);
println!(" Amount: {}", assignment.amount);
println!(
" Ready for distribution: {}",
assignment.ready_for_distribution
);
}
}
Err(e) => {
println!("❌ Failed to create assignment: {}", e);
}
}
println!("\n🎉 Test assignment creation completed!");
println!(" You can now run the cancel example to test cleanup.");
Ok(())
}