import type Redis from "ioredis"; import type { RedisKey } from "ioredis"; import type { AcquiredResult, AcquireDesire, AcquireOptionsInput, AcquireOptions } from "./Acquire"; declare type Key = RedisKey | number; declare type Awaitable = T | Promise; export declare class LuaAcquire { private readonly redis; constructor(redis: Redis); acquire(key: Key, amount: number, fn: (currentAmount: number, acquiredAmount: number, lackingAmount: number) => Awaitable, options?: AcquireOptionsInput): Promise; hashAcquire(hashKey: Key, id: Key, amount: number, fn: (currentAmount: number, acquiredAmount: number, lackingAmount: number) => Awaitable, options?: AcquireOptionsInput): Promise; acquireMany(items: AcquireDesire[], fn: (acquireResult: AcquiredResult[]) => Awaitable, options?: AcquireOptions): Promise; hashAcquireMany(hashKey: string, items: AcquireDesire[], fn: (acquireResult: AcquiredResult[]) => Awaitable, options?: AcquireOptions): Promise; private runAcquireManyScript; private acquireSingle; private hashAcquireSingle; private getChangeCommand; private getHashChangeCommand; private runHashAcquireManyScript; private runAcquireCallback; private releaseMany; private hashReleaseMany; private runDynamicKeyReleaseScript; private runFixedKeyReleaseScript; private defineCommands; private get luaRedis(); private buildAcquireArgs; private buildHashAcquireArgs; private buildReleaseArgs; private buildHashReleaseArgs; private getFloatFlag; private parseAcquiredRows; private isLuaRow; private getAcquiredReleaseItems; } export {};