import { provide } from '@typed/env' import { Capabilities, Effect, Effects, PureEffect, Return } from '../Effect' import { runEffect } from './runEffect' export type RunWith, C> = C extends Capabilities ? PureEffect> : Effects, keyof C>, Return> export function runWith, C>(effect: A, capabilities: C): RunWith { return Effect.fromEnv(provide(runEffect(effect), capabilities)) as RunWith }