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

ParameterTypeRequiredDescription
stakedbigintrequiredUser staked balance (shares).
pendingRewardbigintrequiredPending reward amount (raw).
Hydrex

Hydrex is an Omni-Liquidity MetaDEX built on Base for Base, designed to bring new users onchain.

Paragraph

© 2026 Hydrex. All rights reserved.