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