import { STM } from "@effect/core/stm/STM/definition/base";
/**
 * Executes the specified finalization transaction whether or
 * not this effect succeeds. Note that as with all STM transactions,
 * if the full transaction fails, everything will be rolled back.
 * @tsplus fluent ets/STM ensuring
 * @tsplus location "@effect/core/stm/STM/operations/ensuring"
 */
export declare function ensuring_<R, E, A, R1, B>(self: STM<R, E, A>, finalizer: STM<R1, never, B>): STM<R | R1, E, A>;
/**
 * Executes the specified finalization transaction whether or
 * not this effect succeeds. Note that as with all STM transactions,
 * if the full transaction fails, everything will be rolled back.
 * @tsplus static ets/STM/Aspects ensuring
 * @tsplus pipeable ets/STM ensuring
 * @tsplus location "@effect/core/stm/STM/operations/ensuring"
 */
export declare const ensuring: <R1, B>(finalizer: import("../definition").STM<R1, never, B>) => <R, E, A>(self: import("../definition").STM<R, E, A>) => import("../definition").STM<R | R1, E, A>;
//# sourceMappingURL=ensuring.d.ts.map