export class Router extends Context.Tag("@moltzap/router/Router")<
Router,
RouterClientService
>() {
static readonly send: (input: {
readonly request: RouterSendRequest;
readonly callerAgentId: AgentId;
readonly signingAuthority: AgentSigningAuthority;
}) => Effect.Effect<RouterSendResult, RouterClientError, Router> =
Effect.serviceFunctionEffect(Router, (service) => service.send);
static readonly poll: (input: {
readonly request: RouterPollRequest;
readonly callerAgentId: AgentId;
readonly signingAuthority: AgentSigningAuthority;
}) => Effect.Effect<RouterPollResult, RouterClientError, Router> =
Effect.serviceFunctionEffect(Router, (service) => service.poll);
static readonly layer = (input: {
readonly origin: URL;
readonly sendTimeout: Duration.Duration;
readonly pollTimeout: Duration.Duration;
}): Layer.Layer<Router, never, HttpClient.HttpClient> =>
Layer.effect(Router, makeRouterClient(input));
}