import { Types } from 'ably'; import { EventKey, EventListener, EventMap } from './EventEmitter.js'; import { ProfileData, LockRequest } from '../types.js'; export type PresenceMember = { data: { profileUpdate: { id: string | null; current: ProfileData; }; locationUpdate: { id: string | null; previous: unknown; current: unknown; }; }; extras?: { locks: LockRequest[]; }; } & Omit; export type Subset = { [attr in keyof K]?: K[attr] extends object ? Subset : K[attr]; }; export interface Provider { subscribe>( listenerOrEvents?: K | K[] | EventListener, listener?: EventListener, ); unsubscribe>( listenerOrEvents?: K | K[] | EventListener, listener?: EventListener, ); } export type RealtimeMessage = Omit & { connectionId: string; };