@metamask/connect-multichain 0.3.2 → 0.5.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 (88) hide show
  1. package/CHANGELOG.md +55 -15
  2. package/README.md +1 -1
  3. package/dist/browser/es/connect-multichain.d.mts +26 -12
  4. package/dist/browser/es/connect-multichain.mjs +846 -598
  5. package/dist/browser/es/connect-multichain.mjs.map +1 -1
  6. package/dist/browser/es/metafile-esm.json +1 -1
  7. package/dist/browser/iife/connect-multichain.d.ts +26 -12
  8. package/dist/browser/iife/connect-multichain.js +4793 -2291
  9. package/dist/browser/iife/connect-multichain.js.map +1 -1
  10. package/dist/browser/iife/metafile-iife.json +1 -1
  11. package/dist/browser/umd/connect-multichain.d.ts +26 -12
  12. package/dist/browser/umd/connect-multichain.js +846 -598
  13. package/dist/browser/umd/connect-multichain.js.map +1 -1
  14. package/dist/browser/umd/metafile-cjs.json +1 -1
  15. package/dist/node/cjs/connect-multichain.d.ts +26 -12
  16. package/dist/node/cjs/connect-multichain.js +846 -609
  17. package/dist/node/cjs/connect-multichain.js.map +1 -1
  18. package/dist/node/cjs/metafile-cjs.json +1 -1
  19. package/dist/node/es/connect-multichain.d.mts +26 -12
  20. package/dist/node/es/connect-multichain.mjs +844 -607
  21. package/dist/node/es/connect-multichain.mjs.map +1 -1
  22. package/dist/node/es/metafile-esm.json +1 -1
  23. package/dist/react-native/es/connect-multichain.d.mts +26 -12
  24. package/dist/react-native/es/connect-multichain.mjs +827 -592
  25. package/dist/react-native/es/connect-multichain.mjs.map +1 -1
  26. package/dist/react-native/es/metafile-esm.json +1 -1
  27. package/dist/src/domain/multichain/index.d.ts +4 -4
  28. package/dist/src/domain/multichain/index.d.ts.map +1 -1
  29. package/dist/src/domain/multichain/index.js.map +1 -1
  30. package/dist/src/domain/multichain/types.d.ts +4 -6
  31. package/dist/src/domain/multichain/types.d.ts.map +1 -1
  32. package/dist/src/domain/ui/types.d.ts +7 -0
  33. package/dist/src/domain/ui/types.d.ts.map +1 -1
  34. package/dist/src/domain/ui/types.js.map +1 -1
  35. package/dist/src/index.browser.d.ts +1 -1
  36. package/dist/src/index.browser.d.ts.map +1 -1
  37. package/dist/src/index.browser.js +1 -1
  38. package/dist/src/index.browser.js.map +1 -1
  39. package/dist/src/index.native.d.ts +1 -1
  40. package/dist/src/index.native.d.ts.map +1 -1
  41. package/dist/src/index.native.js +2 -2
  42. package/dist/src/index.native.js.map +1 -1
  43. package/dist/src/index.node.d.ts +1 -1
  44. package/dist/src/index.node.d.ts.map +1 -1
  45. package/dist/src/index.node.js +1 -1
  46. package/dist/src/index.node.js.map +1 -1
  47. package/dist/src/multichain/index.d.ts +8 -27
  48. package/dist/src/multichain/index.d.ts.map +1 -1
  49. package/dist/src/multichain/index.js +480 -427
  50. package/dist/src/multichain/index.js.map +1 -1
  51. package/dist/src/multichain/rpc/requestRouter.d.ts.map +1 -1
  52. package/dist/src/multichain/rpc/requestRouter.js +8 -15
  53. package/dist/src/multichain/rpc/requestRouter.js.map +1 -1
  54. package/dist/src/multichain/transports/default/index.d.ts +2 -1
  55. package/dist/src/multichain/transports/default/index.d.ts.map +1 -1
  56. package/dist/src/multichain/transports/default/index.js +1 -0
  57. package/dist/src/multichain/transports/default/index.js.map +1 -1
  58. package/dist/src/multichain/transports/multichainApiClientWrapper/index.d.ts +21 -0
  59. package/dist/src/multichain/transports/multichainApiClientWrapper/index.d.ts.map +1 -0
  60. package/dist/src/multichain/transports/multichainApiClientWrapper/index.js +159 -0
  61. package/dist/src/multichain/transports/multichainApiClientWrapper/index.js.map +1 -0
  62. package/dist/src/multichain/transports/mwp/index.d.ts +4 -1
  63. package/dist/src/multichain/transports/mwp/index.d.ts.map +1 -1
  64. package/dist/src/multichain/transports/mwp/index.js +76 -6
  65. package/dist/src/multichain/transports/mwp/index.js.map +1 -1
  66. package/dist/src/ui/ModalFactory.d.ts +54 -0
  67. package/dist/src/ui/ModalFactory.d.ts.map +1 -0
  68. package/dist/src/ui/ModalFactory.js +171 -0
  69. package/dist/src/ui/ModalFactory.js.map +1 -0
  70. package/dist/src/ui/index.d.ts +11 -39
  71. package/dist/src/ui/index.d.ts.map +1 -1
  72. package/dist/src/ui/index.js +20 -179
  73. package/dist/src/ui/index.js.map +1 -1
  74. package/dist/src/ui/index.native.d.ts +13 -0
  75. package/dist/src/ui/index.native.d.ts.map +1 -0
  76. package/dist/src/ui/index.native.js +24 -0
  77. package/dist/src/ui/index.native.js.map +1 -0
  78. package/dist/src/ui/modals/base/AbstractInstallModal.d.ts.map +1 -1
  79. package/dist/src/ui/modals/base/AbstractInstallModal.js +0 -4
  80. package/dist/src/ui/modals/base/AbstractInstallModal.js.map +1 -1
  81. package/dist/src/ui/modals/node/install.js +2 -2
  82. package/dist/src/ui/modals/node/install.js.map +1 -1
  83. package/dist/types/connect-multichain.d.ts +26 -12
  84. package/package.json +10 -8
  85. package/dist/src/ui/qr.d.ts +0 -3
  86. package/dist/src/ui/qr.d.ts.map +0 -1
  87. package/dist/src/ui/qr.js +0 -32
  88. package/dist/src/ui/qr.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import debug from 'debug';
2
- import { SessionData, Transport, TransportRequest, TransportResponse, MultichainApiClient } from '@metamask/multichain-api-client';
2
+ import { SessionData, Transport, SessionProperties, TransportRequest, TransportResponse, MultichainApiClient } from '@metamask/multichain-api-client';
3
3
  export { SessionData } from '@metamask/multichain-api-client';
4
4
  import { CaipAccountId, Json } from '@metamask/utils';
5
5
  import { SessionRequest, Session } from '@metamask/mobile-wallet-protocol-core';
@@ -296,17 +296,26 @@ type FactoryModals = {
296
296
  OTPCodeModal: new (options: OTPCodeWidgetProps) => AbstractOTPCodeModal;
297
297
  };
298
298
 
299
- declare class ModalFactory<T extends FactoryModals = FactoryModals> {
299
+ /**
300
+ * Base ModalFactory class that accepts a preload function.
301
+ * Platform-specific implementations should extend this class.
302
+ */
303
+ declare abstract class BaseModalFactory<T extends FactoryModals = FactoryModals> {
300
304
  protected readonly options: T;
301
305
  modal: Modal<any>;
302
306
  private readonly platform;
303
307
  private successCallback;
308
+ private displayUriCallback?;
304
309
  /**
305
310
  * Creates a new modal factory instance.
306
311
  *
307
312
  * @param options - The modals configuration object
308
313
  */
309
314
  constructor(options: T);
315
+ /**
316
+ * Platform-specific preload function to be implemented by subclasses.
317
+ */
318
+ protected abstract preload(): Promise<void>;
310
319
  private validateModals;
311
320
  unload(error?: Error): Promise<void>;
312
321
  /**
@@ -330,7 +339,7 @@ declare class ModalFactory<T extends FactoryModals = FactoryModals> {
330
339
  createConnectionUniversalLink(connectionRequest?: ConnectionRequest): string;
331
340
  private onCloseModal;
332
341
  private onStartDesktopOnboarding;
333
- renderInstallModal(showInstallModal: boolean, createConnectionRequest: () => Promise<ConnectionRequest>, successCallback: (error?: Error) => Promise<void>): Promise<void>;
342
+ renderInstallModal(showInstallModal: boolean, createConnectionRequest: () => Promise<ConnectionRequest>, successCallback: (error?: Error) => Promise<void>, onDisplayUri?: (uri: string) => void): Promise<void>;
334
343
  renderOTPCodeModal(createOTPCode: () => Promise<OTPCode>, successCallback: (error?: Error) => Promise<void>, updateOTPCode: (otpCode: OTPCode, modal: AbstractOTPCodeModal) => void): Promise<void>;
335
344
  }
336
345
 
@@ -393,16 +402,13 @@ type MultichainOptions = {
393
402
  };
394
403
  /** Analytics configuration */
395
404
  analytics?: {
396
- enabled: false;
397
- } | {
398
- enabled: true;
399
405
  integrationType: string;
400
406
  };
401
407
  /** Storage client for persisting SDK data */
402
408
  storage: StoreClient;
403
409
  /** UI configuration options */
404
410
  ui: {
405
- factory: ModalFactory;
411
+ factory: BaseModalFactory;
406
412
  headless?: boolean;
407
413
  preferExtension?: boolean;
408
414
  showInstallModal?: boolean;
@@ -439,6 +445,7 @@ type ExtendedTransport = Omit<Transport, 'connect'> & {
439
445
  connect: (props?: {
440
446
  scopes: Scope[];
441
447
  caipAccountIds: CaipAccountId[];
448
+ sessionProperties?: SessionProperties;
442
449
  forceRequest?: boolean;
443
450
  }) => Promise<void>;
444
451
  sendEip1193Message: <TRequest extends TransportRequest, TResponse extends TransportResponse>(request: TRequest, options?: {
@@ -453,7 +460,7 @@ declare const SDK_HANDLED_METHODS: Set<string>;
453
460
 
454
461
  declare function getInfuraRpcUrls(infuraAPIKey: string): RpcUrlsMap;
455
462
 
456
- type SDKState = 'pending' | 'loaded' | 'disconnected' | 'connected' | 'connecting';
463
+ type ConnectionStatus = 'pending' | 'loaded' | 'disconnected' | 'connected' | 'connecting';
457
464
  declare enum TransportType {
458
465
  Browser = "browser",
459
466
  MWP = "mwp",
@@ -468,7 +475,7 @@ declare enum TransportType {
468
475
  declare abstract class MultichainCore extends EventEmitter<SDKEvents> {
469
476
  protected readonly options: MultichainOptions;
470
477
  abstract storage: StoreClient;
471
- abstract state: SDKState;
478
+ abstract status: ConnectionStatus;
472
479
  abstract provider: MultichainApiClient<RPCAPI>;
473
480
  abstract transport: ExtendedTransport;
474
481
  abstract transportType: TransportType;
@@ -477,7 +484,7 @@ declare abstract class MultichainCore extends EventEmitter<SDKEvents> {
477
484
  *
478
485
  * @returns Promise that resolves to the session data
479
486
  */
480
- abstract connect(scopes: Scope[], caipAccountIds: CaipAccountId[], forceRequest?: boolean): Promise<void>;
487
+ abstract connect(scopes: Scope[], caipAccountIds: CaipAccountId[], sessionProperties?: SessionProperties, forceRequest?: boolean): Promise<void>;
481
488
  /**
482
489
  * Disconnects from the multichain provider.
483
490
  *
@@ -581,6 +588,13 @@ type InstallWidgetProps = Components.MmInstallModal & {
581
588
  startDesktopOnboarding: () => void;
582
589
  createConnectionRequest: () => Promise<ConnectionRequest>;
583
590
  generateQRCode: (connectionRequest: ConnectionRequest) => Promise<QRLink>;
591
+ /**
592
+ * Callback invoked when a QR code link is generated or regenerated.
593
+ * This allows consumers to display their own custom QR code UI.
594
+ *
595
+ * @param uri - The deeplink URI to be displayed as a QR code
596
+ */
597
+ onDisplayUri?: (uri: QRLink) => void;
584
598
  };
585
599
  type OTPCodeWidgetProps = Components.MmOtpModal & {
586
600
  parentElement?: Element;
@@ -635,6 +649,6 @@ declare function getWalletActionAnalyticsProperties(options: MultichainOptions,
635
649
  */
636
650
  declare function getVersion(): string;
637
651
 
638
- declare const createMetamaskConnect: CreateMultichainFN;
652
+ declare const createMultichainClient: CreateMultichainFN;
639
653
 
640
- export { type ConnectionRequest, type CreateMultichainFN, type DappSettings, type DataType, type DomainErrorCodes, type Enumerate, type ErrorCodeRange, type ErrorCodes, EventEmitter, type EventTypes, type ExtendedTransport, type InstallWidgetProps, type InvokeMethodOptions, type LoggerNameSpaces, Modal, type ModalFactoryConnectOptions, type ModalFactoryOptions, MultichainCore, type MultichainOptions, type NotificationCallback, type OTPCode, type OTPCodeWidgetProps, PlatformType, type QRLink, type RPCAPI, type RPCErrorCodes, RPCHttpErr, RPCInvokeMethodErr, RPCReadonlyRequestErr, RPCReadonlyResponseErr, type RPCResponse, RPC_HANDLED_METHODS, type RpcMethod, type RpcUrlsMap, type SDKEvents, type SDKState, SDK_HANDLED_METHODS, type Scope, type StorageErrorCodes, StoreAdapter, StoreClient, type StoreOptions, TransportType, createLogger, createMetamaskConnect, enableDebug, getInfuraRpcUrls, getPlatformType, getTransportType, getVersion, getWalletActionAnalyticsProperties, hasExtension, infuraRpcUrls, isEnabled, isMetamaskExtensionInstalled, isRejectionError, isSecure };
654
+ export { type ConnectionRequest, type ConnectionStatus, type CreateMultichainFN, type DappSettings, type DataType, type DomainErrorCodes, type Enumerate, type ErrorCodeRange, type ErrorCodes, EventEmitter, type EventTypes, type ExtendedTransport, type InstallWidgetProps, type InvokeMethodOptions, type LoggerNameSpaces, Modal, type ModalFactoryConnectOptions, type ModalFactoryOptions, MultichainCore, type MultichainOptions, type NotificationCallback, type OTPCode, type OTPCodeWidgetProps, PlatformType, type QRLink, type RPCAPI, type RPCErrorCodes, RPCHttpErr, RPCInvokeMethodErr, RPCReadonlyRequestErr, RPCReadonlyResponseErr, type RPCResponse, RPC_HANDLED_METHODS, type RpcMethod, type RpcUrlsMap, type SDKEvents, SDK_HANDLED_METHODS, type Scope, type StorageErrorCodes, StoreAdapter, StoreClient, type StoreOptions, TransportType, createLogger, createMultichainClient, enableDebug, getInfuraRpcUrls, getPlatformType, getTransportType, getVersion, getWalletActionAnalyticsProperties, hasExtension, infuraRpcUrls, isEnabled, isMetamaskExtensionInstalled, isRejectionError, isSecure };