import { TSemaphore } from "@effect/core/stm/TSemaphore/definition";
import { Effect } from "@effect/core/io/Effect/definition";
/**
 * Executes the specified effect, acquiring the specified number of permits
 * immediately before the effect begins execution and releasing them
 * immediately after the effect completes execution, whether by success,
 * failure, or interruption.
 * @tsplus fluent ets/TSemaphore withPermits
 * @tsplus location "@effect/core/stm/TSemaphore/operations/withPermits"
 */
export declare function withPermits_(self: TSemaphore, permits: number, __tsplusTrace?: string): <R, E, A>(effect: import("../../../io/Effect").Effect<R, E, A>) => import("../../../io/Effect").Effect<R, E, A>;
/**
 * Executes the specified effect, acquiring the specified number of permits
 * immediately before the effect begins execution and releasing them
 * immediately after the effect completes execution, whether by success,
 * failure, or interruption.
 * @tsplus static ets/TSemaphore/Aspects withPermits
 * @tsplus pipeable ets/TSemaphore withPermits
 * @tsplus location "@effect/core/stm/TSemaphore/operations/withPermits"
 */
export declare const withPermits: (permits: number, __tsplusTrace?: string) => (self: TSemaphore) => <R, E, A>(effect: import("../../../io/Effect").Effect<R, E, A>) => import("../../../io/Effect").Effect<R, E, A>;
//# sourceMappingURL=withPermits.d.ts.map