import { IExecutable } from './executable';
type LimitedFunction = (...args: any[]) => any;
type LimitedFunctionConfig = {
    max?: number;
};
declare class Limit implements IExecutable<LimitedFunctionConfig> {
    private readonly _calls;
    private readonly _max;
    constructor(config?: LimitedFunctionConfig);
    execute<TFunc extends LimitedFunction>(config: LimitedFunctionConfig | null, func: TFunc, ...args: Parameters<TFunc>): ReturnType<TFunc> | void;
}
export { Limit, type LimitedFunction, type LimitedFunctionConfig };
