@sparkletree/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +105 -0
- package/dist/analytics.d.ts +75 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +170 -0
- package/dist/analytics.js.map +1 -0
- package/dist/audio.d.ts +85 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/audio.js +465 -0
- package/dist/audio.js.map +1 -0
- package/dist/client.d.ts +79 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +251 -0
- package/dist/client.js.map +1 -0
- package/dist/context.d.ts +104 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +277 -0
- package/dist/context.js.map +1 -0
- package/dist/fragments.d.ts +108 -0
- package/dist/fragments.d.ts.map +1 -0
- package/dist/fragments.js +223 -0
- package/dist/fragments.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol.d.ts +70 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +97 -0
- package/dist/protocol.js.map +1 -0
- package/dist/publishableKey.d.ts +38 -0
- package/dist/publishableKey.d.ts.map +1 -0
- package/dist/publishableKey.js +69 -0
- package/dist/publishableKey.js.map +1 -0
- package/dist/safeUrl.d.ts +56 -0
- package/dist/safeUrl.d.ts.map +1 -0
- package/dist/safeUrl.js +117 -0
- package/dist/safeUrl.js.map +1 -0
- package/dist/sse.d.ts +51 -0
- package/dist/sse.d.ts.map +1 -0
- package/dist/sse.js +137 -0
- package/dist/sse.js.map +1 -0
- package/dist/state.d.ts +321 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +594 -0
- package/dist/state.js.map +1 -0
- package/dist/text.d.ts +10 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +29 -0
- package/dist/text.js.map +1 -0
- package/dist/theme.d.ts +52 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +88 -0
- package/dist/theme.js.map +1 -0
- package/dist/trust.d.ts +52 -0
- package/dist/trust.d.ts.map +1 -0
- package/dist/trust.js +95 -0
- package/dist/trust.js.map +1 -0
- package/dist/variant.d.ts +117 -0
- package/dist/variant.d.ts.map +1 -0
- package/dist/variant.js +167 -0
- package/dist/variant.js.map +1 -0
- package/dist/wire.d.ts +564 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +133 -0
- package/dist/wire.js.map +1 -0
- package/package.json +55 -0
package/dist/wire.d.ts
ADDED
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code generated from shared/sparkletree/wire/contract.ts. DO NOT EDIT.
|
|
3
|
+
*
|
|
4
|
+
* Regenerate with `pnpm wire:generate` from the repo root.
|
|
5
|
+
* Editing this file by hand puts the Go edge and the Next twin back on
|
|
6
|
+
* separate contracts, which is the exact failure the SDK plan's decision (a)
|
|
7
|
+
* spends a workstream preventing.
|
|
8
|
+
*/
|
|
9
|
+
export declare const PROTOCOL_VERSIONS: readonly [1, 2];
|
|
10
|
+
export type ProtocolVersion = (typeof PROTOCOL_VERSIONS)[number];
|
|
11
|
+
export declare const PROTOCOL_DEFAULT = 1;
|
|
12
|
+
export declare const PROTOCOL_CURRENT = 2;
|
|
13
|
+
export declare const PROTOCOL_PARAM = "st-protocol";
|
|
14
|
+
export declare const PROTOCOL_HEADER = "st-protocol";
|
|
15
|
+
export declare const PROTOCOL_RESPONSE_HEADER = "st-protocol";
|
|
16
|
+
/**
|
|
17
|
+
* Is this a version we implement? Absent/blank resolves to PROTOCOL_DEFAULT
|
|
18
|
+
* before it gets here.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isSupportedProtocol(version: number): version is ProtocolVersion;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve the negotiated version from a header value and a query param.
|
|
23
|
+
* Header wins. Absent, blank, or unparseable resolves to PROTOCOL_DEFAULT —
|
|
24
|
+
* never an error, because every shell stamped into a customer page before
|
|
25
|
+
* negotiation existed sends nothing at all.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveProtocol(header: string | null | undefined, param: string | null | undefined): number;
|
|
28
|
+
export declare const COPY_MODES: readonly ["generate", "replay"];
|
|
29
|
+
export type CopyMode = (typeof COPY_MODES)[number];
|
|
30
|
+
export declare const CONTENT_SOURCES: readonly ["generated", "cached", "static"];
|
|
31
|
+
export type ContentSource = (typeof CONTENT_SOURCES)[number];
|
|
32
|
+
export declare const DEGRADE_REASONS: readonly ["quota", "spend-cap", "upstream", "timeout"];
|
|
33
|
+
export type DegradeReason = (typeof DEGRADE_REASONS)[number];
|
|
34
|
+
export declare const INTENTS: readonly ["signup", "signin", "retain", "upsell", "reassure", "explain", "browse", "convert"];
|
|
35
|
+
export type Intent = (typeof INTENTS)[number];
|
|
36
|
+
export declare const FRAGMENT_KINDS: readonly ["headline", "body", "cta", "label", "empty-state"];
|
|
37
|
+
export type FragmentKind = (typeof FRAGMENT_KINDS)[number];
|
|
38
|
+
export declare const FRAGMENT_WARMTHS: readonly ["cold", "warming", "warm"];
|
|
39
|
+
export type FragmentWarmth = (typeof FRAGMENT_WARMTHS)[number];
|
|
40
|
+
export declare const SDK_PARAM = "sdk";
|
|
41
|
+
export declare const SDK_PARAM_VALUE = "1";
|
|
42
|
+
export declare const VARIANT_PARAM = "variant";
|
|
43
|
+
/**
|
|
44
|
+
* Resolved creative theme: token values plus, for each token, where it came
|
|
45
|
+
* from.
|
|
46
|
+
*/
|
|
47
|
+
export interface ThemePayload {
|
|
48
|
+
/**
|
|
49
|
+
* Token name → CSS color. The SDK theme engine writes these as custom
|
|
50
|
+
* properties.
|
|
51
|
+
*/
|
|
52
|
+
colors: Record<string, string>;
|
|
53
|
+
/**
|
|
54
|
+
* Token name → provenance (campaign, brand, context, default). Drives the
|
|
55
|
+
* Ledger.
|
|
56
|
+
*/
|
|
57
|
+
sources: Record<string, string>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Terminal metadata. Everything a client needs to attribute the impression
|
|
61
|
+
* it is about to report.
|
|
62
|
+
*/
|
|
63
|
+
export interface DoneMeta {
|
|
64
|
+
/**
|
|
65
|
+
* Campaign actually served (may differ from the requested one after
|
|
66
|
+
* surface resolution).
|
|
67
|
+
*/
|
|
68
|
+
campaignId: string;
|
|
69
|
+
/**
|
|
70
|
+
* Variant the ε-greedy resolver picked. Clients MUST pin this on every
|
|
71
|
+
* subsequent call in the page view.
|
|
72
|
+
*/
|
|
73
|
+
variantId: string;
|
|
74
|
+
/** Human label for the variant, for the Ledger and Studio. */
|
|
75
|
+
variantName?: string;
|
|
76
|
+
/**
|
|
77
|
+
* W5. Whether the copy in this stream was generated for this request,
|
|
78
|
+
* replayed from cache, or stored static content. Trust chrome keys off
|
|
79
|
+
* this.
|
|
80
|
+
*/
|
|
81
|
+
contentSource: "generated" | "cached" | "static";
|
|
82
|
+
/**
|
|
83
|
+
* W8. Present only when the server fell back to deterministic static
|
|
84
|
+
* serving. Absent means full service.
|
|
85
|
+
*/
|
|
86
|
+
degraded?: "quota" | "spend-cap" | "upstream" | "timeout";
|
|
87
|
+
/**
|
|
88
|
+
* Context rules that actually changed the output. Empty array means
|
|
89
|
+
* context was read but changed nothing.
|
|
90
|
+
*/
|
|
91
|
+
contextApplied?: string[];
|
|
92
|
+
/** Resolved CTA destination. */
|
|
93
|
+
ctaAction?: string;
|
|
94
|
+
/** CTA behaviour class (link, modal, conversation…). */
|
|
95
|
+
ctaType?: string;
|
|
96
|
+
/** QR/handoff target for physical surfaces. */
|
|
97
|
+
staticHandoffUrl?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Conversational-ad config passthrough. Shape owned by the conversation
|
|
100
|
+
* service.
|
|
101
|
+
*/
|
|
102
|
+
conversation?: unknown;
|
|
103
|
+
/**
|
|
104
|
+
* How the served campaign was chosen: an explicit variant pin, surface
|
|
105
|
+
* resolution, or declared-context resolution. Absent means pinned on older
|
|
106
|
+
* edges.
|
|
107
|
+
*/
|
|
108
|
+
resolvedFrom?: "pinned" | "surface" | "context";
|
|
109
|
+
/**
|
|
110
|
+
* Canonical declared-context hash that participated in resolution. Feeds
|
|
111
|
+
* attribution and the rung-3 promotion report.
|
|
112
|
+
*/
|
|
113
|
+
contextHash?: string;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Developer-declared placement. Untrusted input: every field is
|
|
117
|
+
* length-capped and pattern-scrubbed server-side. Unknown keys are dropped
|
|
118
|
+
* by contract, at both ends.
|
|
119
|
+
*/
|
|
120
|
+
export interface DeclaredContext {
|
|
121
|
+
/** Declared page class, [a-z0-9-]{1,32}. Never a URL or path. */
|
|
122
|
+
page?: string;
|
|
123
|
+
/** Platform intent vocabulary. Values outside the enum are dropped. */
|
|
124
|
+
intent?: "signup" | "signin" | "retain" | "upsell" | "reassure" | "explain" | "browse" | "convert";
|
|
125
|
+
/**
|
|
126
|
+
* Placement descriptor, never a user identifier. ≤32 chars, ≤16 live
|
|
127
|
+
* values per org.
|
|
128
|
+
*/
|
|
129
|
+
audience?: string;
|
|
130
|
+
/**
|
|
131
|
+
* Free text, ≤280 chars. HASHED IN FULL — a distinct notes value is a
|
|
132
|
+
* distinct context and costs a mint. Reaches the prompt delimited as
|
|
133
|
+
* untrusted. Never echoed to any client.
|
|
134
|
+
*/
|
|
135
|
+
notes?: string;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* One resolved fragment field. Provenance rules are identical to copy
|
|
139
|
+
* fields: static copy may never wear the adaptation mark.
|
|
140
|
+
*/
|
|
141
|
+
export interface FragmentField {
|
|
142
|
+
/** Final text, within the server-enforced length budget. */
|
|
143
|
+
text: string;
|
|
144
|
+
/** W5 provenance. Static copy may never wear the mark. */
|
|
145
|
+
source: "generated" | "cached" | "static";
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* One field the caller declares on the mint verb: what kind of copy it is
|
|
149
|
+
* and the developer fallback it must beat.
|
|
150
|
+
*/
|
|
151
|
+
export interface FragmentSchemaField {
|
|
152
|
+
/** Caller-chosen field name. Keys the fragments map in the response. */
|
|
153
|
+
key: string;
|
|
154
|
+
/** Field class. Selects the kind's length-budget floor. */
|
|
155
|
+
kind: "headline" | "body" | "cta" | "label" | "empty-state";
|
|
156
|
+
/**
|
|
157
|
+
* Length budget. Server-recomputed as ceil(max(len(fallback)*1.3, kind
|
|
158
|
+
* floor)); the client-sent value is advisory only.
|
|
159
|
+
*/
|
|
160
|
+
budget: number;
|
|
161
|
+
/**
|
|
162
|
+
* Developer copy. Prompt material that travels ONLY on the mint verb,
|
|
163
|
+
* never on the read path.
|
|
164
|
+
*/
|
|
165
|
+
fallback: string;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Art.50 disclosure for non-SDK renderers. Stripping it is a terms
|
|
169
|
+
* violation; a resolution failure must never silence the label.
|
|
170
|
+
*/
|
|
171
|
+
export interface DisclosurePayload {
|
|
172
|
+
/** Localized Art.50 disclosure label, ready to render. */
|
|
173
|
+
label: string;
|
|
174
|
+
/** BCP-47 tag of the label's language. */
|
|
175
|
+
locale: string;
|
|
176
|
+
/** Resolution status, e.g. attested | fail-safe. */
|
|
177
|
+
status: string;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* GET /embed/v1/fragments — cache-first microcopy for a declared context.
|
|
181
|
+
* NEVER blocks on generation. A cold miss returns an EMPTY map with
|
|
182
|
+
* pending:true; the client owns the fallback.
|
|
183
|
+
*/
|
|
184
|
+
export interface FragmentsResponse {
|
|
185
|
+
/**
|
|
186
|
+
* Keyed by the caller's own field names. Empty on a cold miss — never
|
|
187
|
+
* echoes caller-supplied text.
|
|
188
|
+
*/
|
|
189
|
+
fragments: Record<string, FragmentField>;
|
|
190
|
+
/** Server-computed canonical hash. THE identity. Third leg of the pin key. */
|
|
191
|
+
contextHash: string;
|
|
192
|
+
/**
|
|
193
|
+
* cold = static now | warming = fill in flight | warm = generated for this
|
|
194
|
+
* bucket.
|
|
195
|
+
*/
|
|
196
|
+
warmth: "cold" | "warming" | "warm";
|
|
197
|
+
/** True when the client should POST /mint once. */
|
|
198
|
+
pending?: boolean;
|
|
199
|
+
/** W8 vocabulary, verbatim. */
|
|
200
|
+
degraded?: "quota" | "spend-cap" | "upstream" | "timeout";
|
|
201
|
+
/**
|
|
202
|
+
* Art.50 label + locale, for non-SDK renderers. Present whenever any field
|
|
203
|
+
* is non-static.
|
|
204
|
+
*/
|
|
205
|
+
disclosure?: DisclosurePayload;
|
|
206
|
+
/** ttl, epoch, schemaHash, budget state. */
|
|
207
|
+
meta: unknown;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* POST /embed/v1/fragments/mint — the spend verb. Origin must be registered
|
|
211
|
+
* AND verified for the paying org. Always 202; never blocks a render.
|
|
212
|
+
*/
|
|
213
|
+
export interface FragmentMintRequest {
|
|
214
|
+
/** Paying organization the origin is verified for. */
|
|
215
|
+
organization: string;
|
|
216
|
+
/** The declared context being minted against. */
|
|
217
|
+
context: DeclaredContext;
|
|
218
|
+
/**
|
|
219
|
+
* key, kind, budget, fallback per field. Fallback text is prompt material
|
|
220
|
+
* and travels ONLY here.
|
|
221
|
+
*/
|
|
222
|
+
schema: FragmentSchemaField[];
|
|
223
|
+
}
|
|
224
|
+
/** GET /embed/v1/content — the copy a client paints BEFORE opening a stream. */
|
|
225
|
+
export interface ContentResponse {
|
|
226
|
+
/** Campaign served. */
|
|
227
|
+
campaignId: string;
|
|
228
|
+
/** Variant served. Pin this on the subsequent stream call. */
|
|
229
|
+
variantId: string;
|
|
230
|
+
/** headline / body / cta / image / experienceManifest. */
|
|
231
|
+
content: unknown;
|
|
232
|
+
/** Resolved theme tokens. */
|
|
233
|
+
theme: ThemePayload;
|
|
234
|
+
/** Product records for product-card components. */
|
|
235
|
+
products?: unknown[];
|
|
236
|
+
/** campaignName, goal, layout, source, duration, contentSource. */
|
|
237
|
+
meta: unknown;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* `theme-ready` — First event on a healthy stream. Sent before any copy so
|
|
241
|
+
* the client can paint chrome in brand colors immediately.
|
|
242
|
+
*/
|
|
243
|
+
export interface ThemeReadyPayload {
|
|
244
|
+
/** Token name → CSS color. */
|
|
245
|
+
colors: Record<string, string>;
|
|
246
|
+
/** Token name → provenance. */
|
|
247
|
+
sources: Record<string, string>;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* `cta-style-ready` — Resolved CTA styling, ahead of the CTA text so the
|
|
251
|
+
* button can be sized and colored before it has a label.
|
|
252
|
+
*/
|
|
253
|
+
export interface CtaStyleReadyPayload {
|
|
254
|
+
/**
|
|
255
|
+
* CTA style object (background, foreground, radius, weight). Shape owned
|
|
256
|
+
* by render.ResolveCTAStyle.
|
|
257
|
+
*/
|
|
258
|
+
style: unknown;
|
|
259
|
+
/** Provenance of the CTA color decision. */
|
|
260
|
+
ctaColorSource: string;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* `experience-ready` — Experience layout plus, when present, the full
|
|
264
|
+
* experience manifest.
|
|
265
|
+
*/
|
|
266
|
+
export interface ExperienceReadyPayload {
|
|
267
|
+
/**
|
|
268
|
+
* Layout token. Selects among the 2-3 layouts a copied component
|
|
269
|
+
* pre-declares (plan v1.1 §3.5).
|
|
270
|
+
*/
|
|
271
|
+
layout: string;
|
|
272
|
+
/** Experience manifest passthrough. Shape owned by the experience package. */
|
|
273
|
+
experienceManifest?: unknown;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* `layout-ready` — Layout token alone. Redundant with
|
|
277
|
+
* experience-ready.layout and kept because the shell listens for it; the SDK
|
|
278
|
+
* should prefer experience-ready.
|
|
279
|
+
*/
|
|
280
|
+
export interface LayoutReadyPayload {
|
|
281
|
+
/** Layout token. */
|
|
282
|
+
layout: string;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* `background-ready` — Creative background image. NOT sent when there is no
|
|
286
|
+
* creative image — absence means keep the baked theme wash, it does not mean
|
|
287
|
+
* clear the art layer.
|
|
288
|
+
*/
|
|
289
|
+
export interface BackgroundReadyPayload {
|
|
290
|
+
/** Absolute image URL. */
|
|
291
|
+
bgImage: string;
|
|
292
|
+
}
|
|
293
|
+
/** `sequence-ready` — Multi-frame background sequence (animated creative). */
|
|
294
|
+
export interface SequenceReadyPayload {
|
|
295
|
+
/** Frame image URLs in play order. */
|
|
296
|
+
frames: string[];
|
|
297
|
+
/** Index of the frame to hold as the still hero. */
|
|
298
|
+
heroIndex: number;
|
|
299
|
+
/** Playback rate. */
|
|
300
|
+
fps: number;
|
|
301
|
+
}
|
|
302
|
+
/** `video-ready` — Video creative. */
|
|
303
|
+
export interface VideoReadyPayload {
|
|
304
|
+
/** Absolute video URL. */
|
|
305
|
+
videoUrl: string;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* `greeting-start` — Contextual kicker above the headline. Opens the field
|
|
309
|
+
* and declares how it will arrive.
|
|
310
|
+
*/
|
|
311
|
+
export interface GreetingStartPayload {
|
|
312
|
+
/**
|
|
313
|
+
* generate → live deltas follow; release any copy hold and let them type
|
|
314
|
+
* in. replay → the field lands as ONE block at *-done; keep holding for
|
|
315
|
+
* the composed entrance.
|
|
316
|
+
*/
|
|
317
|
+
mode: "generate" | "replay";
|
|
318
|
+
/**
|
|
319
|
+
* W5. Provenance of the copy about to arrive, per field. `generated` and
|
|
320
|
+
* `cached` may carry the adaptation mark; `static` may NOT. Cached copy
|
|
321
|
+
* WAS generated, for an earlier viewer in the same bucket — calling it
|
|
322
|
+
* authored would be the same lie in the other direction. See decideChrome
|
|
323
|
+
* in sdk/core/src/trust.ts, which is the one implementation of this rule.
|
|
324
|
+
*/
|
|
325
|
+
contentSource: "generated" | "cached" | "static";
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* `greeting-chunk` — Contextual kicker above the headline. Incremental
|
|
329
|
+
* delta.
|
|
330
|
+
*/
|
|
331
|
+
export interface GreetingChunkPayload {
|
|
332
|
+
/**
|
|
333
|
+
* Delta to append. Never the full accumulated value — see splitStreamDelta
|
|
334
|
+
* for the fat-delta split.
|
|
335
|
+
*/
|
|
336
|
+
text: string;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* `greeting-done` — Contextual kicker above the headline. Field closed; text
|
|
340
|
+
* is final.
|
|
341
|
+
*/
|
|
342
|
+
export interface GreetingDonePayload {
|
|
343
|
+
/**
|
|
344
|
+
* The complete, final value of the field. Authoritative: a client that
|
|
345
|
+
* missed chunks can paint this alone.
|
|
346
|
+
*/
|
|
347
|
+
text: string;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* `headline-start` — Primary headline. Opens the field and declares how it
|
|
351
|
+
* will arrive.
|
|
352
|
+
*/
|
|
353
|
+
export interface HeadlineStartPayload {
|
|
354
|
+
/**
|
|
355
|
+
* generate → live deltas follow; release any copy hold and let them type
|
|
356
|
+
* in. replay → the field lands as ONE block at *-done; keep holding for
|
|
357
|
+
* the composed entrance.
|
|
358
|
+
*/
|
|
359
|
+
mode: "generate" | "replay";
|
|
360
|
+
/**
|
|
361
|
+
* W5. Provenance of the copy about to arrive, per field. `generated` and
|
|
362
|
+
* `cached` may carry the adaptation mark; `static` may NOT. Cached copy
|
|
363
|
+
* WAS generated, for an earlier viewer in the same bucket — calling it
|
|
364
|
+
* authored would be the same lie in the other direction. See decideChrome
|
|
365
|
+
* in sdk/core/src/trust.ts, which is the one implementation of this rule.
|
|
366
|
+
*/
|
|
367
|
+
contentSource: "generated" | "cached" | "static";
|
|
368
|
+
}
|
|
369
|
+
/** `headline-chunk` — Primary headline. Incremental delta. */
|
|
370
|
+
export interface HeadlineChunkPayload {
|
|
371
|
+
/**
|
|
372
|
+
* Delta to append. Never the full accumulated value — see splitStreamDelta
|
|
373
|
+
* for the fat-delta split.
|
|
374
|
+
*/
|
|
375
|
+
text: string;
|
|
376
|
+
}
|
|
377
|
+
/** `headline-done` — Primary headline. Field closed; text is final. */
|
|
378
|
+
export interface HeadlineDonePayload {
|
|
379
|
+
/**
|
|
380
|
+
* The complete, final value of the field. Authoritative: a client that
|
|
381
|
+
* missed chunks can paint this alone.
|
|
382
|
+
*/
|
|
383
|
+
text: string;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* `body-start` — Supporting body copy. Opens the field and declares how it
|
|
387
|
+
* will arrive.
|
|
388
|
+
*/
|
|
389
|
+
export interface BodyStartPayload {
|
|
390
|
+
/**
|
|
391
|
+
* generate → live deltas follow; release any copy hold and let them type
|
|
392
|
+
* in. replay → the field lands as ONE block at *-done; keep holding for
|
|
393
|
+
* the composed entrance.
|
|
394
|
+
*/
|
|
395
|
+
mode: "generate" | "replay";
|
|
396
|
+
/**
|
|
397
|
+
* W5. Provenance of the copy about to arrive, per field. `generated` and
|
|
398
|
+
* `cached` may carry the adaptation mark; `static` may NOT. Cached copy
|
|
399
|
+
* WAS generated, for an earlier viewer in the same bucket — calling it
|
|
400
|
+
* authored would be the same lie in the other direction. See decideChrome
|
|
401
|
+
* in sdk/core/src/trust.ts, which is the one implementation of this rule.
|
|
402
|
+
*/
|
|
403
|
+
contentSource: "generated" | "cached" | "static";
|
|
404
|
+
}
|
|
405
|
+
/** `body-chunk` — Supporting body copy. Incremental delta. */
|
|
406
|
+
export interface BodyChunkPayload {
|
|
407
|
+
/**
|
|
408
|
+
* Delta to append. Never the full accumulated value — see splitStreamDelta
|
|
409
|
+
* for the fat-delta split.
|
|
410
|
+
*/
|
|
411
|
+
text: string;
|
|
412
|
+
}
|
|
413
|
+
/** `body-done` — Supporting body copy. Field closed; text is final. */
|
|
414
|
+
export interface BodyDonePayload {
|
|
415
|
+
/**
|
|
416
|
+
* The complete, final value of the field. Authoritative: a client that
|
|
417
|
+
* missed chunks can paint this alone.
|
|
418
|
+
*/
|
|
419
|
+
text: string;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* `cta-start` — Call-to-action label. Opens the field and declares how it
|
|
423
|
+
* will arrive.
|
|
424
|
+
*/
|
|
425
|
+
export interface CtaStartPayload {
|
|
426
|
+
/**
|
|
427
|
+
* generate → live deltas follow; release any copy hold and let them type
|
|
428
|
+
* in. replay → the field lands as ONE block at *-done; keep holding for
|
|
429
|
+
* the composed entrance.
|
|
430
|
+
*/
|
|
431
|
+
mode: "generate" | "replay";
|
|
432
|
+
/**
|
|
433
|
+
* W5. Provenance of the copy about to arrive, per field. `generated` and
|
|
434
|
+
* `cached` may carry the adaptation mark; `static` may NOT. Cached copy
|
|
435
|
+
* WAS generated, for an earlier viewer in the same bucket — calling it
|
|
436
|
+
* authored would be the same lie in the other direction. See decideChrome
|
|
437
|
+
* in sdk/core/src/trust.ts, which is the one implementation of this rule.
|
|
438
|
+
*/
|
|
439
|
+
contentSource: "generated" | "cached" | "static";
|
|
440
|
+
}
|
|
441
|
+
/** `cta-chunk` — Call-to-action label. Incremental delta. */
|
|
442
|
+
export interface CtaChunkPayload {
|
|
443
|
+
/**
|
|
444
|
+
* Delta to append. Never the full accumulated value — see splitStreamDelta
|
|
445
|
+
* for the fat-delta split.
|
|
446
|
+
*/
|
|
447
|
+
text: string;
|
|
448
|
+
}
|
|
449
|
+
/** `cta-done` — Call-to-action label. Field closed; text is final. */
|
|
450
|
+
export interface CtaDonePayload {
|
|
451
|
+
/**
|
|
452
|
+
* The complete, final value of the field. Authoritative: a client that
|
|
453
|
+
* missed chunks can paint this alone.
|
|
454
|
+
*/
|
|
455
|
+
text: string;
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* `cta-ready` — CTA text and style together, terminal for the CTA island.
|
|
459
|
+
* Emitted after cta-done so a client that only listens for one event still
|
|
460
|
+
* gets a complete button.
|
|
461
|
+
*/
|
|
462
|
+
export interface CtaReadyPayload {
|
|
463
|
+
/** Final CTA label. */
|
|
464
|
+
text: string;
|
|
465
|
+
/**
|
|
466
|
+
* CTA destination, when the replay path knows it. The generate path
|
|
467
|
+
* resolves the action from `done.meta.ctaAction` instead, so a client must
|
|
468
|
+
* read both.
|
|
469
|
+
*/
|
|
470
|
+
action?: string;
|
|
471
|
+
/** CTA style object. */
|
|
472
|
+
style: unknown;
|
|
473
|
+
/** Provenance of the CTA color decision. */
|
|
474
|
+
ctaColorSource: string;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* `done` — Terminal success event. Exactly one per stream; a stream that
|
|
478
|
+
* ends without it ended badly.
|
|
479
|
+
*/
|
|
480
|
+
export interface DonePayload {
|
|
481
|
+
/** Attribution and provenance metadata. */
|
|
482
|
+
meta: DoneMeta;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* `error` — Terminal failure. The client keeps whatever it has already
|
|
486
|
+
* painted — an error NEVER blanks copy the reader is mid-sentence on.
|
|
487
|
+
*/
|
|
488
|
+
export interface ErrorPayload {
|
|
489
|
+
/** Human-readable reason. Not a stable machine code; do not branch on it. */
|
|
490
|
+
error: string;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* `protocol-unsupported` — W2b. The client asked for an st-protocol version
|
|
494
|
+
* this build does not implement. Sole event on the stream; the client falls
|
|
495
|
+
* back to its own first paint and does not retry with the same version.
|
|
496
|
+
* (since protocol 2)
|
|
497
|
+
*/
|
|
498
|
+
export interface ProtocolUnsupportedPayload {
|
|
499
|
+
/** The version the client asked for. */
|
|
500
|
+
requested: number;
|
|
501
|
+
/** Versions this build implements, ascending. */
|
|
502
|
+
supported: number[];
|
|
503
|
+
}
|
|
504
|
+
export declare const EVENT_THEME_READY = "theme-ready";
|
|
505
|
+
export declare const EVENT_CTA_STYLE_READY = "cta-style-ready";
|
|
506
|
+
export declare const EVENT_EXPERIENCE_READY = "experience-ready";
|
|
507
|
+
export declare const EVENT_LAYOUT_READY = "layout-ready";
|
|
508
|
+
export declare const EVENT_BACKGROUND_READY = "background-ready";
|
|
509
|
+
export declare const EVENT_SEQUENCE_READY = "sequence-ready";
|
|
510
|
+
export declare const EVENT_VIDEO_READY = "video-ready";
|
|
511
|
+
export declare const EVENT_GREETING_START = "greeting-start";
|
|
512
|
+
export declare const EVENT_GREETING_CHUNK = "greeting-chunk";
|
|
513
|
+
export declare const EVENT_GREETING_DONE = "greeting-done";
|
|
514
|
+
export declare const EVENT_HEADLINE_START = "headline-start";
|
|
515
|
+
export declare const EVENT_HEADLINE_CHUNK = "headline-chunk";
|
|
516
|
+
export declare const EVENT_HEADLINE_DONE = "headline-done";
|
|
517
|
+
export declare const EVENT_BODY_START = "body-start";
|
|
518
|
+
export declare const EVENT_BODY_CHUNK = "body-chunk";
|
|
519
|
+
export declare const EVENT_BODY_DONE = "body-done";
|
|
520
|
+
export declare const EVENT_CTA_START = "cta-start";
|
|
521
|
+
export declare const EVENT_CTA_CHUNK = "cta-chunk";
|
|
522
|
+
export declare const EVENT_CTA_DONE = "cta-done";
|
|
523
|
+
export declare const EVENT_CTA_READY = "cta-ready";
|
|
524
|
+
export declare const EVENT_DONE = "done";
|
|
525
|
+
export declare const EVENT_ERROR = "error";
|
|
526
|
+
export declare const EVENT_PROTOCOL_UNSUPPORTED = "protocol-unsupported";
|
|
527
|
+
/** Every event name in the contract, in declaration order. */
|
|
528
|
+
export declare const WIRE_EVENTS: readonly ["theme-ready", "cta-style-ready", "experience-ready", "layout-ready", "background-ready", "sequence-ready", "video-ready", "greeting-start", "greeting-chunk", "greeting-done", "headline-start", "headline-chunk", "headline-done", "body-start", "body-chunk", "body-done", "cta-start", "cta-chunk", "cta-done", "cta-ready", "done", "error", "protocol-unsupported"];
|
|
529
|
+
export type WireEventName = (typeof WIRE_EVENTS)[number];
|
|
530
|
+
/** Minimum protocol version each event may appear on. */
|
|
531
|
+
export declare const EVENT_SINCE: Record<WireEventName, number>;
|
|
532
|
+
/**
|
|
533
|
+
* Is this an event name the contract knows? An unknown event on the wire is
|
|
534
|
+
* not an error — a newer server may emit events this client predates — but
|
|
535
|
+
* it must be ignored, not guessed at.
|
|
536
|
+
*/
|
|
537
|
+
export declare function isWireEvent(name: string): name is WireEventName;
|
|
538
|
+
/** Discriminated map from event name to its payload type. */
|
|
539
|
+
export interface WireEventPayloads {
|
|
540
|
+
"theme-ready": ThemeReadyPayload;
|
|
541
|
+
"cta-style-ready": CtaStyleReadyPayload;
|
|
542
|
+
"experience-ready": ExperienceReadyPayload;
|
|
543
|
+
"layout-ready": LayoutReadyPayload;
|
|
544
|
+
"background-ready": BackgroundReadyPayload;
|
|
545
|
+
"sequence-ready": SequenceReadyPayload;
|
|
546
|
+
"video-ready": VideoReadyPayload;
|
|
547
|
+
"greeting-start": GreetingStartPayload;
|
|
548
|
+
"greeting-chunk": GreetingChunkPayload;
|
|
549
|
+
"greeting-done": GreetingDonePayload;
|
|
550
|
+
"headline-start": HeadlineStartPayload;
|
|
551
|
+
"headline-chunk": HeadlineChunkPayload;
|
|
552
|
+
"headline-done": HeadlineDonePayload;
|
|
553
|
+
"body-start": BodyStartPayload;
|
|
554
|
+
"body-chunk": BodyChunkPayload;
|
|
555
|
+
"body-done": BodyDonePayload;
|
|
556
|
+
"cta-start": CtaStartPayload;
|
|
557
|
+
"cta-chunk": CtaChunkPayload;
|
|
558
|
+
"cta-done": CtaDonePayload;
|
|
559
|
+
"cta-ready": CtaReadyPayload;
|
|
560
|
+
"done": DonePayload;
|
|
561
|
+
"error": ErrorPayload;
|
|
562
|
+
"protocol-unsupported": ProtocolUnsupportedPayload;
|
|
563
|
+
}
|
|
564
|
+
//# sourceMappingURL=wire.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAIH,eAAO,MAAM,iBAAiB,iBAAkB,CAAC;AACjD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AACjE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,eAAe,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAM3G;AAID,eAAO,MAAM,UAAU,iCAAkC,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACnD,eAAO,MAAM,eAAe,4CAA6C,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,eAAO,MAAM,eAAe,wDAAyD,CAAC;AACtF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,eAAO,MAAM,OAAO,+FAAgG,CAAC;AACrH,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9C,eAAO,MAAM,cAAc,8DAA+D,CAAC;AAC3F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,eAAO,MAAM,gBAAgB,sCAAuC,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,SAAS,QAAQ,CAAC;AAC/B,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,aAAa,YAAY,CAAC;AAIvC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAChD;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnG;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,CAAC;IAC5D;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,4CAA4C;IAC5C,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,OAAO,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,mEAAmE;IACnE,IAAI,EAAE,OAAO,CAAC;CACf;AAID;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B;;;;;;OAMG;IACH,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B;;;;;;OAMG;IACH,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAClD;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B;;;;;;OAMG;IACH,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAClD;AAED,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B;;;;;;OAMG;IACH,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAClD;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAID,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AACjD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,WAAW,UAAU,CAAC;AACnC,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAEjE,8DAA8D;AAC9D,eAAO,MAAM,WAAW,qXAwBd,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,yDAAyD;AACzD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAwBrD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,aAAa,CAE/D;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,iBAAiB,CAAC;IACjC,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,cAAc,EAAE,kBAAkB,CAAC;IACnC,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,aAAa,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,eAAe,EAAE,mBAAmB,CAAC;IACrC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,sBAAsB,EAAE,0BAA0B,CAAC;CACpD"}
|