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
}