@ledgerhq/coin-internet_computer 1.9.0-nightly.7 → 1.9.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 (106) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +20 -66
  3. package/lib/api/api.d.ts +11 -6
  4. package/lib/api/api.d.ts.map +1 -1
  5. package/lib/api/api.js +64 -84
  6. package/lib/api/api.js.map +1 -1
  7. package/lib/bridge/bridgeHelpers/account.d.ts.map +1 -1
  8. package/lib/bridge/bridgeHelpers/account.js +33 -52
  9. package/lib/bridge/bridgeHelpers/account.js.map +1 -1
  10. package/lib/bridge/bridgeHelpers/addresses.d.ts +6 -0
  11. package/lib/bridge/bridgeHelpers/addresses.d.ts.map +1 -1
  12. package/lib/bridge/bridgeHelpers/addresses.js +29 -1
  13. package/lib/bridge/bridgeHelpers/addresses.js.map +1 -1
  14. package/lib/bridge/bridgeHelpers/icpRosetta/index.d.ts +30 -0
  15. package/lib/bridge/bridgeHelpers/icpRosetta/index.d.ts.map +1 -0
  16. package/lib/bridge/bridgeHelpers/icpRosetta/index.js +88 -0
  17. package/lib/bridge/bridgeHelpers/icpRosetta/index.js.map +1 -0
  18. package/lib/bridge/bridgeHelpers/icpRosetta/types.d.ts +145 -0
  19. package/lib/bridge/bridgeHelpers/icpRosetta/types.d.ts.map +1 -0
  20. package/lib/bridge/bridgeHelpers/icpRosetta/types.js +3 -0
  21. package/lib/bridge/bridgeHelpers/icpRosetta/types.js.map +1 -0
  22. package/lib/bridge/bridgeHelpers/icpRosetta/utils.d.ts +17 -0
  23. package/lib/bridge/bridgeHelpers/icpRosetta/utils.d.ts.map +1 -0
  24. package/lib/bridge/bridgeHelpers/icpRosetta/utils.js +155 -0
  25. package/lib/bridge/bridgeHelpers/icpRosetta/utils.js.map +1 -0
  26. package/lib/bridge/broadcast.d.ts.map +1 -1
  27. package/lib/bridge/broadcast.js +6 -22
  28. package/lib/bridge/broadcast.js.map +1 -1
  29. package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
  30. package/lib/bridge/getTransactionStatus.js +3 -4
  31. package/lib/bridge/getTransactionStatus.js.map +1 -1
  32. package/lib/bridge/prepareTransaction.d.ts.map +1 -1
  33. package/lib/bridge/prepareTransaction.js +1 -2
  34. package/lib/bridge/prepareTransaction.js.map +1 -1
  35. package/lib/bridge/signOperation.d.ts +2 -2
  36. package/lib/bridge/signOperation.d.ts.map +1 -1
  37. package/lib/bridge/signOperation.js +13 -44
  38. package/lib/bridge/signOperation.js.map +1 -1
  39. package/lib/consts.d.ts +0 -2
  40. package/lib/consts.d.ts.map +1 -1
  41. package/lib/consts.js +1 -8
  42. package/lib/consts.js.map +1 -1
  43. package/lib/hw-signMessage.d.ts.map +1 -1
  44. package/lib/hw-signMessage.js +2 -1
  45. package/lib/hw-signMessage.js.map +1 -1
  46. package/lib/types/signer.d.ts +1 -1
  47. package/lib/types/signer.d.ts.map +1 -1
  48. package/lib-es/api/api.d.ts +11 -6
  49. package/lib-es/api/api.d.ts.map +1 -1
  50. package/lib-es/api/api.js +60 -81
  51. package/lib-es/api/api.js.map +1 -1
  52. package/lib-es/bridge/bridgeHelpers/account.d.ts.map +1 -1
  53. package/lib-es/bridge/bridgeHelpers/account.js +33 -52
  54. package/lib-es/bridge/bridgeHelpers/account.js.map +1 -1
  55. package/lib-es/bridge/bridgeHelpers/addresses.d.ts +6 -0
  56. package/lib-es/bridge/bridgeHelpers/addresses.d.ts.map +1 -1
  57. package/lib-es/bridge/bridgeHelpers/addresses.js +23 -0
  58. package/lib-es/bridge/bridgeHelpers/addresses.js.map +1 -1
  59. package/lib-es/bridge/bridgeHelpers/icpRosetta/index.d.ts +30 -0
  60. package/lib-es/bridge/bridgeHelpers/icpRosetta/index.d.ts.map +1 -0
  61. package/lib-es/bridge/bridgeHelpers/icpRosetta/index.js +76 -0
  62. package/lib-es/bridge/bridgeHelpers/icpRosetta/index.js.map +1 -0
  63. package/lib-es/bridge/bridgeHelpers/icpRosetta/types.d.ts +145 -0
  64. package/lib-es/bridge/bridgeHelpers/icpRosetta/types.d.ts.map +1 -0
  65. package/lib-es/bridge/bridgeHelpers/icpRosetta/types.js +2 -0
  66. package/lib-es/bridge/bridgeHelpers/icpRosetta/types.js.map +1 -0
  67. package/lib-es/bridge/bridgeHelpers/icpRosetta/utils.d.ts +17 -0
  68. package/lib-es/bridge/bridgeHelpers/icpRosetta/utils.d.ts.map +1 -0
  69. package/lib-es/bridge/bridgeHelpers/icpRosetta/utils.js +123 -0
  70. package/lib-es/bridge/bridgeHelpers/icpRosetta/utils.js.map +1 -0
  71. package/lib-es/bridge/broadcast.d.ts.map +1 -1
  72. package/lib-es/bridge/broadcast.js +6 -19
  73. package/lib-es/bridge/broadcast.js.map +1 -1
  74. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -1
  75. package/lib-es/bridge/getTransactionStatus.js +1 -2
  76. package/lib-es/bridge/getTransactionStatus.js.map +1 -1
  77. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
  78. package/lib-es/bridge/prepareTransaction.js +1 -2
  79. package/lib-es/bridge/prepareTransaction.js.map +1 -1
  80. package/lib-es/bridge/signOperation.d.ts +2 -2
  81. package/lib-es/bridge/signOperation.d.ts.map +1 -1
  82. package/lib-es/bridge/signOperation.js +13 -41
  83. package/lib-es/bridge/signOperation.js.map +1 -1
  84. package/lib-es/consts.d.ts +0 -2
  85. package/lib-es/consts.d.ts.map +1 -1
  86. package/lib-es/consts.js +0 -3
  87. package/lib-es/consts.js.map +1 -1
  88. package/lib-es/hw-signMessage.d.ts.map +1 -1
  89. package/lib-es/hw-signMessage.js +2 -1
  90. package/lib-es/hw-signMessage.js.map +1 -1
  91. package/lib-es/types/signer.d.ts +1 -1
  92. package/lib-es/types/signer.d.ts.map +1 -1
  93. package/package.json +13 -7
  94. package/src/api/api.ts +71 -126
  95. package/src/bridge/bridgeHelpers/account.ts +43 -70
  96. package/src/bridge/bridgeHelpers/addresses.ts +25 -0
  97. package/src/bridge/bridgeHelpers/icpRosetta/index.ts +154 -0
  98. package/src/bridge/bridgeHelpers/icpRosetta/types.ts +166 -0
  99. package/src/bridge/bridgeHelpers/icpRosetta/utils.ts +151 -0
  100. package/src/bridge/broadcast.ts +6 -31
  101. package/src/bridge/getTransactionStatus.ts +1 -2
  102. package/src/bridge/prepareTransaction.ts +1 -2
  103. package/src/bridge/signOperation.ts +18 -68
  104. package/src/consts.ts +0 -10
  105. package/src/hw-signMessage.ts +6 -1
  106. package/src/types/signer.ts +1 -1
@@ -1,69 +1,38 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.buildSignOperation = void 0;
7
4
  const rxjs_1 = require("rxjs");
8
5
  const addresses_1 = require("./bridgeHelpers/addresses");
9
- const utils_1 = require("@zondax/ledger-live-icp/utils");
10
- const agent_1 = require("@zondax/ledger-live-icp/agent");
6
+ const icpRosetta_1 = require("./bridgeHelpers/icpRosetta");
11
7
  const buildOptimisticOperation_1 = require("./buildOptimisticOperation");
12
8
  const common_logic_1 = require("../common-logic");
13
- const logs_1 = require("@ledgerhq/logs");
14
- const invariant_1 = __importDefault(require("invariant"));
15
- const signICPTransaction = async (unsignedTxn, derivationPath, signerContext, account, deviceId) => {
16
- const blob = agent_1.Cbor.encode({ content: unsignedTxn });
17
- (0, logs_1.log)("debug", "[signICPTransaction] blob", Buffer.from(blob).toString("hex"));
18
- const signatures = await signerContext(deviceId, signer => signer.sign(derivationPath, Buffer.from(blob)));
19
- (0, invariant_1.default)(signatures.signatureRS, "[ICP](signICPTransaction) Signature not found");
20
- (0, invariant_1.default)(account.xpub, "[ICP](signICPTransaction) Account xpub is required");
21
- return {
22
- signature: Buffer.from(signatures.signatureRS).toString("hex"),
23
- callBody: {
24
- content: unsignedTxn,
25
- sender_pubkey: (0, utils_1.pubkeyToDer)(account.xpub),
26
- sender_sig: signatures.signatureRS,
27
- },
28
- };
29
- };
30
9
  const buildSignOperation = (signerContext) => ({ account, transaction, deviceId }) => new rxjs_1.Observable(o => {
31
10
  async function main() {
32
- (0, logs_1.log)("debug", "[signOperation] icp start fn");
33
- (0, logs_1.log)("debug", "[signOperation] transaction", transaction);
34
11
  const { xpub } = account;
35
- (0, invariant_1.default)(xpub, "[ICP](signOperation) Account xpub is required");
36
12
  const { derivationPath } = (0, addresses_1.getAddress)(account);
37
- const { unsignedTransaction, transferRawRequest } = (0, utils_1.createUnsignedSendTransaction)(transaction, xpub);
13
+ const { unsignedTxn, payloads } = await (0, icpRosetta_1.getUnsignedTransaction)(transaction, account);
38
14
  o.next({
39
15
  type: "device-signature-requested",
40
16
  });
41
- let signature = "";
42
- let encodedSignedCallBlob = "";
43
- const res = await signICPTransaction(unsignedTransaction, (0, common_logic_1.getPath)(derivationPath), signerContext, account, deviceId);
44
- signature = res.signature;
45
- encodedSignedCallBlob = Buffer.from(agent_1.Cbor.encode(res.callBody)).toString("hex");
46
- (0, invariant_1.default)(signature, "[ICP](signOperation) Signature not found");
17
+ const { signedTxn } = await (0, icpRosetta_1.signICPTransaction)({
18
+ signerContext,
19
+ deviceId,
20
+ unsignedTxn,
21
+ path: (0, common_logic_1.getPath)(derivationPath),
22
+ payloads,
23
+ pubkey: xpub ?? "",
24
+ });
47
25
  o.next({
48
26
  type: "device-signature-granted",
49
27
  });
50
- const hash = (0, utils_1.hashTransaction)({
51
- from: account.freshAddress,
52
- to: transaction.recipient,
53
- amount: transferRawRequest.amount.e8s,
54
- fee: transferRawRequest.fee.e8s,
55
- memo: transferRawRequest.memo,
56
- created_at_time: transferRawRequest.created_at_time[0]["timestamp_nanos"],
57
- });
28
+ const { hash } = await (0, icpRosetta_1.getTxnMetadata)(signedTxn);
58
29
  const operation = await (0, buildOptimisticOperation_1.buildOptimisticOperation)(account, transaction, hash);
59
30
  o.next({
60
31
  type: "signed",
61
32
  signedOperation: {
62
33
  operation,
63
- signature,
64
- rawData: {
65
- encodedSignedCallBlob,
66
- },
34
+ signature: signedTxn,
35
+ expirationDate: (0, icpRosetta_1.getTxnExpirationDate)(unsignedTxn),
67
36
  },
68
37
  });
69
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/bridge/signOperation.ts"],"names":[],"mappings":";;;AAAA,+BAAkC;AAElC,yDAAuD;AACvD,2DAKoC;AACpC,yEAAsE;AAItE,kDAA0C;AAEnC,MAAM,kBAAkB,GAC7B,CAAC,aAAuC,EAAwD,EAAE,CAClG,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CACrC,IAAI,iBAAU,CAAC,CAAC,CAAC,EAAE;IACjB,KAAK,UAAU,IAAI;QACjB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAA,sBAAU,EAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,mCAAsB,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAErF,CAAC,CAAC,IAAI,CAAC;YACL,IAAI,EAAE,4BAA4B;SACnC,CAAC,CAAC;QAEH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,+BAAkB,EAAC;YAC7C,aAAa;YACb,QAAQ;YACR,WAAW;YACX,IAAI,EAAE,IAAA,sBAAO,EAAC,cAAc,CAAC;YAC7B,QAAQ;YACR,MAAM,EAAE,IAAI,IAAI,EAAE;SACnB,CAAC,CAAC;QAEH,CAAC,CAAC,IAAI,CAAC;YACL,IAAI,EAAE,0BAA0B;SACjC,CAAC,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,2BAAc,EAAC,SAAS,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,IAAA,mDAAwB,EAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAE7E,CAAC,CAAC,IAAI,CAAC;YACL,IAAI,EAAE,QAAQ;YACd,eAAe,EAAE;gBACf,SAAS;gBACT,SAAS,EAAE,SAAS;gBACpB,cAAc,EAAE,IAAA,iCAAoB,EAAC,WAAW,CAAC;aAClD;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,CACT,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAClB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAChB,CAAC;AACJ,CAAC,CAAC,CAAC;AA3CM,QAAA,kBAAkB,sBA2CxB"}
package/lib/consts.d.ts CHANGED
@@ -3,6 +3,4 @@ export declare const ICP_BLK_NAME_ROSETTA = "Internet Computer";
3
3
  export declare const ICP_NET_ID_ROSETTA = "00000000000000020101";
4
4
  export declare const ICP_FEES = 10000;
5
5
  export declare const MAX_MEMO_VALUE: number;
6
- export declare const FETCH_TXNS_LIMIT = 100;
7
- export { MAINNET_GOVERNANCE_CANISTER_ID, MAINNET_LEDGER_CANISTER_ID, MAINNET_INDEX_CANISTER_ID, ICP_NETWORK_URL, } from "@zondax/ledger-live-icp/neurons";
8
6
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAGnC,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAGzD,eAAO,MAAM,QAAQ,QAAM,CAAC;AAG5B,eAAO,MAAM,cAAc,QAA0B,CAAC;AAGtD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,yBAAyB,EACzB,eAAe,GAChB,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAGnC,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,eAAO,MAAM,kBAAkB,yBAAyB,CAAC;AAGzD,eAAO,MAAM,QAAQ,QAAM,CAAC;AAG5B,eAAO,MAAM,cAAc,QAA0B,CAAC"}
package/lib/consts.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ICP_NETWORK_URL = exports.MAINNET_INDEX_CANISTER_ID = exports.MAINNET_LEDGER_CANISTER_ID = exports.MAINNET_GOVERNANCE_CANISTER_ID = exports.FETCH_TXNS_LIMIT = exports.MAX_MEMO_VALUE = exports.ICP_FEES = exports.ICP_NET_ID_ROSETTA = exports.ICP_BLK_NAME_ROSETTA = exports.ICP_SEND_TXN_TYPE = void 0;
3
+ exports.MAX_MEMO_VALUE = exports.ICP_FEES = exports.ICP_NET_ID_ROSETTA = exports.ICP_BLK_NAME_ROSETTA = exports.ICP_SEND_TXN_TYPE = void 0;
4
4
  exports.ICP_SEND_TXN_TYPE = 0;
5
5
  // ICP Rosetta ids
6
6
  exports.ICP_BLK_NAME_ROSETTA = "Internet Computer";
@@ -9,11 +9,4 @@ exports.ICP_NET_ID_ROSETTA = "00000000000000020101";
9
9
  exports.ICP_FEES = 1e4;
10
10
  // Max Memo value on ICP network
11
11
  exports.MAX_MEMO_VALUE = Number.MAX_SAFE_INTEGER;
12
- // API limits
13
- exports.FETCH_TXNS_LIMIT = 100;
14
- var neurons_1 = require("@zondax/ledger-live-icp/neurons");
15
- Object.defineProperty(exports, "MAINNET_GOVERNANCE_CANISTER_ID", { enumerable: true, get: function () { return neurons_1.MAINNET_GOVERNANCE_CANISTER_ID; } });
16
- Object.defineProperty(exports, "MAINNET_LEDGER_CANISTER_ID", { enumerable: true, get: function () { return neurons_1.MAINNET_LEDGER_CANISTER_ID; } });
17
- Object.defineProperty(exports, "MAINNET_INDEX_CANISTER_ID", { enumerable: true, get: function () { return neurons_1.MAINNET_INDEX_CANISTER_ID; } });
18
- Object.defineProperty(exports, "ICP_NETWORK_URL", { enumerable: true, get: function () { return neurons_1.ICP_NETWORK_URL; } });
19
12
  //# sourceMappingURL=consts.js.map
package/lib/consts.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,CAAC,CAAC;AAEnC,kBAAkB;AACL,QAAA,oBAAoB,GAAG,mBAAmB,CAAC;AAC3C,QAAA,kBAAkB,GAAG,sBAAsB,CAAC;AAEzD,eAAe;AACF,QAAA,QAAQ,GAAG,GAAG,CAAC;AAE5B,gCAAgC;AACnB,QAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEtD,aAAa;AACA,QAAA,gBAAgB,GAAG,GAAG,CAAC;AAEpC,2DAKyC;AAJvC,yHAAA,8BAA8B,OAAA;AAC9B,qHAAA,0BAA0B,OAAA;AAC1B,oHAAA,yBAAyB,OAAA;AACzB,0GAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,CAAC,CAAC;AAEnC,kBAAkB;AACL,QAAA,oBAAoB,GAAG,mBAAmB,CAAC;AAC3C,QAAA,kBAAkB,GAAG,sBAAsB,CAAC;AAEzD,eAAe;AACF,QAAA,QAAQ,GAAG,GAAG,CAAC;AAE5B,gCAAgC;AACnB,QAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hw-signMessage.d.ts","sourceRoot":"","sources":["../src/hw-signMessage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAO3D,eAAO,MAAM,WAAW,kBACN,cAAc,SAAS,CAAC,gBACvB,MAAM,WAAW,OAAO,eAAe,UAAU;;;;;;;EAuBjE,CAAC"}
1
+ {"version":3,"file":"hw-signMessage.d.ts","sourceRoot":"","sources":["../src/hw-signMessage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAO3D,eAAO,MAAM,WAAW,kBACN,cAAc,SAAS,CAAC,gBACvB,MAAM,WAAW,OAAO,eAAe,UAAU;;;;;;;EA2BjE,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.signMessage = void 0;
4
4
  const logs_1 = require("@ledgerhq/logs");
5
5
  const utils_1 = require("./common-logic/utils");
6
+ const consts_1 = require("./consts");
6
7
  function bufferToArrayBuffer(buffer) {
7
8
  const sig = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
8
9
  return Buffer.from(sig);
@@ -14,7 +15,7 @@ const signMessage = (signerContext) => async (deviceId, account, { message }) =>
14
15
  if (typeof message !== "string")
15
16
  throw new Error("Message must be a string");
16
17
  const { r } = await signerContext(deviceId, async (signer) => {
17
- const r = await signer.sign(account.freshAddressPath, (0, utils_1.getBufferFromString)(message));
18
+ const r = await signer.sign(account.freshAddressPath, (0, utils_1.getBufferFromString)(message), consts_1.ICP_SEND_TXN_TYPE);
18
19
  return { r };
19
20
  });
20
21
  if (!r.signatureRS) {
@@ -1 +1 @@
1
- {"version":3,"file":"hw-signMessage.js","sourceRoot":"","sources":["../src/hw-signMessage.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,gDAA2D;AAK3D,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1F,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAEM,MAAM,WAAW,GACtB,CAAC,aAAuC,EAAE,EAAE,CAC5C,KAAK,EAAE,QAAgB,EAAE,OAAgB,EAAE,EAAE,OAAO,EAAc,EAAE,EAAE;IACpE,IAAA,UAAG,EAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;IAE1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACzD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAE7E,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACzD,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAA,2BAAmB,EAAC,OAAO,CAAC,CAAC,CAAC;QACpF,OAAO,EAAE,CAAC,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;QACL,GAAG,EAAE;YACH,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,CAAC;SACL;QACD,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC9D,CAAC;AACJ,CAAC,CAAC;AAzBS,QAAA,WAAW,eAyBpB"}
1
+ {"version":3,"file":"hw-signMessage.js","sourceRoot":"","sources":["../src/hw-signMessage.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,gDAA2D;AAC3D,qCAA6C;AAK7C,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1F,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAEM,MAAM,WAAW,GACtB,CAAC,aAAuC,EAAE,EAAE,CAC5C,KAAK,EAAE,QAAgB,EAAE,OAAgB,EAAE,EAAE,OAAO,EAAc,EAAE,EAAE;IACpE,IAAA,UAAG,EAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;IAE1C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACzD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAE7E,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACzD,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CACzB,OAAO,CAAC,gBAAgB,EACxB,IAAA,2BAAmB,EAAC,OAAO,CAAC,EAC5B,0BAAiB,CAClB,CAAC;QACF,OAAO,EAAE,CAAC,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;QACL,GAAG,EAAE;YACH,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,CAAC;SACL;QACD,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC9D,CAAC;AACJ,CAAC,CAAC;AA7BS,QAAA,WAAW,eA6BpB"}
@@ -16,6 +16,6 @@ export type ICPGetAddrResponse = {
16
16
  export interface ICPSigner {
17
17
  showAddressAndPubKey(path: string): Promise<ICPGetAddrResponse>;
18
18
  getAddressAndPubKey(path: string): Promise<ICPGetAddrResponse>;
19
- sign(path: string, message: Buffer): Promise<ICPSignature>;
19
+ sign(path: string, message: Buffer, txtype: number): Promise<ICPSignature>;
20
20
  }
21
21
  //# sourceMappingURL=signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/types/signer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5D"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/types/signer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5E"}
@@ -1,7 +1,12 @@
1
- import { TransactionWithId } from "@zondax/ledger-live-icp";
2
- import BigNumber from "bignumber.js";
3
- export declare const fetchBlockHeight: () => Promise<BigNumber>;
4
- export declare const broadcastTxn: (payload: Buffer, canisterId: string, type: "call" | "read_state") => Promise<ArrayBuffer>;
5
- export declare const fetchBalance: (address: string) => Promise<BigNumber>;
6
- export declare const fetchTxns: (address: string, startBlockHeight: bigint, stopBlockHeight?: bigint) => Promise<TransactionWithId[]>;
1
+ import { ICPRosettaBlockHeightResponse, ICPRosettaGetBalancesResponse, ICPRosettaGetTxnsHistoryResponse } from "../bridge/bridgeHelpers/icpRosetta/types";
2
+ export declare const getICPRosettaNetworkIdentifier: () => {
3
+ network_identifier: {
4
+ blockchain: string;
5
+ network: string;
6
+ };
7
+ };
8
+ export declare const fetchBlockHeight: () => Promise<ICPRosettaBlockHeightResponse>;
9
+ export declare const fetchBalances: (accountId: string) => Promise<ICPRosettaGetBalancesResponse>;
10
+ export declare const fetchTxns: (accountId: string) => Promise<ICPRosettaGetTxnsHistoryResponse>;
11
+ export declare const constructionInvoke: <TRequest, TResponse>(opts: TRequest, method: string) => Promise<TResponse>;
7
12
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAQA,OAAO,EAQL,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,SAAS,MAAM,cAAc,CAAC;AAKrC,eAAO,MAAM,gBAAgB,QAAa,QAAQ,SAAS,CA0B1D,CAAC;AAEF,eAAO,MAAM,YAAY,YACd,MAAM,cACH,MAAM,QACZ,MAAM,GAAG,YAAY,yBAgB5B,CAAC;AAEF,eAAO,MAAM,YAAY,YAAmB,MAAM,KAAG,QAAQ,SAAS,CAuBrE,CAAC;AAEF,eAAO,MAAM,SAAS,YACX,MAAM,oBACG,MAAM,+BAEvB,QAAQ,iBAAiB,EAAE,CA6C7B,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,gCAAgC,EACjC,MAAM,0CAA0C,CAAC;AA8BlD,eAAO,MAAM,8BAA8B;;;;;CAO1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAa,QAAQ,6BAA6B,CAM9E,CAAC;AAEF,eAAO,MAAM,aAAa,cAAqB,MAAM,KAAG,QAAQ,6BAA6B,CAU5F,CAAC;AAEF,eAAO,MAAM,SAAS,cAAqB,MAAM,KAAG,QAAQ,gCAAgC,CAU3F,CAAC;AAEF,eAAO,MAAM,kBAAkB,8BACvB,QAAQ,UACN,MAAM,KACb,QAAQ,SAAS,CAQnB,CAAC"}
package/lib-es/api/api.js CHANGED
@@ -1,90 +1,69 @@
1
1
  import { log } from "@ledgerhq/logs";
2
- import { FETCH_TXNS_LIMIT, MAINNET_INDEX_CANISTER_ID, MAINNET_LEDGER_CANISTER_ID, ICP_NETWORK_URL, } from "../consts";
3
- import { ledgerIdlFactory, indexIdlFactory, getCanisterIdlFunc, Principal, encodeCanisterIdlFunc, decodeCanisterIdlFunc, } from "@zondax/ledger-live-icp";
4
- import BigNumber from "bignumber.js";
5
- import { fromNullable } from "@zondax/ledger-live-icp/utils";
6
- import { getAgent } from "@zondax/ledger-live-icp/agent";
7
- import invariant from "invariant";
8
- export const fetchBlockHeight = async () => {
9
- const canisterId = Principal.fromText(MAINNET_LEDGER_CANISTER_ID);
10
- const queryBlocksRawRequest = {
11
- start: BigInt(0),
12
- length: BigInt(1),
13
- };
14
- const queryBlocksIdlFunc = getCanisterIdlFunc(ledgerIdlFactory, "query_blocks");
15
- const queryBlocksargs = encodeCanisterIdlFunc(queryBlocksIdlFunc, [queryBlocksRawRequest]);
16
- const agent = await getAgent(ICP_NETWORK_URL);
17
- const blockHeightRes = await agent.query(canisterId, {
18
- arg: queryBlocksargs,
19
- methodName: "query_blocks",
20
- });
21
- invariant(blockHeightRes.status === "replied", "[ICP](fetchBlockHeight) Query failed");
22
- const decodedIdl = decodeCanisterIdlFunc(queryBlocksIdlFunc, blockHeightRes.reply.arg);
23
- const decoded = fromNullable(decodedIdl);
24
- invariant(decoded, "[ICP](fetchBlockHeight) Decoding failed");
25
- return BigNumber(decoded.chain_length.toString());
2
+ import { getEnv } from "@ledgerhq/live-env";
3
+ import network from "@ledgerhq/live-network/network";
4
+ import { ICP_BLK_NAME_ROSETTA, ICP_NET_ID_ROSETTA } from "../consts";
5
+ const getICPURL = (path) => {
6
+ const baseUrl = getEnv("API_ICP_ENDPOINT");
7
+ if (!baseUrl)
8
+ throw new Error("API base URL not available");
9
+ return `${baseUrl}${path ? path : ""}`;
26
10
  };
27
- export const broadcastTxn = async (payload, canisterId, type) => {
28
- log("debug", `[ICP] Broadcasting ${type} to ${canisterId}, body: ${payload.toString("hex")}`);
29
- const res = await fetch(`${ICP_NETWORK_URL}/api/v3/canister/${canisterId}/${type}`, {
30
- body: payload,
11
+ const ICPFetchWrapper = async (path, body) => {
12
+ const url = getICPURL(path);
13
+ // We force data to this way as network func is not using the correct param type. Changing that func will generate errors in other implementations
14
+ const opts = {
31
15
  method: "POST",
32
- headers: {
33
- "Content-Type": "application/cbor",
34
- },
35
- });
36
- if (res.status === 200) {
37
- return await res.arrayBuffer();
16
+ data: body,
17
+ url,
18
+ };
19
+ const rawResponse = await network(opts);
20
+ if (rawResponse && rawResponse.data && rawResponse.data.details?.error_message) {
21
+ log("error", rawResponse.data.details?.error_message);
38
22
  }
39
- throw new Error(`Failed to broadcast transaction: ${res.text()}`);
23
+ // We force data to this way as network func is not using the correct param type. Changing that func will generate errors in other implementations
24
+ const { data } = rawResponse;
25
+ log("http", url);
26
+ return data;
40
27
  };
41
- export const fetchBalance = async (address) => {
42
- const agent = await getAgent(ICP_NETWORK_URL);
43
- const indexCanister = Principal.fromText(MAINNET_INDEX_CANISTER_ID);
44
- const getBalanceIdlFunc = getCanisterIdlFunc(indexIdlFactory, "get_account_identifier_balance");
45
- const getBalanceArgs = encodeCanisterIdlFunc(getBalanceIdlFunc, [address]);
46
- const balanceRes = await agent.query(indexCanister, {
47
- arg: getBalanceArgs,
48
- methodName: "get_account_identifier_balance",
49
- });
50
- if (balanceRes.status !== "replied") {
51
- log("debug", `[ICP](fetchBalance) Query failed: ${balanceRes.status}`);
52
- return BigNumber(0);
53
- }
54
- const decodedBalance = decodeCanisterIdlFunc(getBalanceIdlFunc, balanceRes.reply.arg);
55
- const balance = fromNullable(decodedBalance);
56
- if (!balance) {
57
- return BigNumber(0);
58
- }
59
- return BigNumber(balance.toString());
28
+ export const getICPRosettaNetworkIdentifier = () => {
29
+ return {
30
+ network_identifier: {
31
+ blockchain: ICP_BLK_NAME_ROSETTA,
32
+ network: ICP_NET_ID_ROSETTA,
33
+ },
34
+ };
60
35
  };
61
- export const fetchTxns = async (address, startBlockHeight, stopBlockHeight = BigInt(0)) => {
62
- if (startBlockHeight <= stopBlockHeight) {
63
- return [];
64
- }
65
- const agent = await getAgent(ICP_NETWORK_URL);
66
- const canisterId = Principal.fromText(MAINNET_INDEX_CANISTER_ID);
67
- const transactionsRawRequest = {
68
- account_identifier: address,
69
- start: [startBlockHeight],
70
- max_results: BigInt(FETCH_TXNS_LIMIT),
36
+ export const fetchBlockHeight = async () => {
37
+ const data = await ICPFetchWrapper("network/status", getICPRosettaNetworkIdentifier());
38
+ return data;
39
+ };
40
+ export const fetchBalances = async (accountId) => {
41
+ const body = {
42
+ ...getICPRosettaNetworkIdentifier(),
43
+ account_identifier: {
44
+ address: accountId,
45
+ metadata: {},
46
+ },
71
47
  };
72
- const getTransactionsIdlFunc = getCanisterIdlFunc(indexIdlFactory, "get_account_identifier_transactions");
73
- const getTransactionsArgs = encodeCanisterIdlFunc(getTransactionsIdlFunc, [
74
- transactionsRawRequest,
75
- ]);
76
- const transactionsRes = await agent.query(canisterId, {
77
- arg: getTransactionsArgs,
78
- methodName: "get_account_identifier_transactions",
79
- });
80
- invariant(transactionsRes.status === "replied", "[ICP](fetchTxns) Query failed");
81
- const decodedTransactions = decodeCanisterIdlFunc(getTransactionsIdlFunc, transactionsRes.reply.arg);
82
- const response = fromNullable(decodedTransactions);
83
- invariant(response, "[ICP](fetchTxns) Decoding failed");
84
- if (response.Ok.transactions.length === 0) {
85
- return [];
86
- }
87
- const nextTxns = await fetchTxns(address, response.Ok.transactions.at(-1)?.id ?? BigInt(0), stopBlockHeight);
88
- return [...response.Ok.transactions, ...nextTxns];
48
+ const data = await ICPFetchWrapper("account/balance", body);
49
+ return data;
50
+ };
51
+ export const fetchTxns = async (accountId) => {
52
+ const body = {
53
+ ...getICPRosettaNetworkIdentifier(),
54
+ account_identifier: {
55
+ address: accountId,
56
+ metadata: {},
57
+ },
58
+ };
59
+ const data = await ICPFetchWrapper("search/transactions", body);
60
+ return data;
61
+ };
62
+ export const constructionInvoke = async (opts, method) => {
63
+ const body = {
64
+ ...opts,
65
+ };
66
+ const data = await ICPFetchWrapper(`construction/${method}`, body);
67
+ return data;
89
68
  };
90
69
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAiBjF,eAAO,MAAM,eAAe,EAAE,eAyC7B,CAAC"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAcjF,eAAO,MAAM,eAAe,EAAE,eAmC7B,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { decodeAccountId, encodeAccountId } from "@ledgerhq/coin-framework/account/index";
2
- import { fetchBalance, fetchBlockHeight, fetchTxns } from "../../api";
2
+ import { fetchBalances, fetchBlockHeight, fetchTxns } from "../../api";
3
3
  import flatMap from "lodash/flatMap";
4
4
  import BigNumber from "bignumber.js";
5
5
  import { ICP_FEES } from "../../consts";
6
6
  import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
7
7
  import { normalizeEpochTimestamp } from "../../common-logic/utils";
8
8
  import invariant from "invariant";
9
- import { deriveAddressFromPubkey, hashTransaction, } from "@zondax/ledger-live-icp";
9
+ import { deriveAddressFromPubkey } from "./icpRosetta";
10
10
  export const getAccountShape = async (info) => {
11
11
  const { currency, derivationMode, rest = {}, initialAccount } = info;
12
12
  const publicKey = reconciliatePublicKey(rest.publicKey, initialAccount);
@@ -23,15 +23,16 @@ export const getAccountShape = async (info) => {
23
23
  });
24
24
  // log("debug", `Generation account shape for ${address}`);
25
25
  const blockHeight = await fetchBlockHeight();
26
- const balance = await fetchBalance(address);
27
- const txns = await fetchTxns(address, BigInt(blockHeight.toString()), initialAccount ? BigInt(initialAccount.blockHeight.toString()) : undefined);
26
+ const balanceResp = await fetchBalances(address);
27
+ const balance = balanceResp.balances[0];
28
+ const txns = await fetchTxns(address);
28
29
  const result = {
29
30
  id: accountId,
30
- balance,
31
- spendableBalance: balance,
32
- operations: flatMap(txns, mapTxToOps(accountId, address)),
33
- blockHeight: blockHeight.toNumber(),
34
- operationsCount: (initialAccount?.operations.length ?? 0) + txns.length,
31
+ balance: BigNumber(balance.value),
32
+ spendableBalance: BigNumber(balance.value),
33
+ operations: flatMap(txns.transactions.reverse(), mapTxToOps(accountId, address)),
34
+ blockHeight: blockHeight.current_block_identifier.index,
35
+ operationsCount: txns.transactions.length,
35
36
  xpub: publicKey,
36
37
  };
37
38
  return result;
@@ -47,56 +48,36 @@ function reconciliatePublicKey(publicKey, initialAccount) {
47
48
  }
48
49
  const mapTxToOps = (accountId, address, fee = ICP_FEES) => {
49
50
  return (txInfo) => {
50
- const { transaction: txn } = txInfo;
51
51
  const ops = [];
52
- if (txn.operation === undefined) {
53
- return [];
54
- }
55
- if ("Transfer" in txn.operation === undefined) {
56
- return [];
57
- }
58
- const timeStamp = txn.timestamp[0]?.timestamp_nanos ?? Date.now();
59
- let amount = BigNumber(0);
60
- let fromAccount = "";
61
- let toAccount = "";
62
- let hash = "";
63
- if ("Transfer" in txn.operation) {
64
- amount = BigNumber(txn.operation.Transfer.amount.e8s.toString());
65
- fromAccount = txn.operation.Transfer.from;
66
- toAccount = txn.operation.Transfer.to;
67
- hash = hashTransaction({
68
- from: fromAccount,
69
- to: toAccount,
70
- amount: txn.operation.Transfer.amount.e8s,
71
- fee: txn.operation.Transfer.fee.e8s,
72
- memo: txn.memo,
73
- created_at_time: txn.created_at_time[0]?.timestamp_nanos ?? BigInt(0),
74
- });
75
- }
76
- const blockHeight = Number(txInfo.id);
77
- const blockHash = "";
78
- const memo = txInfo.transaction.memo.toString();
52
+ const ownerOperation = txInfo.transaction.operations.find(cur => cur.account.address === address);
53
+ const counterOperation = txInfo.transaction.operations.find(cur => cur.account.address !== address);
54
+ if (!ownerOperation || !counterOperation)
55
+ return ops;
56
+ const timeStamp = txInfo.transaction.metadata.timestamp;
57
+ const amount = BigNumber(ownerOperation.amount.value);
58
+ const hash = txInfo.transaction.transaction_identifier.hash;
59
+ const fromAccount = amount.isPositive()
60
+ ? counterOperation.account.address
61
+ : ownerOperation.account.address;
62
+ const toAccount = amount.isNegative()
63
+ ? counterOperation.account.address
64
+ : ownerOperation.account.address;
65
+ const memo = txInfo.transaction.metadata.memo.toString();
66
+ const blockHeight = txInfo.transaction.metadata.block_height;
79
67
  const date = new Date(normalizeEpochTimestamp(timeStamp.toString()));
80
68
  const value = amount.abs();
81
69
  const feeToUse = BigNumber(fee);
82
- const isSending = address === fromAccount;
83
- const isReceiving = address === toAccount;
84
- let type;
85
- if (isSending) {
86
- type = "OUT";
87
- }
88
- else {
89
- type = "IN";
90
- }
70
+ const isSending = amount.isNegative();
71
+ const isReceiving = amount.isPositive();
91
72
  if (isSending) {
92
73
  ops.push({
93
- id: encodeOperationId(accountId, hash, type),
74
+ id: encodeOperationId(accountId, hash, "OUT"),
94
75
  hash,
95
- type,
76
+ type: "OUT",
96
77
  value: value.plus(feeToUse),
97
78
  fee: feeToUse,
98
79
  blockHeight,
99
- blockHash,
80
+ blockHash: null,
100
81
  accountId,
101
82
  senders: [fromAccount],
102
83
  recipients: [toAccount],
@@ -108,13 +89,13 @@ const mapTxToOps = (accountId, address, fee = ICP_FEES) => {
108
89
  }
109
90
  if (isReceiving) {
110
91
  ops.push({
111
- id: encodeOperationId(accountId, hash, type),
92
+ id: encodeOperationId(accountId, hash, "IN"),
112
93
  hash,
113
- type,
94
+ type: "IN",
114
95
  value,
115
96
  fee: feeToUse,
116
97
  blockHeight,
117
- blockHash,
98
+ blockHash: null,
118
99
  accountId,
119
100
  senders: [fromAccount],
120
101
  recipients: [toAccount],
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/account.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,10 @@ export declare const getAddress: (a: Account) => {
3
3
  address: string;
4
4
  derivationPath: string;
5
5
  };
6
+ export declare function validateAddress(address: string): Promise<{
7
+ isValid: boolean;
8
+ }>;
9
+ export declare function validateMemo(memo?: string): {
10
+ isValid: boolean;
11
+ };
6
12
  //# sourceMappingURL=addresses.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/addresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,eAAO,MAAM,UAAU,MAClB,OAAO,KACT;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CAC6C,CAAC"}
1
+ {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/addresses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAK/C,eAAO,MAAM,UAAU,MAClB,OAAO,KACT;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CAC6C,CAAC;AAEvE,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CASpF;AAED,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAQhE"}
@@ -1,2 +1,25 @@
1
+ import { log } from "@ledgerhq/logs";
2
+ import BigNumber from "bignumber.js";
3
+ import { MAX_MEMO_VALUE } from "../../consts";
4
+ import { fetchBalances } from "../../api";
1
5
  export const getAddress = (a) => ({ address: a.freshAddress, derivationPath: a.freshAddressPath });
6
+ export async function validateAddress(address) {
7
+ try {
8
+ const res = await fetchBalances(address);
9
+ if (!res.balances)
10
+ throw Error(res.details?.error_message);
11
+ return { isValid: true };
12
+ }
13
+ catch (e) {
14
+ log("error", e.message ?? "Failed to validate address");
15
+ return { isValid: false };
16
+ }
17
+ }
18
+ export function validateMemo(memo) {
19
+ const res = BigNumber(memo ?? 0);
20
+ if (res.isNaN() || res.lt(0) || res.gt(BigNumber(MAX_MEMO_VALUE))) {
21
+ return { isValid: false };
22
+ }
23
+ return { isValid: true };
24
+ }
2
25
  //# sourceMappingURL=addresses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/addresses.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,CAAU,EAIV,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/bridge/bridgeHelpers/addresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,CAAU,EAIV,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,QAAQ;YAAE,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,4BAA4B,CAAC,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAEjC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}