import Foundation

public struct WordToken: Equatable, Hashable {
    public let text: String
    public var startTime: TimeInterval
    public var endTime: TimeInterval

    public init(text: String, startTime: TimeInterval, endTime: TimeInterval) {
        self.text = text
        self.startTime = startTime
        self.endTime = endTime
    }
}

public struct LyricsLine: Equatable, Hashable {
    public let text: String
    public let startTime: TimeInterval
    public let endTime: TimeInterval
    public let section: String
    public let words: [WordToken]

    public init(text: String, startTime: TimeInterval, endTime: TimeInterval, section: String, words: [WordToken]) {
        self.text = text
        self.startTime = startTime
        self.endTime = endTime
        self.section = section
        self.words = words
    }
}

public struct LyricsDataV2: Equatable, Hashable {
    public var lines: [LyricsLine]

    public static let empty = LyricsDataV2(lines: [])

    public init(lines: [LyricsLine]) {
        self.lines = lines
    }
}
