//
//  StatusProtocol.swift
//  Pachyderm
//
//  Created by Shadowfacts on 4/11/20.
//  Copyright © 2020 Shadowfacts. All rights reserved.
//

import Foundation

public protocol StatusProtocol {
    associatedtype Status: StatusProtocol
    associatedtype Account: AccountProtocol
    
    var id: String { get }
    var uri: String { get }
    var inReplyToID: String? { get }
    var inReplyToAccountID: String? { get }
    var content: String { get }
    var createdAt: Date { get }
    var reblogsCount: Int { get }
    var favouritesCount: Int { get }
    // pachyderm impl wants Bool, StatusMO wants optional. not sure how to resolve it, but we don't need this currently
//    var reblogged: Bool { get }
//    var favourited: Bool { get }
    var sensitive: Bool { get }
    var spoilerText: String { get }
    var visibility: Visibility { get }
    var applicationName: String? { get }
    var pinned: Bool? { get }
    var bookmarked: Bool? { get }

    var account: Account { get }
    var reblog: Status? { get }
    var attachments: [Attachment] { get }
    var emojis: [Emoji] { get }
    var hashtags: [Hashtag] { get }
    var mentions: [Mention] { get }
}
