UNPKG

@exromany/lido-csm-sdk

Version:

[![GitHub license](https://img.shields.io/github/license/lidofinance/lido-csm-sdk?color=limegreen)](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [![Version npm](https://img.shields.io/npm/v/@lidofinance/lido-csm-sdk?label=version)](h

53 lines 1.87 kB
import { fetchJson } from '../common/utils/fetch-json.js'; import { API_REQUEST_TIMEOUT, DEFAULT_PAGE_LIMIT } from './constants.js'; export const fetchValidatorRegistrations = async (baseUrl, props) => { const { moduleId, nodeOperatorId, limit = DEFAULT_PAGE_LIMIT, start = 0, withIssuesOnly = false, } = props; const params = new URLSearchParams({ moduleId: moduleId.toString(), limit: limit.toString(), start: start.toString(), withIssuesOnly: withIssuesOnly.toString(), }); if (nodeOperatorId !== undefined) { params.set('nodeOperatorId', nodeOperatorId.toString()); } const url = `${baseUrl}/v1/relays/validators-registration?${params}`; const data = await fetchJson(url, { method: 'GET', signal: AbortSignal.timeout(API_REQUEST_TIMEOUT), }); return extractValidators(data); }; const extractValidators = (registrations) => { return Object.entries(registrations).map(([pubkey, reg]) => ({ pubkey: pubkey, status: reg.status, lastPolledAt: reg.lastPolledAt, })); }; export const fetchAllValidatorRegistrations = async (baseUrl, props) => { const { limit = DEFAULT_PAGE_LIMIT, ...rest } = props; const allResults = []; let start = 0; let hasMore = true; while (hasMore) { const page = await fetchValidatorRegistrations(baseUrl, { ...rest, limit, start, }); allResults.push(...page); if (page.length < limit) { hasMore = false; } else { start += limit; } } return allResults; }; export const isValidatorWithIssue = (validator) => { return (validator.status === 'NoRegistration' || validator.status === 'InvalidFeeRecipient'); }; //# sourceMappingURL=fetch-validator-registrations.js.map