Gauge
The Gauge class provides static calldata builders for staking LP tokens and claiming rewards. All methods are static. The to address for each transaction is the gauge contract address itself.
Write: Calldata Builders
All write methods return a { calldata } object. Send each transaction to the specific gauge contract address.
typescript
import { Gauge } from '@hydrexfi/hydrex-sdk';
// Stake a specific amount
const { calldata } = Gauge.depositCallParameters('1000000000000000000');
// Stake the caller's full balance
const { calldata: depositAll } = Gauge.depositAllCallParameters();
// Unstake a specific amount
const { calldata: withdraw } = Gauge.withdrawCallParameters('1000000000000000000');
// Unstake everything (use for Ichi/Gamma strategies)
const { calldata: withdrawAll } = Gauge.withdrawAllCallParameters();
// Unstake everything + claim all rewards in one tx
const { calldata: withdrawAndHarvest } = Gauge.withdrawAllAndHarvestCallParameters();
// Claim rewards for the caller
const { calldata: claim } = Gauge.getRewardCallParameters();
// Claim rewards on behalf of another user
const { calldata: claimFor } = Gauge.getRewardCallParameters('0xUserAddress');
// Claim specific reward tokens on behalf of a user
const { calldata: claimTokens } = Gauge.getRewardCallParameters(
'0xUserAddress',
['0xRewardToken']
);⚠
Approve before staking
Before calling any deposit method, approve the gauge contract to spend your LP tokens. Use
Gauge.getStakeToken(readContract) to discover which token to approve.Read: Contract Reads
Read methods require an injected readContract or readContracts function bound to the gauge contract address.
typescript
// Staked balance (shares)
const staked: bigint = await Gauge.getUserStaked('0xUser', readContract);
// Pending reward amount
const pending: bigint = await Gauge.getPendingReward('0xUser', readContract);
// With explicit reward token
const pendingSpecific: bigint = await Gauge.getPendingReward(
'0xUser',
readContract,
'0xRewardToken'
);
// Staked balance + pending reward in one batched call
const { staked: stakedAmt, pendingReward }: GaugeUserState =
await Gauge.getUserState('0xUser', '0xRewardToken', readContracts);
// Total staked supply
const supply: bigint = await Gauge.getTotalSupply(readContract);
// Token to approve before depositing
const stakeToken: string = await Gauge.getStakeToken(readContract);
// Primary reward token
const rewardToken: string = await Gauge.getRewardToken(readContract);
// Check if a token is a registered reward token
const isReward: boolean = await Gauge.isRewardToken('0xToken', readContract);GaugeUserState
| Parameter | Type | Required | Description |
|---|---|---|---|
staked | bigint | required | User staked balance (shares). |
pendingReward | bigint | required | Pending reward amount (raw). |