/**
 * @module SharedLock
 */
import { type IEventBus } from "../../../../event-bus/contracts/_module.js";
import { type IExecutionContext } from "../../../../execution-context/contracts/_module.js";
import { type Use } from "../../../../middleware/contracts/_module.js";
import { type INamespace } from "../../../../namespace/contracts/_module.js";
import { type ISerdeTransformer } from "../../../../serde/contracts/_module.js";
import { type ISharedLockAdapter, type SharedLockAdapterVariants, type SharedLockEventMap } from "../../../../shared-lock/contracts/_module.js";
import { SharedLock, type ISerializedSharedLock } from "../../../../shared-lock/implementations/derivables/shared-lock-factory/shared-lock.js";
import { TimeSpan } from "../../../../time-span/implementations/_module.js";
import { type OneOrMore, type WaitUntil } from "../../../../utilities/_module.js";
/**
 * @internal
 */
export type SharedLockSerdeTransformerSettings = {
    adapter: ISharedLockAdapter;
    originalAdapter: SharedLockAdapterVariants;
    namespace: INamespace;
    defaultRefreshTime: TimeSpan;
    eventBus: IEventBus<SharedLockEventMap>;
    serdeTransformerName: string;
    waitUntil: WaitUntil;
    executionContext: IExecutionContext;
    use: Use;
};
/**
 * @internal
 */
export declare class SharedLockSerdeTransformer implements ISerdeTransformer<SharedLock, ISerializedSharedLock> {
    private readonly adapter;
    private readonly originalAdapter;
    private readonly namespace;
    private readonly defaultRefreshTime;
    private readonly eventBus;
    private readonly serdeTransformerName;
    private readonly waitUntil;
    private readonly executionContext;
    private readonly use;
    constructor(settings: SharedLockSerdeTransformerSettings);
    get name(): OneOrMore<string>;
    isApplicable(value: unknown): value is SharedLock;
    deserialize(serializedValue: ISerializedSharedLock): SharedLock;
    serialize(deserializedValue: SharedLock): ISerializedSharedLock;
}
