import type { CursorUpdate, Lock, SpaceMember } from "@ably/spaces"; export interface MemberOutput { clientId: string; connectionId: string; isConnected: boolean; profileData: Record | null; location: unknown; lastEvent: { name: string; timestamp: string; }; } export interface CursorOutput { clientId: string; connectionId: string; position: { x: number; y: number; }; data: Record | null; } export interface LockOutput { id: string; status: string; member: MemberOutput; timestamp: string; attributes: Record | null; reason: { message?: string; code?: number; statusCode?: number; } | null; } export interface LocationEntry { connectionId: string; location: unknown; } export declare function formatMemberOutput(member: SpaceMember): MemberOutput; export declare function formatCursorOutput(cursor: CursorUpdate): CursorOutput; export declare function formatLockOutput(lock: Lock): LockOutput; /** * Format a SpaceMember as a multi-line labeled block. * Used in members enter, members subscribe, and as nested output in locks. */ export declare function formatMemberBlock(member: SpaceMember, options?: { indent?: string; }): string; /** * Format a SpaceMember event as a multi-line labeled block with action header. * Used in members subscribe and members enter for streaming events. */ export declare function formatMemberEventBlock(member: SpaceMember, action: string): string; /** * Format a CursorUpdate as a multi-line labeled block. */ export declare function formatCursorBlock(cursor: CursorUpdate, options?: { indent?: string; }): string; /** * Format a Lock as a multi-line labeled block. */ export declare function formatLockBlock(lock: Lock, options?: { indent?: string; }): string; /** * Format a location update event as a multi-line labeled block. */ export declare function formatLocationUpdateBlock(update: { member: SpaceMember; currentLocation: unknown; previousLocation: unknown; }): string;