import { Redis } from "ioredis";
export interface IOptions {
    /** ioredis实例 */
    client: Redis;
    /** 键前缀 */
    keyPrefix: string;
}
export default class {
    private keyPrefix;
    private redis;
    constructor(options: IOptions);
    private getKeyName;
    private getIdentifier;
    private sleep;
    private initLua;
    /**
     * 请求一个锁标志
     * @param lockName 锁名字
     * @param acquireTimeout 请求超时毫秒数，默认3000
     * @param lockTimeout 锁过期毫秒数，默认5000
     */
    acquireLock(lockName: string, acquireTimeout?: number, lockTimeout?: number): Promise<string | null>;
    /**
     * 释放锁
     * @param lockName 锁名字
     * @param identifier 锁标志
     */
    releaseLock(lockName: string, identifier: string): Promise<boolean>;
    /**
     * 获取信号量
     * @param sename 信号量名字
     * @param limit 限制数
     * @param timeout 信号量过期毫秒数，默认3000
     */
    acquireSemaphore(sename: string, limit: number, timeout?: number): Promise<string | null>;
    /**
     * 释放信号量
     * @param sename 信号量名字
     * @param identifier 信号量标识
     */
    releaseSemaphore(sename: string, identifier: string): Promise<boolean>;
    /**
     * 刷新信号量
     * @param sename 信号量名字
     * @param identifier 信号量标识符
     */
    refreshSemaphore(sename: string, identifier: string): Promise<boolean>;
}
