import type * as AsyncData from "@typed/async-data" import { type Cause, Effect, type Fiber, type Option, type SubscriptionRef } from "effect" export interface QueryService { readonly latestKey: SubscriptionRef.SubscriptionRef> readonly state: SubscriptionRef.SubscriptionRef> readonly refresh: Effect.Effect> } export const Tag = (id: Id) => < Self, K extends readonly unknown[], A, E = never, >() => Effect.Tag(id)>() // export interface LayerProps { // readonly query: Effect.Effect // } // export const layer = ( // tag: Context.TagClass>, // props: LayerProps, // ): Layer.Layer => Layer.effect(tag, Effect.gen(function*() { // const runner = yield* QueryRunner.make({ // query: props.query // }) // return { // state: runner.stateRef, // refresh: runner.forkRefresh, // } // }))