45 lines · 1.5 KB · Swift
RawDownload
import Foundation public struct OpenCodeUsageSnapshot: Sendable {    public let rollingUsagePercent: Double    public let weeklyUsagePercent: Double    public let rollingResetInSec: Int    public let weeklyResetInSec: Int    public let updatedAt: Date     public init(        rollingUsagePercent: Double,        weeklyUsagePercent: Double,        rollingResetInSec: Int,        weeklyResetInSec: Int,        updatedAt: Date)    {        self.rollingUsagePercent = rollingUsagePercent        self.weeklyUsagePercent = weeklyUsagePercent        self.rollingResetInSec = rollingResetInSec        self.weeklyResetInSec = weeklyResetInSec        self.updatedAt = updatedAt    }     public func toUsageSnapshot() -> UsageSnapshot {        let rollingReset = self.updatedAt.addingTimeInterval(TimeInterval(self.rollingResetInSec))        let weeklyReset = self.updatedAt.addingTimeInterval(TimeInterval(self.weeklyResetInSec))         let primary = RateWindow(            usedPercent: self.rollingUsagePercent,            windowMinutes: 5 * 60,            resetsAt: rollingReset,            resetDescription: nil)        let secondary = RateWindow(            usedPercent: self.weeklyUsagePercent,            windowMinutes: 7 * 24 * 60,            resetsAt: weeklyReset,            resetDescription: nil)         return UsageSnapshot(            primary: primary,            secondary: secondary,            updatedAt: self.updatedAt,            identity: nil)    }}