import { CapabilitiesOf, Env, Pure, ValueOf } from './Env' export type Provide, C extends Partial>> = [ keyof Omit, keyof C>, ] extends [never] ? Pure> : Env, keyof C>, ValueOf> export function provide, C extends Partial>>( env: E, capabilities: C, ): Provide { return ((c1: CapabilitiesOf>) => env({ ...(c1 as {}), ...capabilities })) as Provide }