@flopay/shared 1.8.9 → 1.8.11

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/dist/index.d.cts CHANGED
@@ -1,3 +1,125 @@
1
+ /** Wire schema version shared with the Flo telemetry ingestion service. */
2
+ declare const TELEMETRY_SCHEMA_VERSION: 1;
3
+ declare const TELEMETRY_SDK_PACKAGES: readonly ["@flopay/shared", "@flopay/js", "@flopay/react"];
4
+ type TelemetrySdkPackage = (typeof TELEMETRY_SDK_PACKAGES)[number];
5
+ declare const TELEMETRY_MAX_BATCH_BYTES: number;
6
+ declare const TELEMETRY_MAX_BATCH_EVENTS = 20;
7
+ type TelemetryEventClass = 'technical_error' | 'lifecycle' | 'expected_outcome' | 'performance';
8
+ declare const TELEMETRY_PROVIDERS: readonly ["stripe", "paypal"];
9
+ type TelemetryProvider = (typeof TELEMETRY_PROVIDERS)[number];
10
+ type TelemetryProviderInput = TelemetryProvider | 'flo' | 'pcivault' | 'other' | 'unknown';
11
+ declare const TELEMETRY_PAYMENT_METHOD_CATEGORIES: readonly ["card", "wallet", "paypal", "apm", "saved", "unknown"];
12
+ type TelemetryPaymentMethodCategory = (typeof TELEMETRY_PAYMENT_METHOD_CATEGORIES)[number];
13
+ declare const TELEMETRY_STAGES: readonly ["callback", "sdk_initialize", "checkout_mount", "session_create", "session_shell", "session_claim", "session_read", "session_first_byte", "session_complete", "checkout_data_ready", "checkout_render", "provider_load", "provider_ready", "overlay_open", "overlay_return", "redirect", "redirect_resume", "vault_request", "vault_mount", "vault_ready", "vault_submit", "tokenization", "three_ds_handoff", "three_ds_return", "processing", "recovery", "completion", "unmount", "total_journey"];
14
+ type TelemetryStage = (typeof TELEMETRY_STAGES)[number];
15
+ declare const TELEMETRY_ERROR_CODES: readonly ["CALLBACK_FAILED", "CHECKOUT_SESSION_CREATE_FAILED", "CONFIGURATION_INVALID", "INTERNAL_SDK_ERROR", "NETWORK_REQUEST_FAILED", "PAYMENT_PROCESSING_FAILED", "POPUP_BLOCKED", "PROVIDER_LOAD_FAILED", "PROVIDER_RUNTIME_FAILED", "RECOVERY_FAILED", "REDIRECT_RESUME_FAILED", "REQUEST_TIMEOUT", "SDK_INITIALIZATION_FAILED", "THREE_DS_FAILED", "TOKENIZATION_FAILED", "VAULT_LOAD_FAILED", "VAULT_SUBMIT_FAILED"];
16
+ type TelemetryErrorCode = (typeof TELEMETRY_ERROR_CODES)[number];
17
+ declare const TELEMETRY_FAILURE_CATEGORIES: readonly ["server_error", "transport_error", "invalid_response", "provider_runtime"];
18
+ type TelemetryFailureCategory = (typeof TELEMETRY_FAILURE_CATEGORIES)[number];
19
+ /** Closed catalog of SDK-authored lifecycle and operational log names. */
20
+ declare const TELEMETRY_LOG_NAMES: readonly ["sdk.initialize.started", "sdk.initialize.ready", "sdk.cache.hit", "sdk.cache.miss", "checkout.mount", "session.create.started", "session.shell.ready", "session.claim.started", "session.claim.completed", "session.read.started", "session.request.first_byte", "session.request.completed", "checkout.data.ready", "checkout.rendered", "checkout.recovery.started", "checkout.recovery.completed", "checkout.unmount", "provider.load.started", "provider.eligibility.checked", "provider.availability.checked", "provider.ready", "provider.popup.opened", "provider.overlay.opened", "provider.overlay.returned", "provider.redirect.started", "provider.redirect.resumed", "vault.capture.requested", "vault.widget.mounted", "vault.widget.ready", "vault.submission.started", "vault.action.required", "vault.three_ds.handoff", "vault.three_ds.returned", "vault.terminal", "payment.method.selected", "payment.intent.started", "payment.intent.completed", "payment.tokenization.started", "payment.tokenization.completed", "payment.processing.started", "payment.processing.completed", "payment.three_ds.handoff", "payment.three_ds.returned", "operation.retry", "operation.deduplicated", "operation.fallback", "operation.cache.hit", "operation.cache.miss", "operation.recovery.started", "operation.recovery.completed", "operation.state_transition"];
21
+ type TelemetryLogName = (typeof TELEMETRY_LOG_NAMES)[number];
22
+ declare const TELEMETRY_REQUEST_CATEGORIES: readonly ["session_create", "session_claim", "session_read", "intent_create", "process_payment", "vault_capture", "account_snapshot", "provider_sdk", "other"];
23
+ type TelemetryRequestCategory = (typeof TELEMETRY_REQUEST_CATEGORIES)[number];
24
+ declare const TELEMETRY_STATUS_CLASSES: readonly ["2xx", "3xx", "4xx", "5xx", "network_error", "timeout", "unknown"];
25
+ type TelemetryStatusClass = (typeof TELEMETRY_STATUS_CLASSES)[number];
26
+ declare const TELEMETRY_CHECKOUT_MODES: readonly ["full", "auto", "confirm", "setup", "unknown"];
27
+ type TelemetryCheckoutMode = (typeof TELEMETRY_CHECKOUT_MODES)[number];
28
+ declare const TELEMETRY_LAYOUTS: readonly ["embedded", "buttons", "automatic", "unknown"];
29
+ type TelemetryLayout = (typeof TELEMETRY_LAYOUTS)[number];
30
+ declare const TELEMETRY_DURATION_MODES: readonly ["machine", "buyer", "total"];
31
+ type TelemetryDurationMode = (typeof TELEMETRY_DURATION_MODES)[number];
32
+ declare const TELEMETRY_EXPECTED_OUTCOMES: readonly ["action_required", "card_setup_declined", "card_setup_succeeded", "customer_abandoned", "payment_cancelled", "payment_declined", "payment_authorized", "payment_succeeded", "validation_rejected"];
33
+ type TelemetryExpectedOutcome = (typeof TELEMETRY_EXPECTED_OUTCOMES)[number];
34
+ interface TelemetryCommonFields {
35
+ eventId: string;
36
+ stage: TelemetryStage;
37
+ sequence: number;
38
+ provider?: TelemetryProvider;
39
+ attempt?: number;
40
+ statusClass?: TelemetryStatusClass;
41
+ requestCategory?: TelemetryRequestCategory;
42
+ paymentMethodCategory?: TelemetryPaymentMethodCategory;
43
+ checkoutMode?: TelemetryCheckoutMode;
44
+ layout?: TelemetryLayout;
45
+ }
46
+ interface BuildTelemetryCommonInput {
47
+ eventId: string;
48
+ stage: TelemetryStage;
49
+ sequence: number;
50
+ provider?: TelemetryProviderInput;
51
+ attempt?: number;
52
+ statusClass?: TelemetryStatusClass;
53
+ requestCategory?: TelemetryRequestCategory;
54
+ paymentMethodCategory?: TelemetryPaymentMethodCategory;
55
+ checkoutMode?: TelemetryCheckoutMode;
56
+ layout?: TelemetryLayout;
57
+ }
58
+ interface TelemetryErrorEvent extends TelemetryCommonFields {
59
+ class: 'technical_error';
60
+ code: TelemetryErrorCode;
61
+ failureCategory?: TelemetryFailureCategory;
62
+ }
63
+ interface BuildTelemetryErrorEventInput extends BuildTelemetryCommonInput {
64
+ errorCode: TelemetryErrorCode;
65
+ failureCategory?: TelemetryFailureCategory;
66
+ }
67
+ interface TelemetryLogEvent extends TelemetryCommonFields {
68
+ class: 'lifecycle';
69
+ name: TelemetryLogName;
70
+ }
71
+ interface BuildTelemetryLogEventInput extends BuildTelemetryCommonInput {
72
+ name: TelemetryLogName;
73
+ }
74
+ interface TelemetryExpectedOutcomeEvent extends TelemetryCommonFields {
75
+ class: 'expected_outcome';
76
+ outcome: TelemetryExpectedOutcome;
77
+ }
78
+ interface BuildTelemetryTerminalEventInput extends Omit<BuildTelemetryCommonInput, 'stage'> {
79
+ outcome: TelemetryExpectedOutcome;
80
+ stage?: TelemetryStage;
81
+ }
82
+ interface TelemetryPerformanceEvent extends TelemetryCommonFields {
83
+ class: 'performance';
84
+ durationMs: number;
85
+ /** True when the measured duration exceeded the bounded wire value. */
86
+ durationTruncated?: true;
87
+ durationMode: TelemetryDurationMode;
88
+ }
89
+ interface BuildTelemetryPerformanceEventInput extends BuildTelemetryCommonInput {
90
+ durationMs: number;
91
+ /** Preserves a previously sanitized truncation marker during serialization. */
92
+ durationTruncated?: boolean;
93
+ durationMode: TelemetryDurationMode;
94
+ }
95
+ type TelemetryEvent = TelemetryErrorEvent | TelemetryLogEvent | TelemetryExpectedOutcomeEvent | TelemetryPerformanceEvent;
96
+ interface SerializeTelemetryBatchOptions {
97
+ correlationId: string;
98
+ sdkPackage: TelemetrySdkPackage;
99
+ sdkVersion: string;
100
+ batchId?: string;
101
+ }
102
+ interface TelemetryBatchEnvelope {
103
+ schemaVersion: typeof TELEMETRY_SCHEMA_VERSION;
104
+ batchId: string;
105
+ correlationId: string;
106
+ sdk: {
107
+ package: TelemetrySdkPackage;
108
+ version: string;
109
+ };
110
+ events: TelemetryEvent[];
111
+ }
112
+ /** Build a closed SDK technical-error event. */
113
+ declare function buildTelemetryErrorEvent(input: BuildTelemetryErrorEventInput): TelemetryErrorEvent;
114
+ /** Build a typed SDK lifecycle event; arbitrary text is never accepted. */
115
+ declare function buildTelemetryLogEvent(input: BuildTelemetryLogEventInput): TelemetryLogEvent;
116
+ /** Build a non-error expected checkout outcome. */
117
+ declare function buildTelemetryTerminalEvent(input: BuildTelemetryTerminalEventInput): TelemetryExpectedOutcomeEvent;
118
+ /** Build a monotonic SDK-owned duration measurement. */
119
+ declare function buildTelemetryPerformanceEvent(input: BuildTelemetryPerformanceEventInput): TelemetryPerformanceEvent;
120
+ /** Serialize one closed backend-owned v1 telemetry envelope. */
121
+ declare function serializeTelemetryBatch(events: readonly TelemetryEvent[], options: SerializeTelemetryBatchOptions): string;
122
+
1
123
  /** Discriminated error types returned by the FloPay SDK. */
2
124
  type FloPayErrorType = 'validation_error' | 'api_error' | 'authentication_error' | 'rate_limit_error' | 'network_error';
3
125
  /**
@@ -1424,6 +1546,8 @@ type CheckoutSessionResult = {
1424
1546
  */
1425
1547
  interface ProcessPaymentParams {
1426
1548
  sessionId: string;
1549
+ /** Privacy-safe payment-method family used to attribute processing telemetry. */
1550
+ paymentMethodCategory?: TelemetryPaymentMethodCategory;
1427
1551
  /**
1428
1552
  * Session-bound checkout token returned from session creation. Forwarded as
1429
1553
  * the `x-checkout-session-token` header on every call to
@@ -1628,7 +1752,7 @@ declare function getConfiguredBillingApiUrl(): string;
1628
1752
  declare function getFloPayEnvironment(): FloPayEnvironment;
1629
1753
 
1630
1754
  /** Current SDK version. */
1631
- declare const SDK_VERSION = "1.8.9";
1755
+ declare const SDK_VERSION = "1.8.11";
1632
1756
  /**
1633
1757
  * HTTP header the SDK sends on checkout-session create/read requests so the
1634
1758
  * backend can observe compatibility. Version 1.4.9 is the first release that
@@ -2302,128 +2426,6 @@ interface SentryEventLike {
2302
2426
  */
2303
2427
  declare function dropThirdPartyOnlyError<T extends SentryEventLike>(event: T): T | null;
2304
2428
 
2305
- /** Wire schema version shared with the Flo telemetry ingestion service. */
2306
- declare const TELEMETRY_SCHEMA_VERSION: 1;
2307
- declare const TELEMETRY_SDK_PACKAGES: readonly ["@flopay/shared", "@flopay/js", "@flopay/react"];
2308
- type TelemetrySdkPackage = (typeof TELEMETRY_SDK_PACKAGES)[number];
2309
- declare const TELEMETRY_MAX_BATCH_BYTES: number;
2310
- declare const TELEMETRY_MAX_BATCH_EVENTS = 20;
2311
- type TelemetryEventClass = 'technical_error' | 'lifecycle' | 'expected_outcome' | 'performance';
2312
- declare const TELEMETRY_PROVIDERS: readonly ["stripe", "paypal"];
2313
- type TelemetryProvider = (typeof TELEMETRY_PROVIDERS)[number];
2314
- type TelemetryProviderInput = TelemetryProvider | 'flo' | 'pcivault' | 'other' | 'unknown';
2315
- declare const TELEMETRY_PAYMENT_METHOD_CATEGORIES: readonly ["card", "wallet", "paypal", "apm", "saved", "unknown"];
2316
- type TelemetryPaymentMethodCategory = (typeof TELEMETRY_PAYMENT_METHOD_CATEGORIES)[number];
2317
- declare const TELEMETRY_STAGES: readonly ["callback", "sdk_initialize", "checkout_mount", "session_create", "session_shell", "session_claim", "session_read", "session_first_byte", "session_complete", "checkout_data_ready", "checkout_render", "provider_load", "provider_ready", "overlay_open", "overlay_return", "redirect", "redirect_resume", "vault_request", "vault_mount", "vault_ready", "vault_submit", "tokenization", "three_ds_handoff", "three_ds_return", "processing", "recovery", "completion", "unmount", "total_journey"];
2318
- type TelemetryStage = (typeof TELEMETRY_STAGES)[number];
2319
- declare const TELEMETRY_ERROR_CODES: readonly ["CALLBACK_FAILED", "CHECKOUT_SESSION_CREATE_FAILED", "CONFIGURATION_INVALID", "INTERNAL_SDK_ERROR", "NETWORK_REQUEST_FAILED", "PAYMENT_PROCESSING_FAILED", "POPUP_BLOCKED", "PROVIDER_LOAD_FAILED", "PROVIDER_RUNTIME_FAILED", "RECOVERY_FAILED", "REDIRECT_RESUME_FAILED", "REQUEST_TIMEOUT", "SDK_INITIALIZATION_FAILED", "THREE_DS_FAILED", "TOKENIZATION_FAILED", "VAULT_LOAD_FAILED", "VAULT_SUBMIT_FAILED"];
2320
- type TelemetryErrorCode = (typeof TELEMETRY_ERROR_CODES)[number];
2321
- declare const TELEMETRY_FAILURE_CATEGORIES: readonly ["server_error", "transport_error", "invalid_response", "provider_runtime"];
2322
- type TelemetryFailureCategory = (typeof TELEMETRY_FAILURE_CATEGORIES)[number];
2323
- /** Closed catalog of SDK-authored lifecycle and operational log names. */
2324
- declare const TELEMETRY_LOG_NAMES: readonly ["sdk.initialize.started", "sdk.initialize.ready", "sdk.cache.hit", "sdk.cache.miss", "checkout.mount", "session.create.started", "session.shell.ready", "session.claim.started", "session.claim.completed", "session.read.started", "session.request.first_byte", "session.request.completed", "checkout.data.ready", "checkout.rendered", "checkout.recovery.started", "checkout.recovery.completed", "checkout.unmount", "provider.load.started", "provider.eligibility.checked", "provider.availability.checked", "provider.ready", "provider.popup.opened", "provider.overlay.opened", "provider.overlay.returned", "provider.redirect.started", "provider.redirect.resumed", "vault.capture.requested", "vault.widget.mounted", "vault.widget.ready", "vault.submission.started", "vault.action.required", "vault.three_ds.handoff", "vault.three_ds.returned", "vault.terminal", "payment.method.selected", "payment.intent.started", "payment.intent.completed", "payment.tokenization.started", "payment.tokenization.completed", "payment.processing.started", "payment.processing.completed", "payment.three_ds.handoff", "payment.three_ds.returned", "operation.retry", "operation.deduplicated", "operation.fallback", "operation.cache.hit", "operation.cache.miss", "operation.recovery.started", "operation.recovery.completed", "operation.state_transition"];
2325
- type TelemetryLogName = (typeof TELEMETRY_LOG_NAMES)[number];
2326
- declare const TELEMETRY_REQUEST_CATEGORIES: readonly ["session_create", "session_claim", "session_read", "intent_create", "process_payment", "vault_capture", "account_snapshot", "provider_sdk", "other"];
2327
- type TelemetryRequestCategory = (typeof TELEMETRY_REQUEST_CATEGORIES)[number];
2328
- declare const TELEMETRY_STATUS_CLASSES: readonly ["2xx", "3xx", "4xx", "5xx", "network_error", "timeout", "unknown"];
2329
- type TelemetryStatusClass = (typeof TELEMETRY_STATUS_CLASSES)[number];
2330
- declare const TELEMETRY_CHECKOUT_MODES: readonly ["full", "auto", "confirm", "setup", "unknown"];
2331
- type TelemetryCheckoutMode = (typeof TELEMETRY_CHECKOUT_MODES)[number];
2332
- declare const TELEMETRY_LAYOUTS: readonly ["embedded", "buttons", "automatic", "unknown"];
2333
- type TelemetryLayout = (typeof TELEMETRY_LAYOUTS)[number];
2334
- declare const TELEMETRY_DURATION_MODES: readonly ["machine", "buyer", "total"];
2335
- type TelemetryDurationMode = (typeof TELEMETRY_DURATION_MODES)[number];
2336
- declare const TELEMETRY_EXPECTED_OUTCOMES: readonly ["action_required", "card_setup_declined", "card_setup_succeeded", "customer_abandoned", "payment_cancelled", "payment_declined", "payment_authorized", "payment_succeeded", "validation_rejected"];
2337
- type TelemetryExpectedOutcome = (typeof TELEMETRY_EXPECTED_OUTCOMES)[number];
2338
- interface TelemetryCommonFields {
2339
- eventId: string;
2340
- stage: TelemetryStage;
2341
- sequence: number;
2342
- provider?: TelemetryProvider;
2343
- attempt?: number;
2344
- statusClass?: TelemetryStatusClass;
2345
- requestCategory?: TelemetryRequestCategory;
2346
- paymentMethodCategory?: TelemetryPaymentMethodCategory;
2347
- checkoutMode?: TelemetryCheckoutMode;
2348
- layout?: TelemetryLayout;
2349
- }
2350
- interface BuildTelemetryCommonInput {
2351
- eventId: string;
2352
- stage: TelemetryStage;
2353
- sequence: number;
2354
- provider?: TelemetryProviderInput;
2355
- attempt?: number;
2356
- statusClass?: TelemetryStatusClass;
2357
- requestCategory?: TelemetryRequestCategory;
2358
- paymentMethodCategory?: TelemetryPaymentMethodCategory;
2359
- checkoutMode?: TelemetryCheckoutMode;
2360
- layout?: TelemetryLayout;
2361
- }
2362
- interface TelemetryErrorEvent extends TelemetryCommonFields {
2363
- class: 'technical_error';
2364
- code: TelemetryErrorCode;
2365
- failureCategory?: TelemetryFailureCategory;
2366
- }
2367
- interface BuildTelemetryErrorEventInput extends BuildTelemetryCommonInput {
2368
- errorCode: TelemetryErrorCode;
2369
- failureCategory?: TelemetryFailureCategory;
2370
- }
2371
- interface TelemetryLogEvent extends TelemetryCommonFields {
2372
- class: 'lifecycle';
2373
- name: TelemetryLogName;
2374
- }
2375
- interface BuildTelemetryLogEventInput extends BuildTelemetryCommonInput {
2376
- name: TelemetryLogName;
2377
- }
2378
- interface TelemetryExpectedOutcomeEvent extends TelemetryCommonFields {
2379
- class: 'expected_outcome';
2380
- outcome: TelemetryExpectedOutcome;
2381
- }
2382
- interface BuildTelemetryTerminalEventInput extends Omit<BuildTelemetryCommonInput, 'stage'> {
2383
- outcome: TelemetryExpectedOutcome;
2384
- stage?: TelemetryStage;
2385
- }
2386
- interface TelemetryPerformanceEvent extends TelemetryCommonFields {
2387
- class: 'performance';
2388
- durationMs: number;
2389
- /** True when the measured duration exceeded the bounded wire value. */
2390
- durationTruncated?: true;
2391
- durationMode: TelemetryDurationMode;
2392
- }
2393
- interface BuildTelemetryPerformanceEventInput extends BuildTelemetryCommonInput {
2394
- durationMs: number;
2395
- /** Preserves a previously sanitized truncation marker during serialization. */
2396
- durationTruncated?: boolean;
2397
- durationMode: TelemetryDurationMode;
2398
- }
2399
- type TelemetryEvent = TelemetryErrorEvent | TelemetryLogEvent | TelemetryExpectedOutcomeEvent | TelemetryPerformanceEvent;
2400
- interface SerializeTelemetryBatchOptions {
2401
- correlationId: string;
2402
- sdkPackage: TelemetrySdkPackage;
2403
- sdkVersion: string;
2404
- batchId?: string;
2405
- }
2406
- interface TelemetryBatchEnvelope {
2407
- schemaVersion: typeof TELEMETRY_SCHEMA_VERSION;
2408
- batchId: string;
2409
- correlationId: string;
2410
- sdk: {
2411
- package: TelemetrySdkPackage;
2412
- version: string;
2413
- };
2414
- events: TelemetryEvent[];
2415
- }
2416
- /** Build a closed SDK technical-error event. */
2417
- declare function buildTelemetryErrorEvent(input: BuildTelemetryErrorEventInput): TelemetryErrorEvent;
2418
- /** Build a typed SDK lifecycle event; arbitrary text is never accepted. */
2419
- declare function buildTelemetryLogEvent(input: BuildTelemetryLogEventInput): TelemetryLogEvent;
2420
- /** Build a non-error expected checkout outcome. */
2421
- declare function buildTelemetryTerminalEvent(input: BuildTelemetryTerminalEventInput): TelemetryExpectedOutcomeEvent;
2422
- /** Build a monotonic SDK-owned duration measurement. */
2423
- declare function buildTelemetryPerformanceEvent(input: BuildTelemetryPerformanceEventInput): TelemetryPerformanceEvent;
2424
- /** Serialize one closed backend-owned v1 telemetry envelope. */
2425
- declare function serializeTelemetryBatch(events: readonly TelemetryEvent[], options: SerializeTelemetryBatchOptions): string;
2426
-
2427
2429
  interface ClassifiedTelemetryFailure {
2428
2430
  errorCode: TelemetryErrorCode;
2429
2431
  statusClass: TelemetryStatusClass;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,125 @@
1
+ /** Wire schema version shared with the Flo telemetry ingestion service. */
2
+ declare const TELEMETRY_SCHEMA_VERSION: 1;
3
+ declare const TELEMETRY_SDK_PACKAGES: readonly ["@flopay/shared", "@flopay/js", "@flopay/react"];
4
+ type TelemetrySdkPackage = (typeof TELEMETRY_SDK_PACKAGES)[number];
5
+ declare const TELEMETRY_MAX_BATCH_BYTES: number;
6
+ declare const TELEMETRY_MAX_BATCH_EVENTS = 20;
7
+ type TelemetryEventClass = 'technical_error' | 'lifecycle' | 'expected_outcome' | 'performance';
8
+ declare const TELEMETRY_PROVIDERS: readonly ["stripe", "paypal"];
9
+ type TelemetryProvider = (typeof TELEMETRY_PROVIDERS)[number];
10
+ type TelemetryProviderInput = TelemetryProvider | 'flo' | 'pcivault' | 'other' | 'unknown';
11
+ declare const TELEMETRY_PAYMENT_METHOD_CATEGORIES: readonly ["card", "wallet", "paypal", "apm", "saved", "unknown"];
12
+ type TelemetryPaymentMethodCategory = (typeof TELEMETRY_PAYMENT_METHOD_CATEGORIES)[number];
13
+ declare const TELEMETRY_STAGES: readonly ["callback", "sdk_initialize", "checkout_mount", "session_create", "session_shell", "session_claim", "session_read", "session_first_byte", "session_complete", "checkout_data_ready", "checkout_render", "provider_load", "provider_ready", "overlay_open", "overlay_return", "redirect", "redirect_resume", "vault_request", "vault_mount", "vault_ready", "vault_submit", "tokenization", "three_ds_handoff", "three_ds_return", "processing", "recovery", "completion", "unmount", "total_journey"];
14
+ type TelemetryStage = (typeof TELEMETRY_STAGES)[number];
15
+ declare const TELEMETRY_ERROR_CODES: readonly ["CALLBACK_FAILED", "CHECKOUT_SESSION_CREATE_FAILED", "CONFIGURATION_INVALID", "INTERNAL_SDK_ERROR", "NETWORK_REQUEST_FAILED", "PAYMENT_PROCESSING_FAILED", "POPUP_BLOCKED", "PROVIDER_LOAD_FAILED", "PROVIDER_RUNTIME_FAILED", "RECOVERY_FAILED", "REDIRECT_RESUME_FAILED", "REQUEST_TIMEOUT", "SDK_INITIALIZATION_FAILED", "THREE_DS_FAILED", "TOKENIZATION_FAILED", "VAULT_LOAD_FAILED", "VAULT_SUBMIT_FAILED"];
16
+ type TelemetryErrorCode = (typeof TELEMETRY_ERROR_CODES)[number];
17
+ declare const TELEMETRY_FAILURE_CATEGORIES: readonly ["server_error", "transport_error", "invalid_response", "provider_runtime"];
18
+ type TelemetryFailureCategory = (typeof TELEMETRY_FAILURE_CATEGORIES)[number];
19
+ /** Closed catalog of SDK-authored lifecycle and operational log names. */
20
+ declare const TELEMETRY_LOG_NAMES: readonly ["sdk.initialize.started", "sdk.initialize.ready", "sdk.cache.hit", "sdk.cache.miss", "checkout.mount", "session.create.started", "session.shell.ready", "session.claim.started", "session.claim.completed", "session.read.started", "session.request.first_byte", "session.request.completed", "checkout.data.ready", "checkout.rendered", "checkout.recovery.started", "checkout.recovery.completed", "checkout.unmount", "provider.load.started", "provider.eligibility.checked", "provider.availability.checked", "provider.ready", "provider.popup.opened", "provider.overlay.opened", "provider.overlay.returned", "provider.redirect.started", "provider.redirect.resumed", "vault.capture.requested", "vault.widget.mounted", "vault.widget.ready", "vault.submission.started", "vault.action.required", "vault.three_ds.handoff", "vault.three_ds.returned", "vault.terminal", "payment.method.selected", "payment.intent.started", "payment.intent.completed", "payment.tokenization.started", "payment.tokenization.completed", "payment.processing.started", "payment.processing.completed", "payment.three_ds.handoff", "payment.three_ds.returned", "operation.retry", "operation.deduplicated", "operation.fallback", "operation.cache.hit", "operation.cache.miss", "operation.recovery.started", "operation.recovery.completed", "operation.state_transition"];
21
+ type TelemetryLogName = (typeof TELEMETRY_LOG_NAMES)[number];
22
+ declare const TELEMETRY_REQUEST_CATEGORIES: readonly ["session_create", "session_claim", "session_read", "intent_create", "process_payment", "vault_capture", "account_snapshot", "provider_sdk", "other"];
23
+ type TelemetryRequestCategory = (typeof TELEMETRY_REQUEST_CATEGORIES)[number];
24
+ declare const TELEMETRY_STATUS_CLASSES: readonly ["2xx", "3xx", "4xx", "5xx", "network_error", "timeout", "unknown"];
25
+ type TelemetryStatusClass = (typeof TELEMETRY_STATUS_CLASSES)[number];
26
+ declare const TELEMETRY_CHECKOUT_MODES: readonly ["full", "auto", "confirm", "setup", "unknown"];
27
+ type TelemetryCheckoutMode = (typeof TELEMETRY_CHECKOUT_MODES)[number];
28
+ declare const TELEMETRY_LAYOUTS: readonly ["embedded", "buttons", "automatic", "unknown"];
29
+ type TelemetryLayout = (typeof TELEMETRY_LAYOUTS)[number];
30
+ declare const TELEMETRY_DURATION_MODES: readonly ["machine", "buyer", "total"];
31
+ type TelemetryDurationMode = (typeof TELEMETRY_DURATION_MODES)[number];
32
+ declare const TELEMETRY_EXPECTED_OUTCOMES: readonly ["action_required", "card_setup_declined", "card_setup_succeeded", "customer_abandoned", "payment_cancelled", "payment_declined", "payment_authorized", "payment_succeeded", "validation_rejected"];
33
+ type TelemetryExpectedOutcome = (typeof TELEMETRY_EXPECTED_OUTCOMES)[number];
34
+ interface TelemetryCommonFields {
35
+ eventId: string;
36
+ stage: TelemetryStage;
37
+ sequence: number;
38
+ provider?: TelemetryProvider;
39
+ attempt?: number;
40
+ statusClass?: TelemetryStatusClass;
41
+ requestCategory?: TelemetryRequestCategory;
42
+ paymentMethodCategory?: TelemetryPaymentMethodCategory;
43
+ checkoutMode?: TelemetryCheckoutMode;
44
+ layout?: TelemetryLayout;
45
+ }
46
+ interface BuildTelemetryCommonInput {
47
+ eventId: string;
48
+ stage: TelemetryStage;
49
+ sequence: number;
50
+ provider?: TelemetryProviderInput;
51
+ attempt?: number;
52
+ statusClass?: TelemetryStatusClass;
53
+ requestCategory?: TelemetryRequestCategory;
54
+ paymentMethodCategory?: TelemetryPaymentMethodCategory;
55
+ checkoutMode?: TelemetryCheckoutMode;
56
+ layout?: TelemetryLayout;
57
+ }
58
+ interface TelemetryErrorEvent extends TelemetryCommonFields {
59
+ class: 'technical_error';
60
+ code: TelemetryErrorCode;
61
+ failureCategory?: TelemetryFailureCategory;
62
+ }
63
+ interface BuildTelemetryErrorEventInput extends BuildTelemetryCommonInput {
64
+ errorCode: TelemetryErrorCode;
65
+ failureCategory?: TelemetryFailureCategory;
66
+ }
67
+ interface TelemetryLogEvent extends TelemetryCommonFields {
68
+ class: 'lifecycle';
69
+ name: TelemetryLogName;
70
+ }
71
+ interface BuildTelemetryLogEventInput extends BuildTelemetryCommonInput {
72
+ name: TelemetryLogName;
73
+ }
74
+ interface TelemetryExpectedOutcomeEvent extends TelemetryCommonFields {
75
+ class: 'expected_outcome';
76
+ outcome: TelemetryExpectedOutcome;
77
+ }
78
+ interface BuildTelemetryTerminalEventInput extends Omit<BuildTelemetryCommonInput, 'stage'> {
79
+ outcome: TelemetryExpectedOutcome;
80
+ stage?: TelemetryStage;
81
+ }
82
+ interface TelemetryPerformanceEvent extends TelemetryCommonFields {
83
+ class: 'performance';
84
+ durationMs: number;
85
+ /** True when the measured duration exceeded the bounded wire value. */
86
+ durationTruncated?: true;
87
+ durationMode: TelemetryDurationMode;
88
+ }
89
+ interface BuildTelemetryPerformanceEventInput extends BuildTelemetryCommonInput {
90
+ durationMs: number;
91
+ /** Preserves a previously sanitized truncation marker during serialization. */
92
+ durationTruncated?: boolean;
93
+ durationMode: TelemetryDurationMode;
94
+ }
95
+ type TelemetryEvent = TelemetryErrorEvent | TelemetryLogEvent | TelemetryExpectedOutcomeEvent | TelemetryPerformanceEvent;
96
+ interface SerializeTelemetryBatchOptions {
97
+ correlationId: string;
98
+ sdkPackage: TelemetrySdkPackage;
99
+ sdkVersion: string;
100
+ batchId?: string;
101
+ }
102
+ interface TelemetryBatchEnvelope {
103
+ schemaVersion: typeof TELEMETRY_SCHEMA_VERSION;
104
+ batchId: string;
105
+ correlationId: string;
106
+ sdk: {
107
+ package: TelemetrySdkPackage;
108
+ version: string;
109
+ };
110
+ events: TelemetryEvent[];
111
+ }
112
+ /** Build a closed SDK technical-error event. */
113
+ declare function buildTelemetryErrorEvent(input: BuildTelemetryErrorEventInput): TelemetryErrorEvent;
114
+ /** Build a typed SDK lifecycle event; arbitrary text is never accepted. */
115
+ declare function buildTelemetryLogEvent(input: BuildTelemetryLogEventInput): TelemetryLogEvent;
116
+ /** Build a non-error expected checkout outcome. */
117
+ declare function buildTelemetryTerminalEvent(input: BuildTelemetryTerminalEventInput): TelemetryExpectedOutcomeEvent;
118
+ /** Build a monotonic SDK-owned duration measurement. */
119
+ declare function buildTelemetryPerformanceEvent(input: BuildTelemetryPerformanceEventInput): TelemetryPerformanceEvent;
120
+ /** Serialize one closed backend-owned v1 telemetry envelope. */
121
+ declare function serializeTelemetryBatch(events: readonly TelemetryEvent[], options: SerializeTelemetryBatchOptions): string;
122
+
1
123
  /** Discriminated error types returned by the FloPay SDK. */
2
124
  type FloPayErrorType = 'validation_error' | 'api_error' | 'authentication_error' | 'rate_limit_error' | 'network_error';
3
125
  /**
@@ -1424,6 +1546,8 @@ type CheckoutSessionResult = {
1424
1546
  */
1425
1547
  interface ProcessPaymentParams {
1426
1548
  sessionId: string;
1549
+ /** Privacy-safe payment-method family used to attribute processing telemetry. */
1550
+ paymentMethodCategory?: TelemetryPaymentMethodCategory;
1427
1551
  /**
1428
1552
  * Session-bound checkout token returned from session creation. Forwarded as
1429
1553
  * the `x-checkout-session-token` header on every call to
@@ -1628,7 +1752,7 @@ declare function getConfiguredBillingApiUrl(): string;
1628
1752
  declare function getFloPayEnvironment(): FloPayEnvironment;
1629
1753
 
1630
1754
  /** Current SDK version. */
1631
- declare const SDK_VERSION = "1.8.9";
1755
+ declare const SDK_VERSION = "1.8.11";
1632
1756
  /**
1633
1757
  * HTTP header the SDK sends on checkout-session create/read requests so the
1634
1758
  * backend can observe compatibility. Version 1.4.9 is the first release that
@@ -2302,128 +2426,6 @@ interface SentryEventLike {
2302
2426
  */
2303
2427
  declare function dropThirdPartyOnlyError<T extends SentryEventLike>(event: T): T | null;
2304
2428
 
2305
- /** Wire schema version shared with the Flo telemetry ingestion service. */
2306
- declare const TELEMETRY_SCHEMA_VERSION: 1;
2307
- declare const TELEMETRY_SDK_PACKAGES: readonly ["@flopay/shared", "@flopay/js", "@flopay/react"];
2308
- type TelemetrySdkPackage = (typeof TELEMETRY_SDK_PACKAGES)[number];
2309
- declare const TELEMETRY_MAX_BATCH_BYTES: number;
2310
- declare const TELEMETRY_MAX_BATCH_EVENTS = 20;
2311
- type TelemetryEventClass = 'technical_error' | 'lifecycle' | 'expected_outcome' | 'performance';
2312
- declare const TELEMETRY_PROVIDERS: readonly ["stripe", "paypal"];
2313
- type TelemetryProvider = (typeof TELEMETRY_PROVIDERS)[number];
2314
- type TelemetryProviderInput = TelemetryProvider | 'flo' | 'pcivault' | 'other' | 'unknown';
2315
- declare const TELEMETRY_PAYMENT_METHOD_CATEGORIES: readonly ["card", "wallet", "paypal", "apm", "saved", "unknown"];
2316
- type TelemetryPaymentMethodCategory = (typeof TELEMETRY_PAYMENT_METHOD_CATEGORIES)[number];
2317
- declare const TELEMETRY_STAGES: readonly ["callback", "sdk_initialize", "checkout_mount", "session_create", "session_shell", "session_claim", "session_read", "session_first_byte", "session_complete", "checkout_data_ready", "checkout_render", "provider_load", "provider_ready", "overlay_open", "overlay_return", "redirect", "redirect_resume", "vault_request", "vault_mount", "vault_ready", "vault_submit", "tokenization", "three_ds_handoff", "three_ds_return", "processing", "recovery", "completion", "unmount", "total_journey"];
2318
- type TelemetryStage = (typeof TELEMETRY_STAGES)[number];
2319
- declare const TELEMETRY_ERROR_CODES: readonly ["CALLBACK_FAILED", "CHECKOUT_SESSION_CREATE_FAILED", "CONFIGURATION_INVALID", "INTERNAL_SDK_ERROR", "NETWORK_REQUEST_FAILED", "PAYMENT_PROCESSING_FAILED", "POPUP_BLOCKED", "PROVIDER_LOAD_FAILED", "PROVIDER_RUNTIME_FAILED", "RECOVERY_FAILED", "REDIRECT_RESUME_FAILED", "REQUEST_TIMEOUT", "SDK_INITIALIZATION_FAILED", "THREE_DS_FAILED", "TOKENIZATION_FAILED", "VAULT_LOAD_FAILED", "VAULT_SUBMIT_FAILED"];
2320
- type TelemetryErrorCode = (typeof TELEMETRY_ERROR_CODES)[number];
2321
- declare const TELEMETRY_FAILURE_CATEGORIES: readonly ["server_error", "transport_error", "invalid_response", "provider_runtime"];
2322
- type TelemetryFailureCategory = (typeof TELEMETRY_FAILURE_CATEGORIES)[number];
2323
- /** Closed catalog of SDK-authored lifecycle and operational log names. */
2324
- declare const TELEMETRY_LOG_NAMES: readonly ["sdk.initialize.started", "sdk.initialize.ready", "sdk.cache.hit", "sdk.cache.miss", "checkout.mount", "session.create.started", "session.shell.ready", "session.claim.started", "session.claim.completed", "session.read.started", "session.request.first_byte", "session.request.completed", "checkout.data.ready", "checkout.rendered", "checkout.recovery.started", "checkout.recovery.completed", "checkout.unmount", "provider.load.started", "provider.eligibility.checked", "provider.availability.checked", "provider.ready", "provider.popup.opened", "provider.overlay.opened", "provider.overlay.returned", "provider.redirect.started", "provider.redirect.resumed", "vault.capture.requested", "vault.widget.mounted", "vault.widget.ready", "vault.submission.started", "vault.action.required", "vault.three_ds.handoff", "vault.three_ds.returned", "vault.terminal", "payment.method.selected", "payment.intent.started", "payment.intent.completed", "payment.tokenization.started", "payment.tokenization.completed", "payment.processing.started", "payment.processing.completed", "payment.three_ds.handoff", "payment.three_ds.returned", "operation.retry", "operation.deduplicated", "operation.fallback", "operation.cache.hit", "operation.cache.miss", "operation.recovery.started", "operation.recovery.completed", "operation.state_transition"];
2325
- type TelemetryLogName = (typeof TELEMETRY_LOG_NAMES)[number];
2326
- declare const TELEMETRY_REQUEST_CATEGORIES: readonly ["session_create", "session_claim", "session_read", "intent_create", "process_payment", "vault_capture", "account_snapshot", "provider_sdk", "other"];
2327
- type TelemetryRequestCategory = (typeof TELEMETRY_REQUEST_CATEGORIES)[number];
2328
- declare const TELEMETRY_STATUS_CLASSES: readonly ["2xx", "3xx", "4xx", "5xx", "network_error", "timeout", "unknown"];
2329
- type TelemetryStatusClass = (typeof TELEMETRY_STATUS_CLASSES)[number];
2330
- declare const TELEMETRY_CHECKOUT_MODES: readonly ["full", "auto", "confirm", "setup", "unknown"];
2331
- type TelemetryCheckoutMode = (typeof TELEMETRY_CHECKOUT_MODES)[number];
2332
- declare const TELEMETRY_LAYOUTS: readonly ["embedded", "buttons", "automatic", "unknown"];
2333
- type TelemetryLayout = (typeof TELEMETRY_LAYOUTS)[number];
2334
- declare const TELEMETRY_DURATION_MODES: readonly ["machine", "buyer", "total"];
2335
- type TelemetryDurationMode = (typeof TELEMETRY_DURATION_MODES)[number];
2336
- declare const TELEMETRY_EXPECTED_OUTCOMES: readonly ["action_required", "card_setup_declined", "card_setup_succeeded", "customer_abandoned", "payment_cancelled", "payment_declined", "payment_authorized", "payment_succeeded", "validation_rejected"];
2337
- type TelemetryExpectedOutcome = (typeof TELEMETRY_EXPECTED_OUTCOMES)[number];
2338
- interface TelemetryCommonFields {
2339
- eventId: string;
2340
- stage: TelemetryStage;
2341
- sequence: number;
2342
- provider?: TelemetryProvider;
2343
- attempt?: number;
2344
- statusClass?: TelemetryStatusClass;
2345
- requestCategory?: TelemetryRequestCategory;
2346
- paymentMethodCategory?: TelemetryPaymentMethodCategory;
2347
- checkoutMode?: TelemetryCheckoutMode;
2348
- layout?: TelemetryLayout;
2349
- }
2350
- interface BuildTelemetryCommonInput {
2351
- eventId: string;
2352
- stage: TelemetryStage;
2353
- sequence: number;
2354
- provider?: TelemetryProviderInput;
2355
- attempt?: number;
2356
- statusClass?: TelemetryStatusClass;
2357
- requestCategory?: TelemetryRequestCategory;
2358
- paymentMethodCategory?: TelemetryPaymentMethodCategory;
2359
- checkoutMode?: TelemetryCheckoutMode;
2360
- layout?: TelemetryLayout;
2361
- }
2362
- interface TelemetryErrorEvent extends TelemetryCommonFields {
2363
- class: 'technical_error';
2364
- code: TelemetryErrorCode;
2365
- failureCategory?: TelemetryFailureCategory;
2366
- }
2367
- interface BuildTelemetryErrorEventInput extends BuildTelemetryCommonInput {
2368
- errorCode: TelemetryErrorCode;
2369
- failureCategory?: TelemetryFailureCategory;
2370
- }
2371
- interface TelemetryLogEvent extends TelemetryCommonFields {
2372
- class: 'lifecycle';
2373
- name: TelemetryLogName;
2374
- }
2375
- interface BuildTelemetryLogEventInput extends BuildTelemetryCommonInput {
2376
- name: TelemetryLogName;
2377
- }
2378
- interface TelemetryExpectedOutcomeEvent extends TelemetryCommonFields {
2379
- class: 'expected_outcome';
2380
- outcome: TelemetryExpectedOutcome;
2381
- }
2382
- interface BuildTelemetryTerminalEventInput extends Omit<BuildTelemetryCommonInput, 'stage'> {
2383
- outcome: TelemetryExpectedOutcome;
2384
- stage?: TelemetryStage;
2385
- }
2386
- interface TelemetryPerformanceEvent extends TelemetryCommonFields {
2387
- class: 'performance';
2388
- durationMs: number;
2389
- /** True when the measured duration exceeded the bounded wire value. */
2390
- durationTruncated?: true;
2391
- durationMode: TelemetryDurationMode;
2392
- }
2393
- interface BuildTelemetryPerformanceEventInput extends BuildTelemetryCommonInput {
2394
- durationMs: number;
2395
- /** Preserves a previously sanitized truncation marker during serialization. */
2396
- durationTruncated?: boolean;
2397
- durationMode: TelemetryDurationMode;
2398
- }
2399
- type TelemetryEvent = TelemetryErrorEvent | TelemetryLogEvent | TelemetryExpectedOutcomeEvent | TelemetryPerformanceEvent;
2400
- interface SerializeTelemetryBatchOptions {
2401
- correlationId: string;
2402
- sdkPackage: TelemetrySdkPackage;
2403
- sdkVersion: string;
2404
- batchId?: string;
2405
- }
2406
- interface TelemetryBatchEnvelope {
2407
- schemaVersion: typeof TELEMETRY_SCHEMA_VERSION;
2408
- batchId: string;
2409
- correlationId: string;
2410
- sdk: {
2411
- package: TelemetrySdkPackage;
2412
- version: string;
2413
- };
2414
- events: TelemetryEvent[];
2415
- }
2416
- /** Build a closed SDK technical-error event. */
2417
- declare function buildTelemetryErrorEvent(input: BuildTelemetryErrorEventInput): TelemetryErrorEvent;
2418
- /** Build a typed SDK lifecycle event; arbitrary text is never accepted. */
2419
- declare function buildTelemetryLogEvent(input: BuildTelemetryLogEventInput): TelemetryLogEvent;
2420
- /** Build a non-error expected checkout outcome. */
2421
- declare function buildTelemetryTerminalEvent(input: BuildTelemetryTerminalEventInput): TelemetryExpectedOutcomeEvent;
2422
- /** Build a monotonic SDK-owned duration measurement. */
2423
- declare function buildTelemetryPerformanceEvent(input: BuildTelemetryPerformanceEventInput): TelemetryPerformanceEvent;
2424
- /** Serialize one closed backend-owned v1 telemetry envelope. */
2425
- declare function serializeTelemetryBatch(events: readonly TelemetryEvent[], options: SerializeTelemetryBatchOptions): string;
2426
-
2427
2429
  interface ClassifiedTelemetryFailure {
2428
2430
  errorCode: TelemetryErrorCode;
2429
2431
  statusClass: TelemetryStatusClass;