// Generated by Create API
// https://github.com/CreateAPI/CreateAPI

import Foundation

public struct SubscriptionInfoResponse: Codable, Equatable {
    public var accessibleFeatures: [FeatureSchema]
    /// IntRangeSchema
    public var audioUploadLimits: IntRangeSchema
    public var canUpgradeImmediately: Bool?
    public var cancelOn: Date?
    public var changingTo: String?
    public var creditPacks: [CreditPackSchema]
    public var credits: Int
    public var day0Boost: Int?
    public var freeCoverClipsRemaining: Int?
    public var freeMobileRemastersRemaining: Int?
    public var freeMobileV4GensRemaining: Int?
    public var freePersonaClipsRemaining: Int?
    public var freeRemastersRemaining: Int?
    public var freeWebV4GensRemaining: Int?
    public var hasBeenStudentSubscriberBefore: Bool
    public var hasBeenSubscriberBefore: Bool
    public var hasValidSchoolEmail: Bool
    public var isActive: Bool
    public var isPastDue: Bool
    public var models: [ExternalModelTypeSchema]
    public var monthlyLimit: Int
    public var monthlyUsage: Int
    public var paymentMethodType: String?
    public var period: String?
    public var periodEnd: Date?
    /// UsagePlanSchema
    public var plan: UsagePlanSchema?
    public var planCurrency: String?
    public var planCurrencyPrice: Double?
    public var planPrice: Double?
    public var plans: [UsagePlanSchema]
    public var promotions: [PromotionType]?
    public var remasterModelTypes: [ExternalRemasterModelTypeSchema]?
    public var renewsOn: Date?
    public var revcatSubscriptionsOfferingId: String?
    public var subscriptionAnchor: Date?
    public var subscriptionId: String?
    public var subscriptionPlatform: String?
    public var subscriptionType: Bool
    public var totalCreditsLeft: Int

    public init(accessibleFeatures: [FeatureSchema], audioUploadLimits: IntRangeSchema, canUpgradeImmediately: Bool? = nil, cancelOn: Date? = nil, changingTo: String? = nil, creditPacks: [CreditPackSchema], credits: Int, day0Boost: Int? = nil, freeCoverClipsRemaining: Int? = nil, freeMobileRemastersRemaining: Int? = nil, freeMobileV4GensRemaining: Int? = nil, freePersonaClipsRemaining: Int? = nil, freeRemastersRemaining: Int? = nil, freeWebV4GensRemaining: Int? = nil, hasBeenStudentSubscriberBefore: Bool, hasBeenSubscriberBefore: Bool, hasValidSchoolEmail: Bool, isActive: Bool, isPastDue: Bool, models: [ExternalModelTypeSchema], monthlyLimit: Int, monthlyUsage: Int, paymentMethodType: String? = nil, period: String? = nil, periodEnd: Date? = nil, plan: UsagePlanSchema? = nil, planCurrency: String? = nil, planCurrencyPrice: Double? = nil, planPrice: Double? = nil, plans: [UsagePlanSchema], promotions: [PromotionType]? = nil, remasterModelTypes: [ExternalRemasterModelTypeSchema]? = nil, renewsOn: Date? = nil, revcatSubscriptionsOfferingId: String? = nil, subscriptionAnchor: Date? = nil, subscriptionId: String? = nil, subscriptionPlatform: String? = nil, subscriptionType: Bool, totalCreditsLeft: Int) {
        self.accessibleFeatures = accessibleFeatures
        self.audioUploadLimits = audioUploadLimits
        self.canUpgradeImmediately = canUpgradeImmediately
        self.cancelOn = cancelOn
        self.changingTo = changingTo
        self.creditPacks = creditPacks
        self.credits = credits
        self.day0Boost = day0Boost
        self.freeCoverClipsRemaining = freeCoverClipsRemaining
        self.freeMobileRemastersRemaining = freeMobileRemastersRemaining
        self.freeMobileV4GensRemaining = freeMobileV4GensRemaining
        self.freePersonaClipsRemaining = freePersonaClipsRemaining
        self.freeRemastersRemaining = freeRemastersRemaining
        self.freeWebV4GensRemaining = freeWebV4GensRemaining
        self.hasBeenStudentSubscriberBefore = hasBeenStudentSubscriberBefore
        self.hasBeenSubscriberBefore = hasBeenSubscriberBefore
        self.hasValidSchoolEmail = hasValidSchoolEmail
        self.isActive = isActive
        self.isPastDue = isPastDue
        self.models = models
        self.monthlyLimit = monthlyLimit
        self.monthlyUsage = monthlyUsage
        self.paymentMethodType = paymentMethodType
        self.period = period
        self.periodEnd = periodEnd
        self.plan = plan
        self.planCurrency = planCurrency
        self.planCurrencyPrice = planCurrencyPrice
        self.planPrice = planPrice
        self.plans = plans
        self.promotions = promotions
        self.remasterModelTypes = remasterModelTypes
        self.renewsOn = renewsOn
        self.revcatSubscriptionsOfferingId = revcatSubscriptionsOfferingId
        self.subscriptionAnchor = subscriptionAnchor
        self.subscriptionId = subscriptionId
        self.subscriptionPlatform = subscriptionPlatform
        self.subscriptionType = subscriptionType
        self.totalCreditsLeft = totalCreditsLeft
    }
}
