class TokenUsage { final int inputTokens; final int outputTokens; final int cacheCreationInputTokens; final int cacheReadInputTokens; const TokenUsage({ this.inputTokens = 0, this.outputTokens = 0, this.cacheCreationInputTokens = 0, this.cacheReadInputTokens = 0, }); int get totalTokens => inputTokens + outputTokens + cacheCreationInputTokens + cacheReadInputTokens; TokenUsage operator +(TokenUsage other) => TokenUsage( inputTokens: inputTokens + other.inputTokens, outputTokens: outputTokens + other.outputTokens, cacheCreationInputTokens: cacheCreationInputTokens + other.cacheCreationInputTokens, cacheReadInputTokens: cacheReadInputTokens + other.cacheReadInputTokens, ); factory TokenUsage.fromJson(Map json) { return TokenUsage( inputTokens: json['input_tokens'] as int? ?? 0, outputTokens: json['output_tokens'] as int? ?? 0, cacheCreationInputTokens: json['cache_creation_input_tokens'] as int? ?? 0, cacheReadInputTokens: json['cache_read_input_tokens'] as int? ?? 0, ); } }