import Foundation
import Postbox

public final class AdMessageAttribute: MessageAttribute {
    public enum MessageType {
        case sponsored
        case recommended
    }
    
    public enum MessageTarget {
        case peer(id: EnginePeer.Id, message: EngineMessage.Id?, startParam: String?)
        case join(title: String, joinHash: String)
        case webPage(title: String, url: String)
    }
    
    public let opaqueId: Data
    public let messageType: MessageType
    public let displayAvatar: Bool
    public let target: MessageTarget
    public let sponsorInfo: String?
    public let additionalInfo: String?

    public init(opaqueId: Data, messageType: MessageType, displayAvatar: Bool, target: MessageTarget, sponsorInfo: String?, additionalInfo: String?) {
        self.opaqueId = opaqueId
        self.messageType = messageType
        self.displayAvatar = displayAvatar
        self.target = target
        self.sponsorInfo = sponsorInfo
        self.additionalInfo = additionalInfo
    }

    public init(decoder: PostboxDecoder) {
        preconditionFailure()
    }

    public func encode(_ encoder: PostboxEncoder) {
        preconditionFailure()
    }
}