/** * @module Lock */ import { type IReadableContext } from "../../../../execution-context/contracts/_module.js"; import { type ILock, type ILockAdapter, type ILockState } from "../../../../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 ISerializedLock = { version: "1"; key: string; lockId: string; ttlInMs: number | null; }; /** * @internal */ export type LockSettings = { serdeTransformerName: string; adapter: ILockAdapter; key: string; lockId: string; ttl: TimeSpan | null; defaultRefreshTime: TimeSpan; context: IReadableContext; }; /** * @internal */ export declare class Lock implements ILock { /** * @internal */ static _serialize(deserializedValue: Lock): ISerializedLock; private readonly adapter; private readonly _key; private readonly lockId; private _ttl; private readonly defaultRefreshTime; private readonly serdeTransformerName; private readonly context; constructor(settings: LockSettings); _getSerdeTransformerName(): string; _getAdapter(): ILockAdapter; runOrFail(asyncFn: AsyncLazy): Promise; acquire(): Promise; acquireOrFail(): Promise; release(): Promise; releaseOrFail(): Promise; forceRelease(): Promise; refresh(ttl?: ITimeSpan): Promise; refreshOrFail(ttl?: ITimeSpan): Promise; get key(): string; get id(): string; get ttl(): TimeSpan | null; getState(): Promise; }