import { Types } from 'ably'; import Space from './Space.js'; import type { Lock, LockRequest, SpaceMember } from './types.js'; import type { PresenceMember } from './utilities/types.js'; import EventEmitter, { type EventKey, type EventListener } from './utilities/EventEmitter.js'; export declare class LockAttributes extends Map { toJSON(): { [k: string]: string; }; } interface LockOptions { attributes: LockAttributes; } type LockEventMap = { update: Lock; }; export default class Locks extends EventEmitter { private space; private presenceUpdate; private locks; constructor(space: Space, presenceUpdate: (update: PresenceMember['data'], extras?: any) => Promise); get(id: string): Lock | undefined; getAll(): Lock[]; acquire(id: string, opts?: LockOptions): Promise; release(id: string): Promise; subscribe>(listenerOrEvents?: K | K[] | EventListener, listener?: EventListener): void; unsubscribe>(listenerOrEvents?: K | K[] | EventListener, listener?: EventListener): void; processPresenceMessage(message: Types.PresenceMessage): Promise; processPending(member: SpaceMember, pendingReq: LockRequest): void; updatePresence(member: SpaceMember): Promise; getLock(id: string, connectionId: string): Lock | undefined; setLock(lock: Lock): void; deleteLock(id: string, connectionId: string): boolean | undefined; getLockRequest(id: string, connectionId: string): LockRequest | undefined; getLockRequests(connectionId: string): LockRequest[]; getLockExtras(connectionId: string): PresenceMember['extras']; } export {};