/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
import type { Effect, Option, S } from "effect-app"
import type { OptimisticConcurrencyException } from "effect-app/client/errors"
export interface Mapped1 {
all: Effect.Effect
save: (...xes: readonly A[]) => Effect.Effect
find: (id: A[IdKey]) => Effect.Effect, S.SchemaError, R>
}
// TODO: auto use project, and select fields from the From side of schema only
export interface Mapped2 {
all: Effect.Effect
}
export interface Mapped {
(schema: S.Codec): Mapped1
// TODO: constrain on Encoded2 having to contain only fields that fit Encoded
(schema: S.Codec): Mapped2
}
export interface MM {
(schema: S.Codec): Effect.Effect, never, Repo>
// TODO: constrain on Encoded2 having to contain only fields that fit Encoded
(schema: S.Codec): Effect.Effect, never, Repo>
}