import Foundation enum AuthCredentials: Sendable { case cursorSession(cookieValue: String) case cursorAdminAPI(apiKey: String) case claudeCLI case claudeOAuth(accessToken: String) case claudeAdminAPI(apiKey: String) } protocol UsageProvider: Sendable { var id: ProviderID { get } var displayName: String { get } func fetchUsage(credentials: AuthCredentials, cache: UsageCache) async throws -> ProviderUsageSnapshot func resolveCredentials(authMode: AuthMode) throws -> AuthCredentials }