1import * as Context from "effect/Context";
2import type * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";
4import type * as Stream from "effect/Stream";
5
6import type { NetworkStatus } from "./model.ts";
7
8export class Connectivity extends Context.Service<
9 Connectivity,
10 {
11 readonly status: Effect.Effect<NetworkStatus>;
12 readonly changes: Stream.Stream<NetworkStatus>;
13 }
14>()("@t3tools/client-runtime/connection/connectivity") {}
15
16const make = (service: Connectivity["Service"]) => Connectivity.of(service);
17
18export const layer = (service: Connectivity["Service"]) =>
19 Layer.succeed(Connectivity, make(service));