49 lines
1.8 KiB
TypeScript
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);
|
||
|
}
|
||
|
}
|