using System.Collections.Generic;
using PolyTraderSharp.Models;

namespace PolyTrader.Core.Persistence
{
    /// <summary>
    /// Zugriff auf die Markt-Metadaten (Collection "markets").
    /// </summary>
    public interface IMarketRepository
    {
        MarketData? GetById(string id);

        /// <summary>Findet den Markt, dessen ClobTokenIds die angegebene TokenId enthalten.</summary>
        MarketData? FindByTokenId(string tokenId);

        /// <summary>Alle nicht geschlossenen Märkte.</summary>
        List<MarketData> GetActive();

        void Upsert(MarketData market);
        void Insert(MarketData market);

        /// <summary>Aktualisiert einen vorhandenen Markt ohne Upsert.</summary>
        void Update(MarketData market);

        void EnsureIndexes();
    }
}
