import { VNodeData } from "snabbdom/vnode"; import { Component } from "../purview"; export declare type PNode = PNodeRegular | PNodeText; export interface PNodeRegular { sel: string; data: VNodeData; children: PNode[]; component?: Component; } export interface PNodeText { text: string; } export interface InputEvent { name: string; value: T; } export interface ChangeEvent extends InputEvent { } export interface SubmitEvent { fields: Record; } export interface KeyEvent { name: string; key: string; } export declare type PurviewEvent = InputEvent | ChangeEvent | SubmitEvent | KeyEvent; export declare type EventCallback = (event?: PurviewEvent) => void | Promise; export interface ConnectMessage { type: "connect"; rootIDs: string[]; cssStateID?: string; } export interface EventMessage { type: "event"; rootID: string; componentID: string; eventID: string; event?: PurviewEvent; } export interface SeenEventNamesMessage { type: "seenEventNames"; seenEventNames: string[]; } export interface NextRuleIndexMessage { type: "nextRuleIndex"; nextRuleIndex: number; } export declare type ClientMessage = ConnectMessage | EventMessage | SeenEventNamesMessage | NextRuleIndexMessage; export interface UpdateMessage { type: "update"; componentID: string; pNode: PNodeRegular; newEventNames: string[]; cssUpdates?: { newCSSRules: string[]; nextRuleIndex: number; }; } export declare type ServerMessage = UpdateMessage;