import { STM } from "@effect/core/stm/STM/definition/base";
import { Refinement } from "@tsplus/stdlib/data/Function";
import { Predicate } from "@tsplus/stdlib/data/Predicate";
/**
 * Applies `orElse` if the predicate fails.
 * @tsplus fluent ets/STM filterOrElseWith
 * @tsplus location "@effect/core/stm/STM/operations/filterOrElseWith"
 */
export declare function filterOrElseWith_<R, E, A, B extends A, R2, E2, A2>(self: STM<R, E, A>, f: Refinement<A, B>, orElse: (a: A) => STM<R2, E2, A2>): STM<R | R2, E | E2, B | A2>;
export declare function filterOrElseWith_<R, E, A, R2, E2, A2>(self: STM<R, E, A>, f: Predicate<A>, orElse: (a: A) => STM<R2, E2, A2>): STM<R | R2, E | E2, A | A2>;
/**
 * Applies `orElse` if the predicate fails.
 * @tsplus static ets/STM/Aspects filterOrElseWith
 * @tsplus location "@effect/core/stm/STM/operations/filterOrElseWith"
 */
export declare function filterOrElseWith<A, B extends A, R2, E2, A2>(f: Refinement<A, B>, orElse: (a: A) => STM<R2, E2, A2>): <R, E>(self: STM<R, E, A>) => STM<R | R2, E | E2, B | A2>;
export declare function filterOrElseWith<A, R2, E2, A2>(f: Predicate<A>, orElse: (a: A) => STM<R2, E2, A2>): <R, E>(self: STM<R, E, A>) => STM<R | R2, E | E2, A | A2>;
//# sourceMappingURL=filterOrElseWith.d.ts.map