import { RedisClientType } from "redis";
import { IDistributedDeferred } from "./types";
import { types } from "@apiratorjs/locking";
export declare abstract class BaseDistributedPrimitive {
    readonly name: string;
    readonly implementation: string;
    protected readonly _redisClient: RedisClientType;
    protected _redisSubscriber?: RedisClientType;
    protected _queue: IDistributedDeferred[];
    protected _isDestroyed: boolean;
    protected constructor(props: {
        name: string;
        redisClient: RedisClientType;
    });
    get isDestroyed(): boolean;
    protected ensureSubscriber(): Promise<void>;
    protected abstract tryAcquire(ttlMs: number): Promise<types.AcquireToken | undefined>;
    protected abstract destroy(): Promise<void>;
    protected abstract release(token: types.AcquireToken): Promise<void>;
}
//# sourceMappingURL=base-distributed-primitive.d.ts.map