// ets_tracing: off
import { constant, identity } from "@effect-ts/system/Function"
import * as X from "@effect-ts/system/Sync"
import type { SyncURI } from "../../Modules/index.js"
import type { URI } from "../../Prelude/index.js"
import * as P from "../../Prelude/index.js"
export type V = P.V<"R", "-"> & P.V<"E", "+">
export const Any = P.instance
], V>>({
any: () => X.succeed(constant({}))
})
export const Covariant = P.instance], V>>({
map: X.map
})
export const AssociativeBoth = P.instance], V>>({
both: X.zip
})
export const AssociativeEither = P.instance], V>>({
orElseEither: X.orElseEither
})
export const AssociativeFlatten = P.instance], V>>({
flatten: (ffa) => X.chain_(ffa, identity)
})
export const Applicative = P.instance], V>>({
...Any,
...Covariant,
...AssociativeBoth
})
export const Access = P.instance], V>>({
access: X.access
})
export const Fail = P.instance], V>>({
fail: X.fail
})
export const Run = P.instance], V>>({
either: X.either
})
export const Provide = P.instance], V>>({
provide: X.provideAll
})
export const Monad = P.instance], V>>({
...Any,
...AssociativeFlatten,
...Covariant
})