/** * @module SharedLock */ import { type IReadableContext } from "../../../../execution-context/contracts/_module.js"; import { type ISharedLock, type ISharedLockAdapter, type ISharedLockState } from "../../../../shared-lock/contracts/_module.js"; import { type ITimeSpan } from "../../../../time-span/contracts/_module.js"; import { TimeSpan } from "../../../../time-span/implementations/_module.js"; import { type AsyncLazy } from "../../../../utilities/_module.js"; /** * @internal */ export type ISerializedSharedLock = { version: "1"; key: string; lockId: string; limit: number; ttlInMs: number | null; }; /** * @internal */ export type SharedLockSettings = { key: string; serdeTransformerName: string; adapter: ISharedLockAdapter; limit: number; lockId: string; ttl: TimeSpan | null; defaultRefreshTime: TimeSpan; context: IReadableContext; }; /** * @internal */ export declare class SharedLock implements ISharedLock { /** * @internal */ static _serialize(deserializedValue: SharedLock): ISerializedSharedLock; private readonly adapter; private readonly _key; private readonly lockId; private _ttl; private readonly defaultRefreshTime; private readonly serdeTransformerName; private readonly limit; private readonly context; constructor(settings: SharedLockSettings); _getSerdeTransformerName(): string; _getAdapter(): ISharedLockAdapter; runReaderOrFail(asyncFn: AsyncLazy): Promise; acquireReader(): Promise; acquireReaderOrFail(): Promise; releaseReader(): Promise; releaseReaderOrFail(): Promise; forceReleaseAllReaders(): Promise; refreshReader(ttl?: ITimeSpan): Promise; refreshReaderOrFail(ttl?: ITimeSpan): Promise; runWriterOrFail(asyncFn: AsyncLazy): Promise; acquireWriter(): Promise; acquireWriterOrFail(): Promise; releaseWriter(): Promise; releaseWriterOrFail(): Promise; forceReleaseWriter(): Promise; refreshWriter(ttl?: ITimeSpan): Promise; refreshWriterOrFail(ttl?: ITimeSpan): Promise; get key(): string; get id(): string; get ttl(): TimeSpan | null; forceRelease(): Promise; private extractWriterState; private extractReaderState; getState(): Promise; }