@lidofinance/lido-ethereum-sdk
Version:
<div style="display: flex;" align="center"> <h1 align="center">Lido Ethereum SDK</h1> </div>
75 lines • 2.37 kB
JavaScript
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