export type WriterRole = "leader" | "follower"; interface LockManagerLike { request(name: string, options: { mode?: "exclusive" | "shared"; signal?: AbortSignal; }, callback: () => Promise): Promise; } export interface WriterElectionOptions { readonly lockName: string; readonly locks?: LockManagerLike; readonly onMissingLocks?: WriterRole; } export declare class WriterElection { private _role; private readonly listeners; private readonly abort; private releaseLock?; private stopped; constructor(opts: WriterElectionOptions); get role(): WriterRole; onRoleChange(cb: (role: WriterRole) => void): () => void; private setRole; stop(): void; } export {};