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

import Foundation

public struct VideoWorkspaceResponse: Codable, Equatable, Identifiable {
    public var clipId: String?
    public var customReferenceId: String?
    public var id: String
    public var imageUrl: String?
    public var lyrics: [[String: AnyJSON]]?
    public var prompt: String?
    public var sceneCount: Int
    public var sceneScript: [[String: AnyJSON]]?
    public var status: Status
    public var videoUrl: String?

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

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

        public static let workspaceCreated = Self(rawValue: "workspace_created")
        public static let scriptGenerated = Self(rawValue: "script_generated")
        public static let soulImagesGenerated = Self(rawValue: "soul_images_generated")
        public static let videoGenerated = Self(rawValue: "video_generated")
        public static let sceneCompleted = Self(rawValue: "scene_completed")
        public static let completed = Self(rawValue: "completed")
        public static let failed = Self(rawValue: "failed")
    }

    public init(clipId: String? = nil, customReferenceId: String? = nil, id: String, imageUrl: String? = nil, lyrics: [[String: AnyJSON]]? = nil, prompt: String? = nil, sceneCount: Int, sceneScript: [[String: AnyJSON]]? = nil, status: Status, videoUrl: String? = nil) {
        self.clipId = clipId
        self.customReferenceId = customReferenceId
        self.id = id
        self.imageUrl = imageUrl
        self.lyrics = lyrics
        self.prompt = prompt
        self.sceneCount = sceneCount
        self.sceneScript = sceneScript
        self.status = status
        self.videoUrl = videoUrl
    }
}
