import { type AnyScene, type WirePatch, type WireTree } from '@playfast/reform/internal'; export interface SnapshotMessage { readonly _tag: 'Snapshot'; readonly tree: WireTree; } export interface PatchesMessage { readonly _tag: 'Patches'; readonly patches: ReadonlyArray; } export type ServerMessage = SnapshotMessage | PatchesMessage; export interface InvokeMessage { readonly _tag: 'Invoke'; readonly handle: string; readonly payload: unknown; } export interface RemoteTransport { readonly send: (message: Out) => void; readonly onMessage: (handler: (message: In) => void) => () => void; } export interface ServerBinding { readonly start: () => Promise; readonly dispose: () => Promise; } export interface ServeOptions { readonly scene: AnyScene; readonly transport: RemoteTransport; } export declare const serve: (options: ServeOptions) => ServerBinding; export interface SharedClientHandle { readonly remove: () => void; } export interface SharedServerBinding { readonly addClient: (transport: RemoteTransport) => SharedClientHandle; readonly dispose: () => Promise; } export interface ServeSharedOptions { readonly scene: AnyScene; } export declare const serveShared: (options: ServeSharedOptions) => SharedServerBinding; export { type ClientBinding, connect, type ConnectOptions } from './clientBinding.js'; //# sourceMappingURL=transport.d.ts.map