import { Duration } from "./duration.js"; import { DecoratorReplacementMethod, DecoratorTargetMethod, MethodDecoratorContext } from "./decorator-helpers.js"; /** * Creates a dedupe decorator that ensures a method is only called once within a specified time window. * Subsequent calls within the window are ignored. Useful for preventing duplicate operations. * * @param window - The time window during which duplicate calls are ignored * @returns A method decorator that implements dedupe behavior * @throws ArgumentException if window is not a positive Duration * * @example * ```typescript * class Example { * @dedupe(Duration.fromSeconds(5)) * async processData(data: string): Promise { * // This will only execute once every 5 seconds * console.log(`Processing: ${data}`); * } * } * ``` */ export declare function dedupe, Return extends Promise | void>(delay: Duration): DedupeMethodDecorator; export declare function dedupe, Return extends Promise | void>(target: DecoratorTargetMethod, context: MethodDecoratorContext): DecoratorReplacementMethod; export type DedupeMethodDecorator, Return extends Promise | void> = (target: DecoratorTargetMethod, context: MethodDecoratorContext) => DecoratorReplacementMethod; //# sourceMappingURL=dedupe.d.ts.map