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

import Foundation

public struct RenderStateMultitrackSpec: Codable, Equatable {
    public var caption: String?
    public var downbeats: [[Double]]?
    public var endBeats: Double
    public var format: Format?
    public var fromStudioProjectId: String?
    public var lyrics: String?
    public var negativeTags: String?
    public var projectId: String?
    public var startBeats: Double
    public var state: AnyJSON
    public var styleSummary: String?
    public var tags: String?
    public var title: String
    public var webClientPathname: String?

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

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

        public static let mp3 = Self(rawValue: "mp3")
        public static let wav = Self(rawValue: "wav")
        public static let wavS16 = Self(rawValue: "wav_s16")
    }

    public init(caption: String? = nil, downbeats: [[Double]]? = nil, endBeats: Double, format: Format? = nil, fromStudioProjectId: String? = nil, lyrics: String? = nil, negativeTags: String? = nil, projectId: String? = nil, startBeats: Double, state: AnyJSON, styleSummary: String? = nil, tags: String? = nil, title: String, webClientPathname: String? = nil) {
        self.caption = caption
        self.downbeats = downbeats
        self.endBeats = endBeats
        self.format = format
        self.fromStudioProjectId = fromStudioProjectId
        self.lyrics = lyrics
        self.negativeTags = negativeTags
        self.projectId = projectId
        self.startBeats = startBeats
        self.state = state
        self.styleSummary = styleSummary
        self.tags = tags
        self.title = title
        self.webClientPathname = webClientPathname
    }
}
