@corbado/observe 1.7.2 → 1.9.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.
Files changed (76) hide show
  1. package/dist/analysis/client.mjs +1877 -0
  2. package/dist/analysis/config-manager.mjs +108 -0
  3. package/dist/analysis/config.mjs +216 -0
  4. package/dist/analysis/device-info-manager.mjs +168 -0
  5. package/dist/analysis/device.mjs +640 -0
  6. package/dist/analysis/handoff.mjs +7 -0
  7. package/dist/analysis/index.mjs +118 -0
  8. package/dist/analysis/logger.mjs +50 -0
  9. package/dist/analysis/low-events/capture-sequence.mjs +11 -0
  10. package/dist/analysis/low-events/ceremony-initiator.mjs +26 -0
  11. package/dist/analysis/low-events/form-input-binding.mjs +46 -0
  12. package/dist/analysis/low-events/grouped-input-tracker.mjs +248 -0
  13. package/dist/analysis/low-events/input-change-recorder.mjs +200 -0
  14. package/dist/analysis/low-events/input-tracker.mjs +302 -0
  15. package/dist/analysis/low-events/otp-input-binding.mjs +67 -0
  16. package/dist/analysis/low-events/shared-window-observer.mjs +296 -0
  17. package/dist/analysis/low-events/sink.mjs +0 -0
  18. package/dist/analysis/low-events/viewport-batcher.mjs +42 -0
  19. package/dist/analysis/low-events/window-tracker.mjs +40 -0
  20. package/dist/analysis/queue.mjs +954 -0
  21. package/dist/analysis/readers/device.mjs +73 -0
  22. package/dist/analysis/readers/input-paste.mjs +91 -0
  23. package/dist/analysis/readers/input.mjs +61 -0
  24. package/dist/analysis/readers/loader-global.mjs +15 -0
  25. package/dist/analysis/readers/meta.mjs +18 -0
  26. package/dist/analysis/readers/network.mjs +14 -0
  27. package/dist/analysis/readers/page.mjs +30 -0
  28. package/dist/analysis/readers/password-manager-dom.mjs +112 -0
  29. package/dist/analysis/readers/password-manager-extensions.mjs +247 -0
  30. package/dist/analysis/readers/private-mode.mjs +9 -0
  31. package/dist/analysis/readers/storage.mjs +28 -0
  32. package/dist/analysis/readers/web-lock.mjs +56 -0
  33. package/dist/analysis/readers/window-events.mjs +48 -0
  34. package/dist/analysis/storage/index.mjs +249 -0
  35. package/dist/analysis/storage/migration.mjs +56 -0
  36. package/dist/analysis/store/event-store.mjs +132 -0
  37. package/dist/analysis/transport.mjs +0 -0
  38. package/dist/analysis/transports/fetch.mjs +150 -0
  39. package/dist/analysis/types.mjs +25 -0
  40. package/dist/analysis/utils/appconfirmation-operation-full.mjs +19 -0
  41. package/dist/analysis/utils/blocked-user-agents.mjs +37 -0
  42. package/dist/analysis/utils/captcha-operation-full.mjs +17 -0
  43. package/dist/analysis/utils/email-link-continuity.mjs +50 -0
  44. package/dist/analysis/utils/email-link-operation-full.mjs +162 -0
  45. package/dist/analysis/utils/email-otp-operation-full.mjs +38 -0
  46. package/dist/analysis/utils/form-operation-full.mjs +80 -0
  47. package/dist/analysis/utils/key-operation-full.mjs +38 -0
  48. package/dist/analysis/utils/normalize-error.mjs +29 -0
  49. package/dist/analysis/utils/operation-full-provide-identifier-with-cui.mjs +46 -0
  50. package/dist/analysis/utils/operation-full.mjs +235 -0
  51. package/dist/analysis/utils/passkey-deletion-operation-full.mjs +17 -0
  52. package/dist/analysis/utils/passkey-enrollment-operation-full.mjs +35 -0
  53. package/dist/analysis/utils/passkey-login-operation-full.mjs +39 -0
  54. package/dist/analysis/utils/password-enrollment-operation-full.mjs +27 -0
  55. package/dist/analysis/utils/password-login-operation-full.mjs +65 -0
  56. package/dist/analysis/utils/password-manager-sampler.mjs +170 -0
  57. package/dist/analysis/utils/provide-data-operation-full.mjs +28 -0
  58. package/dist/analysis/utils/serialize-raw-error.mjs +205 -0
  59. package/dist/analysis/utils/sms-otp-operation-full.mjs +38 -0
  60. package/dist/analysis/utils/social-operation-login.mjs +17 -0
  61. package/dist/analysis/utils/source-path.mjs +39 -0
  62. package/dist/analysis/utils/sso-operation-login.mjs +37 -0
  63. package/dist/analysis/utils/totp-operation-full.mjs +34 -0
  64. package/dist/analysis/utils/trusted-device-operation-full.mjs +100 -0
  65. package/dist/analysis/utils/webauthn-payloads.mjs +101 -0
  66. package/dist/analysis/version.mjs +7 -0
  67. package/dist/cdn/script.global.js +4 -4
  68. package/dist/index.d.mts +285 -21
  69. package/dist/index.d.ts +285 -21
  70. package/dist/index.js +4 -4
  71. package/dist/index.mjs +4 -4
  72. package/package.json +10 -3
  73. package/tools/reader-meta-text.d.mts +2 -0
  74. package/tools/reader-meta-text.mjs +26 -0
  75. package/tools/strip-reader-meta.d.mts +33 -0
  76. package/tools/strip-reader-meta.mjs +131 -0
package/dist/index.d.mts CHANGED
@@ -1,3 +1,90 @@
1
+ /**
2
+ * Reader metadata: the declaration every browser read in `src/readers/**` carries.
3
+ *
4
+ * Readers are the only SDK modules meant to touch browser globals (navigator, document, window,
5
+ * storage, ...). Each reader call takes a literal {@link ReaderMeta} object naming the collection
6
+ * item it produces, the fields it collects and their exposure. The metadata has no runtime effect;
7
+ * a static analysis of an (unminified) bundle reads the literals at the reachable call sites to
8
+ * derive the collection manifest of a build, so a call removed by dead-code elimination also
9
+ * removes its item from the manifest.
10
+ *
11
+ * Vocabulary follows the collection manifest data model v1 (`corbado.collection/v1`). Call sites with the
12
+ * same `key` describe one item (the extractor merges them). `title`, `group` and `origin` are optional in
13
+ * the type (additive); every SDK call site declares them (`scripts/check-browser-globals.mjs` enforces it).
14
+ *
15
+ * @internal
16
+ */
17
+ /**
18
+ * How much of a value is collected, ordered from least to most exposed.
19
+ * See {@link READER_EXPOSURES} for the order.
20
+ */
21
+ type ReaderExposure = "none" | "presence" | "size" | "class" | "format" | "partial" | "enum" | "computed" | "token" | "pseudonym" | "redacted" | "raw";
22
+ /** All exposures, least to most exposed. */
23
+ declare const READER_EXPOSURES: readonly ReaderExposure[];
24
+ /** Parameters of an exposure (which ones apply depends on the exposure). */
25
+ type ReaderTransform = {
26
+ /** `presence`, `enum`: the possible values. */
27
+ values?: readonly (string | number | boolean | null)[];
28
+ /** `size`: bucket boundaries, when bucketed. */
29
+ buckets?: readonly number[];
30
+ /** `class`: the possible classes. */
31
+ classes?: readonly string[];
32
+ /** `format`: the kept structure. */
33
+ format?: string;
34
+ /** `partial`: which part is kept. */
35
+ keep?: string;
36
+ /** `token`: the restrictive pattern a kept value must match, and its maximum length. */
37
+ pattern?: string;
38
+ max?: number;
39
+ /** `pseudonym`: how the value is derived. */
40
+ scheme?: string;
41
+ /** `redacted`: the removed parts. */
42
+ removed?: readonly string[];
43
+ /** Free text, e.g. for `computed`. */
44
+ note?: string;
45
+ };
46
+ /** One collected field of a reader item. */
47
+ type ReaderField = {
48
+ /** Identity within the item, e.g. `result.isPrivate` or `signals[]`. */
49
+ path: string;
50
+ exposure: ReaderExposure;
51
+ transform?: ReaderTransform;
52
+ /**
53
+ * Customer-readable label of the field: WHAT it is, in plain language (not why it is collected), e.g.
54
+ * `Operating system version`. Same rule as `title` (`customerTextProblem`); the panel shows it instead of
55
+ * the path. Every SDK field declares one (`scripts/check-browser-globals.mjs` enforces it).
56
+ */
57
+ label?: string;
58
+ };
59
+ /** Build-time data switch a reader item depends on (see `FixedDataConfig`). */
60
+ type ReaderDataConfigKey = "pmd" | "privateMode";
61
+ /**
62
+ * Where a collected value comes from: `observe-external` = the user's page or browser;
63
+ * `observe-internal` = written or generated by Observe itself (own `cbo_*` storage, loader globals,
64
+ * generated ids, own endpoints); `host-config` = provided by the customer's integration.
65
+ */
66
+ type ReaderOrigin = "observe-external" | "observe-internal" | "host-config";
67
+ /** Literal metadata passed to every reader call. */
68
+ type ReaderMeta = {
69
+ /** Stable item key `<kind>:<namespace>.<name>`, e.g. `browser-api:device.webdriver`. */
70
+ key: string;
71
+ /**
72
+ * Customer-readable title of the item: plain language for a customer's PM or security owner, no API names,
73
+ * globals, config keys or code (`scripts/check-browser-globals.mjs` enforces it).
74
+ */
75
+ title?: string;
76
+ /** Technical detail behind the title: the browser APIs, globals, events or keys the reader touches. */
77
+ accessNote?: string;
78
+ /** Customer-facing group label (fixed per SDK reader), e.g. `Device information`. */
79
+ group?: string;
80
+ /** Where the value comes from (see {@link ReaderOrigin}). */
81
+ origin?: ReaderOrigin;
82
+ /** Fields the reader makes reachable; everything else read stays inside the reader. */
83
+ fields: readonly ReaderField[];
84
+ /** The data switch that removes this item from builds that turn it off. */
85
+ dataConfig?: ReaderDataConfigKey;
86
+ };
87
+
1
88
  type PasswordManagerExtensionName = "1password" | "bitwarden" | "dashlane" | "kaspersky" | "keeper" | "lastpass" | "nordpass" | "protonpass";
2
89
  type PasswordManagerExtension = {
3
90
  name: PasswordManagerExtensionName;
@@ -394,6 +481,12 @@ interface EventBatchMeta {
394
481
  * receives per session (last write wins), so the SDK always sends the current value.
395
482
  */
396
483
  dataPolicy?: number;
484
+ /**
485
+ * True when the tracker runs with data-collection switches fixed by the integration
486
+ * (`init({ fixedDataConfig })`) or by the build (`__CBO_DATA_*__` defines), so the data-relevant
487
+ * fields of the server config (`pmd`) are ignored. Omitted otherwise.
488
+ */
489
+ fixedData?: boolean;
397
490
  }
398
491
  interface EventMeta {
399
492
  initiator?: LowEventInitiator;
@@ -580,7 +673,7 @@ interface SdkReliabilityConfig {
580
673
  deviceInfoTiming: boolean;
581
674
  /** Serialize explicitly supplied raw error diagnostics. Defaults to true; refreshes apply to subsequent errors. Already queued events are unchanged. */
582
675
  rawErrors: boolean;
583
- /** Internal: password manager detection switch. Defaults to false. */
676
+ /** Internal: password manager detection switch. Defaults to true. */
584
677
  pmd: boolean;
585
678
  /**
586
679
  * How far autocapture may attach when another integration already holds the surface it
@@ -603,11 +696,47 @@ interface SdkReliabilityConfig {
603
696
  /** Retry configuration for failed event flushes. */
604
697
  retry: SdkRetryConfig;
605
698
  }
699
+ /**
700
+ * Data-collection switches fixed by the integration instead of the server config (opt-in, see
701
+ * `TrackerOptions.fixedDataConfig`). Once given, these fields are no longer taken from the server's
702
+ * config or the cached `cbo_sdk_config`; a field left out resolves as documented on the field (`pmd`:
703
+ * off, `privateMode`: on), not from the server config.
704
+ *
705
+ * Builds can fix the same switches at build time with the esbuild/tsup defines `__CBO_DATA_PMD__` and
706
+ * `__CBO_DATA_PRIVATE_MODE__` (booleans), which also remove the disabled code from the bundle. A define
707
+ * wins over this option.
708
+ */
709
+ interface FixedDataConfig {
710
+ /**
711
+ * Password-manager detection.
712
+ *
713
+ * - `true`: the extension probes (reported as {@link Event.passwordManagers}) and the DOM
714
+ * password-manager scan (`pa-1`..`pa-6` lows) run.
715
+ * - `false`: neither runs.
716
+ * - omitted (with `fixedDataConfig` given): the extension probes are off (`pmd` resolves to `false`,
717
+ * regardless of the built-in default, `sdkConfig.pmd` and the server config); the DOM scan keeps
718
+ * today's behaviour and runs.
719
+ *
720
+ * Without `fixedDataConfig` the probes follow the server's `pmd` and the DOM scan always runs.
721
+ */
722
+ pmd?: boolean;
723
+ /**
724
+ * Private-mode detection (`deviceInfo.data.privateMode`, cached in `cbo_pm`). Defaults to true (as
725
+ * without `fixedDataConfig`). When false, nothing is detected, read or written for it.
726
+ */
727
+ privateMode?: boolean;
728
+ }
606
729
  /** Query handling for `meta.trackingSourcePath`; see {@link SdkReliabilityConfig.sourcePathQuery}. */
607
730
  type SourcePathQueryMode = "all" | "allowlist";
608
731
  /** Optional init overrides; omitted fields (including nested retry fields) inherit server policy or defaults. */
609
- type SdkReliabilityConfigOverrides = Partial<Omit<SdkReliabilityConfig, "retry">> & {
732
+ type SdkReliabilityConfigOverrides = Partial<Omit<SdkReliabilityConfig, "retry" | "pmd">> & {
610
733
  retry?: Partial<SdkRetryConfig>;
734
+ /**
735
+ * @deprecated use `fixedDataConfig.pmd`. Data-collection switches set by an integration belong in
736
+ * {@link FixedDataConfig}. Still works as before when `fixedDataConfig` is not given; when it is
737
+ * given, `fixedDataConfig` decides and this field is ignored.
738
+ */
739
+ pmd?: boolean;
611
740
  };
612
741
 
613
742
  /**
@@ -625,6 +754,12 @@ interface LowEventSink {
625
754
  settle(tailMs: number): void;
626
755
  destroy(): void;
627
756
  };
757
+ /**
758
+ * Whether the DOM password-manager scan (`pa-1`..`pa-6` lows) may run. Absent or true keeps the
759
+ * historical behaviour (always scan); false only under `fixedDataConfig` with `pmd` explicitly
760
+ * `false` (an omitted `pmd` keeps the scan on).
761
+ */
762
+ passwordManagerDomScan?(): boolean;
628
763
  }
629
764
 
630
765
  /**
@@ -924,9 +1059,7 @@ declare class SharedWindowObserver {
924
1059
  /** Flush all registered input batches before a high-level lifecycle boundary. */
925
1060
  flushInputs(): void;
926
1061
  private emit;
927
- private listen;
928
1062
  private extendViewport;
929
- private observeNavigation;
930
1063
  destroy(): void;
931
1064
  }
932
1065
 
@@ -959,6 +1092,7 @@ declare class NamespacedStorage implements StorageEngine {
959
1092
  }
960
1093
  declare class LocalStorage implements StorageEngine {
961
1094
  private logger;
1095
+ private readonly area;
962
1096
  constructor(logger: Logger);
963
1097
  /**
964
1098
  * Error situations:
@@ -984,6 +1118,7 @@ declare class LocalStorage implements StorageEngine {
984
1118
  declare class CookieStorage implements StorageEngine {
985
1119
  private logger;
986
1120
  private domain?;
1121
+ private readonly jar;
987
1122
  constructor(logger: Logger, domain?: string | undefined);
988
1123
  /**
989
1124
  * Error situations:
@@ -1009,6 +1144,7 @@ declare class CookieStorage implements StorageEngine {
1009
1144
  }
1010
1145
  declare class SessionStorage implements StorageEngine {
1011
1146
  private logger;
1147
+ private readonly area;
1012
1148
  constructor(logger: Logger);
1013
1149
  /**
1014
1150
  * Error situations:
@@ -1032,6 +1168,55 @@ declare class SessionStorage implements StorageEngine {
1032
1168
  removeItem(key: string): void;
1033
1169
  }
1034
1170
 
1171
+ declare const INPUT_HANDOFF: unique symbol;
1172
+ declare const WEBAUTHN_PAYLOAD_HANDOFF: unique symbol;
1173
+ declare const WEBAUTHN_ERROR_HANDOFF: unique symbol;
1174
+ /**
1175
+ * An input element released to the SDK input tracking only (e.g. by `@corbado/autocapture`'s
1176
+ * `dom.handoff`). Opaque: it has no readable members, so project code cannot inspect the element
1177
+ * without a cast. Pass it straight to an `inputHtmlField` / `inputHtmlFields` /
1178
+ * `identifierInputHtmlField` option or to `setInputFields`. At runtime it is the element itself.
1179
+ */
1180
+ type SdkInputHandoff = {
1181
+ readonly [INPUT_HANDOFF]: "sdk:input-tracking";
1182
+ };
1183
+ /**
1184
+ * Sanitized WebAuthn payload JSON released to the SDK passkey operation APIs only (e.g. by
1185
+ * `@corbado/autocapture`'s `webauthnPayload`). Opaque: it has no readable members. Pass it straight to
1186
+ * `assertionOptions`, `assertionResponse`, `attestationOptions` or `attestationResponse`. At runtime it
1187
+ * is the JSON string itself.
1188
+ */
1189
+ type SdkWebAuthnPayload = {
1190
+ readonly [WEBAUTHN_PAYLOAD_HANDOFF]: "sdk:webauthn-payload";
1191
+ };
1192
+ /**
1193
+ * The unchanged WebAuthn ceremony rejection released to the SDK ceremony error API only (e.g. by
1194
+ * `@corbado/autocapture`'s `webauthnError`). Opaque: it has no readable members. Pass it straight to a
1195
+ * step's `error(error)`, which accepts any value. At runtime it is the rejection itself.
1196
+ */
1197
+ type SdkWebAuthnError = {
1198
+ readonly [WEBAUTHN_ERROR_HANDOFF]: "sdk:webauthn-error";
1199
+ };
1200
+ type InputHandoffKey = "inputHtmlField" | "identifierInputHtmlField";
1201
+ type InputListHandoffKey = "inputHtmlFields";
1202
+ type PayloadHandoffKey = "assertionOptions" | "assertionResponse" | "attestationOptions" | "attestationResponse";
1203
+ /**
1204
+ * `T` with its input-element and WebAuthn payload options widened to also take the opaque handoffs.
1205
+ * Used only by the additive handoff overloads; the original option types are unchanged.
1206
+ */
1207
+ type WithHandoffs<T> = {
1208
+ [K in keyof T]: K extends InputHandoffKey ? T[K] | SdkInputHandoff : K extends InputListHandoffKey ? T[K] | readonly (HTMLInputElement | SdkInputHandoff)[] : K extends PayloadHandoffKey ? T[K] | SdkWebAuthnPayload : T[K];
1209
+ };
1210
+ /**
1211
+ * A step whose `start` / `finished` also take the opaque handoffs (additive overloads). The
1212
+ * {@link StepHelper} signatures stay as they are and come last, so `Parameters<…>` and existing
1213
+ * assignments to `StepHelper` resolve exactly as before.
1214
+ */
1215
+ type HandoffStepHelper<TStart = {}, TFinished = {}, TTypedError = never> = {
1216
+ start(data: WithHandoffs<TStart>, options?: StepOptions): void;
1217
+ finished(data: WithHandoffs<TFinished>, options?: StepOptions): void;
1218
+ } & StepHelper<TStart, TFinished, TTypedError>;
1219
+
1035
1220
  type PasskeyOperationLoginExplicitSpecType = "passkey-cui" | "passkey-known-identifier" | "passkey-no-identifier"
1036
1221
  /**
1037
1222
  * The `-auto` variants are the same two ceremonies started by the integration rather than by a
@@ -1075,9 +1260,9 @@ type PasskeyLoginOperationConfig = {
1075
1260
  explicitSpecType?: PasskeyOperationLoginExplicitSpecType;
1076
1261
  };
1077
1262
  declare class PasskeyLoginOperationFull extends OperationFull {
1078
- readonly getOptions: StepHelper<PasskeyLoginGetOptionsStart, PasskeyLoginGetOptionsFinished>;
1079
- readonly ceremony: StepHelper<PasskeyLoginCeremonyStart, PasskeyLoginCeremonyFinished>;
1080
- readonly postResponse: StepHelper<PasskeyLoginPostResponseStart>;
1263
+ readonly getOptions: HandoffStepHelper<PasskeyLoginGetOptionsStart, PasskeyLoginGetOptionsFinished>;
1264
+ readonly ceremony: HandoffStepHelper<PasskeyLoginCeremonyStart, PasskeyLoginCeremonyFinished>;
1265
+ readonly postResponse: HandoffStepHelper<PasskeyLoginPostResponseStart>;
1081
1266
  private lowEventTracker;
1082
1267
  constructor(tracker: CorbadoTracker, config?: PasskeyLoginOperationConfig);
1083
1268
  /**
@@ -1109,7 +1294,11 @@ declare class EmailOtpOperationFull extends OperationFull {
1109
1294
  readonly postResponse: StepHelper<EmailOTPOperationPostResponseStart>;
1110
1295
  readonly resend: StepHelper;
1111
1296
  constructor(tracker: CorbadoTracker, config?: EmailOTPOperationConfig);
1112
- /** Rebind the ordered OTP group without starting a new subflow. An empty list detaches it. */
1297
+ /**
1298
+ * Rebind the ordered OTP group without starting a new subflow. An empty list detaches it.
1299
+ * Also takes opaque {@link SdkInputHandoff}s (additive overload); at runtime they are the input elements.
1300
+ */
1301
+ setInputFields(fields: readonly (HTMLInputElement | SdkInputHandoff)[]): void;
1113
1302
  setInputFields(fields: readonly HTMLInputElement[]): void;
1114
1303
  destroy(): void;
1115
1304
  }
@@ -1130,7 +1319,11 @@ declare class SmsOtpOperationFull extends OperationFull {
1130
1319
  readonly postResponse: StepHelper<SmsOTPOperationPostResponseStart>;
1131
1320
  readonly resend: StepHelper;
1132
1321
  constructor(tracker: CorbadoTracker, config?: SmsOTPOperationConfig);
1133
- /** Rebind the ordered OTP group without starting a new subflow. An empty list detaches it. */
1322
+ /**
1323
+ * Rebind the ordered OTP group without starting a new subflow. An empty list detaches it.
1324
+ * Also takes opaque {@link SdkInputHandoff}s (additive overload); at runtime they are the input elements.
1325
+ */
1326
+ setInputFields(fields: readonly (HTMLInputElement | SdkInputHandoff)[]): void;
1134
1327
  setInputFields(fields: readonly HTMLInputElement[]): void;
1135
1328
  destroy(): void;
1136
1329
  }
@@ -1197,6 +1390,7 @@ declare class EmailLinkContinuationOperation extends OperationFull {
1197
1390
  private started;
1198
1391
  private deferred;
1199
1392
  private readonly onPageHide;
1393
+ private removePageHide?;
1200
1394
  constructor(tracker: CorbadoTracker, config?: EmailLinkContinuationConfig);
1201
1395
  /** Transaction ID of the continued email link, when known. */
1202
1396
  get transactionId(): string | undefined;
@@ -1267,9 +1461,9 @@ type PasskeyEnrollmentOperationConfig = {
1267
1461
  ignoreAsInteraction?: boolean;
1268
1462
  };
1269
1463
  declare class PasskeyEnrollmentOperationFull extends OperationFull {
1270
- readonly getOptions: StepHelper<PasskeyEnrollmentGetOptionsStart, PasskeyEnrollmentGetOptionsFinished>;
1271
- readonly ceremony: StepHelper<PasskeyEnrollmentCeremonyStart, PasskeyEnrollmentCeremonyFinished>;
1272
- readonly postResponse: StepHelper<PasskeyEnrollmentPostResponseStart>;
1464
+ readonly getOptions: HandoffStepHelper<PasskeyEnrollmentGetOptionsStart, PasskeyEnrollmentGetOptionsFinished>;
1465
+ readonly ceremony: HandoffStepHelper<PasskeyEnrollmentCeremonyStart, PasskeyEnrollmentCeremonyFinished>;
1466
+ readonly postResponse: HandoffStepHelper<PasskeyEnrollmentPostResponseStart>;
1273
1467
  private lowEventTracker;
1274
1468
  constructor(tracker: CorbadoTracker, config?: PasskeyEnrollmentOperationConfig);
1275
1469
  destroy(): void;
@@ -1337,8 +1531,8 @@ declare class PasswordLoginOperationFull extends OperationFull {
1337
1531
  * attributed to password-login rather than a separate subflow.
1338
1532
  */
1339
1533
  readonly cui: {
1340
- getOptions: StepHelper<PasswordLoginCUIGetOptionsStart, PasswordLoginCUIGetOptionsFinished>;
1341
- ceremony: StepHelper<PasswordLoginCUICeremonyStart, PasskeyLoginCeremonyFinished, PasswordLoginCUITypedError>;
1534
+ getOptions: HandoffStepHelper<PasswordLoginCUIGetOptionsStart, PasswordLoginCUIGetOptionsFinished>;
1535
+ ceremony: HandoffStepHelper<PasswordLoginCUICeremonyStart, PasskeyLoginCeremonyFinished, PasswordLoginCUITypedError>;
1342
1536
  postResponse: StepHelper;
1343
1537
  };
1344
1538
  private lowEventTracker?;
@@ -1401,9 +1595,9 @@ declare class OperationFullProvideIdentifierWithCUI extends OperationFull {
1401
1595
  * @deprecated `subflow_trigger` will be removed in the next major version.
1402
1596
  */
1403
1597
  trigger: (data: SubflowTrigger, options?: StepOptions) => void;
1404
- getOptions: StepHelper<PasskeyLoginCUIGetOptionsStart, PasskeyLoginCUIGetOptionsFinished>;
1405
- ceremony: StepHelper<CUICeremonyStart, PasskeyLoginCeremonyFinished, PasskeyLoginCUITypedError>;
1406
- postResponse: StepHelper<PasskeyLoginPostResponseStart>;
1598
+ getOptions: HandoffStepHelper<PasskeyLoginCUIGetOptionsStart, PasskeyLoginCUIGetOptionsFinished>;
1599
+ ceremony: HandoffStepHelper<CUICeremonyStart, PasskeyLoginCeremonyFinished, PasskeyLoginCUITypedError>;
1600
+ postResponse: HandoffStepHelper<PasskeyLoginPostResponseStart>;
1407
1601
  };
1408
1602
  readonly provideIdentifier: {
1409
1603
  /**
@@ -1483,7 +1677,11 @@ declare class TotpOperationFull extends OperationFull {
1483
1677
  private lowEventTracker?;
1484
1678
  readonly postResponse: StepHelper<TotpOperationPostResponseStart>;
1485
1679
  constructor(tracker: CorbadoTracker, config?: TotpOperationConfig);
1486
- /** Rebind the ordered code input group without starting a new subflow. An empty list detaches it. */
1680
+ /**
1681
+ * Rebind the ordered code input group without starting a new subflow. An empty list detaches it.
1682
+ * Also takes opaque {@link SdkInputHandoff}s (additive overload); at runtime they are the input elements.
1683
+ */
1684
+ setInputFields(fields: readonly (HTMLInputElement | SdkInputHandoff)[]): void;
1487
1685
  setInputFields(fields: readonly HTMLInputElement[]): void;
1488
1686
  destroy(): void;
1489
1687
  }
@@ -1560,7 +1758,11 @@ declare class FormOperationFull extends OperationFull {
1560
1758
  readonly skip: StepHelper;
1561
1759
  private readonly inputBinding?;
1562
1760
  constructor(tracker: CorbadoTracker, config: FormOperationConfig);
1563
- /** Bind the fields the form shows now, without starting a new subflow. An empty list detaches all. */
1761
+ /**
1762
+ * Bind the fields the form shows now, without starting a new subflow. An empty list detaches all.
1763
+ * Also takes opaque {@link SdkInputHandoff}s (additive overload); at runtime they are the input elements.
1764
+ */
1765
+ setInputFields(fields: readonly (HTMLInputElement | SdkInputHandoff)[]): void;
1564
1766
  setInputFields(fields: readonly HTMLInputElement[]): void;
1565
1767
  destroy(): void;
1566
1768
  }
@@ -1647,8 +1849,17 @@ interface TrackerOptions {
1647
1849
  projectId: string;
1648
1850
  apiBaseUrl: string;
1649
1851
  apiEventPath?: string;
1650
- /** Per-field overrides over server config and defaults. A complete policy disables remote fetching. */
1852
+ /**
1853
+ * Per-field overrides over server config and defaults. A complete policy disables remote fetching.
1854
+ * Data-collection switches (`pmd`) are deprecated here: use {@link TrackerOptions.fixedDataConfig}.
1855
+ */
1651
1856
  sdkConfig?: SdkReliabilityConfigOverrides;
1857
+ /**
1858
+ * Opt-in: fix the data-collection switches (password-manager and private-mode detection) instead of
1859
+ * taking them from the server config or the cached `cbo_sdk_config`. Batches then carry
1860
+ * `meta.fixedData: true`. Omitted (default): unchanged, server-driven behaviour. See {@link FixedDataConfig}.
1861
+ */
1862
+ fixedDataConfig?: FixedDataConfig;
1652
1863
  /** Config endpoint override for integrations that proxy Observe under a different path. */
1653
1864
  apiConfigPath?: string;
1654
1865
  storage?: "cookie" | "local";
@@ -1705,6 +1916,8 @@ declare class CorbadoTracker {
1705
1916
  private config;
1706
1917
  private readonly configManager?;
1707
1918
  private readonly configOverrides;
1919
+ /** Resolved `fixedDataConfig`; undefined when not given (server-driven data switches). */
1920
+ private readonly fixedData?;
1708
1921
  private deviceInfoManager;
1709
1922
  private deviceCollector;
1710
1923
  /**
@@ -2197,6 +2410,14 @@ declare class CorbadoTracker {
2197
2410
  * @internal
2198
2411
  */
2199
2412
  flushKeepalive(reason?: FlushReason): void;
2413
+ /**
2414
+ * Whether input trackers run the DOM password-manager scan (`pa-1`..`pa-6` lows): only an explicitly
2415
+ * set `fixedDataConfig.pmd` decides; without `fixedDataConfig` or with `pmd` omitted it always runs
2416
+ * (historical behaviour).
2417
+ *
2418
+ * @internal
2419
+ */
2420
+ isPasswordManagerDomScanEnabled(): boolean;
2200
2421
  /**
2201
2422
  * Keepalive flush requested by a low-event tracker's `pagehide` teardown. Gated by the
2202
2423
  * server-controlled trigger switch `tlf` (boot-snapshot, default true = historical behavior):
@@ -2238,7 +2459,11 @@ declare class CorbadoTracker {
2238
2459
  * ```
2239
2460
  */
2240
2461
  passkeyDeletionOperationFull(config?: PasskeyDeletionOperationConfig): PasskeyDeletionOperationFull;
2462
+ /** Also accepts an opaque `SdkInputHandoff` wherever the config takes an input element (additive overload). */
2463
+ passwordLoginFullOperation(autoTrackConfig?: WithHandoffs<PasswordLoginConfig>): PasswordLoginOperationFull;
2241
2464
  passwordLoginFullOperation(autoTrackConfig?: PasswordLoginConfig): PasswordLoginOperationFull;
2465
+ /** Also accepts an opaque `SdkInputHandoff` wherever the config takes an input element (additive overload). */
2466
+ passwordEnrollmentFullOperation(autoTrackConfig?: WithHandoffs<PasswordEnrollmentConfig>): PasswordEnrollmentOperationFull;
2242
2467
  passwordEnrollmentFullOperation(autoTrackConfig?: PasswordEnrollmentConfig): PasswordEnrollmentOperationFull;
2243
2468
  emailLinkOperationFull(config?: EmailLinkOperationConfig): EmailLinkOperationFull;
2244
2469
  /**
@@ -2247,7 +2472,11 @@ declare class CorbadoTracker {
2247
2472
  * the backend joins to page 1 through the transaction ID. See {@link EmailLinkContinuationOperation}.
2248
2473
  */
2249
2474
  continueEmailLinkOperation(config?: EmailLinkContinuationConfig): EmailLinkContinuationOperation;
2475
+ /** Also accepts an opaque `SdkInputHandoff` wherever the config takes an input element (additive overload). */
2476
+ emailOtpOperationFull(config?: WithHandoffs<EmailOTPOperationConfig>): EmailOtpOperationFull;
2250
2477
  emailOtpOperationFull(config?: EmailOTPOperationConfig): EmailOtpOperationFull;
2478
+ /** Also accepts an opaque `SdkInputHandoff` wherever the config takes an input element (additive overload). */
2479
+ smsOtpOperationFull(config?: WithHandoffs<SmsOTPOperationConfig>): SmsOtpOperationFull;
2251
2480
  smsOtpOperationFull(config?: SmsOTPOperationConfig): SmsOtpOperationFull;
2252
2481
  /**
2253
2482
  * Track a code from an authenticator app (TOTP) through its verification.
@@ -2263,9 +2492,16 @@ declare class CorbadoTracker {
2263
2492
  * totp.postResponse.start({});
2264
2493
  * totp.postResponse.finished({});
2265
2494
  * ```
2495
+ *
2496
+ * Also accepts an opaque `SdkInputHandoff` wherever the config takes an input element (additive overload).
2266
2497
  */
2498
+ totpOperationFull(config?: WithHandoffs<TotpOperationConfig>): TotpOperationFull;
2267
2499
  totpOperationFull(config?: TotpOperationConfig): TotpOperationFull;
2500
+ /** Also accepts an opaque `SdkInputHandoff` wherever the config takes an input element (additive overload). */
2501
+ provideIdentifierOperationFull(config?: WithHandoffs<OperationFullProvideIdentifierWithCUIConfig>): OperationFullProvideIdentifierWithCUI;
2268
2502
  provideIdentifierOperationFull(config?: OperationFullProvideIdentifierWithCUIConfig): OperationFullProvideIdentifierWithCUI;
2503
+ /** Also accepts an opaque `SdkInputHandoff` wherever the config takes an input element (additive overload). */
2504
+ provideDataOperationFull(config?: WithHandoffs<ProvideDataOperationConfig>): ProvideDataOperationFull;
2269
2505
  provideDataOperationFull(config?: ProvideDataOperationConfig): ProvideDataOperationFull;
2270
2506
  /**
2271
2507
  * Track one form: a page, step or modal where the user provides one coherent set of data and submits
@@ -2292,7 +2528,10 @@ declare class CorbadoTracker {
2292
2528
  * form.submit.error(error);
2293
2529
  * }
2294
2530
  * ```
2531
+ *
2532
+ * Also accepts an opaque `SdkInputHandoff` wherever the config takes an input element (additive overload).
2295
2533
  */
2534
+ formOperationFull(config: WithHandoffs<FormOperationConfig>): FormOperationFull;
2296
2535
  formOperationFull(config: FormOperationConfig): FormOperationFull;
2297
2536
  /**
2298
2537
  * Track a social login with an external provider (e.g. Google, Apple).
@@ -2547,6 +2786,11 @@ interface QueueOptions {
2547
2786
  * none has ever been set. Read at send time so a change applies to the next batch without a flush.
2548
2787
  */
2549
2788
  getDataPolicy?: () => number | undefined;
2789
+ /**
2790
+ * Stamp `meta.fixedData: true` on every batch: the tracker's data switches are fixed by the
2791
+ * integration or the build, so the server's data flags are ignored. Omitted (no meta field) when false.
2792
+ */
2793
+ fixedData?: boolean;
2550
2794
  /**
2551
2795
  * Called with the events of every event batch right before it is sent (async and unload flushes),
2552
2796
  * before the batch's telemetry is taken. The tracker uses it to attach a device info snapshot that
@@ -2624,12 +2868,15 @@ declare class RequestQueue {
2624
2868
  private dirtySinceSyncFlush;
2625
2869
  private onVisibilityChange;
2626
2870
  private onPageHide;
2871
+ private removeVisibilityChange;
2872
+ private removePageHide;
2627
2873
  private readonly batchSize;
2628
2874
  private readonly flushIntervalOverride?;
2629
2875
  private readonly debug;
2630
2876
  private readonly requestConfig;
2631
2877
  private readonly onConfigReceived?;
2632
2878
  private readonly getDataPolicy?;
2879
+ private readonly fixedData;
2633
2880
  private readonly beforeEventBatchSend?;
2634
2881
  private readonly standaloneDeviceInfo?;
2635
2882
  /** Current delivery policy, including live updates. */
@@ -2884,6 +3131,23 @@ declare const DEFAULT_RELIABILITY_CONFIG: SdkReliabilityConfig;
2884
3131
  declare function parseReliabilityConfig(raw: unknown): SdkReliabilityConfig | null;
2885
3132
  /** Resolve init overrides over validated server policy, then defaults, including individual retry fields. */
2886
3133
  declare function resolveReliabilityConfig(serverConfig: SdkReliabilityConfig | undefined, overrides?: SdkReliabilityConfigOverrides): SdkReliabilityConfig;
3134
+ /** Effective fixed data switches; every field resolved. */
3135
+ type ResolvedFixedDataConfig = Required<FixedDataConfig> & {
3136
+ /**
3137
+ * Whether `pmd` was set explicitly (a boolean). Only an explicit `pmd` gates the DOM password-manager
3138
+ * scan (`pa-1`..`pa-6`); an omitted `pmd` turns the extension probes off but leaves the scan on.
3139
+ */
3140
+ pmdExplicit: boolean;
3141
+ };
3142
+ /**
3143
+ * Resolve `init({ fixedDataConfig })`. Returns `undefined` (not fixed: server-driven, today's behaviour)
3144
+ * unless the option is an object. A missing or non-boolean `pmd` resolves to `false` (not the built-in
3145
+ * default and not `sdkConfig.pmd`: a fixed config collects only what it names) with `pmdExplicit: false`;
3146
+ * a missing or non-boolean `privateMode` resolves to on. Never throws.
3147
+ *
3148
+ * @internal
3149
+ */
3150
+ declare function resolveFixedDataConfig(raw: unknown): ResolvedFixedDataConfig | undefined;
2887
3151
  /** Read the cached config from storage, or `null` if absent/invalid. */
2888
3152
  declare function loadCachedConfig(storage: StorageEngine): SdkReliabilityConfig | null;
2889
3153
  /** Persist the config as last-known so the next page load starts with these features enabled. */
@@ -3062,4 +3326,4 @@ declare function logInfo(message: string): void;
3062
3326
  declare function logError(message: string): void;
3063
3327
  declare function destroy(): Promise<void>;
3064
3328
 
3065
- export { type AppConfirmationOperationCeremonyTypedError, type AppConfirmationOperationConfig, AppConfirmationOperationFull, type AppConfirmationOperationRetryReason, type AppConfirmationOperationSpecType, type AppConfirmationOperationStart, type AuthDecisionFinished, type AuthDecisionStarted, AuthEventName, type AuthMethodDecisionFinished, type AuthMethodDecisionStarted, type AuthMethodType, type BaseEvent, CEREMONY_LOW_EVENT_TAIL_MS, CONFIG_BOUNDS, CONFIG_REQUEST_HEADER, CONFIG_STORAGE_KEY, type CaptchaOperationConfig, CaptchaOperationFull, type CaptchaOperationSpecType, type ClientCapabilities, type ClientEnvHandleMeta, type ClientEnvHandleMetaSource, type Conversion, CookieStorage, CorbadoTracker, type CreateLoggerOptions, type CustomEvent, DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_MAX_ENTRIES, DEFAULT_MAX_SERIALIZED_LENGTH, DEFAULT_RELIABILITY_CONFIG, DEFAULT_SEQ_LOCK_TIMEOUT_MS, DEFAULT_SESSION_INACTIVITY_MS, type DeviceInfo, type DeviceInfoCollectionError, type DeviceInfoDataWeb, type DeviceType, type EmailLinkContinuationConfig, EmailLinkContinuationOperation, type EmailLinkOperationConfig, EmailLinkOperationFull, type EmailLinkOperationPostResponseStart, type EmailLinkOperationSendStart, type EmailLinkOperationSpecType, type EmailOTPOperationConfig, type EmailOTPOperationPostResponseStart, type EmailOTPOperationSendOTPStart, type EmailOTPOperationSpecType, EmailOtpOperationFull, type ErrorStepOptions, type Event, type EventBatch, type EventBatchMeta, type EventMeta, EventStore, type EventType, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, type JavaScriptHighEntropy, type KeyOperationConfig, KeyRegistrationOperationFull, KeySigningOperationFull, LocalStorage, type Logger, type LowEvent, type LowEventFieldRole, type LowEventInitiator, type LowEventInputEffect, type LowEventSourceKind, type MultiFlowReset, type MultiFlowStarted, NamespacedStorage, type NormalizedError, OUTBOX_LOCK_NAME, OUTBOX_STORAGE_KEY, type ObserveSdkConfigSnapshot, OperationFull, OperationFullProvideIdentifierWithCUI, type OperationFullProvideIdentifierWithCUIConfig, type OutboxEntry, PROBE_BATCH_MAX_BYTES, PROBE_BATCH_MAX_ITEMS, PROBE_PAYLOAD_MAX_BYTES, PROBE_QUEUE_MAX_BYTES, PROBE_QUEUE_MAX_ITEMS, type PasskeyDeletionDeletionTypedError, type PasskeyDeletionOperationConfig, PasskeyDeletionOperationFull, type PasskeyDeletionUserConfirmationTypedError, type PasskeyEnrollmentCeremonyFinished, type PasskeyEnrollmentCeremonyStart, type PasskeyEnrollmentGetOptionsFinished, type PasskeyEnrollmentGetOptionsStart, type PasskeyEnrollmentOperationConfig, PasskeyEnrollmentOperationFull, type PasskeyEnrollmentPostResponseStart, type PasskeyLoginCUIGetOptionsFinished, type PasskeyLoginCUIGetOptionsStart, type PasskeyLoginCUISpecType, type PasskeyLoginCeremonyFinished, type PasskeyLoginCeremonyStart, type PasskeyLoginClientError, type PasskeyLoginFinish, type PasskeyLoginGetOptionsFinished, type PasskeyLoginGetOptionsStart, type PasskeyLoginOperationConfig, PasskeyLoginOperationFull, type PasskeyLoginPostResponseStart, type PasskeyLoginStartable, type PasskeyLoginSubmitted, type PasskeyOperationEnrollmentExplicitSpecType, type PasskeyOperationLoginExplicitSpecType, type PasswordEnrollmentConfig, PasswordEnrollmentOperationFull, type PasswordEnrollmentTypedError, type PasswordLoginCUICeremonyStart, type PasswordLoginCUIGetOptionsFinished, type PasswordLoginCUIGetOptionsStart, type PasswordLoginCUISpecType, type PasswordLoginCUITypedError, type PasswordLoginConfig, type PasswordLoginExplicitSpecType, PasswordLoginOperationFull, type PasswordLoginTypedError, type PasswordManagerExtension, type PasswordManagerExtensionName, type PredefinedEvent, type ProbeContext, type ProbeEntry, type ProbeInput, type ProvideDataOperationConfig, ProvideDataOperationFull, type ProvideDataOperationPostResponseStart, type ProvideDataOperationSpecType, type ProvideDataOperationStart, type ProvideIdentifierError, type ProvideIdentifierFinish, type ProvideIdentifierPostResponseStart, type ProvideIdentifierSpecType, type ProvideIdentifierStart, type QueueOptions, RAW_ERROR_BOUNDS, type RawErrorEnvelope, RequestQueue, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SerializeRawErrorOptions, SessionStorage, type SetFlowTagsOptions, type SmsOTPOperationConfig, type SmsOTPOperationPostResponseStart, type SmsOTPOperationSpecType, SmsOtpOperationFull, type SocialLoginEntry, type SocialLoginExchangeCodeFinished, type SocialLoginExchangeCodeStart, type SocialLoginGetRedirectUrlFinished, type SocialLoginGetRedirectUrlStart, type SocialLoginOperationConfig, SocialLoginOperationFull, type SocialLoginProviderType, type SocialLoginSpecType, type SourcePathQueryMode, type SsoLoginExchangeCodeFinished, type SsoLoginExchangeCodeStart, type SsoLoginGetRedirectUrlFinished, type SsoLoginGetRedirectUrlStart, type SsoLoginOperationConfig, SsoLoginOperationFull, type SsoLoginSpecType, type StandaloneDeviceInfoSource, type StepHelper, type StepIdentifier, type StepOptions, type StorageEngine, type SubflowTrigger, type SubflowType, type TelemetryEntry, type TelemetryLevel, type TelemetrySink, type TotpOperationConfig, TotpOperationFull, type TotpOperationPostResponseStart, type TotpOperationSpecType, type TrackerOptions, type Transport, type TransportMakeRequestResponse, type TransportOptions, type TrustedDeviceBindingMetadata, type TrustedDeviceCheckConfig, TrustedDeviceCheckOperationFull, type TrustedDeviceCheckResult, type TrustedDeviceCheckStepResult, type TrustedDeviceCheckTypedError, TrustedDeviceEnrollmentOperationFull, type TrustedDeviceEnrollmentResult, type TrustedDeviceOperationConfig, type TrustedDevicePurpose, type TrustedDeviceStorage, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, detectPasswordManagerExtensions, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setExperiment, setExperiments, setFlowTags, setUser, telemetry, utf8Length };
3329
+ export { type AppConfirmationOperationCeremonyTypedError, type AppConfirmationOperationConfig, AppConfirmationOperationFull, type AppConfirmationOperationRetryReason, type AppConfirmationOperationSpecType, type AppConfirmationOperationStart, type AuthDecisionFinished, type AuthDecisionStarted, AuthEventName, type AuthMethodDecisionFinished, type AuthMethodDecisionStarted, type AuthMethodType, type BaseEvent, CEREMONY_LOW_EVENT_TAIL_MS, CONFIG_BOUNDS, CONFIG_REQUEST_HEADER, CONFIG_STORAGE_KEY, type CaptchaOperationConfig, CaptchaOperationFull, type CaptchaOperationSpecType, type ClientCapabilities, type ClientEnvHandleMeta, type ClientEnvHandleMetaSource, type Conversion, CookieStorage, CorbadoTracker, type CreateLoggerOptions, type CustomEvent, DEFAULT_DEVICE_INFO_COLLECTOR_TIMEOUT_MS, DEFAULT_FLUSH_INTERVAL_MS, DEFAULT_MAX_ENTRIES, DEFAULT_MAX_SERIALIZED_LENGTH, DEFAULT_RELIABILITY_CONFIG, DEFAULT_SEQ_LOCK_TIMEOUT_MS, DEFAULT_SESSION_INACTIVITY_MS, type DeviceInfo, type DeviceInfoCollectionError, type DeviceInfoDataWeb, type DeviceType, type EmailLinkContinuationConfig, EmailLinkContinuationOperation, type EmailLinkOperationConfig, EmailLinkOperationFull, type EmailLinkOperationPostResponseStart, type EmailLinkOperationSendStart, type EmailLinkOperationSpecType, type EmailOTPOperationConfig, type EmailOTPOperationPostResponseStart, type EmailOTPOperationSendOTPStart, type EmailOTPOperationSpecType, EmailOtpOperationFull, type ErrorStepOptions, type Event, type EventBatch, type EventBatchMeta, type EventMeta, EventStore, type EventType, type FixedDataConfig, type FlowAutoFinished, type FlowDecided, type FlowFinished, type FlowHandle, type FlowReset, type FlowStarted, type FlowType, type FlushReason, type FormOperationConfig, FormOperationFull, type HandoffStepHelper, type JavaScriptHighEntropy, type KeyOperationConfig, KeyRegistrationOperationFull, KeySigningOperationFull, LocalStorage, type Logger, type LowEvent, type LowEventFieldRole, type LowEventInitiator, type LowEventInputEffect, type LowEventSourceKind, type MultiFlowReset, type MultiFlowStarted, NamespacedStorage, type NormalizedError, OUTBOX_LOCK_NAME, OUTBOX_STORAGE_KEY, type ObserveSdkConfigSnapshot, OperationFull, OperationFullProvideIdentifierWithCUI, type OperationFullProvideIdentifierWithCUIConfig, type OutboxEntry, PROBE_BATCH_MAX_BYTES, PROBE_BATCH_MAX_ITEMS, PROBE_PAYLOAD_MAX_BYTES, PROBE_QUEUE_MAX_BYTES, PROBE_QUEUE_MAX_ITEMS, type PasskeyDeletionDeletionTypedError, type PasskeyDeletionOperationConfig, PasskeyDeletionOperationFull, type PasskeyDeletionUserConfirmationTypedError, type PasskeyEnrollmentCeremonyFinished, type PasskeyEnrollmentCeremonyStart, type PasskeyEnrollmentGetOptionsFinished, type PasskeyEnrollmentGetOptionsStart, type PasskeyEnrollmentOperationConfig, PasskeyEnrollmentOperationFull, type PasskeyEnrollmentPostResponseStart, type PasskeyLoginCUIGetOptionsFinished, type PasskeyLoginCUIGetOptionsStart, type PasskeyLoginCUISpecType, type PasskeyLoginCeremonyFinished, type PasskeyLoginCeremonyStart, type PasskeyLoginClientError, type PasskeyLoginFinish, type PasskeyLoginGetOptionsFinished, type PasskeyLoginGetOptionsStart, type PasskeyLoginOperationConfig, PasskeyLoginOperationFull, type PasskeyLoginPostResponseStart, type PasskeyLoginStartable, type PasskeyLoginSubmitted, type PasskeyOperationEnrollmentExplicitSpecType, type PasskeyOperationLoginExplicitSpecType, type PasswordEnrollmentConfig, PasswordEnrollmentOperationFull, type PasswordEnrollmentTypedError, type PasswordLoginCUICeremonyStart, type PasswordLoginCUIGetOptionsFinished, type PasswordLoginCUIGetOptionsStart, type PasswordLoginCUISpecType, type PasswordLoginCUITypedError, type PasswordLoginConfig, type PasswordLoginExplicitSpecType, PasswordLoginOperationFull, type PasswordLoginTypedError, type PasswordManagerExtension, type PasswordManagerExtensionName, type PredefinedEvent, type ProbeContext, type ProbeEntry, type ProbeInput, type ProvideDataOperationConfig, ProvideDataOperationFull, type ProvideDataOperationPostResponseStart, type ProvideDataOperationSpecType, type ProvideDataOperationStart, type ProvideIdentifierError, type ProvideIdentifierFinish, type ProvideIdentifierPostResponseStart, type ProvideIdentifierSpecType, type ProvideIdentifierStart, type QueueOptions, RAW_ERROR_BOUNDS, READER_EXPOSURES, type RawErrorEnvelope, type ReaderDataConfigKey, type ReaderExposure, type ReaderField, type ReaderMeta, type ReaderOrigin, type ReaderTransform, RequestQueue, type ResolvedFixedDataConfig, SDK_NAME, SDK_VERSION, type SdkInfo, type SdkInputHandoff, type SdkReliabilityConfig, type SdkReliabilityConfigOverrides, type SdkRetryConfig, type SdkWebAuthnError, type SdkWebAuthnPayload, type SerializeRawErrorOptions, SessionStorage, type SetFlowTagsOptions, type SmsOTPOperationConfig, type SmsOTPOperationPostResponseStart, type SmsOTPOperationSpecType, SmsOtpOperationFull, type SocialLoginEntry, type SocialLoginExchangeCodeFinished, type SocialLoginExchangeCodeStart, type SocialLoginGetRedirectUrlFinished, type SocialLoginGetRedirectUrlStart, type SocialLoginOperationConfig, SocialLoginOperationFull, type SocialLoginProviderType, type SocialLoginSpecType, type SourcePathQueryMode, type SsoLoginExchangeCodeFinished, type SsoLoginExchangeCodeStart, type SsoLoginGetRedirectUrlFinished, type SsoLoginGetRedirectUrlStart, type SsoLoginOperationConfig, SsoLoginOperationFull, type SsoLoginSpecType, type StandaloneDeviceInfoSource, type StepHelper, type StepIdentifier, type StepOptions, type StorageEngine, type SubflowTrigger, type SubflowType, type TelemetryEntry, type TelemetryLevel, type TelemetrySink, type TotpOperationConfig, TotpOperationFull, type TotpOperationPostResponseStart, type TotpOperationSpecType, type TrackerOptions, type Transport, type TransportMakeRequestResponse, type TransportOptions, type TrustedDeviceBindingMetadata, type TrustedDeviceCheckConfig, TrustedDeviceCheckOperationFull, type TrustedDeviceCheckResult, type TrustedDeviceCheckStepResult, type TrustedDeviceCheckTypedError, TrustedDeviceEnrollmentOperationFull, type TrustedDeviceEnrollmentResult, type TrustedDeviceOperationConfig, type TrustedDevicePurpose, type TrustedDeviceStorage, UNLOAD_BUDGET_BYTES, UNLOAD_PROBE_MAX_BYTES, type UserReference, type WebAuthnIdentifierProjector, type WebAuthnIdentifierProjectors, type WithHandoffs, cacheConfig, clearExperiment, clearExperiments, createLogger, destroy, detectPasswordManagerExtensions, getExperiments, getSessionId, getTracker, init, loadCachedConfig, logError, logInfo, namespacedKey, parseReliabilityConfig, resetSession, resolveFixedDataConfig, resolveRawErrorLimits, resolveReliabilityConfig, sanitizeAssertionResponse, sanitizeCreationOptions, sanitizeCreationResponse, sanitizeRequestOptions, serializeRawError, setExperiment, setExperiments, setFlowTags, setUser, telemetry, utf8Length };