import { Disposable } from '@typed/disposable'
import { unpack } from '@typed/either'
import { runPure } from '@typed/env'
import { curry } from '@typed/lambda'
import { PureFuture } from './Future'
export const fork = curry(__fork) as {
(
left: (value: A) => Disposable,
right: (value: B) => Disposable,
future: PureFuture,
): Disposable
(left: (value: A) => Disposable, right: (value: B) => Disposable): (
future: PureFuture,
) => Disposable
(left: (value: A) => Disposable): {
(right: (value: B) => Disposable, future: PureFuture): Disposable
(right: (value: B) => Disposable, future: PureFuture): Disposable
}
}
function __fork(
left: (value: A) => Disposable,
right: (value: B) => Disposable,
future: PureFuture,
): Disposable {
return runPure(unpack(left, right), future)
}