import Foundation struct LicenseFile: Codable { let appKey: String let appName: String? let companyName: String? let baseUrl: String? let issuedAt: String? let expiresAt: String? } public struct LicenseUserInfo: Sendable { public let userId: String? public let name: String? public let email: String? public let phone: String? public init(userId: String? = nil, name: String? = nil, email: String? = nil, phone: String? = nil) { self.userId = userId self.name = name self.email = email self.phone = phone } } public enum LicenseStatus: Sendable { case ok case denied case unknown } public enum LicenseResult: Sendable { case success(String) case error(String) } struct UserInfoPayload: Encodable { let userId: String? let name: String? let email: String? let phone: String? } struct RegisterRequest: Encodable { let appKey: String let deviceId: String let deviceName: String? let deviceModel: String let deviceVendor: String let osVersion: String let userInfo: UserInfoPayload? } struct VerifyRequest: Encodable { let appKey: String let deviceId: String let token: String let userInfo: UserInfoPayload? } struct RegisterResponse: Decodable { let success: Bool let token: String? let message: String? } struct VerifyResponse: Decodable { let valid: Bool let error: String? }