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

import Foundation

public struct GenerateVideoRequestLegacy: Codable, Equatable {
    public var actionType: ActionType?
    public var clipId: String
    public var customReferenceId: String?
    public var imageUrl: String?
    public var platform: Platform?
    public var prompt: String?
    public var type: `Type`?

    public struct ActionType: RawRepresentable, Codable, Equatable {
        public let rawValue: String

        public init(rawValue: String) {
            self.rawValue = rawValue
        }

        public static let generateScript = Self(rawValue: "generate_script")
        public static let generateVideo = Self(rawValue: "generate_video")
        public static let generateImage = Self(rawValue: "generate_image")
    }

    public struct Platform: RawRepresentable, Codable, Equatable {
        public let rawValue: String

        public init(rawValue: String) {
            self.rawValue = rawValue
        }

        public static let higgsfield = Self(rawValue: "higgsfield")
        public static let minimax = Self(rawValue: "minimax")
    }

    /// Type
    public struct `Type`: RawRepresentable, Codable, Equatable {
        public let rawValue: String

        public init(rawValue: String) {
            self.rawValue = rawValue
        }

        public static let shortVideo = Self(rawValue: "short_video")
        public static let soulVideo = Self(rawValue: "soul_video")
    }

    public init(actionType: ActionType? = nil, clipId: String, customReferenceId: String? = nil, imageUrl: String? = nil, platform: Platform? = nil, prompt: String? = nil, type: `Type`? = nil) {
        self.actionType = actionType
        self.clipId = clipId
        self.customReferenceId = customReferenceId
        self.imageUrl = imageUrl
        self.platform = platform
        self.prompt = prompt
        self.type = type
    }
}
