@ledgerhq/coin-canton 0.4.1-nightly.0 → 0.5.0-nightly.2

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 (166) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.unimportedrc.json +12 -4
  3. package/CHANGELOG.md +35 -0
  4. package/lib/api/getBalance.integ.test.js +1 -1
  5. package/lib/api/getBalance.integ.test.js.map +1 -1
  6. package/lib/api/index.d.ts.map +1 -1
  7. package/lib/api/index.js +12 -9
  8. package/lib/api/index.js.map +1 -1
  9. package/lib/bridge/createTransaction.test.js +1 -1
  10. package/lib/bridge/createTransaction.test.js.map +1 -1
  11. package/lib/bridge/index.d.ts +3 -3
  12. package/lib/bridge/index.d.ts.map +1 -1
  13. package/lib/bridge/index.js +9 -1
  14. package/lib/bridge/index.js.map +1 -1
  15. package/lib/bridge/onboard.d.ts +10 -0
  16. package/lib/bridge/onboard.d.ts.map +1 -0
  17. package/lib/bridge/onboard.integ.test.d.ts +2 -0
  18. package/lib/bridge/onboard.integ.test.d.ts.map +1 -0
  19. package/lib/bridge/onboard.integ.test.js +156 -0
  20. package/lib/bridge/onboard.integ.test.js.map +1 -0
  21. package/lib/bridge/onboard.js +139 -0
  22. package/lib/bridge/onboard.js.map +1 -0
  23. package/lib/bridge/prepareTransaction.d.ts.map +1 -1
  24. package/lib/bridge/prepareTransaction.js +5 -7
  25. package/lib/bridge/prepareTransaction.js.map +1 -1
  26. package/lib/bridge/signOperation.d.ts.map +1 -1
  27. package/lib/bridge/signOperation.js +2 -1
  28. package/lib/bridge/signOperation.js.map +1 -1
  29. package/lib/bridge/sync.d.ts.map +1 -1
  30. package/lib/bridge/sync.integ.test.d.ts +2 -0
  31. package/lib/bridge/sync.integ.test.d.ts.map +1 -0
  32. package/lib/bridge/sync.integ.test.js +175 -0
  33. package/lib/bridge/sync.integ.test.js.map +1 -0
  34. package/lib/bridge/sync.js +39 -36
  35. package/lib/bridge/sync.js.map +1 -1
  36. package/lib/bridge/updateTransaction.d.ts.map +1 -1
  37. package/lib/bridge/updateTransaction.js +0 -4
  38. package/lib/bridge/updateTransaction.js.map +1 -1
  39. package/lib/common-logic/history/listOperations.d.ts.map +1 -1
  40. package/lib/common-logic/history/listOperations.js +19 -31
  41. package/lib/common-logic/history/listOperations.js.map +1 -1
  42. package/lib/common-logic/transaction/craftTransaction.d.ts +4 -3
  43. package/lib/common-logic/transaction/craftTransaction.d.ts.map +1 -1
  44. package/lib/common-logic/transaction/craftTransaction.js +10 -12
  45. package/lib/common-logic/transaction/craftTransaction.js.map +1 -1
  46. package/lib/network/gateway.d.ts +194 -3
  47. package/lib/network/gateway.d.ts.map +1 -1
  48. package/lib/network/gateway.integ.test.js +121 -11
  49. package/lib/network/gateway.integ.test.js.map +1 -1
  50. package/lib/network/gateway.js +96 -18
  51. package/lib/network/gateway.js.map +1 -1
  52. package/lib/network/node.d.ts +2 -2
  53. package/lib/network/node.d.ts.map +1 -1
  54. package/lib/network/node.js.map +1 -1
  55. package/lib/network/types.d.ts +1 -1
  56. package/lib/network/types.d.ts.map +1 -1
  57. package/lib/signer/getAddress.d.ts.map +1 -1
  58. package/lib/signer/getAddress.js +2 -2
  59. package/lib/signer/getAddress.js.map +1 -1
  60. package/lib/test/cantonTestUtils.d.ts +33 -0
  61. package/lib/test/cantonTestUtils.d.ts.map +1 -0
  62. package/lib/test/cantonTestUtils.js +159 -0
  63. package/lib/test/cantonTestUtils.js.map +1 -0
  64. package/lib/types/bridge.d.ts +7 -1
  65. package/lib/types/bridge.d.ts.map +1 -1
  66. package/lib/types/index.d.ts +1 -10
  67. package/lib/types/index.d.ts.map +1 -1
  68. package/lib/types/index.js +1 -0
  69. package/lib/types/index.js.map +1 -1
  70. package/lib/types/onboard.d.ts +55 -0
  71. package/lib/types/onboard.d.ts.map +1 -0
  72. package/lib/types/onboard.js +22 -0
  73. package/lib/types/onboard.js.map +1 -0
  74. package/lib-es/api/getBalance.integ.test.js +1 -1
  75. package/lib-es/api/getBalance.integ.test.js.map +1 -1
  76. package/lib-es/api/index.d.ts.map +1 -1
  77. package/lib-es/api/index.js +13 -10
  78. package/lib-es/api/index.js.map +1 -1
  79. package/lib-es/bridge/createTransaction.test.js +1 -1
  80. package/lib-es/bridge/createTransaction.test.js.map +1 -1
  81. package/lib-es/bridge/index.d.ts +3 -3
  82. package/lib-es/bridge/index.d.ts.map +1 -1
  83. package/lib-es/bridge/index.js +9 -1
  84. package/lib-es/bridge/index.js.map +1 -1
  85. package/lib-es/bridge/onboard.d.ts +10 -0
  86. package/lib-es/bridge/onboard.d.ts.map +1 -0
  87. package/lib-es/bridge/onboard.integ.test.d.ts +2 -0
  88. package/lib-es/bridge/onboard.integ.test.d.ts.map +1 -0
  89. package/lib-es/bridge/onboard.integ.test.js +151 -0
  90. package/lib-es/bridge/onboard.integ.test.js.map +1 -0
  91. package/lib-es/bridge/onboard.js +133 -0
  92. package/lib-es/bridge/onboard.js.map +1 -0
  93. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
  94. package/lib-es/bridge/prepareTransaction.js +6 -8
  95. package/lib-es/bridge/prepareTransaction.js.map +1 -1
  96. package/lib-es/bridge/signOperation.d.ts.map +1 -1
  97. package/lib-es/bridge/signOperation.js +2 -1
  98. package/lib-es/bridge/signOperation.js.map +1 -1
  99. package/lib-es/bridge/sync.d.ts.map +1 -1
  100. package/lib-es/bridge/sync.integ.test.d.ts +2 -0
  101. package/lib-es/bridge/sync.integ.test.d.ts.map +1 -0
  102. package/lib-es/bridge/sync.integ.test.js +137 -0
  103. package/lib-es/bridge/sync.integ.test.js.map +1 -0
  104. package/lib-es/bridge/sync.js +38 -35
  105. package/lib-es/bridge/sync.js.map +1 -1
  106. package/lib-es/bridge/updateTransaction.d.ts.map +1 -1
  107. package/lib-es/bridge/updateTransaction.js +0 -4
  108. package/lib-es/bridge/updateTransaction.js.map +1 -1
  109. package/lib-es/common-logic/history/listOperations.d.ts.map +1 -1
  110. package/lib-es/common-logic/history/listOperations.js +20 -29
  111. package/lib-es/common-logic/history/listOperations.js.map +1 -1
  112. package/lib-es/common-logic/transaction/craftTransaction.d.ts +4 -3
  113. package/lib-es/common-logic/transaction/craftTransaction.d.ts.map +1 -1
  114. package/lib-es/common-logic/transaction/craftTransaction.js +10 -12
  115. package/lib-es/common-logic/transaction/craftTransaction.js.map +1 -1
  116. package/lib-es/network/gateway.d.ts +194 -3
  117. package/lib-es/network/gateway.d.ts.map +1 -1
  118. package/lib-es/network/gateway.integ.test.js +122 -12
  119. package/lib-es/network/gateway.integ.test.js.map +1 -1
  120. package/lib-es/network/gateway.js +90 -17
  121. package/lib-es/network/gateway.js.map +1 -1
  122. package/lib-es/network/node.d.ts +2 -2
  123. package/lib-es/network/node.d.ts.map +1 -1
  124. package/lib-es/network/node.js.map +1 -1
  125. package/lib-es/network/types.d.ts +1 -1
  126. package/lib-es/network/types.d.ts.map +1 -1
  127. package/lib-es/signer/getAddress.d.ts.map +1 -1
  128. package/lib-es/signer/getAddress.js +2 -2
  129. package/lib-es/signer/getAddress.js.map +1 -1
  130. package/lib-es/test/cantonTestUtils.d.ts +33 -0
  131. package/lib-es/test/cantonTestUtils.d.ts.map +1 -0
  132. package/lib-es/test/cantonTestUtils.js +151 -0
  133. package/lib-es/test/cantonTestUtils.js.map +1 -0
  134. package/lib-es/types/bridge.d.ts +7 -1
  135. package/lib-es/types/bridge.d.ts.map +1 -1
  136. package/lib-es/types/index.d.ts +1 -10
  137. package/lib-es/types/index.d.ts.map +1 -1
  138. package/lib-es/types/index.js +1 -0
  139. package/lib-es/types/index.js.map +1 -1
  140. package/lib-es/types/onboard.d.ts +55 -0
  141. package/lib-es/types/onboard.d.ts.map +1 -0
  142. package/lib-es/types/onboard.js +19 -0
  143. package/lib-es/types/onboard.js.map +1 -0
  144. package/package.json +6 -6
  145. package/src/api/getBalance.integ.test.ts +1 -2
  146. package/src/api/index.ts +33 -25
  147. package/src/bridge/createTransaction.test.ts +1 -1
  148. package/src/bridge/index.ts +14 -4
  149. package/src/bridge/onboard.integ.test.ts +219 -0
  150. package/src/bridge/onboard.ts +220 -0
  151. package/src/bridge/prepareTransaction.ts +6 -15
  152. package/src/bridge/signOperation.ts +3 -2
  153. package/src/bridge/sync.integ.test.ts +180 -0
  154. package/src/bridge/sync.ts +57 -49
  155. package/src/bridge/updateTransaction.ts +0 -5
  156. package/src/common-logic/history/listOperations.ts +20 -31
  157. package/src/common-logic/transaction/craftTransaction.ts +13 -17
  158. package/src/network/gateway.integ.test.ts +156 -17
  159. package/src/network/gateway.ts +333 -26
  160. package/src/network/node.ts +3 -3
  161. package/src/network/types.ts +1 -1
  162. package/src/signer/getAddress.ts +3 -5
  163. package/src/test/cantonTestUtils.ts +181 -0
  164. package/src/types/bridge.ts +20 -0
  165. package/src/types/index.ts +1 -11
  166. package/src/types/onboard.ts +65 -0
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/coin-canton@0.4.0 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-canton
2
+ > @ledgerhq/coin-canton@0.5.0-nightly.1 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-canton
3
3
  > tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
4
4
 
@@ -14,11 +14,19 @@
14
14
  "**/*.mock.ts",
15
15
  "**/*.test.{js,jsx,ts,tsx}"
16
16
  ],
17
- "ignoreUnresolved": ["jest-get-type", "jest-matcher-utils", "jest-message-util"],
17
+ "ignoreUnresolved": [
18
+ "jest-get-type",
19
+ "jest-matcher-utils",
20
+ "jest-message-util"
21
+ ],
18
22
  "ignoreUnimported": [
23
+ "src/network/gateway.ts",
24
+ "src/network/indexer.ts",
19
25
  "src/network/mock-network.ts",
20
26
  "src/test/bot-specs.ts",
21
- "src/network/gateway.ts"
27
+ "src/test/cantonTestUtils.ts"
22
28
  ],
23
- "ignoreUnused": ["@ledgerhq/devices"]
24
- }
29
+ "ignoreUnused": [
30
+ "@ledgerhq/devices"
31
+ ]
32
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # @ledgerhq/coin-canton
2
2
 
3
+ ## 0.5.0-nightly.2
4
+
5
+ ### Minor Changes
6
+
7
+ - [#11722](https://github.com/LedgerHQ/ledger-live/pull/11722) [`a87922d`](https://github.com/LedgerHQ/ledger-live/commit/a87922dc99e4f2e4b40a46fd52ad08a71012fe94) Thanks [@hedi-edelbloute](https://github.com/hedi-edelbloute)! - Add canton onboard ui flow
8
+
9
+ ### Patch Changes
10
+
11
+ - [#11717](https://github.com/LedgerHQ/ledger-live/pull/11717) [`aaa16b7`](https://github.com/LedgerHQ/ledger-live/commit/aaa16b718454dca51d59bb138ab1a638dc4b8243) Thanks [@ishaba](https://github.com/ishaba)! - add canton api key
12
+
13
+ - [#11596](https://github.com/LedgerHQ/ledger-live/pull/11596) [`075cdb4`](https://github.com/LedgerHQ/ledger-live/commit/075cdb4975a584e2b6f715fc6db4d364c0997848) Thanks [@jonezque](https://github.com/jonezque)! - feat: craft transaction for canton alpaca
14
+
15
+ - [#11729](https://github.com/LedgerHQ/ledger-live/pull/11729) [`4a0b0c6`](https://github.com/LedgerHQ/ledger-live/commit/4a0b0c629e147f680cac0d0f3854834dd3dbb0bd) Thanks [@hedi-edelbloute](https://github.com/hedi-edelbloute)! - add locked balance calculation and update sync integration tests
16
+
17
+ - Updated dependencies [[`aaa16b7`](https://github.com/LedgerHQ/ledger-live/commit/aaa16b718454dca51d59bb138ab1a638dc4b8243), [`0108eaf`](https://github.com/LedgerHQ/ledger-live/commit/0108eafb64e36ce68f44e03cc3f66ccdb5ee5a92), [`a87922d`](https://github.com/LedgerHQ/ledger-live/commit/a87922dc99e4f2e4b40a46fd52ad08a71012fe94)]:
18
+ - @ledgerhq/live-env@2.16.0-nightly.1
19
+ - @ledgerhq/cryptoassets@13.28.0-nightly.1
20
+ - @ledgerhq/types-live@6.83.1-nightly.0
21
+ - @ledgerhq/coin-framework@6.4.0-nightly.2
22
+ - @ledgerhq/live-network@2.0.17-nightly.1
23
+
24
+ ## 0.5.0-nightly.1
25
+
26
+ ### Minor Changes
27
+
28
+ - [#11699](https://github.com/LedgerHQ/ledger-live/pull/11699) [`2b896f9`](https://github.com/LedgerHQ/ledger-live/commit/2b896f94d6fc53ef965ed567489ad96d913466d4) Thanks [@jnicoulaud-ledger](https://github.com/jnicoulaud-ledger)! - feat(BACK-9645): add support for returning details in AlpacaApi.craftTransaction
29
+
30
+ ### Patch Changes
31
+
32
+ - Updated dependencies [[`2b896f9`](https://github.com/LedgerHQ/ledger-live/commit/2b896f94d6fc53ef965ed567489ad96d913466d4), [`338d979`](https://github.com/LedgerHQ/ledger-live/commit/338d979bae349b185c52b1d8c9f6718a3d142526), [`b27c96c`](https://github.com/LedgerHQ/ledger-live/commit/b27c96ccbcefb1982a40688a8385209eac99165a)]:
33
+ - @ledgerhq/coin-framework@6.4.0-nightly.1
34
+ - @ledgerhq/cryptoassets@13.28.0-nightly.0
35
+ - @ledgerhq/live-env@2.16.0-nightly.0
36
+ - @ledgerhq/live-network@2.0.17-nightly.0
37
+
3
38
  ## 0.4.1-nightly.0
4
39
 
5
40
  ### Patch Changes
@@ -9,7 +9,7 @@ describe("devnet", () => {
9
9
  networkType: "devnet",
10
10
  gatewayUrl: "https://canton-gateway.api.live.ledger-test.com",
11
11
  useGateway: true,
12
- nativeInstrumentId: "6e9fc50fb94e56751b49f09ba2dc84da53a9d7cff08115ebb4f6b7a12d0c990c:Splice.Amulet:Amulet",
12
+ nativeInstrumentId: "Amulet",
13
13
  });
14
14
  });
15
15
  describe("getBalance", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"getBalance.integ.test.js","sourceRoot":"","sources":["../../src/api/getBalance.integ.test.ts"],"names":[],"mappings":";;AACA,wBAA8B;AAE9B,IAAI,GAAc,CAAC;AAEnB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,GAAG,IAAA,YAAS,EAAC;YACd,OAAO,EAAE,2DAA2D;YACpE,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,iDAAiD;YAC7D,UAAU,EAAE,IAAI;YAChB,kBAAkB,EAChB,uFAAuF;SAC1F,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAClC,8FAA8F,CAC/F,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACnE,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"getBalance.integ.test.js","sourceRoot":"","sources":["../../src/api/getBalance.integ.test.ts"],"names":[],"mappings":";;AACA,wBAA8B;AAE9B,IAAI,GAAc,CAAC;AAEnB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,GAAG,IAAA,YAAS,EAAC;YACd,OAAO,EAAE,2DAA2D;YACpE,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,iDAAiD;YAC7D,UAAU,EAAE,IAAI;YAChB,kBAAkB,EAAE,QAAQ;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAClC,8FAA8F,CAC/F,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACnE,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EASV,MAAM,oCAAoC,CAAC;AAC5C,OAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAa1D,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAwBzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAUV,MAAM,oCAAoC,CAAC;AAC5C,OAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAY1D,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAwBzD"}
package/lib/api/index.js CHANGED
@@ -12,8 +12,8 @@ function createApi(config) {
12
12
  return {
13
13
  broadcast: common_logic_1.broadcast,
14
14
  combine: common_logic_1.combine,
15
- craftTransaction: craft,
16
- estimateFees: estimate,
15
+ craftTransaction: craft(config.nativeInstrumentId ?? ""),
16
+ estimateFees: estimate(config.nativeInstrumentId ?? ""),
17
17
  getBalance: common_logic_1.getBalance,
18
18
  lastBlock: common_logic_1.lastBlock,
19
19
  listOperations: common_logic_1.listOperations,
@@ -31,20 +31,23 @@ function createApi(config) {
31
31
  },
32
32
  };
33
33
  }
34
- async function craft(transactionIntent) {
35
- const nextSequenceNumber = await (0, common_logic_1.getNextValidSequence)(transactionIntent.sender);
36
- const tx = await (0, common_logic_1.craftTransaction)({ address: transactionIntent.sender, nextSequenceNumber }, {
34
+ const craft = (tokenId) => async (transactionIntent) => {
35
+ const tx = await (0, common_logic_1.craftTransaction)({ address: transactionIntent.sender }, {
37
36
  recipient: transactionIntent.recipient,
38
37
  amount: new bignumber_js_1.default(transactionIntent.amount.toString()),
38
+ tokenId,
39
+ expireInSeconds: 24 * 60 * 60,
39
40
  });
40
- return tx.serializedTransaction;
41
- }
42
- async function estimate(transactionIntent) {
41
+ return { transaction: tx.serializedTransaction };
42
+ };
43
+ const estimate = (tokenId) => async (transactionIntent) => {
43
44
  const { serializedTransaction } = await (0, common_logic_1.craftTransaction)({ address: transactionIntent.sender }, {
44
45
  recipient: transactionIntent.recipient,
45
46
  amount: new bignumber_js_1.default(transactionIntent.amount.toString()),
47
+ tokenId,
48
+ expireInSeconds: 24 * 60 * 60,
46
49
  });
47
50
  const value = await (0, common_logic_1.estimateFees)(serializedTransaction);
48
51
  return { value };
49
- }
52
+ };
50
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;AAwBA,8BAwBC;AArCD,uDAA0D;AAC1D,kDASyB;AACzB,gEAAqC;AAErC,SAAgB,SAAS,CAAC,MAAoB;IAC5C,gBAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS,EAAT,wBAAS;QACT,OAAO,EAAP,sBAAO;QACP,gBAAgB,EAAE,KAAK;QACvB,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAV,yBAAU;QACV,SAAS,EAAT,wBAAS;QACT,cAAc,EAAd,6BAAc;QACd,QAAQ,CAAC,OAAO;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,YAAY,CAAC,OAAe;YAC1B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,SAAS,CAAC,QAAgB,EAAE,OAAgB;YAC1C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,UAAU,CAAC,QAAgB,EAAE,OAAgB;YAC3C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,iBAAoC;IACvD,MAAM,kBAAkB,GAAG,MAAM,IAAA,mCAAoB,EAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,GAAG,MAAM,IAAA,+BAAgB,EAC/B,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EACzD;QACE,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,IAAI,sBAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC3D,CACF,CAAC;IACF,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,iBAAoC;IAC1D,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,IAAA,+BAAgB,EACtD,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,EACrC;QACE,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,IAAI,sBAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC3D,CACF,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAY,EAAC,qBAAqB,CAAC,CAAC;IAExD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;AAwBA,8BAwBC;AApCD,uDAA0D;AAC1D,kDAQyB;AACzB,gEAAqC;AAErC,SAAgB,SAAS,CAAC,MAAoB;IAC5C,gBAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,SAAS,EAAT,wBAAS;QACT,OAAO,EAAP,sBAAO;QACP,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACxD,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACvD,UAAU,EAAV,yBAAU;QACV,SAAS,EAAT,wBAAS;QACT,cAAc,EAAd,6BAAc;QACd,QAAQ,CAAC,OAAO;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,YAAY,CAAC,OAAe;YAC1B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,SAAS,CAAC,QAAgB,EAAE,OAAgB;YAC1C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,UAAU,CAAC,QAAgB,EAAE,OAAgB;YAC3C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GACT,CAAC,OAAe,EAAE,EAAE,CACpB,KAAK,EAAE,iBAAoC,EAA+B,EAAE;IAC1E,MAAM,EAAE,GAAG,MAAM,IAAA,+BAAgB,EAC/B,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,EACrC;QACE,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,IAAI,sBAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1D,OAAO;QACP,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;KAC9B,CACF,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC;AACnD,CAAC,CAAC;AAEJ,MAAM,QAAQ,GACZ,CAAC,OAAe,EAAE,EAAE,CACpB,KAAK,EAAE,iBAAoC,EAA0B,EAAE;IACrE,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,IAAA,+BAAgB,EACtD,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,EACrC;QACE,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,MAAM,EAAE,IAAI,sBAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1D,OAAO;QACP,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;KAC9B,CACF,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAY,EAAC,qBAAqB,CAAC,CAAC;IAExD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC"}
@@ -5,7 +5,7 @@ describe("createTransaction", () => {
5
5
  it("should create a 0 amount transaction", () => {
6
6
  expect((0, createTransaction_1.createTransaction)({}).amount.toNumber()).toEqual(0);
7
7
  });
8
- it("should create a transaction with boilerplate family", () => {
8
+ it("should create a transaction with canton family", () => {
9
9
  expect((0, createTransaction_1.createTransaction)({}).family).toEqual("canton");
10
10
  });
11
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"createTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/createTransaction.test.ts"],"names":[],"mappings":";;AACA,2DAAwD;AAExD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,IAAA,qCAAiB,EAAC,EAA0B,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,IAAA,qCAAiB,EAAC,EAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"createTransaction.test.js","sourceRoot":"","sources":["../../src/bridge/createTransaction.test.ts"],"names":[],"mappings":";;AACA,2DAAwD;AAExD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,IAAA,qCAAiB,EAAC,EAA0B,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,IAAA,qCAAiB,EAAC,EAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { CoinConfig } from "@ledgerhq/coin-framework/config";
2
2
  import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
- import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live";
3
+ import type { AccountBridge } from "@ledgerhq/types-live";
4
4
  import { type CantonCoinConfig } from "../config";
5
- import { CantonSigner } from "../types";
5
+ import { CantonCurrencyBridge, CantonSigner } from "../types";
6
6
  import type { Transaction } from "../types";
7
7
  export declare function createBridges(signerContext: SignerContext<CantonSigner>, coinConfig: CoinConfig<CantonCoinConfig>): {
8
- currencyBridge: CurrencyBridge;
8
+ currencyBridge: CantonCurrencyBridge;
9
9
  accountBridge: AccountBridge<Transaction>;
10
10
  };
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAyB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAU5C,wBAAgB,aAAa,CAC3B,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAC1C,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;;;EAoCzC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAyB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAW5C,wBAAgB,aAAa,CAC3B,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAC1C,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;;;EA6CzC"}
@@ -16,15 +16,23 @@ const prepareTransaction_1 = require("./prepareTransaction");
16
16
  const signOperation_1 = require("./signOperation");
17
17
  const sync_1 = require("./sync");
18
18
  const updateTransaction_1 = require("./updateTransaction");
19
+ const onboard_1 = require("./onboard");
19
20
  function createBridges(signerContext, coinConfig) {
20
21
  config_1.default.setCoinConfig(coinConfig);
21
22
  const getAddress = (0, signer_1.default)(signerContext);
22
23
  const receive = (0, jsHelpers_1.makeAccountBridgeReceive)((0, getAddressWrapper_1.default)(getAddress));
23
- const scanAccounts = (0, jsHelpers_1.makeScanAccounts)({ getAccountShape: sync_1.getAccountShape, getAddressFn: getAddress });
24
+ const scanAccounts = (0, jsHelpers_1.makeScanAccounts)({
25
+ getAccountShape: sync_1.getAccountShape,
26
+ getAddressFn: getAddress,
27
+ });
28
+ const onboardAccount = (0, onboard_1.buildOnboardAccount)(signerContext);
29
+ const authorizePreapproval = (0, onboard_1.buildAuthorizePreapproval)(signerContext);
24
30
  const currencyBridge = {
25
31
  preload: () => Promise.resolve({}),
26
32
  hydrate: () => { },
27
33
  scanAccounts,
34
+ onboardAccount,
35
+ authorizePreapproval,
28
36
  };
29
37
  const signOperation = (0, signOperation_1.buildSignOperation)(signerContext);
30
38
  const sync = (0, jsHelpers_1.makeSync)({ getAccountShape: sync_1.getAccountShape });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":";;;;;AAuBA,sCAsCC;AA7DD,0GAAkF;AAClF,yEAKmD;AAInD,uDAAoE;AACpE,uDAAiC;AAGjC,2CAAwC;AACxC,2DAAwD;AACxD,iEAA8D;AAC9D,iEAA8D;AAC9D,6DAA0D;AAC1D,mDAAqD;AACrD,iCAAyC;AACzC,2DAAwD;AAExD,SAAgB,aAAa,CAC3B,aAA0C,EAC1C,UAAwC;IAExC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,IAAA,gBAAQ,EAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAA,oCAAwB,EAAC,IAAA,2BAAiB,EAAC,UAAU,CAAC,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,IAAA,4BAAgB,EAAC,EAAE,eAAe,EAAf,sBAAe,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IACrF,MAAM,cAAc,GAAmB;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,YAAY;KACb,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,kCAAkB,EAAC,aAAa,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC,EAAE,eAAe,EAAf,sBAAe,EAAE,CAAC,CAAC;IAC3C,8BAA8B;IAC9B,MAAM,aAAa,GAA+B;QAChD,SAAS,EAAT,qBAAS;QACT,iBAAiB,EAAjB,qCAAiB;QACjB,iBAAiB,EAAjB,qCAAiB;QACjB,sEAAsE;QACtE,2DAA2D;QAC3D,kBAAkB,EAAlB,uCAAkB;QAClB,oBAAoB,EAApB,2CAAoB;QACpB,oBAAoB,EAApB,2CAAoB;QACpB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,8BAA8B,EAA9B,0CAA8B;KAC/B,CAAC;IAEF,OAAO;QACL,cAAc;QACd,aAAa;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":";;;;;AAwBA,sCA+CC;AAvED,0GAAkF;AAClF,yEAKmD;AAInD,uDAAoE;AACpE,uDAAiC;AAGjC,2CAAwC;AACxC,2DAAwD;AACxD,iEAA8D;AAC9D,iEAA8D;AAC9D,6DAA0D;AAC1D,mDAAqD;AACrD,iCAAyC;AACzC,2DAAwD;AACxD,uCAA2E;AAE3E,SAAgB,aAAa,CAC3B,aAA0C,EAC1C,UAAwC;IAExC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,IAAA,gBAAQ,EAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAA,oCAAwB,EAAC,IAAA,2BAAiB,EAAC,UAAU,CAAC,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,IAAA,4BAAgB,EAAC;QACpC,eAAe,EAAE,sBAAe;QAChC,YAAY,EAAE,UAAU;KACzB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAA,6BAAmB,EAAC,aAAa,CAAC,CAAC;IAC1D,MAAM,oBAAoB,GAAG,IAAA,mCAAyB,EAAC,aAAa,CAAC,CAAC;IAEtE,MAAM,cAAc,GAAyB;QAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,YAAY;QACZ,cAAc;QACd,oBAAoB;KACrB,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,kCAAkB,EAAC,aAAa,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC,EAAE,eAAe,EAAf,sBAAe,EAAE,CAAC,CAAC;IAC3C,8BAA8B;IAC9B,MAAM,aAAa,GAA+B;QAChD,SAAS,EAAT,qBAAS;QACT,iBAAiB,EAAjB,qCAAiB;QACjB,iBAAiB,EAAjB,qCAAiB;QACjB,sEAAsE;QACtE,2DAA2D;QAC3D,kBAAkB,EAAlB,uCAAkB;QAClB,oBAAoB,EAApB,2CAAoB;QACpB,oBAAoB,EAApB,2CAAoB;QACpB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,8BAA8B,EAA9B,0CAA8B;KAC/B,CAAC;IAEF,OAAO;QACL,cAAc;QACd,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Observable } from "rxjs";
2
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
3
+ import { CantonSigner } from "../types/signer";
4
+ import { CantonOnboardProgress, CantonOnboardResult, CantonPreApprovalProgress, CantonPreApprovalResult } from "../types/onboard";
5
+ export declare const isAccountOnboarded: (publicKey: string) => Promise<false | {
6
+ party_id: string;
7
+ }>;
8
+ export declare const buildOnboardAccount: (signerContext: SignerContext<CantonSigner>) => (deviceId: string, derivationPath: string) => Observable<CantonOnboardProgress | CantonOnboardResult>;
9
+ export declare const buildAuthorizePreapproval: (signerContext: SignerContext<CantonSigner>) => (deviceId: string, derivationPath: string, partyId: string) => Observable<CantonPreApprovalProgress | CantonPreApprovalResult>;
10
+ //# sourceMappingURL=onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/bridge/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,OAAO,EAGL,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EAExB,MAAM,kBAAkB,CAAC;AAa1B,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,KAChB,OAAO,CAAC,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAatC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC7B,eAAe,aAAa,CAAC,YAAY,CAAC,MAEzC,UAAU,MAAM,EAChB,gBAAgB,MAAM,KACrB,UAAU,CAAC,qBAAqB,GAAG,mBAAmB,CAmErD,CAAC;AAEP,eAAO,MAAM,yBAAyB,GACnC,eAAe,aAAa,CAAC,YAAY,CAAC,MAEzC,UAAU,MAAM,EAChB,gBAAgB,MAAM,EACtB,SAAS,MAAM,KACd,UAAU,CAAC,yBAAyB,GAAG,uBAAuB,CAoF7D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=onboard.integ.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.integ.test.d.ts","sourceRoot":"","sources":["../../src/bridge/onboard.integ.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,156 @@
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
+ const rxjs_1 = require("rxjs");
7
+ const cantonTestUtils_1 = require("../test/cantonTestUtils");
8
+ const onboard_1 = require("./onboard");
9
+ const onboard_2 = require("../types/onboard");
10
+ const config_1 = __importDefault(require("../config"));
11
+ describe("onboard (devnet)", () => {
12
+ const mockDeviceId = "test-device-id";
13
+ const mockDerivationPath = "44'/6767'/0'/0'/0'";
14
+ let onboardedAccount = null;
15
+ beforeAll(() => {
16
+ config_1.default.setCoinConfig(() => ({
17
+ gatewayUrl: "https://canton-gateway.api.live.ledger-test.com",
18
+ useGateway: true,
19
+ networkType: "devnet",
20
+ status: {
21
+ type: "active",
22
+ },
23
+ }));
24
+ });
25
+ const getOnboardedAccount = () => {
26
+ if (!onboardedAccount) {
27
+ throw new Error("onboardedAccount is null. Ensure isAccountOnboarded test runs first to set it.");
28
+ }
29
+ return onboardedAccount;
30
+ };
31
+ describe("isAccountOnboarded", () => {
32
+ it("should return true for onboarded account", async () => {
33
+ // GIVEN
34
+ const keyPair = (0, cantonTestUtils_1.generateMockKeyPair)();
35
+ const mockSigner = (0, cantonTestUtils_1.createMockSigner)(keyPair);
36
+ const mockSignerContext = jest.fn().mockImplementation((deviceId, callback) => {
37
+ return callback(mockSigner);
38
+ });
39
+ const onboardObservable = (0, onboard_1.buildOnboardAccount)(mockSignerContext);
40
+ const onboardValues = await (0, rxjs_1.firstValueFrom)(onboardObservable(mockDeviceId, mockDerivationPath).pipe((0, rxjs_1.toArray)()));
41
+ const onboardResult = onboardValues.find((value) => "partyId" in value);
42
+ if (!onboardResult) {
43
+ throw new Error("Failed to onboard account for shared test data");
44
+ }
45
+ // Save onboarded account for all tests that need a valid party ID
46
+ onboardedAccount = {
47
+ keyPair,
48
+ mockSigner,
49
+ mockSignerContext,
50
+ onboardResult,
51
+ };
52
+ // WHEN
53
+ const result = await (0, onboard_1.isAccountOnboarded)(keyPair.publicKeyHex);
54
+ // THEN
55
+ expect(result).not.toBe(false);
56
+ if (typeof result === "object") {
57
+ expect(result.party_id).toBeDefined();
58
+ expect(result.party_id).toBe(onboardResult.partyId);
59
+ }
60
+ }, 30000);
61
+ it("should return false for non-onboarded account with fresh keypair", async () => {
62
+ // GIVEN
63
+ const keyPair = (0, cantonTestUtils_1.generateMockKeyPair)();
64
+ // WHEN
65
+ const result = await (0, onboard_1.isAccountOnboarded)(keyPair.publicKeyHex);
66
+ // THEN
67
+ expect(result).toBe(false);
68
+ }, 15000);
69
+ it("should handle errors gracefully when checking non-existent party", async () => {
70
+ // GIVEN
71
+ const keyPair = (0, cantonTestUtils_1.generateMockKeyPair)();
72
+ // WHEN
73
+ const result = await (0, onboard_1.isAccountOnboarded)(keyPair.publicKeyHex);
74
+ // THEN
75
+ expect(result).toBe(false);
76
+ }, 15000);
77
+ });
78
+ describe("buildOnboardAccount", () => {
79
+ it("should complete full onboarding flow with fresh keypair", async () => {
80
+ // GIVEN
81
+ const keyPair = (0, cantonTestUtils_1.generateMockKeyPair)();
82
+ const mockSigner = (0, cantonTestUtils_1.createMockSigner)(keyPair);
83
+ const mockSignerContext = jest.fn().mockImplementation((deviceId, callback) => {
84
+ return callback(mockSigner);
85
+ });
86
+ const onboardObservable = (0, onboard_1.buildOnboardAccount)(mockSignerContext);
87
+ // WHEN
88
+ const allValues = await (0, rxjs_1.firstValueFrom)(onboardObservable(mockDeviceId, mockDerivationPath).pipe((0, rxjs_1.toArray)()));
89
+ const progressValues = allValues.filter((value) => "status" in value && !("partyId" in value));
90
+ const resultValues = allValues.filter((value) => "partyId" in value);
91
+ // THEN
92
+ // Check expected status progression
93
+ expect(progressValues.some(p => p.status === onboard_2.OnboardStatus.INIT)).toBe(true);
94
+ expect(progressValues.some(p => p.status === onboard_2.OnboardStatus.PREPARE)).toBe(true);
95
+ expect(progressValues.some(p => p.status === onboard_2.OnboardStatus.SIGN)).toBe(true);
96
+ expect(progressValues.some(p => p.status === onboard_2.OnboardStatus.SUBMIT)).toBe(true);
97
+ // Check final result
98
+ expect(resultValues.length).toBeGreaterThan(0);
99
+ const finalResult = resultValues[resultValues.length - 1];
100
+ expect(finalResult.partyId).toBeDefined();
101
+ expect(typeof finalResult.partyId).toBe("string");
102
+ expect(mockSignerContext).toHaveBeenCalled();
103
+ }, 30000);
104
+ it("should complete full onboarding flow with already onboarded account", async () => {
105
+ // GIVEN
106
+ const { keyPair, mockSignerContext, onboardResult: firstResult } = getOnboardedAccount();
107
+ const secondOnboardObservable = (0, onboard_1.buildOnboardAccount)(mockSignerContext);
108
+ // WHEN
109
+ const secondOnboardValues = await (0, rxjs_1.firstValueFrom)(secondOnboardObservable(mockDeviceId, mockDerivationPath).pipe((0, rxjs_1.toArray)()));
110
+ const secondResult = secondOnboardValues.find((value) => "partyId" in value);
111
+ // THEN
112
+ expect(secondResult).toBeDefined();
113
+ expect(secondResult.partyId).toBe(firstResult.partyId);
114
+ expect(typeof secondResult.partyId).toBe("string");
115
+ }, 30000);
116
+ });
117
+ describe("buildAuthorizePreapproval", () => {
118
+ it("should complete preapproval flow for onboarded account", async () => {
119
+ // GIVEN
120
+ const { mockSignerContext, onboardResult } = getOnboardedAccount();
121
+ const preapprovalObservable = (0, onboard_1.buildAuthorizePreapproval)(mockSignerContext);
122
+ // WHEN
123
+ const preapprovalValues = await (0, rxjs_1.firstValueFrom)(preapprovalObservable(mockDeviceId, mockDerivationPath, onboardResult.partyId).pipe((0, rxjs_1.toArray)()));
124
+ const progressValues = preapprovalValues.filter((value) => "status" in value && !("isApproved" in value));
125
+ const resultValues = preapprovalValues.filter((value) => "isApproved" in value);
126
+ // THEN
127
+ // Check expected status progression
128
+ expect(progressValues.some(p => p.status === onboard_2.PreApprovalStatus.PREPARE)).toBe(true);
129
+ expect(progressValues.some(p => p.status === onboard_2.PreApprovalStatus.SIGN)).toBe(true);
130
+ expect(progressValues.some(p => p.status === onboard_2.PreApprovalStatus.SUBMIT)).toBe(true);
131
+ // Check final result (should be approved)
132
+ expect(resultValues.length).toBeGreaterThan(0);
133
+ const finalResult = resultValues[resultValues.length - 1];
134
+ expect(finalResult.isApproved).toBe(true);
135
+ expect(typeof finalResult.isApproved).toBe("boolean");
136
+ }, 30000);
137
+ it("should handle invalid party ID gracefully", async () => {
138
+ // GIVEN
139
+ const keyPair = (0, cantonTestUtils_1.generateMockKeyPair)();
140
+ const mockSigner = (0, cantonTestUtils_1.createMockSigner)(keyPair);
141
+ const mockSignerContext = jest.fn().mockImplementation((deviceId, callback) => {
142
+ return callback(mockSigner);
143
+ });
144
+ const preapprovalObservable = (0, onboard_1.buildAuthorizePreapproval)(mockSignerContext);
145
+ // WHEN & THEN
146
+ try {
147
+ await (0, rxjs_1.firstValueFrom)(preapprovalObservable(mockDeviceId, mockDerivationPath, "invalid-party-id-123"));
148
+ expect(true).toBe(true);
149
+ }
150
+ catch (error) {
151
+ expect(error).toBeDefined();
152
+ }
153
+ }, 30000);
154
+ });
155
+ });
156
+ //# sourceMappingURL=onboard.integ.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.integ.test.js","sourceRoot":"","sources":["../../src/bridge/onboard.integ.test.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+C;AAC/C,6DAAgF;AAChF,uCAA+F;AAC/F,8CAO0B;AAC1B,uDAAmC;AAEnC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,YAAY,GAAG,gBAAgB,CAAC;IACtC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;IAEhD,IAAI,gBAAgB,GAKT,IAAI,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACb,gBAAU,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9B,UAAU,EAAE,iDAAiD;YAC7D,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,QAAQ;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;aACf;SACF,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;QACJ,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAA,qCAAmB,GAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAA,kCAAgB,EAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBAC5E,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,MAAM,iBAAiB,GAAG,IAAA,6BAAmB,EAAC,iBAAiB,CAAC,CAAC;YACjE,MAAM,aAAa,GAAG,MAAM,IAAA,qBAAc,EACxC,iBAAiB,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAA,cAAO,GAAE,CAAC,CACpE,CAAC;YACF,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CACtC,CAAC,KAAK,EAAgC,EAAE,CAAC,SAAS,IAAI,KAAK,CAC5D,CAAC;YAEF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,kEAAkE;YAClE,gBAAgB,GAAG;gBACjB,OAAO;gBACP,UAAU;gBACV,iBAAiB;gBACjB,aAAa;aACd,CAAC;YAEF,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAkB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE9D,OAAO;YACP,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;gBACtC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAc,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,QAAQ;YACR,MAAM,OAAO,GAAG,IAAA,qCAAmB,GAAE,CAAC;YAEtC,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAkB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE9D,OAAO;YACP,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,QAAQ;YACR,MAAM,OAAO,GAAG,IAAA,qCAAmB,GAAE,CAAC;YAEtC,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAkB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE9D,OAAO;YACP,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,QAAQ;YACR,MAAM,OAAO,GAAG,IAAA,qCAAmB,GAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAA,kCAAgB,EAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBAC5E,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAG,IAAA,6BAAmB,EAAC,iBAAiB,CAAC,CAAC;YAEjE,OAAO;YACP,MAAM,SAAS,GAAG,MAAM,IAAA,qBAAc,EACpC,iBAAiB,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAA,cAAO,GAAE,CAAC,CACpE,CAAC;YACF,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CACrC,CAAC,KAAK,EAAkC,EAAE,CAAC,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,CACtF,CAAC;YACF,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CACnC,CAAC,KAAK,EAAgC,EAAE,CAAC,SAAS,IAAI,KAAK,CAC5D,CAAC;YAEF,OAAO;YACP,oCAAoC;YACpC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE/E,qBAAqB;YACrB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC/C,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,QAAQ;YACR,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAAC;YACzF,MAAM,uBAAuB,GAAG,IAAA,6BAAmB,EAAC,iBAAiB,CAAC,CAAC;YAEvE,OAAO;YACP,MAAM,mBAAmB,GAAG,MAAM,IAAA,qBAAc,EAC9C,uBAAuB,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAA,cAAO,GAAE,CAAC,CAC1E,CAAC;YACF,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAC3C,CAAC,KAAK,EAAgC,EAAE,CAAC,SAAS,IAAI,KAAK,CAC5D,CAAC;YAEF,OAAO;YACP,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,YAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,CAAC,OAAO,YAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,QAAQ;YACR,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;YACnE,MAAM,qBAAqB,GAAG,IAAA,mCAAyB,EAAC,iBAAiB,CAAC,CAAC;YAE3E,OAAO;YACP,MAAM,iBAAiB,GAAG,MAAM,IAAA,qBAAc,EAC5C,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CACjF,IAAA,cAAO,GAAE,CACV,CACF,CAAC;YAEF,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAC7C,CAAC,KAAK,EAAsC,EAAE,CAC5C,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,CAChD,CAAC;YACF,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAC3C,CAAC,KAAK,EAAoC,EAAE,CAAC,YAAY,IAAI,KAAK,CACnE,CAAC;YAEF,OAAO;YACP,oCAAoC;YACpC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,2BAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,2BAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjF,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,2BAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnF,0CAA0C;YAC1C,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAA,qCAAmB,GAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAA,kCAAgB,EAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBAC5E,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,MAAM,qBAAqB,GAAG,IAAA,mCAAyB,EAAC,iBAAiB,CAAC,CAAC;YAE3E,cAAc;YACd,IAAI,CAAC;gBACH,MAAM,IAAA,qBAAc,EAClB,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,CAAC,CAChF,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildAuthorizePreapproval = exports.buildOnboardAccount = exports.isAccountOnboarded = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const gateway_1 = require("../network/gateway");
6
+ const onboard_1 = require("../types/onboard");
7
+ async function getKeypair(signerContext, deviceId, derivationPath) {
8
+ return signerContext(deviceId, async (signer) => {
9
+ const { publicKey, address } = await signer.getAddress(derivationPath);
10
+ return { signer, publicKey: publicKey.replace("0x", ""), address };
11
+ });
12
+ }
13
+ const isAccountOnboarded = async (publicKey) => {
14
+ try {
15
+ const { party_id } = await (0, gateway_1.getPartyByPubKey)(publicKey);
16
+ if (party_id) {
17
+ return { party_id };
18
+ }
19
+ else {
20
+ return false;
21
+ }
22
+ }
23
+ catch (err) {
24
+ log("[isAccountOnboarded] Error checking party status (likely not onboarded):", err);
25
+ return false;
26
+ }
27
+ };
28
+ exports.isAccountOnboarded = isAccountOnboarded;
29
+ const buildOnboardAccount = (signerContext) => (deviceId, derivationPath) => new rxjs_1.Observable(observer => {
30
+ async function main() {
31
+ observer.next({
32
+ status: onboard_1.OnboardStatus.INIT,
33
+ });
34
+ const keypair = await getKeypair(signerContext, deviceId, derivationPath);
35
+ observer.next({
36
+ status: onboard_1.OnboardStatus.PREPARE,
37
+ });
38
+ const isOnboardedResult = await (0, exports.isAccountOnboarded)(keypair.publicKey);
39
+ if (isOnboardedResult && isOnboardedResult.party_id) {
40
+ observer.next({
41
+ partyId: isOnboardedResult.party_id,
42
+ });
43
+ observer.complete();
44
+ return;
45
+ }
46
+ const preparedTransaction = await (0, gateway_1.prepareOnboarding)(keypair.publicKey, "ed25519");
47
+ observer.next({
48
+ status: onboard_1.OnboardStatus.SIGN,
49
+ });
50
+ const signature = await signerContext(deviceId, signer => signer.signTransaction(derivationPath, preparedTransaction.transactions.combined_hash));
51
+ observer.next({
52
+ status: onboard_1.OnboardStatus.SUBMIT,
53
+ });
54
+ const result = await (0, gateway_1.submitOnboarding)({ public_key: keypair.publicKey, public_key_type: "ed25519" }, preparedTransaction, signature).catch(err => {
55
+ if (err.type === "PARTY_ALREADY_EXISTS") {
56
+ observer.next({
57
+ partyId: preparedTransaction.party_id,
58
+ });
59
+ return observer.complete();
60
+ }
61
+ throw err;
62
+ });
63
+ observer.next({
64
+ status: onboard_1.OnboardStatus.SUCCESS,
65
+ });
66
+ observer.next({
67
+ partyId: result?.party?.party_id || "unknown",
68
+ });
69
+ observer.complete();
70
+ }
71
+ main().then(() => observer.complete(), error => {
72
+ log("[onboardAccount] Error:", error);
73
+ observer.error(error);
74
+ });
75
+ });
76
+ exports.buildOnboardAccount = buildOnboardAccount;
77
+ const buildAuthorizePreapproval = (signerContext) => (deviceId, derivationPath, partyId) => new rxjs_1.Observable(observer => {
78
+ async function main() {
79
+ observer.next({
80
+ status: onboard_1.PreApprovalStatus.PREPARE,
81
+ });
82
+ const preparedTransaction = await (0, gateway_1.preparePreApprovalTransaction)(partyId);
83
+ observer.next({
84
+ status: onboard_1.PreApprovalStatus.SIGN,
85
+ });
86
+ const signature = await signerContext(deviceId, signer => signer.signTransaction(derivationPath, preparedTransaction.hash));
87
+ observer.next({
88
+ status: onboard_1.PreApprovalStatus.SUBMIT,
89
+ });
90
+ const { isApproved } = await (0, gateway_1.submitPreApprovalTransaction)(partyId, preparedTransaction, signature);
91
+ observer.next({
92
+ status: onboard_1.PreApprovalStatus.SUCCESS,
93
+ });
94
+ observer.next({
95
+ isApproved,
96
+ });
97
+ // TODO: remove after demo
98
+ const handleTapRequest = async () => {
99
+ try {
100
+ observer.next({
101
+ status: onboard_1.PreApprovalStatus.PREPARE,
102
+ });
103
+ const { serialized, hash } = await (0, gateway_1.prepareTapRequest)({
104
+ partyId,
105
+ });
106
+ observer.next({
107
+ status: onboard_1.PreApprovalStatus.SIGN,
108
+ });
109
+ const signature = await signerContext(deviceId, signer => signer.signTransaction(derivationPath, hash));
110
+ observer.next({
111
+ status: onboard_1.PreApprovalStatus.SUBMIT,
112
+ });
113
+ await (0, gateway_1.submitTapRequest)({
114
+ partyId,
115
+ serialized,
116
+ signature,
117
+ });
118
+ observer.next({
119
+ status: onboard_1.PreApprovalStatus.SUCCESS,
120
+ });
121
+ }
122
+ catch (err) {
123
+ // Tap request failure should not break the pre-approval flow
124
+ }
125
+ };
126
+ await handleTapRequest();
127
+ observer.complete();
128
+ }
129
+ main().then(() => observer.complete(), error => {
130
+ log("[buildAuthorizePreapproval] Error:", error);
131
+ observer.error(error);
132
+ });
133
+ });
134
+ exports.buildAuthorizePreapproval = buildAuthorizePreapproval;
135
+ const log = (message, ...rest) => {
136
+ // eslint-disable-next-line no-console
137
+ console.log(message, ...rest);
138
+ };
139
+ //# sourceMappingURL=onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/bridge/onboard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKvC,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAkB/E,CAAC"}
1
+ {"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAKvC,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAS/E,CAAC"}
@@ -5,16 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.prepareTransaction = void 0;
7
7
  const common_logic_1 = require("../common-logic");
8
- const node_1 = require("../network/node");
9
8
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
+ const updateTransaction_1 = require("./updateTransaction");
10
10
  const prepareTransaction = async (account, transaction) => {
11
- const seq = await (0, node_1.getNextSequence)(account.freshAddress);
12
- const craftedTransaction = await (0, common_logic_1.craftTransaction)({ address: account.freshAddress, nextSequenceNumber: seq }, { amount: transaction.amount, recipient: transaction.recipient });
13
- const fee = await (0, common_logic_1.estimateFees)(craftedTransaction.serializedTransaction);
14
- if (transaction.fee !== new bignumber_js_1.default(fee.toString())) {
15
- return { ...transaction, fee: new bignumber_js_1.default(fee.toString()) };
11
+ let fee = transaction.fee;
12
+ if (!fee || fee.eq(0)) {
13
+ fee = (0, bignumber_js_1.default)((await (0, common_logic_1.estimateFees)("")).toString());
16
14
  }
17
- return transaction;
15
+ return (0, updateTransaction_1.updateTransaction)(transaction, { fee });
18
16
  };
19
17
  exports.prepareTransaction = prepareTransaction;
20
18
  //# sourceMappingURL=prepareTransaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":";;;;;;AAEA,kDAAiE;AACjE,0CAAkD;AAClD,gEAAqC;AAE9B,MAAM,kBAAkB,GAAqD,KAAK,EACvF,OAAO,EACP,WAAW,EACX,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,IAAA,sBAAe,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAExD,MAAM,kBAAkB,GAAG,MAAM,IAAA,+BAAgB,EAC/C,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAC1D,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CACjE,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,IAAA,2BAAY,EAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IAEzE,IAAI,WAAW,CAAC,GAAG,KAAK,IAAI,sBAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,IAAI,sBAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAlBW,QAAA,kBAAkB,sBAkB7B"}
1
+ {"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../../src/bridge/prepareTransaction.ts"],"names":[],"mappings":";;;;;;AAEA,kDAA+C;AAC/C,gEAAqC;AACrC,2DAAwD;AAEjD,MAAM,kBAAkB,GAAqD,KAAK,EACvF,OAAO,EACP,WAAW,EACX,EAAE;IACF,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;IAC1B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,GAAG,GAAG,IAAA,sBAAS,EAAC,CAAC,MAAM,IAAA,2BAAY,EAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAA,qCAAiB,EAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAa,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgC,MAAM,UAAU,CAAC;AAEnF,eAAO,MAAM,kBAAkB,GAC5B,eAAe,aAAa,CAAC,YAAY,CAAC,KAAG,aAAa,CAAC,WAAW,CAAC,CAAC,eAAe,CAmFpF,CAAC"}
1
+ {"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAa,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAErD,eAAO,MAAM,kBAAkB,GAC5B,eAAe,aAAa,CAAC,YAAY,CAAC,KAAG,aAAa,CAAC,WAAW,CAAC,CAAC,eAAe,CAoFpF,CAAC"}
@@ -25,7 +25,8 @@ const buildSignOperation = (signerContext) => ({ account, deviceId, transaction
25
25
  }, {
26
26
  recipient: transaction.recipient,
27
27
  amount: transaction.amount,
28
- fee: fee,
28
+ expireInSeconds: 60 * 60 * 24,
29
+ tokenId: "Amulet",
29
30
  });
30
31
  const transactionSignature = await signer.signTransaction(derivationPath, serializedTransaction);
31
32
  return (0, common_logic_1.combine)(serializedTransaction, transactionSignature);