usage property
Get usage information if available
Implementation
@override
UsageInfo? get usage {
final rawUsageMetadata = _rawResponse['usageMetadata'];
if (rawUsageMetadata == null) return null;
// Safely convert Map<dynamic, dynamic> to Map<String, dynamic>
final Map<String, dynamic> usageMetadata;
if (rawUsageMetadata is Map<String, dynamic>) {
usageMetadata = rawUsageMetadata;
} else if (rawUsageMetadata is Map) {
usageMetadata = Map<String, dynamic>.from(rawUsageMetadata);
} else {
return null;
}
return UsageInfo(
promptTokens: usageMetadata['promptTokenCount'] as int?,
completionTokens: usageMetadata['candidatesTokenCount'] as int?,
totalTokens: usageMetadata['totalTokenCount'] as int?,
reasoningTokens: usageMetadata['thoughtsTokenCount'] as int?,
);
}