@metamask/snaps-simulation 3.6.0 → 3.8.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 (138) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/dist/constants.cjs +1 -5
  3. package/dist/constants.cjs.map +1 -1
  4. package/dist/constants.d.cts +0 -4
  5. package/dist/constants.d.cts.map +1 -1
  6. package/dist/constants.d.mts +0 -4
  7. package/dist/constants.d.mts.map +1 -1
  8. package/dist/constants.mjs +0 -4
  9. package/dist/constants.mjs.map +1 -1
  10. package/dist/controllers.cjs +1 -0
  11. package/dist/controllers.cjs.map +1 -1
  12. package/dist/controllers.d.cts.map +1 -1
  13. package/dist/controllers.d.mts.map +1 -1
  14. package/dist/controllers.mjs +1 -0
  15. package/dist/controllers.mjs.map +1 -1
  16. package/dist/methods/hooks/chain.cjs +29 -0
  17. package/dist/methods/hooks/chain.cjs.map +1 -0
  18. package/dist/methods/hooks/chain.d.cts +9 -0
  19. package/dist/methods/hooks/chain.d.cts.map +1 -0
  20. package/dist/methods/hooks/chain.d.mts +9 -0
  21. package/dist/methods/hooks/chain.d.mts.map +1 -0
  22. package/dist/methods/hooks/chain.mjs +25 -0
  23. package/dist/methods/hooks/chain.mjs.map +1 -0
  24. package/dist/methods/hooks/index.cjs +1 -0
  25. package/dist/methods/hooks/index.cjs.map +1 -1
  26. package/dist/methods/hooks/index.d.cts +1 -0
  27. package/dist/methods/hooks/index.d.cts.map +1 -1
  28. package/dist/methods/hooks/index.d.mts +1 -0
  29. package/dist/methods/hooks/index.d.mts.map +1 -1
  30. package/dist/methods/hooks/index.mjs +1 -0
  31. package/dist/methods/hooks/index.mjs.map +1 -1
  32. package/dist/middleware/engine.cjs +3 -9
  33. package/dist/middleware/engine.cjs.map +1 -1
  34. package/dist/middleware/engine.d.cts +1 -2
  35. package/dist/middleware/engine.d.cts.map +1 -1
  36. package/dist/middleware/engine.d.mts +1 -2
  37. package/dist/middleware/engine.d.mts.map +1 -1
  38. package/dist/middleware/engine.mjs +3 -9
  39. package/dist/middleware/engine.mjs.map +1 -1
  40. package/dist/middleware/internal-methods/chain-id.cjs +3 -4
  41. package/dist/middleware/internal-methods/chain-id.cjs.map +1 -1
  42. package/dist/middleware/internal-methods/chain-id.d.cts +3 -1
  43. package/dist/middleware/internal-methods/chain-id.d.cts.map +1 -1
  44. package/dist/middleware/internal-methods/chain-id.d.mts +3 -1
  45. package/dist/middleware/internal-methods/chain-id.d.mts.map +1 -1
  46. package/dist/middleware/internal-methods/chain-id.mjs +3 -4
  47. package/dist/middleware/internal-methods/chain-id.mjs.map +1 -1
  48. package/dist/middleware/internal-methods/middleware.cjs +0 -2
  49. package/dist/middleware/internal-methods/middleware.cjs.map +1 -1
  50. package/dist/middleware/internal-methods/middleware.d.cts +14 -1
  51. package/dist/middleware/internal-methods/middleware.d.cts.map +1 -1
  52. package/dist/middleware/internal-methods/middleware.d.mts +14 -1
  53. package/dist/middleware/internal-methods/middleware.d.mts.map +1 -1
  54. package/dist/middleware/internal-methods/middleware.mjs +0 -2
  55. package/dist/middleware/internal-methods/middleware.mjs.map +1 -1
  56. package/dist/middleware/internal-methods/net-version.cjs +5 -4
  57. package/dist/middleware/internal-methods/net-version.cjs.map +1 -1
  58. package/dist/middleware/internal-methods/net-version.d.cts +3 -1
  59. package/dist/middleware/internal-methods/net-version.d.cts.map +1 -1
  60. package/dist/middleware/internal-methods/net-version.d.mts +3 -1
  61. package/dist/middleware/internal-methods/net-version.d.mts.map +1 -1
  62. package/dist/middleware/internal-methods/net-version.mjs +5 -4
  63. package/dist/middleware/internal-methods/net-version.mjs.map +1 -1
  64. package/dist/middleware/internal-methods/switch-ethereum-chain.cjs +7 -3
  65. package/dist/middleware/internal-methods/switch-ethereum-chain.cjs.map +1 -1
  66. package/dist/middleware/internal-methods/switch-ethereum-chain.d.cts +7 -4
  67. package/dist/middleware/internal-methods/switch-ethereum-chain.d.cts.map +1 -1
  68. package/dist/middleware/internal-methods/switch-ethereum-chain.d.mts +7 -4
  69. package/dist/middleware/internal-methods/switch-ethereum-chain.d.mts.map +1 -1
  70. package/dist/middleware/internal-methods/switch-ethereum-chain.mjs +7 -3
  71. package/dist/middleware/internal-methods/switch-ethereum-chain.mjs.map +1 -1
  72. package/dist/middleware/provider.cjs +39 -0
  73. package/dist/middleware/provider.cjs.map +1 -0
  74. package/dist/middleware/provider.d.cts +11 -0
  75. package/dist/middleware/provider.d.cts.map +1 -0
  76. package/dist/middleware/provider.d.mts +11 -0
  77. package/dist/middleware/provider.d.mts.map +1 -0
  78. package/dist/middleware/provider.mjs +35 -0
  79. package/dist/middleware/provider.mjs.map +1 -0
  80. package/dist/simulation.cjs +6 -2
  81. package/dist/simulation.cjs.map +1 -1
  82. package/dist/simulation.d.cts +17 -3
  83. package/dist/simulation.d.cts.map +1 -1
  84. package/dist/simulation.d.mts +17 -3
  85. package/dist/simulation.d.mts.map +1 -1
  86. package/dist/simulation.mjs +7 -3
  87. package/dist/simulation.mjs.map +1 -1
  88. package/dist/store/chain.cjs +29 -0
  89. package/dist/store/chain.cjs.map +1 -0
  90. package/dist/store/chain.d.cts +18 -0
  91. package/dist/store/chain.d.cts.map +1 -0
  92. package/dist/store/chain.d.mts +18 -0
  93. package/dist/store/chain.d.mts.map +1 -0
  94. package/dist/store/chain.mjs +26 -0
  95. package/dist/store/chain.mjs.map +1 -0
  96. package/dist/store/index.cjs +1 -0
  97. package/dist/store/index.cjs.map +1 -1
  98. package/dist/store/index.d.cts +1 -0
  99. package/dist/store/index.d.cts.map +1 -1
  100. package/dist/store/index.d.mts +1 -0
  101. package/dist/store/index.d.mts.map +1 -1
  102. package/dist/store/index.mjs +1 -0
  103. package/dist/store/index.mjs.map +1 -1
  104. package/dist/store/notifications.d.cts +1 -0
  105. package/dist/store/notifications.d.cts.map +1 -1
  106. package/dist/store/notifications.d.mts +1 -0
  107. package/dist/store/notifications.d.mts.map +1 -1
  108. package/dist/store/state.d.cts +2 -0
  109. package/dist/store/state.d.cts.map +1 -1
  110. package/dist/store/state.d.mts +2 -0
  111. package/dist/store/state.d.mts.map +1 -1
  112. package/dist/store/store.cjs +2 -0
  113. package/dist/store/store.cjs.map +1 -1
  114. package/dist/store/store.d.cts +1 -0
  115. package/dist/store/store.d.cts.map +1 -1
  116. package/dist/store/store.d.mts +1 -0
  117. package/dist/store/store.d.mts.map +1 -1
  118. package/dist/store/store.mjs +2 -0
  119. package/dist/store/store.mjs.map +1 -1
  120. package/dist/store/trackables.d.cts +3 -0
  121. package/dist/store/trackables.d.cts.map +1 -1
  122. package/dist/store/trackables.d.mts +3 -0
  123. package/dist/store/trackables.d.mts.map +1 -1
  124. package/dist/store/ui.d.cts +1 -0
  125. package/dist/store/ui.d.cts.map +1 -1
  126. package/dist/store/ui.d.mts +1 -0
  127. package/dist/store/ui.d.mts.map +1 -1
  128. package/dist/structs.d.cts +51 -51
  129. package/dist/structs.d.mts +51 -51
  130. package/package.json +10 -9
  131. package/dist/middleware/internal-methods/provider-state.cjs +0 -28
  132. package/dist/middleware/internal-methods/provider-state.cjs.map +0 -1
  133. package/dist/middleware/internal-methods/provider-state.d.cts +0 -16
  134. package/dist/middleware/internal-methods/provider-state.d.cts.map +0 -1
  135. package/dist/middleware/internal-methods/provider-state.d.mts +0 -16
  136. package/dist/middleware/internal-methods/provider-state.d.mts.map +0 -1
  137. package/dist/middleware/internal-methods/provider-state.mjs +0 -24
  138. package/dist/middleware/internal-methods/provider-state.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.8.0]
11
+
12
+ ### Added
13
+
14
+ - Support more chains when simulating Ethereum provider ([#3789](https://github.com/MetaMask/snaps/pull/3789))
15
+
16
+ ### Changed
17
+
18
+ - Bump MetaMask dependencies ([#3783](https://github.com/MetaMask/snaps/pull/3783), [#3748](https://github.com/MetaMask/snaps/pull/3748), [#3791](https://github.com/MetaMask/snaps/pull/3791))
19
+
20
+ ## [3.7.0]
21
+
22
+ ### Added
23
+
24
+ - Add support for external images ([#3769](https://github.com/MetaMask/snaps/pull/3769))
25
+
10
26
  ## [3.6.0]
11
27
 
12
28
  ### Added
@@ -246,7 +262,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
246
262
 
247
263
  - Initial release of `@metamask/snaps-simulation` package ([#2727](https://github.com/MetaMask/snaps/pull/2727))
248
264
 
249
- [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.6.0...HEAD
265
+ [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.8.0...HEAD
266
+ [3.8.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.7.0...@metamask/snaps-simulation@3.8.0
267
+ [3.7.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.6.0...@metamask/snaps-simulation@3.7.0
250
268
  [3.6.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.5.1...@metamask/snaps-simulation@3.6.0
251
269
  [3.5.1]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.5.0...@metamask/snaps-simulation@3.5.1
252
270
  [3.5.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-simulation@3.4.2...@metamask/snaps-simulation@3.5.0
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_ASSETS = exports.DEFAULT_ACCOUNTS = exports.TYPEABLE_INPUTS = exports.DEFAULT_JSON_RPC_ENDPOINT = exports.DEFAULT_CURRENCY = exports.DEFAULT_LOCALE = exports.DEFAULT_ALTERNATIVE_SRP = exports.DEFAULT_SRP = void 0;
3
+ exports.DEFAULT_ASSETS = exports.DEFAULT_ACCOUNTS = exports.TYPEABLE_INPUTS = exports.DEFAULT_CURRENCY = exports.DEFAULT_LOCALE = exports.DEFAULT_ALTERNATIVE_SRP = exports.DEFAULT_SRP = void 0;
4
4
  /**
5
5
  * A secret recovery phrase that is used for testing purposes. Do not use this
6
6
  * to store any real funds!
@@ -19,10 +19,6 @@ exports.DEFAULT_LOCALE = 'en';
19
19
  * The default currency.
20
20
  */
21
21
  exports.DEFAULT_CURRENCY = 'usd';
22
- /**
23
- * The default JSON-RPC endpoint for Ethereum requests.
24
- */
25
- exports.DEFAULT_JSON_RPC_ENDPOINT = 'https://cloudflare-eth.com/';
26
22
  /**
27
23
  * The types of inputs that can be used in the `typeInField` interface action.
28
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACU,QAAA,WAAW,GACtB,6DAA6D,CAAC;AAEhE;;;GAGG;AACU,QAAA,uBAAuB,GAClC,+FAA+F,CAAC;AAElG;;GAEG;AACU,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACU,QAAA,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACU,QAAA,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE;;GAEG;AACU,QAAA,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAE5C,QAAA,gBAAgB,GAAwB;IACnD;QACE,OAAO,EAAE,4CAA4C;QACrD,EAAE,EAAE,sCAAsC;QAC1C,MAAM,EAAE,CAAC,UAAU,CAAC;QACpB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,sFAAsF;QACtF,MAAM,EAAE,EAAE;KACX;IACD;QACE,OAAO,EAAE,8CAA8C;QACvD,EAAE,EAAE,sCAAsC;QAC1C,MAAM,EAAE;YACN,yCAAyC;YACzC,yCAAyC;YACzC,yCAAyC;SAC1C;QACD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE;YACN,oDAAoD;YACpD,4FAA4F;SAC7F;KACF;CACF,CAAC;AAEW,QAAA,cAAc,GAAG;IAC5B,oDAAoD,EAAE;QACpD,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,4FAA4F,EAC1F;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;KACf;CACJ,CAAC","sourcesContent":["import type { SimulationAccount } from './options';\n\n/**\n * A secret recovery phrase that is used for testing purposes. Do not use this\n * to store any real funds!\n */\nexport const DEFAULT_SRP =\n 'test test test test test test test test test test test ball';\n\n/**\n * An alternative secret recovery phrase that is used for testing purposes. Do\n * not use this to store any real funds!\n */\nexport const DEFAULT_ALTERNATIVE_SRP =\n 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';\n\n/**\n * The default locale.\n */\nexport const DEFAULT_LOCALE = 'en';\n\n/**\n * The default currency.\n */\nexport const DEFAULT_CURRENCY = 'usd';\n\n/**\n * The default JSON-RPC endpoint for Ethereum requests.\n */\nexport const DEFAULT_JSON_RPC_ENDPOINT = 'https://cloudflare-eth.com/';\n\n/**\n * The types of inputs that can be used in the `typeInField` interface action.\n */\nexport const TYPEABLE_INPUTS = ['Input', 'AddressInput'];\n\nexport const DEFAULT_ACCOUNTS: SimulationAccount[] = [\n {\n address: '0x1234567890abcdef1234567890abcdef12345678',\n id: '29bc7513-d1b9-4466-98a6-f5f9e0b90137',\n scopes: ['eip155:0'],\n selected: false,\n owned: false,\n // We don't expose assets for EVM accounts as it's not supported in the AssetSelector.\n assets: [],\n },\n {\n address: '7S3P4HxJpyyigGzodYwHtCxZyUQe9JiBMHyRWXArAaKv',\n id: 'e051723c-85d0-43a3-b9bf-568a90d3f378',\n scopes: [\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n ],\n selected: true,\n owned: true,\n assets: [\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501',\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n ],\n },\n];\n\nexport const DEFAULT_ASSETS = {\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': {\n name: 'Solana',\n symbol: 'SOL',\n },\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v':\n {\n name: 'USDC',\n symbol: 'USDC',\n },\n};\n"]}
1
+ {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACU,QAAA,WAAW,GACtB,6DAA6D,CAAC;AAEhE;;;GAGG;AACU,QAAA,uBAAuB,GAClC,+FAA+F,CAAC;AAElG;;GAEG;AACU,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACU,QAAA,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACU,QAAA,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAE5C,QAAA,gBAAgB,GAAwB;IACnD;QACE,OAAO,EAAE,4CAA4C;QACrD,EAAE,EAAE,sCAAsC;QAC1C,MAAM,EAAE,CAAC,UAAU,CAAC;QACpB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,sFAAsF;QACtF,MAAM,EAAE,EAAE;KACX;IACD;QACE,OAAO,EAAE,8CAA8C;QACvD,EAAE,EAAE,sCAAsC;QAC1C,MAAM,EAAE;YACN,yCAAyC;YACzC,yCAAyC;YACzC,yCAAyC;SAC1C;QACD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE;YACN,oDAAoD;YACpD,4FAA4F;SAC7F;KACF;CACF,CAAC;AAEW,QAAA,cAAc,GAAG;IAC5B,oDAAoD,EAAE;QACpD,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,4FAA4F,EAC1F;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;KACf;CACJ,CAAC","sourcesContent":["import type { SimulationAccount } from './options';\n\n/**\n * A secret recovery phrase that is used for testing purposes. Do not use this\n * to store any real funds!\n */\nexport const DEFAULT_SRP =\n 'test test test test test test test test test test test ball';\n\n/**\n * An alternative secret recovery phrase that is used for testing purposes. Do\n * not use this to store any real funds!\n */\nexport const DEFAULT_ALTERNATIVE_SRP =\n 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';\n\n/**\n * The default locale.\n */\nexport const DEFAULT_LOCALE = 'en';\n\n/**\n * The default currency.\n */\nexport const DEFAULT_CURRENCY = 'usd';\n\n/**\n * The types of inputs that can be used in the `typeInField` interface action.\n */\nexport const TYPEABLE_INPUTS = ['Input', 'AddressInput'];\n\nexport const DEFAULT_ACCOUNTS: SimulationAccount[] = [\n {\n address: '0x1234567890abcdef1234567890abcdef12345678',\n id: '29bc7513-d1b9-4466-98a6-f5f9e0b90137',\n scopes: ['eip155:0'],\n selected: false,\n owned: false,\n // We don't expose assets for EVM accounts as it's not supported in the AssetSelector.\n assets: [],\n },\n {\n address: '7S3P4HxJpyyigGzodYwHtCxZyUQe9JiBMHyRWXArAaKv',\n id: 'e051723c-85d0-43a3-b9bf-568a90d3f378',\n scopes: [\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n ],\n selected: true,\n owned: true,\n assets: [\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501',\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n ],\n },\n];\n\nexport const DEFAULT_ASSETS = {\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': {\n name: 'Solana',\n symbol: 'SOL',\n },\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v':\n {\n name: 'USDC',\n symbol: 'USDC',\n },\n};\n"]}
@@ -17,10 +17,6 @@ export declare const DEFAULT_LOCALE = "en";
17
17
  * The default currency.
18
18
  */
19
19
  export declare const DEFAULT_CURRENCY = "usd";
20
- /**
21
- * The default JSON-RPC endpoint for Ethereum requests.
22
- */
23
- export declare const DEFAULT_JSON_RPC_ENDPOINT = "https://cloudflare-eth.com/";
24
20
  /**
25
21
  * The types of inputs that can be used in the `typeInField` interface action.
26
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AAEnD;;;GAGG;AACH,eAAO,MAAM,WAAW,gEACuC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,kGAC6D,CAAC;AAElG;;GAEG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,eAAe,UAA4B,CAAC;AAEzD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAyB/C,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;CAU1B,CAAC"}
1
+ {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AAEnD;;;GAGG;AACH,eAAO,MAAM,WAAW,gEACuC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,kGAC6D,CAAC;AAElG;;GAEG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,eAAe,UAA4B,CAAC;AAEzD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAyB/C,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;CAU1B,CAAC"}
@@ -17,10 +17,6 @@ export declare const DEFAULT_LOCALE = "en";
17
17
  * The default currency.
18
18
  */
19
19
  export declare const DEFAULT_CURRENCY = "usd";
20
- /**
21
- * The default JSON-RPC endpoint for Ethereum requests.
22
- */
23
- export declare const DEFAULT_JSON_RPC_ENDPOINT = "https://cloudflare-eth.com/";
24
20
  /**
25
21
  * The types of inputs that can be used in the `typeInField` interface action.
26
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AAEnD;;;GAGG;AACH,eAAO,MAAM,WAAW,gEACuC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,kGAC6D,CAAC;AAElG;;GAEG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,eAAe,UAA4B,CAAC;AAEzD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAyB/C,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;CAU1B,CAAC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AAEnD;;;GAGG;AACH,eAAO,MAAM,WAAW,gEACuC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,kGAC6D,CAAC;AAElG;;GAEG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,eAAe,UAA4B,CAAC;AAEzD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAyB/C,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;CAU1B,CAAC"}
@@ -16,10 +16,6 @@ export const DEFAULT_LOCALE = 'en';
16
16
  * The default currency.
17
17
  */
18
18
  export const DEFAULT_CURRENCY = 'usd';
19
- /**
20
- * The default JSON-RPC endpoint for Ethereum requests.
21
- */
22
- export const DEFAULT_JSON_RPC_ENDPOINT = 'https://cloudflare-eth.com/';
23
19
  /**
24
20
  * The types of inputs that can be used in the `typeInField` interface action.
25
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,6DAA6D,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,+FAA+F,CAAC;AAElG;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAwB;IACnD;QACE,OAAO,EAAE,4CAA4C;QACrD,EAAE,EAAE,sCAAsC;QAC1C,MAAM,EAAE,CAAC,UAAU,CAAC;QACpB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,sFAAsF;QACtF,MAAM,EAAE,EAAE;KACX;IACD;QACE,OAAO,EAAE,8CAA8C;QACvD,EAAE,EAAE,sCAAsC;QAC1C,MAAM,EAAE;YACN,yCAAyC;YACzC,yCAAyC;YACzC,yCAAyC;SAC1C;QACD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE;YACN,oDAAoD;YACpD,4FAA4F;SAC7F;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oDAAoD,EAAE;QACpD,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,4FAA4F,EAC1F;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;KACf;CACJ,CAAC","sourcesContent":["import type { SimulationAccount } from './options';\n\n/**\n * A secret recovery phrase that is used for testing purposes. Do not use this\n * to store any real funds!\n */\nexport const DEFAULT_SRP =\n 'test test test test test test test test test test test ball';\n\n/**\n * An alternative secret recovery phrase that is used for testing purposes. Do\n * not use this to store any real funds!\n */\nexport const DEFAULT_ALTERNATIVE_SRP =\n 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';\n\n/**\n * The default locale.\n */\nexport const DEFAULT_LOCALE = 'en';\n\n/**\n * The default currency.\n */\nexport const DEFAULT_CURRENCY = 'usd';\n\n/**\n * The default JSON-RPC endpoint for Ethereum requests.\n */\nexport const DEFAULT_JSON_RPC_ENDPOINT = 'https://cloudflare-eth.com/';\n\n/**\n * The types of inputs that can be used in the `typeInField` interface action.\n */\nexport const TYPEABLE_INPUTS = ['Input', 'AddressInput'];\n\nexport const DEFAULT_ACCOUNTS: SimulationAccount[] = [\n {\n address: '0x1234567890abcdef1234567890abcdef12345678',\n id: '29bc7513-d1b9-4466-98a6-f5f9e0b90137',\n scopes: ['eip155:0'],\n selected: false,\n owned: false,\n // We don't expose assets for EVM accounts as it's not supported in the AssetSelector.\n assets: [],\n },\n {\n address: '7S3P4HxJpyyigGzodYwHtCxZyUQe9JiBMHyRWXArAaKv',\n id: 'e051723c-85d0-43a3-b9bf-568a90d3f378',\n scopes: [\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n ],\n selected: true,\n owned: true,\n assets: [\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501',\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n ],\n },\n];\n\nexport const DEFAULT_ASSETS = {\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': {\n name: 'Solana',\n symbol: 'SOL',\n },\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v':\n {\n name: 'USDC',\n symbol: 'USDC',\n },\n};\n"]}
1
+ {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,6DAA6D,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,+FAA+F,CAAC;AAElG;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAwB;IACnD;QACE,OAAO,EAAE,4CAA4C;QACrD,EAAE,EAAE,sCAAsC;QAC1C,MAAM,EAAE,CAAC,UAAU,CAAC;QACpB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,sFAAsF;QACtF,MAAM,EAAE,EAAE;KACX;IACD;QACE,OAAO,EAAE,8CAA8C;QACvD,EAAE,EAAE,sCAAsC;QAC1C,MAAM,EAAE;YACN,yCAAyC;YACzC,yCAAyC;YACzC,yCAAyC;SAC1C;QACD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE;YACN,oDAAoD;YACpD,4FAA4F;SAC7F;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oDAAoD,EAAE;QACpD,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,4FAA4F,EAC1F;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;KACf;CACJ,CAAC","sourcesContent":["import type { SimulationAccount } from './options';\n\n/**\n * A secret recovery phrase that is used for testing purposes. Do not use this\n * to store any real funds!\n */\nexport const DEFAULT_SRP =\n 'test test test test test test test test test test test ball';\n\n/**\n * An alternative secret recovery phrase that is used for testing purposes. Do\n * not use this to store any real funds!\n */\nexport const DEFAULT_ALTERNATIVE_SRP =\n 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';\n\n/**\n * The default locale.\n */\nexport const DEFAULT_LOCALE = 'en';\n\n/**\n * The default currency.\n */\nexport const DEFAULT_CURRENCY = 'usd';\n\n/**\n * The types of inputs that can be used in the `typeInField` interface action.\n */\nexport const TYPEABLE_INPUTS = ['Input', 'AddressInput'];\n\nexport const DEFAULT_ACCOUNTS: SimulationAccount[] = [\n {\n address: '0x1234567890abcdef1234567890abcdef12345678',\n id: '29bc7513-d1b9-4466-98a6-f5f9e0b90137',\n scopes: ['eip155:0'],\n selected: false,\n owned: false,\n // We don't expose assets for EVM accounts as it's not supported in the AssetSelector.\n assets: [],\n },\n {\n address: '7S3P4HxJpyyigGzodYwHtCxZyUQe9JiBMHyRWXArAaKv',\n id: 'e051723c-85d0-43a3-b9bf-568a90d3f378',\n scopes: [\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n ],\n selected: true,\n owned: true,\n assets: [\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501',\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n ],\n },\n];\n\nexport const DEFAULT_ASSETS = {\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': {\n name: 'Solana',\n symbol: 'SOL',\n },\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v':\n {\n name: 'USDC',\n symbol: 'USDC',\n },\n};\n"]}
@@ -37,6 +37,7 @@ function getControllers(options) {
37
37
  'AccountsController:getSelectedMultichainAccount',
38
38
  'AccountsController:listMultichainAccounts',
39
39
  'MultichainAssetsController:getState',
40
+ 'PermissionController:hasPermission',
40
41
  ],
41
42
  events: ['NotificationServicesController:notificationsListUpdated'],
42
43
  });
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.cjs","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAOhD,2EAIyC;AACzC,mEAAsE;AAOtE,mEAIqC;AAGrC,2CAA8C;AAE9C,iDAAwD;AACxD,uDAA2D;AAqC3D;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,yBAAyB,GAAG,IAAI,iDAAyB,CAAC;QAC9D,SAAS,EAAE,IAAI,qBAAS,CAAC;YACvB,SAAS,EAAE,2BAA2B;YACtC,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QACF,iBAAiB,EAAE,GAAG;KACvB,CAAC,CAAC;IAEH,MAAM,4BAA4B,GAAG,IAAI,qBAAS,CAAC;QACjD,SAAS,EAAE,yBAAyB;QACpC,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,CAAC;QAC3B,SAAS,EAAE,4BAA4B;QACvC,OAAO,EAAE;YACP,+BAA+B;YAC/B,+BAA+B;YAC/B,kCAAkC;YAClC,wCAAwC;YACxC,iDAAiD;YACjD,2CAA2C;YAC3C,qCAAqC;SACtC;QACD,MAAM,EAAE,CAAC,yDAAyD,CAAC;KACpE,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAI,2CAAuB,CAAC;QACtD,SAAS,EAAE,4BAA4B;KACxC,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,oBAAoB;QACpB,yBAAyB;QACzB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAxCD,wCAwCC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAA8B;IAC7D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,wBAAwB,GAAG,IAAA,qCAA2B,EAAC,OAAO,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC;QAC9B,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,CAAC;QAC3B,SAAS;QACT,OAAO,EAAE;YACP,+BAA+B;YAC/B,+BAA+B;YAC/B,kCAAkC;YAClC,kCAAkC;YAClC,6BAA6B;YAC7B,wBAAwB;YACxB,8CAA8C;SAC/C;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,4CAAoB,CAAC;QAC9B,SAAS;QACT,oBAAoB,EAAE;YACpB,GAAG,wCAA0B;YAC7B,GAAG,iDAAkC;SACtC;QACD,wBAAwB;QACxB,mBAAmB,EAAE,gCAAoB;KAC1C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,QAAsB,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GACgB;IAE3C,yBAAyB,CAAC,kBAAkB,CAAC;QAC3C,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,mCAAW,CAAC,IAAI;KAC9B,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAA,0CAAsB,EAChD,IAAA,mBAAW,EAAC,QAAQ,CAAC,kBAAkB,CAAC,CACzC,CAAC;IAEF,oBAAoB,CAAC,gBAAgB,CAAC;QACpC,mBAAmB;QACnB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,2BAA2B,EAAE,KAAK;KACnC,CAAC,CAAC;AACL,CAAC;AAtBD,oCAsBC","sourcesContent":["import { Messenger } from '@metamask/messenger';\nimport type {\n CaveatSpecificationConstraint,\n PermissionSpecificationConstraint,\n PermissionControllerActions,\n SubjectMetadataControllerActions,\n} from '@metamask/permission-controller';\nimport {\n PermissionController,\n SubjectMetadataController,\n SubjectType,\n} from '@metamask/permission-controller';\nimport { SnapInterfaceController } from '@metamask/snaps-controllers';\nimport type {\n ExecutionServiceActions,\n SnapInterfaceControllerActions,\n SnapInterfaceControllerAllowedActions,\n SnapInterfaceControllerStateChangeEvent,\n} from '@metamask/snaps-controllers';\nimport {\n caveatSpecifications as snapsCaveatsSpecifications,\n endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications,\n processSnapPermissions,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SnapManifest } from '@metamask/snaps-utils';\nimport { getSafeJson } from '@metamask/utils';\n\nimport { getPermissionSpecifications } from './methods';\nimport { UNRESTRICTED_METHODS } from './methods/constants';\nimport type { SimulationOptions } from './options';\nimport type { RestrictedMiddlewareHooks } from './simulation';\nimport type { RunSagaFunction } from './store';\n\nexport type RootControllerAllowedActions =\n | SnapInterfaceControllerActions\n | SnapInterfaceControllerAllowedActions\n | PermissionControllerActions\n | ExecutionServiceActions\n | SubjectMetadataControllerActions;\n\nexport type RootControllerAllowedEvents =\n SnapInterfaceControllerStateChangeEvent;\n\nexport type RootControllerMessenger = Messenger<\n any,\n RootControllerAllowedActions,\n RootControllerAllowedEvents\n>;\n\nexport type GetControllersOptions = {\n controllerMessenger: Messenger<any, any, any>;\n hooks: RestrictedMiddlewareHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\nexport type Controllers = {\n permissionController: PermissionController<\n PermissionSpecificationConstraint,\n CaveatSpecificationConstraint\n >;\n subjectMetadataController: SubjectMetadataController;\n interfaceController: SnapInterfaceController;\n};\n\n/**\n * Get the controllers for the Snap.\n *\n * @param options - The options.\n * @returns The controllers for the Snap.\n */\nexport function getControllers(options: GetControllersOptions): Controllers {\n const { controllerMessenger } = options;\n const subjectMetadataController = new SubjectMetadataController({\n messenger: new Messenger({\n namespace: 'SubjectMetadataController',\n parent: controllerMessenger,\n }),\n subjectCacheLimit: 100,\n });\n\n const interfaceControllerMessenger = new Messenger({\n namespace: 'SnapInterfaceController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger: interfaceControllerMessenger,\n actions: [\n 'PhishingController:testOrigin',\n 'ApprovalController:hasRequest',\n 'ApprovalController:acceptRequest',\n 'AccountsController:getAccountByAddress',\n 'AccountsController:getSelectedMultichainAccount',\n 'AccountsController:listMultichainAccounts',\n 'MultichainAssetsController:getState',\n ],\n events: ['NotificationServicesController:notificationsListUpdated'],\n });\n\n const interfaceController = new SnapInterfaceController({\n messenger: interfaceControllerMessenger,\n });\n\n const permissionController = getPermissionController(options);\n\n return {\n permissionController,\n subjectMetadataController,\n interfaceController,\n };\n}\n\n/**\n * Get the permission controller for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.options - Miscellaneous options.\n * @returns The permission controller for the Snap.\n */\nfunction getPermissionController(options: GetControllersOptions) {\n const { controllerMessenger } = options;\n const permissionSpecifications = getPermissionSpecifications(options);\n const messenger = new Messenger({\n namespace: 'PermissionController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger,\n actions: [\n `ApprovalController:addRequest`,\n `ApprovalController:hasRequest`,\n `ApprovalController:acceptRequest`,\n `ApprovalController:rejectRequest`,\n `SnapController:getPermitted`,\n `SnapController:install`,\n `SubjectMetadataController:getSubjectMetadata`,\n ],\n });\n\n return new PermissionController({\n messenger,\n caveatSpecifications: {\n ...snapsCaveatsSpecifications,\n ...snapsEndowmentCaveatSpecifications,\n },\n permissionSpecifications,\n unrestrictedMethods: UNRESTRICTED_METHODS,\n });\n}\n\n/**\n * Register the Snap. This sets up the Snap's permissions and subject metadata.\n *\n * @param snapId - The ID of the Snap to install.\n * @param manifest - The parsed manifest.\n * @param controllers - The controllers for the Snap.\n * @param controllers.permissionController - The permission controller.\n * @param controllers.subjectMetadataController - The subject metadata controller.\n */\nexport async function registerSnap(\n snapId: SnapId,\n manifest: SnapManifest,\n {\n permissionController,\n subjectMetadataController,\n }: Omit<Controllers, 'interfaceController'>,\n) {\n subjectMetadataController.addSubjectMetadata({\n origin: snapId,\n subjectType: SubjectType.Snap,\n });\n\n const approvedPermissions = processSnapPermissions(\n getSafeJson(manifest.initialPermissions),\n );\n\n permissionController.grantPermissions({\n approvedPermissions,\n subject: { origin: snapId },\n preserveExistingPermissions: false,\n });\n}\n"]}
1
+ {"version":3,"file":"controllers.cjs","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAOhD,2EAIyC;AACzC,mEAAsE;AAOtE,mEAIqC;AAGrC,2CAA8C;AAE9C,iDAAwD;AACxD,uDAA2D;AAqC3D;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,yBAAyB,GAAG,IAAI,iDAAyB,CAAC;QAC9D,SAAS,EAAE,IAAI,qBAAS,CAAC;YACvB,SAAS,EAAE,2BAA2B;YACtC,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QACF,iBAAiB,EAAE,GAAG;KACvB,CAAC,CAAC;IAEH,MAAM,4BAA4B,GAAG,IAAI,qBAAS,CAAC;QACjD,SAAS,EAAE,yBAAyB;QACpC,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,CAAC;QAC3B,SAAS,EAAE,4BAA4B;QACvC,OAAO,EAAE;YACP,+BAA+B;YAC/B,+BAA+B;YAC/B,kCAAkC;YAClC,wCAAwC;YACxC,iDAAiD;YACjD,2CAA2C;YAC3C,qCAAqC;YACrC,oCAAoC;SACrC;QACD,MAAM,EAAE,CAAC,yDAAyD,CAAC;KACpE,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAI,2CAAuB,CAAC;QACtD,SAAS,EAAE,4BAA4B;KACxC,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,oBAAoB;QACpB,yBAAyB;QACzB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAzCD,wCAyCC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAA8B;IAC7D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,wBAAwB,GAAG,IAAA,qCAA2B,EAAC,OAAO,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC;QAC9B,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,CAAC;QAC3B,SAAS;QACT,OAAO,EAAE;YACP,+BAA+B;YAC/B,+BAA+B;YAC/B,kCAAkC;YAClC,kCAAkC;YAClC,6BAA6B;YAC7B,wBAAwB;YACxB,8CAA8C;SAC/C;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,4CAAoB,CAAC;QAC9B,SAAS;QACT,oBAAoB,EAAE;YACpB,GAAG,wCAA0B;YAC7B,GAAG,iDAAkC;SACtC;QACD,wBAAwB;QACxB,mBAAmB,EAAE,gCAAoB;KAC1C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,QAAsB,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GACgB;IAE3C,yBAAyB,CAAC,kBAAkB,CAAC;QAC3C,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,mCAAW,CAAC,IAAI;KAC9B,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAA,0CAAsB,EAChD,IAAA,mBAAW,EAAC,QAAQ,CAAC,kBAAkB,CAAC,CACzC,CAAC;IAEF,oBAAoB,CAAC,gBAAgB,CAAC;QACpC,mBAAmB;QACnB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,2BAA2B,EAAE,KAAK;KACnC,CAAC,CAAC;AACL,CAAC;AAtBD,oCAsBC","sourcesContent":["import { Messenger } from '@metamask/messenger';\nimport type {\n CaveatSpecificationConstraint,\n PermissionSpecificationConstraint,\n PermissionControllerActions,\n SubjectMetadataControllerActions,\n} from '@metamask/permission-controller';\nimport {\n PermissionController,\n SubjectMetadataController,\n SubjectType,\n} from '@metamask/permission-controller';\nimport { SnapInterfaceController } from '@metamask/snaps-controllers';\nimport type {\n ExecutionServiceActions,\n SnapInterfaceControllerActions,\n SnapInterfaceControllerAllowedActions,\n SnapInterfaceControllerStateChangeEvent,\n} from '@metamask/snaps-controllers';\nimport {\n caveatSpecifications as snapsCaveatsSpecifications,\n endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications,\n processSnapPermissions,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SnapManifest } from '@metamask/snaps-utils';\nimport { getSafeJson } from '@metamask/utils';\n\nimport { getPermissionSpecifications } from './methods';\nimport { UNRESTRICTED_METHODS } from './methods/constants';\nimport type { SimulationOptions } from './options';\nimport type { RestrictedMiddlewareHooks } from './simulation';\nimport type { RunSagaFunction } from './store';\n\nexport type RootControllerAllowedActions =\n | SnapInterfaceControllerActions\n | SnapInterfaceControllerAllowedActions\n | PermissionControllerActions\n | ExecutionServiceActions\n | SubjectMetadataControllerActions;\n\nexport type RootControllerAllowedEvents =\n SnapInterfaceControllerStateChangeEvent;\n\nexport type RootControllerMessenger = Messenger<\n any,\n RootControllerAllowedActions,\n RootControllerAllowedEvents\n>;\n\nexport type GetControllersOptions = {\n controllerMessenger: Messenger<any, any, any>;\n hooks: RestrictedMiddlewareHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\nexport type Controllers = {\n permissionController: PermissionController<\n PermissionSpecificationConstraint,\n CaveatSpecificationConstraint\n >;\n subjectMetadataController: SubjectMetadataController;\n interfaceController: SnapInterfaceController;\n};\n\n/**\n * Get the controllers for the Snap.\n *\n * @param options - The options.\n * @returns The controllers for the Snap.\n */\nexport function getControllers(options: GetControllersOptions): Controllers {\n const { controllerMessenger } = options;\n const subjectMetadataController = new SubjectMetadataController({\n messenger: new Messenger({\n namespace: 'SubjectMetadataController',\n parent: controllerMessenger,\n }),\n subjectCacheLimit: 100,\n });\n\n const interfaceControllerMessenger = new Messenger({\n namespace: 'SnapInterfaceController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger: interfaceControllerMessenger,\n actions: [\n 'PhishingController:testOrigin',\n 'ApprovalController:hasRequest',\n 'ApprovalController:acceptRequest',\n 'AccountsController:getAccountByAddress',\n 'AccountsController:getSelectedMultichainAccount',\n 'AccountsController:listMultichainAccounts',\n 'MultichainAssetsController:getState',\n 'PermissionController:hasPermission',\n ],\n events: ['NotificationServicesController:notificationsListUpdated'],\n });\n\n const interfaceController = new SnapInterfaceController({\n messenger: interfaceControllerMessenger,\n });\n\n const permissionController = getPermissionController(options);\n\n return {\n permissionController,\n subjectMetadataController,\n interfaceController,\n };\n}\n\n/**\n * Get the permission controller for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.options - Miscellaneous options.\n * @returns The permission controller for the Snap.\n */\nfunction getPermissionController(options: GetControllersOptions) {\n const { controllerMessenger } = options;\n const permissionSpecifications = getPermissionSpecifications(options);\n const messenger = new Messenger({\n namespace: 'PermissionController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger,\n actions: [\n `ApprovalController:addRequest`,\n `ApprovalController:hasRequest`,\n `ApprovalController:acceptRequest`,\n `ApprovalController:rejectRequest`,\n `SnapController:getPermitted`,\n `SnapController:install`,\n `SubjectMetadataController:getSubjectMetadata`,\n ],\n });\n\n return new PermissionController({\n messenger,\n caveatSpecifications: {\n ...snapsCaveatsSpecifications,\n ...snapsEndowmentCaveatSpecifications,\n },\n permissionSpecifications,\n unrestrictedMethods: UNRESTRICTED_METHODS,\n });\n}\n\n/**\n * Register the Snap. This sets up the Snap's permissions and subject metadata.\n *\n * @param snapId - The ID of the Snap to install.\n * @param manifest - The parsed manifest.\n * @param controllers - The controllers for the Snap.\n * @param controllers.permissionController - The permission controller.\n * @param controllers.subjectMetadataController - The subject metadata controller.\n */\nexport async function registerSnap(\n snapId: SnapId,\n manifest: SnapManifest,\n {\n permissionController,\n subjectMetadataController,\n }: Omit<Controllers, 'interfaceController'>,\n) {\n subjectMetadataController.addSubjectMetadata({\n origin: snapId,\n subjectType: SubjectType.Snap,\n });\n\n const approvedPermissions = processSnapPermissions(\n getSafeJson(manifest.initialPermissions),\n );\n\n permissionController.grantPermissions({\n approvedPermissions,\n subject: { origin: snapId },\n preserveExistingPermissions: false,\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.d.cts","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAChD,OAAO,KAAK,EACV,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EACjC,wCAAwC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AACtE,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACrC,uCAAuC,EACxC,oCAAoC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAK1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAqB;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,0BAAgB;AAE/C,MAAM,MAAM,4BAA4B,GACpC,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,CAAC;AAErC,MAAM,MAAM,2BAA2B,GACrC,uCAAuC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAC7C,GAAG,EACH,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,KAAK,EAAE,yBAAyB,CAAC;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,EAAE,oBAAoB,CACxC,iCAAiC,EACjC,6BAA6B,CAC9B,CAAC;IACF,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAwC1E;AA0CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,iBAgB5C"}
1
+ {"version":3,"file":"controllers.d.cts","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAChD,OAAO,KAAK,EACV,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EACjC,wCAAwC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AACtE,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACrC,uCAAuC,EACxC,oCAAoC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAK1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAqB;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,0BAAgB;AAE/C,MAAM,MAAM,4BAA4B,GACpC,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,CAAC;AAErC,MAAM,MAAM,2BAA2B,GACrC,uCAAuC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAC7C,GAAG,EACH,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,KAAK,EAAE,yBAAyB,CAAC;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,EAAE,oBAAoB,CACxC,iCAAiC,EACjC,6BAA6B,CAC9B,CAAC;IACF,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAyC1E;AA0CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,iBAgB5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.d.mts","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAChD,OAAO,KAAK,EACV,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EACjC,wCAAwC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AACtE,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACrC,uCAAuC,EACxC,oCAAoC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAK1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAqB;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,0BAAgB;AAE/C,MAAM,MAAM,4BAA4B,GACpC,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,CAAC;AAErC,MAAM,MAAM,2BAA2B,GACrC,uCAAuC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAC7C,GAAG,EACH,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,KAAK,EAAE,yBAAyB,CAAC;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,EAAE,oBAAoB,CACxC,iCAAiC,EACjC,6BAA6B,CAC9B,CAAC;IACF,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAwC1E;AA0CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,iBAgB5C"}
1
+ {"version":3,"file":"controllers.d.mts","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAChD,OAAO,KAAK,EACV,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,gCAAgC,EACjC,wCAAwC;AACzC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAE1B,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AACtE,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,qCAAqC,EACrC,uCAAuC,EACxC,oCAAoC;AAMrC,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAK1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAkB;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAqB;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,0BAAgB;AAE/C,MAAM,MAAM,4BAA4B,GACpC,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,uBAAuB,GACvB,gCAAgC,CAAC;AAErC,MAAM,MAAM,2BAA2B,GACrC,uCAAuC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAC7C,GAAG,EACH,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,KAAK,EAAE,yBAAyB,CAAC;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB,EAAE,oBAAoB,CACxC,iCAAiC,EACjC,6BAA6B,CAC9B,CAAC;IACF,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,mBAAmB,EAAE,uBAAuB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAyC1E;AA0CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,iBAgB5C"}
@@ -34,6 +34,7 @@ export function getControllers(options) {
34
34
  'AccountsController:getSelectedMultichainAccount',
35
35
  'AccountsController:listMultichainAccounts',
36
36
  'MultichainAssetsController:getState',
37
+ 'PermissionController:hasPermission',
37
38
  ],
38
39
  events: ['NotificationServicesController:notificationsListUpdated'],
39
40
  });
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.mjs","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,4BAA4B;AAOhD,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,WAAW,EACZ,wCAAwC;AACzC,OAAO,EAAE,uBAAuB,EAAE,oCAAoC;AAOtE,OAAO,EACL,oBAAoB,IAAI,0BAA0B,EAClD,6BAA6B,IAAI,kCAAkC,EACnE,sBAAsB,EACvB,oCAAoC;AAGrC,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAE9C,OAAO,EAAE,2BAA2B,EAAE,4BAAkB;AACxD,OAAO,EAAE,oBAAoB,EAAE,gCAA4B;AAqC3D;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAAC;QAC9D,SAAS,EAAE,IAAI,SAAS,CAAC;YACvB,SAAS,EAAE,2BAA2B;YACtC,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QACF,iBAAiB,EAAE,GAAG;KACvB,CAAC,CAAC;IAEH,MAAM,4BAA4B,GAAG,IAAI,SAAS,CAAC;QACjD,SAAS,EAAE,yBAAyB;QACpC,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,CAAC;QAC3B,SAAS,EAAE,4BAA4B;QACvC,OAAO,EAAE;YACP,+BAA+B;YAC/B,+BAA+B;YAC/B,kCAAkC;YAClC,wCAAwC;YACxC,iDAAiD;YACjD,2CAA2C;YAC3C,qCAAqC;SACtC;QACD,MAAM,EAAE,CAAC,yDAAyD,CAAC;KACpE,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAI,uBAAuB,CAAC;QACtD,SAAS,EAAE,4BAA4B;KACxC,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,oBAAoB;QACpB,yBAAyB;QACzB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAA8B;IAC7D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CAAC,QAAQ,CAAC;QAC3B,SAAS;QACT,OAAO,EAAE;YACP,+BAA+B;YAC/B,+BAA+B;YAC/B,kCAAkC;YAClC,kCAAkC;YAClC,6BAA6B;YAC7B,wBAAwB;YACxB,8CAA8C;SAC/C;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,oBAAoB,CAAC;QAC9B,SAAS;QACT,oBAAoB,EAAE;YACpB,GAAG,0BAA0B;YAC7B,GAAG,kCAAkC;SACtC;QACD,wBAAwB;QACxB,mBAAmB,EAAE,oBAAoB;KAC1C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,QAAsB,EACtB,EACE,oBAAoB,EACpB,yBAAyB,GACgB;IAE3C,yBAAyB,CAAC,kBAAkB,CAAC;QAC3C,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,WAAW,CAAC,IAAI;KAC9B,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,sBAAsB,CAChD,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CACzC,CAAC;IAEF,oBAAoB,CAAC,gBAAgB,CAAC;QACpC,mBAAmB;QACnB,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAC3B,2BAA2B,EAAE,KAAK;KACnC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { Messenger } from '@metamask/messenger';\nimport type {\n CaveatSpecificationConstraint,\n PermissionSpecificationConstraint,\n PermissionControllerActions,\n SubjectMetadataControllerActions,\n} from '@metamask/permission-controller';\nimport {\n PermissionController,\n SubjectMetadataController,\n SubjectType,\n} from '@metamask/permission-controller';\nimport { SnapInterfaceController } from '@metamask/snaps-controllers';\nimport type {\n ExecutionServiceActions,\n SnapInterfaceControllerActions,\n SnapInterfaceControllerAllowedActions,\n SnapInterfaceControllerStateChangeEvent,\n} from '@metamask/snaps-controllers';\nimport {\n caveatSpecifications as snapsCaveatsSpecifications,\n endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications,\n processSnapPermissions,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SnapManifest } from '@metamask/snaps-utils';\nimport { getSafeJson } from '@metamask/utils';\n\nimport { getPermissionSpecifications } from './methods';\nimport { UNRESTRICTED_METHODS } from './methods/constants';\nimport type { SimulationOptions } from './options';\nimport type { RestrictedMiddlewareHooks } from './simulation';\nimport type { RunSagaFunction } from './store';\n\nexport type RootControllerAllowedActions =\n | SnapInterfaceControllerActions\n | SnapInterfaceControllerAllowedActions\n | PermissionControllerActions\n | ExecutionServiceActions\n | SubjectMetadataControllerActions;\n\nexport type RootControllerAllowedEvents =\n SnapInterfaceControllerStateChangeEvent;\n\nexport type RootControllerMessenger = Messenger<\n any,\n RootControllerAllowedActions,\n RootControllerAllowedEvents\n>;\n\nexport type GetControllersOptions = {\n controllerMessenger: Messenger<any, any, any>;\n hooks: RestrictedMiddlewareHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\nexport type Controllers = {\n permissionController: PermissionController<\n PermissionSpecificationConstraint,\n CaveatSpecificationConstraint\n >;\n subjectMetadataController: SubjectMetadataController;\n interfaceController: SnapInterfaceController;\n};\n\n/**\n * Get the controllers for the Snap.\n *\n * @param options - The options.\n * @returns The controllers for the Snap.\n */\nexport function getControllers(options: GetControllersOptions): Controllers {\n const { controllerMessenger } = options;\n const subjectMetadataController = new SubjectMetadataController({\n messenger: new Messenger({\n namespace: 'SubjectMetadataController',\n parent: controllerMessenger,\n }),\n subjectCacheLimit: 100,\n });\n\n const interfaceControllerMessenger = new Messenger({\n namespace: 'SnapInterfaceController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger: interfaceControllerMessenger,\n actions: [\n 'PhishingController:testOrigin',\n 'ApprovalController:hasRequest',\n 'ApprovalController:acceptRequest',\n 'AccountsController:getAccountByAddress',\n 'AccountsController:getSelectedMultichainAccount',\n 'AccountsController:listMultichainAccounts',\n 'MultichainAssetsController:getState',\n ],\n events: ['NotificationServicesController:notificationsListUpdated'],\n });\n\n const interfaceController = new SnapInterfaceController({\n messenger: interfaceControllerMessenger,\n });\n\n const permissionController = getPermissionController(options);\n\n return {\n permissionController,\n subjectMetadataController,\n interfaceController,\n };\n}\n\n/**\n * Get the permission controller for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.options - Miscellaneous options.\n * @returns The permission controller for the Snap.\n */\nfunction getPermissionController(options: GetControllersOptions) {\n const { controllerMessenger } = options;\n const permissionSpecifications = getPermissionSpecifications(options);\n const messenger = new Messenger({\n namespace: 'PermissionController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger,\n actions: [\n `ApprovalController:addRequest`,\n `ApprovalController:hasRequest`,\n `ApprovalController:acceptRequest`,\n `ApprovalController:rejectRequest`,\n `SnapController:getPermitted`,\n `SnapController:install`,\n `SubjectMetadataController:getSubjectMetadata`,\n ],\n });\n\n return new PermissionController({\n messenger,\n caveatSpecifications: {\n ...snapsCaveatsSpecifications,\n ...snapsEndowmentCaveatSpecifications,\n },\n permissionSpecifications,\n unrestrictedMethods: UNRESTRICTED_METHODS,\n });\n}\n\n/**\n * Register the Snap. This sets up the Snap's permissions and subject metadata.\n *\n * @param snapId - The ID of the Snap to install.\n * @param manifest - The parsed manifest.\n * @param controllers - The controllers for the Snap.\n * @param controllers.permissionController - The permission controller.\n * @param controllers.subjectMetadataController - The subject metadata controller.\n */\nexport async function registerSnap(\n snapId: SnapId,\n manifest: SnapManifest,\n {\n permissionController,\n subjectMetadataController,\n }: Omit<Controllers, 'interfaceController'>,\n) {\n subjectMetadataController.addSubjectMetadata({\n origin: snapId,\n subjectType: SubjectType.Snap,\n });\n\n const approvedPermissions = processSnapPermissions(\n getSafeJson(manifest.initialPermissions),\n );\n\n permissionController.grantPermissions({\n approvedPermissions,\n subject: { origin: snapId },\n preserveExistingPermissions: false,\n });\n}\n"]}
1
+ {"version":3,"file":"controllers.mjs","sourceRoot":"","sources":["../src/controllers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Messenger } from '@metamask/messenger';\nimport type {\n CaveatSpecificationConstraint,\n PermissionSpecificationConstraint,\n PermissionControllerActions,\n SubjectMetadataControllerActions,\n} from '@metamask/permission-controller';\nimport {\n PermissionController,\n SubjectMetadataController,\n SubjectType,\n} from '@metamask/permission-controller';\nimport { SnapInterfaceController } from '@metamask/snaps-controllers';\nimport type {\n ExecutionServiceActions,\n SnapInterfaceControllerActions,\n SnapInterfaceControllerAllowedActions,\n SnapInterfaceControllerStateChangeEvent,\n} from '@metamask/snaps-controllers';\nimport {\n caveatSpecifications as snapsCaveatsSpecifications,\n endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications,\n processSnapPermissions,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport type { SnapManifest } from '@metamask/snaps-utils';\nimport { getSafeJson } from '@metamask/utils';\n\nimport { getPermissionSpecifications } from './methods';\nimport { UNRESTRICTED_METHODS } from './methods/constants';\nimport type { SimulationOptions } from './options';\nimport type { RestrictedMiddlewareHooks } from './simulation';\nimport type { RunSagaFunction } from './store';\n\nexport type RootControllerAllowedActions =\n | SnapInterfaceControllerActions\n | SnapInterfaceControllerAllowedActions\n | PermissionControllerActions\n | ExecutionServiceActions\n | SubjectMetadataControllerActions;\n\nexport type RootControllerAllowedEvents =\n SnapInterfaceControllerStateChangeEvent;\n\nexport type RootControllerMessenger = Messenger<\n any,\n RootControllerAllowedActions,\n RootControllerAllowedEvents\n>;\n\nexport type GetControllersOptions = {\n controllerMessenger: Messenger<any, any, any>;\n hooks: RestrictedMiddlewareHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\nexport type Controllers = {\n permissionController: PermissionController<\n PermissionSpecificationConstraint,\n CaveatSpecificationConstraint\n >;\n subjectMetadataController: SubjectMetadataController;\n interfaceController: SnapInterfaceController;\n};\n\n/**\n * Get the controllers for the Snap.\n *\n * @param options - The options.\n * @returns The controllers for the Snap.\n */\nexport function getControllers(options: GetControllersOptions): Controllers {\n const { controllerMessenger } = options;\n const subjectMetadataController = new SubjectMetadataController({\n messenger: new Messenger({\n namespace: 'SubjectMetadataController',\n parent: controllerMessenger,\n }),\n subjectCacheLimit: 100,\n });\n\n const interfaceControllerMessenger = new Messenger({\n namespace: 'SnapInterfaceController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger: interfaceControllerMessenger,\n actions: [\n 'PhishingController:testOrigin',\n 'ApprovalController:hasRequest',\n 'ApprovalController:acceptRequest',\n 'AccountsController:getAccountByAddress',\n 'AccountsController:getSelectedMultichainAccount',\n 'AccountsController:listMultichainAccounts',\n 'MultichainAssetsController:getState',\n 'PermissionController:hasPermission',\n ],\n events: ['NotificationServicesController:notificationsListUpdated'],\n });\n\n const interfaceController = new SnapInterfaceController({\n messenger: interfaceControllerMessenger,\n });\n\n const permissionController = getPermissionController(options);\n\n return {\n permissionController,\n subjectMetadataController,\n interfaceController,\n };\n}\n\n/**\n * Get the permission controller for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.options - Miscellaneous options.\n * @returns The permission controller for the Snap.\n */\nfunction getPermissionController(options: GetControllersOptions) {\n const { controllerMessenger } = options;\n const permissionSpecifications = getPermissionSpecifications(options);\n const messenger = new Messenger({\n namespace: 'PermissionController',\n parent: controllerMessenger,\n });\n\n controllerMessenger.delegate({\n messenger,\n actions: [\n `ApprovalController:addRequest`,\n `ApprovalController:hasRequest`,\n `ApprovalController:acceptRequest`,\n `ApprovalController:rejectRequest`,\n `SnapController:getPermitted`,\n `SnapController:install`,\n `SubjectMetadataController:getSubjectMetadata`,\n ],\n });\n\n return new PermissionController({\n messenger,\n caveatSpecifications: {\n ...snapsCaveatsSpecifications,\n ...snapsEndowmentCaveatSpecifications,\n },\n permissionSpecifications,\n unrestrictedMethods: UNRESTRICTED_METHODS,\n });\n}\n\n/**\n * Register the Snap. This sets up the Snap's permissions and subject metadata.\n *\n * @param snapId - The ID of the Snap to install.\n * @param manifest - The parsed manifest.\n * @param controllers - The controllers for the Snap.\n * @param controllers.permissionController - The permission controller.\n * @param controllers.subjectMetadataController - The subject metadata controller.\n */\nexport async function registerSnap(\n snapId: SnapId,\n manifest: SnapManifest,\n {\n permissionController,\n subjectMetadataController,\n }: Omit<Controllers, 'interfaceController'>,\n) {\n subjectMetadataController.addSubjectMetadata({\n origin: snapId,\n subjectType: SubjectType.Snap,\n });\n\n const approvedPermissions = processSnapPermissions(\n getSafeJson(manifest.initialPermissions),\n );\n\n permissionController.grantPermissions({\n approvedPermissions,\n subject: { origin: snapId },\n preserveExistingPermissions: false,\n });\n}\n"]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSetCurrentChainImplementation = void 0;
4
+ const effects_1 = require("redux-saga/effects");
5
+ const store_1 = require("../../store/index.cjs");
6
+ /**
7
+ * Set the current chain ID in state.
8
+ *
9
+ * @param chainId - The chain ID.
10
+ * @yields Puts the chain ID in the store.
11
+ * @returns `null`.
12
+ */
13
+ function* setCurrentChainImplementation(chainId) {
14
+ yield (0, effects_1.put)((0, store_1.setChain)(chainId));
15
+ return null;
16
+ }
17
+ /**
18
+ * Get a method that can be used to set the current chain.
19
+ *
20
+ * @param runSaga - A function to run a saga outside the usual Redux flow.
21
+ * @returns A method that can be used to set the current chain.
22
+ */
23
+ function getSetCurrentChainImplementation(runSaga) {
24
+ return (...args) => {
25
+ return runSaga(setCurrentChainImplementation, ...args).result();
26
+ };
27
+ }
28
+ exports.getSetCurrentChainImplementation = getSetCurrentChainImplementation;
29
+ //# sourceMappingURL=chain.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.cjs","sourceRoot":"","sources":["../../../src/methods/hooks/chain.ts"],"names":[],"mappings":";;;AAEA,gDAAyC;AAEzC,iDAAuC;AAGvC;;;;;;GAMG;AACH,QAAQ,CAAC,CAAC,6BAA6B,CAAC,OAAY;IAClD,MAAM,IAAA,aAAG,EAAC,IAAA,gBAAQ,EAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gCAAgC,CAAC,OAAwB;IACvE,OAAO,CAAC,GAAG,IAAsD,EAAE,EAAE;QACnE,OAAO,OAAO,CAAC,6BAA6B,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC;AAJD,4EAIC","sourcesContent":["import type { Hex } from '@metamask/utils';\nimport type { SagaIterator } from 'redux-saga';\nimport { put } from 'redux-saga/effects';\n\nimport { setChain } from '../../store';\nimport type { RunSagaFunction } from '../../store';\n\n/**\n * Set the current chain ID in state.\n *\n * @param chainId - The chain ID.\n * @yields Puts the chain ID in the store.\n * @returns `null`.\n */\nfunction* setCurrentChainImplementation(chainId: Hex): SagaIterator {\n yield put(setChain(chainId));\n return null;\n}\n\n/**\n * Get a method that can be used to set the current chain.\n *\n * @param runSaga - A function to run a saga outside the usual Redux flow.\n * @returns A method that can be used to set the current chain.\n */\nexport function getSetCurrentChainImplementation(runSaga: RunSagaFunction) {\n return (...args: Parameters<typeof setCurrentChainImplementation>) => {\n return runSaga(setCurrentChainImplementation, ...args).result();\n };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { RunSagaFunction } from "../../store/index.cjs";
2
+ /**
3
+ * Get a method that can be used to set the current chain.
4
+ *
5
+ * @param runSaga - A function to run a saga outside the usual Redux flow.
6
+ * @returns A method that can be used to set the current chain.
7
+ */
8
+ export declare function getSetCurrentChainImplementation(runSaga: RunSagaFunction): (chainId: `0x${string}`) => any;
9
+ //# sourceMappingURL=chain.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.cts","sourceRoot":"","sources":["../../../src/methods/hooks/chain.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,8BAAoB;AAcnD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,eAAe,mCAIxE"}
@@ -0,0 +1,9 @@
1
+ import type { RunSagaFunction } from "../../store/index.mjs";
2
+ /**
3
+ * Get a method that can be used to set the current chain.
4
+ *
5
+ * @param runSaga - A function to run a saga outside the usual Redux flow.
6
+ * @returns A method that can be used to set the current chain.
7
+ */
8
+ export declare function getSetCurrentChainImplementation(runSaga: RunSagaFunction): (chainId: `0x${string}`) => any;
9
+ //# sourceMappingURL=chain.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.mts","sourceRoot":"","sources":["../../../src/methods/hooks/chain.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,8BAAoB;AAcnD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,eAAe,mCAIxE"}
@@ -0,0 +1,25 @@
1
+ import { put } from "redux-saga/effects";
2
+ import { setChain } from "../../store/index.mjs";
3
+ /**
4
+ * Set the current chain ID in state.
5
+ *
6
+ * @param chainId - The chain ID.
7
+ * @yields Puts the chain ID in the store.
8
+ * @returns `null`.
9
+ */
10
+ function* setCurrentChainImplementation(chainId) {
11
+ yield put(setChain(chainId));
12
+ return null;
13
+ }
14
+ /**
15
+ * Get a method that can be used to set the current chain.
16
+ *
17
+ * @param runSaga - A function to run a saga outside the usual Redux flow.
18
+ * @returns A method that can be used to set the current chain.
19
+ */
20
+ export function getSetCurrentChainImplementation(runSaga) {
21
+ return (...args) => {
22
+ return runSaga(setCurrentChainImplementation, ...args).result();
23
+ };
24
+ }
25
+ //# sourceMappingURL=chain.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.mjs","sourceRoot":"","sources":["../../../src/methods/hooks/chain.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,2BAA2B;AAEzC,OAAO,EAAE,QAAQ,EAAE,8BAAoB;AAGvC;;;;;;GAMG;AACH,QAAQ,CAAC,CAAC,6BAA6B,CAAC,OAAY;IAClD,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAwB;IACvE,OAAO,CAAC,GAAG,IAAsD,EAAE,EAAE;QACnE,OAAO,OAAO,CAAC,6BAA6B,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { Hex } from '@metamask/utils';\nimport type { SagaIterator } from 'redux-saga';\nimport { put } from 'redux-saga/effects';\n\nimport { setChain } from '../../store';\nimport type { RunSagaFunction } from '../../store';\n\n/**\n * Set the current chain ID in state.\n *\n * @param chainId - The chain ID.\n * @yields Puts the chain ID in the store.\n * @returns `null`.\n */\nfunction* setCurrentChainImplementation(chainId: Hex): SagaIterator {\n yield put(setChain(chainId));\n return null;\n}\n\n/**\n * Get a method that can be used to set the current chain.\n *\n * @param runSaga - A function to run a saga outside the usual Redux flow.\n * @returns A method that can be used to set the current chain.\n */\nexport function getSetCurrentChainImplementation(runSaga: RunSagaFunction) {\n return (...args: Parameters<typeof setCurrentChainImplementation>) => {\n return runSaga(setCurrentChainImplementation, ...args).result();\n };\n}\n"]}
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./chain.cjs"), exports);
17
18
  __exportStar(require("./end-trace.cjs"), exports);
18
19
  __exportStar(require("./get-entropy-sources.cjs"), exports);
19
20
  __exportStar(require("./get-mnemonic.cjs"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/methods/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,4DAAsC;AACtC,qDAA+B;AAC/B,wDAAkC;AAClC,iDAA2B;AAC3B,kDAA4B;AAC5B,sDAAgC;AAChC,wDAA4B;AAC5B,8DAAwC;AACxC,oDAA8B;AAC9B,8CAAwB;AACxB,oDAA8B;AAC9B,oDAA8B","sourcesContent":["export * from './end-trace';\nexport * from './get-entropy-sources';\nexport * from './get-mnemonic';\nexport * from './get-preferences';\nexport * from './get-snap';\nexport * from './interface';\nexport * from './notifications';\nexport * from './permitted';\nexport * from './request-user-approval';\nexport * from './start-trace';\nexport * from './state';\nexport * from './track-error';\nexport * from './track-event';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/methods/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAAwB;AACxB,kDAA4B;AAC5B,4DAAsC;AACtC,qDAA+B;AAC/B,wDAAkC;AAClC,iDAA2B;AAC3B,kDAA4B;AAC5B,sDAAgC;AAChC,wDAA4B;AAC5B,8DAAwC;AACxC,oDAA8B;AAC9B,8CAAwB;AACxB,oDAA8B;AAC9B,oDAA8B","sourcesContent":["export * from './chain';\nexport * from './end-trace';\nexport * from './get-entropy-sources';\nexport * from './get-mnemonic';\nexport * from './get-preferences';\nexport * from './get-snap';\nexport * from './interface';\nexport * from './notifications';\nexport * from './permitted';\nexport * from './request-user-approval';\nexport * from './start-trace';\nexport * from './state';\nexport * from './track-error';\nexport * from './track-event';\n"]}
@@ -1,3 +1,4 @@
1
+ export * from "./chain.cjs";
1
2
  export * from "./end-trace.cjs";
2
3
  export * from "./get-entropy-sources.cjs";
3
4
  export * from "./get-mnemonic.cjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/methods/hooks/index.ts"],"names":[],"mappings":"AAAA,gCAA4B;AAC5B,0CAAsC;AACtC,mCAA+B;AAC/B,sCAAkC;AAClC,+BAA2B;AAC3B,gCAA4B;AAC5B,oCAAgC;AAChC,sCAA4B;AAC5B,4CAAwC;AACxC,kCAA8B;AAC9B,4BAAwB;AACxB,kCAA8B;AAC9B,kCAA8B"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/methods/hooks/index.ts"],"names":[],"mappings":"AAAA,4BAAwB;AACxB,gCAA4B;AAC5B,0CAAsC;AACtC,mCAA+B;AAC/B,sCAAkC;AAClC,+BAA2B;AAC3B,gCAA4B;AAC5B,oCAAgC;AAChC,sCAA4B;AAC5B,4CAAwC;AACxC,kCAA8B;AAC9B,4BAAwB;AACxB,kCAA8B;AAC9B,kCAA8B"}
@@ -1,3 +1,4 @@
1
+ export * from "./chain.mjs";
1
2
  export * from "./end-trace.mjs";
2
3
  export * from "./get-entropy-sources.mjs";
3
4
  export * from "./get-mnemonic.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/methods/hooks/index.ts"],"names":[],"mappings":"AAAA,gCAA4B;AAC5B,0CAAsC;AACtC,mCAA+B;AAC/B,sCAAkC;AAClC,+BAA2B;AAC3B,gCAA4B;AAC5B,oCAAgC;AAChC,sCAA4B;AAC5B,4CAAwC;AACxC,kCAA8B;AAC9B,4BAAwB;AACxB,kCAA8B;AAC9B,kCAA8B"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/methods/hooks/index.ts"],"names":[],"mappings":"AAAA,4BAAwB;AACxB,gCAA4B;AAC5B,0CAAsC;AACtC,mCAA+B;AAC/B,sCAAkC;AAClC,+BAA2B;AAC3B,gCAA4B;AAC5B,oCAAgC;AAChC,sCAA4B;AAC5B,4CAAwC;AACxC,kCAA8B;AAC9B,4BAAwB;AACxB,kCAA8B;AAC9B,kCAA8B"}
@@ -1,3 +1,4 @@
1
+ export * from "./chain.mjs";
1
2
  export * from "./end-trace.mjs";
2
3
  export * from "./get-entropy-sources.mjs";
3
4
  export * from "./get-mnemonic.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/methods/hooks/index.ts"],"names":[],"mappings":"AAAA,gCAA4B;AAC5B,0CAAsC;AACtC,mCAA+B;AAC/B,sCAAkC;AAClC,+BAA2B;AAC3B,gCAA4B;AAC5B,oCAAgC;AAChC,sCAA4B;AAC5B,4CAAwC;AACxC,kCAA8B;AAC9B,4BAAwB;AACxB,kCAA8B;AAC9B,kCAA8B","sourcesContent":["export * from './end-trace';\nexport * from './get-entropy-sources';\nexport * from './get-mnemonic';\nexport * from './get-preferences';\nexport * from './get-snap';\nexport * from './interface';\nexport * from './notifications';\nexport * from './permitted';\nexport * from './request-user-approval';\nexport * from './start-trace';\nexport * from './state';\nexport * from './track-error';\nexport * from './track-event';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/methods/hooks/index.ts"],"names":[],"mappings":"AAAA,4BAAwB;AACxB,gCAA4B;AAC5B,0CAAsC;AACtC,mCAA+B;AAC/B,sCAAkC;AAClC,+BAA2B;AAC3B,gCAA4B;AAC5B,oCAAgC;AAChC,sCAA4B;AAC5B,4CAAwC;AACxC,kCAA8B;AAC9B,4BAAwB;AACxB,kCAA8B;AAC9B,kCAA8B","sourcesContent":["export * from './chain';\nexport * from './end-trace';\nexport * from './get-entropy-sources';\nexport * from './get-mnemonic';\nexport * from './get-preferences';\nexport * from './get-snap';\nexport * from './interface';\nexport * from './notifications';\nexport * from './permitted';\nexport * from './request-user-approval';\nexport * from './start-trace';\nexport * from './state';\nexport * from './track-error';\nexport * from './track-event';\n"]}
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createJsonRpcEngine = void 0;
4
- const eth_json_rpc_middleware_1 = require("@metamask/eth-json-rpc-middleware");
5
4
  const json_rpc_engine_1 = require("@metamask/json-rpc-engine");
6
5
  const snaps_rpc_methods_1 = require("@metamask/snaps-rpc-methods");
7
6
  const internal_methods_1 = require("./internal-methods/index.cjs");
8
7
  const mock_1 = require("./mock.cjs");
9
- const constants_1 = require("../constants.cjs");
8
+ const provider_1 = require("./provider.cjs");
10
9
  /**
11
10
  * Create a JSON-RPC engine for use in a simulated environment. This engine
12
11
  * should be used to handle all JSON-RPC requests. It is set up to handle
@@ -18,10 +17,9 @@ const constants_1 = require("../constants.cjs");
18
17
  * @param options.restrictedHooks - Any hooks used by the middleware handlers.
19
18
  * @param options.permittedHooks - Any hooks used by the middleware handlers.
20
19
  * @param options.permissionMiddleware - The permission middleware to use.
21
- * @param options.endpoint - The JSON-RPC endpoint to use for Ethereum requests.
22
20
  * @returns A JSON-RPC engine.
23
21
  */
24
- function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, endpoint = constants_1.DEFAULT_JSON_RPC_ENDPOINT, }) {
22
+ function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, }) {
25
23
  const engine = new json_rpc_engine_1.JsonRpcEngine();
26
24
  engine.push((0, mock_1.createMockMiddleware)(store));
27
25
  // The hooks here do not match the hooks used by the clients, so this
@@ -29,11 +27,7 @@ function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissio
29
27
  engine.push((0, internal_methods_1.createInternalMethodsMiddleware)(restrictedHooks));
30
28
  engine.push((0, snaps_rpc_methods_1.createSnapsMethodMiddleware)(true, permittedHooks));
31
29
  engine.push(permissionMiddleware);
32
- engine.push((0, eth_json_rpc_middleware_1.createFetchMiddleware)({
33
- btoa: globalThis.btoa,
34
- fetch: globalThis.fetch,
35
- rpcUrl: endpoint,
36
- }));
30
+ engine.push((0, provider_1.createProviderMiddleware)(store));
37
31
  return engine;
38
32
  }
39
33
  exports.createJsonRpcEngine = createJsonRpcEngine;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.cjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":";;;AAAA,+EAA0E;AAE1E,+DAA0D;AAE1D,mEAA0E;AAG1E,mEAAqE;AACrE,qCAA8C;AAC9C,gDAAyD;AAezD;;;;;;;;;;;;;GAaG;AACH,SAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,QAAQ,GAAG,qCAAyB,GACT;IAC3B,MAAM,MAAM,GAAG,IAAI,+BAAa,EAAE,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,CAAC,IAAI,CAAC,IAAA,kDAA+B,EAAC,eAAe,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,CAAC,IAAA,+CAA2B,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/D,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CACT,IAAA,+CAAqB,EAAC;QACpB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,QAAQ;KACjB,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAzBD,kDAyBC","sourcesContent":["import { createFetchMiddleware } from '@metamask/eth-json-rpc-middleware';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { RestrictedMethodParameters } from '@metamask/permission-controller';\nimport { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods';\nimport type { Json } from '@metamask/utils';\n\nimport { createInternalMethodsMiddleware } from './internal-methods';\nimport { createMockMiddleware } from './mock';\nimport { DEFAULT_JSON_RPC_ENDPOINT } from '../constants';\nimport type {\n PermittedMiddlewareHooks,\n RestrictedMiddlewareHooks,\n} from '../simulation';\nimport type { Store } from '../store';\n\nexport type CreateJsonRpcEngineOptions = {\n store: Store;\n restrictedHooks: RestrictedMiddlewareHooks;\n permittedHooks: PermittedMiddlewareHooks;\n permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;\n endpoint?: string;\n};\n\n/**\n * Create a JSON-RPC engine for use in a simulated environment. This engine\n * should be used to handle all JSON-RPC requests. It is set up to handle\n * requests that would normally be handled internally by the MetaMask client, as\n * well as Snap-specific requests.\n *\n * @param options - The options to use when creating the engine.\n * @param options.store - The Redux store to use.\n * @param options.restrictedHooks - Any hooks used by the middleware handlers.\n * @param options.permittedHooks - Any hooks used by the middleware handlers.\n * @param options.permissionMiddleware - The permission middleware to use.\n * @param options.endpoint - The JSON-RPC endpoint to use for Ethereum requests.\n * @returns A JSON-RPC engine.\n */\nexport function createJsonRpcEngine({\n store,\n restrictedHooks,\n permittedHooks,\n permissionMiddleware,\n endpoint = DEFAULT_JSON_RPC_ENDPOINT,\n}: CreateJsonRpcEngineOptions) {\n const engine = new JsonRpcEngine();\n engine.push(createMockMiddleware(store));\n\n // The hooks here do not match the hooks used by the clients, so this\n // middleware should not be used outside of the simulation environment.\n engine.push(createInternalMethodsMiddleware(restrictedHooks));\n engine.push(createSnapsMethodMiddleware(true, permittedHooks));\n\n engine.push(permissionMiddleware);\n engine.push(\n createFetchMiddleware({\n btoa: globalThis.btoa,\n fetch: globalThis.fetch,\n rpcUrl: endpoint,\n }),\n );\n\n return engine;\n}\n"]}
1
+ {"version":3,"file":"engine.cjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":";;;AACA,+DAA0D;AAE1D,mEAA0E;AAG1E,mEAAqE;AACrE,qCAA8C;AAC9C,6CAAsD;AAetD;;;;;;;;;;;;GAYG;AACH,SAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,GACO;IAC3B,MAAM,MAAM,GAAG,IAAI,+BAAa,EAAE,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,CAAC,IAAI,CAAC,IAAA,kDAA+B,EAAC,eAAe,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,CAAC,IAAA,+CAA2B,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/D,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,IAAA,mCAAwB,EAAC,KAAK,CAAC,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAlBD,kDAkBC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { RestrictedMethodParameters } from '@metamask/permission-controller';\nimport { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods';\nimport type { Json } from '@metamask/utils';\n\nimport { createInternalMethodsMiddleware } from './internal-methods';\nimport { createMockMiddleware } from './mock';\nimport { createProviderMiddleware } from './provider';\nimport type {\n PermittedMiddlewareHooks,\n RestrictedMiddlewareHooks,\n} from '../simulation';\nimport type { Store } from '../store';\n\nexport type CreateJsonRpcEngineOptions = {\n store: Store;\n restrictedHooks: RestrictedMiddlewareHooks;\n permittedHooks: PermittedMiddlewareHooks;\n permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;\n endpoint?: string;\n};\n\n/**\n * Create a JSON-RPC engine for use in a simulated environment. This engine\n * should be used to handle all JSON-RPC requests. It is set up to handle\n * requests that would normally be handled internally by the MetaMask client, as\n * well as Snap-specific requests.\n *\n * @param options - The options to use when creating the engine.\n * @param options.store - The Redux store to use.\n * @param options.restrictedHooks - Any hooks used by the middleware handlers.\n * @param options.permittedHooks - Any hooks used by the middleware handlers.\n * @param options.permissionMiddleware - The permission middleware to use.\n * @returns A JSON-RPC engine.\n */\nexport function createJsonRpcEngine({\n store,\n restrictedHooks,\n permittedHooks,\n permissionMiddleware,\n}: CreateJsonRpcEngineOptions) {\n const engine = new JsonRpcEngine();\n engine.push(createMockMiddleware(store));\n\n // The hooks here do not match the hooks used by the clients, so this\n // middleware should not be used outside of the simulation environment.\n engine.push(createInternalMethodsMiddleware(restrictedHooks));\n engine.push(createSnapsMethodMiddleware(true, permittedHooks));\n\n engine.push(permissionMiddleware);\n engine.push(createProviderMiddleware(store));\n\n return engine;\n}\n"]}
@@ -22,8 +22,7 @@ export type CreateJsonRpcEngineOptions = {
22
22
  * @param options.restrictedHooks - Any hooks used by the middleware handlers.
23
23
  * @param options.permittedHooks - Any hooks used by the middleware handlers.
24
24
  * @param options.permissionMiddleware - The permission middleware to use.
25
- * @param options.endpoint - The JSON-RPC endpoint to use for Ethereum requests.
26
25
  * @returns A JSON-RPC engine.
27
26
  */
28
- export declare function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, endpoint, }: CreateJsonRpcEngineOptions): JsonRpcEngine;
27
+ export declare function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, }: CreateJsonRpcEngineOptions): JsonRpcEngine;
29
28
  //# sourceMappingURL=engine.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.cts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,wCAAwC;AAElF,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAK5C,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,0BAAsB;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAiB;AAEtC,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,yBAAyB,CAAC;IAC3C,cAAc,EAAE,wBAAwB,CAAC;IACzC,oBAAoB,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,QAAoC,GACrC,EAAE,0BAA0B,iBAmB5B"}
1
+ {"version":3,"file":"engine.d.cts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,wCAAwC;AAElF,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAK5C,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,0BAAsB;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAiB;AAEtC,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,yBAAyB,CAAC;IAC3C,cAAc,EAAE,wBAAwB,CAAC;IACzC,oBAAoB,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,GACrB,EAAE,0BAA0B,iBAa5B"}
@@ -22,8 +22,7 @@ export type CreateJsonRpcEngineOptions = {
22
22
  * @param options.restrictedHooks - Any hooks used by the middleware handlers.
23
23
  * @param options.permittedHooks - Any hooks used by the middleware handlers.
24
24
  * @param options.permissionMiddleware - The permission middleware to use.
25
- * @param options.endpoint - The JSON-RPC endpoint to use for Ethereum requests.
26
25
  * @returns A JSON-RPC engine.
27
26
  */
28
- export declare function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, endpoint, }: CreateJsonRpcEngineOptions): JsonRpcEngine;
27
+ export declare function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, }: CreateJsonRpcEngineOptions): JsonRpcEngine;
29
28
  //# sourceMappingURL=engine.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.mts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,wCAAwC;AAElF,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAK5C,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,0BAAsB;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAiB;AAEtC,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,yBAAyB,CAAC;IAC3C,cAAc,EAAE,wBAAwB,CAAC;IACzC,oBAAoB,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,QAAoC,GACrC,EAAE,0BAA0B,iBAmB5B"}
1
+ {"version":3,"file":"engine.d.mts","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,wCAAwC;AAElF,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAK5C,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,0BAAsB;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAiB;AAEtC,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,yBAAyB,CAAC;IAC3C,cAAc,EAAE,wBAAwB,CAAC;IACzC,oBAAoB,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,GACrB,EAAE,0BAA0B,iBAa5B"}
@@ -1,9 +1,8 @@
1
- import { createFetchMiddleware } from "@metamask/eth-json-rpc-middleware";
2
1
  import { JsonRpcEngine } from "@metamask/json-rpc-engine";
3
2
  import { createSnapsMethodMiddleware } from "@metamask/snaps-rpc-methods";
4
3
  import { createInternalMethodsMiddleware } from "./internal-methods/index.mjs";
5
4
  import { createMockMiddleware } from "./mock.mjs";
6
- import { DEFAULT_JSON_RPC_ENDPOINT } from "../constants.mjs";
5
+ import { createProviderMiddleware } from "./provider.mjs";
7
6
  /**
8
7
  * Create a JSON-RPC engine for use in a simulated environment. This engine
9
8
  * should be used to handle all JSON-RPC requests. It is set up to handle
@@ -15,10 +14,9 @@ import { DEFAULT_JSON_RPC_ENDPOINT } from "../constants.mjs";
15
14
  * @param options.restrictedHooks - Any hooks used by the middleware handlers.
16
15
  * @param options.permittedHooks - Any hooks used by the middleware handlers.
17
16
  * @param options.permissionMiddleware - The permission middleware to use.
18
- * @param options.endpoint - The JSON-RPC endpoint to use for Ethereum requests.
19
17
  * @returns A JSON-RPC engine.
20
18
  */
21
- export function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, endpoint = DEFAULT_JSON_RPC_ENDPOINT, }) {
19
+ export function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, permissionMiddleware, }) {
22
20
  const engine = new JsonRpcEngine();
23
21
  engine.push(createMockMiddleware(store));
24
22
  // The hooks here do not match the hooks used by the clients, so this
@@ -26,11 +24,7 @@ export function createJsonRpcEngine({ store, restrictedHooks, permittedHooks, pe
26
24
  engine.push(createInternalMethodsMiddleware(restrictedHooks));
27
25
  engine.push(createSnapsMethodMiddleware(true, permittedHooks));
28
26
  engine.push(permissionMiddleware);
29
- engine.push(createFetchMiddleware({
30
- btoa: globalThis.btoa,
31
- fetch: globalThis.fetch,
32
- rpcUrl: endpoint,
33
- }));
27
+ engine.push(createProviderMiddleware(store));
34
28
  return engine;
35
29
  }
36
30
  //# sourceMappingURL=engine.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.mjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0CAA0C;AAE1E,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAE1D,OAAO,EAAE,2BAA2B,EAAE,oCAAoC;AAG1E,OAAO,EAAE,+BAA+B,EAAE,qCAA2B;AACrE,OAAO,EAAE,oBAAoB,EAAE,mBAAe;AAC9C,OAAO,EAAE,yBAAyB,EAAE,yBAAqB;AAezD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,QAAQ,GAAG,yBAAyB,GACT;IAC3B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/D,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CACT,qBAAqB,CAAC;QACpB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,QAAQ;KACjB,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { createFetchMiddleware } from '@metamask/eth-json-rpc-middleware';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { RestrictedMethodParameters } from '@metamask/permission-controller';\nimport { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods';\nimport type { Json } from '@metamask/utils';\n\nimport { createInternalMethodsMiddleware } from './internal-methods';\nimport { createMockMiddleware } from './mock';\nimport { DEFAULT_JSON_RPC_ENDPOINT } from '../constants';\nimport type {\n PermittedMiddlewareHooks,\n RestrictedMiddlewareHooks,\n} from '../simulation';\nimport type { Store } from '../store';\n\nexport type CreateJsonRpcEngineOptions = {\n store: Store;\n restrictedHooks: RestrictedMiddlewareHooks;\n permittedHooks: PermittedMiddlewareHooks;\n permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;\n endpoint?: string;\n};\n\n/**\n * Create a JSON-RPC engine for use in a simulated environment. This engine\n * should be used to handle all JSON-RPC requests. It is set up to handle\n * requests that would normally be handled internally by the MetaMask client, as\n * well as Snap-specific requests.\n *\n * @param options - The options to use when creating the engine.\n * @param options.store - The Redux store to use.\n * @param options.restrictedHooks - Any hooks used by the middleware handlers.\n * @param options.permittedHooks - Any hooks used by the middleware handlers.\n * @param options.permissionMiddleware - The permission middleware to use.\n * @param options.endpoint - The JSON-RPC endpoint to use for Ethereum requests.\n * @returns A JSON-RPC engine.\n */\nexport function createJsonRpcEngine({\n store,\n restrictedHooks,\n permittedHooks,\n permissionMiddleware,\n endpoint = DEFAULT_JSON_RPC_ENDPOINT,\n}: CreateJsonRpcEngineOptions) {\n const engine = new JsonRpcEngine();\n engine.push(createMockMiddleware(store));\n\n // The hooks here do not match the hooks used by the clients, so this\n // middleware should not be used outside of the simulation environment.\n engine.push(createInternalMethodsMiddleware(restrictedHooks));\n engine.push(createSnapsMethodMiddleware(true, permittedHooks));\n\n engine.push(permissionMiddleware);\n engine.push(\n createFetchMiddleware({\n btoa: globalThis.btoa,\n fetch: globalThis.fetch,\n rpcUrl: endpoint,\n }),\n );\n\n return engine;\n}\n"]}
1
+ {"version":3,"file":"engine.mjs","sourceRoot":"","sources":["../../src/middleware/engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,kCAAkC;AAE1D,OAAO,EAAE,2BAA2B,EAAE,oCAAoC;AAG1E,OAAO,EAAE,+BAA+B,EAAE,qCAA2B;AACrE,OAAO,EAAE,oBAAoB,EAAE,mBAAe;AAC9C,OAAO,EAAE,wBAAwB,EAAE,uBAAmB;AAetD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,GACO;IAC3B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/D,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { RestrictedMethodParameters } from '@metamask/permission-controller';\nimport { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods';\nimport type { Json } from '@metamask/utils';\n\nimport { createInternalMethodsMiddleware } from './internal-methods';\nimport { createMockMiddleware } from './mock';\nimport { createProviderMiddleware } from './provider';\nimport type {\n PermittedMiddlewareHooks,\n RestrictedMiddlewareHooks,\n} from '../simulation';\nimport type { Store } from '../store';\n\nexport type CreateJsonRpcEngineOptions = {\n store: Store;\n restrictedHooks: RestrictedMiddlewareHooks;\n permittedHooks: PermittedMiddlewareHooks;\n permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;\n endpoint?: string;\n};\n\n/**\n * Create a JSON-RPC engine for use in a simulated environment. This engine\n * should be used to handle all JSON-RPC requests. It is set up to handle\n * requests that would normally be handled internally by the MetaMask client, as\n * well as Snap-specific requests.\n *\n * @param options - The options to use when creating the engine.\n * @param options.store - The Redux store to use.\n * @param options.restrictedHooks - Any hooks used by the middleware handlers.\n * @param options.permittedHooks - Any hooks used by the middleware handlers.\n * @param options.permissionMiddleware - The permission middleware to use.\n * @returns A JSON-RPC engine.\n */\nexport function createJsonRpcEngine({\n store,\n restrictedHooks,\n permittedHooks,\n permissionMiddleware,\n}: CreateJsonRpcEngineOptions) {\n const engine = new JsonRpcEngine();\n engine.push(createMockMiddleware(store));\n\n // The hooks here do not match the hooks used by the clients, so this\n // middleware should not be used outside of the simulation environment.\n engine.push(createInternalMethodsMiddleware(restrictedHooks));\n engine.push(createSnapsMethodMiddleware(true, permittedHooks));\n\n engine.push(permissionMiddleware);\n engine.push(createProviderMiddleware(store));\n\n return engine;\n}\n"]}
@@ -11,12 +11,11 @@ exports.getChainIdHandler = void 0;
11
11
  * result.
12
12
  * @param _next - The `json-rpc-engine` middleware next handler.
13
13
  * @param end - The `json-rpc-engine` middleware end handler.
14
+ * @param hooks - The method hooks.
14
15
  * @returns The JSON-RPC response.
15
16
  */
16
- async function getChainIdHandler(_request, response, _next, end) {
17
- // For now this will return a mocked result, this should probably match
18
- // whatever network the simulation is using.
19
- response.result = '0x01';
17
+ async function getChainIdHandler(_request, response, _next, end, hooks) {
18
+ response.result = hooks.getSimulationState().chain.chainId;
20
19
  return end();
21
20
  }
22
21
  exports.getChainIdHandler = getChainIdHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"chain-id.cjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":";;;AAMA;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,iBAAiB,CACrC,QAAwB,EACxB,QAAgC,EAChC,KAAgC,EAChC,GAA6B;IAE7B,uEAAuE;IACvE,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;IAEzB,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAXD,8CAWC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils';\n\n/**\n * A mock handler for eth_chainId that always returns a specific\n * hardcoded result.\n *\n * @param _request - Incoming JSON-RPC request. Ignored for this specific\n * handler.\n * @param response - The outgoing JSON-RPC response, modified to return the\n * result.\n * @param _next - The `json-rpc-engine` middleware next handler.\n * @param end - The `json-rpc-engine` middleware end handler.\n * @returns The JSON-RPC response.\n */\nexport async function getChainIdHandler(\n _request: JsonRpcRequest,\n response: PendingJsonRpcResponse,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n) {\n // For now this will return a mocked result, this should probably match\n // whatever network the simulation is using.\n response.result = '0x01';\n\n return end();\n}\n"]}
1
+ {"version":3,"file":"chain-id.cjs","sourceRoot":"","sources":["../../../src/middleware/internal-methods/chain-id.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,iBAAiB,CACrC,QAAwB,EACxB,QAAgC,EAChC,KAAgC,EAChC,GAA6B,EAC7B,KAAiE;IAEjE,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAE3D,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAVD,8CAUC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { InternalMethodsMiddlewareHooks } from './middleware';\n\n/**\n * A mock handler for eth_chainId that always returns a specific\n * hardcoded result.\n *\n * @param _request - Incoming JSON-RPC request. Ignored for this specific\n * handler.\n * @param response - The outgoing JSON-RPC response, modified to return the\n * result.\n * @param _next - The `json-rpc-engine` middleware next handler.\n * @param end - The `json-rpc-engine` middleware end handler.\n * @param hooks - The method hooks.\n * @returns The JSON-RPC response.\n */\nexport async function getChainIdHandler(\n _request: JsonRpcRequest,\n response: PendingJsonRpcResponse,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n hooks: Pick<InternalMethodsMiddlewareHooks, 'getSimulationState'>,\n) {\n response.result = hooks.getSimulationState().chain.chainId;\n\n return end();\n}\n"]}