# TokenTracker

**Kind:** Class

**Source:** [`atloria-monorepo/packages/doc-automation/src/v2/pipeline/token-tracker.ts`](https://github.com/sherkety/atloria/blob/main/atloria-monorepo/packages/doc-automation/src/v2/pipeline/token-tracker.ts#L54)

## Methods

| Method | Signature | Returns |
|---|---|---|
| `recordUsage` | `recordUsage(usage: Omit<TokenUsage, 'timestamp' | 'cost'>)` | `TokenUsage` |
| `calculateCost` | `calculateCost(inputTokens: number, outputTokens: number, model: 'claude' | 'openai')` | `number` |
| `hasCapacity` | `hasCapacity(estimatedTokens: number)` | `boolean` |
| `getRemainingBudget` | `getRemainingBudget()` | `number` |
| `getStageUsage` | `getStageUsage(stage: JobStage)` | `StageTokenSummary` |
| `getSummary` | `getSummary()` | `TokenSummary` |
| `getHistory` | `getHistory()` | `TokenUsage[]` |
| `estimateCost` | `estimateCost(estimatedInputTokens: number, estimatedOutputTokens: number, model: 'claude' | 'openai')` | `{
    estimatedCostUsd: number;
    withinBudget: boolean;
    budgetRemaining: number;
  }` |
| `reset` | `reset()` | `void` |

## Where it refuses work

- `TokenTracker` stops the work with `TokenLimitError` when `summary.totalTokens > this.config.budget.maxTotal`.
