UNPKG

@gitorial/sync

Version:

Universal sync library for real-time tutorial state synchronization between websites and VS Code extensions with built-in relay server orchestration

70 lines 2.07 kB
/** * Client role types for dynamic role switching */ export declare enum ClientRole { UNINITIALIZED = "uninitialized",// Before any session connection CONNECTED = "connected",// Connected but role undecided PASSIVE = "passive",// Connected, pushing state to active client ACTIVE = "active" } /** * Role transfer state tracking */ export declare enum RoleTransferState { IDLE = "idle", REQUESTING = "requesting", TRANSFERRING = "transferring", SYNCHRONIZED = "synchronized" } /** * Role transfer request data */ export interface RoleTransferRequest { requestingClientId: string; targetClientId: string; requestTimestamp: number; reason?: string; } /** * Client role change event data */ export interface RoleChangeEvent { clientId: string; previousRole: ClientRole; newRole: ClientRole; timestamp: number; } /** * Role conflict resolution strategies */ export declare enum ConflictResolution { FIRST_COME_FIRST_SERVED = "first_come_first_served", DENY_BOTH = "deny_both", USER_CHOICE = "user_choice" } /** * Role permissions and capabilities */ export declare class RolePermissions { static canSendTutorialState(role: ClientRole): boolean; static canRequestTutorialState(role: ClientRole): boolean; static canChooseRole(role: ClientRole): boolean; static canOfferControl(role: ClientRole): boolean; static canReleaseControl(role: ClientRole): boolean; static canRequestControl(role: ClientRole): boolean; static canAcceptControlOffer(role: ClientRole): boolean; static canDisconnect(role: ClientRole): boolean; static isConnected(role: ClientRole): boolean; static getValidTransitions(currentRole: ClientRole): ClientRole[]; } /** * Role state machine for enforcing valid transitions */ export declare class RoleStateMachine { private currentRole; getCurrentRole(): ClientRole; canTransitionTo(newRole: ClientRole): boolean; transitionTo(newRole: ClientRole): boolean; reset(): void; } //# sourceMappingURL=roles.d.ts.map