// // OAuthModels.swift // FantasyWatch // // Created by Claude Code // import Foundation struct TokenPair: Codable, Equatable, Sendable { let accessToken: String let refreshToken: String let expiresIn: Int let tokenType: String var expiryDate: Date { Date().addingTimeInterval(TimeInterval(expiresIn)) } } struct OAuthTokenResponse: Codable { let access_token: String let refresh_token: String let expires_in: Int let token_type: String func toTokenPair() -> TokenPair { TokenPair( accessToken: access_token, refreshToken: refresh_token, expiresIn: expires_in, tokenType: token_type ) } } enum OAuthError: Error, Equatable { case noRefreshToken case tokenExpired case authorizationFailed case networkError(String) case invalidResponse }