UNPKG

@lidofinance/lido-ethereum-sdk

Version:

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

80 lines 2.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTotalRewards = exports.getTransfers = exports.getInitialData = exports.getLastIndexedBlock = void 0; const graphql_request_1 = require("graphql-request"); const queries_js_1 = require("./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 = []; while (true) { const partialResult = await (0, graphql_request_1.request)({ ...parseSubgraphUrl(url), document, variables: { ...variables, first: step, skip, fromBlock: Number(fromBlock), toBlock: Number(toBlock), }, }); const array = extractArray(partialResult); results.push(...array); if (array.length < step) break; skip += step; } return results; }; const getLastIndexedBlock = async ({ url, }) => { return (await (0, graphql_request_1.request)({ ...parseSubgraphUrl(url), document: queries_js_1.StatusQuery, }))._meta.block; }; exports.getLastIndexedBlock = getLastIndexedBlock; const getInitialData = async ({ url, address, block, }) => { const { lidoTransfers, totalRewards } = await (0, graphql_request_1.request)({ ...parseSubgraphUrl(url), document: queries_js_1.InitialStateQuery, variables: { address, block: Number(block) }, }); return { transfer: lidoTransfers.length > 0 ? lidoTransfers?.[0] ?? null : null, rebase: totalRewards.length > 0 ? totalRewards?.[0] ?? null : null, }; }; exports.getInitialData = getInitialData; const getTransfers = async ({ url, address, fromBlock, toBlock, step, }) => { return requestAllWithStep({ url, document: queries_js_1.LidoTransfersQuery, step, fromBlock, extractArray: (result) => result?.lidoTransfers ?? [], toBlock, variables: { address, }, }); }; exports.getTransfers = getTransfers; const getTotalRewards = async ({ url, fromBlock, step, toBlock, }) => { return requestAllWithStep({ url, document: queries_js_1.TotalRewardsQuery, step, extractArray: (result) => result?.totalRewards ?? [], fromBlock, toBlock, variables: {}, }); }; exports.getTotalRewards = getTotalRewards; //# sourceMappingURL=subgraph.js.map