40 lines
968 B
TypeScript
40 lines
968 B
TypeScript
import type {
|
|
ApiBalanceBreakdownInput,
|
|
ApiBalanceInput,
|
|
} from "./apiBalanceToAllowed";
|
|
|
|
const sumValues = (values: number[]) =>
|
|
values.reduce((total, value) => total + value, 0);
|
|
|
|
export const apiBalanceBreakdownV1ToOverage = ({
|
|
apiBalanceBreakdown,
|
|
}: {
|
|
apiBalanceBreakdown: ApiBalanceBreakdownInput;
|
|
}) => {
|
|
// const overage = Math.max(
|
|
// 0,
|
|
// new Decimal(apiBalanceBreakdown.usage)
|
|
// .sub(apiBalanceBreakdown.included_grant)
|
|
// .sub(apiBalanceBreakdown.prepaid_grant)
|
|
// .toNumber(),
|
|
// );
|
|
|
|
return apiBalanceBreakdown.overage ?? 0;
|
|
};
|
|
|
|
export const apiBalanceV1ToOverage = ({
|
|
apiBalance,
|
|
}: {
|
|
apiBalance: ApiBalanceInput;
|
|
}) => {
|
|
const breakdownItems = apiBalance.breakdown ?? [];
|
|
|
|
// Sum per-breakdown overage to preserve historical overage
|
|
// when additional granted balance is added from other products
|
|
return sumValues(
|
|
breakdownItems.map((item) =>
|
|
apiBalanceBreakdownV1ToOverage({ apiBalanceBreakdown: item }),
|
|
),
|
|
);
|
|
};
|