import type { NonEmptyArray } from "effect-app/Array";
import * as Effect from "effect-app/Effect";
import type * as Duration from "effect/Duration";
import type { Semaphore } from "effect/Semaphore";
import type { Concurrency } from "effect/Types";
/**
* Executes the specified effect, acquiring the specified number of permits
* immediately before the effect begins execution and releasing them
* delayed by duration after the effect completes execution, whether by success,
* failure, or interruption.
*/
export declare function SEM_withPermitsDuration(permits: number, duration: Duration.Duration): (self: Semaphore) => (effect: Effect.Effect) => Effect.Effect;
export interface BatchOptions {
readonly concurrency?: Concurrency | undefined;
}
export declare const batch: {
(n: number, forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect.Effect, forEachBatch: (a: NonEmptyArray, i: number) => Effect.Effect, options?: BatchOptions): (items: Iterable) => Effect.Effect, E | E2, R | R2>;
(items: Iterable, n: number, forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect.Effect, forEachBatch: (a: NonEmptyArray, i: number) => Effect.Effect, options?: BatchOptions): Effect.Effect, E | E2, R | R2>;
};
export declare function naiveRateLimit(n: number, d: Duration.Duration): (items: Iterable) => (forEachItem: (i: T) => Effect.Effect, forEachBatch: (a: A[]) => Effect.Effect) => Effect.Effect;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmF0ZUxpbWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCQSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNyRCxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE9BQU8sS0FBSyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUNoRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFL0M7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IsdUJBQXVCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsVUFDcEUsU0FBUyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBYTlGO0FBRUQsTUFBTSxXQUFXLFlBQVk7SUFDM0IsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFdBQVcsR0FBRyxTQUFTLENBQUE7Q0FDL0M7QUFFRCxlQUFPLE1BQU0sS0FBSyxFQUFFO0lBQ2xCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUNyQixDQUFDLEVBQUUsTUFBTSxFQUNULFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDdEYsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDM0UsT0FBTyxDQUFDLEVBQUUsWUFBWSxHQUNyQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDbkUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQ3JCLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQ2xCLENBQUMsRUFBRSxNQUFNLEVBQ1QsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN0RixZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUMzRSxPQUFPLENBQUMsRUFBRSxZQUFZLEdBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0NBa0I1QyxDQUFBO0FBa0JELHdCQUFnQixjQUFjLENBQzVCLENBQUMsRUFBRSxNQUFNLEVBQ1QsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLElBRVosQ0FBQyxTQUFTLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFDeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQy9CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMseUNBY3REIn0=