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)
    }
    
    public let opaqueId: Data
    public let messageType: MessageType
    public let target: MessageTarget

    public init(opaqueId: Data, messageType: MessageType, target: MessageTarget) {
        self.opaqueId = opaqueId
        self.messageType = messageType
        self.target = target
    }

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

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