StakingClient
@human-protocol/sdk • Docs
@human-protocol/sdk / staking / StakingClient
Class: StakingClient
Introduction
This client enables to perform actions on staking contracts and obtain staking information from both the contracts and subgraph.
Internally, the SDK will use one network or another according to the network ID of the runner
. To use this client, it is recommended to initialize it using the static build
method.
A Signer
or a Provider
should be passed depending on the use case of this module:
Signer: when the user wants to use this model in order to send transactions caling the contract functions.
Provider: when the user wants to use this model in order to get information from the contracts or subgraph.
Installation
npm
yarn
Code example
Signer
Using private key(backend)
Using Wagmi(frontend)
Provider
Extends
Constructors
new StakingClient()
new StakingClient(
runner
,networkData
):StakingClient
StakingClient constructor
Parameters
• runner: ContractRunner
The Runner object to interact with the Ethereum network
• networkData: NetworkData
Returns
Overrides
Source
Properties
escrowFactoryContract
escrowFactoryContract:
EscrowFactory
Source
networkData
networkData:
NetworkData
Inherited from
Source
rewardPoolContract
rewardPoolContract:
RewardPool
Source
runner
protected
runner:ContractRunner
Inherited from
Source
stakingContract
stakingContract:
Staking
Source
tokenContract
tokenContract:
HMToken
Source
Methods
allocate()
allocate(
escrowAddress
,amount
,txOptions
?):Promise
<void
>
This function allocates a portion of the staked tokens to a specific escrow.
Must have tokens staked
Parameters
• escrowAddress: string
Address of the escrow contract to allocate in.
• amount: bigint
Amount in WEI of tokens to allocate.
• txOptions?: Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Source
approveStake()
approveStake(
amount
,txOptions
?):Promise
<void
>
This function approves the staking contract to transfer a specified amount of tokens when the user stakes. It increases the allowance for the staking contract.
Parameters
• amount: bigint
Amount in WEI of tokens to approve for stake.
• txOptions?: Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Source
checkValidEscrow()
private
checkValidEscrow(escrowAddress
):Promise
<void
>
Check if escrow exists
Parameters
• escrowAddress: string
Escrow address to check against
Returns
Promise
<void
>
Source
closeAllocation()
closeAllocation(
escrowAddress
,txOptions
?):Promise
<void
>
This function drops the allocation from a specific escrow.
The escrow must have allocation The escrow must be cancelled or completed.
Parameters
• escrowAddress: string
Address of the escrow contract to close allocation from.
• txOptions?: Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Source
distributeReward()
distributeReward(
escrowAddress
,txOptions
?):Promise
<void
>
This function drops the allocation from a specific escrow.
The escrow must have rewards added
Parameters
• escrowAddress: string
Escrow address from which rewards are distributed.
• txOptions?: Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Source
getAllocation()
getAllocation(
escrowAddress
):Promise
<IAllocation
>
This function returns information about the allocation of the specified escrow.
Parameters
• escrowAddress: string
Escrow address from which we want to get allocation information.
Returns
Promise
<IAllocation
>
Returns allocation info if exists.
Code example
Source
slash()
slash(
slasher
,staker
,escrowAddress
,amount
,txOptions
?):Promise
<void
>
This function reduces the allocated amount by an staker in an escrow and transfers those tokens to the reward pool. This allows the slasher to claim them later.
Parameters
• slasher: string
Wallet address from who requested the slash
• staker: string
Wallet address from who is going to be slashed
• escrowAddress: string
Address of the escrow which allocation will be slashed
• amount: bigint
Amount in WEI of tokens to unstake.
• txOptions?: Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Source
stake()
stake(
amount
,txOptions
?):Promise
<void
>
This function stakes a specified amount of tokens on a specific network.
approveStake
must be called before
Parameters
• amount: bigint
Amount in WEI of tokens to stake.
• txOptions?: Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Source
unstake()
unstake(
amount
,txOptions
?):Promise
<void
>
This function unstakes tokens from staking contract. The unstaked tokens stay locked for a period of time.
Must have tokens available to unstake
Parameters
• amount: bigint
Amount in WEI of tokens to unstake.
• txOptions?: Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Source
withdraw()
withdraw(
txOptions
?):Promise
<void
>
This function withdraws unstaked and non locked tokens form staking contract to the user wallet.
Must have tokens available to withdraw
Parameters
• txOptions?: Overrides
= {}
Additional transaction parameters (optional, defaults to an empty object).
Returns
Promise
<void
>
Returns void if successful. Throws error if any.
Code example
Source
build()
static
build(runner
):Promise
<StakingClient
>
Creates an instance of StakingClient from a Runner.
Parameters
• runner: ContractRunner
The Runner object to interact with the Ethereum network
Returns
Promise
<StakingClient
>
An instance of StakingClient
Throws
Thrown if the provider does not exist for the provided Signer
Throws
Thrown if the network's chainId is not supported
Source
Last updated