Skip to main content

Staking Pool Types

This guide explains the different types of staking pools available in the Steer Protocol and their specific features.

Overview

Steer Protocol supports several types of staking pools:

  1. Single Reward Pools
  2. Dual Reward Pools
  3. Steer Vault LP Staking Pools
  4. Regular Token Staking Pools

Single Reward Pools

Single reward pools distribute one type of reward token to stakers.

// Example: Fetching single reward pools
const singleRewardPools = await steerClient.staking.getStakingPools({
isDualRewards: false
});

// Check rewards
const rewards = await steerClient.staking.earned(poolAddress, userAddress);
if (rewards.success) {
console.log('Rewards:', rewards.data.rewardA.toString());
}

Dual Reward Pools

Dual reward pools distribute two different reward tokens to stakers.

// Example: Fetching dual reward pools
const dualRewardPools = await steerClient.staking.getDualRewardsStakingPools();

// Check both rewards
const rewards = await steerClient.staking.earned(poolAddress, userAddress);
if (rewards.success) {
console.log('Reward A:', rewards.data.rewardA.toString());
console.log('Reward B:', rewards.data.rewardB?.toString());
}

Steer Vault LP Staking Pools

These pools allow staking of Steer vault LP tokens and have special features for handling underlying token values.

// Example: Working with Steer vault LP pools
const pool = await steerClient.staking.getStakingPools({
isSteerVault: true
});

// Get LP token value
const lpValue = await steerClient.staking.getSteerLpTokenValue({
stakingPool: pool.data[0],
amount: lpTokenAmount,
token0UsdPrice: price0,
token1UsdPrice: price1
});

if (lpValue.success) {
console.log('Total Value:', lpValue.data.totalValueUsd);
console.log('Token 0 Value:', lpValue.data.token0Value);
console.log('Token 1 Value:', lpValue.data.token1Value);
}

Special Considerations for Vault LP Pools

  1. Underlying Token Values

    • LP tokens represent a share of two underlying tokens
    • Values need to be calculated using both token prices
    • Special methods available for value calculation
  2. Total Value Locked (TVL)

    const tvl = await steerClient.staking.getTotalStakingAmountInUsd(
    pool,
    token0Price,
    token1Price
    );

Regular Token Staking Pools

These pools allow staking of regular ERC20 tokens.

// Example: Working with regular staking pools
const regularPools = await steerClient.staking.getStakingPools({
isSteerVault: false
});

// Get staked token value
const tokenValue = await steerClient.staking.getSteerLpTokenValue({
stakingPool: regularPools.data[0],
amount: tokenAmount,
token0UsdPrice: tokenPrice
});

Pool Filtering and Selection

You can combine various filters to find specific types of pools:

// Example: Get high-yield dual reward pools on Polygon
const pools = await steerClient.staking.getStakingPools({
chainId: 137,
isDualRewards: true,
minDailyEmissionA: 1000,
minDailyEmissionB: 500,
isLive: true
});

Available Filter Options

  • chainId: Filter by specific blockchain
  • protocol: Filter by protocol (e.g., Forge, Kinetix)
  • isLive: Only show active pools
  • isDualRewards: Filter dual/single reward pools
  • minDailyEmissionA: Minimum daily reward A emission
  • minDailyEmissionB: Minimum daily reward B emission
  • includeExpired: Include expired pools

APR Calculation

Each pool type may have different APR calculation methods:

// Basic APR calculation
const apr = steerClient.staking.calculateAPR(
pool,
rewardTokenPrice,
totalStakedUSD
);

// For dual reward pools, both rewards are included in APR
if (pool.isDualFactory) {
console.log('Combined APR:', apr);
}

Best Practices

  1. Pool Selection

    • Always verify pool type before interaction
    • Check if pool is active using periodFinish
    • Verify reward token details
  2. Value Calculation

    • Use appropriate value calculation method based on pool type
    • Always provide correct token prices
    • Handle decimals correctly
  3. Monitoring

    • Track reward rates and emissions
    • Monitor pool status and expiry
    • Keep track of user's staked positions