import Foundation public struct QoderUsageSnapshot: Sendable { public let usedCredits: Double public let totalCredits: Double public let remainingCredits: Double public let usagePercentage: Double public let unit: String? public let resetsAt: Date? public let updatedAt: Date public init( usedCredits: Double, totalCredits: Double, remainingCredits: Double, usagePercentage: Double, unit: String?, resetsAt: Date? = nil, updatedAt: Date = Date()) { self.usedCredits = usedCredits self.totalCredits = totalCredits self.remainingCredits = remainingCredits self.usagePercentage = usagePercentage self.unit = unit self.resetsAt = resetsAt self.updatedAt = updatedAt } public func toUsageSnapshot() -> UsageSnapshot { let creditSummary = "\(Self.formatCredits(self.usedCredits)) / \(Self.formatCredits(self.totalCredits)) credits" let primary = RateWindow( usedPercent: min(100, max(0, self.usagePercentage)), windowMinutes: nil, resetsAt: self.resetsAt, resetDescription: creditSummary) let identity = ProviderIdentitySnapshot( providerID: .qoder, accountEmail: nil, accountOrganization: nil, loginMethod: nil) return UsageSnapshot( primary: primary, secondary: nil, tertiary: nil, providerCost: nil, updatedAt: self.updatedAt, identity: identity) } private static func formatCredits(_ value: Double) -> String { let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.locale = Locale(identifier: "en_US") formatter.maximumFractionDigits = value.rounded() == value ? 0 : 2 return formatter.string(from: NSNumber(value: value)) ?? "\(value)" }}
import Foundation
public struct QoderUsageSnapshot: Sendable {
public let usedCredits: Double
public let totalCredits: Double
public let remainingCredits: Double
public let usagePercentage: Double
public let unit: String?
public let resetsAt: Date?
public let updatedAt: Date
public init(
usedCredits: Double,
totalCredits: Double,
remainingCredits: Double,
usagePercentage: Double,
unit: String?,
resetsAt: Date? = nil,
updatedAt: Date = Date())
{
self.usedCredits = usedCredits
self.totalCredits = totalCredits
self.remainingCredits = remainingCredits
self.usagePercentage = usagePercentage
self.unit = unit
self.resetsAt = resetsAt
self.updatedAt = updatedAt
}
public func toUsageSnapshot() -> UsageSnapshot {
let creditSummary = "\(Self.formatCredits(self.usedCredits)) / \(Self.formatCredits(self.totalCredits)) credits"
let primary = RateWindow(
usedPercent: min(100, max(0, self.usagePercentage)),
windowMinutes: nil,
resetsAt: self.resetsAt,
resetDescription: creditSummary)
let identity = ProviderIdentitySnapshot(
providerID: .qoder,
accountEmail: nil,
accountOrganization: nil,
loginMethod: nil)
return UsageSnapshot(
primary: primary,
secondary: nil,
tertiary: nil,
providerCost: nil,
updatedAt: self.updatedAt,
identity: identity)
}
private static func formatCredits(_ value: Double) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.locale = Locale(identifier: "en_US")
formatter.maximumFractionDigits = value.rounded() == value ? 0 : 2
return formatter.string(from: NSNumber(value: value)) ?? "\(value)"
}
}