helium/ts/helium.classes.heliumwallet.ts
2022-02-11 17:49:12 +01:00

49 lines
1.8 KiB
TypeScript

import * as plugins from './helium.plugins';
import * as interfaces from './interfaces';
import { Helium } from './helium.classes.helium';
import { HeliumHotspot } from './helium.classes.hotspot';
export class HeliumWallet {
heliumRef: Helium;
lastUpdate: plugins.smarttime.ExtendedDate;
originalData: interfaces.IWalletResponse['data'];
public walletAddress: string;
public earningsHnt24h: number;
public earningsHnt7d: number;
public earningsHnt14d: number;
public earningsHnt30d: number;
public hotspots: HeliumHotspot[] = [];
constructor(heliumRefArg: Helium, walletAddressArg: string) {
this.heliumRef = heliumRefArg;
this.walletAddress = walletAddressArg;
}
public async update() {
const currentDate = new plugins.smarttime.ExtendedDate();
const walletResponse: interfaces.IWalletResponse = await this.heliumRef.request(`${this.heliumRef.baseApiUrl}/v1/accounts/${this.walletAddress}`)
this.originalData = walletResponse.data;
const getHntEarningsForHours = async (hoursArg: number) => {
const earningsResponse: interfaces.IWalletEarningsResponse = await this.heliumRef.request(`${this.heliumRef.baseApiUrl}/v1/accounts/${this.walletAddress}/rewards/sum?min_time=-${hoursArg}%20hour&max_time=${currentDate.toISOString()}&bucket=hour`);
const reducedData:number = earningsResponse.data.map(dataArg => dataArg.sum).reduce((previous = 0, currentArg) => {
return previous + currentArg;
})
return reducedData / 100000000;
}
this.hotspots = await HeliumHotspot.getAllHotspotsForWallet(this)
this.earningsHnt24h = await getHntEarningsForHours(24);
this.earningsHnt7d = await getHntEarningsForHours(24 * 7);
this.earningsHnt14d = await getHntEarningsForHours(24 * 14);
this.earningsHnt30d = await getHntEarningsForHours(24 * 30);
}
}