UNPKG

@ethersphere/bee-js

Version:
110 lines 2.93 kB
import { Types } from 'cafe-utility'; import { http } from "../../utils/http.js"; import { BZZ } from "../../utils/tokens.js"; import { asNumberString } from "../../utils/type.js"; const balancesEndpoint = 'balances'; const consumedEndpoint = 'consumed'; /** * Get the balances with all known peers including prepaid services * * @param requestOptions Options for making requests */ export async function getAllBalances(requestOptions) { const response = await http(requestOptions, { url: balancesEndpoint, responseType: 'json' }); const body = Types.asObject(response.data, { name: 'response.data' }); const balances = Types.asArray(body.balances, { name: 'balances' }).map(x => Types.asObject(x, { name: 'balance' })); return { balances: balances.map(x => ({ peer: Types.asString(x.peer, { name: 'peer' }), balance: BZZ.fromPLUR(asNumberString(x.balance, { name: 'balance' })) })) }; } /** * Get the balances with a specific peer including prepaid services * * @param requestOptions Options for making requests * @param address Swarm address of peer */ export async function getPeerBalance(requestOptions, address) { const response = await http(requestOptions, { url: `${balancesEndpoint}/${address}`, responseType: 'json' }); const body = Types.asObject(response.data, { name: 'response.data' }); return { peer: Types.asString(body.peer, { name: 'peer' }), balance: BZZ.fromPLUR(asNumberString(body.balance, { name: 'balance' })) }; } /** * Get the past due consumption balances with all known peers * * @param requestOptions Options for making requests */ export async function getPastDueConsumptionBalances(requestOptions) { const response = await http(requestOptions, { url: consumedEndpoint, responseType: 'json' }); const body = Types.asObject(response.data, { name: 'response.data' }); const balances = Types.asArray(body.balances, { name: 'balances' }).map(x => Types.asObject(x, { name: 'balance' })); return { balances: balances.map(x => ({ peer: Types.asString(x.peer, { name: 'peer' }), balance: BZZ.fromPLUR(asNumberString(x.balance, { name: 'balance' })) })) }; } /** * Get the past due consumption balance with a specific peer * * @param requestOptions Options for making requests * @param address Swarm address of peer */ export async function getPastDueConsumptionPeerBalance(requestOptions, address) { const response = await http(requestOptions, { url: `${consumedEndpoint}/${address}`, responseType: 'json' }); const body = Types.asObject(response.data, { name: 'response.data' }); return { peer: Types.asString(body.peer, { name: 'peer' }), balance: BZZ.fromPLUR(asNumberString(body.balance, { name: 'balance' })) }; }