@beworke/pixel 0.1.0-rc.1

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.
Files changed (123) hide show
  1. package/CHANGELOG.md +194 -0
  2. package/README.md +163 -0
  3. package/RELEASE_CANDIDATE.md +256 -0
  4. package/dist/PixelLogger-B21lEjep.d.mts +8 -0
  5. package/dist/PixelLogger-B21lEjep.d.ts +8 -0
  6. package/dist/StorageFactory-BhpbB6Jj.d.mts +8 -0
  7. package/dist/StorageFactory-CAkJJqVD.d.ts +8 -0
  8. package/dist/config/index.cjs.js +3 -0
  9. package/dist/config/index.cjs.js.map +1 -0
  10. package/dist/config/index.d.mts +19 -0
  11. package/dist/config/index.d.ts +19 -0
  12. package/dist/config/index.esm.js +3 -0
  13. package/dist/config/index.esm.js.map +1 -0
  14. package/dist/events/index.cjs.js +3 -0
  15. package/dist/events/index.cjs.js.map +1 -0
  16. package/dist/events/index.d.mts +1 -0
  17. package/dist/events/index.d.ts +1 -0
  18. package/dist/events/index.esm.js +3 -0
  19. package/dist/events/index.esm.js.map +1 -0
  20. package/dist/examples/html-script/README.md +71 -0
  21. package/dist/examples/html-script/RELEASE_CANDIDATE.md +121 -0
  22. package/dist/examples/html-script/add-payment-info/README.md +46 -0
  23. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-autocomplete.html +494 -0
  24. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-disabled.html +478 -0
  25. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-fields.html +486 -0
  26. package/dist/examples/html-script/add-payment-info/example-add-payment-info-data-track.html +479 -0
  27. package/dist/examples/html-script/add-payment-info/example-add-payment-info-dedupe.html +492 -0
  28. package/dist/examples/html-script/add-payment-info/example-add-payment-info-manual.html +495 -0
  29. package/dist/examples/html-script/add-payment-info/example-add-payment-info-rules-card.html +469 -0
  30. package/dist/examples/html-script/add-payment-info/example-add-payment-info-security.html +489 -0
  31. package/dist/examples/html-script/add-to-cart/README.md +36 -0
  32. package/dist/examples/html-script/add-to-cart/example-add-to-cart-attribute.html +517 -0
  33. package/dist/examples/html-script/add-to-cart/example-add-to-cart-auto.html +512 -0
  34. package/dist/examples/html-script/add-to-cart/example-add-to-cart-click.html +519 -0
  35. package/dist/examples/html-script/add-to-cart/example-add-to-cart-dedupe.html +514 -0
  36. package/dist/examples/html-script/add-to-cart/example-add-to-cart-manual.html +517 -0
  37. package/dist/examples/html-script/add-to-cart/example-add-to-cart-order-bump.html +527 -0
  38. package/dist/examples/html-script/add-to-cart/example-add-to-cart-text.html +524 -0
  39. package/dist/examples/html-script/example-basic.html +350 -0
  40. package/dist/examples/html-script/example-behavior.html +435 -0
  41. package/dist/examples/html-script/example-conversion.html +479 -0
  42. package/dist/examples/html-script/example-integration.html +709 -0
  43. package/dist/examples/html-script/example-transport.html +748 -0
  44. package/dist/examples/html-script/initiate-checkout/README.md +38 -0
  45. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-attribute.html +485 -0
  46. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-auto.html +491 -0
  47. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-click.html +493 -0
  48. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-manual.html +494 -0
  49. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-snapshot.html +497 -0
  50. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-submit.html +502 -0
  51. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-text.html +496 -0
  52. package/dist/examples/html-script/lead/README.md +25 -0
  53. package/dist/examples/html-script/lead/example-lead-trigger-attribute.html +594 -0
  54. package/dist/examples/html-script/lead/example-lead-trigger-auto.html +431 -0
  55. package/dist/examples/html-script/lead/example-lead-trigger-click.html +587 -0
  56. package/dist/examples/html-script/release-candidate.html +726 -0
  57. package/dist/examples/html-script/remove-from-cart/README.md +36 -0
  58. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-attribute.html +532 -0
  59. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-css.html +524 -0
  60. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-dedupe.html +540 -0
  61. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-manual.html +533 -0
  62. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-multi.html +557 -0
  63. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-state.html +539 -0
  64. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-text.html +524 -0
  65. package/dist/examples/html-script/search/README.md +41 -0
  66. package/dist/examples/html-script/search/example-search-attribute.html +454 -0
  67. package/dist/examples/html-script/search/example-search-button-sync.html +455 -0
  68. package/dist/examples/html-script/search/example-search-dedupe.html +466 -0
  69. package/dist/examples/html-script/search/example-search-input.html +456 -0
  70. package/dist/examples/html-script/search/example-search-manual.html +473 -0
  71. package/dist/examples/html-script/search/example-search-submit.html +450 -0
  72. package/dist/examples/html-script/search/example-search-text.html +441 -0
  73. package/dist/examples/html-script/view-content/README.md +48 -0
  74. package/dist/examples/html-script/view-content/example-view-content-attribute.html +488 -0
  75. package/dist/examples/html-script/view-content/example-view-content-css.html +467 -0
  76. package/dist/examples/html-script/view-content/example-view-content-dedupe.html +485 -0
  77. package/dist/examples/html-script/view-content/example-view-content-empty.html +469 -0
  78. package/dist/examples/html-script/view-content/example-view-content-manual.html +496 -0
  79. package/dist/examples/html-script/view-content/example-view-content-product-card.html +478 -0
  80. package/dist/examples/html-script/view-content/example-view-content-text.html +473 -0
  81. package/dist/examples/release-candidate/README.md +14 -0
  82. package/dist/examples/v2/README.md +33 -0
  83. package/dist/index-DUfFzniE.d.mts +274 -0
  84. package/dist/index-DUfFzniE.d.ts +274 -0
  85. package/dist/index.cjs.js +3 -0
  86. package/dist/index.cjs.js.map +1 -0
  87. package/dist/index.d.mts +364 -0
  88. package/dist/index.d.ts +364 -0
  89. package/dist/index.esm.js +3 -0
  90. package/dist/index.esm.js.map +1 -0
  91. package/dist/logger/index.cjs.js +3 -0
  92. package/dist/logger/index.cjs.js.map +1 -0
  93. package/dist/logger/index.d.mts +12 -0
  94. package/dist/logger/index.d.ts +12 -0
  95. package/dist/logger/index.esm.js +3 -0
  96. package/dist/logger/index.esm.js.map +1 -0
  97. package/dist/pixel-CbeF25mD.d.mts +555 -0
  98. package/dist/pixel-CbeF25mD.d.ts +555 -0
  99. package/dist/pixel-default-config-1VgLFOiL.d.mts +5 -0
  100. package/dist/pixel-default-config-Bxb-Vdd8.d.ts +5 -0
  101. package/dist/runtime/index.cjs.js +3 -0
  102. package/dist/runtime/index.cjs.js.map +1 -0
  103. package/dist/runtime/index.d.mts +48 -0
  104. package/dist/runtime/index.d.ts +48 -0
  105. package/dist/runtime/index.esm.js +3 -0
  106. package/dist/runtime/index.esm.js.map +1 -0
  107. package/dist/services/index.cjs.js +3 -0
  108. package/dist/services/index.cjs.js.map +1 -0
  109. package/dist/services/index.d.mts +169 -0
  110. package/dist/services/index.d.ts +169 -0
  111. package/dist/services/index.esm.js +3 -0
  112. package/dist/services/index.esm.js.map +1 -0
  113. package/dist/types-CTpRvFKZ.d.ts +71 -0
  114. package/dist/types-DGlBdsAy.d.mts +71 -0
  115. package/dist/v2/global.global.js +3 -0
  116. package/dist/v2/global.global.js.map +1 -0
  117. package/dist/v2/index.cjs.js +3 -0
  118. package/dist/v2/index.cjs.js.map +1 -0
  119. package/dist/v2/index.d.mts +7 -0
  120. package/dist/v2/index.d.ts +7 -0
  121. package/dist/v2/index.esm.js +3 -0
  122. package/dist/v2/index.esm.js.map +1 -0
  123. package/package.json +101 -0
@@ -0,0 +1,364 @@
1
+ export { D as DEFAULT_PIXEL_CONFIG } from './pixel-default-config-1VgLFOiL.mjs';
2
+ import { P as PixelConfig } from './pixel-CbeF25mD.mjs';
3
+ export { r as resolveStorageAdapterName } from './StorageFactory-BhpbB6Jj.mjs';
4
+ import { P as PixelEvent, i as PurchaseData, L as LeadData, j as AddToCartData, R as RemoveFromCartData, I as InitiateCheckoutData, k as AddPaymentInfoData, V as ViewContentData, l as SearchData, c as AttributionIdentifiers } from './index-DUfFzniE.mjs';
5
+ import { P as PixelLogger } from './PixelLogger-B21lEjep.mjs';
6
+ import { P as PixelRuntimeServices } from './types-DGlBdsAy.mjs';
7
+
8
+ type DestinationResultStatus = 'success' | 'failed' | 'ignored' | 'retry' | 'skipped';
9
+ type DestinationResult = {
10
+ readonly status: DestinationResultStatus;
11
+ readonly adapter: string;
12
+ readonly duration: number;
13
+ readonly timestamp: number;
14
+ readonly error?: string;
15
+ readonly ignored?: boolean;
16
+ readonly skipped?: boolean;
17
+ readonly metadata?: Readonly<Record<string, unknown>>;
18
+ };
19
+ type DestinationMetricsSnapshot = {
20
+ readonly registeredDestinations: number;
21
+ readonly activeDestinations: number;
22
+ readonly eventsSent: number;
23
+ readonly eventsFailed: number;
24
+ readonly eventsIgnored: number;
25
+ readonly eventsSkipped: number;
26
+ readonly pageViewReceived: number;
27
+ readonly pageViewSent: number;
28
+ readonly pageViewSkipped: number;
29
+ readonly pageViewDeduped: number;
30
+ readonly pageViewFailed: number;
31
+ readonly scriptLoadAttempts: number;
32
+ readonly scriptLoadSuccess: number;
33
+ readonly scriptLoadFailure: number;
34
+ readonly initAttempts: number;
35
+ readonly initSuccess: number;
36
+ readonly initFailure: number;
37
+ readonly averageDuration: number;
38
+ readonly successRate: number;
39
+ readonly lastExecutionAt: number | null;
40
+ readonly lastErrorAt: number | null;
41
+ readonly lastErrorMessage: string | null;
42
+ readonly perDestination: Readonly<Record<string, {
43
+ readonly sent: number;
44
+ readonly failed: number;
45
+ readonly ignored: number;
46
+ readonly skipped: number;
47
+ readonly averageDuration: number;
48
+ readonly successRate: number;
49
+ readonly pageViewSent: number;
50
+ readonly pageViewDeduped: number;
51
+ readonly pageViewFailed: number;
52
+ readonly scriptLoadAttempts: number;
53
+ readonly scriptLoadSuccess: number;
54
+ readonly scriptLoadFailure: number;
55
+ readonly initAttempts: number;
56
+ readonly initSuccess: number;
57
+ readonly initFailure: number;
58
+ readonly lastError: string | null;
59
+ }>>;
60
+ readonly perDestinationId: Readonly<Record<string, {
61
+ readonly sent: number;
62
+ readonly failed: number;
63
+ readonly pageViewSent: number;
64
+ readonly pageViewDeduped: number;
65
+ readonly pageViewFailed: number;
66
+ }>>;
67
+ };
68
+ type IntegrationDebugState = {
69
+ readonly active: boolean;
70
+ readonly destinationNames: readonly string[];
71
+ readonly metrics: DestinationMetricsSnapshot;
72
+ readonly lastResults: readonly DestinationResult[];
73
+ };
74
+
75
+ type CompressionDebugState = {
76
+ readonly enabled: boolean;
77
+ readonly strategy: string;
78
+ readonly lastOriginalSize: number | null;
79
+ readonly lastCompressedSize: number | null;
80
+ };
81
+
82
+ type CoordinationDebugState = {
83
+ readonly enabled: boolean;
84
+ readonly tabId: string;
85
+ readonly isLeader: boolean;
86
+ readonly leaderTabId: string | null;
87
+ readonly tabCount: number;
88
+ readonly transport: 'broadcastChannel' | 'storageEvents' | 'none';
89
+ };
90
+
91
+ type DeadLetterReason = 'max_retries_exceeded' | 'circuit_open' | 'permanent_failure' | 'manual';
92
+ type DeadLetterEntry = {
93
+ readonly id: string;
94
+ readonly events: readonly PixelEvent[];
95
+ readonly reason: DeadLetterReason;
96
+ readonly failedAt: number;
97
+ readonly attempts: number;
98
+ readonly lastError?: string;
99
+ };
100
+ type DeadLetterDebugState = {
101
+ readonly enabled: boolean;
102
+ readonly count: number;
103
+ readonly maxEntries: number;
104
+ readonly entries: readonly DeadLetterEntry[];
105
+ };
106
+
107
+ type BatchConfig = {
108
+ readonly batchSize: number;
109
+ readonly flushIntervalMs: number;
110
+ readonly maxWaitMs: number;
111
+ };
112
+ type BatchDebugState = {
113
+ readonly bufferSize: number;
114
+ readonly oldestEventAt: number | null;
115
+ readonly pendingBatches: number;
116
+ };
117
+ interface IBatchManager {
118
+ add(events: readonly PixelEvent[]): void;
119
+ takeBatch(maxSize?: number): PixelEvent[];
120
+ peek(): readonly PixelEvent[];
121
+ size(): number;
122
+ clear(): void;
123
+ shouldFlush(config: BatchConfig): boolean;
124
+ getState(): BatchDebugState;
125
+ }
126
+
127
+ type FlushDebugState = {
128
+ readonly flushCount: number;
129
+ readonly lastFlushAt: number | null;
130
+ readonly intervalActive: boolean;
131
+ };
132
+ interface IFlushManager {
133
+ init(onFlush: () => void): void;
134
+ flush(): void;
135
+ destroy(): void;
136
+ getState(): FlushDebugState;
137
+ }
138
+
139
+ type OfflineDebugState = {
140
+ readonly isOnline: boolean;
141
+ readonly paused: boolean;
142
+ readonly simulatedOffline: boolean;
143
+ };
144
+ interface IOfflineDetector {
145
+ init(onOnline: () => void, onOffline: () => void): void;
146
+ isOnline(): boolean;
147
+ isPaused(): boolean;
148
+ destroy(): void;
149
+ /** @internal Testes e playground apenas. */
150
+ simulateOffline(offline: boolean): void;
151
+ getState(): OfflineDebugState;
152
+ }
153
+
154
+ type RetryTask = () => Promise<void>;
155
+ type RetryAttemptState = {
156
+ readonly id: string;
157
+ readonly attempt: number;
158
+ readonly nextRetryAt: number | null;
159
+ readonly status: 'pending' | 'running' | 'scheduled' | 'completed' | 'failed' | 'cancelled';
160
+ };
161
+ type RetryDebugState = {
162
+ readonly pendingCount: number;
163
+ readonly attempts: readonly RetryAttemptState[];
164
+ };
165
+ interface IRetryEngine {
166
+ retry(task: RetryTask, taskId?: string): Promise<void>;
167
+ cancel(taskId: string): void;
168
+ cancelAll(): void;
169
+ getState(): RetryDebugState;
170
+ }
171
+
172
+ type SendOptions = {
173
+ readonly signal?: AbortSignal;
174
+ };
175
+ type SendResult = {
176
+ readonly ack: boolean;
177
+ readonly eventCount: number;
178
+ };
179
+ interface EventSender {
180
+ send(events: PixelEvent[], options?: SendOptions): Promise<SendResult>;
181
+ }
182
+
183
+ type DeliveryConfig = {
184
+ readonly batch: BatchConfig;
185
+ readonly timeoutMs: number;
186
+ };
187
+ type DeliveryDebugState = {
188
+ readonly batch: ReturnType<IBatchManager['getState']>;
189
+ readonly retry: ReturnType<IRetryEngine['getState']>;
190
+ readonly offline: ReturnType<IOfflineDetector['getState']>;
191
+ readonly flush: ReturnType<IFlushManager['getState']>;
192
+ readonly timeoutMs: number;
193
+ readonly inFlight: boolean;
194
+ readonly ackCount: number;
195
+ };
196
+ declare class TransportDelivery {
197
+ private readonly batchManager;
198
+ private readonly flushManager;
199
+ private readonly retryEngine;
200
+ private readonly offlineDetector;
201
+ private readonly sender;
202
+ private readonly config;
203
+ private readonly logger;
204
+ private active;
205
+ private inFlight;
206
+ private ackCount;
207
+ private abortPending;
208
+ private readonly onPermanentFailure;
209
+ constructor(deps: {
210
+ batchManager: IBatchManager;
211
+ flushManager: IFlushManager;
212
+ retryEngine: IRetryEngine;
213
+ offlineDetector: IOfflineDetector;
214
+ sender: EventSender;
215
+ config: DeliveryConfig;
216
+ logger: PixelLogger;
217
+ abortPending?: () => void;
218
+ onPermanentFailure?: (events: readonly PixelEvent[], error: unknown) => void;
219
+ });
220
+ init(): void;
221
+ destroy(): void;
222
+ ingest(events: readonly PixelEvent[]): void;
223
+ flush(): void;
224
+ getDebugState(): DeliveryDebugState;
225
+ getOfflineDetector(): IOfflineDetector;
226
+ private processBatch;
227
+ }
228
+
229
+ type OrderingDebugState = {
230
+ readonly enabled: boolean;
231
+ readonly globalSequence: number;
232
+ readonly sessionSequence: number;
233
+ readonly lastCorrelationId: string | null;
234
+ readonly recordCount: number;
235
+ };
236
+
237
+ type BackpressurePolicy = 'drop_oldest' | 'drop_newest' | 'reject_new' | 'sample' | 'none';
238
+ type BackpressureDebugState = {
239
+ readonly enabled: boolean;
240
+ readonly currentSize: number;
241
+ readonly maxQueueSize: number;
242
+ readonly policy: BackpressurePolicy;
243
+ readonly totalDropped: number;
244
+ readonly totalRejected: number;
245
+ readonly totalSampled: number;
246
+ };
247
+
248
+ type ReplayTrigger = 'init' | 'reload' | 'reconnect' | 'restart' | 'manual';
249
+ type ReplayDebugState = {
250
+ readonly enabled: boolean;
251
+ readonly lastTrigger: ReplayTrigger | null;
252
+ readonly lastReplayAt: number | null;
253
+ readonly totalReplayed: number;
254
+ readonly pendingCount: number;
255
+ };
256
+
257
+ type CircuitBreakerState = 'closed' | 'open' | 'half_open';
258
+ type CircuitBreakerMetrics = {
259
+ readonly state: CircuitBreakerState;
260
+ readonly consecutiveFailures: number;
261
+ readonly totalFailures: number;
262
+ readonly totalSuccesses: number;
263
+ readonly totalBlocked: number;
264
+ readonly lastFailureAt: number | null;
265
+ readonly lastSuccessAt: number | null;
266
+ readonly openedAt: number | null;
267
+ };
268
+
269
+ type TransportAdvancedDebugState = {
270
+ readonly storage: {
271
+ readonly adapter: string;
272
+ readonly persistenceEnabled: boolean;
273
+ readonly recordCount: number;
274
+ };
275
+ readonly replay: ReplayDebugState;
276
+ readonly ordering: OrderingDebugState;
277
+ readonly coordination: CoordinationDebugState;
278
+ readonly circuitBreaker: CircuitBreakerMetrics;
279
+ readonly backpressure: BackpressureDebugState;
280
+ readonly deadLetter: DeadLetterDebugState;
281
+ readonly compression: CompressionDebugState;
282
+ readonly senderMode: 'mock' | 'http';
283
+ };
284
+ type TransportDebugState = {
285
+ readonly queueSize: number;
286
+ readonly queueContents: readonly PixelEvent[];
287
+ readonly pipelineSteps: readonly string[];
288
+ readonly senderLogs: readonly string[];
289
+ readonly sentCount: number;
290
+ readonly delivery: ReturnType<TransportDelivery['getDebugState']> | null;
291
+ readonly sender: Record<string, unknown> | null;
292
+ readonly advanced: TransportAdvancedDebugState | null;
293
+ };
294
+
295
+ declare class Pixel {
296
+ private readonly runtime;
297
+ private readonly conversionModule;
298
+ private readonly transportModule;
299
+ private readonly integrationsModule;
300
+ constructor(config: PixelConfig);
301
+ init(): Promise<void>;
302
+ destroy(): Promise<void>;
303
+ isInitialized(): boolean;
304
+ purchase(data: PurchaseData): void;
305
+ lead(data: LeadData): void;
306
+ addToCart(data: AddToCartData): void;
307
+ removeFromCart(data: RemoveFromCartData): void;
308
+ initiateCheckout(data: InitiateCheckoutData): void;
309
+ addPaymentInfo(data: AddPaymentInfoData): void;
310
+ viewContent(data: ViewContentData): void;
311
+ search(data: SearchData): void;
312
+ /** @internal For playground and development only. */
313
+ getDebugDedupeKeys(): readonly string[];
314
+ /** @internal For playground and development only. */
315
+ getDebugActiveDetectors(): readonly string[];
316
+ /** @internal For playground and development only. */
317
+ getDebugTransportState(): TransportDebugState | null;
318
+ /** @internal For playground — flush manual do transport. */
319
+ flushTransport(): void;
320
+ /** @internal For playground — simular offline. */
321
+ simulateTransportOffline(offline: boolean): void;
322
+ /** @internal For playground — forçar falhas no MockSender (retry). */
323
+ configureTransportMockSender(options: {
324
+ delayMs?: number;
325
+ failUntilAttempt?: number;
326
+ simulateTimeout?: boolean;
327
+ }): void;
328
+ /** @internal For playground — simular reload da página. */
329
+ simulateTransportReload(): Promise<void>;
330
+ /** @internal For playground — simular restart do transport. */
331
+ simulateTransportRestart(): Promise<void>;
332
+ /** @internal For playground — abrir circuit breaker. */
333
+ forceTransportCircuitOpen(): void;
334
+ /** @internal For playground — fechar circuit breaker. */
335
+ forceTransportCircuitClose(): void;
336
+ /** @internal For playground — replay manual da fila persistida. */
337
+ manualTransportReplay(): Promise<number>;
338
+ /** @internal For playground — replay dead letter. */
339
+ replayTransportDeadLetter(): PixelEvent[];
340
+ /** @internal For playground — limpar dead letter. */
341
+ clearTransportDeadLetter(): void;
342
+ /** @internal For playground — exportar fila. */
343
+ exportTransportQueue(): string;
344
+ /** @internal For playground — importar fila. */
345
+ importTransportQueue(raw: string): number;
346
+ /** @internal For playground — Integration Engine debug state. */
347
+ getDebugIntegrationState(): IntegrationDebugState | null;
348
+ /** @internal For playground — MemoryDestination records. */
349
+ getDebugIntegrationMemoryRecords(): readonly {
350
+ readonly at: number;
351
+ readonly type: string;
352
+ readonly payload: Readonly<Record<string, unknown>>;
353
+ }[];
354
+ /** @internal For playground — Attribution snapshot. */
355
+ getDebugAttributionSnapshot(): AttributionIdentifiers | null;
356
+ /** @internal For playground — recolher attribution. */
357
+ collectAttribution(): AttributionIdentifiers | null;
358
+ /** @internal For playground — limpar attribution. */
359
+ clearAttribution(): void;
360
+ /** @internal For playground and development only. Not part of the stable public API. */
361
+ getDebugServices(): PixelRuntimeServices | null;
362
+ }
363
+
364
+ export { Pixel, PixelConfig };