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