@ledgerhq/coin-canton 0.8.0-nightly.1 → 0.8.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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/coin-canton@0.8.0-nightly.0 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-canton
2
+ > @ledgerhq/coin-canton@0.8.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
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @ledgerhq/coin-canton
2
2
 
3
+ ## 0.8.0-nightly.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#12174](https://github.com/LedgerHQ/ledger-live/pull/12174) [`ece7245`](https://github.com/LedgerHQ/ledger-live/commit/ece7245975aa8f0bb93f22d555e99e6a558c4695) Thanks [@hedi-edelbloute](https://github.com/hedi-edelbloute)! - Fix transfer value canton outgoing txs
8
+
9
+ - Updated dependencies [[`c6a676f`](https://github.com/LedgerHQ/ledger-live/commit/c6a676ff80581ac19b896adf44d54812983b72da), [`565da80`](https://github.com/LedgerHQ/ledger-live/commit/565da807b1ebbfc830fd0e47b3d8856f88d410a6)]:
10
+ - @ledgerhq/coin-framework@6.7.0-nightly.2
11
+ - @ledgerhq/cryptoassets@13.31.0-nightly.2
12
+
3
13
  ## 0.8.0-nightly.1
4
14
 
5
15
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/bridge/sync.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAY,MAAM,2CAA2C,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4DvD,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,GACzC,eAAe,CAAC,aAAa,CAAC,CAsFhC"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/bridge/sync.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAY,MAAM,2CAA2C,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkEvD,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,GACzC,eAAe,CAAC,aAAa,CAAC,CAsFhC"}
@@ -27,7 +27,11 @@ const txInfoToOperationAdapter = (accountId, partyId) => (txInfo) => {
27
27
  else if (txInfo.type === "Initialize") {
28
28
  type = "PRE_APPROVAL";
29
29
  }
30
- const value = new bignumber_js_1.default(transferValue);
30
+ let value = new bignumber_js_1.default(transferValue);
31
+ if (type === "OUT" || type === "FEES") {
32
+ // We add fees when it's an outgoing transaction or a fees-only transaction
33
+ value = value.plus(fee);
34
+ }
31
35
  const feeValue = new bignumber_js_1.default(fee);
32
36
  const memo = details.metadata.reason;
33
37
  const op = {
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/bridge/sync.ts"],"names":[],"mappings":";;;;;AAqEA,kDAwFC;AA7JD,gEAAqC;AAErC,kEAAyE;AACzE,yEAAsF;AACtF,kEAAuE;AAEvE,gDAAiG;AACjG,uDAAmC;AACnC,uDAAiC;AAEjC,uCAAoE;AAEpE,MAAM,wBAAwB,GAC5B,CAAC,SAAiB,EAAE,OAAe,EAAE,EAAE,CACvC,CAAC,MAAqB,EAAa,EAAE;IACnC,MAAM,EACJ,gBAAgB,EAChB,GAAG,EACH,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EACvB,OAAO,EACP,UAAU,EACV,qBAAqB,EACrB,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EACnB,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,GAC/C,GAAG,MAAM,CAAC;IACX,IAAI,IAAI,GAAkB,SAAS,CAAC;IACpC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;QACpD,IAAI,GAAG,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACxC,IAAI,GAAG,cAAc,CAAC;IACxB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,sBAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,sBAAS,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAErC,MAAM,EAAE,GAAc;QACpB,EAAE,EAAE,IAAA,6BAAiB,EAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC;QACxD,IAAI,EAAE,gBAAgB;QACtB,SAAS;QACT,IAAI;QACJ,KAAK;QACL,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,MAAM;QACnB,OAAO;QACP,UAAU;QACV,IAAI,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACrC,yBAAyB,EAAE,MAAM;QACjC,KAAK,EAAE;YACL,GAAG;YACH,IAAI;SACL;KACF,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CACvB,YAA6B,EAC7B,SAAiB,EACjB,OAAe,EACF,EAAE;IACf,OAAO,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,SAAgB,mBAAmB,CACjC,aAA0C;IAE1C,OAAO,KAAK,EAAC,IAAI,EAAC,EAAE;QAClB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAEnF,IAAI,aAAa,GAAG,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC;QAE/C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,UAAU,GAAG,IAAA,gBAAQ,EAAC,aAAa,CAAC,CAAC;YAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE;gBAC1D,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,cAAc,EAAE,cAAc;gBAC9B,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,4BAAkB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/E,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;gBAC3B,aAAa,GAAG,OAAO,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,uBAAe,EAAC;YAChC,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,aAAa,EAAE,aAAa;YAC5B,cAAc;SACf,CAAC,CAAC;QAEH,MAAM,EAAE,kBAAkB,EAAE,GAAG,gBAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,IAAA,oBAAU,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhF,MAAM,YAAY,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;YACzC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACxC,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAyD,CAC1D,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;QAC/F,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,sBAAS,CAAC,gBAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QACrF,MAAM,gBAAgB,GAAG,sBAAS,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5E,IAAI,UAAU,GAAgB,EAAE,CAAC;QACjC,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,cAAc,EAAE,UAAU,IAAI,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,eAAe,GAAG,MAAM,IAAA,uBAAa,EAAC,QAAQ,EAAE,aAAa,EAAE;gBACnE,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,gBAAgB,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YAC7F,UAAU,GAAG,IAAA,oBAAQ,EAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAA,6BAAmB,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,YAAY,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhD,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAY,EAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,YAAY,GAChB,UAAU,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAEjB,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,SAAkB;YACxB,OAAO,EAAE,YAAY;YACrB,WAAW;YACX,YAAY;YACZ,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,YAAY,EAAE,OAAO;YACrB,cAAc,EAAE,OAAO;YACvB,UAAU;YACV,eAAe,EAAE,UAAU,CAAC,MAAM;YAClC,gBAAgB;YAChB,IAAI,EAAE,aAAa;YACnB,IAAI;SACL,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/bridge/sync.ts"],"names":[],"mappings":";;;;;AA2EA,kDAwFC;AAnKD,gEAAqC;AAErC,kEAAyE;AACzE,yEAAsF;AACtF,kEAAuE;AAEvE,gDAAiG;AACjG,uDAAmC;AACnC,uDAAiC;AAEjC,uCAAoE;AAEpE,MAAM,wBAAwB,GAC5B,CAAC,SAAiB,EAAE,OAAe,EAAE,EAAE,CACvC,CAAC,MAAqB,EAAa,EAAE;IACnC,MAAM,EACJ,gBAAgB,EAChB,GAAG,EACH,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EACvB,OAAO,EACP,UAAU,EACV,qBAAqB,EACrB,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EACnB,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,GAC/C,GAAG,MAAM,CAAC;IACX,IAAI,IAAI,GAAkB,SAAS,CAAC;IACpC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;QACpD,IAAI,GAAG,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACxC,IAAI,GAAG,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,GAAG,IAAI,sBAAS,CAAC,aAAa,CAAC,CAAC;IAEzC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,2EAA2E;QAC3E,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,sBAAS,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAErC,MAAM,EAAE,GAAc;QACpB,EAAE,EAAE,IAAA,6BAAiB,EAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC;QACxD,IAAI,EAAE,gBAAgB;QACtB,SAAS;QACT,IAAI;QACJ,KAAK;QACL,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,MAAM;QACnB,OAAO;QACP,UAAU;QACV,IAAI,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACrC,yBAAyB,EAAE,MAAM;QACjC,KAAK,EAAE;YACL,GAAG;YACH,IAAI;SACL;KACF,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CACvB,YAA6B,EAC7B,SAAiB,EACjB,OAAe,EACF,EAAE;IACf,OAAO,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,SAAgB,mBAAmB,CACjC,aAA0C;IAE1C,OAAO,KAAK,EAAC,IAAI,EAAC,EAAE;QAClB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAEnF,IAAI,aAAa,GAAG,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC;QAE/C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,UAAU,GAAG,IAAA,gBAAQ,EAAC,aAAa,CAAC,CAAC;YAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE;gBAC1D,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,cAAc,EAAE,cAAc;gBAC9B,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,4BAAkB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/E,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;gBAC3B,aAAa,GAAG,OAAO,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,uBAAe,EAAC;YAChC,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,aAAa,EAAE,aAAa;YAC5B,cAAc;SACf,CAAC,CAAC;QAEH,MAAM,EAAE,kBAAkB,EAAE,GAAG,gBAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,IAAA,oBAAU,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhF,MAAM,YAAY,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;YACzC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACxC,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAyD,CAC1D,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,IAAI,sBAAS,CAAC,YAAY,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;QAC/F,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,sBAAS,CAAC,gBAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QACrF,MAAM,gBAAgB,GAAG,sBAAS,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5E,IAAI,UAAU,GAAgB,EAAE,CAAC;QACjC,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,cAAc,EAAE,UAAU,IAAI,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,eAAe,GAAG,MAAM,IAAA,uBAAa,EAAC,QAAQ,EAAE,aAAa,EAAE;gBACnE,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,gBAAgB,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YAC7F,UAAU,GAAG,IAAA,oBAAQ,EAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAA,6BAAmB,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,YAAY,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhD,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAY,EAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,YAAY,GAChB,UAAU,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAEjB,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,SAAkB;YACxB,OAAO,EAAE,YAAY;YACrB,WAAW;YACX,YAAY;YACZ,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,YAAY,EAAE,OAAO;YACrB,cAAc,EAAE,OAAO;YACvB,UAAU;YACV,eAAe,EAAE,UAAU,CAAC,MAAM;YAClC,gBAAgB;YAChB,IAAI,EAAE,aAAa;YACnB,IAAI;SACL,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.test.d.ts","sourceRoot":"","sources":["../../src/bridge/sync.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const sync_1 = require("./sync");
40
+ const gateway = __importStar(require("../network/gateway"));
41
+ const onboard = __importStar(require("./onboard"));
42
+ const config = __importStar(require("../config"));
43
+ const signer_1 = __importDefault(require("../signer"));
44
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
45
+ jest.mock("../network/gateway");
46
+ jest.mock("../signer");
47
+ jest.mock("../config");
48
+ jest.mock("./onboard");
49
+ const mockedGetBalance = gateway.getBalance;
50
+ const mockedGetLedgerEnd = gateway.getLedgerEnd;
51
+ const mockedGetOperations = gateway.getOperations;
52
+ const mockedResolver = signer_1.default;
53
+ const mockedIsOnboarded = onboard.isAccountOnboarded;
54
+ const mockedIsAuthorized = onboard.isAccountAuthorized;
55
+ const mockedCoinConfig = config.default.getCoinConfig;
56
+ const sampleCurrency = {
57
+ id: "testcoin",
58
+ };
59
+ describe("makeGetAccountShape", () => {
60
+ const fakeSignerContext = {};
61
+ const defaultInfo = {
62
+ address: "addr1",
63
+ currency: sampleCurrency,
64
+ derivationMode: "",
65
+ derivationPath: "44'/0'/0'/0/0",
66
+ deviceId: "fakeDevice",
67
+ initialAccount: undefined,
68
+ };
69
+ beforeEach(() => {
70
+ jest.clearAllMocks();
71
+ mockedResolver.mockReturnValue(async () => ({
72
+ publicKey: "FAKE_PUBLIC_KEY",
73
+ }));
74
+ mockedIsOnboarded.mockResolvedValue({
75
+ isOnboarded: true,
76
+ partyId: "party123",
77
+ });
78
+ mockedCoinConfig.mockReturnValue({
79
+ nativeInstrumentId: "Native",
80
+ minReserve: "0",
81
+ });
82
+ mockedIsAuthorized.mockResolvedValue(true);
83
+ mockedGetLedgerEnd.mockResolvedValue(12345);
84
+ });
85
+ it("should return a valid account shape with correct balances and operations", async () => {
86
+ mockedGetBalance.mockResolvedValue([
87
+ {
88
+ instrument_id: "Native",
89
+ amount: "1000",
90
+ locked: false,
91
+ },
92
+ ]);
93
+ mockedGetOperations.mockResolvedValue({
94
+ operations: [
95
+ {
96
+ transaction_hash: "tx1",
97
+ uid: "uid1",
98
+ type: "Send",
99
+ fee: { value: "5" },
100
+ transfers: [
101
+ {
102
+ value: "100",
103
+ details: {
104
+ metadata: {
105
+ reason: "test transfer",
106
+ },
107
+ },
108
+ },
109
+ ],
110
+ transaction_timestamp: new Date().toISOString(),
111
+ senders: ["party123"],
112
+ recipients: ["party456"],
113
+ block: {
114
+ height: 1,
115
+ hash: "blockhash1",
116
+ },
117
+ },
118
+ ],
119
+ });
120
+ const getAccountShape = (0, sync_1.makeGetAccountShape)(fakeSignerContext);
121
+ const shape = await getAccountShape(defaultInfo, {
122
+ paginationConfig: {},
123
+ });
124
+ expect(shape).toHaveProperty("id");
125
+ expect(shape.balance).toEqual((0, bignumber_js_1.default)(1000));
126
+ expect(shape.operations?.length).toBe(1);
127
+ expect(shape.operations[0].type).toBe("OUT");
128
+ expect(shape.operations[0].value).toEqual((0, bignumber_js_1.default)(105)); // 100 + 5 fee
129
+ expect(shape.spendableBalance).toEqual((0, bignumber_js_1.default)(1000));
130
+ expect(shape.used).toBe(true);
131
+ });
132
+ it("should handle locked balances correctly", async () => {
133
+ mockedGetBalance.mockResolvedValue([
134
+ {
135
+ instrument_id: "LockedNative",
136
+ amount: "1000",
137
+ locked: true,
138
+ },
139
+ {
140
+ instrument_id: "Native",
141
+ amount: "10",
142
+ locked: false,
143
+ },
144
+ ]);
145
+ const getAccountShape = (0, sync_1.makeGetAccountShape)(fakeSignerContext);
146
+ const shape = await getAccountShape(defaultInfo, {
147
+ paginationConfig: {},
148
+ });
149
+ expect(shape).toBeDefined();
150
+ expect(shape.balance).toEqual((0, bignumber_js_1.default)(1010));
151
+ expect(shape.spendableBalance).toEqual((0, bignumber_js_1.default)(10));
152
+ });
153
+ it("should handle empty balances correctly", async () => {
154
+ mockedGetBalance.mockResolvedValue([]);
155
+ const getAccountShape = (0, sync_1.makeGetAccountShape)(fakeSignerContext);
156
+ const shape = await getAccountShape(defaultInfo, {
157
+ paginationConfig: {},
158
+ });
159
+ expect(shape).toBeDefined();
160
+ expect(shape.balance).toEqual((0, bignumber_js_1.default)(0));
161
+ expect(shape.spendableBalance).toEqual((0, bignumber_js_1.default)(0));
162
+ });
163
+ it("should default to FEES operation type when transferValue is 0", async () => {
164
+ mockedGetOperations.mockResolvedValue({
165
+ operations: [
166
+ {
167
+ transaction_hash: "tx2",
168
+ uid: "uid2",
169
+ type: "Send",
170
+ fee: { value: "3" },
171
+ transfers: [
172
+ {
173
+ value: "0",
174
+ details: {
175
+ metadata: {
176
+ reason: "fee only",
177
+ },
178
+ },
179
+ },
180
+ ],
181
+ transaction_timestamp: new Date().toISOString(),
182
+ senders: ["party123"],
183
+ recipients: ["party456"],
184
+ block: {
185
+ height: 2,
186
+ hash: "blockhash2",
187
+ },
188
+ },
189
+ ],
190
+ });
191
+ const getAccountShape = (0, sync_1.makeGetAccountShape)(fakeSignerContext);
192
+ const shape = await getAccountShape(defaultInfo, {
193
+ paginationConfig: {},
194
+ });
195
+ expect(shape).toBeDefined();
196
+ expect(shape.operations[0].type).toBe("FEES");
197
+ // In this case, value should equal the fee
198
+ expect(shape.operations[0].value).toEqual((0, bignumber_js_1.default)(3));
199
+ });
200
+ });
201
+ //# sourceMappingURL=sync.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../src/bridge/sync.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA6C;AAE7C,4DAA8C;AAC9C,mDAAqC;AACrC,kDAAoC;AACpC,uDAAiC;AAGjC,gEAAqC;AAErC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAChC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAuB,CAAC;AACzD,MAAM,kBAAkB,GAAG,OAAO,CAAC,YAAyB,CAAC;AAC7D,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAA0B,CAAC;AAC/D,MAAM,cAAc,GAAG,gBAAqB,CAAC;AAC7C,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAA+B,CAAC;AAClE,MAAM,kBAAkB,GAAG,OAAO,CAAC,mBAAgC,CAAC;AACpE,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,aAA0B,CAAC;AAEnE,MAAM,cAAc,GAAG;IACrB,EAAE,EAAE,UAAU;CACf,CAAC;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,iBAAiB,GAAG,EAAS,CAAC;IAEpC,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,cAAc;QACxB,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,eAAe;QAC/B,QAAQ,EAAE,YAAY;QACtB,cAAc,EAAE,SAAS;KAC1B,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,cAAc,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC1C,SAAS,EAAE,iBAAiB;SAC7B,CAAC,CAAC,CAAC;QAEJ,iBAAiB,CAAC,iBAAiB,CAAC;YAClC,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;QAEH,gBAAgB,CAAC,eAAe,CAAC;YAC/B,kBAAkB,EAAE,QAAQ;YAC5B,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;QAEH,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,gBAAgB,CAAC,iBAAiB,CAAC;YACjC;gBACE,aAAa,EAAE,QAAQ;gBACvB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,KAAK;aACd;SACF,CAAC,CAAC;QACH,mBAAmB,CAAC,iBAAiB,CAAC;YACpC,UAAU,EAAE;gBACV;oBACE,gBAAgB,EAAE,KAAK;oBACvB,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;oBACnB,SAAS,EAAE;wBACT;4BACE,KAAK,EAAE,KAAK;4BACZ,OAAO,EAAE;gCACP,QAAQ,EAAE;oCACR,MAAM,EAAE,eAAe;iCACxB;6BACF;yBACF;qBACF;oBACD,qBAAqB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC/C,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,UAAU,EAAE,CAAC,UAAU,CAAC;oBACxB,KAAK,EAAE;wBACL,MAAM,EAAE,CAAC;wBACT,IAAI,EAAE,YAAY;qBACnB;iBACe;aACnB;SACF,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,IAAA,0BAAmB,EAAC,iBAAiB,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,WAAwC,EAAE;YAC5E,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAE,KAAK,CAAC,UAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAE,KAAK,CAAC,UAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc;QAClF,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,gBAAgB,CAAC,iBAAiB,CAAC;YACjC;gBACE,aAAa,EAAE,cAAc;gBAC7B,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,IAAI;aACb;YACD;gBACE,aAAa,EAAE,QAAQ;gBACvB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,KAAK;aACd;SACF,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAA,0BAAmB,EAAC,iBAAiB,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,WAAwC,EAAE;YAC5E,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAEvC,MAAM,eAAe,GAAG,IAAA,0BAAmB,EAAC,iBAAiB,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,WAAwC,EAAE;YAC5E,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,mBAAmB,CAAC,iBAAiB,CAAC;YACpC,UAAU,EAAE;gBACV;oBACE,gBAAgB,EAAE,KAAK;oBACvB,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;oBACnB,SAAS,EAAE;wBACT;4BACE,KAAK,EAAE,GAAG;4BACV,OAAO,EAAE;gCACP,QAAQ,EAAE;oCACR,MAAM,EAAE,UAAU;iCACnB;6BACF;yBACF;qBACF;oBACD,qBAAqB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC/C,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,UAAU,EAAE,CAAC,UAAU,CAAC;oBACxB,KAAK,EAAE;wBACL,MAAM,EAAE,CAAC;wBACT,IAAI,EAAE,YAAY;qBACnB;iBACe;aACnB;SACF,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAA,0BAAmB,EAAC,iBAAiB,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAQ,MAAM,eAAe,CAAC,WAAwC,EAAE;YACjF,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,2CAA2C;QAC3C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/bridge/sync.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAY,MAAM,2CAA2C,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4DvD,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,GACzC,eAAe,CAAC,aAAa,CAAC,CAsFhC"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/bridge/sync.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAY,MAAM,2CAA2C,CAAC;AAEtF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkEvD,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,GACzC,eAAe,CAAC,aAAa,CAAC,CAsFhC"}
@@ -21,7 +21,11 @@ const txInfoToOperationAdapter = (accountId, partyId) => (txInfo) => {
21
21
  else if (txInfo.type === "Initialize") {
22
22
  type = "PRE_APPROVAL";
23
23
  }
24
- const value = new BigNumber(transferValue);
24
+ let value = new BigNumber(transferValue);
25
+ if (type === "OUT" || type === "FEES") {
26
+ // We add fees when it's an outgoing transaction or a fees-only transaction
27
+ value = value.plus(fee);
28
+ }
25
29
  const feeValue = new BigNumber(fee);
26
30
  const memo = details.metadata.reason;
27
31
  const op = {
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/bridge/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/bridge/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.test.d.ts","sourceRoot":"","sources":["../../src/bridge/sync.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,163 @@
1
+ import { makeGetAccountShape } from "./sync";
2
+ import * as gateway from "../network/gateway";
3
+ import * as onboard from "./onboard";
4
+ import * as config from "../config";
5
+ import resolver from "../signer";
6
+ import BigNumber from "bignumber.js";
7
+ jest.mock("../network/gateway");
8
+ jest.mock("../signer");
9
+ jest.mock("../config");
10
+ jest.mock("./onboard");
11
+ const mockedGetBalance = gateway.getBalance;
12
+ const mockedGetLedgerEnd = gateway.getLedgerEnd;
13
+ const mockedGetOperations = gateway.getOperations;
14
+ const mockedResolver = resolver;
15
+ const mockedIsOnboarded = onboard.isAccountOnboarded;
16
+ const mockedIsAuthorized = onboard.isAccountAuthorized;
17
+ const mockedCoinConfig = config.default.getCoinConfig;
18
+ const sampleCurrency = {
19
+ id: "testcoin",
20
+ };
21
+ describe("makeGetAccountShape", () => {
22
+ const fakeSignerContext = {};
23
+ const defaultInfo = {
24
+ address: "addr1",
25
+ currency: sampleCurrency,
26
+ derivationMode: "",
27
+ derivationPath: "44'/0'/0'/0/0",
28
+ deviceId: "fakeDevice",
29
+ initialAccount: undefined,
30
+ };
31
+ beforeEach(() => {
32
+ jest.clearAllMocks();
33
+ mockedResolver.mockReturnValue(async () => ({
34
+ publicKey: "FAKE_PUBLIC_KEY",
35
+ }));
36
+ mockedIsOnboarded.mockResolvedValue({
37
+ isOnboarded: true,
38
+ partyId: "party123",
39
+ });
40
+ mockedCoinConfig.mockReturnValue({
41
+ nativeInstrumentId: "Native",
42
+ minReserve: "0",
43
+ });
44
+ mockedIsAuthorized.mockResolvedValue(true);
45
+ mockedGetLedgerEnd.mockResolvedValue(12345);
46
+ });
47
+ it("should return a valid account shape with correct balances and operations", async () => {
48
+ mockedGetBalance.mockResolvedValue([
49
+ {
50
+ instrument_id: "Native",
51
+ amount: "1000",
52
+ locked: false,
53
+ },
54
+ ]);
55
+ mockedGetOperations.mockResolvedValue({
56
+ operations: [
57
+ {
58
+ transaction_hash: "tx1",
59
+ uid: "uid1",
60
+ type: "Send",
61
+ fee: { value: "5" },
62
+ transfers: [
63
+ {
64
+ value: "100",
65
+ details: {
66
+ metadata: {
67
+ reason: "test transfer",
68
+ },
69
+ },
70
+ },
71
+ ],
72
+ transaction_timestamp: new Date().toISOString(),
73
+ senders: ["party123"],
74
+ recipients: ["party456"],
75
+ block: {
76
+ height: 1,
77
+ hash: "blockhash1",
78
+ },
79
+ },
80
+ ],
81
+ });
82
+ const getAccountShape = makeGetAccountShape(fakeSignerContext);
83
+ const shape = await getAccountShape(defaultInfo, {
84
+ paginationConfig: {},
85
+ });
86
+ expect(shape).toHaveProperty("id");
87
+ expect(shape.balance).toEqual(BigNumber(1000));
88
+ expect(shape.operations?.length).toBe(1);
89
+ expect(shape.operations[0].type).toBe("OUT");
90
+ expect(shape.operations[0].value).toEqual(BigNumber(105)); // 100 + 5 fee
91
+ expect(shape.spendableBalance).toEqual(BigNumber(1000));
92
+ expect(shape.used).toBe(true);
93
+ });
94
+ it("should handle locked balances correctly", async () => {
95
+ mockedGetBalance.mockResolvedValue([
96
+ {
97
+ instrument_id: "LockedNative",
98
+ amount: "1000",
99
+ locked: true,
100
+ },
101
+ {
102
+ instrument_id: "Native",
103
+ amount: "10",
104
+ locked: false,
105
+ },
106
+ ]);
107
+ const getAccountShape = makeGetAccountShape(fakeSignerContext);
108
+ const shape = await getAccountShape(defaultInfo, {
109
+ paginationConfig: {},
110
+ });
111
+ expect(shape).toBeDefined();
112
+ expect(shape.balance).toEqual(BigNumber(1010));
113
+ expect(shape.spendableBalance).toEqual(BigNumber(10));
114
+ });
115
+ it("should handle empty balances correctly", async () => {
116
+ mockedGetBalance.mockResolvedValue([]);
117
+ const getAccountShape = makeGetAccountShape(fakeSignerContext);
118
+ const shape = await getAccountShape(defaultInfo, {
119
+ paginationConfig: {},
120
+ });
121
+ expect(shape).toBeDefined();
122
+ expect(shape.balance).toEqual(BigNumber(0));
123
+ expect(shape.spendableBalance).toEqual(BigNumber(0));
124
+ });
125
+ it("should default to FEES operation type when transferValue is 0", async () => {
126
+ mockedGetOperations.mockResolvedValue({
127
+ operations: [
128
+ {
129
+ transaction_hash: "tx2",
130
+ uid: "uid2",
131
+ type: "Send",
132
+ fee: { value: "3" },
133
+ transfers: [
134
+ {
135
+ value: "0",
136
+ details: {
137
+ metadata: {
138
+ reason: "fee only",
139
+ },
140
+ },
141
+ },
142
+ ],
143
+ transaction_timestamp: new Date().toISOString(),
144
+ senders: ["party123"],
145
+ recipients: ["party456"],
146
+ block: {
147
+ height: 2,
148
+ hash: "blockhash2",
149
+ },
150
+ },
151
+ ],
152
+ });
153
+ const getAccountShape = makeGetAccountShape(fakeSignerContext);
154
+ const shape = await getAccountShape(defaultInfo, {
155
+ paginationConfig: {},
156
+ });
157
+ expect(shape).toBeDefined();
158
+ expect(shape.operations[0].type).toBe("FEES");
159
+ // In this case, value should equal the fee
160
+ expect(shape.operations[0].value).toEqual(BigNumber(3));
161
+ });
162
+ });
163
+ //# sourceMappingURL=sync.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../src/bridge/sync.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/coin-canton",
3
- "version": "0.8.0-nightly.1",
3
+ "version": "0.8.0-nightly.2",
4
4
  "description": "Canton coin integration",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -101,8 +101,8 @@
101
101
  "bignumber.js": "^9.1.2",
102
102
  "invariant": "^2.2.4",
103
103
  "rxjs": "^7.8.1",
104
- "@ledgerhq/coin-framework": "^6.7.0-nightly.1",
105
- "@ledgerhq/cryptoassets": "^13.31.0-nightly.1",
104
+ "@ledgerhq/coin-framework": "^6.7.0-nightly.2",
105
+ "@ledgerhq/cryptoassets": "^13.31.0-nightly.2",
106
106
  "@ledgerhq/devices": "8.6.1",
107
107
  "@ledgerhq/errors": "^6.26.0",
108
108
  "@ledgerhq/live-env": "^2.19.0-nightly.0",
@@ -0,0 +1,185 @@
1
+ import { makeGetAccountShape } from "./sync";
2
+ import { OperationInfo } from "../network/gateway";
3
+ import * as gateway from "../network/gateway";
4
+ import * as onboard from "./onboard";
5
+ import * as config from "../config";
6
+ import resolver from "../signer";
7
+ import { AccountShapeInfo } from "@ledgerhq/coin-framework/bridge/jsHelpers";
8
+ import { Account } from "@ledgerhq/types-live";
9
+ import BigNumber from "bignumber.js";
10
+
11
+ jest.mock("../network/gateway");
12
+ jest.mock("../signer");
13
+ jest.mock("../config");
14
+ jest.mock("./onboard");
15
+
16
+ const mockedGetBalance = gateway.getBalance as jest.Mock;
17
+ const mockedGetLedgerEnd = gateway.getLedgerEnd as jest.Mock;
18
+ const mockedGetOperations = gateway.getOperations as jest.Mock;
19
+ const mockedResolver = resolver as jest.Mock;
20
+ const mockedIsOnboarded = onboard.isAccountOnboarded as jest.Mock;
21
+ const mockedIsAuthorized = onboard.isAccountAuthorized as jest.Mock;
22
+ const mockedCoinConfig = config.default.getCoinConfig as jest.Mock;
23
+
24
+ const sampleCurrency = {
25
+ id: "testcoin",
26
+ };
27
+
28
+ describe("makeGetAccountShape", () => {
29
+ const fakeSignerContext = {} as any;
30
+
31
+ const defaultInfo = {
32
+ address: "addr1",
33
+ currency: sampleCurrency,
34
+ derivationMode: "",
35
+ derivationPath: "44'/0'/0'/0/0",
36
+ deviceId: "fakeDevice",
37
+ initialAccount: undefined,
38
+ };
39
+
40
+ beforeEach(() => {
41
+ jest.clearAllMocks();
42
+
43
+ mockedResolver.mockReturnValue(async () => ({
44
+ publicKey: "FAKE_PUBLIC_KEY",
45
+ }));
46
+
47
+ mockedIsOnboarded.mockResolvedValue({
48
+ isOnboarded: true,
49
+ partyId: "party123",
50
+ });
51
+
52
+ mockedCoinConfig.mockReturnValue({
53
+ nativeInstrumentId: "Native",
54
+ minReserve: "0",
55
+ });
56
+
57
+ mockedIsAuthorized.mockResolvedValue(true);
58
+ mockedGetLedgerEnd.mockResolvedValue(12345);
59
+ });
60
+
61
+ it("should return a valid account shape with correct balances and operations", async () => {
62
+ mockedGetBalance.mockResolvedValue([
63
+ {
64
+ instrument_id: "Native",
65
+ amount: "1000",
66
+ locked: false,
67
+ },
68
+ ]);
69
+ mockedGetOperations.mockResolvedValue({
70
+ operations: [
71
+ {
72
+ transaction_hash: "tx1",
73
+ uid: "uid1",
74
+ type: "Send",
75
+ fee: { value: "5" },
76
+ transfers: [
77
+ {
78
+ value: "100",
79
+ details: {
80
+ metadata: {
81
+ reason: "test transfer",
82
+ },
83
+ },
84
+ },
85
+ ],
86
+ transaction_timestamp: new Date().toISOString(),
87
+ senders: ["party123"],
88
+ recipients: ["party456"],
89
+ block: {
90
+ height: 1,
91
+ hash: "blockhash1",
92
+ },
93
+ } as OperationInfo,
94
+ ],
95
+ });
96
+ const getAccountShape = makeGetAccountShape(fakeSignerContext);
97
+ const shape = await getAccountShape(defaultInfo as AccountShapeInfo<Account>, {
98
+ paginationConfig: {},
99
+ });
100
+
101
+ expect(shape).toHaveProperty("id");
102
+ expect(shape.balance).toEqual(BigNumber(1000));
103
+ expect(shape.operations?.length).toBe(1);
104
+ expect((shape.operations as any)[0].type).toBe("OUT");
105
+ expect((shape.operations as any)[0].value).toEqual(BigNumber(105)); // 100 + 5 fee
106
+ expect(shape.spendableBalance).toEqual(BigNumber(1000));
107
+ expect(shape.used).toBe(true);
108
+ });
109
+
110
+ it("should handle locked balances correctly", async () => {
111
+ mockedGetBalance.mockResolvedValue([
112
+ {
113
+ instrument_id: "LockedNative",
114
+ amount: "1000",
115
+ locked: true,
116
+ },
117
+ {
118
+ instrument_id: "Native",
119
+ amount: "10",
120
+ locked: false,
121
+ },
122
+ ]);
123
+
124
+ const getAccountShape = makeGetAccountShape(fakeSignerContext);
125
+ const shape = await getAccountShape(defaultInfo as AccountShapeInfo<Account>, {
126
+ paginationConfig: {},
127
+ });
128
+
129
+ expect(shape).toBeDefined();
130
+ expect(shape.balance).toEqual(BigNumber(1010));
131
+ expect(shape.spendableBalance).toEqual(BigNumber(10));
132
+ });
133
+
134
+ it("should handle empty balances correctly", async () => {
135
+ mockedGetBalance.mockResolvedValue([]);
136
+
137
+ const getAccountShape = makeGetAccountShape(fakeSignerContext);
138
+ const shape = await getAccountShape(defaultInfo as AccountShapeInfo<Account>, {
139
+ paginationConfig: {},
140
+ });
141
+
142
+ expect(shape).toBeDefined();
143
+ expect(shape.balance).toEqual(BigNumber(0));
144
+ expect(shape.spendableBalance).toEqual(BigNumber(0));
145
+ });
146
+
147
+ it("should default to FEES operation type when transferValue is 0", async () => {
148
+ mockedGetOperations.mockResolvedValue({
149
+ operations: [
150
+ {
151
+ transaction_hash: "tx2",
152
+ uid: "uid2",
153
+ type: "Send",
154
+ fee: { value: "3" },
155
+ transfers: [
156
+ {
157
+ value: "0",
158
+ details: {
159
+ metadata: {
160
+ reason: "fee only",
161
+ },
162
+ },
163
+ },
164
+ ],
165
+ transaction_timestamp: new Date().toISOString(),
166
+ senders: ["party123"],
167
+ recipients: ["party456"],
168
+ block: {
169
+ height: 2,
170
+ hash: "blockhash2",
171
+ },
172
+ } as OperationInfo,
173
+ ],
174
+ });
175
+
176
+ const getAccountShape = makeGetAccountShape(fakeSignerContext);
177
+ const shape: any = await getAccountShape(defaultInfo as AccountShapeInfo<Account>, {
178
+ paginationConfig: {},
179
+ });
180
+ expect(shape).toBeDefined();
181
+ expect(shape.operations[0].type).toBe("FEES");
182
+ // In this case, value should equal the fee
183
+ expect(shape.operations[0].value).toEqual(BigNumber(3));
184
+ });
185
+ });
@@ -33,7 +33,13 @@ const txInfoToOperationAdapter =
33
33
  } else if (txInfo.type === "Initialize") {
34
34
  type = "PRE_APPROVAL";
35
35
  }
36
- const value = new BigNumber(transferValue);
36
+ let value = new BigNumber(transferValue);
37
+
38
+ if (type === "OUT" || type === "FEES") {
39
+ // We add fees when it's an outgoing transaction or a fees-only transaction
40
+ value = value.plus(fee);
41
+ }
42
+
37
43
  const feeValue = new BigNumber(fee);
38
44
  const memo = details.metadata.reason;
39
45