UNPKG

@admin-jigsaw/jigsaw-sdk

Version:

Returns predefined data for Jigsaw platform and exposes functionality to retrieve the necessary data

46 lines (45 loc) 2 kB
import { encodeAbiParameters, getAddress, zeroAddress } from "viem"; import { getChainConfig } from "../constants/chains"; import { PENDLE_EMPTY_SWAP_DATA } from "../constants/strategiesSharedConstants"; import { removePendleLiquidityAbi } from "../contracts/removePendleLiquidityAbi"; export const generatePendleRemoveLiquidityDataString = async (resp) => { const TokenOutput = resp.contractCallParams[3]; // Ensure data is properly formatted for encoding const encodedData = encodeAbiParameters(removePendleLiquidityAbi, // Using the JSON ABI [ { tokenOut: TokenOutput.tokenOut, minTokenOut: TokenOutput.minTokenOut, tokenRedeemSy: TokenOutput.tokenRedeemSy, pendleSwap: zeroAddress, swapData: PENDLE_EMPTY_SWAP_DATA, }, ]); return encodedData; }; /** * Returns the Pendle market address based on the provided strategy address. * @param {Address} stratAddress - The strategy address to look up. * @param {number} chainId - The chain ID to get the correct constants. * @returns {Address | null} - The corresponding market address or null if not found. */ export function getPendleMarketByStrategy(stratAddress, chainId = 1) { const chainConfig = getChainConfig(chainId); if (chainConfig.strategies === null) return null; if (!chainConfig.strategies.pendle?.strategies || !chainConfig.strategies.pendle?.markets) { return null; } const normalizedStratAddress = getAddress(stratAddress); // Find the strategy that matches the given strategy address and return its market address for (const [_, strategies] of Object.entries(chainConfig.strategies.pendle.strategies)) { for (const strategy of strategies) { if (getAddress(strategy.stratAddress) === normalizedStratAddress) { return strategy.marketAddress; } } } // If no matching strategy found, return null return null; }