import { Effect } from "@effect/core/io/Effect/definition";
import { MergeRecord } from "@tsplus/stdlib/utilities/Types";
/**
 * Binds an effectful value in a `do` scope
 * @tsplus fluent ets/Effect bind
 * @tsplus location "@effect/core/io/Effect/operations/do"
 */
export declare function bind_<R2, E2, R, E, A, K, N extends string>(self: Effect<R2, E2, K>, tag: Exclude<N, keyof K>, f: (_: K) => Effect<R, E, A>, __tsplusTrace?: string): Effect<R | R2, E | E2, MergeRecord<K, {
    [k in N]: A;
}>>;
/**
 * Binds an effectful value in a `do` scope
 *
 * @ets_data_first bind_
 */
export declare function bind<R, E, A, K, N extends string>(tag: Exclude<N, keyof K>, f: (_: K) => Effect<R, E, A>, __tsplusTrace?: string): <R2, E2>(self: import("../definition").Effect<R2, E2, K>) => import("../definition").Effect<R | R2, E | E2, import("@tsplus/stdlib/utilities/Types").MergeRecord<K, { [k in N]: A; }>>;
/**
 * Like bind for values
 * @tsplus fluent ets/Effect bindValue
 * @tsplus location "@effect/core/io/Effect/operations/do"
 */
export declare function bindValue_<R2, E2, A, K, N extends string>(self: Effect<R2, E2, K>, tag: Exclude<N, keyof K>, f: (_: K) => A, __tsplusTrace?: string): Effect<R2, E2, MergeRecord<K, {
    [k in N]: A;
}>>;
/**
 * Like bind for values
 *
 * @ets_data_first bindValue_
 */
export declare function bindValue<A, K, N extends string>(tag: Exclude<N, keyof K>, f: (_: K) => A, __tsplusTrace?: string): <R2, E2>(self: import("../definition").Effect<R2, E2, K>) => import("../definition").Effect<R2, E2, import("@tsplus/stdlib/utilities/Types").MergeRecord<K, { [k in N]: A; }>>;
/**
 * @tsplus static ets/Effect/Ops Do
 * @tsplus location "@effect/core/io/Effect/operations/do"
 */
export declare function Do(): Effect<never, never, {}>;
//# sourceMappingURL=do.d.ts.map