export declare const PROTOCOL_VERSION: 1; export type CorrelationId = string & { readonly __correlationId: unique symbol; }; export type Capability = "Http" | "Storage" | "Clipboard" | "Navigation"; export type SemanticEvent = { readonly kind: "Event"; readonly name: string; readonly key?: string; readonly value?: string; }; export type BrowserLocation = { readonly origin: string; readonly path: string; readonly query: string; readonly hash: string; }; export type EffectOutcome = { readonly kind: "Success"; readonly status: number; readonly body: unknown; } | { readonly kind: "Failure"; readonly reason: "network" | "aborted" | "invalid-response"; readonly status?: number; } | { readonly kind: "Cancelled"; } | { readonly kind: "OutcomeUnknown"; readonly reason: "timeout-after-dispatch"; }; export type StorageOutcome = { readonly kind: "Success"; readonly value: string | null; } | { readonly kind: "Failure"; readonly reason: "unavailable" | "quota-exceeded"; }; export type ClipboardOutcome = { readonly kind: "Success"; } | { readonly kind: "Failure"; readonly reason: "denied" | "unavailable" | "unknown"; }; export type NavigationOutcome = { readonly kind: "Success"; readonly location: BrowserLocation; } | { readonly kind: "Dispatched"; } | { readonly kind: "Failure"; readonly reason: "unavailable" | "not-same-origin"; }; export type EffectResult = { readonly kind: "HttpResult"; readonly correlationId: CorrelationId; readonly outcome: EffectOutcome; } | { readonly kind: "StorageResult"; readonly correlationId: CorrelationId; readonly outcome: StorageOutcome; } | { readonly kind: "ClipboardResult"; readonly correlationId: CorrelationId; readonly outcome: ClipboardOutcome; } | { readonly kind: "NavigationResult"; readonly correlationId: CorrelationId; readonly outcome: NavigationOutcome; }; export type BrowserToEngineMessage = { readonly kind: "Initialize"; readonly protocolVersion: typeof PROTOCOL_VERSION; readonly capabilities: readonly Capability[]; readonly location: BrowserLocation; } | { readonly kind: "Event"; readonly event: SemanticEvent; } | { readonly kind: "EffectResult"; readonly result: EffectResult; } | { readonly kind: "LocationChanged"; readonly location: BrowserLocation; }; export type ViewPrimitive = string | number | boolean; export type ViewItem = { readonly [field: string]: ViewPrimitive; }; export type ViewValue = ViewPrimitive | readonly ViewItem[]; export type ViewState = { readonly [key: string]: ViewValue; }; export type HttpMethod = "GET" | "PUT" | "POST" | "PATCH" | "DELETE"; export type HttpEffectRequest = { readonly kind: "Http"; readonly correlationId: CorrelationId; readonly method: HttpMethod; readonly url: string; readonly headers?: Readonly>; readonly body?: string; readonly timeoutMs: number; }; export type StorageEffectRequest = { readonly kind: "Storage"; readonly correlationId: CorrelationId; readonly operation: "get"; readonly key: string; } | { readonly kind: "Storage"; readonly correlationId: CorrelationId; readonly operation: "set"; readonly key: string; readonly value: string; } | { readonly kind: "Storage"; readonly correlationId: CorrelationId; readonly operation: "remove"; readonly key: string; }; export type ClipboardEffectRequest = { readonly kind: "Clipboard"; readonly correlationId: CorrelationId; readonly operation: "writeText"; readonly text: string; }; export type NavigationEffectRequest = { readonly kind: "Navigation"; readonly correlationId: CorrelationId; readonly operation: "push"; readonly url: string; } | { readonly kind: "Navigation"; readonly correlationId: CorrelationId; readonly operation: "replace"; readonly url: string; } | { readonly kind: "Navigation"; readonly correlationId: CorrelationId; readonly operation: "back"; } | { readonly kind: "Navigation"; readonly correlationId: CorrelationId; readonly operation: "forward"; }; export type EffectRequest = HttpEffectRequest | StorageEffectRequest | ClipboardEffectRequest | NavigationEffectRequest; export type EngineToBrowserMessage = { readonly view: ViewState; readonly effects: readonly EffectRequest[]; readonly cancellations: readonly CorrelationId[]; }; export interface EngineTransport { start(): Promise; dispatch(message: BrowserToEngineMessage): Promise; } //# sourceMappingURL=protocol.d.ts.map