proofgate 0.1.1

Official ProofGate SDK — blockchain transaction validation and guardrails for AI agents
Documentation
//! Basic example of using the ProofGate SDK.

use proofgate::{ProofGate, ValidateRequest, VerificationStatus};

#[tokio::main]
async fn main() -> Result<(), proofgate::Error> {
    // Get API key from environment or use placeholder
    let api_key = std::env::var("PROOFGATE_API_KEY")
        .unwrap_or_else(|_| "pg_your_api_key".to_string());

    // Initialize client
    let pg = ProofGate::new(&api_key)?;

    // Example: Validate a token transfer
    let result = pg.validate(ValidateRequest {
        from: "0x1234567890123456789012345678901234567890".to_string(),
        to: "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd".to_string(),
        // ERC20 transfer(address,uint256) calldata
        data: "0xa9059cbb0000000000000000000000001234567890123456789012345678901234567890000000000000000000000000000000000000000000000000000000000000000a".to_string(),
        value: Some("0".to_string()),
        guardrail_id: None,
        chain_id: Some(56), // BSC
    }).await?;

    println!("Validation ID: {}", result.validation_id);
    println!("Result: {:?}", result.result);
    println!("Safe: {}", result.safe);
    println!("Reason: {}", result.reason);

    if !result.checks.is_empty() {
        println!("\nChecks:");
        for check in &result.checks {
            let status = if check.passed { "" } else { "" };
            println!("  {} {} - {}", status, check.name, check.details);
        }
    }

    // Example: Check an agent's trust score
    let agent = pg.check_agent("0x1234567890123456789012345678901234567890").await?;
    
    println!("\nAgent Trust Score:");
    println!("  {} {} ({})", agent.tier_emoji, agent.trust_score, agent.tier_name);
    println!("  Status: {:?}", agent.verification_status);
    
    if agent.verification_status == VerificationStatus::Verified {
        println!("  ✅ This agent is ProofGate verified");
    } else {
        println!("  ⚠️  Exercise caution with this agent");
    }

    Ok(())
}