SYMBOL INDEX (472 symbols across 82 files) FILE: apps/amp/src/_consts.ts constant AMP_DATA_DIR_ENV (line 7) | const AMP_DATA_DIR_ENV = 'AMP_DATA_DIR'; constant DEFAULT_AMP_PATH (line 12) | const DEFAULT_AMP_PATH = '.local/share/amp'; constant USER_HOME_DIR (line 17) | const USER_HOME_DIR = homedir(); constant DEFAULT_AMP_DIR (line 22) | const DEFAULT_AMP_DIR = path.join(USER_HOME_DIR, DEFAULT_AMP_PATH); constant AMP_THREADS_DIR_NAME (line 27) | const AMP_THREADS_DIR_NAME = 'threads'; constant AMP_THREAD_GLOB (line 32) | const AMP_THREAD_GLOB = '**/*.json'; constant MILLION (line 37) | const MILLION = 1_000_000; FILE: apps/amp/src/_macro.ts constant AMP_MODEL_PREFIXES (line 8) | const AMP_MODEL_PREFIXES = ['claude-', 'anthropic/']; function isAmpModel (line 10) | function isAmpModel(modelName: string, _pricing: LiteLLMModelPricing): b... function prefetchAmpPricing (line 14) | async function prefetchAmpPricing(): Promise; type ParsedUsageLedgerEvent (line 83) | type ParsedUsageLedgerEvent = v.InferOutput; type ParsedMessage (line 84) | type ParsedMessage = v.InferOutput; function getAmpPath (line 90) | function getAmpPath(): string | null { function findCacheTokensForEvent (line 111) | function findCacheTokensForEvent( function convertLedgerEventToUsageEvent (line 136) | function convertLedgerEventToUsageEvent( function loadThreadFile (line 167) | async function loadThreadFile(filePath: string): Promise { method calculateCost (line 71) | async calculateCost( method [Symbol.dispose] (line 41) | [Symbol.dispose](): void { FILE: apps/amp/src/run.ts function run (line 14) | async function run(): Promise { FILE: apps/ccusage/scripts/generate-json-schema.ts constant SCHEMA_FILENAME (line 26) | const SCHEMA_FILENAME = 'config-schema.json'; constant EXCLUDE_KEYS (line 32) | const EXCLUDE_KEYS = ['config']; constant COMMAND_EXCLUDE_KEYS (line 38) | const COMMAND_EXCLUDE_KEYS: Record = { function tokensSchemaToJsonSchema (line 45) | function tokensSchemaToJsonSchema(schema: Record): Record> = { function extractExplicitArgs (line 29) | function extractExplicitArgs(tokens: unknown[]): Record { type ConfigData (line 45) | type ConfigData = { function getConfigSearchPaths (line 57) | function getConfigSearchPaths(): string[] { function validateConfigJson (line 65) | function validateConfigJson(data: unknown): data is ConfigData { function loadConfigFile (line 102) | function loadConfigFile(filePath: string, debug = false): ConfigData | u... function loadConfig (line 149) | function loadConfig(configPath?: string, debug = false): ConfigData | un... function mergeConfigWithArgs (line 222) | function mergeConfigWithArgs>( function validateConfigFile (line 317) | function validateConfigFile( FILE: apps/ccusage/src/_consts.ts constant DEFAULT_RECENT_DAYS (line 9) | const DEFAULT_RECENT_DAYS = 3; constant BLOCKS_WARNING_THRESHOLD (line 15) | const BLOCKS_WARNING_THRESHOLD = 0.8; constant BLOCKS_COMPACT_WIDTH_THRESHOLD (line 21) | const BLOCKS_COMPACT_WIDTH_THRESHOLD = 120; constant BLOCKS_DEFAULT_TERMINAL_WIDTH (line 27) | const BLOCKS_DEFAULT_TERMINAL_WIDTH = 120; constant DEBUG_MATCH_THRESHOLD_PERCENT (line 33) | const DEBUG_MATCH_THRESHOLD_PERCENT = 0.1; constant USER_HOME_DIR (line 39) | const USER_HOME_DIR = homedir(); constant XDG_CONFIG_DIR (line 45) | const XDG_CONFIG_DIR = xdgConfig ?? path.join(USER_HOME_DIR, '.config'); constant DEFAULT_CLAUDE_CODE_PATH (line 51) | const DEFAULT_CLAUDE_CODE_PATH = '.claude'; constant DEFAULT_CLAUDE_CONFIG_PATH (line 57) | const DEFAULT_CLAUDE_CONFIG_PATH = path.join(XDG_CONFIG_DIR, 'claude'); constant CLAUDE_CONFIG_DIR_ENV (line 63) | const CLAUDE_CONFIG_DIR_ENV = 'CLAUDE_CONFIG_DIR'; constant CLAUDE_PROJECTS_DIR_NAME (line 69) | const CLAUDE_PROJECTS_DIR_NAME = 'projects'; constant USAGE_DATA_GLOB_PATTERN (line 75) | const USAGE_DATA_GLOB_PATTERN = '**/*.jsonl'; constant MCP_DEFAULT_PORT (line 81) | const MCP_DEFAULT_PORT = 8080; constant DEFAULT_REFRESH_INTERVAL_SECONDS (line 86) | const DEFAULT_REFRESH_INTERVAL_SECONDS = 1; constant DEFAULT_CONTEXT_USAGE_THRESHOLDS (line 91) | const DEFAULT_CONTEXT_USAGE_THRESHOLDS = { constant WEEK_DAYS (line 100) | const WEEK_DAYS = [ type WeekDay (line 113) | type WeekDay = (typeof WEEK_DAYS)[number]; type DayOfWeek (line 118) | type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6; constant CONFIG_FILE_NAME (line 124) | const CONFIG_FILE_NAME = 'ccusage.json'; constant DEFAULT_LOCALE (line 130) | const DEFAULT_LOCALE = 'en-CA'; FILE: apps/ccusage/src/_daily-grouping.ts type DailyData (line 9) | type DailyData = Awaited>; function groupByProject (line 14) | function groupByProject(dailyData: DailyData): Record( function filterByDateRange (line 81) | function filterByDateRange( function getDateWeek (line 109) | function getDateWeek(date: Date, startDay: DayOfWeek): WeeklyDate { function getDayNumber (line 123) | function getDayNumber(day: WeekDay): DayOfWeek { FILE: apps/ccusage/src/_jq-processor.ts function processWithJq (line 10) | async function processWithJq( FILE: apps/ccusage/src/_json-output-types.ts type DailyProjectOutput (line 18) | type DailyProjectOutput = { FILE: apps/ccusage/src/_macro.ts function isClaudeModel (line 8) | function isClaudeModel(modelName: string, _pricing: LiteLLMModelPricing)... function prefetchClaudePricing (line 16) | async function prefetchClaudePricing(): Promise; type SessionId (line 92) | type SessionId = v.InferOutput; type RequestId (line 93) | type RequestId = v.InferOutput; type MessageId (line 94) | type MessageId = v.InferOutput; type ISOTimestamp (line 95) | type ISOTimestamp = v.InferOutput; type DailyDate (line 96) | type DailyDate = v.InferOutput; type ActivityDate (line 97) | type ActivityDate = v.InferOutput; type MonthlyDate (line 98) | type MonthlyDate = v.InferOutput; type WeeklyDate (line 99) | type WeeklyDate = v.InferOutput; type Bucket (line 100) | type Bucket = MonthlyDate | WeeklyDate; type FilterDate (line 101) | type FilterDate = v.InferOutput; type ProjectPath (line 102) | type ProjectPath = v.InferOutput; type Version (line 103) | type Version = v.InferOutput; function createISOTimestamp (line 113) | function createISOTimestamp(value: string): ISOTimestamp { function createActivityDate (line 117) | function createActivityDate(value: string): ActivityDate { function createBucket (line 126) | function createBucket(value: string): Bucket { type CostMode (line 145) | type CostMode = TupleToUnion; type SortOrder (line 155) | type SortOrder = TupleToUnion; type StatuslineHookJson (line 194) | type StatuslineHookJson = v.InferOutput; FILE: apps/ccusage/src/_utils.ts function unreachable (line 5) | function unreachable(value: never): never { function getFileModifiedTime (line 14) | async function getFileModifiedTime(filePath: string): Promise { FILE: apps/ccusage/src/calculate-cost.ts type TokenData (line 27) | type TokenData = AggregatedTokenCounts; type TokenTotals (line 32) | type TokenTotals = TokenData & { type TotalsObject (line 39) | type TotalsObject = TokenTotals & { function calculateTotals (line 48) | function calculateTotals( function createTotalsObject (line 77) | function createTotalsObject(totals: TokenTotals): TotalsObject { FILE: apps/ccusage/src/commands/_session_id.ts type SessionIdContext (line 11) | type SessionIdContext = { function handleSessionIdLookup (line 25) | async function handleSessionIdLookup( function calculateSessionTotalTokens (line 103) | function calculateSessionTotalTokens(entries: UsageData[]): number { FILE: apps/ccusage/src/commands/blocks.ts function formatBlockTime (line 38) | function formatBlockTime(block: SessionBlock, compact = false, locale?: ... function formatModels (line 97) | function formatModels(models: string[]): string { function parseTokenLimit (line 111) | function parseTokenLimit(value: string | undefined, maxFromAll: number):... method run (line 150) | async run(ctx) { FILE: apps/ccusage/src/commands/daily.ts method run (line 48) | async run(ctx) { FILE: apps/ccusage/src/commands/index.ts type CommandName (line 36) | type CommandName = (typeof subCommandUnion)[number][0]; function run (line 51) | async function run(): Promise { FILE: apps/ccusage/src/commands/monthly.ts method run (line 26) | async run(ctx) { FILE: apps/ccusage/src/commands/session.ts method run (line 39) | async run(ctx): Promise { FILE: apps/ccusage/src/commands/statusline.ts function formatRemainingTime (line 33) | function formatRemainingTime(remaining: number): string { function getSemaphore (line 47) | function getSemaphore( type SemaphoreType (line 64) | type SemaphoreType = { function parseContextThreshold (line 101) | function parseContextThreshold(value: string): number { method run (line 160) | async run(ctx) { FILE: apps/ccusage/src/commands/weekly.ts method run (line 36) | async run(ctx) { FILE: apps/ccusage/src/data-loader.ts function getClaudePaths (line 78) | function getClaudePaths(): string[] { function extractProjectFromPath (line 150) | function extractProjectFromPath(jsonlPath: string): string { type UsageData (line 220) | type UsageData = v.InferOutput; type ModelBreakdown (line 237) | type ModelBreakdown = v.InferOutput; type DailyUsage (line 257) | type DailyUsage = v.InferOutput; type SessionUsage (line 279) | type SessionUsage = v.InferOutput; type MonthlyUsage (line 299) | type MonthlyUsage = v.InferOutput; type WeeklyUsage (line 319) | type WeeklyUsage = v.InferOutput; type BucketUsage (line 339) | type BucketUsage = v.InferOutput; type TokenStats (line 344) | type TokenStats = { function getDisplayModelName (line 352) | function getDisplayModelName(data: UsageData): string | undefined { function aggregateByModel (line 363) | function aggregateByModel( function aggregateModelBreakdowns (line 405) | function aggregateModelBreakdowns(breakdowns: ModelBreakdown[]): Map)... function calculateTotals (line 450) | function calculateTotals( function filterByProject (line 483) | function filterByProject( function isDuplicateEntry (line 501) | function isDuplicateEntry(uniqueHash: string | null, processedHashes: Se... function markAsProcessed (line 511) | function markAsProcessed(uniqueHash: string | null, processedHashes: Set... function extractUniqueModels (line 520) | function extractUniqueModels( function createUniqueHash (line 530) | function createUniqueHash(data: UsageData): string | null { function processJSONLFileByLine (line 547) | async function processJSONLFileByLine( function getEarliestTimestamp (line 572) | async function getEarliestTimestamp(filePath: string): Promise { function calculateCostForEntry (line 638) | async function calculateCostForEntry( function getUsageLimitResetTime (line 685) | function getUsageLimitResetTime(data: UsageData): Date | null { type GlobResult (line 706) | type GlobResult = { function globUsageFiles (line 716) | async function globUsageFiles(claudePaths: string[]): Promise { FILE: apps/codex/src/data-loader.ts type RawUsage (line 17) | type RawUsage = { function ensureNumber (line 25) | function ensureNumber(value: unknown): number { function normalizeRawUsage (line 42) | function normalizeRawUsage(value: unknown): RawUsage | null { function subtractRawUsage (line 66) | function subtractRawUsage(current: RawUsage, previous: RawUsage | null):... function convertToDelta (line 90) | function convertToDelta(raw: RawUsage): TokenUsageDelta { constant LEGACY_FALLBACK_MODEL (line 105) | const LEGACY_FALLBACK_MODEL = 'gpt-5'; function extractModel (line 118) | function extractModel(value: unknown): string | undefined { function asNonEmptyString (line 169) | function asNonEmptyString(value: unknown): string | undefined { type LoadOptions (line 178) | type LoadOptions = { type LoadResult (line 182) | type LoadResult = { function loadTokenUsageEvents (line 187) | async function loadTokenUsageEvents(options: LoadOptions = {}): Promise<... FILE: apps/codex/src/date-utils.ts function safeTimeZone (line 1) | function safeTimeZone(timezone?: string): string { function toDateKey (line 15) | function toDateKey(timestamp: string, timezone?: string): string { function normalizeFilterDate (line 27) | function normalizeFilterDate(value?: string): string | undefined { function isWithinRange (line 40) | function isWithinRange(dateKey: string, since?: string, until?: string):... function formatDisplayDate (line 56) | function formatDisplayDate(dateKey: string, locale?: string, _timezone?:... function toMonthKey (line 73) | function toMonthKey(timestamp: string, timezone?: string): string { function formatDisplayMonth (line 85) | function formatDisplayMonth(monthKey: string, locale?: string, _timezone... function formatDisplayDateTime (line 100) | function formatDisplayDateTime( FILE: apps/codex/src/monthly-report.ts type MonthlyReportOptions (line 12) | type MonthlyReportOptions = { function createSummary (line 20) | function createSummary(month: string, initialTimestamp: string): Monthly... function buildMonthlyReport (line 34) | async function buildMonthlyReport( method getPricing (line 139) | async getPricing(model: string): Promise { FILE: apps/codex/src/pricing.ts constant CODEX_PROVIDER_PREFIXES (line 9) | const CODEX_PROVIDER_PREFIXES = ['openai/', 'azure/', 'openrouter/openai... constant CODEX_MODEL_ALIASES_MAP (line 10) | const CODEX_MODEL_ALIASES_MAP = new Map([ constant FREE_MODEL_PRICING (line 14) | const FREE_MODEL_PRICING = { function isOpenRouterFreeModel (line 20) | function isOpenRouterFreeModel(model: string): boolean { function hasNonZeroTokenPricing (line 29) | function hasNonZeroTokenPricing(pricing: LiteLLMModelPricing): boolean { function toPerMillion (line 37) | function toPerMillion(value: number | undefined, fallback?: number): num... type CodexPricingSourceOptions (line 42) | type CodexPricingSourceOptions = { constant PREFETCHED_CODEX_PRICING (line 47) | const PREFETCHED_CODEX_PRICING = prefetchCodexPricing(); class CodexPricingSource (line 49) | class CodexPricingSource implements PricingSource, Disposable { method constructor (line 52) | constructor(options: CodexPricingSourceOptions = {}) { method getPricing (line 65) | async getPricing(model: string): Promise { method [Symbol.dispose] (line 61) | [Symbol.dispose](): void { FILE: apps/codex/src/run.ts function run (line 16) | async function run(): Promise { FILE: apps/codex/src/session-report.ts type SessionReportOptions (line 12) | type SessionReportOptions = { function createSummary (line 20) | function createSummary(sessionId: string, initialTimestamp: string): Ses... function buildSessionReport (line 35) | async function buildSessionReport( method getPricing (line 167) | async getPricing(model: string): Promise { FILE: apps/codex/src/token-utils.ts function createEmptyUsage (line 5) | function createEmptyUsage(): TokenUsageDelta { function addUsage (line 15) | function addUsage(target: TokenUsageDelta, delta: TokenUsageDelta): void { function nonCachedInputTokens (line 23) | function nonCachedInputTokens(usage: TokenUsageDelta): number { function calculateCostUSD (line 42) | function calculateCostUSD(usage: TokenUsageDelta, pricing: ModelPricing)... FILE: apps/mcp/src/ccusage.ts function getCcusageInvocation (line 22) | function getCcusageInvocation(): CliInvocation { function runCcusageCliJson (line 32) | async function runCcusageCliJson( function getCcusageDaily (line 67) | async function getCcusageDaily( function getCcusageMonthly (line 85) | async function getCcusageMonthly( function getCcusageSession (line 103) | async function getCcusageSession( function getCcusageBlocks (line 121) | async function getCcusageBlocks( FILE: apps/mcp/src/cli-utils.ts type BinField (line 8) | type BinField = string | Record | undefined; type CliInvocation (line 10) | type CliInvocation = { function resolveBinaryPath (line 18) | function resolveBinaryPath(packageName: string, binName?: string): string { function createCliInvocation (line 56) | function createCliInvocation(entryPath: string): CliInvocation { function executeCliCommand (line 74) | async function executeCliCommand( FILE: apps/mcp/src/codex.ts function getCodexInvocation (line 68) | function getCodexInvocation(): CliInvocation { function runCodexCliJson (line 78) | async function runCodexCliJson( function getCodexDaily (line 112) | async function getCodexDaily(parameters: z.infer { FILE: apps/mcp/src/consts.ts constant DEFAULT_LOCALE (line 1) | const DEFAULT_LOCALE = 'en-CA'; constant DATE_FILTER_REGEX (line 2) | const DATE_FILTER_REGEX = /^\d{8}$/; FILE: apps/mcp/src/mcp-utils.ts function defaultOptions (line 4) | function defaultOptions(): LoadOptions { FILE: apps/mcp/src/mcp.ts function createMcpServer (line 46) | function createMcpServer(options?: LoadOptions): McpServer { function startMcpServerStdio (line 192) | async function startMcpServerStdio(server: McpServer): Promise { function createMcpHttpApp (line 206) | function createMcpHttpApp(options?: LoadOptions): Hono { FILE: apps/opencode/src/commands/daily.ts constant TABLE_COLUMN_COUNT (line 17) | const TABLE_COLUMN_COUNT = 8; method run (line 33) | async run(ctx) { FILE: apps/opencode/src/commands/monthly.ts constant TABLE_COLUMN_COUNT (line 17) | const TABLE_COLUMN_COUNT = 8; method run (line 33) | async run(ctx) { FILE: apps/opencode/src/commands/session.ts constant TABLE_COLUMN_COUNT (line 17) | const TABLE_COLUMN_COUNT = 8; method run (line 33) | async run(ctx) { FILE: apps/opencode/src/commands/weekly.ts constant TABLE_COLUMN_COUNT (line 17) | const TABLE_COLUMN_COUNT = 8; function getISOWeek (line 25) | function getISOWeek(date: Date): string { method run (line 58) | async run(ctx) { FILE: apps/opencode/src/cost-utils.ts constant MODEL_ALIASES (line 9) | const MODEL_ALIASES: Record = { function resolveModelName (line 14) | function resolveModelName(modelName: string): string { function calculateCostForEntry (line 22) | async function calculateCostForEntry( FILE: apps/opencode/src/data-loader.ts constant DEFAULT_OPENCODE_PATH (line 22) | const DEFAULT_OPENCODE_PATH = '.local/share/opencode'; constant OPENCODE_STORAGE_DIR_NAME (line 27) | const OPENCODE_STORAGE_DIR_NAME = 'storage'; constant OPENCODE_MESSAGES_DIR_NAME (line 32) | const OPENCODE_MESSAGES_DIR_NAME = 'message'; constant OPENCODE_SESSIONS_DIR_NAME (line 33) | const OPENCODE_SESSIONS_DIR_NAME = 'session'; constant OPENCODE_CONFIG_DIR_ENV (line 38) | const OPENCODE_CONFIG_DIR_ENV = 'OPENCODE_DATA_DIR'; constant USER_HOME_DIR (line 43) | const USER_HOME_DIR = homedir(); type LoadedUsageEntry (line 105) | type LoadedUsageEntry = { type LoadedSessionMetadata (line 118) | type LoadedSessionMetadata = { function getOpenCodePath (line 130) | function getOpenCodePath(): string | null { function loadOpenCodeMessage (line 154) | async function loadOpenCodeMessage( function convertOpenCodeMessageToUsageEntry (line 171) | function convertOpenCodeMessageToUsageEntry( function loadOpenCodeSession (line 190) | async function loadOpenCodeSession( function convertOpenCodeSessionToMetadata (line 202) | function convertOpenCodeSessionToMetadata( function loadOpenCodeSessions (line 214) | async function loadOpenCodeSessions(): Promise { FILE: apps/opencode/src/run.ts function run (line 15) | async function run(): Promise { FILE: apps/pi/src/_consts.ts constant USER_HOME_DIR (line 4) | const USER_HOME_DIR = homedir(); constant PI_AGENT_DIR_ENV (line 6) | const PI_AGENT_DIR_ENV = 'PI_AGENT_DIR'; constant PI_AGENT_SESSIONS_DIR_NAME (line 7) | const PI_AGENT_SESSIONS_DIR_NAME = 'sessions'; constant DEFAULT_PI_AGENT_PATH (line 8) | const DEFAULT_PI_AGENT_PATH = path.join('.pi', 'agent'); FILE: apps/pi/src/_pi-agent.ts type PiAgentMessage (line 36) | type PiAgentMessage = v.InferOutput; function isPiAgentUsageEntry (line 38) | function isPiAgentUsageEntry(data: PiAgentMessage): boolean { function extractPiAgentSessionId (line 49) | function extractPiAgentSessionId(filePath: string): string { function extractPiAgentProject (line 55) | function extractPiAgentProject(filePath: string): string { function getPiAgentPaths (line 65) | function getPiAgentPaths(customPath?: string): string[] { function transformPiAgentUsage (line 89) | function transformPiAgentUsage(data: PiAgentMessage): { FILE: apps/pi/src/_types.ts type ISOTimestamp (line 10) | type ISOTimestamp = v.InferOutput; FILE: apps/pi/src/commands/daily.ts method run (line 52) | async run(ctx) { FILE: apps/pi/src/commands/monthly.ts method run (line 52) | async run(ctx) { FILE: apps/pi/src/commands/session.ts method run (line 53) | async run(ctx) { FILE: apps/pi/src/data-loader.ts type Source (line 13) | type Source = 'claude-code' | 'pi-agent'; type LoadOptions (line 15) | type LoadOptions = { type DailyUsageWithSource (line 23) | type DailyUsageWithSource = { type SessionUsageWithSource (line 42) | type SessionUsageWithSource = { type MonthlyUsageWithSource (line 63) | type MonthlyUsageWithSource = { function processJSONLFileByLine (line 82) | async function processJSONLFileByLine( function globPiAgentFiles (line 100) | async function globPiAgentFiles(paths: string[]): Promise { function formatDate (line 112) | function formatDate(timestamp: string, timezone?: string): string { function formatMonth (line 118) | function formatMonth(timestamp: string, timezone?: string): string { function normalizeDate (line 125) | function normalizeDate(value: string): string { function isInDateRange (line 129) | function isInDateRange(date: string, since?: string, until?: string): bo... type EntryData (line 140) | type EntryData = { function loadPiAgentData (line 152) | async function loadPiAgentData(options?: LoadOptions): Promise { FILE: docs/.vitepress/config.ts method config (line 180) | config(md) { FILE: docs/typedoc.config.ts type TypedocConfig (line 5) | type TypedocConfig = TypeDocOptions & PluginOptions & { docsRoot?: strin... FILE: docs/update-api-index.ts function updateApiIndex (line 22) | async function updateApiIndex() { function updateConstsPage (line 51) | async function updateConstsPage() { FILE: packages/internal/src/constants.ts constant DEFAULT_LOCALE (line 5) | const DEFAULT_LOCALE = 'en-CA'; constant MILLION (line 11) | const MILLION = 1_000_000; FILE: packages/internal/src/format.ts function formatTokens (line 6) | function formatTokens(value: number): string { function formatCurrency (line 16) | function formatCurrency(value: number, locale?: string): string { FILE: packages/internal/src/logger.ts function createLogger (line 5) | function createLogger(name: string): ConsolaInstance { FILE: packages/internal/src/pricing-fetch-utils.ts type PricingDataset (line 5) | type PricingDataset = Record; function createPricingDataset (line 7) | function createPricingDataset(): PricingDataset { function fetchLiteLLMPricingDataset (line 11) | async function fetchLiteLLMPricingDataset(): Promise { function filterPricingDataset (line 36) | function filterPricingDataset( FILE: packages/internal/src/pricing.ts constant LITELLM_PRICING_URL (line 4) | const LITELLM_PRICING_URL = constant DEFAULT_TIERED_THRESHOLD (line 14) | const DEFAULT_TIERED_THRESHOLD = 200_000; type LiteLLMModelPricing (line 55) | type LiteLLMModelPricing = v.InferOutput; type PricingLogger (line 57) | type PricingLogger = { type LiteLLMPricingFetcherOptions (line 64) | type LiteLLMPricingFetcherOptions = { constant DEFAULT_PROVIDER_PREFIXES (line 72) | const DEFAULT_PROVIDER_PREFIXES = [ function createLogger (line 82) | function createLogger(logger?: PricingLogger): PricingLogger { class LiteLLMPricingFetcher (line 95) | class LiteLLMPricingFetcher implements Disposable { method constructor (line 103) | constructor(options: LiteLLMPricingFetcherOptions = {}) { method clearCache (line 115) | clearCache(): void { method handleFallbackToCachedPricing (line 132) | private async handleFallbackToCachedPricing( method ensurePricingLoaded (line 151) | private async ensurePricingLoaded(): Result.ResultAsync