@helium/http
Version:
HTTP library for interacting with the Helium blockchain API
57 lines • 2.52 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const Validator_1 = __importDefault(require("../models/Validator"));
const ResourceList_1 = __importDefault(require("../ResourceList"));
const Account_1 = __importDefault(require("../models/Account"));
const Stats_1 = __importDefault(require("./Stats"));
class Validators {
constructor(client, context) {
this.client = client;
this.context = context;
}
fromAddress(address) {
return new Validator_1.default(this.client, { address });
}
async search(term) {
const url = 'validators/name';
const response = await this.client.get(url, { search: term });
const { data: { data: validators }, } = response;
const data = validators.map((d) => new Validator_1.default(this.client, d));
return new ResourceList_1.default(data, this.list.bind(this));
}
async list(params = {}) {
const { validators, cursor } = await this.fetchList(params);
const data = validators.map((d) => new Validator_1.default(this.client, d));
return new ResourceList_1.default(data, this.list.bind(this), cursor);
}
async fetchList(params = {}) {
let url = '/validators';
if (this.context instanceof Account_1.default) {
const account = this.context;
url = `/accounts/${account.address}/validators`;
}
const response = await this.client.get(url, { cursor: params.cursor });
const { data: { data: validators, cursor }, } = response;
return { validators, cursor };
}
async get(address) {
const url = `/validators/${address}`;
const { data: { data: validator }, } = await this.client.get(url);
return new Validator_1.default(this.client, validator);
}
async elected(block) {
const url = block === undefined ? '/validators/elected' : `/validators/elected/${block}`;
const response = await this.client.get(url);
const { data: { data: validators }, } = response;
const data = validators.map((h) => new Validator_1.default(this.client, h));
return new ResourceList_1.default(data, this.list.bind(this));
}
get stats() {
return new Stats_1.default(this.client, 'validators');
}
}
exports.default = Validators;
//# sourceMappingURL=Validators.js.map