@ledgerhq/coin-stacks 0.1.1-next.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 (296) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +31 -0
  4. package/CHANGELOG.md +11 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +8 -0
  7. package/lib/bridge/broadcast.d.ts +4 -0
  8. package/lib/bridge/broadcast.d.ts.map +1 -0
  9. package/lib/bridge/broadcast.js +28 -0
  10. package/lib/bridge/broadcast.js.map +1 -0
  11. package/lib/bridge/buildOptimisticOperation.d.ts +4 -0
  12. package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -0
  13. package/lib/bridge/buildOptimisticOperation.js +34 -0
  14. package/lib/bridge/buildOptimisticOperation.js.map +1 -0
  15. package/lib/bridge/createTransaction.d.ts +4 -0
  16. package/lib/bridge/createTransaction.d.ts.map +1 -0
  17. package/lib/bridge/createTransaction.js +18 -0
  18. package/lib/bridge/createTransaction.js.map +1 -0
  19. package/lib/bridge/deviceTransactionConfig.d.ts +22 -0
  20. package/lib/bridge/deviceTransactionConfig.d.ts.map +1 -0
  21. package/lib/bridge/deviceTransactionConfig.js +34 -0
  22. package/lib/bridge/deviceTransactionConfig.js.map +1 -0
  23. package/lib/bridge/estimateMaxSpendable.d.ts +4 -0
  24. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -0
  25. package/lib/bridge/estimateMaxSpendable.js +46 -0
  26. package/lib/bridge/estimateMaxSpendable.js.map +1 -0
  27. package/lib/bridge/getTransactionStatus.d.ts +4 -0
  28. package/lib/bridge/getTransactionStatus.d.ts.map +1 -0
  29. package/lib/bridge/getTransactionStatus.js +60 -0
  30. package/lib/bridge/getTransactionStatus.js.map +1 -0
  31. package/lib/bridge/index.d.ts +11 -0
  32. package/lib/bridge/index.d.ts.map +1 -0
  33. package/lib/bridge/index.js +56 -0
  34. package/lib/bridge/index.js.map +1 -0
  35. package/lib/bridge/prepareTransaction.d.ts +4 -0
  36. package/lib/bridge/prepareTransaction.d.ts.map +1 -0
  37. package/lib/bridge/prepareTransaction.js +56 -0
  38. package/lib/bridge/prepareTransaction.js.map +1 -0
  39. package/lib/bridge/signOperation.d.ts +5 -0
  40. package/lib/bridge/signOperation.d.ts.map +1 -0
  41. package/lib/bridge/signOperation.js +85 -0
  42. package/lib/bridge/signOperation.js.map +1 -0
  43. package/lib/bridge/synchronization.d.ts +5 -0
  44. package/lib/bridge/synchronization.d.ts.map +1 -0
  45. package/lib/bridge/synchronization.js +62 -0
  46. package/lib/bridge/synchronization.js.map +1 -0
  47. package/lib/bridge/transaction.d.ts +14 -0
  48. package/lib/bridge/transaction.d.ts.map +1 -0
  49. package/lib/bridge/transaction.js +46 -0
  50. package/lib/bridge/transaction.js.map +1 -0
  51. package/lib/bridge/utils/addresses.d.ts +13 -0
  52. package/lib/bridge/utils/addresses.d.ts.map +1 -0
  53. package/lib/bridge/utils/addresses.js +15 -0
  54. package/lib/bridge/utils/addresses.js.map +1 -0
  55. package/lib/bridge/utils/misc.d.ts +15 -0
  56. package/lib/bridge/utils/misc.d.ts.map +1 -0
  57. package/lib/bridge/utils/misc.js +186 -0
  58. package/lib/bridge/utils/misc.js.map +1 -0
  59. package/lib/bridge/utils/misc.unit.test.d.ts +2 -0
  60. package/lib/bridge/utils/misc.unit.test.d.ts.map +1 -0
  61. package/lib/bridge/utils/misc.unit.test.js +230 -0
  62. package/lib/bridge/utils/misc.unit.test.js.map +1 -0
  63. package/lib/config.d.ts +14 -0
  64. package/lib/config.d.ts.map +1 -0
  65. package/lib/config.js +16 -0
  66. package/lib/config.js.map +1 -0
  67. package/lib/errors.d.ts +4 -0
  68. package/lib/errors.d.ts.map +1 -0
  69. package/lib/errors.js +6 -0
  70. package/lib/errors.js.map +1 -0
  71. package/lib/index.d.ts +4 -0
  72. package/lib/index.d.ts.map +1 -0
  73. package/lib/index.js +21 -0
  74. package/lib/index.js.map +1 -0
  75. package/lib/network/api.d.ts +11 -0
  76. package/lib/network/api.d.ts.map +1 -0
  77. package/lib/network/api.js +139 -0
  78. package/lib/network/api.js.map +1 -0
  79. package/lib/network/api.types.d.ts +168 -0
  80. package/lib/network/api.types.d.ts.map +1 -0
  81. package/lib/network/api.types.js +9 -0
  82. package/lib/network/api.types.js.map +1 -0
  83. package/lib/network/index.d.ts +3 -0
  84. package/lib/network/index.d.ts.map +1 -0
  85. package/lib/network/index.js +19 -0
  86. package/lib/network/index.js.map +1 -0
  87. package/lib/signer/getAddress.d.ts +6 -0
  88. package/lib/signer/getAddress.d.ts.map +1 -0
  89. package/lib/signer/getAddress.js +31 -0
  90. package/lib/signer/getAddress.js.map +1 -0
  91. package/lib/signer/index.d.ts +4 -0
  92. package/lib/signer/index.d.ts.map +1 -0
  93. package/lib/signer/index.js +23 -0
  94. package/lib/signer/index.js.map +1 -0
  95. package/lib/signer/signMessage.d.ts +12 -0
  96. package/lib/signer/signMessage.d.ts.map +1 -0
  97. package/lib/signer/signMessage.js +31 -0
  98. package/lib/signer/signMessage.js.map +1 -0
  99. package/lib/test/bot-deviceActions.d.ts +4 -0
  100. package/lib/test/bot-deviceActions.d.ts.map +1 -0
  101. package/lib/test/bot-deviceActions.js +48 -0
  102. package/lib/test/bot-deviceActions.js.map +1 -0
  103. package/lib/test/bot-specs.d.ts +7 -0
  104. package/lib/test/bot-specs.d.ts.map +1 -0
  105. package/lib/test/bot-specs.js +73 -0
  106. package/lib/test/bot-specs.js.map +1 -0
  107. package/lib/test/bridgeDatasetTest.d.ts +4 -0
  108. package/lib/test/bridgeDatasetTest.d.ts.map +1 -0
  109. package/lib/test/bridgeDatasetTest.js +129 -0
  110. package/lib/test/bridgeDatasetTest.js.map +1 -0
  111. package/lib/test/cli.d.ts +15 -0
  112. package/lib/test/cli.d.ts.map +1 -0
  113. package/lib/test/cli.js +27 -0
  114. package/lib/test/cli.js.map +1 -0
  115. package/lib/test/index.d.ts +6 -0
  116. package/lib/test/index.d.ts.map +1 -0
  117. package/lib/test/index.js +26 -0
  118. package/lib/test/index.js.map +1 -0
  119. package/lib/types/bridge.d.ts +35 -0
  120. package/lib/types/bridge.d.ts.map +1 -0
  121. package/lib/types/bridge.js +3 -0
  122. package/lib/types/bridge.js.map +1 -0
  123. package/lib/types/index.d.ts +3 -0
  124. package/lib/types/index.d.ts.map +1 -0
  125. package/lib/types/index.js +19 -0
  126. package/lib/types/index.js.map +1 -0
  127. package/lib/types/signer.d.ts +14 -0
  128. package/lib/types/signer.d.ts.map +1 -0
  129. package/lib/types/signer.js +3 -0
  130. package/lib/types/signer.js.map +1 -0
  131. package/lib/utils.d.ts +8 -0
  132. package/lib/utils.d.ts.map +1 -0
  133. package/lib/utils.js +26 -0
  134. package/lib/utils.js.map +1 -0
  135. package/lib-es/bridge/broadcast.d.ts +4 -0
  136. package/lib-es/bridge/broadcast.d.ts.map +1 -0
  137. package/lib-es/bridge/broadcast.js +21 -0
  138. package/lib-es/bridge/broadcast.js.map +1 -0
  139. package/lib-es/bridge/buildOptimisticOperation.d.ts +4 -0
  140. package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -0
  141. package/lib-es/bridge/buildOptimisticOperation.js +27 -0
  142. package/lib-es/bridge/buildOptimisticOperation.js.map +1 -0
  143. package/lib-es/bridge/createTransaction.d.ts +4 -0
  144. package/lib-es/bridge/createTransaction.d.ts.map +1 -0
  145. package/lib-es/bridge/createTransaction.js +11 -0
  146. package/lib-es/bridge/createTransaction.js.map +1 -0
  147. package/lib-es/bridge/deviceTransactionConfig.d.ts +22 -0
  148. package/lib-es/bridge/deviceTransactionConfig.d.ts.map +1 -0
  149. package/lib-es/bridge/deviceTransactionConfig.js +32 -0
  150. package/lib-es/bridge/deviceTransactionConfig.js.map +1 -0
  151. package/lib-es/bridge/estimateMaxSpendable.d.ts +4 -0
  152. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -0
  153. package/lib-es/bridge/estimateMaxSpendable.js +39 -0
  154. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -0
  155. package/lib-es/bridge/getTransactionStatus.d.ts +4 -0
  156. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -0
  157. package/lib-es/bridge/getTransactionStatus.js +53 -0
  158. package/lib-es/bridge/getTransactionStatus.js.map +1 -0
  159. package/lib-es/bridge/index.d.ts +11 -0
  160. package/lib-es/bridge/index.d.ts.map +1 -0
  161. package/lib-es/bridge/index.js +48 -0
  162. package/lib-es/bridge/index.js.map +1 -0
  163. package/lib-es/bridge/prepareTransaction.d.ts +4 -0
  164. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -0
  165. package/lib-es/bridge/prepareTransaction.js +49 -0
  166. package/lib-es/bridge/prepareTransaction.js.map +1 -0
  167. package/lib-es/bridge/signOperation.d.ts +5 -0
  168. package/lib-es/bridge/signOperation.d.ts.map +1 -0
  169. package/lib-es/bridge/signOperation.js +78 -0
  170. package/lib-es/bridge/signOperation.js.map +1 -0
  171. package/lib-es/bridge/synchronization.d.ts +5 -0
  172. package/lib-es/bridge/synchronization.d.ts.map +1 -0
  173. package/lib-es/bridge/synchronization.js +55 -0
  174. package/lib-es/bridge/synchronization.js.map +1 -0
  175. package/lib-es/bridge/transaction.d.ts +14 -0
  176. package/lib-es/bridge/transaction.d.ts.map +1 -0
  177. package/lib-es/bridge/transaction.js +38 -0
  178. package/lib-es/bridge/transaction.js.map +1 -0
  179. package/lib-es/bridge/utils/addresses.d.ts +13 -0
  180. package/lib-es/bridge/utils/addresses.d.ts.map +1 -0
  181. package/lib-es/bridge/utils/addresses.js +11 -0
  182. package/lib-es/bridge/utils/addresses.js.map +1 -0
  183. package/lib-es/bridge/utils/misc.d.ts +15 -0
  184. package/lib-es/bridge/utils/misc.d.ts.map +1 -0
  185. package/lib-es/bridge/utils/misc.js +176 -0
  186. package/lib-es/bridge/utils/misc.js.map +1 -0
  187. package/lib-es/bridge/utils/misc.unit.test.d.ts +2 -0
  188. package/lib-es/bridge/utils/misc.unit.test.d.ts.map +1 -0
  189. package/lib-es/bridge/utils/misc.unit.test.js +228 -0
  190. package/lib-es/bridge/utils/misc.unit.test.js.map +1 -0
  191. package/lib-es/config.d.ts +14 -0
  192. package/lib-es/config.d.ts.map +1 -0
  193. package/lib-es/config.js +11 -0
  194. package/lib-es/config.js.map +1 -0
  195. package/lib-es/errors.d.ts +4 -0
  196. package/lib-es/errors.d.ts.map +1 -0
  197. package/lib-es/errors.js +3 -0
  198. package/lib-es/errors.js.map +1 -0
  199. package/lib-es/index.d.ts +4 -0
  200. package/lib-es/index.d.ts.map +1 -0
  201. package/lib-es/index.js +3 -0
  202. package/lib-es/index.js.map +1 -0
  203. package/lib-es/network/api.d.ts +11 -0
  204. package/lib-es/network/api.d.ts.map +1 -0
  205. package/lib-es/network/api.js +124 -0
  206. package/lib-es/network/api.js.map +1 -0
  207. package/lib-es/network/api.types.d.ts +168 -0
  208. package/lib-es/network/api.types.d.ts.map +1 -0
  209. package/lib-es/network/api.types.js +6 -0
  210. package/lib-es/network/api.types.js.map +1 -0
  211. package/lib-es/network/index.d.ts +3 -0
  212. package/lib-es/network/index.d.ts.map +1 -0
  213. package/lib-es/network/index.js +3 -0
  214. package/lib-es/network/index.js.map +1 -0
  215. package/lib-es/signer/getAddress.d.ts +6 -0
  216. package/lib-es/signer/getAddress.d.ts.map +1 -0
  217. package/lib-es/signer/getAddress.js +29 -0
  218. package/lib-es/signer/getAddress.js.map +1 -0
  219. package/lib-es/signer/index.d.ts +4 -0
  220. package/lib-es/signer/index.d.ts.map +1 -0
  221. package/lib-es/signer/index.js +4 -0
  222. package/lib-es/signer/index.js.map +1 -0
  223. package/lib-es/signer/signMessage.d.ts +12 -0
  224. package/lib-es/signer/signMessage.d.ts.map +1 -0
  225. package/lib-es/signer/signMessage.js +27 -0
  226. package/lib-es/signer/signMessage.js.map +1 -0
  227. package/lib-es/test/bot-deviceActions.d.ts +4 -0
  228. package/lib-es/test/bot-deviceActions.d.ts.map +1 -0
  229. package/lib-es/test/bot-deviceActions.js +45 -0
  230. package/lib-es/test/bot-deviceActions.js.map +1 -0
  231. package/lib-es/test/bot-specs.d.ts +7 -0
  232. package/lib-es/test/bot-specs.d.ts.map +1 -0
  233. package/lib-es/test/bot-specs.js +68 -0
  234. package/lib-es/test/bot-specs.js.map +1 -0
  235. package/lib-es/test/bridgeDatasetTest.d.ts +4 -0
  236. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -0
  237. package/lib-es/test/bridgeDatasetTest.js +126 -0
  238. package/lib-es/test/bridgeDatasetTest.js.map +1 -0
  239. package/lib-es/test/cli.d.ts +15 -0
  240. package/lib-es/test/cli.d.ts.map +1 -0
  241. package/lib-es/test/cli.js +21 -0
  242. package/lib-es/test/cli.js.map +1 -0
  243. package/lib-es/test/index.d.ts +6 -0
  244. package/lib-es/test/index.d.ts.map +1 -0
  245. package/lib-es/test/index.js +6 -0
  246. package/lib-es/test/index.js.map +1 -0
  247. package/lib-es/types/bridge.d.ts +35 -0
  248. package/lib-es/types/bridge.d.ts.map +1 -0
  249. package/lib-es/types/bridge.js +2 -0
  250. package/lib-es/types/bridge.js.map +1 -0
  251. package/lib-es/types/index.d.ts +3 -0
  252. package/lib-es/types/index.d.ts.map +1 -0
  253. package/lib-es/types/index.js +3 -0
  254. package/lib-es/types/index.js.map +1 -0
  255. package/lib-es/types/signer.d.ts +14 -0
  256. package/lib-es/types/signer.d.ts.map +1 -0
  257. package/lib-es/types/signer.js +2 -0
  258. package/lib-es/types/signer.js.map +1 -0
  259. package/lib-es/utils.d.ts +8 -0
  260. package/lib-es/utils.d.ts.map +1 -0
  261. package/lib-es/utils.js +17 -0
  262. package/lib-es/utils.js.map +1 -0
  263. package/package.json +136 -0
  264. package/src/bridge/broadcast.ts +18 -0
  265. package/src/bridge/buildOptimisticOperation.ts +34 -0
  266. package/src/bridge/createTransaction.ts +13 -0
  267. package/src/bridge/deviceTransactionConfig.ts +57 -0
  268. package/src/bridge/estimateMaxSpendable.ts +50 -0
  269. package/src/bridge/getTransactionStatus.ts +56 -0
  270. package/src/bridge/index.ts +64 -0
  271. package/src/bridge/prepareTransaction.ts +60 -0
  272. package/src/bridge/signOperation.ts +91 -0
  273. package/src/bridge/synchronization.ts +55 -0
  274. package/src/bridge/transaction.ts +75 -0
  275. package/src/bridge/utils/addresses.ts +23 -0
  276. package/src/bridge/utils/misc.ts +274 -0
  277. package/src/bridge/utils/misc.unit.test.ts +237 -0
  278. package/src/config.ts +26 -0
  279. package/src/errors.ts +3 -0
  280. package/src/index.ts +4 -0
  281. package/src/network/api.ts +173 -0
  282. package/src/network/api.types.ts +180 -0
  283. package/src/network/index.ts +2 -0
  284. package/src/signer/getAddress.ts +27 -0
  285. package/src/signer/index.ts +4 -0
  286. package/src/signer/signMessage.ts +26 -0
  287. package/src/test/bot-deviceActions.ts +47 -0
  288. package/src/test/bot-specs.ts +82 -0
  289. package/src/test/bridgeDatasetTest.ts +134 -0
  290. package/src/test/cli.ts +38 -0
  291. package/src/test/index.ts +5 -0
  292. package/src/types/bridge.ts +49 -0
  293. package/src/types/index.ts +2 -0
  294. package/src/types/signer.ts +16 -0
  295. package/src/utils.ts +24 -0
  296. package/tsconfig.json +14 -0
package/.eslintrc.js ADDED
@@ -0,0 +1,20 @@
1
+ module.exports = {
2
+ env: {
3
+ browser: true,
4
+ es6: true,
5
+ },
6
+ overrides: [
7
+ {
8
+ files: ["src/**/*.test.{ts,tsx}"],
9
+ env: {
10
+ "jest/globals": true,
11
+ },
12
+ plugins: ["jest"],
13
+ },
14
+ ],
15
+ rules: {
16
+ "no-console": ["error", { allow: ["warn", "error"] }],
17
+ "@typescript-eslint/no-empty-function": "off",
18
+ "@typescript-eslint/no-explicit-any": "warn",
19
+ },
20
+ };
@@ -0,0 +1,4 @@
1
+
2
+ > @ledgerhq/coin-stacks@0.1.0 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-stacks
3
+ > tsc && tsc -m ES6 --outDir lib-es
4
+
@@ -0,0 +1,31 @@
1
+ {
2
+ "entry": [
3
+ "src/api/index.ts",
4
+ "src/bridge/index.ts",
5
+ "src/bridge/deviceTransactionConfig.ts",
6
+ "src/datasets/dataset-1.ts",
7
+ "src/signer/index.ts",
8
+ "src/test/index.ts",
9
+ "src/index.ts"
10
+ ],
11
+ "ignorePatterns": [
12
+ "**/node_modules/**",
13
+ "**/*.fixture.ts",
14
+ "**/*.mock.ts",
15
+ "**/*.test.{js,jsx,ts,tsx}"
16
+ ],
17
+ "ignoreUnresolved": [
18
+ "jest-get-type",
19
+ "jest-matcher-utils",
20
+ "jest-message-util"
21
+ ],
22
+ "ignoreUnimported": [
23
+ "src/network/index.ts",
24
+ "src/signer/signMessage.ts"
25
+ ],
26
+ "ignoreUnused": [
27
+ "@ledgerhq/types-cryptoassets",
28
+ "ripple-address-codec",
29
+ "ripple-binary-codec"
30
+ ]
31
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # @ledgerhq/coin-stacks
2
+
3
+ ## 0.1.1-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - [#8163](https://github.com/LedgerHQ/ledger-live/pull/8163) [`cab4737`](https://github.com/LedgerHQ/ledger-live/commit/cab4737345a646f93661992f1a68179280c904fc) Thanks [@Wozacosta](https://github.com/Wozacosta)! - support: move stacks to its own coin module
8
+
9
+ - Updated dependencies [[`5ce33a4`](https://github.com/LedgerHQ/ledger-live/commit/5ce33a417ecc87face54c1864aa49476c5f394b9), [`a52f6ae`](https://github.com/LedgerHQ/ledger-live/commit/a52f6ae3d49ea8daea42d9cdc24e9dd0d6d0f371), [`748cf14`](https://github.com/LedgerHQ/ledger-live/commit/748cf146b3e903172831e7e5ddbc29a3565c8932), [`61f8b03`](https://github.com/LedgerHQ/ledger-live/commit/61f8b033f710369171e277f5c0faede636207160)]:
10
+ - @ledgerhq/types-live@6.53.1-next.0
11
+ - @ledgerhq/coin-framework@0.19.1-next.0
package/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2017-present Ledger https://www.ledger.com/
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
package/jest.config.js ADDED
@@ -0,0 +1,8 @@
1
+ /** @type {import('ts-jest/dist/types').JestConfigWithTsJest} */
2
+ module.exports = {
3
+ collectCoverageFrom: ["src/**/*.ts"],
4
+ coverageDirectory: "coverage",
5
+ preset: "ts-jest",
6
+ testEnvironment: "node",
7
+ testPathIgnorePatterns: ["lib/", "lib-es/", ".integration.test.ts"]
8
+ };
@@ -0,0 +1,4 @@
1
+ import { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction } from "../types";
3
+ export declare const broadcast: AccountBridge<Transaction>["broadcast"];
4
+ //# sourceMappingURL=broadcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/bridge/broadcast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAmB,WAAW,EAAE,MAAM,UAAU,CAAC;AAGxD,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,WAAW,CAU7D,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.broadcast = void 0;
16
+ const operation_1 = require("@ledgerhq/coin-framework/operation");
17
+ const invariant_1 = __importDefault(require("invariant"));
18
+ const api_1 = require("../network/api");
19
+ const misc_1 = require("./utils/misc");
20
+ const broadcast = (_a) => __awaiter(void 0, [_a], void 0, function* ({ signedOperation: { operation, signature, rawData }, }) {
21
+ (0, invariant_1.default)(operation, "StacksOperation expected");
22
+ const tx = yield (0, misc_1.getTxToBroadcast)(operation, signature, rawData !== null && rawData !== void 0 ? rawData : {});
23
+ const hash = yield (0, api_1.broadcastTx)(tx);
24
+ const result = (0, operation_1.patchOperationWithHash)(operation, hash);
25
+ return result;
26
+ });
27
+ exports.broadcast = broadcast;
28
+ //# sourceMappingURL=broadcast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../../src/bridge/broadcast.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAA4E;AAE5E,0DAAkC;AAClC,wCAA6C;AAE7C,uCAAgD;AAEzC,MAAM,SAAS,GAA4C,KAE/D,EAAE,4CAFoE,EACvE,eAAe,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GACnD;IACC,IAAA,mBAAS,EAAC,SAA4B,EAAE,0BAA0B,CAAC,CAAC;IACpE,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAgB,EAAC,SAA4B,EAAE,SAAS,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC;IAE1F,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAW,EAAC,EAAE,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAA,kCAAsB,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEvD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA,CAAC;AAVW,QAAA,SAAS,aAUpB"}
@@ -0,0 +1,4 @@
1
+ import { Account, OperationType } from "@ledgerhq/types-live";
2
+ import { StacksOperation, Transaction } from "../types";
3
+ export declare const buildOptimisticOperation: (account: Account, transaction: Transaction, operatioinType?: OperationType) => StacksOperation;
4
+ //# sourceMappingURL=buildOptimisticOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildOptimisticOperation.d.ts","sourceRoot":"","sources":["../../src/bridge/buildOptimisticOperation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGxD,eAAO,MAAM,wBAAwB,YAC1B,OAAO,eACH,WAAW,mBACR,aAAa,KAC5B,eAuBF,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildOptimisticOperation = void 0;
7
+ const operation_1 = require("@ledgerhq/coin-framework/operation");
8
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
+ const misc_1 = require("./utils/misc");
10
+ const buildOptimisticOperation = (account, transaction, operatioinType = "OUT") => {
11
+ var _a;
12
+ const hash = "";
13
+ const { id: accountId } = account;
14
+ const { address } = (0, misc_1.getAddress)(account);
15
+ return {
16
+ id: (0, operation_1.encodeOperationId)(accountId, hash, operatioinType),
17
+ hash,
18
+ type: "OUT",
19
+ senders: [address],
20
+ recipients: [transaction.recipient],
21
+ accountId,
22
+ value: transaction.amount.plus(transaction.fee || 0),
23
+ fee: transaction.fee || new bignumber_js_1.default(0),
24
+ blockHash: null,
25
+ blockHeight: null,
26
+ date: new Date(),
27
+ transactionSequenceNumber: ((_a = transaction.nonce) === null || _a === void 0 ? void 0 : _a.toNumber()) || 0,
28
+ extra: {
29
+ memo: transaction.memo,
30
+ },
31
+ };
32
+ };
33
+ exports.buildOptimisticOperation = buildOptimisticOperation;
34
+ //# sourceMappingURL=buildOptimisticOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildOptimisticOperation.js","sourceRoot":"","sources":["../../src/bridge/buildOptimisticOperation.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAuE;AAEvE,gEAAqC;AAErC,uCAA0C;AAEnC,MAAM,wBAAwB,GAAG,CACtC,OAAgB,EAChB,WAAwB,EACxB,iBAAgC,KAAK,EACpB,EAAE;;IACnB,MAAM,IAAI,GAAG,EAAE,CAAC;IAEhB,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,iBAAU,EAAC,OAAO,CAAC,CAAC;IAExC,OAAO;QACL,EAAE,EAAE,IAAA,6BAAiB,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC;QACtD,IAAI;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,UAAU,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;QACnC,SAAS;QACT,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;QACpD,GAAG,EAAE,WAAW,CAAC,GAAG,IAAI,IAAI,sBAAS,CAAC,CAAC,CAAC;QACxC,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,IAAI,IAAI,EAAE;QAChB,yBAAyB,EAAE,CAAA,MAAA,WAAW,CAAC,KAAK,0CAAE,QAAQ,EAAE,KAAI,CAAC;QAC7D,KAAK,EAAE;YACL,IAAI,EAAE,WAAW,CAAC,IAAI;SACvB;KACF,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,wBAAwB,4BA2BnC"}
@@ -0,0 +1,4 @@
1
+ import { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction } from "../types";
3
+ export declare const createTransaction: AccountBridge<Transaction>["createTransaction"];
4
+ //# sourceMappingURL=createTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/createTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAO5E,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createTransaction = void 0;
7
+ const transactions_1 = require("@stacks/transactions");
8
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
+ const createTransaction = () => ({
10
+ family: "stacks",
11
+ recipient: "",
12
+ amount: new bignumber_js_1.default(0),
13
+ network: "mainnet",
14
+ anchorMode: transactions_1.AnchorMode.Any,
15
+ useAllAmount: false,
16
+ });
17
+ exports.createTransaction = createTransaction;
18
+ //# sourceMappingURL=createTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTransaction.js","sourceRoot":"","sources":["../../src/bridge/createTransaction.ts"],"names":[],"mappings":";;;;;;AACA,uDAAkD;AAClD,gEAAqC;AAG9B,MAAM,iBAAiB,GAAoD,GAAG,EAAE,CAAC,CAAC;IACvF,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,yBAAU,CAAC,GAAG;IAC1B,YAAY,EAAE,KAAK;CACpB,CAAC,CAAC;AAPU,QAAA,iBAAiB,qBAO3B"}
@@ -0,0 +1,22 @@
1
+ import type { CommonDeviceTransactionField } from "@ledgerhq/coin-framework/transaction/common";
2
+ import type { Account, AccountLike } from "@ledgerhq/types-live";
3
+ import { BigNumber } from "bignumber.js";
4
+ import type { Transaction, TransactionStatus } from "../types";
5
+ export type ExtraDeviceTransactionField = {
6
+ type: "stacks.memo";
7
+ label: string;
8
+ value: string;
9
+ } | {
10
+ type: "stacks.extendedAmount";
11
+ label: string;
12
+ value: BigNumber;
13
+ };
14
+ export type DeviceTransactionField = CommonDeviceTransactionField | ExtraDeviceTransactionField;
15
+ declare function getDeviceTransactionConfig(input: {
16
+ account: AccountLike;
17
+ parentAccount: Account | null | undefined;
18
+ transaction: Transaction;
19
+ status: TransactionStatus;
20
+ }): Array<DeviceTransactionField>;
21
+ export default getDeviceTransactionConfig;
22
+ //# sourceMappingURL=deviceTransactionConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceTransactionConfig.d.ts","sourceRoot":"","sources":["../../src/bridge/deviceTransactionConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE/D,MAAM,MAAM,2BAA2B,GACnC;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;AAEN,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,GAAG,2BAA2B,CAAC;AAEhG,iBAAS,0BAA0B,CAAC,KAAK,EAAE;IACzC,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;CAC3B,GAAG,KAAK,CAAC,sBAAsB,CAAC,CA8BhC;AAED,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bignumber_js_1 = require("bignumber.js");
4
+ function getDeviceTransactionConfig(input) {
5
+ const fields = [];
6
+ fields.push({
7
+ type: "stacks.extendedAmount",
8
+ label: "Amount",
9
+ value: input.transaction.amount,
10
+ });
11
+ fields.push({
12
+ type: "stacks.extendedAmount",
13
+ label: "Fees",
14
+ value: input.transaction.fee ? input.transaction.fee : new bignumber_js_1.BigNumber(0),
15
+ });
16
+ fields.push({
17
+ type: "address",
18
+ label: "Recipient",
19
+ address: input.transaction.recipient,
20
+ });
21
+ fields.push({
22
+ type: "text",
23
+ label: "Nonce",
24
+ value: input.transaction.nonce ? input.transaction.nonce.toFixed() : "0",
25
+ });
26
+ fields.push({
27
+ type: "stacks.memo",
28
+ label: "Memo",
29
+ value: input.transaction.memo || "",
30
+ });
31
+ return fields;
32
+ }
33
+ exports.default = getDeviceTransactionConfig;
34
+ //# sourceMappingURL=deviceTransactionConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceTransactionConfig.js","sourceRoot":"","sources":["../../src/bridge/deviceTransactionConfig.ts"],"names":[],"mappings":";;AAEA,+CAAyC;AAiBzC,SAAS,0BAA0B,CAAC,KAKnC;IACC,MAAM,MAAM,GAAkC,EAAE,CAAC;IAEjD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;KAChC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC;KACxE,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS;KACrC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG;KACzE,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE;KACpC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kBAAe,0BAA0B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction } from "../types";
3
+ export declare const estimateMaxSpendable: AccountBridge<Transaction>["estimateMaxSpendable"];
4
+ //# sourceMappingURL=estimateMaxSpendable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimateMaxSpendable.d.ts","sourceRoot":"","sources":["../../src/bridge/estimateMaxSpendable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAUrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,sBAAsB,CAkCnF,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.estimateMaxSpendable = void 0;
16
+ const index_1 = require("@ledgerhq/coin-framework/account/index");
17
+ const abandonseed_1 = require("@ledgerhq/cryptoassets/abandonseed");
18
+ const network_1 = require("@stacks/network");
19
+ const transactions_1 = require("@stacks/transactions");
20
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
21
+ const invariant_1 = __importDefault(require("invariant"));
22
+ const api_types_1 = require("../network/api.types");
23
+ const createTransaction_1 = require("./createTransaction");
24
+ const estimateMaxSpendable = (_a) => __awaiter(void 0, [_a], void 0, function* ({ account, parentAccount, transaction, }) {
25
+ const mainAccount = (0, index_1.getMainAccount)(account, parentAccount);
26
+ const { spendableBalance, xpub } = mainAccount;
27
+ (0, invariant_1.default)(xpub, "xpub is required");
28
+ const dummyTx = Object.assign(Object.assign(Object.assign({}, (0, createTransaction_1.createTransaction)(account)), transaction), { recipient: (0, abandonseed_1.getAbandonSeedAddress)(mainAccount.currency.id), useAllAmount: true });
29
+ // Compute fees
30
+ const { recipient, anchorMode, memo, amount } = dummyTx;
31
+ const network = api_types_1.StacksNetwork[dummyTx.network] || new network_1.StacksMainnet();
32
+ const options = {
33
+ recipient,
34
+ anchorMode,
35
+ memo,
36
+ network,
37
+ publicKey: xpub,
38
+ amount: amount.toFixed(),
39
+ };
40
+ const tx = yield (0, transactions_1.makeUnsignedSTXTokenTransfer)(options);
41
+ const [feeEst] = yield (0, transactions_1.estimateTransaction)(tx.payload);
42
+ const diff = spendableBalance.minus(new bignumber_js_1.default(feeEst.fee));
43
+ return diff.gte(0) ? diff : new bignumber_js_1.default(0);
44
+ });
45
+ exports.estimateMaxSpendable = estimateMaxSpendable;
46
+ //# sourceMappingURL=estimateMaxSpendable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimateMaxSpendable.js","sourceRoot":"","sources":["../../src/bridge/estimateMaxSpendable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAAwE;AACxE,oEAA2E;AAE3E,6CAAgD;AAChD,uDAI8B;AAC9B,gEAAqC;AACrC,0DAAkC;AAClC,oDAAqD;AAErD,2DAAwD;AAEjD,MAAM,oBAAoB,GAAuD,KAIrF,EAAE,4CAJ0F,EAC7F,OAAO,EACP,aAAa,EACb,WAAW,GACZ;IACC,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;IAC/C,IAAA,mBAAS,EAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAEpC,MAAM,OAAO,iDACR,IAAA,qCAAiB,EAAC,OAAO,CAAC,GAC1B,WAAW,KACd,SAAS,EAAE,IAAA,mCAAqB,EAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EACzD,YAAY,EAAE,IAAI,GACnB,CAAC;IACF,eAAe;IACf,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACxD,MAAM,OAAO,GAAG,yBAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,uBAAa,EAAE,CAAC;IAEtE,MAAM,OAAO,GAAiC;QAC5C,SAAS;QACT,UAAU;QACV,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;KACzB,CAAC;IAEF,MAAM,EAAE,GAAG,MAAM,IAAA,2CAA4B,EAAC,OAAO,CAAC,CAAC;IAEvD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAA,kCAAmB,EAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,sBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAA,CAAC;AAlCW,QAAA,oBAAoB,wBAkC/B"}
@@ -0,0 +1,4 @@
1
+ import { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction } from "../types";
3
+ export declare const getTransactionStatus: AccountBridge<Transaction>["getTransactionStatus"];
4
+ //# sourceMappingURL=getTransactionStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.d.ts","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAqB,MAAM,UAAU,CAAC;AAI1D,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,sBAAsB,CAwCnF,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getTransactionStatus = void 0;
16
+ const errors_1 = require("@ledgerhq/errors");
17
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
18
+ const errors_2 = require("../errors");
19
+ const addresses_1 = require("./utils/addresses");
20
+ const misc_1 = require("./utils/misc");
21
+ const getTransactionStatus = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
22
+ const errors = {};
23
+ const warnings = {};
24
+ const { spendableBalance } = account;
25
+ const { address } = (0, misc_1.getAddress)(account);
26
+ const { memo, recipient, useAllAmount, fee } = transaction;
27
+ let { amount } = transaction;
28
+ if (!recipient) {
29
+ errors.recipient = new errors_1.RecipientRequired();
30
+ }
31
+ else if (!(0, addresses_1.validateAddress)(recipient).isValid) {
32
+ errors.recipient = new errors_1.InvalidAddress("", {
33
+ currencyName: account.currency.name,
34
+ });
35
+ }
36
+ else if (address === recipient) {
37
+ errors.recipient = new errors_1.InvalidAddressBecauseDestinationIsAlsoSource();
38
+ }
39
+ else if (!fee || fee.eq(0)) {
40
+ errors.gas = new errors_1.FeeNotLoaded();
41
+ }
42
+ const estimatedFees = fee || new bignumber_js_1.default(0);
43
+ const totalSpent = useAllAmount ? spendableBalance : amount.plus(estimatedFees);
44
+ amount = useAllAmount ? spendableBalance.minus(estimatedFees) : amount;
45
+ if (amount.lte(0))
46
+ errors.amount = new errors_1.AmountRequired();
47
+ if (totalSpent.gt(spendableBalance))
48
+ errors.amount = new errors_1.NotEnoughBalance();
49
+ if (memo && memo.length > 34)
50
+ errors.transaction = new errors_2.StacksMemoTooLong();
51
+ return {
52
+ errors,
53
+ warnings,
54
+ estimatedFees,
55
+ amount,
56
+ totalSpent,
57
+ };
58
+ });
59
+ exports.getTransactionStatus = getTransactionStatus;
60
+ //# sourceMappingURL=getTransactionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.js","sourceRoot":"","sources":["../../src/bridge/getTransactionStatus.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAO0B;AAE1B,gEAAqC;AACrC,sCAA8C;AAE9C,iDAAoD;AACpD,uCAA0C;AAEnC,MAAM,oBAAoB,GAAuD,CACtF,OAAO,EACP,WAAW,EACX,EAAE;IACF,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAkC,EAAE,CAAC;IAEnD,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,iBAAU,EAAC,OAAO,CAAC,CAAC;IACxC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;IAC3D,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IAE7B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,SAAS,GAAG,IAAI,0BAAiB,EAAE,CAAC;IAC7C,CAAC;SAAM,IAAI,CAAC,IAAA,2BAAe,EAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/C,MAAM,CAAC,SAAS,GAAG,IAAI,uBAAc,CAAC,EAAE,EAAE;YACxC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;SACpC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,GAAG,IAAI,qDAA4C,EAAE,CAAC;IACxE,CAAC;SAAM,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,GAAG,IAAI,qBAAY,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,IAAI,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChF,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEvE,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,uBAAc,EAAE,CAAC;IACxD,IAAI,UAAU,CAAC,EAAE,CAAC,gBAAgB,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,yBAAgB,EAAE,CAAC;IAC5E,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,CAAC,WAAW,GAAG,IAAI,0BAAiB,EAAE,CAAC;IAE3E,OAAO;QACL,MAAM;QACN,QAAQ;QACR,aAAa;QACb,MAAM;QACN,UAAU;KACX,CAAC;AACJ,CAAC,CAAA,CAAC;AAxCW,QAAA,oBAAoB,wBAwC/B"}
@@ -0,0 +1,11 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
2
+ import type { Account, AccountBridge, CurrencyBridge } from "@ledgerhq/types-live";
3
+ import type { Transaction, StacksSigner } from "../types";
4
+ import { estimateMaxSpendable } from "./estimateMaxSpendable";
5
+ import { prepareTransaction } from "./prepareTransaction";
6
+ export declare function createBridges(signerContext: SignerContext<StacksSigner>): {
7
+ currencyBridge: CurrencyBridge;
8
+ accountBridge: AccountBridge<Transaction, Account, import("@ledgerhq/types-live").TransactionStatusCommon, import("@ledgerhq/types-live").AccountRaw>;
9
+ };
10
+ export { prepareTransaction, estimateMaxSpendable };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,KAAK,EAAE,WAAW,EAAqB,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA4C1D,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC;;;EAKvE;AACD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.estimateMaxSpendable = exports.prepareTransaction = void 0;
7
+ exports.createBridges = createBridges;
8
+ const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
9
+ const index_1 = __importDefault(require("../signer/index"));
10
+ const getAddressWrapper_1 = __importDefault(require("@ledgerhq/coin-framework/bridge/getAddressWrapper"));
11
+ const jsHelpers_2 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
12
+ const getTransactionStatus_1 = require("./getTransactionStatus");
13
+ const estimateMaxSpendable_1 = require("./estimateMaxSpendable");
14
+ Object.defineProperty(exports, "estimateMaxSpendable", { enumerable: true, get: function () { return estimateMaxSpendable_1.estimateMaxSpendable; } });
15
+ const prepareTransaction_1 = require("./prepareTransaction");
16
+ Object.defineProperty(exports, "prepareTransaction", { enumerable: true, get: function () { return prepareTransaction_1.prepareTransaction; } });
17
+ const createTransaction_1 = require("./createTransaction");
18
+ const synchronization_1 = require("./synchronization");
19
+ const signOperation_1 = require("./signOperation");
20
+ const broadcast_1 = require("./broadcast");
21
+ function buildCurrencyBridge(signerContext) {
22
+ const getAddress = (0, index_1.default)(signerContext);
23
+ const scanAccounts = (0, jsHelpers_1.makeScanAccounts)({
24
+ getAccountShape: synchronization_1.getAccountShape,
25
+ getAddressFn: (0, getAddressWrapper_1.default)(getAddress),
26
+ });
27
+ return {
28
+ preload: () => Promise.resolve({}),
29
+ hydrate: () => { },
30
+ scanAccounts,
31
+ };
32
+ }
33
+ const sync = (0, jsHelpers_1.makeSync)({ getAccountShape: synchronization_1.getAccountShape });
34
+ function buildAccountBridge(signerContext) {
35
+ const getAddress = (0, index_1.default)(signerContext);
36
+ const receive = (0, jsHelpers_1.makeAccountBridgeReceive)((0, getAddressWrapper_1.default)(getAddress));
37
+ const signOperation = (0, signOperation_1.buildSignOperation)(signerContext);
38
+ return {
39
+ estimateMaxSpendable: estimateMaxSpendable_1.estimateMaxSpendable,
40
+ createTransaction: createTransaction_1.createTransaction,
41
+ updateTransaction: jsHelpers_2.defaultUpdateTransaction,
42
+ getTransactionStatus: getTransactionStatus_1.getTransactionStatus,
43
+ prepareTransaction: prepareTransaction_1.prepareTransaction,
44
+ sync,
45
+ receive,
46
+ signOperation,
47
+ broadcast: broadcast_1.broadcast,
48
+ };
49
+ }
50
+ function createBridges(signerContext) {
51
+ return {
52
+ currencyBridge: buildCurrencyBridge(signerContext),
53
+ accountBridge: buildAccountBridge(signerContext),
54
+ };
55
+ }
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":";;;;;;AAyDA,sCAKC;AA9DD,yEAImD;AACnD,4DAAuC;AACvC,0GAAkF;AAGlF,yEAAqF;AAErF,iEAA8D;AAC9D,iEAA8D;AAmDjC,qGAnDpB,2CAAoB,OAmDoB;AAlDjD,6DAA0D;AAkDjD,mGAlDA,uCAAkB,OAkDA;AAjD3B,2DAAwD;AACxD,uDAAoD;AACpD,mDAAqD;AACrD,2CAAwC;AAExC,SAAS,mBAAmB,CAAC,aAA0C;IACrE,MAAM,UAAU,GAAG,IAAA,eAAQ,EAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,IAAA,4BAAgB,EAAC;QACpC,eAAe,EAAf,iCAAe;QACf,YAAY,EAAE,IAAA,2BAAiB,EAAC,UAAU,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC,EAAE,eAAe,EAAf,iCAAe,EAAE,CAAC,CAAC;AAE3C,SAAS,kBAAkB,CACzB,aAA0C;IAE1C,MAAM,UAAU,GAAG,IAAA,eAAQ,EAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAA,oCAAwB,EAAC,IAAA,2BAAiB,EAAC,UAAU,CAAC,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,IAAA,kCAAkB,EAAC,aAAa,CAAC,CAAC;IAExD,OAAO;QACL,oBAAoB,EAApB,2CAAoB;QACpB,iBAAiB,EAAjB,qCAAiB;QACjB,iBAAiB,EAAE,oCAAwB;QAC3C,oBAAoB,EAApB,2CAAoB;QACpB,kBAAkB,EAAlB,uCAAkB;QAClB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,SAAS,EAAT,qBAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,aAA0C;IACtE,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction } from "../types";
3
+ export declare const prepareTransaction: AccountBridge<Transaction>["prepareTransaction"];
4
+ //# sourceMappingURL=prepareTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAarD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIvC,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAyC/E,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.prepareTransaction = void 0;
16
+ const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
17
+ const network_1 = require("@stacks/network");
18
+ const transactions_1 = require("@stacks/transactions");
19
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
20
+ const c32check_1 = require("c32check");
21
+ const invariant_1 = __importDefault(require("invariant"));
22
+ const api_types_1 = require("../network/api.types");
23
+ const addresses_1 = require("./utils/addresses");
24
+ const misc_1 = require("./utils/misc");
25
+ const prepareTransaction = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
26
+ const { spendableBalance, pendingOperations, xpub } = account;
27
+ const { recipient, useAllAmount } = transaction;
28
+ (0, invariant_1.default)(xpub, "xpub is required");
29
+ const patch = {};
30
+ if (xpub && recipient && (0, addresses_1.validateAddress)(recipient).isValid) {
31
+ const { anchorMode, memo, amount } = transaction;
32
+ const network = api_types_1.StacksNetwork[transaction.network] || new network_1.StacksMainnet();
33
+ // Check if recipient is valid
34
+ const options = {
35
+ recipient,
36
+ anchorMode,
37
+ memo,
38
+ network,
39
+ publicKey: xpub,
40
+ amount: amount.toFixed(),
41
+ };
42
+ const tx = yield (0, transactions_1.makeUnsignedSTXTokenTransfer)(options);
43
+ const addressVersion = network.version === transactions_1.TransactionVersion.Mainnet
44
+ ? transactions_1.AddressVersion.MainnetSingleSig
45
+ : transactions_1.AddressVersion.TestnetSingleSig;
46
+ const senderAddress = (0, c32check_1.c32address)(addressVersion, tx.auth.spendingCondition.signer);
47
+ const [fee] = yield (0, transactions_1.estimateTransaction)(tx.payload);
48
+ patch.fee = new bignumber_js_1.default(fee.fee);
49
+ patch.nonce = yield (0, misc_1.findNextNonce)(senderAddress, pendingOperations);
50
+ if (useAllAmount)
51
+ patch.amount = spendableBalance.minus(patch.fee);
52
+ }
53
+ return (0, jsHelpers_1.defaultUpdateTransaction)(transaction, patch);
54
+ });
55
+ exports.prepareTransaction = prepareTransaction;
56
+ //# sourceMappingURL=prepareTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yEAAqF;AAErF,6CAAgD;AAChD,uDAM8B;AAC9B,gEAAqC;AACrC,uCAAsC;AACtC,0DAAkC;AAClC,oDAAqD;AAErD,iDAAoD;AACpD,uCAA6C;AAEtC,MAAM,kBAAkB,GAAqD,CAClF,OAAO,EACP,WAAW,EACX,EAAE;IACF,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC9D,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC;IAChD,IAAA,mBAAS,EAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,IAAI,IAAI,IAAI,SAAS,IAAI,IAAA,2BAAe,EAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;QAEjD,MAAM,OAAO,GAAG,yBAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,uBAAa,EAAE,CAAC;QAE1E,8BAA8B;QAC9B,MAAM,OAAO,GAAiC;YAC5C,SAAS;YACT,UAAU;YACV,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;SACzB,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,IAAA,2CAA4B,EAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,cAAc,GAClB,OAAO,CAAC,OAAO,KAAK,iCAAkB,CAAC,OAAO;YAC5C,CAAC,CAAC,6BAAc,CAAC,gBAAgB;YACjC,CAAC,CAAC,6BAAc,CAAC,gBAAgB,CAAC;QACtC,MAAM,aAAa,GAAG,IAAA,qBAAU,EAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAkB,CAAC,MAAM,CAAC,CAAC;QAEpF,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAA,kCAAmB,EAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAEpD,KAAK,CAAC,GAAG,GAAG,IAAI,sBAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,KAAK,CAAC,KAAK,GAAG,MAAM,IAAA,oBAAa,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAEpE,IAAI,YAAY;YAAE,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,IAAA,oCAAwB,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC,CAAA,CAAC;AAzCW,QAAA,kBAAkB,sBAyC7B"}
@@ -0,0 +1,5 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/lib/signer";
2
+ import { AccountBridge } from "@ledgerhq/types-live";
3
+ import { StacksSigner, Transaction } from "../types";
4
+ export declare const buildSignOperation: (signerContext: SignerContext<StacksSigner>) => AccountBridge<Transaction>["signOperation"];
5
+ //# sourceMappingURL=signOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKrD,eAAO,MAAM,kBAAkB,kBACb,aAAa,CAAC,YAAY,CAAC,KAAG,aAAa,CAAC,WAAW,CAAC,CAAC,eAAe,CA6EpF,CAAC"}