48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
|
// Copyright (C) 2021 Storj Labs, Inc.
|
||
|
// See LICENSE for copying information.
|
||
|
|
||
|
import { PayoutsClient } from '@/api/payouts';
|
||
|
import { NodePayoutsSummary, PayoutsSummary } from '@/payouts/index';
|
||
|
|
||
|
/**
|
||
|
* exposes all payouts related logic
|
||
|
*/
|
||
|
export class Payouts {
|
||
|
private readonly payouts: PayoutsClient;
|
||
|
|
||
|
public constructor(payouts: PayoutsClient) {
|
||
|
this.payouts = payouts;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* fetches of payouts summary information.
|
||
|
*
|
||
|
* @param satelliteId - satellite id.
|
||
|
* @param period - selected period.
|
||
|
*
|
||
|
* @throws {@link BadRequestError}
|
||
|
* This exception is thrown if the input is not a valid.
|
||
|
*
|
||
|
* @throws {@link UnauthorizedError}
|
||
|
* Thrown if the auth cookie is missing or invalid.
|
||
|
*
|
||
|
* @throws {@link InternalError}
|
||
|
* Thrown if something goes wrong on server side.
|
||
|
*/
|
||
|
public async summary(satelliteId: string | null, period: string | null): Promise<PayoutsSummary> {
|
||
|
const result = await this.payouts.summary(satelliteId, period);
|
||
|
|
||
|
return new PayoutsSummary(
|
||
|
result.totalEarned,
|
||
|
result.totalHeld,
|
||
|
result.totalPaid,
|
||
|
result.nodeSummary.map(item => new NodePayoutsSummary(
|
||
|
item.nodeID,
|
||
|
item.nodeName,
|
||
|
item.held,
|
||
|
item.paid,
|
||
|
)),
|
||
|
);
|
||
|
}
|
||
|
}
|