UNPKG

@moonwell-fi/moonwell-sdk

Version:

TypeScript Interface for Moonwell

68 lines 2.34 kB
import axios from "axios"; import dayjs from "dayjs"; import utc from "dayjs/plugin/utc.js"; import { getEnvironmentFromArgs, isStartOfDay } from "../../../common/index.js"; dayjs.extend(utc); export async function getMorphoVaultStakingSnapshots(client, args) { const environment = getEnvironmentFromArgs(client, args); if (!environment) { return []; } return fetchVaultStakingSnapshots(args .vaultAddress, environment); } async function fetchVaultStakingSnapshots(vaultAddress, environment) { const dailyData = []; let hasNextPage = true; let endCursor; while (hasNextPage) { const result = await axios.post(environment.indexerUrl, { query: ` query { vaultStakingDailySnapshots ( limit: 365, orderBy: "timestamp" orderDirection: "desc" where: {vaultAddress: "${vaultAddress.toLowerCase()}", chainId: ${environment.chainId}} ${endCursor ? `after: "${endCursor}"` : ""} ) { items { totalStaked totalStakedUSD timestamp } pageInfo { hasNextPage endCursor } } } `, }); if (result.data.data.vaultStakingDailySnapshots) { dailyData.push(...result.data.data.vaultStakingDailySnapshots.items.filter((f) => isStartOfDay(f.timestamp))); hasNextPage = result.data.data.vaultStakingDailySnapshots.pageInfo.hasNextPage; endCursor = result.data.data.vaultStakingDailySnapshots.pageInfo.endCursor; } } if (dailyData.length > 0) { return dailyData.map((point) => { const staked = Number(point.totalStaked); const stakedUsd = Number(point.totalStakedUSD); const result = { vaultAddress: vaultAddress.toLowerCase(), chainId: environment.chainId, timestamp: point.timestamp * 1000, totalStaked: staked, totalStakedUsd: stakedUsd, }; return result; }); } else { return []; } } //# sourceMappingURL=getMorphoVaultStakingSnapshots.js.map