/**
 * @module Lock
 */
import type { ISerdeTransformer } from "../../../../serde/contracts/_module-exports.js";
import { Lock, type ISerializedLock } from "../../../../lock/implementations/derivables/lock-provider/lock.js";
import type { OneOrMore } from "../../../../utilities/_module-exports.js";
import type { ILockAdapter, LockEventMap } from "../../../../lock/contracts/_module-exports.js";
import { type ILockStore } from "../../../../lock/implementations/derivables/lock-provider/lock-state.js";
import { TimeSpan, type Namespace } from "../../../../utilities/_module-exports.js";
import type { LazyPromise } from "../../../../async/_module-exports.js";
import type { IEventBus } from "../../../../event-bus/contracts/_module-exports.js";
/**
 * @internal
 */
export type LockSerdeTransformerSettings = {
    adapter: ILockAdapter;
    lockStore: ILockStore;
    namespace: Namespace;
    createLazyPromise: <TValue = void>(asyncFn: () => PromiseLike<TValue>) => LazyPromise<TValue>;
    defaultBlockingInterval: TimeSpan;
    defaultBlockingTime: TimeSpan;
    defaultRefreshTime: TimeSpan;
    eventBus: IEventBus<LockEventMap>;
    serdeTransformerName: string;
};
/**
 * @internal
 */
export declare class LockSerdeTransformer implements ISerdeTransformer<Lock, ISerializedLock> {
    private readonly adapter;
    private readonly lockStore;
    private readonly namespace;
    private readonly createLazyPromise;
    private readonly defaultBlockingInterval;
    private readonly defaultBlockingTime;
    private readonly defaultRefreshTime;
    private readonly eventBus;
    private readonly serdeTransformerName;
    constructor(settings: LockSerdeTransformerSettings);
    get name(): OneOrMore<string>;
    isApplicable(value: unknown): value is Lock;
    deserialize(serializedValue: ISerializedLock): Lock;
    serialize(deserializedValue: Lock): ISerializedLock;
}
