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

import Foundation

public struct DownbeatsSchema: Codable, Equatable {
    public var downbeats: [[Double]]?
    public var errorMessage: String?
    public var final: Bool?
    public var onsets: [Double]?
    public var rawDownbeats: [[Double]]?
    public var rawOnsetDownbeats: [[Double]]?
    public var rawOnsets: [Double]?
    public var secondsMissingFromStart: Double?
    public var state: State

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

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

        public static let running = Self(rawValue: "running")
        public static let error = Self(rawValue: "error")
        public static let complete = Self(rawValue: "complete")
        public static let streaming = Self(rawValue: "streaming")
    }

    public init(downbeats: [[Double]]? = nil, errorMessage: String? = nil, final: Bool? = nil, onsets: [Double]? = nil, rawDownbeats: [[Double]]? = nil, rawOnsetDownbeats: [[Double]]? = nil, rawOnsets: [Double]? = nil, secondsMissingFromStart: Double? = nil, state: State) {
        self.downbeats = downbeats
        self.errorMessage = errorMessage
        self.final = final
        self.onsets = onsets
        self.rawDownbeats = rawDownbeats
        self.rawOnsetDownbeats = rawOnsetDownbeats
        self.rawOnsets = rawOnsets
        self.secondsMissingFromStart = secondsMissingFromStart
        self.state = state
    }
}
