UNPKG

@moonwell-fi/moonwell-sdk

Version:

TypeScript Interface for Moonwell

84 lines 3.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMorphoVaultSnapshots = getMorphoVaultSnapshots; const axios_1 = __importDefault(require("axios")); const dayjs_1 = __importDefault(require("dayjs")); const utc_js_1 = __importDefault(require("dayjs/plugin/utc.js")); const index_js_1 = require("../../../common/index.js"); dayjs_1.default.extend(utc_js_1.default); async function getMorphoVaultSnapshots(client, args) { const environment = (0, index_js_1.getEnvironmentFromArgs)(client, args); if (!environment) { return []; } return fetchVaultSnapshots(args .vaultAddress, environment); } async function fetchVaultSnapshots(vaultAddress, environment) { const dailyData = []; let hasNextPage = true; let endCursor; while (hasNextPage) { const result = await axios_1.default.post(environment.indexerUrl, { query: ` query { vaultDailySnapshots ( limit: 365, orderBy: "timestamp" orderDirection: "desc" where: {vaultAddress: "${vaultAddress.toLowerCase()}", chainId: ${environment.chainId}} ${endCursor ? `after: "${endCursor}"` : ""} ) { items { totalBorrows totalBorrowsUSD totalSupplies totalSuppliesUSD totalLiquidity totalLiquidityUSD timestamp } pageInfo { hasNextPage endCursor } } } `, }); if (result.data.data.vaultDailySnapshots) { dailyData.push(...result.data.data.vaultDailySnapshots.items.filter((f) => (0, index_js_1.isStartOfDay)(f.timestamp))); hasNextPage = result.data.data.vaultDailySnapshots.pageInfo.hasNextPage; endCursor = result.data.data.vaultDailySnapshots.pageInfo.endCursor; } } if (dailyData.length > 0) { return dailyData.map((point) => { const supplied = Number(point.totalSupplies); const borrow = Number(point.totalBorrows); const borrowUsd = Number(point.totalBorrowsUSD); const suppliedUsd = Number(point.totalSuppliesUSD); const liquidity = Number(point.totalLiquidity); const liquidityUsd = Number(point.totalLiquidityUSD); const result = { vaultAddress: vaultAddress.toLowerCase(), chainId: environment.chainId, timestamp: point.timestamp * 1000, totalSupply: supplied, totalSupplyUsd: suppliedUsd, totalBorrows: borrow, totalBorrowsUsd: borrowUsd, totalLiquidity: liquidity, totalLiquidityUsd: liquidityUsd, }; return result; }); } else { return []; } } //# sourceMappingURL=getMorphoVaultSnapshots.js.map