import { TuiPlugin } from '@opencode-ai/plugin/tui'; /** Any part-like object. `object` (not `{ metadata?: unknown }`) so metadata-less SDK Part variants stay assignable. */ type CreditPart = object; /** Minimal message shape; SDK `Message` is assignable. */ interface CreditMessage { readonly id: string; readonly role: string; } /** One part's credit metadata: the turn total plus the SDK-reported unit. */ interface PartCredits { credits: number; unit?: string; } /** Session-wide rollup. `unit` stays undefined until metadata reports one. */ interface SessionCredits { total: number; unit?: string; /** * True once any assistant message carried kiro credit metadata. Lets the view pick credits over the * "$X spent" fallback, since a 0-credit kiro turn is indistinguishable from no metadata by `total` alone. */ present: boolean; } /** Read `{ kiro: { credits, creditsUnit } }` from a part; only finite numeric credits count. */ declare function readPartCredits(part: CreditPart): PartCredits | undefined; /** One message's credits, deduped by the last-carrier-wins rule (parts never summed); unit from the most recent carrier. */ declare function messageCredits(parts: ReadonlyArray): PartCredits | undefined; /** Per-message credit total, or undefined when no part carries credits. */ declare function creditsForMessage(parts: ReadonlyArray): number | undefined; /** Sum per-message totals across a session's assistant messages (one value each); unit from the most recent carrier. */ declare function sumSessionCredits(messages: ReadonlyArray, partsByMessage: (messageID: string) => ReadonlyArray): SessionCredits; /** Render credits with the unit, e.g. "12.5 credits", "1 credit". Unit is naively pluralized unless it ends in "s"; with no unit, only the number renders. */ declare function formatCredits(value: number, unit?: string): string; /** * Muted cost lines as an array (one per rendered row). Three states: * - both (credits present + non-zero cost): ["$X.XX spent", "N credits"] * - credits only (cost 0): ["N credits"] * - dollars only (no credits): ["$X.XX spent"] (also ["$0.00 spent"] when empty) * Keys off `credits.present` and `cost > 0`, never `credits.total` alone (a 0-credit kiro turn is present). */ declare function spendLines(input: { cost: number; credits: SessionCredits; }): string[]; declare const _default: { id: string; tui: TuiPlugin; }; export { type CreditMessage, type CreditPart, type PartCredits, type SessionCredits, creditsForMessage, _default as default, formatCredits, messageCredits, readPartCredits, spendLines, sumSessionCredits };