pub struct Delegation(pub AccountId);
Expand description
A wrapper struct that simplifies interactions with the Staking Pool standard on behalf of the account.
Delegation is a wrapper that provides the functionality to manage user account stake in the staking pool.
Tuple Fields§
§0: AccountId
Implementations§
Source§impl Delegation
impl Delegation
Sourcepub fn view_staked_balance(
&self,
pool: AccountId,
) -> Result<QueryBuilder<PostprocessHandler<NearToken, CallResultHandler<u128>>>, BuilderError>
pub fn view_staked_balance( &self, pool: AccountId, ) -> Result<QueryBuilder<PostprocessHandler<NearToken, CallResultHandler<u128>>>, BuilderError>
Prepares a new contract query (get_account_staked_balance
) for fetching the staked balance (NearToken) of the account on the staking pool.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let balance = Staking::delegation("alice.testnet".parse()?)
.view_staked_balance("pool.testnet".parse()?)?
.fetch_from_testnet()
.await?;
println!("Staked balance: {:?}", balance);
Sourcepub fn view_unstaked_balance(
&self,
pool: AccountId,
) -> Result<QueryBuilder<PostprocessHandler<NearToken, CallResultHandler<u128>>>, BuilderError>
pub fn view_unstaked_balance( &self, pool: AccountId, ) -> Result<QueryBuilder<PostprocessHandler<NearToken, CallResultHandler<u128>>>, BuilderError>
Prepares a new contract query (get_account_unstaked_balance
) for fetching the unstaked(free, not used for staking) balance (NearToken) of the account on the staking pool.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let balance = Staking::delegation("alice.testnet".parse()?)
.view_unstaked_balance("pool.testnet".parse()?)?
.fetch_from_testnet()
.await?;
println!("Unstaked balance: {:?}", balance);
Sourcepub fn view_total_balance(
&self,
pool: AccountId,
) -> Result<QueryBuilder<PostprocessHandler<NearToken, CallResultHandler<u128>>>, BuilderError>
pub fn view_total_balance( &self, pool: AccountId, ) -> Result<QueryBuilder<PostprocessHandler<NearToken, CallResultHandler<u128>>>, BuilderError>
Prepares a new contract query (get_account_total_balance
) for fetching the total balance (NearToken) of the account (free + staked) on the staking pool.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let balance = Staking::delegation("alice.testnet".parse()?)
.view_total_balance("pool.testnet".parse()?)?
.fetch_from_testnet()
.await?;
println!("Total balance: {:?}", balance);
Sourcepub fn view_balance(
&self,
pool: AccountId,
) -> Result<MultiQueryBuilder<PostprocessHandler<UserStakeBalance, MultiQueryHandler<(CallResultHandler<u128>, CallResultHandler<u128>, CallResultHandler<u128>)>>>, BuilderError>
pub fn view_balance( &self, pool: AccountId, ) -> Result<MultiQueryBuilder<PostprocessHandler<UserStakeBalance, MultiQueryHandler<(CallResultHandler<u128>, CallResultHandler<u128>, CallResultHandler<u128>)>>>, BuilderError>
Returns a full information about the staked balance (UserStakeBalance) of the account on the staking pool.
This is a complex query that requires 3 calls (get_account_staked_balance, get_account_unstaked_balance, get_account_total_balance) to the staking pool contract.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let balance = Staking::delegation("alice.testnet".parse()?)
.view_balance("pool.testnet".parse()?)?
.fetch_from_testnet()
.await?;
println!("Balance: {:?}", balance);
Sourcepub fn is_account_unstaked_balance_available_for_withdrawal(
&self,
pool: AccountId,
) -> Result<QueryBuilder<CallResultHandler<bool>>, BuilderError>
pub fn is_account_unstaked_balance_available_for_withdrawal( &self, pool: AccountId, ) -> Result<QueryBuilder<CallResultHandler<bool>>, BuilderError>
Prepares a new contract query (is_account_unstaked_balance_available
) for checking if the unstaked balance of the account is available for withdrawal.
Some pools configures minimum withdrawal period in epochs, so the balance is not available for withdrawal immediately.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let is_available = Staking::delegation("alice.testnet".parse()?)
.is_account_unstaked_balance_available_for_withdrawal("pool.testnet".parse()?)?
.fetch_from_testnet()
.await?;
println!("Is available: {:?}", is_available);
Sourcepub fn deposit(
&self,
pool: AccountId,
amount: NearToken,
) -> Result<ConstructTransaction, BuilderError>
pub fn deposit( &self, pool: AccountId, amount: NearToken, ) -> Result<ConstructTransaction, BuilderError>
Prepares a new transaction contract call (deposit
) for depositing funds into the staking pool.
Please note that your deposit is not staked, and it will be allocated as unstaked (free) balance.
Please note that this call will deposit your account tokens into the contract, so you will not be able to use them for other purposes.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let result: near_primitives::views::FinalExecutionOutcomeView = Staking::delegation("alice.testnet".parse()?)
.deposit("pool.testnet".parse()?, NearToken::from_near(1))?
.with_signer(Signer::new(Signer::from_ledger())?)
.send_to_testnet()
.await?;
Sourcepub fn deposit_and_stake(
&self,
pool: AccountId,
amount: NearToken,
) -> Result<ConstructTransaction, BuilderError>
pub fn deposit_and_stake( &self, pool: AccountId, amount: NearToken, ) -> Result<ConstructTransaction, BuilderError>
Prepares a new transaction contract call (deposit_and_stake
) for depositing funds into the staking pool and staking them.
Please note that this call will deposit your account tokens into the contract, so you will not be able to use them for other purposes. Also, after you have staked your funds, if you decide to withdraw them, you might need to wait for the two lockup period to end.
- Mandatory lockup before able to unstake
- Optional lockup before able to withdraw (depends on the pool configuration)
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let result: near_primitives::views::FinalExecutionOutcomeView = Staking::delegation("alice.testnet".parse()?)
.deposit_and_stake("pool.testnet".parse()?, NearToken::from_near(1))?
.with_signer(Signer::new(Signer::from_ledger())?)
.send_to_testnet()
.await?;
Sourcepub fn stake(
&self,
pool: AccountId,
amount: NearToken,
) -> Result<ConstructTransaction, BuilderError>
pub fn stake( &self, pool: AccountId, amount: NearToken, ) -> Result<ConstructTransaction, BuilderError>
Prepares a new transaction contract call (stake
) for staking funds into the staking pool.
Please note that this call will use your unstaked balance. This means that you have to have enough balance already deposited into the contract. This won’t use your native account tokens, but just reallocate your balance inside the contract. Please also be aware that once you have staked your funds, you might not be able to withdraw them until the lockup periods end.
- Mandatory lockup before able to unstake
- Optional lockup before able to withdraw (depends on the pool configuration)
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let result: near_primitives::views::FinalExecutionOutcomeView = Staking::delegation("alice.testnet".parse()?)
.stake("pool.testnet".parse()?, NearToken::from_near(1))?
.with_signer(Signer::new(Signer::from_ledger())?)
.send_to_testnet()
.await?;
Sourcepub fn stake_all(
&self,
pool: AccountId,
) -> Result<ConstructTransaction, BuilderError>
pub fn stake_all( &self, pool: AccountId, ) -> Result<ConstructTransaction, BuilderError>
Prepares a new transaction contract call (stake_all
) for staking all available unstaked balance into the staking pool.
Please note that once you have staked your funds, you might not be able to withdraw them until the lockup periods end.
- Mandatory lockup before able to unstake
- Optional lockup before able to withdraw (depends on the pool configuration)
The call depends that the contract implements StakingPool
§Example
use near_api::*;
Staking::delegation("alice.testnet".parse()?)
.stake_all("pool.testnet".parse()?)?
.with_signer(Signer::new(Signer::from_ledger())?)
.send_to_testnet()
.await?;
Sourcepub fn unstake(
&self,
pool: AccountId,
amount: NearToken,
) -> Result<ConstructTransaction, BuilderError>
pub fn unstake( &self, pool: AccountId, amount: NearToken, ) -> Result<ConstructTransaction, BuilderError>
Prepares a new transaction contract call (unstake
) for unstaking funds and returning them to your unstaked balance.
The contract will check if the minimum epoch height condition is met.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let result: near_primitives::views::FinalExecutionOutcomeView = Staking::delegation("alice.testnet".parse()?)
.unstake("pool.testnet".parse()?, NearToken::from_near(1))?
.with_signer(Signer::new(Signer::from_ledger())?)
.send_to_testnet()
.await?;
Sourcepub fn unstake_all(
&self,
pool: AccountId,
) -> Result<ConstructTransaction, BuilderError>
pub fn unstake_all( &self, pool: AccountId, ) -> Result<ConstructTransaction, BuilderError>
Prepares a new transaction contract call (unstake_all
) for unstaking all available staked balance and returning them to your unstaked balance.
The contract will check if the minimum epoch height condition is met.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let result: near_primitives::views::FinalExecutionOutcomeView = Staking::delegation("alice.testnet".parse()?)
.unstake_all("pool.testnet".parse()?)?
.with_signer(Signer::new(Signer::from_ledger())?)
.send_to_testnet()
.await?;
Sourcepub fn withdraw(
&self,
pool: AccountId,
amount: NearToken,
) -> Result<ConstructTransaction, BuilderError>
pub fn withdraw( &self, pool: AccountId, amount: NearToken, ) -> Result<ConstructTransaction, BuilderError>
Prepares a new transaction contract call (withdraw
) for withdrawing funds from the staking pool into your account.
Some pools configures minimum withdrawal period in epochs, so the balance is not available for withdrawal immediately.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let result: near_primitives::views::FinalExecutionOutcomeView = Staking::delegation("alice.testnet".parse()?)
.withdraw("pool.testnet".parse()?, NearToken::from_near(1))?
.with_signer(Signer::new(Signer::from_ledger())?)
.send_to_testnet()
.await?;
Sourcepub fn withdraw_all(
&self,
pool: AccountId,
) -> Result<ConstructTransaction, BuilderError>
pub fn withdraw_all( &self, pool: AccountId, ) -> Result<ConstructTransaction, BuilderError>
Prepares a new transaction contract call (withdraw_all
) for withdrawing all available staked balance from the staking pool into your account.
Some pools configures minimum withdrawal period in epochs, so the balance is not available for withdrawal immediately.
The call depends that the contract implements StakingPool
§Example
use near_api::*;
let result: near_primitives::views::FinalExecutionOutcomeView = Staking::delegation("alice.testnet".parse()?)
.withdraw_all("pool.testnet".parse()?)?
.with_signer(Signer::new(Signer::from_ledger())?)
.send_to_testnet()
.await?;
Trait Implementations§
Source§impl Clone for Delegation
impl Clone for Delegation
Source§fn clone(&self) -> Delegation
fn clone(&self) -> Delegation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for Delegation
impl RefUnwindSafe for Delegation
impl Send for Delegation
impl Sync for Delegation
impl Unpin for Delegation
impl UnwindSafe for Delegation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.