using System.Net; using System.Net.WebSockets; using Nostr.Client.Messages; using Nostr.Client.Requests; namespace NostrRelay; public record NostrClientContext(WebSocket WebSocket, IPAddress Ip, string UserAgent); public record HandleEventResponse(bool Ok, string? Message); public interface INostrRelay { /// /// If we should handle this connection /// /// /// ValueTask AcceptConnection(NostrClientContext context); /// /// Respond to a request for content /// /// /// /// IAsyncEnumerable HandleRequest(NostrClientContext context, NostrRequest req); /// /// Handle new event publish /// /// /// /// ValueTask HandleEvent(NostrClientContext context, NostrEvent ev); }