@exromany/lido-csm-sdk
Version:
[](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [](h
53 lines • 1.87 kB
JavaScript
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