/**
 * @module SharedLock
 */
import { type IReadableContext } from "../../../../execution-context/contracts/_module.js";
import { type IDatabaseSharedLockAdapter, type ISharedLockAdapter, type ISharedLockAdapterState, type SharedLockAcquireSettings } from "../../../../shared-lock/contracts/_module.js";
import { type TimeSpan } from "../../../../time-span/implementations/_module.js";
/**
 * @internal
 */
export declare class DatabaseSharedLockAdapter implements ISharedLockAdapter {
    private readonly adapter;
    private static _forceReleaseWriter;
    private static _forceReleaseAllReaders;
    private static getWriterState;
    private static getReaderState;
    constructor(adapter: IDatabaseSharedLockAdapter);
    acquireWriter(context: IReadableContext, key: string, lockId: string, ttl: TimeSpan | null): Promise<boolean>;
    releaseWriter(context: IReadableContext, key: string, lockId: string): Promise<boolean>;
    forceReleaseWriter(context: IReadableContext, key: string): Promise<boolean>;
    refreshWriter(context: IReadableContext, key: string, lockId: string, ttl: TimeSpan): Promise<boolean>;
    acquireReader(settings: SharedLockAcquireSettings): Promise<boolean>;
    releaseReader(context: IReadableContext, key: string, lockId: string): Promise<boolean>;
    forceReleaseAllReaders(context: IReadableContext, key: string): Promise<boolean>;
    refreshReader(context: IReadableContext, key: string, slotId: string, ttl: TimeSpan): Promise<boolean>;
    forceRelease(context: IReadableContext, key: string): Promise<boolean>;
    getState(context: IReadableContext, key: string): Promise<ISharedLockAdapterState | null>;
}
