namespace SharpChat.EventStorage;

public interface EventStorage {
    Task AddEvent(
        long id,
        string type,
        string channelName,
        string senderId,
        string senderName,
        ColourInheritable senderColour,
        int senderRank,
        string senderNick,
        UserPermissions senderPerms,
        object? data = null,
        StoredEventFlags flags = StoredEventFlags.None
    );
    Task RemoveEvent(StoredEventInfo evt);
    Task<StoredEventInfo?> GetEvent(long seqId);
    Task<IEnumerable<StoredEventInfo>> GetChannelEventLog(string channelName, int amount = 20, int offset = 0);
}