UNPKG

@lidofinance/lido-ethereum-sdk

Version:

<div style="display: flex;" align="center"> <h1 align="center">Lido Ethereum SDK</h1> </div>

75 lines 2.37 kB
import { request } from 'graphql-request'; import { StatusQuery, LidoTransfersQuery, TotalRewardsQuery, InitialStateQuery, } from './queries.js'; const parseSubgraphUrl = (value) => { if (typeof value === 'string') return { url: value }; else return value; }; const requestAllWithStep = async ({ url, step, document, variables, fromBlock, toBlock, extractArray, }) => { let skip = 0; const results = []; // eslint-disable-next-line no-constant-condition while (true) { const partialResult = await request({ ...parseSubgraphUrl(url), document, variables: { ...variables, first: step, skip, fromBlock: Number(fromBlock), toBlock: Number(toBlock), }, }); const array = extractArray(partialResult); results.push(...array); // break if we don't fetch more than step if (array.length < step) break; skip += step; } return results; }; export const getLastIndexedBlock = async ({ url, }) => { return (await request({ ...parseSubgraphUrl(url), document: StatusQuery, }))._meta.block; }; export const getInitialData = async ({ url, address, block, }) => { const { lidoTransfers, totalRewards } = await request({ ...parseSubgraphUrl(url), document: InitialStateQuery, variables: { address, block: Number(block) }, }); return { transfer: lidoTransfers.length > 0 ? lidoTransfers?.[0] ?? null : null, rebase: totalRewards.length > 0 ? totalRewards?.[0] ?? null : null, }; }; export const getTransfers = async ({ url, address, fromBlock, toBlock, step, }) => { return requestAllWithStep({ url, document: LidoTransfersQuery, step, fromBlock, extractArray: (result) => result?.lidoTransfers ?? [], toBlock, variables: { address, }, }); }; export const getTotalRewards = async ({ url, fromBlock, step, toBlock, }) => { return requestAllWithStep({ url, document: TotalRewardsQuery, step, extractArray: (result) => result?.totalRewards ?? [], fromBlock, toBlock, variables: {}, }); }; //# sourceMappingURL=subgraph.js.map