Installation
Cargo.toml
Copy
[dependencies]
sw4p-bridge = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
Basic Usage
Copy
use sw4p_bridge::Sw4pBridge;
let bridge = Sw4pBridge::new("sk_...");
Core Methods
transfer()
Copy
let result = bridge.transfer(TransferParams {
from: Chain::Base,
to: Chain::Solana,
amount: "100.00".into(),
recipient: "5abc123...".into(),
permit: Some(permit),
..Default::default()
}).await?;
estimate_fee()
Copy
let estimate = bridge.estimate_fee(
Chain::Base,
Chain::Solana,
"100.00"
).await?;
get_status()
Copy
let status = bridge.get_status("int_abc123").await?;
match status.status {
TransferStatus::Complete => println!("Done!"),
TransferStatus::Failed => println!("Failed"),
_ => println!("In progress..."),
}
Solana Helpers
build_solana_transfer()
Copy
let tx_data = bridge.build_solana_transfer(SolanaBuildParams {
to: Chain::Base,
amount: "100.00".into(),
from_wallet: "5abc123...".into(),
recipient: "0x...".into(),
..Default::default()
}).await?;
Error Handling
Copy
use sw4p_bridge::Error;
match bridge.transfer(params).await {
Ok(result) => println!("Success: {}", result.intent_id),
Err(Error::Auth(msg)) => eprintln!("Auth failed: {}", msg),
Err(Error::RateLimit { retry_after_ms }) => {
println!("Rate limited, retry in {}ms", retry_after_ms);
}
Err(e) => eprintln!("Error: {}", e),
}