import RealFlags

public extension ParameterStores {
    struct SunoIos: SunoStatsigParameterStore {
        public static let parameterStoreName: String = "suno-ios"

        @Flag(key: "annualPlanDiscountPercentage", default: 0, description: "Discount % for annual plan, if available")
        public var annualPlanDiscountPercentage: Int

        @Flag(key: "monthlyPlanDiscountPercentage", default: 0, description: "Discount % for monthly plan, if available")
        public var monthlyPlanDiscountPercentage: Int

        @Flag(key: "contact sync enabled", default: false, description: "Sync contacts for follow suggestions")
        public var contactSync: Bool

        @Flag(key: "dogfoodingOverride", default: false, description: "Generic override for dogfooding states")
        public var dogfoodingOverride: Bool

        @Flag(key: "featuredArtist", default: false, description: "Show the gated featured artist banner and announcements")
        public var featuredArtist: Bool

        @Flag(key: "infinitePreview", default: false, description: "When listening to new songs, user can scroll to create more songs")
        public var infinitePreview: Bool

        @Flag(key: "internationalInvites", default: false, description: "Show the gated international app experience")
        public var internationalInvites: Bool

        @Flag(key: "lyrics-appearance-v2", default: false, description: "Allow lyrics to show up")
        public var lyricsAppearanceV2: Bool

        @Flag(key: "notificationsFeed", default: false, description: "TBD: Needs Description")
        public var notificationsFeed: Bool

        @Flag(key: "onboardingV2", default: false, description: "Show the OnboardingV2 flow")
        public var onboardingV2: Bool

        @Flag(key: "remaster", default: false, description: "Remasters and tooltips")
        public var remaster: Bool

        @Flag(key: "requiresTokenToGenerate", default: false, description: "Requires hCaptcha token in generate")
        public var requiresTokenToGenerate: Bool

        @Flag(key: "shortsShouldUseStreamedLyricsOnCreate", default: false, description: "Force Suno Shorts to use streamed lyrics on create")
        public var shortsShouldUseStreamedLyricsOnCreate: Bool

        @Flag(key: "subscriptionDiscounts", default: false, description: "Show the subscription discounts set in `annualPlanDiscountPercentage` and `monthlyPlanDiscountPercentage`")
        public var subscriptionDiscounts: Bool

        @Flag(key: "tiktokShare", default: false, description: "Show TikTok as a Share option on ShareScreen")
        public var tiktokShare: Bool

        @Flag(key: "topUps", default: false, description: "Add-on credits for pro/premium users")
        public var topUps: Bool

        @Flag(key: "videoInput", default: false, description: "Allow video-input for CreateV2 flows")
        public var videoInput: Bool

        @Flag(key: "v4-promo", default: false, description: "Show V4 Promotional Material")
        public var v4Promo: Bool

        @Flag(key: "editClip", default: false, description: "Display clip editing features")
        public var editClip: Bool

        @Flag(key: "extendClip", default: false, description: "Display Extend features in Edit mode")
        public var extendClip: Bool

        @Flag(key: "songCovers", default: false, description: "Display Covers features in Edit mode")
        public var songCovers: Bool

        @Flag(key: "ios-clip-comments", default: false, description: "Access Comments on Clips")
        public var clipComments: Bool

        @Flag(key: "ios-notifications-v2", default: false, description: "Enabled Notifications V2 and disable notifications V1")
        public var notificationsV2: Bool

        @Flag(key: "simpleNotificationsClient", default: false, description: "Uses a simpler in-memory notifications client. We should default this to `true` while the database / sync-layer client isn't ready yet")
        public var simpleNotificationsClient: Bool

        @Flag(key: "ios-stop-all-notifications", default: false, description: "Emergency brake on notifications")
        public var stopAllNotifications: Bool

        @Flag(key: "ios-enable-staff-shake-to-report", default: false, description: "Turns on our shake-to-report SDK (meant only for staff users)")
        public var iosEnableStaffShakeToReport: Bool

        @Flag(key: "videoSongCover", default: false, description: "Allow uploading a video as a song cover image")
        public var videoSongCover

        @Flag(key: "haptics-client-enabled", default: true, description: "Enable haptic feedback throughout the app")
        public var hapticsClientEnabled: Bool

        @Flag(key: "ios-lyrics-omniplayerv3", default: false, description: "Flag to determine if the user can see lyrics on the omniplayer V3")
        public var lyricsOmniplayerV3: Bool
        
        @Flag(key: "ios-playlist-redesign", default: true, description: "Enable redesigned playlist menu")
        public var iosPlaylistRedesign: Bool

        @Flag(key: "ios-madlibs-onboarding", default: false, description: "Gate for checking the madlibs onboarding experiment")
        public var madlibsOnboardingExperimentEnabled: Bool

        @Flag(key: "ios-madlibs-onboarding-exp", default: false, description: "Determines which onboarding flow to use, true = madlibs, false = control onboarding")
        public var madlibsOnboardingExperiment: Bool

        @Flag(key: "bluejay-launch", default: false, description: "Launch flag for the bluejay / v4.5+ model")
        public var bluejayLaunch: Bool

        @Flag(key: "bluejay-model-highlighted", default: false, description: "Should highlight the bluejay model in pink")
        public var bluejayModelHighlighted: Bool

        @Flag(key: "v5-launch", default: false, description: "Launch flag for the v5 model announcement")
        public var v5Launch: Bool

        @Flag(key: "v5-launch-model-styles", default: false, description: "Launch flag for the v5 model announcement")
        public var v5LaunchModelStyles: Bool

        @Flag(key: "song-generation-banner-v2", default: false, description: "Enable the new song generation banner v2")
        public var songGenerationBannerV2: Bool

        @Flag(key: "remix-v2", default: false, description: "Enable the v2 remix UI")
        public var remixV2: Bool
        @Flag(key: "ios-deprecate-scenes-banner", default: false, description: "When toggled on, shows the Deprecate Scenes banner in the Library Screen")
        public var showDeprecateScenesBanner: Bool

        @Flag(key: "backend-app-launch-modals", default: false, description: "Launch flag for the modal CMS feature on app launch")
        public var useAppLaunchModalCarousel: Bool
        
        @Flag(key: "ios-show-appearance-settings", default: false, description: "Launch flag hiding/showing the Appearance row on the Settings screen")
        public var showAppearanceSetting: Bool

        @Flag(key: "ios-create-your-first-song-cms-toggle", default: false, description: "Launch flag hiding/showing the legacy create first song modal")
        public var showLegacyCreateYourFirstSongModal: Bool
        
        @Flag(key: "ios-v5-cms-toggle", default: false, description: "Launch flag hiding/showing legacy v5 launch modal")
        public var showLegacyV5Modal: Bool
        
        public init() {}
    }
}
