UNPKG

@moonwell-fi/moonwell-sdk

Version:

TypeScript Interface for Moonwell

55 lines 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMorphoVaultStakingSnapshots = getMorphoVaultStakingSnapshots; const index_js_1 = require("../../../common/index.js"); const lunar_indexer_client_js_1 = require("../../lunar-indexer-client.js"); const lunar_indexer_transformers_js_1 = require("../../lunar-indexer-transformers.js"); async function getMorphoVaultStakingSnapshots(client, args) { const environment = (0, index_js_1.getEnvironmentFromArgs)(client, args); if (!environment) { return []; } const { vaultAddress, period, startTime: customStartTime, endTime: customEndTime, } = args; const { lunarIndexerUrl } = environment; if (!lunarIndexerUrl) { return []; } try { return await fetchVaultStakingSnapshotsFromLunar(vaultAddress, lunarIndexerUrl, environment.chainId, period, customStartTime, customEndTime); } catch (error) { console.warn(`[getMorphoVaultStakingSnapshots] Lunar Indexer failed for chain ${environment.chainId}:`, error); environment.onError?.(error, { source: "morpho-vault-staking-snapshots", chainId: environment.chainId, }); return []; } } async function fetchVaultStakingSnapshotsFromLunar(vaultAddress, lunarIndexerUrl, chainId, period, customStartTime, customEndTime) { const lunarClient = (0, lunar_indexer_client_js_1.createLunarIndexerClient)({ baseUrl: lunarIndexerUrl, timeout: lunar_indexer_client_js_1.DEFAULT_LUNAR_TIMEOUT_MS, }); const { startTime, endTime, granularity } = (0, index_js_1.calculateTimeRange)(period, customStartTime, customEndTime); const allSnapshots = []; let cursor = null; const MAX_PAGES = 100; let page = 0; do { const response = await lunarClient.getVaultStakingSnapshots(chainId, { limit: 1000, granularity: (0, index_js_1.toApiGranularity)(granularity), startTime, endTime, vaultAddress: vaultAddress.toLowerCase(), ...(cursor && { cursor }), }); allSnapshots.push(...(0, lunar_indexer_transformers_js_1.transformVaultStakingSnapshots)(response.results)); cursor = response.nextCursor; page++; } while (cursor !== null && page < MAX_PAGES); allSnapshots.sort((a, b) => a.timestamp - b.timestamp); return (0, index_js_1.applyGranularity)(allSnapshots, granularity); } //# sourceMappingURL=getMorphoVaultStakingSnapshots.js.map