@miden-sdk/miden-wallet-adapter-base 0.16.2 → 0.16.3

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 (114) hide show
  1. package/dist/adapter.js.map +1 -1
  2. package/dist/errors.js.map +1 -1
  3. package/dist/helpers.js.map +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/signer.js.map +1 -1
  6. package/dist/transaction.js.map +1 -1
  7. package/dist/types.js.map +1 -1
  8. package/package.json +9 -3
  9. package/__tests__/adapter.test.ts +0 -82
  10. package/__tests__/errors.test.ts +0 -100
  11. package/__tests__/helpers.test.ts +0 -39
  12. package/__tests__/signer.test.ts +0 -20
  13. package/__tests__/transaction.test.ts +0 -166
  14. package/adapter.ts +0 -146
  15. package/dist/__tests__/adapter.test.d.ts +0 -1
  16. package/dist/__tests__/adapter.test.js +0 -66
  17. package/dist/__tests__/adapter.test.js.map +0 -1
  18. package/dist/__tests__/errors.test.d.ts +0 -1
  19. package/dist/__tests__/errors.test.js +0 -70
  20. package/dist/__tests__/errors.test.js.map +0 -1
  21. package/dist/__tests__/helpers.test.d.ts +0 -1
  22. package/dist/__tests__/helpers.test.js +0 -35
  23. package/dist/__tests__/helpers.test.js.map +0 -1
  24. package/dist/__tests__/signer.test.d.ts +0 -1
  25. package/dist/__tests__/signer.test.js +0 -18
  26. package/dist/__tests__/signer.test.js.map +0 -1
  27. package/dist/__tests__/transaction.test.d.ts +0 -1
  28. package/dist/__tests__/transaction.test.js +0 -113
  29. package/dist/__tests__/transaction.test.js.map +0 -1
  30. package/dist/vitest.config.d.ts +0 -2
  31. package/dist/vitest.config.js +0 -8
  32. package/dist/vitest.config.js.map +0 -1
  33. package/docs/@miden-sdk/namespaces/EventEmitter/README.md +0 -24
  34. package/docs/@miden-sdk/namespaces/EventEmitter/interfaces/EventEmitterStatic.md +0 -17
  35. package/docs/@miden-sdk/namespaces/EventEmitter/interfaces/ListenerFn.md +0 -25
  36. package/docs/@miden-sdk/namespaces/EventEmitter/type-aliases/ArgumentMap.md +0 -15
  37. package/docs/@miden-sdk/namespaces/EventEmitter/type-aliases/EventArgs.md +0 -19
  38. package/docs/@miden-sdk/namespaces/EventEmitter/type-aliases/EventListener.md +0 -19
  39. package/docs/@miden-sdk/namespaces/EventEmitter/type-aliases/EventNames.md +0 -15
  40. package/docs/@miden-sdk/namespaces/EventEmitter/type-aliases/ValidEventTypes.md +0 -17
  41. package/docs/@miden-sdk/namespaces/EventEmitter/variables/EventEmitter.md +0 -9
  42. package/docs/README.md +0 -88
  43. package/docs/classes/BaseMessageSignerWalletAdapter.md +0 -755
  44. package/docs/classes/BaseSignerWalletAdapter.md +0 -579
  45. package/docs/classes/BaseWalletAdapter.md +0 -535
  46. package/docs/classes/ConsumeTransaction.md +0 -93
  47. package/docs/classes/CustomTransaction.md +0 -93
  48. package/docs/classes/EventEmitter.md +0 -305
  49. package/docs/classes/SendTransaction.md +0 -107
  50. package/docs/classes/Transaction.md +0 -151
  51. package/docs/classes/WalletAccountError.md +0 -223
  52. package/docs/classes/WalletAddressError.md +0 -223
  53. package/docs/classes/WalletConfigError.md +0 -223
  54. package/docs/classes/WalletConnectionError.md +0 -223
  55. package/docs/classes/WalletDecryptionError.md +0 -223
  56. package/docs/classes/WalletDecryptionNotAllowedError.md +0 -223
  57. package/docs/classes/WalletDisconnectedError.md +0 -223
  58. package/docs/classes/WalletDisconnectionError.md +0 -223
  59. package/docs/classes/WalletError.md +0 -244
  60. package/docs/classes/WalletKeypairError.md +0 -223
  61. package/docs/classes/WalletLoadError.md +0 -223
  62. package/docs/classes/WalletNotConnectedError.md +0 -223
  63. package/docs/classes/WalletNotReadyError.md +0 -223
  64. package/docs/classes/WalletNotSelectedError.md +0 -223
  65. package/docs/classes/WalletPrivateDataPermissionError.md +0 -223
  66. package/docs/classes/WalletRecordsError.md +0 -223
  67. package/docs/classes/WalletSendTransactionError.md +0 -223
  68. package/docs/classes/WalletSignMessageError.md +0 -223
  69. package/docs/classes/WalletSignTransactionError.md +0 -223
  70. package/docs/classes/WalletTimeoutError.md +0 -223
  71. package/docs/classes/WalletTransactionError.md +0 -223
  72. package/docs/classes/WalletWindowBlockedError.md +0 -223
  73. package/docs/classes/WalletWindowClosedError.md +0 -223
  74. package/docs/enumerations/AllowedPrivateData.md +0 -37
  75. package/docs/enumerations/PrivateDataPermission.md +0 -19
  76. package/docs/enumerations/TransactionType.md +0 -25
  77. package/docs/enumerations/WalletAdapterNetwork.md +0 -19
  78. package/docs/enumerations/WalletReadyState.md +0 -49
  79. package/docs/functions/b64ToU8.md +0 -19
  80. package/docs/functions/scopePollingDetectionStrategy.md +0 -19
  81. package/docs/functions/u8ToB64.md +0 -19
  82. package/docs/interfaces/Asset.md +0 -19
  83. package/docs/interfaces/IFailedTransactionOutput.md +0 -13
  84. package/docs/interfaces/MessageSignerWalletAdapterProps.md +0 -293
  85. package/docs/interfaces/MidenConsumeTransaction.md +0 -37
  86. package/docs/interfaces/MidenCustomTransaction.md +0 -37
  87. package/docs/interfaces/MidenSendTransaction.md +0 -43
  88. package/docs/interfaces/MidenTransaction.md +0 -19
  89. package/docs/interfaces/SignerWalletAdapterProps.md +0 -149
  90. package/docs/interfaces/TransactionOutput.md +0 -19
  91. package/docs/interfaces/WalletAdapterEvents.md +0 -69
  92. package/docs/interfaces/WalletAdapterProps.md +0 -106
  93. package/docs/interfaces/WalletTransactionSuccessOutput.md +0 -19
  94. package/docs/type-aliases/Adapter.md +0 -9
  95. package/docs/type-aliases/FungibleAssetDetails.md +0 -21
  96. package/docs/type-aliases/InputNoteDetails.md +0 -45
  97. package/docs/type-aliases/MessageSignerWalletAdapter.md +0 -15
  98. package/docs/type-aliases/NoteTypeString.md +0 -9
  99. package/docs/type-aliases/SignKind.md +0 -9
  100. package/docs/type-aliases/SignerWalletAdapter.md +0 -15
  101. package/docs/type-aliases/SupportedTransactionVersions.md +0 -9
  102. package/docs/type-aliases/TransactionOrVersionedTransaction.md +0 -15
  103. package/docs/type-aliases/TransactionPayload.md +0 -9
  104. package/docs/type-aliases/WalletAdapter.md +0 -15
  105. package/docs/type-aliases/WalletName.md +0 -21
  106. package/docs/type-aliases/WalletTransactionOutput.md +0 -9
  107. package/errors.ts +0 -97
  108. package/helpers.ts +0 -28
  109. package/index.ts +0 -6
  110. package/signer.ts +0 -84
  111. package/transaction.ts +0 -178
  112. package/tsconfig.json +0 -15
  113. package/types.ts +0 -93
  114. package/vitest.config.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../adapter.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AASzC,OAAO,EAAE,YAAY,EAAE,CAAC;AAqCxB;;;;;;;;GAQG;AACH,MAAM,CAAN,IAAY,gBAkBX;AAlBD,WAAY,gBAAgB;IAC1B;;;;OAIG;IACH,2CAAuB,CAAA;IACvB,+CAA2B,CAAA;IAC3B;;;OAGG;IACH,yCAAqB,CAAA;IACrB;;;OAGG;IACH,+CAA2B,CAAA;AAC7B,CAAC,EAlBW,gBAAgB,KAAhB,gBAAgB,QAkB3B;AAED,MAAM,OAAgB,iBACpB,SAAQ,YAAiC;IAYzC,IAAI,SAAS;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CAQF;AAED,MAAM,UAAU,6BAA6B,CAAC,MAAqB;IACjE,0CAA0C;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAE7E,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,SAAS,gBAAgB;QACvB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ;IACZ,kDAAkD;IAClD,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACtC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9C,wEAAwE;IACxE;IACE,qDAAqD;IACrD,QAAQ,CAAC,UAAU,KAAK,SAAS,EACjC,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,EAAE;YAC9D,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAClB,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CACnE,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D;IACE,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,KAAK,UAAU,EAClC,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,0CAA0C;IAC1C,gBAAgB,EAAE,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../adapter.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AASzC,OAAO,EAAE,YAAY,EAAE,CAAC;AAqCxB;;;;;;;;GAQG;AACH,MAAM,CAAN,IAAY,gBAkBX;AAlBD,WAAY,gBAAgB;IAC1B;;;;OAIG;IACH,2CAAuB,CAAA;IACvB,+CAA2B,CAAA;IAC3B;;;OAGG;IACH,yCAAqB,CAAA;IACrB;;;OAGG;IACH,+CAA2B,CAAA;AAC7B,CAAC,EAlBW,gBAAgB,KAAhB,gBAAgB,QAkB3B;AAED,MAAM,OAAgB,iBACpB,SAAQ,YAAiC;IAYzC,IAAI,SAAS;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CAQF;AAED,MAAM,UAAU,6BAA6B,CAAC,MAAqB;IACjE,0CAA0C;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAE7E,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,SAAS,gBAAgB;QACvB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ;IACZ,kDAAkD;IAClD,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACtC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9C,wEAAwE;IACxE;IACE,qDAAqD;IACrD,QAAQ,CAAC,UAAU,KAAK,SAAS,EACjC,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,EAAE;YAC9D,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAClB,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CACnE,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D;IACE,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,KAAK,UAAU,EAClC,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,0CAA0C;IAC1C,gBAAgB,EAAE,CAAC;AACrB,CAAC","sourcesContent":["import EventEmitter from \"eventemitter3\";\nimport type { WalletError } from \"./errors\";\nimport type {\n AllowedPrivateData,\n PrivateDataPermission,\n SupportedTransactionVersions,\n WalletAdapterNetwork,\n} from \"./types\";\n\nexport { EventEmitter };\n\nexport interface WalletAdapterEvents {\n connect(address: string, allowedPrivateData?: AllowedPrivateData): void;\n disconnect(): void;\n error(error: WalletError): void;\n readyStateChange(readyState: WalletReadyState): void;\n}\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\n// https://medium.com/@KevinBGreene/surviving-the-typescript-ecosystem-branding-and-type-tagging-6cf6e516523d\nexport type WalletName<T extends string = string> = T & {\n __brand__: \"WalletName\";\n};\n\nexport interface WalletAdapterProps<Name extends string = string> {\n name: WalletName<Name>;\n url: string;\n icon: string;\n readyState: WalletReadyState;\n address: string | null;\n publicKey: Uint8Array | null;\n connecting: boolean;\n connected: boolean;\n supportedTransactionVersions: SupportedTransactionVersions;\n\n connect(\n privateDataPermission: PrivateDataPermission,\n network: WalletAdapterNetwork,\n allowedPrivateData?: AllowedPrivateData\n ): Promise<void>;\n disconnect(): Promise<void>;\n}\n\nexport type WalletAdapter<Name extends string = string> =\n WalletAdapterProps<Name> & EventEmitter<WalletAdapterEvents>;\n\n/**\n * A wallet's readiness describes a series of states that the wallet can be in,\n * depending on what kind of wallet it is. An installable wallet (eg. a browser\n * extension like Phantom) might be `Installed` if we've found the Phantom API\n * in the global scope, or `NotDetected` otherwise. A loadable, zero-install\n * runtime (eg. Torus Wallet) might simply signal that it's `Loadable`. Use this\n * metadata to personalize the wallet list for each user (eg. to show their\n * installed wallets first).\n */\nexport enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = \"Installed\",\n NotDetected = \"NotDetected\",\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = \"Loadable\",\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = \"Unsupported\",\n}\n\nexport abstract class BaseWalletAdapter<Name extends string = string>\n extends EventEmitter<WalletAdapterEvents>\n implements WalletAdapter<Name>\n{\n abstract name: WalletName<Name>;\n abstract url: string;\n abstract icon: string;\n abstract readyState: WalletReadyState;\n abstract address: string | null;\n abstract publicKey: Uint8Array | null;\n abstract connecting: boolean;\n abstract supportedTransactionVersions: SupportedTransactionVersions;\n\n get connected() {\n return !!this.address;\n }\n\n abstract connect(\n privateDataPermission: PrivateDataPermission,\n network: WalletAdapterNetwork,\n allowedPrivateData?: AllowedPrivateData\n ): Promise<void>;\n abstract disconnect(): Promise<void>;\n}\n\nexport function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === \"loading\"\n ) {\n document.addEventListener(\"DOMContentLoaded\", detectAndDispose, {\n once: true,\n });\n disposers.push(() =>\n document.removeEventListener(\"DOMContentLoaded\", detectAndDispose)\n );\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== \"complete\"\n ) {\n window.addEventListener(\"load\", detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener(\"load\", detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,KAAK,CAAM;IAEX,6EAA6E;IAC7E,YAAY,OAAgB,EAAE,KAAW;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,IAAI,GAAG,qBAAqB,CAAC;CAC9B;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,IAAI,GAAG,iBAAiB,CAAC;CAC1B;AAED,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,IAAI,GAAG,mBAAmB,CAAC;CAC5B;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,IAAI,GAAG,uBAAuB,CAAC;CAChC;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrD,IAAI,GAAG,wBAAwB,CAAC;CACjC;AAED,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACtD,IAAI,GAAG,yBAAyB,CAAC;CAClC;AAED,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvD,IAAI,GAAG,0BAA0B,CAAC;CACnC;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACtD,IAAI,GAAG,yBAAyB,CAAC;CAClC;AAED,MAAM,OAAO,0BAA2B,SAAQ,WAAW;IACzD,IAAI,GAAG,4BAA4B,CAAC;CACrC;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrD,IAAI,GAAG,wBAAwB,CAAC;CACjC;AAED,MAAM,OAAO,0BAA2B,SAAQ,WAAW;IACzD,IAAI,GAAG,4BAA4B,CAAC;CACrC;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvD,IAAI,GAAG,0BAA0B,CAAC;CACnC;AAED,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACtD,IAAI,GAAG,yBAAyB,CAAC;CAClC;AAED,MAAM,OAAO,+BAAgC,SAAQ,WAAW;IAC9D,IAAI,GAAG,iCAAiC,CAAC;CAC1C;AAED,MAAM,OAAO,gCAAiC,SAAQ,WAAW;IAC/D,IAAI,GAAG,kCAAkC,CAAC;CAC3C;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,IAAI,GAAG,uBAAuB,CAAC;CAChC;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrD,IAAI,GAAG,wBAAwB,CAAC;CACjC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,KAAK,CAAM;IAEX,6EAA6E;IAC7E,YAAY,OAAgB,EAAE,KAAW;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,IAAI,GAAG,qBAAqB,CAAC;CAC9B;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,IAAI,GAAG,iBAAiB,CAAC;CAC1B;AAED,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,IAAI,GAAG,mBAAmB,CAAC;CAC5B;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,IAAI,GAAG,uBAAuB,CAAC;CAChC;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrD,IAAI,GAAG,wBAAwB,CAAC;CACjC;AAED,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACtD,IAAI,GAAG,yBAAyB,CAAC;CAClC;AAED,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvD,IAAI,GAAG,0BAA0B,CAAC;CACnC;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACtD,IAAI,GAAG,yBAAyB,CAAC;CAClC;AAED,MAAM,OAAO,0BAA2B,SAAQ,WAAW;IACzD,IAAI,GAAG,4BAA4B,CAAC;CACrC;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrD,IAAI,GAAG,wBAAwB,CAAC;CACjC;AAED,MAAM,OAAO,0BAA2B,SAAQ,WAAW;IACzD,IAAI,GAAG,4BAA4B,CAAC;CACrC;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvD,IAAI,GAAG,0BAA0B,CAAC;CACnC;AAED,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACtD,IAAI,GAAG,yBAAyB,CAAC;CAClC;AAED,MAAM,OAAO,+BAAgC,SAAQ,WAAW;IAC9D,IAAI,GAAG,iCAAiC,CAAC;CAC1C;AAED,MAAM,OAAO,gCAAiC,SAAQ,WAAW;IAC/D,IAAI,GAAG,kCAAkC,CAAC;CAC3C;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,IAAI,GAAG,uBAAuB,CAAC;CAChC;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,IAAI,GAAG,oBAAoB,CAAC;CAC7B;AAED,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IACrD,IAAI,GAAG,wBAAwB,CAAC;CACjC","sourcesContent":["export class WalletError extends Error {\n error: any;\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = \"WalletNotReadyError\";\n}\n\nexport class WalletLoadError extends WalletError {\n name = \"WalletLoadError\";\n}\n\nexport class WalletConfigError extends WalletError {\n name = \"WalletConfigError\";\n}\n\nexport class WalletConnectionError extends WalletError {\n name = \"WalletConnectionError\";\n}\n\nexport class WalletNotSelectedError extends WalletError {\n name = \"WalletNotSelectedError\";\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = \"WalletDisconnectedError\";\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = \"WalletDisconnectionError\";\n}\n\nexport class WalletAccountError extends WalletError {\n name = \"WalletAccountError\";\n}\n\nexport class WalletAddressError extends WalletError {\n name = \"WalletAddressError\";\n}\n\nexport class WalletKeypairError extends WalletError {\n name = \"WalletKeypairError\";\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = \"WalletNotConnectedError\";\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = \"WalletSendTransactionError\";\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = \"WalletSignMessageError\";\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = \"WalletSignTransactionError\";\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = \"WalletTimeoutError\";\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = \"WalletWindowBlockedError\";\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = \"WalletWindowClosedError\";\n}\n\nexport class WalletDecryptionNotAllowedError extends WalletError {\n name = \"WalletDecryptionNotAllowedError\";\n}\n\nexport class WalletPrivateDataPermissionError extends WalletError {\n name = \"WalletPrivateDataPermissionError\";\n}\n\nexport class WalletDecryptionError extends WalletError {\n name = \"WalletDecryptionError\";\n}\n\nexport class WalletRecordsError extends WalletError {\n name = \"WalletRecordsError\";\n}\n\nexport class WalletTransactionError extends WalletError {\n name = \"WalletTransactionError\";\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../helpers.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,UAAU,OAAO,CAAC,EAAc;IACpC,yCAAyC;IACzC,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,wEAAwE;IACxE,MAAM,GAAG,GAAS,UAAkB,CAAC,MAAM,CAAC;IAC5C,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,yCAAyC;IACzC,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,wEAAwE;IACxE,MAAM,GAAG,GAAS,UAAkB,CAAC,MAAM,CAAC;IAC5C,IAAI,GAAG;QAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../helpers.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,UAAU,OAAO,CAAC,EAAc;IACpC,yCAAyC;IACzC,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,wEAAwE;IACxE,MAAM,GAAG,GAAS,UAAkB,CAAC,MAAM,CAAC;IAC5C,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,yCAAyC;IACzC,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,wEAAwE;IACxE,MAAM,GAAG,GAAS,UAAkB,CAAC,MAAM,CAAC;IAC5C,IAAI,GAAG;QAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC","sourcesContent":["// Encode a Uint8Array to base64\nexport function u8ToB64(u8: Uint8Array): string {\n // Prefer browser builtins (no polyfills)\n if (typeof globalThis.btoa === \"function\") {\n let s = \"\";\n for (let i = 0; i < u8.length; i++) s += String.fromCharCode(u8[i]);\n return globalThis.btoa(s);\n }\n // Node/Buffer fallback (won’t be bundled if never executed in browsers)\n const Buf: any = (globalThis as any).Buffer;\n if (Buf) return Buf.from(u8).toString(\"base64\");\n throw new Error(\"No base64 encoder available in this environment\");\n}\n\n// Decode base64 to Uint8Array\nexport function b64ToU8(b64: string): Uint8Array {\n // Prefer browser builtins (no polyfills)\n if (typeof globalThis.atob === \"function\") {\n const bin = globalThis.atob(b64);\n const out = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);\n return out;\n }\n // Node/Buffer fallback (won’t be bundled if never executed in browsers)\n const Buf: any = (globalThis as any).Buffer;\n if (Buf) return new Uint8Array(Buf.from(b64, \"base64\"));\n throw new Error(\"No base64 decoder available in this environment\");\n}\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC","sourcesContent":["export * from \"./adapter\";\nexport * from \"./errors\";\nexport * from \"./signer\";\nexport * from \"./types\";\nexport * from \"./transaction\";\nexport * from \"./helpers\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"signer.js","sourceRoot":"","sources":["../signer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA2B9C,MAAM,OAAgB,uBACpB,SAAQ,iBAAuB;CACQ;AA2BzC,MAAM,OAAgB,8BAGpB,SAAQ,uBAA6B;CAsBtC"}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../signer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA2B9C,MAAM,OAAgB,uBACpB,SAAQ,iBAAuB;CACQ;AA2BzC,MAAM,OAAgB,8BAGpB,SAAQ,uBAA6B;CAsBtC","sourcesContent":["import type { NoteFilterTypes } from \"@miden-sdk/miden-sdk\";\nimport type { WalletAdapter, WalletAdapterProps } from \"./adapter\";\nimport { BaseWalletAdapter } from \"./adapter\";\nimport {\n MidenConsumeTransaction,\n MidenSendTransaction,\n MidenTransaction,\n} from \"./transaction\";\nimport {\n Asset,\n CreateAccountParams,\n GuardianInfo,\n InputNoteDetails,\n SignKind,\n TransactionOutput,\n} from \"./types\";\n\nexport type Adapter =\n | WalletAdapter\n | SignerWalletAdapter\n | MessageSignerWalletAdapter;\n\nexport interface SignerWalletAdapterProps<\n Name extends string = string,\n> extends WalletAdapterProps<Name> {}\n\nexport type SignerWalletAdapter<Name extends string = string> =\n WalletAdapter<Name> & SignerWalletAdapterProps<Name>;\n\nexport abstract class BaseSignerWalletAdapter<Name extends string = string>\n extends BaseWalletAdapter<Name>\n implements SignerWalletAdapter<Name> {}\n\nexport interface MessageSignerWalletAdapterProps<\n Name extends string = string,\n> extends WalletAdapterProps<Name> {\n requestTransaction(transaction: MidenTransaction): Promise<string>;\n requestAssets(): Promise<Asset[]>;\n requestGuardianInfo(): Promise<GuardianInfo>;\n requestPrivateNotes(\n noteFilterType: NoteFilterTypes,\n noteIds?: string[]\n ): Promise<InputNoteDetails[]>;\n signBytes(data: Uint8Array, kind: SignKind): Promise<Uint8Array>;\n importPrivateNote(note: Uint8Array): Promise<string>;\n requestConsumableNotes(): Promise<InputNoteDetails[]>;\n waitForTransaction(\n txId: string,\n timeout?: number\n ): Promise<TransactionOutput>;\n requestSend(transaction: MidenSendTransaction): Promise<string>;\n requestConsume(transaction: MidenConsumeTransaction): Promise<string>;\n createAccount(params?: CreateAccountParams): Promise<string>;\n}\n\nexport type MessageSignerWalletAdapter<Name extends string = string> =\n WalletAdapter<Name> & MessageSignerWalletAdapterProps<Name>;\n\nexport abstract class BaseMessageSignerWalletAdapter<\n Name extends string = string,\n>\n extends BaseSignerWalletAdapter<Name>\n implements MessageSignerWalletAdapter<Name>\n{\n abstract requestSend(transaction: MidenSendTransaction): Promise<string>;\n abstract requestConsume(\n transaction: MidenConsumeTransaction\n ): Promise<string>;\n abstract requestTransaction(transaction: MidenTransaction): Promise<string>;\n abstract requestAssets(): Promise<Asset[]>;\n abstract requestGuardianInfo(): Promise<GuardianInfo>;\n abstract requestPrivateNotes(\n noteFilterType: NoteFilterTypes,\n noteIds?: string[]\n ): Promise<InputNoteDetails[]>;\n abstract signBytes(data: Uint8Array, kind: SignKind): Promise<Uint8Array>;\n abstract importPrivateNote(note: Uint8Array): Promise<string>;\n abstract requestConsumableNotes(): Promise<InputNoteDetails[]>;\n abstract waitForTransaction(\n txId: string,\n timeout?: number\n ): Promise<TransactionOutput>;\n abstract createAccount(params?: CreateAccountParams): Promise<string>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../transaction.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TransactionRequest } from \"@miden-sdk/miden-sdk\";\nimport { u8ToB64 } from \"./helpers\";\n\nexport type NoteTypeString = \"public\" | \"private\";\n\nexport interface MidenSendTransaction {\n senderAddress: string;\n recipientAddress: string;\n faucetId: string;\n noteType: NoteTypeString;\n amount: number;\n recallBlocks?: number;\n}\n\nexport class SendTransaction implements MidenSendTransaction {\n senderAddress: string;\n recipientAddress: string;\n faucetId: string;\n noteType: NoteTypeString;\n amount: number;\n recallBlocks?: number;\n\n constructor(\n sender: string,\n recipient: string,\n faucetId: string,\n noteType: NoteTypeString,\n amount: number,\n recallBlocks?: number\n ) {\n this.senderAddress = sender;\n this.recipientAddress = recipient;\n this.faucetId = faucetId;\n this.noteType = noteType;\n this.amount = amount;\n this.recallBlocks = recallBlocks;\n }\n}\n\nexport interface MidenConsumeTransaction {\n faucetId: string;\n noteId: string;\n noteType: NoteTypeString;\n amount: number;\n noteBytes?: string;\n}\n\nexport class ConsumeTransaction implements MidenConsumeTransaction {\n faucetId: string;\n noteId: string;\n noteType: NoteTypeString;\n amount: number;\n noteBytes?: string;\n\n constructor(\n faucetId: string,\n noteId: string,\n noteType: NoteTypeString,\n amount: number,\n noteBytes?: Uint8Array\n ) {\n this.faucetId = faucetId;\n this.noteId = noteId;\n this.noteType = noteType;\n this.amount = amount;\n this.noteBytes = noteBytes ? u8ToB64(noteBytes) : undefined;\n }\n}\n\nexport interface MidenCustomTransaction {\n address: string;\n recipientAddress: string;\n transactionRequest: string;\n inputNoteIds?: string[];\n importNotes?: string[];\n}\n\nexport class CustomTransaction implements MidenCustomTransaction {\n address: string;\n recipientAddress: string;\n transactionRequest: string;\n inputNoteIds?: string[];\n importNotes?: string[];\n\n constructor(\n address: string,\n recipientAddress: string,\n transactionRequest: TransactionRequest,\n inputNotesIds?: string[],\n inputNoteBytes?: Uint8Array[]\n ) {\n this.address = address;\n this.recipientAddress = recipientAddress;\n const requestBytes = transactionRequest.serialize();\n const base64 = u8ToB64(requestBytes);\n this.transactionRequest = base64;\n this.inputNoteIds = inputNotesIds;\n this.importNotes = inputNoteBytes?.map((note) => u8ToB64(note));\n }\n}\n\nexport enum TransactionType {\n Send = \"send\",\n Consume = \"consume\",\n Custom = \"custom\",\n}\nexport type TransactionPayload =\n | MidenSendTransaction\n | MidenConsumeTransaction\n | MidenCustomTransaction;\n\nexport interface MidenTransaction {\n type: TransactionType;\n payload: TransactionPayload;\n}\n\nexport class Transaction implements MidenTransaction {\n type: TransactionType;\n payload: TransactionPayload;\n\n constructor(type: TransactionType, payload: TransactionPayload) {\n this.type = type;\n this.payload = payload;\n }\n\n static createSendTransaction(\n sender: string,\n recipient: string,\n faucetId: string,\n noteType: NoteTypeString,\n amount: number,\n recallBlocks?: number\n ) {\n const sendTransaction = new SendTransaction(\n sender,\n recipient,\n faucetId,\n noteType,\n amount,\n recallBlocks\n );\n return new Transaction(TransactionType.Send, sendTransaction);\n }\n\n static createConsumeTransaction(\n faucetId: string,\n noteId: string,\n noteType: NoteTypeString,\n amount: number,\n noteBytes?: Uint8Array\n ) {\n const consumeTransaction = new ConsumeTransaction(\n faucetId,\n noteId,\n noteType,\n amount,\n noteBytes\n );\n return new Transaction(TransactionType.Consume, consumeTransaction);\n }\n\n static createCustomTransaction(\n address: string,\n recipientAddress: string,\n transactionRequest: TransactionRequest,\n inputNoteIds?: string[],\n noteBytes?: Uint8Array[]\n ) {\n const transactionBytes = new CustomTransaction(\n address,\n recipientAddress,\n transactionRequest,\n inputNoteIds,\n noteBytes\n );\n return new Transaction(TransactionType.Custom, transactionBytes);\n }\n}\n"]}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,6CAAqB,CAAA;AACvB,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAQD,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,qDAA4B,CAAA;IAC5B,sCAAa,CAAA;AACf,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,2DAAQ,CAAA;IACR,+DAAe,CAAA;IACf,6DAAc,CAAA;IACd,iEAAgB,CAAA;IAChB,6DAAmB,CAAA;AACrB,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,6CAAqB,CAAA;AACvB,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAQD,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,qDAA4B,CAAA;IAC5B,sCAAa,CAAA;AACf,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,2DAAQ,CAAA;IACR,+DAAe,CAAA;IACf,6DAAc,CAAA;IACd,iEAAgB,CAAA;IAChB,6DAAmB,CAAA;AACrB,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B","sourcesContent":["import type { InputNoteState, Note, NoteType } from \"@miden-sdk/miden-sdk\";\n\nexport enum WalletAdapterNetwork {\n Devnet = \"devnet\",\n Testnet = \"testnet\",\n Localnet = \"localnet\",\n}\n\nexport type SupportedTransactionVersions = ReadonlySet<any> | null;\n\nexport type TransactionOrVersionedTransaction<\n S extends SupportedTransactionVersions,\n> = S extends null ? any : any | any;\n\nexport enum PrivateDataPermission {\n UponRequest = \"UPON_REQUEST\", // The App must ask for permission to access private data every time\n Auto = \"AUTO\", // The App can access private data without confirmation\n}\n\nexport enum AllowedPrivateData {\n None = 0,\n Assets = 1 << 0, // 1\n Notes = 1 << 1, // 2\n Storage = 1 << 2, // 4\n All = (1 << 16) - 1, // 65535 (allows for new permissions without requiring a migration)\n}\n\nexport type SignKind = \"word\" | \"signingInputs\";\n\nexport interface Asset {\n faucetId: string;\n amount: string;\n}\n\nexport interface GuardianInfo {\n isGuardianAccount: boolean;\n guardianEndpoint: string | null;\n guardianProvider:\n | \"open-zeppelin\"\n | \"gateway\"\n | \"lambda-class\"\n | \"custom\"\n | null;\n guardianSyncStatus: \"in-sync\" | \"out-of-sync\" | null;\n}\n\nexport type InputNoteDetails = {\n noteId: string;\n senderAccountId: string | undefined;\n assets: FungibleAssetDetails[];\n noteType: NoteType | undefined;\n nullifier: string;\n state: InputNoteState;\n};\n\nexport type FungibleAssetDetails = {\n amount: string;\n faucetId: string;\n};\n\n// Developer-facing transaction output interface\n// Errors from the wallet are thrown as exceptions\nexport interface TransactionOutput {\n txHash: string;\n outputNotes: Note[];\n}\n\nexport interface IFailedTransactionOutput {\n errorMessage: string;\n}\n\n// Internal wallet response format - uses serialized note data (string[])\n// Converted to Note objects for the public API (TransactionOutput)\nexport interface WalletTransactionSuccessOutput {\n txHash: string;\n outputNotes: string[];\n}\n\nexport type WalletTransactionOutput =\n | WalletTransactionSuccessOutput\n | IFailedTransactionOutput;\n\nexport type CreateAccountType =\n | \"RegularAccountImmutableCode\"\n | \"RegularAccountUpdatableCode\";\n\nexport type CreateAccountStorageMode = \"private\" | \"public\";\n\nexport interface CreateAccountParams {\n accountType?: CreateAccountType;\n storageMode?: CreateAccountStorageMode;\n customComponents?: Uint8Array[];\n}\n"]}
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "@miden-sdk/miden-wallet-adapter-base",
3
- "version": "0.16.2",
3
+ "version": "0.16.3",
4
4
  "description": "Core infrastructure for connecting Miden-compatible wallets to your dApp.",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "AGENTS.md",
10
+ "skills"
11
+ ],
7
12
  "repository": {
8
13
  "type": "git",
9
14
  "url": "git+https://github.com/0xMiden/web-sdk.git",
@@ -17,17 +22,18 @@
17
22
  "devDependencies": {
18
23
  "jsdom": "^24.0.0",
19
24
  "vitest": "^1.0.0",
20
- "@miden-sdk/miden-sdk": "0.16.2"
25
+ "@miden-sdk/miden-sdk": "0.16.3"
21
26
  },
22
27
  "bugs": {
23
28
  "url": "https://github.com/0xMiden/web-sdk/issues"
24
29
  },
25
30
  "peerDependencies": {
26
- "@miden-sdk/miden-sdk": "^0.16.2"
31
+ "@miden-sdk/miden-sdk": "^0.16.3"
27
32
  },
28
33
  "homepage": "https://github.com/0xMiden/web-sdk",
29
34
  "scripts": {
30
35
  "build": "tsc",
36
+ "typecheck": "tsc --noEmit -p tsconfig.test.json",
31
37
  "clean": "rimraf dist/ node_modules/",
32
38
  "doc": "typedoc --disableSources --tsconfig ./tsconfig.json --plugin typedoc-plugin-markdown --entryPoints index.ts",
33
39
  "test": "vitest run"
@@ -1,82 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import {
3
- WalletReadyState,
4
- BaseWalletAdapter,
5
- scopePollingDetectionStrategy,
6
- } from "../adapter";
7
-
8
- describe("WalletReadyState enum", () => {
9
- it("has correct values", () => {
10
- expect(WalletReadyState.Installed).toBe("Installed");
11
- expect(WalletReadyState.NotDetected).toBe("NotDetected");
12
- expect(WalletReadyState.Loadable).toBe("Loadable");
13
- expect(WalletReadyState.Unsupported).toBe("Unsupported");
14
- });
15
- });
16
-
17
- describe("BaseWalletAdapter", () => {
18
- // Concrete subclass for testing
19
- class TestAdapter extends BaseWalletAdapter {
20
- name = "Test" as any;
21
- url = "https://test.com";
22
- icon = "icon";
23
- readyState = WalletReadyState.Installed;
24
- address: string | null = null;
25
- publicKey: Uint8Array | null = null;
26
- connecting = false;
27
- supportedTransactionVersions = null;
28
-
29
- async connect() {}
30
- async disconnect() {}
31
- }
32
-
33
- it("connected returns true when address is set", () => {
34
- const adapter = new TestAdapter();
35
- adapter.address = "0xabc";
36
- expect(adapter.connected).toBe(true);
37
- });
38
-
39
- it("connected returns false when address is null", () => {
40
- const adapter = new TestAdapter();
41
- expect(adapter.connected).toBe(false);
42
- });
43
- });
44
-
45
- describe("scopePollingDetectionStrategy", () => {
46
- beforeEach(() => {
47
- vi.useFakeTimers();
48
- });
49
-
50
- afterEach(() => {
51
- vi.useRealTimers();
52
- });
53
-
54
- it("calls detect immediately and cleans up on detection", () => {
55
- const detect = vi.fn().mockReturnValue(true);
56
- scopePollingDetectionStrategy(detect);
57
- expect(detect).toHaveBeenCalled();
58
- });
59
-
60
- it("sets up polling interval when not immediately detected", () => {
61
- let callCount = 0;
62
- const detect = vi.fn(() => {
63
- callCount++;
64
- return callCount >= 3;
65
- });
66
-
67
- scopePollingDetectionStrategy(detect);
68
- // First call is immediate (returns false)
69
- expect(detect).toHaveBeenCalledTimes(1);
70
-
71
- // Advance timer to trigger interval
72
- vi.advanceTimersByTime(1000);
73
- expect(detect).toHaveBeenCalledTimes(2);
74
-
75
- vi.advanceTimersByTime(1000);
76
- expect(detect).toHaveBeenCalledTimes(3);
77
-
78
- // After detection (callCount >= 3), interval should be cleared
79
- vi.advanceTimersByTime(1000);
80
- expect(detect).toHaveBeenCalledTimes(3);
81
- });
82
- });
@@ -1,100 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import {
3
- WalletError,
4
- WalletNotReadyError,
5
- WalletLoadError,
6
- WalletConfigError,
7
- WalletConnectionError,
8
- WalletNotSelectedError,
9
- WalletDisconnectedError,
10
- WalletDisconnectionError,
11
- WalletAccountError,
12
- WalletAddressError,
13
- WalletKeypairError,
14
- WalletNotConnectedError,
15
- WalletSendTransactionError,
16
- WalletSignMessageError,
17
- WalletSignTransactionError,
18
- WalletTimeoutError,
19
- WalletWindowBlockedError,
20
- WalletWindowClosedError,
21
- WalletDecryptionNotAllowedError,
22
- WalletPrivateDataPermissionError,
23
- WalletDecryptionError,
24
- WalletRecordsError,
25
- WalletTransactionError,
26
- } from "../errors";
27
-
28
- const errorClasses = [
29
- { Class: WalletNotReadyError, name: "WalletNotReadyError" },
30
- { Class: WalletLoadError, name: "WalletLoadError" },
31
- { Class: WalletConfigError, name: "WalletConfigError" },
32
- { Class: WalletConnectionError, name: "WalletConnectionError" },
33
- { Class: WalletNotSelectedError, name: "WalletNotSelectedError" },
34
- { Class: WalletDisconnectedError, name: "WalletDisconnectedError" },
35
- { Class: WalletDisconnectionError, name: "WalletDisconnectionError" },
36
- { Class: WalletAccountError, name: "WalletAccountError" },
37
- { Class: WalletAddressError, name: "WalletAddressError" },
38
- { Class: WalletKeypairError, name: "WalletKeypairError" },
39
- { Class: WalletNotConnectedError, name: "WalletNotConnectedError" },
40
- { Class: WalletSendTransactionError, name: "WalletSendTransactionError" },
41
- { Class: WalletSignMessageError, name: "WalletSignMessageError" },
42
- { Class: WalletSignTransactionError, name: "WalletSignTransactionError" },
43
- { Class: WalletTimeoutError, name: "WalletTimeoutError" },
44
- { Class: WalletWindowBlockedError, name: "WalletWindowBlockedError" },
45
- { Class: WalletWindowClosedError, name: "WalletWindowClosedError" },
46
- {
47
- Class: WalletDecryptionNotAllowedError,
48
- name: "WalletDecryptionNotAllowedError",
49
- },
50
- {
51
- Class: WalletPrivateDataPermissionError,
52
- name: "WalletPrivateDataPermissionError",
53
- },
54
- { Class: WalletDecryptionError, name: "WalletDecryptionError" },
55
- { Class: WalletRecordsError, name: "WalletRecordsError" },
56
- { Class: WalletTransactionError, name: "WalletTransactionError" },
57
- ] as const;
58
-
59
- describe("WalletError", () => {
60
- it("extends Error", () => {
61
- const err = new WalletError("test message");
62
- expect(err).toBeInstanceOf(Error);
63
- expect(err).toBeInstanceOf(WalletError);
64
- });
65
-
66
- it("sets message property", () => {
67
- const err = new WalletError("my message");
68
- expect(err.message).toBe("my message");
69
- });
70
-
71
- it("stores inner error", () => {
72
- const inner = new Error("inner");
73
- const err = new WalletError("outer", inner);
74
- expect(err.error).toBe(inner);
75
- });
76
- });
77
-
78
- describe("error subclasses", () => {
79
- for (const { Class, name } of errorClasses) {
80
- describe(name, () => {
81
- it("extends WalletError and Error", () => {
82
- const err = new Class();
83
- expect(err).toBeInstanceOf(WalletError);
84
- expect(err).toBeInstanceOf(Error);
85
- });
86
-
87
- it("has correct name property", () => {
88
- const err = new Class();
89
- expect(err.name).toBe(name);
90
- });
91
-
92
- it("stores inner error", () => {
93
- const inner = new Error("cause");
94
- const err = new Class("msg", inner);
95
- expect(err.error).toBe(inner);
96
- expect(err.message).toBe("msg");
97
- });
98
- });
99
- }
100
- });
@@ -1,39 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { u8ToB64, b64ToU8 } from "../helpers";
3
-
4
- describe("u8ToB64", () => {
5
- it("encodes a known value correctly", () => {
6
- const bytes = new Uint8Array([72, 101, 108, 108, 111]); // "Hello"
7
- expect(u8ToB64(bytes)).toBe("SGVsbG8=");
8
- });
9
-
10
- it("encodes an empty array", () => {
11
- expect(u8ToB64(new Uint8Array([]))).toBe("");
12
- });
13
- });
14
-
15
- describe("b64ToU8", () => {
16
- it("decodes a known value correctly", () => {
17
- const result = b64ToU8("SGVsbG8=");
18
- expect(result).toEqual(new Uint8Array([72, 101, 108, 108, 111]));
19
- });
20
-
21
- it("decodes an empty string", () => {
22
- expect(b64ToU8("")).toEqual(new Uint8Array([]));
23
- });
24
- });
25
-
26
- describe("roundtrip", () => {
27
- it("encode then decode returns original bytes", () => {
28
- const original = new Uint8Array([0, 1, 127, 128, 255]);
29
- const decoded = b64ToU8(u8ToB64(original));
30
- expect(decoded).toEqual(original);
31
- });
32
-
33
- it("handles a large array (256 bytes)", () => {
34
- const original = new Uint8Array(256);
35
- for (let i = 0; i < 256; i++) original[i] = i;
36
- const decoded = b64ToU8(u8ToB64(original));
37
- expect(decoded).toEqual(original);
38
- });
39
- });
@@ -1,20 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import type { GuardianInfo } from "../types";
3
-
4
- describe("GuardianInfo", () => {
5
- it("has the agreed shape", () => {
6
- const g: GuardianInfo = {
7
- isGuardianAccount: false,
8
- guardianEndpoint: null,
9
- guardianProvider: null,
10
- guardianSyncStatus: null,
11
- };
12
-
13
- expect(Object.keys(g).sort()).toEqual([
14
- "guardianEndpoint",
15
- "guardianProvider",
16
- "guardianSyncStatus",
17
- "isGuardianAccount",
18
- ]);
19
- });
20
- });
@@ -1,166 +0,0 @@
1
- import { describe, it, expect, vi } from "vitest";
2
- import {
3
- SendTransaction,
4
- ConsumeTransaction,
5
- CustomTransaction,
6
- Transaction,
7
- TransactionType,
8
- } from "../transaction";
9
- import { u8ToB64 } from "../helpers";
10
-
11
- describe("TransactionType enum", () => {
12
- it("has correct values", () => {
13
- expect(TransactionType.Send).toBe("send");
14
- expect(TransactionType.Consume).toBe("consume");
15
- expect(TransactionType.Custom).toBe("custom");
16
- });
17
- });
18
-
19
- describe("SendTransaction", () => {
20
- it("sets all fields correctly", () => {
21
- const tx = new SendTransaction(
22
- "sender-addr",
23
- "recipient-addr",
24
- "faucet-123",
25
- "public",
26
- 1000
27
- );
28
- expect(tx.senderAddress).toBe("sender-addr");
29
- expect(tx.recipientAddress).toBe("recipient-addr");
30
- expect(tx.faucetId).toBe("faucet-123");
31
- expect(tx.noteType).toBe("public");
32
- expect(tx.amount).toBe(1000);
33
- expect(tx.recallBlocks).toBeUndefined();
34
- });
35
-
36
- it("sets optional recallBlocks", () => {
37
- const tx = new SendTransaction(
38
- "sender",
39
- "recipient",
40
- "faucet",
41
- "private",
42
- 500,
43
- 10
44
- );
45
- expect(tx.recallBlocks).toBe(10);
46
- });
47
- });
48
-
49
- describe("ConsumeTransaction", () => {
50
- it("sets fields correctly", () => {
51
- const tx = new ConsumeTransaction("faucet-1", "note-1", "public", 100);
52
- expect(tx.faucetId).toBe("faucet-1");
53
- expect(tx.noteId).toBe("note-1");
54
- expect(tx.noteType).toBe("public");
55
- expect(tx.amount).toBe(100);
56
- expect(tx.noteBytes).toBeUndefined();
57
- });
58
-
59
- it("converts noteBytes Uint8Array to base64", () => {
60
- const bytes = new Uint8Array([1, 2, 3]);
61
- const tx = new ConsumeTransaction("faucet", "note", "private", 50, bytes);
62
- expect(tx.noteBytes).toBe(u8ToB64(bytes));
63
- });
64
-
65
- it("leaves noteBytes undefined when not provided", () => {
66
- const tx = new ConsumeTransaction("faucet", "note", "public", 50);
67
- expect(tx.noteBytes).toBeUndefined();
68
- });
69
- });
70
-
71
- describe("CustomTransaction", () => {
72
- it("serializes transactionRequest to base64", () => {
73
- const mockBytes = new Uint8Array([10, 20, 30]);
74
- const mockRequest = {
75
- serialize: vi.fn().mockReturnValue(mockBytes),
76
- } as any;
77
-
78
- const tx = new CustomTransaction("addr", "recipient", mockRequest);
79
- expect(mockRequest.serialize).toHaveBeenCalled();
80
- expect(tx.transactionRequest).toBe(u8ToB64(mockBytes));
81
- expect(tx.address).toBe("addr");
82
- expect(tx.recipientAddress).toBe("recipient");
83
- });
84
-
85
- it("sets optional inputNoteIds", () => {
86
- const mockRequest = {
87
- serialize: vi.fn().mockReturnValue(new Uint8Array([1])),
88
- } as any;
89
- const tx = new CustomTransaction("addr", "recipient", mockRequest, [
90
- "id1",
91
- "id2",
92
- ]);
93
- expect(tx.inputNoteIds).toEqual(["id1", "id2"]);
94
- });
95
-
96
- it("converts importNotes from Uint8Array[] to base64 strings", () => {
97
- const mockRequest = {
98
- serialize: vi.fn().mockReturnValue(new Uint8Array([1])),
99
- } as any;
100
- const noteBytes = [new Uint8Array([4, 5]), new Uint8Array([6, 7])];
101
- const tx = new CustomTransaction(
102
- "addr",
103
- "recipient",
104
- mockRequest,
105
- ["id1"],
106
- noteBytes
107
- );
108
- expect(tx.importNotes).toEqual([
109
- u8ToB64(noteBytes[0]),
110
- u8ToB64(noteBytes[1]),
111
- ]);
112
- });
113
-
114
- it("leaves optional fields undefined when not provided", () => {
115
- const mockRequest = {
116
- serialize: vi.fn().mockReturnValue(new Uint8Array([1])),
117
- } as any;
118
- const tx = new CustomTransaction("addr", "recipient", mockRequest);
119
- expect(tx.inputNoteIds).toBeUndefined();
120
- expect(tx.importNotes).toBeUndefined();
121
- });
122
- });
123
-
124
- describe("Transaction factory", () => {
125
- it("createSendTransaction returns correct type and payload", () => {
126
- const tx = Transaction.createSendTransaction(
127
- "sender",
128
- "recipient",
129
- "faucet",
130
- "public",
131
- 100
132
- );
133
- expect(tx.type).toBe(TransactionType.Send);
134
- expect(tx.payload).toBeInstanceOf(SendTransaction);
135
- const payload = tx.payload as SendTransaction;
136
- expect(payload.senderAddress).toBe("sender");
137
- expect(payload.amount).toBe(100);
138
- });
139
-
140
- it("createConsumeTransaction returns correct type and payload", () => {
141
- const tx = Transaction.createConsumeTransaction(
142
- "faucet",
143
- "note-id",
144
- "private",
145
- 200
146
- );
147
- expect(tx.type).toBe(TransactionType.Consume);
148
- expect(tx.payload).toBeInstanceOf(ConsumeTransaction);
149
- const payload = tx.payload as ConsumeTransaction;
150
- expect(payload.faucetId).toBe("faucet");
151
- expect(payload.noteId).toBe("note-id");
152
- });
153
-
154
- it("createCustomTransaction returns correct type and payload", () => {
155
- const mockRequest = {
156
- serialize: vi.fn().mockReturnValue(new Uint8Array([1, 2])),
157
- } as any;
158
- const tx = Transaction.createCustomTransaction(
159
- "addr",
160
- "recipient",
161
- mockRequest
162
- );
163
- expect(tx.type).toBe(TransactionType.Custom);
164
- expect(tx.payload).toBeInstanceOf(CustomTransaction);
165
- });
166
- });