using System;
using System.Collections.Generic;
using Net.Eagle0.Eagle.Api;

namespace eagle {
    using GameId = Int64;
    public interface IClientConnectionSubscriber {
        public GameId GameId { get; }
        public Int64? CurrentEagleToken { get; }
        public Int64? CurrentShardokToken(string shardokGameId);

        public void ReceiveGameUpdate(GameUpdate update);

        // Used for registering for stream updates
        struct ShardokViewStatus {
            public string shardokGameId;
            public Int32 filteredResultCount;
        }

        struct StreamingTextStatus {
            public string llmIdentifier;

            public Int32 knownByteCount;

            public Boolean knownComplete;
        }
        public int LastUnfilteredResultCount { get; }
        public List<ShardokViewStatus> ShardokViewStatuses { get; }
        public List<StreamingTextStatus> StreamingTextStatuses { get; }
    }
}