/* © SRSoftware 2025 */
package de.srsoftware.umbrella.message;

import de.srsoftware.umbrella.core.model.Envelope;
import de.srsoftware.umbrella.core.model.Message;
import de.srsoftware.umbrella.core.model.User;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;

public interface MessageQueue<T extends Message<?>> {
	public List<Envelope<T>> getEnvelopesFor(User user);
	public Optional<Envelope<T>> getEnvelope(long id);
	Stream<User> getReceivers();
	public Optional<Envelope<T>> markRead(long messageId, User user);
	public void push(Envelope<T> envelope);
}
