@substrate/api-sidecar
Version:
REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.
108 lines • 4.44 kB
JavaScript
;
// Copyright 2017-2025 Parity Technologies (UK) Ltd.
// This file is part of Substrate API Sidecar.
//
// Substrate API Sidecar is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
Object.defineProperty(exports, "__esModule", { value: true });
exports.PalletsNominationPoolService = void 0;
const AbstractService_1 = require("../AbstractService");
class PalletsNominationPoolService extends AbstractService_1.AbstractService {
constructor(api) {
super(api);
}
/**
* Fetch nomination pool information at a given block and pool Id.
*
* @param poolId `Id` of the pool being queried
* @param hash `BlockHash` to make call at
* @param getMetaData boolean determining whether to query pool metadata
*/
async fetchNominationPoolById(poolId, hash, getMetaData) {
const { api } = this;
const historicApi = await api.at(hash);
let metadata = '';
const [{ number }, bondedPool, rewardPool] = await Promise.all([
api.rpc.chain.getHeader(hash),
historicApi.query.nominationPools.bondedPools(poolId),
historicApi.query.nominationPools.rewardPools(poolId),
]);
const at = {
hash,
height: number.unwrap().toString(10),
};
// get metadata if user requested
if (getMetaData) {
const data = await api.query.nominationPools.metadata(poolId);
metadata = data.toString();
}
const response = getMetaData
? {
at,
bondedPool,
rewardPool,
metadata,
}
: {
at,
bondedPool,
rewardPool,
};
return response;
}
/**
* Fetch generalized nomination pool information at a given block.
*
* @param hash `BlockHash` to make call at
*/
async fetchNominationPoolInfo(hash) {
const { api } = this;
const historicApi = await api.at(hash);
const [{ number }, counterForBondedPools, counterForMetadata, counterForPoolMembers, counterForReversePoolIdLookup, counterForRewardPools, counterForSubPoolsStorage, lastPoolId, maxPoolMembers, maxPoolMembersPerPool, maxPools, minCreateBond, minJoinBond,] = await Promise.all([
api.rpc.chain.getHeader(hash),
historicApi.query.nominationPools.counterForBondedPools(),
historicApi.query.nominationPools.counterForMetadata(),
historicApi.query.nominationPools.counterForPoolMembers(),
historicApi.query.nominationPools.counterForReversePoolIdLookup(),
historicApi.query.nominationPools.counterForRewardPools(),
historicApi.query.nominationPools.counterForSubPoolsStorage(),
historicApi.query.nominationPools.lastPoolId(),
historicApi.query.nominationPools.maxPoolMembers(),
historicApi.query.nominationPools.maxPoolMembersPerPool(),
historicApi.query.nominationPools.maxPools(),
historicApi.query.nominationPools.minCreateBond(),
historicApi.query.nominationPools.minJoinBond(),
]);
const at = {
hash,
height: number.unwrap().toString(10),
};
return {
at,
counterForBondedPools,
counterForMetadata,
counterForPoolMembers,
counterForReversePoolIdLookup,
counterForRewardPools,
counterForSubPoolsStorage,
lastPoolId,
maxPoolMembers,
maxPoolMembersPerPool,
maxPools,
minCreateBond,
minJoinBond,
};
}
}
exports.PalletsNominationPoolService = PalletsNominationPoolService;
//# sourceMappingURL=PalletsNominationPoolsService.js.map