import { UserType, NotificationType } from '../../lib/Api'; export declare enum EventType { HANDSHAKE = "handshake", CONNECTION_WELCOME = "connection-welcome", CONNECTION_ERROR = "connection-error", NOTIFICATION = "notification", NOTIFICATION_EVENT = "event-notification", USER_EVENT = "event-user", DATA_EVENT = "event-data", META_EVENT = "event-meta", COMMENT_EVENT = "event-comment", DASHBOARD_EVENT = "event-dashboard", WIDGET_EVENT = "event-widget", SCRIPT_EVENT = "event-script", TEAM_EVENT = "event-team", WORKFLOW_EVENT = "event-workflow", WORKFLOW_EXECUTION_EVENT = "event-workflow-execution" } export interface BaseSocketPayload { timestamp: number; socketId?: string; event?: EventType; } export interface ConnectionWelcomePayload extends BaseSocketPayload { message: string; serverInfo: { version: string; environment: string; }; user?: UserType; } export interface ConnectionErrorPayload extends BaseSocketPayload { error: { code: string; message: string; details?: any; }; } export interface DataPayload extends BaseSocketPayload { id: string; action: 'add' | 'update' | 'delete' | 'reorder'; payload: Record; before?: string; } export interface CommentPayload extends BaseSocketPayload { id: string; action: 'add' | 'update' | 'delete'; payload: Record; } export interface MetaPayload extends BaseSocketPayload { action: 'source_create' | 'source_update' | 'source_delete' | 'source_meta_sync' | 'table_create' | 'table_update' | 'table_permission_update' | 'table_delete' | 'column_add' | 'column_update' | 'column_delete' | 'view_create' | 'view_update' | 'view_delete' | 'permission_update' | 'filter_create' | 'filter_update' | 'filter_delete' | 'sort_create' | 'sort_update' | 'sort_delete' | 'view_column_update' | 'view_column_refresh' | 'row_color_update' | 'extension_update' | 'extension_create' | 'extension_delete' | 'rls_policy_update'; payload: T; baseId?: string; } export interface UserEventPayload extends BaseSocketPayload { action: 'base_update' | 'base_user_add' | 'base_user_remove' | 'base_user_update' | 'workspace_update' | 'workspace_user_add' | 'workspace_user_remove' | 'workspace_user_update' | 'base_meta_reload'; payload: T; baseId?: string; workspaceId?: string; } export interface NotificationPayload extends BaseSocketPayload { action: 'create'; payload: Partial; } export type SocketEventPayload = ConnectionWelcomePayload | ConnectionErrorPayload | DataPayload | MetaPayload | CommentPayload | NotificationPayload; export type SocketEventPayloadMap = { [EventType.NOTIFICATION_EVENT]: NotificationPayload; [EventType.CONNECTION_WELCOME]: ConnectionWelcomePayload; [EventType.CONNECTION_ERROR]: ConnectionErrorPayload; [EventType.DATA_EVENT]: DataPayload; [EventType.META_EVENT]: MetaPayload; [EventType.USER_EVENT]: UserEventPayload; [EventType.COMMENT_EVENT]: CommentPayload; [key: string]: BaseSocketPayload; }; export type PayloadForEvent = SocketEventPayloadMap[T];