import { TSet } from "@effect/core/stm/TSet/definition";
import { STM } from "@effect/core/stm/STM/definition/base";
import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
/**
 * Transactionally takes the first matching value, or retries until there is one.
 * @tsplus fluent ets/TSet takeFirstSTM
 * @tsplus location "@effect/core/stm/TSet/operations/takeFirstSTM"
 */
export declare function takeFirstSTM_<A, B, R, E>(self: TSet<A>, pf: (a: A) => STM<R, Maybe<E>, B>): STM<R, E, B>;
/**
 * Transactionally takes the first matching value, or retries until there is one.
 * @tsplus static ets/TSet/Aspects takeFirstSTM
 * @tsplus pipeable ets/TSet takeFirstSTM
 * @tsplus location "@effect/core/stm/TSet/operations/takeFirstSTM"
 */
export declare const takeFirstSTM: <A, B, R, E>(pf: (a: A) => import("../../STM").STM<R, import("@tsplus/stdlib/data/Maybe").Maybe<E>, B>) => (self: import("../definition").TSet<A>) => import("../../STM").STM<R, E, B>;
//# sourceMappingURL=takeFirstSTM.d.ts.map