/******************************************************************************
 * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
 */

#pragma once

#include <Quotient/converters.h>

namespace Quotient {
/// A signature of an `m.third_party_invite` token to prove that this user
/// owns a third party identity which has been invited to the room.
struct ThirdPartySigned {
    /// The Matrix ID of the user who issued the invite.
    QString sender;

    /// The Matrix ID of the invitee.
    QString mxid;

    /// The state key of the m.third_party_invite event.
    QString token;

    /// A signatures object containing a signature of the entire signed object.
    QHash<QString, QHash<QString, QString>> signatures;
};

template <>
struct JsonObjectConverter<ThirdPartySigned> {
    static void dumpTo(QJsonObject& jo, const ThirdPartySigned& pod)
    {
        addParam<>(jo, QStringLiteral("sender"), pod.sender);
        addParam<>(jo, QStringLiteral("mxid"), pod.mxid);
        addParam<>(jo, QStringLiteral("token"), pod.token);
        addParam<>(jo, QStringLiteral("signatures"), pod.signatures);
    }
    static void fillFrom(const QJsonObject& jo, ThirdPartySigned& pod)
    {
        fromJson(jo.value("sender"_ls), pod.sender);
        fromJson(jo.value("mxid"_ls), pod.mxid);
        fromJson(jo.value("token"_ls), pod.token);
        fromJson(jo.value("signatures"_ls), pod.signatures);
    }
};

} // namespace Quotient
