using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using LightlessSync.API.Dto.Group;
using LightlessSync.PlayerData.Pairs;

namespace LightlessSync.UI.Models;

public sealed record PairUiSnapshot(
    IReadOnlyDictionary<string, Pair> PairsByUid,
    IReadOnlyList<Pair> DirectPairs,
    IReadOnlyDictionary<GroupFullInfoDto, IReadOnlyList<Pair>> GroupPairs,
    IReadOnlyDictionary<Pair, IReadOnlyList<GroupFullInfoDto>> PairsWithGroups,
    IReadOnlyDictionary<string, GroupFullInfoDto> GroupsByGid,
    IReadOnlyCollection<GroupFullInfoDto> Groups)
{
    public static PairUiSnapshot Empty { get; } = new(
        new ReadOnlyDictionary<string, Pair>(new Dictionary<string, Pair>()),
        Array.Empty<Pair>(),
        new ReadOnlyDictionary<GroupFullInfoDto, IReadOnlyList<Pair>>(new Dictionary<GroupFullInfoDto, IReadOnlyList<Pair>>()),
        new ReadOnlyDictionary<Pair, IReadOnlyList<GroupFullInfoDto>>(new Dictionary<Pair, IReadOnlyList<GroupFullInfoDto>>()),
        new ReadOnlyDictionary<string, GroupFullInfoDto>(new Dictionary<string, GroupFullInfoDto>()),
        Array.Empty<GroupFullInfoDto>());
}
