@lumiastream/ui 0.2.8-alpha.8 → 0.2.9
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/README.md +6 -6
- package/dist/LSButton.d.ts +32 -0
- package/dist/LSButton.js +80 -0
- package/dist/LSCheckbox.d.ts +21 -0
- package/dist/LSCheckbox.js +113 -0
- package/dist/LSColorPicker.d.ts +19 -0
- package/dist/LSColorPicker.js +316 -0
- package/dist/LSDatePicker.d.ts +15 -0
- package/dist/LSDatePicker.js +198 -0
- package/dist/LSFontPicker.d.ts +17 -0
- package/dist/LSFontPicker.js +179 -0
- package/dist/LSInput.d.ts +32 -0
- package/dist/LSInput.js +159 -0
- package/dist/LSMultiSelect.d.ts +16 -0
- package/dist/LSMultiSelect.js +274 -0
- package/dist/LSRadio.d.ts +17 -0
- package/dist/LSRadio.js +52 -0
- package/dist/LSSelect.d.ts +12 -0
- package/dist/LSSelect.js +140 -0
- package/dist/LSSliderInput.d.ts +39 -0
- package/dist/LSSliderInput.js +342 -0
- package/dist/LSTextField.d.ts +9 -0
- package/dist/LSTextField.js +63 -0
- package/dist/LSVariableInputField.d.ts +96 -0
- package/dist/LSVariableInputField.js +1402 -0
- package/dist/components.d.ts +22 -0
- package/dist/components.js +2317 -0
- package/dist/index.d.ts +26 -863
- package/dist/index.js +3104 -1393
- package/dist/se-import.d.ts +444 -0
- package/dist/se-import.js +8094 -0
- package/dist/utils/chatMedia.d.ts +106 -0
- package/dist/utils/chatMedia.js +611 -0
- package/dist/utils.d.ts +111 -0
- package/dist/utils.js +830 -0
- package/package.json +73 -6
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ComponentType, ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
type ModuleType = 'alert' | 'emotebox' | 'emotealert' | 'text' | 'image' | 'audio' | 'video' | 'camera' | 'slideshow' | 'shape' | 'svg' | 'colorbox' | 'goal' | 'timer' | 'gradientlight' | 'browsersource' | 'chatbox' | 'credits' | 'eventlist' | 'eventrotate' | 'hfx' | 'hfxalert' | 'clip' | 'youtube' | 'spinwheel' | 'raffle' | 'viewerqueue' | 'loyaltyleaderboard' | 'viewerprofiles' | 'achievements' | 'poll' | 'tournaments' | 'spotify' | 'nowplaying' | 'youtubemusic' | 'brbscreen' | 'vlc' | 'tts' | 'livecaption' | 'custom' | 'tipjar' | 'hypetrain' | 'streamboss' | 'songrequest' | 'group';
|
|
5
|
+
type OverlayLayerType = 'layer' | 'group';
|
|
6
|
+
type OverlayLayerBounds = {
|
|
7
|
+
height: number;
|
|
8
|
+
width: number;
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
scale: [number, number];
|
|
12
|
+
opacity?: number;
|
|
13
|
+
rotate?: number;
|
|
14
|
+
zIndex?: number;
|
|
15
|
+
matrix?: string;
|
|
16
|
+
clipPath?: string;
|
|
17
|
+
autoWidth?: boolean;
|
|
18
|
+
autoHeight?: boolean;
|
|
19
|
+
};
|
|
20
|
+
type OverlayLayerState = {
|
|
21
|
+
id: string;
|
|
22
|
+
group?: string | null;
|
|
23
|
+
type?: OverlayLayerType;
|
|
24
|
+
state: {
|
|
25
|
+
visible?: boolean;
|
|
26
|
+
locked?: boolean;
|
|
27
|
+
expanded?: boolean;
|
|
28
|
+
};
|
|
29
|
+
bounds: OverlayLayerBounds;
|
|
30
|
+
};
|
|
31
|
+
type OverlayModuleAlertState = {
|
|
32
|
+
events?: Record<string, unknown>;
|
|
33
|
+
[key: string]: unknown;
|
|
34
|
+
};
|
|
35
|
+
type OverlayModuleState = {
|
|
36
|
+
id?: string;
|
|
37
|
+
loaded?: boolean;
|
|
38
|
+
version?: number;
|
|
39
|
+
settings?: {
|
|
40
|
+
title?: string | null;
|
|
41
|
+
type?: ModuleType;
|
|
42
|
+
locked?: boolean;
|
|
43
|
+
};
|
|
44
|
+
lights?: unknown[];
|
|
45
|
+
css?: Record<string, string | number>;
|
|
46
|
+
content?: Record<string, unknown>;
|
|
47
|
+
variables?: Record<string, unknown>;
|
|
48
|
+
events?: Record<string, unknown>;
|
|
49
|
+
alert?: OverlayModuleAlertState;
|
|
50
|
+
};
|
|
51
|
+
type OverlaySettings = {
|
|
52
|
+
layers: OverlayLayerState[];
|
|
53
|
+
metadata: {
|
|
54
|
+
width: number;
|
|
55
|
+
height: number;
|
|
56
|
+
};
|
|
57
|
+
modules: Record<string, OverlayModuleState>;
|
|
58
|
+
};
|
|
59
|
+
type OverlayState = {
|
|
60
|
+
uuid: string;
|
|
61
|
+
listen_id: string;
|
|
62
|
+
name: string;
|
|
63
|
+
description?: string;
|
|
64
|
+
settings: OverlaySettings;
|
|
65
|
+
metadata?: {
|
|
66
|
+
width: number | null;
|
|
67
|
+
height: number | null;
|
|
68
|
+
} | null;
|
|
69
|
+
layers_count?: number | null;
|
|
70
|
+
hasFullSettings?: boolean;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
interface SEBootstrapResponse {
|
|
74
|
+
overlay: SEOverlay;
|
|
75
|
+
session?: unknown;
|
|
76
|
+
tipping?: unknown;
|
|
77
|
+
channel?: unknown;
|
|
78
|
+
passport?: unknown;
|
|
79
|
+
}
|
|
80
|
+
interface SEOverlay {
|
|
81
|
+
_id: string;
|
|
82
|
+
channel?: string;
|
|
83
|
+
type?: string;
|
|
84
|
+
name?: string;
|
|
85
|
+
preview?: string;
|
|
86
|
+
settings: {
|
|
87
|
+
width: number;
|
|
88
|
+
height: number;
|
|
89
|
+
name?: string;
|
|
90
|
+
};
|
|
91
|
+
widgets: SEWidget[];
|
|
92
|
+
createdAt?: string;
|
|
93
|
+
updatedAt?: string;
|
|
94
|
+
}
|
|
95
|
+
interface SEWidget {
|
|
96
|
+
id: number | string;
|
|
97
|
+
group?: string | null;
|
|
98
|
+
version?: number | string | null;
|
|
99
|
+
type: string;
|
|
100
|
+
name?: string | null;
|
|
101
|
+
visible?: boolean;
|
|
102
|
+
locked?: boolean;
|
|
103
|
+
listener?: string | null;
|
|
104
|
+
listeners?: Record<string, boolean> | string[] | null;
|
|
105
|
+
provider?: string;
|
|
106
|
+
css: SECss;
|
|
107
|
+
text?: SEText;
|
|
108
|
+
image?: SEImage;
|
|
109
|
+
video?: SEVideo;
|
|
110
|
+
audio?: SEAudio;
|
|
111
|
+
variables?: Record<string, unknown>;
|
|
112
|
+
}
|
|
113
|
+
interface SECss {
|
|
114
|
+
'z-index'?: number;
|
|
115
|
+
width: string | number;
|
|
116
|
+
height: string | number;
|
|
117
|
+
opacity?: number;
|
|
118
|
+
top?: string | number;
|
|
119
|
+
left?: string | number;
|
|
120
|
+
transform?: string;
|
|
121
|
+
}
|
|
122
|
+
interface SEText {
|
|
123
|
+
type?: string;
|
|
124
|
+
value?: string | null;
|
|
125
|
+
enableShadow?: boolean;
|
|
126
|
+
scrolling?: {
|
|
127
|
+
direction?: string;
|
|
128
|
+
speed?: number;
|
|
129
|
+
enabled?: boolean;
|
|
130
|
+
};
|
|
131
|
+
css?: Record<string, unknown>;
|
|
132
|
+
}
|
|
133
|
+
interface SEImage {
|
|
134
|
+
type?: string;
|
|
135
|
+
src?: string;
|
|
136
|
+
css?: Record<string, unknown>;
|
|
137
|
+
}
|
|
138
|
+
interface SEVideo {
|
|
139
|
+
type?: string;
|
|
140
|
+
src?: string;
|
|
141
|
+
volume?: number;
|
|
142
|
+
css?: Record<string, unknown>;
|
|
143
|
+
}
|
|
144
|
+
interface SEAudio {
|
|
145
|
+
src?: string;
|
|
146
|
+
volume?: number;
|
|
147
|
+
}
|
|
148
|
+
interface ImportCoverage {
|
|
149
|
+
totalWidgets: number;
|
|
150
|
+
mappings: Array<{
|
|
151
|
+
seType: string;
|
|
152
|
+
lumiaType: string;
|
|
153
|
+
status: 'direct' | 'partial' | 'template' | 'placeholder';
|
|
154
|
+
count: number;
|
|
155
|
+
}>;
|
|
156
|
+
notes: string[];
|
|
157
|
+
}
|
|
158
|
+
interface ReviewItem {
|
|
159
|
+
moduleId: string;
|
|
160
|
+
seWidget: SEWidget;
|
|
161
|
+
status: 'placeholder' | 'template';
|
|
162
|
+
reason: string;
|
|
163
|
+
flaggedOff?: boolean;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/** Distinct SE CDN URLs referenced anywhere inside the overlay's settings. */
|
|
167
|
+
declare function findSEAssetURLs(overlay: OverlayState): string[];
|
|
168
|
+
/** Return a new overlay with every `oldUrl → newUrl` replacement applied. */
|
|
169
|
+
declare function rewriteAssetURLs(overlay: OverlayState, mapping: Record<string, string>): OverlayState;
|
|
170
|
+
interface AssetMirrorProgress {
|
|
171
|
+
url: string;
|
|
172
|
+
state: 'pending' | 'fetching' | 'uploading' | 'done' | 'failed';
|
|
173
|
+
newUrl?: string;
|
|
174
|
+
error?: string;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Mirror a single SE asset to Lumia storage via the existing `/overlays/assets`
|
|
178
|
+
* upload endpoint. Returns the new Lumia URL on success.
|
|
179
|
+
*
|
|
180
|
+
* The host call site is responsible for retries and progress reporting; this
|
|
181
|
+
* function is intentionally single-shot. Pass `signal` (AbortSignal) to abort
|
|
182
|
+
* the source-side `fetch` when the modal closes mid-mirror — the upload itself
|
|
183
|
+
* is consumer-defined and the caller decides whether/how to short-circuit it.
|
|
184
|
+
*
|
|
185
|
+
* Bails out with a typed error if the SE server advertises a Content-Length
|
|
186
|
+
* over MAX_MIRROR_ASSET_BYTES (cheap pre-check) or if the downloaded blob
|
|
187
|
+
* exceeds the same cap (covers chunked responses where Content-Length is
|
|
188
|
+
* absent or lying).
|
|
189
|
+
*/
|
|
190
|
+
declare function mirrorOneAsset(url: string, upload: (file: File) => Promise<{
|
|
191
|
+
asset: {
|
|
192
|
+
url: string;
|
|
193
|
+
};
|
|
194
|
+
} | {
|
|
195
|
+
url: string;
|
|
196
|
+
} | unknown>, signal?: AbortSignal): Promise<string>;
|
|
197
|
+
declare function filenameFromURL(url: string): string;
|
|
198
|
+
|
|
199
|
+
interface TransplantedUnit {
|
|
200
|
+
layer: OverlayLayerState;
|
|
201
|
+
module: OverlayModuleState;
|
|
202
|
+
extras?: Array<{
|
|
203
|
+
layer: OverlayLayerState;
|
|
204
|
+
module: OverlayModuleState;
|
|
205
|
+
}>;
|
|
206
|
+
}
|
|
207
|
+
declare function transplantLayer(source: OverlayState, sourceLayerId: string): TransplantedUnit | null;
|
|
208
|
+
declare function listTransplantableLayers(source: OverlayState): Array<{
|
|
209
|
+
id: string;
|
|
210
|
+
label: string;
|
|
211
|
+
type: string;
|
|
212
|
+
}>;
|
|
213
|
+
|
|
214
|
+
declare const SE_WIDGET_TO_MARKETPLACE_CANDIDATES: Record<string, number[]>;
|
|
215
|
+
declare function getMarketplaceCandidates(seWidgetType: string): number[];
|
|
216
|
+
declare function hasMarketplaceCandidates(seWidgetType: string): boolean;
|
|
217
|
+
|
|
218
|
+
declare function isWidgetFlaggedOff(_seType: string): boolean;
|
|
219
|
+
declare const FLAG_OFF_REASONS: Record<string, string>;
|
|
220
|
+
|
|
221
|
+
interface SEAccountClaims {
|
|
222
|
+
channel: string;
|
|
223
|
+
user: string;
|
|
224
|
+
authToken: string;
|
|
225
|
+
provider: string;
|
|
226
|
+
provider_id: string;
|
|
227
|
+
role: string;
|
|
228
|
+
exp: number;
|
|
229
|
+
jti: string;
|
|
230
|
+
channel_id?: string;
|
|
231
|
+
user_id?: string;
|
|
232
|
+
}
|
|
233
|
+
type SEAuthErrorCode = 'invalid-jwt' | 'expired' | 'unauthorized' | 'forbidden';
|
|
234
|
+
type SEAuthMode = 'apikey-authToken' | 'apikey-jwt' | 'bearer-jwt';
|
|
235
|
+
declare class SEAuthError extends Error {
|
|
236
|
+
code: SEAuthErrorCode;
|
|
237
|
+
constructor(code: SEAuthErrorCode, message: string);
|
|
238
|
+
}
|
|
239
|
+
declare function decodeJwtPayload(jwt: string): SEAccountClaims;
|
|
240
|
+
declare class SEClient {
|
|
241
|
+
private readonly claims;
|
|
242
|
+
private readonly jwt;
|
|
243
|
+
authMode: SEAuthMode;
|
|
244
|
+
constructor(claims: SEAccountClaims, jwt: string, authMode?: SEAuthMode);
|
|
245
|
+
static fromJwt(jwt: string, authMode?: SEAuthMode): SEClient;
|
|
246
|
+
withAuthMode(mode: SEAuthMode): SEClient;
|
|
247
|
+
private authHeader;
|
|
248
|
+
get channelId(): string;
|
|
249
|
+
get provider(): string;
|
|
250
|
+
get providerId(): string;
|
|
251
|
+
get userId(): string;
|
|
252
|
+
get jti(): string;
|
|
253
|
+
get expiresAt(): Date;
|
|
254
|
+
provenance(): {
|
|
255
|
+
jti: string;
|
|
256
|
+
channelId: string;
|
|
257
|
+
provider: string;
|
|
258
|
+
importedAt: string;
|
|
259
|
+
};
|
|
260
|
+
get<T>(path: string): Promise<T>;
|
|
261
|
+
}
|
|
262
|
+
interface SEChannelSummary {
|
|
263
|
+
_id: string;
|
|
264
|
+
provider: string;
|
|
265
|
+
providerId: string;
|
|
266
|
+
username: string;
|
|
267
|
+
alias?: string;
|
|
268
|
+
displayName?: string;
|
|
269
|
+
avatar?: string;
|
|
270
|
+
role?: string;
|
|
271
|
+
authorized?: boolean;
|
|
272
|
+
inactive?: boolean;
|
|
273
|
+
isPartner?: boolean;
|
|
274
|
+
broadcasterType?: string;
|
|
275
|
+
}
|
|
276
|
+
interface SEUsersCurrentResponse {
|
|
277
|
+
_id: string;
|
|
278
|
+
suspended?: boolean;
|
|
279
|
+
channels: SEChannelSummary[];
|
|
280
|
+
}
|
|
281
|
+
declare function fetchUsableChannels(client: SEClient): Promise<SEChannelSummary[]>;
|
|
282
|
+
interface SEOverlaySummary {
|
|
283
|
+
_id: string;
|
|
284
|
+
name?: string;
|
|
285
|
+
type?: string;
|
|
286
|
+
preview?: string;
|
|
287
|
+
favorite?: boolean;
|
|
288
|
+
createdAt?: string;
|
|
289
|
+
updatedAt?: string;
|
|
290
|
+
settings?: {
|
|
291
|
+
width?: number;
|
|
292
|
+
height?: number;
|
|
293
|
+
name?: string;
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
declare function fetchSEOverlays(client: SEClient, count?: number): Promise<SEOverlaySummary[]>;
|
|
297
|
+
declare function fetchSEFiltersRaw(client: SEClient): Promise<unknown>;
|
|
298
|
+
interface SEAuthProbeResult {
|
|
299
|
+
endpoint: string;
|
|
300
|
+
mode: SEAuthMode;
|
|
301
|
+
status: number;
|
|
302
|
+
ok: boolean;
|
|
303
|
+
errorMessage?: string;
|
|
304
|
+
}
|
|
305
|
+
interface SEAuthDiagnostic {
|
|
306
|
+
jwtPreview: string;
|
|
307
|
+
channelId: string;
|
|
308
|
+
results: SEAuthProbeResult[];
|
|
309
|
+
}
|
|
310
|
+
declare function diagnoseSEAuth(jwt: string): Promise<SEAuthDiagnostic>;
|
|
311
|
+
|
|
312
|
+
interface SEExistingAsset {
|
|
313
|
+
file_name?: string;
|
|
314
|
+
name?: string;
|
|
315
|
+
url: string;
|
|
316
|
+
}
|
|
317
|
+
interface SECustomEmbedProps {
|
|
318
|
+
codeId: string;
|
|
319
|
+
html: string;
|
|
320
|
+
css: string;
|
|
321
|
+
js: string;
|
|
322
|
+
data: unknown;
|
|
323
|
+
}
|
|
324
|
+
interface SEUploadAssetResult {
|
|
325
|
+
url: string;
|
|
326
|
+
file_name?: string;
|
|
327
|
+
name?: string;
|
|
328
|
+
}
|
|
329
|
+
interface SESaveOverlayBody {
|
|
330
|
+
name: string;
|
|
331
|
+
description?: string;
|
|
332
|
+
image?: string;
|
|
333
|
+
images?: string[];
|
|
334
|
+
settings: OverlayState['settings'];
|
|
335
|
+
}
|
|
336
|
+
interface SEImportBindings {
|
|
337
|
+
fetchMarketplaceOverlay: (id: number) => Promise<OverlayState>;
|
|
338
|
+
generateAICustomCode: (prompt: string) => Promise<AIGeneratedCustomOverlay>;
|
|
339
|
+
uploadAsset: (file: File) => Promise<SEUploadAssetResult>;
|
|
340
|
+
existingAssets: SEExistingAsset[];
|
|
341
|
+
saveOverlay: (body: SESaveOverlayBody) => Promise<{
|
|
342
|
+
uuid: string;
|
|
343
|
+
}>;
|
|
344
|
+
onComplete: (result: {
|
|
345
|
+
overlayId: string;
|
|
346
|
+
}) => void;
|
|
347
|
+
onOverlayImported?: (result: {
|
|
348
|
+
overlayId: string;
|
|
349
|
+
sourceSEOverlayId?: string;
|
|
350
|
+
sourceSEOverlayName?: string;
|
|
351
|
+
width?: number;
|
|
352
|
+
height?: number;
|
|
353
|
+
}) => void;
|
|
354
|
+
onClose: () => void;
|
|
355
|
+
notify: {
|
|
356
|
+
success: (msg: string) => void;
|
|
357
|
+
error: (msg: string) => void;
|
|
358
|
+
warning: (msg: string) => void;
|
|
359
|
+
};
|
|
360
|
+
CustomEmbed?: ComponentType<SECustomEmbedProps>;
|
|
361
|
+
t?: (key: string) => string | undefined;
|
|
362
|
+
onAuthError?: (err: SEAuthError) => void;
|
|
363
|
+
onOpenFullImport?: () => void;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
interface SEImportWizardProps {
|
|
367
|
+
bindings: SEImportBindings;
|
|
368
|
+
initialUrl?: string;
|
|
369
|
+
initialStep?: "mode" | "url" | "connect";
|
|
370
|
+
confirmActionLabel?: string;
|
|
371
|
+
importingActionLabel?: string;
|
|
372
|
+
initialJwt?: string;
|
|
373
|
+
initialOverlayIds?: string[];
|
|
374
|
+
initialOverlayList?: SEOverlaySummary[];
|
|
375
|
+
}
|
|
376
|
+
declare function SEImportWizard({ bindings, initialUrl, initialStep, confirmActionLabel, importingActionLabel, initialJwt, initialOverlayIds, initialOverlayList, }: SEImportWizardProps): react_jsx_runtime.JSX.Element;
|
|
377
|
+
|
|
378
|
+
interface MarketplacePickerProps {
|
|
379
|
+
seWidgetType: string;
|
|
380
|
+
fetchMarketplaceOverlay: SEImportBindings['fetchMarketplaceOverlay'];
|
|
381
|
+
CustomEmbed?: SEImportBindings['CustomEmbed'];
|
|
382
|
+
onPick: (transplant: {
|
|
383
|
+
layer: OverlayLayerState;
|
|
384
|
+
module: OverlayModuleState;
|
|
385
|
+
}) => void;
|
|
386
|
+
onCancel: () => void;
|
|
387
|
+
}
|
|
388
|
+
declare function MarketplacePicker({ seWidgetType, fetchMarketplaceOverlay, CustomEmbed, onPick, onCancel }: MarketplacePickerProps): react_jsx_runtime.JSX.Element;
|
|
389
|
+
|
|
390
|
+
declare const streamElementsCopyJwt: string;
|
|
391
|
+
declare const JWT_DASHBOARD_URL = "https://streamelements.com/dashboard/account/channels";
|
|
392
|
+
interface JwtInstructionStep {
|
|
393
|
+
content: ReactNode;
|
|
394
|
+
}
|
|
395
|
+
declare function getJwtInstructionSteps({ pasteHint }?: {
|
|
396
|
+
pasteHint?: string;
|
|
397
|
+
}): JwtInstructionStep[];
|
|
398
|
+
|
|
399
|
+
interface ImportResult {
|
|
400
|
+
overlay: OverlayState;
|
|
401
|
+
coverage: ImportCoverage;
|
|
402
|
+
reviewItems: ReviewItem[];
|
|
403
|
+
}
|
|
404
|
+
declare function extractSEOverlayId(input: string): string | null;
|
|
405
|
+
declare function extractSEPreviewParts(input: string): {
|
|
406
|
+
overlayId: string;
|
|
407
|
+
apikey: string | null;
|
|
408
|
+
} | null;
|
|
409
|
+
declare function buildBootstrapUrl(overlayId: string): string;
|
|
410
|
+
declare function fetchSEBootstrap({ overlayId, apikey, }: {
|
|
411
|
+
overlayId: string;
|
|
412
|
+
apikey: string | null;
|
|
413
|
+
}): Promise<SEBootstrapResponse>;
|
|
414
|
+
declare function isSEBootstrap(value: unknown): value is SEBootstrapResponse;
|
|
415
|
+
declare function importSEBootstrap(bootstrap: SEBootstrapResponse): ImportResult;
|
|
416
|
+
interface AIGeneratedCustomOverlay {
|
|
417
|
+
codeId?: string;
|
|
418
|
+
html?: string;
|
|
419
|
+
css?: string;
|
|
420
|
+
js?: string;
|
|
421
|
+
data?: unknown;
|
|
422
|
+
configs?: unknown;
|
|
423
|
+
}
|
|
424
|
+
declare function applyReviewAction(result: ImportResult, moduleId: string, action: "keep" | "skip" | "ai" | "marketplace", payload?: AIGeneratedCustomOverlay | {
|
|
425
|
+
layer: OverlayLayerState;
|
|
426
|
+
module: OverlayModuleState;
|
|
427
|
+
extras?: Array<{
|
|
428
|
+
layer: OverlayLayerState;
|
|
429
|
+
module: OverlayModuleState;
|
|
430
|
+
}>;
|
|
431
|
+
}): ImportResult;
|
|
432
|
+
declare function getAILandingBounds(widget: SEWidget, canvas?: {
|
|
433
|
+
width: number;
|
|
434
|
+
height: number;
|
|
435
|
+
}): {
|
|
436
|
+
width: number;
|
|
437
|
+
height: number;
|
|
438
|
+
};
|
|
439
|
+
declare function buildAIPromptForSEWidget(widget: SEWidget, canvas?: {
|
|
440
|
+
width: number;
|
|
441
|
+
height: number;
|
|
442
|
+
}): string;
|
|
443
|
+
|
|
444
|
+
export { type AIGeneratedCustomOverlay, type AssetMirrorProgress, FLAG_OFF_REASONS, type ImportCoverage, type ImportResult, JWT_DASHBOARD_URL, type JwtInstructionStep, MarketplacePicker, type MarketplacePickerProps, type ModuleType, type OverlayLayerBounds, type OverlayLayerState, type OverlayLayerType, type OverlayModuleAlertState, type OverlayModuleState, type OverlaySettings, type OverlayState, type ReviewItem, type SEAccountClaims, type SEAuthDiagnostic, SEAuthError, type SEAuthErrorCode, type SEAuthMode, type SEAuthProbeResult, type SEBootstrapResponse, type SEChannelSummary, SEClient, type SECustomEmbedProps, type SEExistingAsset, type SEImportBindings, SEImportWizard, type SEImportWizardProps, type SEOverlaySummary, type SESaveOverlayBody, type SEUploadAssetResult, type SEUsersCurrentResponse, type SEWidget, SE_WIDGET_TO_MARKETPLACE_CANDIDATES, type TransplantedUnit, applyReviewAction, buildAIPromptForSEWidget, buildBootstrapUrl, decodeJwtPayload, diagnoseSEAuth, extractSEOverlayId, extractSEPreviewParts, fetchSEBootstrap, fetchSEFiltersRaw, fetchSEOverlays, fetchUsableChannels, filenameFromURL, findSEAssetURLs, getAILandingBounds, getJwtInstructionSteps, getMarketplaceCandidates, hasMarketplaceCandidates, importSEBootstrap, isSEBootstrap, isWidgetFlaggedOff, listTransplantableLayers, mirrorOneAsset, rewriteAssetURLs, streamElementsCopyJwt, transplantLayer };
|