import { Exit } from "@effect/core/io/Exit/definition";
import type { Journal } from "@effect/core/stm/STM/Journal";
/**
 * @tsplus type ets/TryCommit
 */
export declare type TryCommit<E, A> = Done<E, A> | Suspend;
/**
 * @tsplus type ets/TryCommit/Ops
 */
export interface TryCommitOps {
}
export declare const TryCommit: TryCommitOps;
export declare function unifyTryCommit<X extends TryCommit<any, any>>(self: X): TryCommit<[
    X
] extends [TryCommit<infer EX, any>] ? EX : never, [
    X
] extends [TryCommit<any, infer AX>] ? AX : never>;
export declare class Done<E, A> {
    readonly exit: Exit<E, A>;
    readonly _tag = "Done";
    constructor(exit: Exit<E, A>);
}
export declare class Suspend {
    readonly journal: Journal;
    readonly _tag = "Suspend";
    constructor(journal: Journal);
}
/**
 * @tsplus static ets/TryCommit/Ops done
 * @tsplus location "@effect/core/stm/STM/TryCommit"
 */
export declare function done<E, A>(exit: Exit<E, A>): TryCommit<E, A>;
/**
 * @tsplus static ets/TryCommit/Ops suspend
 * @tsplus location "@effect/core/stm/STM/TryCommit"
 */
export declare function suspend(journal: Journal): TryCommit<never, never>;
//# sourceMappingURL=TryCommit.d.ts.map