/*
 * Copyright 2020 The Matrix.org Foundation C.I.C.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.matrix.android.sdk.api.session.events.model

import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass

/**
 * Server side relation aggregation.
 * ```
 *  {
 *       "m.annotation": {
 *          "chunk": [
 *               {
 *                   "type": "m.reaction",
 *                   "key": "👍",
 *                   "count": 3
 *               }
 *              ],
 *              "limited": false,
 *              "count": 1
 *       },
 *       "m.reference": {
 *           "chunk": [
 *               {
 *                  "type": "m.room.message",
 *                  "event_id": "$some_event_id"
 *              }
 *           ],
 *           "limited": false,
 *           "count": 1
 *           }
 *      }
 * ```
 */

@JsonClass(generateAdapter = true)
data class AggregatedRelations(
        @Json(name = "m.annotation") val annotations: AggregatedAnnotation? = null,
        @Json(name = "m.reference") val references: DefaultUnsignedRelationInfo? = null,
        @Json(name = "m.replace") val replaces: AggregatedReplace? = null,
        @Json(name = RelationType.THREAD) val latestThread: LatestThreadUnsignedRelation? = null
)
