## YT
npm install @pendle/sdk``
YtOrMarketInterest: {
address: string;
interest: TokenAmount;
};
Yt.find(address, chainId?) => Yt
Yt.methods(JsonRpcSigner, chainId?).fetchInterests(userAddress) => Promise
`
type OtReward = {
reward: TokenAmount
address: string
}
Ot.find(address, chainId?) => Ot
Ot.methods(JsonRpcSigner, chainId?).fetchInterests(userAddress) => Promise
`Market
$3
`
Market.find(address, chainId?) => Market
`
This supports finding both Pendle YT markets and Sushi OT markets$3
`
market.methods(signer, chainId?).getSwapFeeApr() => Promise
`
PendleMarket
$3
`
PendleMarket.find(address, chainId?) => PendleMarket
PendleMarket.methods(JsonRpcSigner, chainId?).fetchInterests(address) => Promise
`$3
`
CurrencyAmount = {
currency: string,
amount: string
}TokenReserveDetails = {
reserves: TokenAmount
weights: string
}
MarketDetails = {
tokenReserves: TokenReserveDetails[],
otherDetails: {
dailyVolume: CurrencyAmount,
volume24hChange: string,
liquidity: CurrencyAmount,
liquidity24HChange: string,
swapFeeApr: string,
impliedYield: string,
underlyingYieldRate: number,
YTPrice: CurrencyAmount
}
}
SwapDetails = {
inAmount: TokenAmount,
outAmount: TokenAmount,
minReceived?: TokenAmount,
maxInput?: TokenAmount
priceImpact: string,
swapFee: TokenAmount
}
AddDualLiquidityDetails = {
otherTokenAmount: TokenAmount,
shareOfPool: string
}
AddSingleLiquidityDetails = {
shareOfPool: string,
priceImpact: string,
rate: TokenAmount,
swapFee: TokenAmount
}
RemoveDualLiquidityDetails = {
tokenAmounts: TokenAmount[]
}
RemoveSingleLiquidityDetails = {
outAmount: TokenAmount
priceImpact?: string
rate: TokenAmount
swapFee?: TokenAmount
}
pendleMarket.methods(JsonRpcSigner, chainId?).readMarketDetails() => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).swapExactInDetails(inAmount: TokenAmount, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).swapExactOutDetails(outAmount: TokenAmount, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).swapExactIn(inAmount: TokenAmount, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).swapExactOut(outAmount: TokenAmount, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).addDualDetails(tokenAmount: TokenAmount, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).addDual(tokenAmounts: TokenAmount[], slippage: number) => Promise // tokenAmounts is assumed be xyt amount followed by baseToken amount
pendleMarket.methods(JsonRpcSigner, chainId?).addSingleDetails(tokenAmount: TokenAmount) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).addSingle(tokenAmount: TokenAmount, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).removeDualDetails(percentage: number, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).removeDual(percentage: number, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).removeSingleDetails(percentage: number, outToken: Token, slippage: number) => Promise
pendleMarket.methods(JsonRpcSigner, chainId?).removeSingle(percentage: number, outToken: Token, slippage: number) => Promise
pendleMarket.yieldContract() => YieldContract
pendleMarket.methods(signer, chainId?).getSwapFeeApr() => Promise
`Staking Pool
$3
`
enum YieldType {
INTEREST="interest",
REWARDS="rewards"
}YieldInfo = {
yield: TokenAmount,
yieldType: YieldType
}
PoolYields = {
address: string;
inputToken: Token;
yields: YieldInfo[];
};
FutureEpochRewards = {
epochId: number;
rewards: TokenAmount[];
};
PoolAccruingRewards = {
address: string;
inputToken: Token;
accruingRewards: FutureEpochRewards[];
};
PoolVestedRewards = {
address: string;
inputToken: Token;
vestedRewards: FutureEpochRewards[];
};
StakingPool.find(adddress, inputTokenAddress, chainId?) => StakingPool
StakingPool.methods(JsonRpcSigner, chainId?).fetchClaimableYields(address) => Promise
StakingPool.methods(JsonRpcSigner, chainId?).fetchAccruingRewards(address) => Promise
StakingPool.methods(JsonRpcSigner, chainId?).fetchVestedRewards(address) => Promise
`$3
`
AprInfo = {
origin: string, // 'Pendle' or 'Sushiswap'
apr: string
}StakedAmount = {
amount: TokenAmount;
valuation: CurrencyAmount;
}
stakingPool.methods(signer, chainId?).getTotalStaked() => Promise
stakingPool.methods(signer, chainId?).balanceOf(address) => Promise
stakingPool.methods(signer, chainId?).rewardAprs() => Promise
stakingPool.methods(signer, chainId?).stake(amount: TokenAmount) => Promise
stakingPool.methods(signer, chainId?).unstake(amount: TokenAmount) => Promise
`Yield Contract
$3
`
RedeemDetails = {
redeemableAmount: TokenAmount
interestAmount: TokenAmount
}yieldContract.methods(JsonRpcSigner, chainId?).mintDetails(toMint: TokenAmount) => Promise
yieldContract.methods(JsonRpcSigner, chainId?).mint(toMint: TokenAmount) => Promise
yieldContract.methods(JsonRpcSigner, chainId?).redeemDetails(otAmount: TokenAmount, userAddress: string) => Promise
yieldContract.methods(JsonRpcSigner, chainId?).redeem(otAmount: TokenAmount) => Promise
`Pendle Merkle Distributor
$3
`typescript
type PendleRewardDetails = {
address: string;
amount: string;
};pendleMerkleDistributor.methods({signer?, provider, chainId = 1}).fetchClaimableYield(userAddress: string) => Promise;
pendleMerkleDistributor.methods({signer?, provider, chainId = 1}).claim(userAddress: string) => Promise;
pendleMerkleDistributor.pendleRewardDetails() => Promise;
pendleMerkleDistributor.merkleTree() => Promise;
pendleMerkleDistributor.fetchUserTotalAmount(userAddress: string) => Promise;
`Misc functions:
`
import {Sdk} from '@pendle/sdk;Sdk.fetchValuations(TokenAmount[], chainId) => Promise
Sdk.claimYields({
yts: Token[],
ots: Token[],
lps: Token[],
interestStakingPools: StakingPool[],
rewardStakingPools: StakingPool[]
}) => Promise
```