mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
28 lines
943 B
TypeScript
28 lines
943 B
TypeScript
import type { BilledTokenCounts } from "@qltysh/fabro-api-client";
|
|
|
|
export interface BillingTokenBucket {
|
|
label: string;
|
|
value: number;
|
|
}
|
|
|
|
export function billableOutputTokens(billing: BilledTokenCounts): number {
|
|
return billing.output_tokens + billing.reasoning_tokens;
|
|
}
|
|
|
|
/** The disjoint token buckets shown in every billing breakdown. */
|
|
export function billingTokenBuckets(billing: BilledTokenCounts): BillingTokenBucket[] {
|
|
return [
|
|
{ label: "Cache read", value: billing.cache_read_tokens },
|
|
{ label: "Cache creation", value: billing.cache_write_tokens },
|
|
{ label: "Uncached", value: billing.input_tokens },
|
|
{ label: "Output", value: billableOutputTokens(billing) },
|
|
];
|
|
}
|
|
|
|
export function hasBillingUsage(billing: BilledTokenCounts): boolean {
|
|
return (
|
|
billing.total_tokens !== 0 ||
|
|
(billing.total_usd_micros ?? 0) !== 0 ||
|
|
billingTokenBuckets(billing).some((bucket) => bucket.value !== 0)
|
|
);
|
|
}
|