1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! Starknet native staking integration.
//!
//! Provides delegation pool management:
//! enter, add, exit (intent + action), reward claiming, and pool discovery.
//!
//! All staking methods are implemented directly on [`crate::wallet::Wallet`].
//!
//! # Example
//!
//! ```rust,no_run
//! use starkzap_rs::{
//! Amount, StarkZap, StarkZapConfig, Network, OnboardConfig,
//! paymaster::FeeMode,
//! signer::StarkSigner,
//! staking::presets::mainnet_validators,
//! tokens::mainnet,
//! };
//!
//! # async fn example() -> starkzap_rs::error::Result<()> {
//! let sdk = StarkZap::new(StarkZapConfig::mainnet());
//! let signer = StarkSigner::new(&std::env::var("PRIVATE_KEY").unwrap(), &std::env::var("ADDRESS").unwrap())?;
//! let wallet = sdk.onboard(OnboardConfig::Signer(signer)).await?;
//!
//! let strk = mainnet::strk();
//! let validators = mainnet_validators();
//! let pools = wallet.get_staker_pools(validators[0].staker_address).await?;
//! let pool = pools[0].address;
//!
//! // Stake 100 STRK
//! let amount = Amount::parse("100", &strk)?;
//! let tx = wallet.enter_pool(&strk, pool, amount, wallet.address(), FeeMode::UserPays).await?;
//! tx.wait().await?;
//!
//! // Check position
//! let pos = wallet.get_pool_position(pool, &strk).await?;
//! println!("Staked: {}", pos.staked);
//! println!("Rewards: {}", pos.rewards);
//!
//! // Claim rewards
//! let tx = wallet.claim_rewards(pool, FeeMode::UserPays).await?;
//! tx.wait().await?;
//! # Ok(())
//! # }
//! ```
pub use DiscoveredPool;
pub use ;
pub use PoolPosition;