export type IAny = any;
export type IHandler = (...args: any) => any;
export type ILimit = number;
export type IOpts = {
    target: IHandler;
    delay: number;
    context?: IAny;
    limit?: ILimit;
};
export type TimeoutID = number;
export type ITarget = IHandler | IOpts;
export type IRepeater = {
    (...args: any): any;
    target: IHandler;
    timeout?: TimeoutID;
    limit?: ILimit;
    delay?: number;
    args?: Array<IAny>;
    context?: IAny;
};
export type IWrapper = {
    (fn: ITarget): IRepeater;
};
/**
 * Creates a new repeater.
 * @param {Function} target
 * @param {number} delay
 * @param {*} [context]
 * @param {number} [limit]
 * @return {IRepeater}
 * @property {Function/IOpts} target
 * @property {number} delay
 * @property {*} context
 * @property {Array<*>} [args] arguments of the last invocation
 * @property {number} [timeout] TimeoutID
 */
export declare function createRepeater(target: ITarget, delay: number, context?: IAny, limit?: ILimit): IRepeater;
