@ledgerhq/live-common 24.0.0-next.0 → 24.0.0-next.3

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 (158) hide show
  1. package/lib/env.d.ts +16 -6
  2. package/lib/env.d.ts.map +1 -1
  3. package/lib/env.js +11 -1
  4. package/lib/env.js.map +1 -1
  5. package/lib/env.react.d.ts +1 -1
  6. package/lib/env.react.d.ts.map +1 -1
  7. package/lib/errors.d.ts +0 -3
  8. package/lib/errors.d.ts.map +1 -1
  9. package/lib/errors.js +2 -3
  10. package/lib/errors.js.map +1 -1
  11. package/lib/exchange/index.d.ts +5 -0
  12. package/lib/exchange/index.d.ts.map +1 -1
  13. package/lib/exchange/index.js.map +1 -1
  14. package/lib/exchange/swap/checkQuote.d.ts +4 -0
  15. package/lib/exchange/swap/checkQuote.d.ts.map +1 -0
  16. package/lib/exchange/swap/checkQuote.js +80 -0
  17. package/lib/exchange/swap/checkQuote.js.map +1 -0
  18. package/lib/exchange/swap/checkQuote.test.d.ts +2 -0
  19. package/lib/exchange/swap/checkQuote.test.d.ts.map +1 -0
  20. package/lib/exchange/swap/checkQuote.test.js +103 -0
  21. package/lib/exchange/swap/checkQuote.test.js.map +1 -0
  22. package/lib/exchange/swap/completeExchange.d.ts.map +1 -1
  23. package/lib/exchange/swap/completeExchange.js +9 -9
  24. package/lib/exchange/swap/completeExchange.js.map +1 -1
  25. package/lib/exchange/swap/getExchangeRates.d.ts.map +1 -1
  26. package/lib/exchange/swap/getExchangeRates.js +3 -1
  27. package/lib/exchange/swap/getExchangeRates.js.map +1 -1
  28. package/lib/exchange/swap/getProviders.d.ts.map +1 -1
  29. package/lib/exchange/swap/getProviders.js +10 -4
  30. package/lib/exchange/swap/getProviders.js.map +1 -1
  31. package/lib/exchange/swap/getStatus.d.ts +1 -3
  32. package/lib/exchange/swap/getStatus.d.ts.map +1 -1
  33. package/lib/exchange/swap/getStatus.js +2 -30
  34. package/lib/exchange/swap/getStatus.js.map +1 -1
  35. package/lib/exchange/swap/hooks/useProviderRates.d.ts +3 -4
  36. package/lib/exchange/swap/hooks/useProviderRates.d.ts.map +1 -1
  37. package/lib/exchange/swap/hooks/useProviderRates.js +35 -5
  38. package/lib/exchange/swap/hooks/useProviderRates.js.map +1 -1
  39. package/lib/exchange/swap/hooks/useProviderRates.test.js +106 -1
  40. package/lib/exchange/swap/hooks/useProviderRates.test.js.map +1 -1
  41. package/lib/exchange/swap/hooks/useSwapTransaction.d.ts +5 -4
  42. package/lib/exchange/swap/hooks/useSwapTransaction.d.ts.map +1 -1
  43. package/lib/exchange/swap/hooks/useSwapTransaction.js +6 -6
  44. package/lib/exchange/swap/hooks/useSwapTransaction.js.map +1 -1
  45. package/lib/exchange/swap/hooks/useUpdateMaxAmount.d.ts +4 -3
  46. package/lib/exchange/swap/hooks/useUpdateMaxAmount.d.ts.map +1 -1
  47. package/lib/exchange/swap/hooks/useUpdateMaxAmount.js +8 -5
  48. package/lib/exchange/swap/hooks/useUpdateMaxAmount.js.map +1 -1
  49. package/lib/exchange/swap/hooks/useUpdateMaxAmount.test.js +35 -4
  50. package/lib/exchange/swap/hooks/useUpdateMaxAmount.test.js.map +1 -1
  51. package/lib/exchange/swap/index.d.ts +10 -8
  52. package/lib/exchange/swap/index.d.ts.map +1 -1
  53. package/lib/exchange/swap/index.js +43 -18
  54. package/lib/exchange/swap/index.js.map +1 -1
  55. package/lib/exchange/swap/index.test.d.ts +2 -0
  56. package/lib/exchange/swap/index.test.d.ts.map +1 -0
  57. package/lib/exchange/swap/index.test.js +30 -0
  58. package/lib/exchange/swap/index.test.js.map +1 -0
  59. package/lib/exchange/swap/initSwap.d.ts +1 -1
  60. package/lib/exchange/swap/initSwap.d.ts.map +1 -1
  61. package/lib/exchange/swap/initSwap.js +30 -25
  62. package/lib/exchange/swap/initSwap.js.map +1 -1
  63. package/lib/exchange/swap/mock.d.ts +5 -2
  64. package/lib/exchange/swap/mock.d.ts.map +1 -1
  65. package/lib/exchange/swap/mock.js +127 -6
  66. package/lib/exchange/swap/mock.js.map +1 -1
  67. package/lib/exchange/swap/postSwapState.d.ts +4 -0
  68. package/lib/exchange/swap/postSwapState.d.ts.map +1 -0
  69. package/lib/exchange/swap/postSwapState.js +121 -0
  70. package/lib/exchange/swap/postSwapState.js.map +1 -0
  71. package/lib/exchange/swap/types.d.ts +30 -2
  72. package/lib/exchange/swap/types.d.ts.map +1 -1
  73. package/lib/exchange/swap/updateAccountSwapStatus.d.ts.map +1 -1
  74. package/lib/exchange/swap/updateAccountSwapStatus.js +2 -2
  75. package/lib/exchange/swap/updateAccountSwapStatus.js.map +1 -1
  76. package/lib/exchange/swap/utils/index.d.ts +19 -2
  77. package/lib/exchange/swap/utils/index.d.ts.map +1 -1
  78. package/lib/exchange/swap/utils/index.js +96 -20
  79. package/lib/exchange/swap/utils/index.js.map +1 -1
  80. package/lib/exchange/swap/utils/index.test.js +95 -48
  81. package/lib/exchange/swap/utils/index.test.js.map +1 -1
  82. package/lib/families/ethereum/modules/erc1155.d.ts.map +1 -1
  83. package/lib/families/ethereum/modules/erc1155.js +5 -1
  84. package/lib/families/ethereum/modules/erc1155.js.map +1 -1
  85. package/lib/families/ethereum/modules/erc721.d.ts.map +1 -1
  86. package/lib/families/ethereum/modules/erc721.js +5 -0
  87. package/lib/families/ethereum/modules/erc721.js.map +1 -1
  88. package/lib/families/ethereum/nft.unit.test.js +35 -15
  89. package/lib/families/ethereum/nft.unit.test.js.map +1 -1
  90. package/lib/families/ethereum/synchronisation.d.ts.map +1 -1
  91. package/lib/families/ethereum/synchronisation.js +17 -13
  92. package/lib/families/ethereum/synchronisation.js.map +1 -1
  93. package/lib/families/solana/api/chain/account/token.d.ts +1 -1
  94. package/lib/families/solana/api/chain/account/vote.d.ts +12 -12
  95. package/lib/families/solana/api/chain/instruction/system/types.d.ts +4 -4
  96. package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
  97. package/lib/featureFlags/defaultFeatures.js +3 -0
  98. package/lib/featureFlags/defaultFeatures.js.map +1 -1
  99. package/lib/featureFlags/types.d.ts +1 -1
  100. package/lib/featureFlags/types.d.ts.map +1 -1
  101. package/lib/hw/actions/initSwap.d.ts +4 -3
  102. package/lib/hw/actions/initSwap.d.ts.map +1 -1
  103. package/lib/hw/actions/initSwap.js +7 -5
  104. package/lib/hw/actions/initSwap.js.map +1 -1
  105. package/lib/nft/hook.d.ts +3 -0
  106. package/lib/nft/hook.d.ts.map +1 -0
  107. package/lib/nft/hook.js +73 -0
  108. package/lib/nft/hook.js.map +1 -0
  109. package/lib/nft/index.d.ts +1 -0
  110. package/lib/nft/index.d.ts.map +1 -1
  111. package/lib/nft/index.js +1 -0
  112. package/lib/nft/index.js.map +1 -1
  113. package/lib/nft/nftOperationId.d.ts +15 -0
  114. package/lib/nft/nftOperationId.d.ts.map +1 -0
  115. package/lib/nft/nftOperationId.js +50 -0
  116. package/lib/nft/nftOperationId.js.map +1 -0
  117. package/lib/operation.d.ts +1 -1
  118. package/lib/operation.d.ts.map +1 -1
  119. package/lib/operation.js +23 -1
  120. package/lib/operation.js.map +1 -1
  121. package/lib/types/nft.d.ts +4 -0
  122. package/lib/types/nft.d.ts.map +1 -1
  123. package/package.json +4 -1
  124. package/src/env.ts +12 -2
  125. package/src/errors.ts +0 -1
  126. package/src/exchange/index.ts +7 -0
  127. package/src/exchange/swap/checkQuote.test.ts +53 -0
  128. package/src/exchange/swap/checkQuote.ts +34 -0
  129. package/src/exchange/swap/completeExchange.ts +9 -11
  130. package/src/exchange/swap/getExchangeRates.ts +5 -3
  131. package/src/exchange/swap/getProviders.ts +12 -4
  132. package/src/exchange/swap/getStatus.ts +2 -12
  133. package/src/exchange/swap/hooks/useProviderRates.test.ts +103 -1
  134. package/src/exchange/swap/hooks/useProviderRates.ts +57 -9
  135. package/src/exchange/swap/hooks/useSwapTransaction.ts +14 -13
  136. package/src/exchange/swap/hooks/useUpdateMaxAmount.test.ts +31 -4
  137. package/src/exchange/swap/hooks/useUpdateMaxAmount.ts +13 -7
  138. package/src/exchange/swap/index.test.ts +36 -0
  139. package/src/exchange/swap/index.ts +51 -30
  140. package/src/exchange/swap/initSwap.ts +54 -40
  141. package/src/exchange/swap/mock.ts +128 -13
  142. package/src/exchange/swap/postSwapState.ts +61 -0
  143. package/src/exchange/swap/types.ts +68 -5
  144. package/src/exchange/swap/updateAccountSwapStatus.ts +4 -4
  145. package/src/exchange/swap/utils/index.test.ts +127 -63
  146. package/src/exchange/swap/utils/index.ts +128 -23
  147. package/src/families/ethereum/modules/erc1155.ts +12 -5
  148. package/src/families/ethereum/modules/erc721.ts +11 -0
  149. package/src/families/ethereum/nft.unit.test.ts +24 -17
  150. package/src/families/ethereum/synchronisation.ts +22 -18
  151. package/src/featureFlags/defaultFeatures.ts +3 -0
  152. package/src/featureFlags/types.ts +1 -0
  153. package/src/hw/actions/initSwap.ts +20 -9
  154. package/src/nft/hook.ts +29 -0
  155. package/src/nft/index.ts +1 -0
  156. package/src/nft/nftOperationId.ts +47 -0
  157. package/src/operation.ts +50 -1
  158. package/src/types/nft.ts +5 -0
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ exports.__esModule = true;
42
+ exports.getFloorPrice = void 0;
43
+ var env_1 = require("../env");
44
+ var network_1 = __importDefault(require("../network"));
45
+ var FLOOR_PRICE_CURRENCIES = new Set(["ethereum"]);
46
+ var getFloorPrice = function (nft, currency) { return __awaiter(void 0, void 0, void 0, function () {
47
+ var data, err_1;
48
+ var _a;
49
+ return __generator(this, function (_b) {
50
+ switch (_b.label) {
51
+ case 0:
52
+ if (!FLOOR_PRICE_CURRENCIES.has(nft.currencyId)) {
53
+ return [2 /*return*/, null];
54
+ }
55
+ _b.label = 1;
56
+ case 1:
57
+ _b.trys.push([1, 3, , 4]);
58
+ return [4 /*yield*/, (0, network_1["default"])({
59
+ method: "GET",
60
+ url: "".concat((0, env_1.getEnv)("NFT_ETH_METADATA_SERVICE"), "/v1/marketdata/").concat(nft.currencyId, "/").concat((_a = currency === null || currency === void 0 ? void 0 : currency.ethereumLikeInfo) === null || _a === void 0 ? void 0 : _a.chainId, "/contract/").concat(nft.contract, "/floor-price")
61
+ })];
62
+ case 2:
63
+ data = (_b.sent()).data;
64
+ return [2 /*return*/, data];
65
+ case 3:
66
+ err_1 = _b.sent();
67
+ return [2 /*return*/, null];
68
+ case 4: return [2 /*return*/];
69
+ }
70
+ });
71
+ }); };
72
+ exports.getFloorPrice = getFloorPrice;
73
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/nft/hook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8BAAgC;AAChC,uDAAiC;AAEjC,IAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAE9C,IAAM,aAAa,GAAG,UAC3B,GAAa,EACb,QAAwB;;;;;;gBAExB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;oBAC/C,sBAAO,IAAI,EAAC;iBACb;;;;gBAGkB,qBAAM,IAAA,oBAAO,EAAC;wBAC7B,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,UAAG,IAAA,YAAM,EAAC,0BAA0B,CAAC,4BACxC,GAAG,CAAC,UAAU,cACZ,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,0CAAE,OAAO,uBACrC,GAAG,CAAC,QAAQ,iBACA;qBACf,CAAC,EAAA;;gBAPM,IAAI,GAAK,CAAA,SAOf,CAAA,KAPU;gBASZ,sBAAO,IAAI,EAAC;;;gBAEZ,sBAAO,IAAI,EAAC;;;;KAEf,CAAC;AAtBW,QAAA,aAAa,iBAsBxB"}
@@ -1,5 +1,6 @@
1
1
  export * from "./nftId";
2
2
  export * from "./helpers";
3
3
  export * from "./support";
4
+ export * from "./hook";
4
5
  export * from "./NftMetadataProvider";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nft/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nft/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC"}
package/lib/nft/index.js CHANGED
@@ -17,5 +17,6 @@ exports.__esModule = true;
17
17
  __exportStar(require("./nftId"), exports);
18
18
  __exportStar(require("./helpers"), exports);
19
19
  __exportStar(require("./support"), exports);
20
+ __exportStar(require("./hook"), exports);
20
21
  __exportStar(require("./NftMetadataProvider"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nft/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,wDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nft/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,yCAAuB;AACvB,wDAAsC"}
@@ -0,0 +1,15 @@
1
+ export declare function encodeERC721OperationId(nftId: string, hash: string, type: string): string;
2
+ export declare function decodeERC721OperationId(id: string): {
3
+ nftId: string;
4
+ hash: string;
5
+ type: string;
6
+ };
7
+ export declare function encodeERC1155OperationId(nftId: string, hash: string, type: string, i?: number, j?: number): string;
8
+ export declare function decodeERC1155OperationId(id: string): {
9
+ nftId: string;
10
+ hash: string;
11
+ type: string;
12
+ i: number;
13
+ j: number;
14
+ };
15
+ //# sourceMappingURL=nftOperationId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nftOperationId.d.ts","sourceRoot":"","sources":["../../src/nft/nftOperationId.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,CAAC,SAAI,EACL,CAAC,SAAI,GACJ,MAAM,CAER;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CASA"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ exports.__esModule = true;
19
+ exports.decodeERC1155OperationId = exports.encodeERC1155OperationId = exports.decodeERC721OperationId = exports.encodeERC721OperationId = void 0;
20
+ function encodeERC721OperationId(nftId, hash, type) {
21
+ return "".concat(nftId, "-").concat(hash, "-").concat(type);
22
+ }
23
+ exports.encodeERC721OperationId = encodeERC721OperationId;
24
+ function decodeERC721OperationId(id) {
25
+ var _a = __read(id.split("-"), 3), nftId = _a[0], hash = _a[1], type = _a[2];
26
+ return {
27
+ nftId: nftId,
28
+ hash: hash,
29
+ type: type
30
+ };
31
+ }
32
+ exports.decodeERC721OperationId = decodeERC721OperationId;
33
+ function encodeERC1155OperationId(nftId, hash, type, i, j) {
34
+ if (i === void 0) { i = 0; }
35
+ if (j === void 0) { j = 0; }
36
+ return "".concat(nftId, "-").concat(hash, "-").concat(type, "-i").concat(i, "_").concat(j);
37
+ }
38
+ exports.encodeERC1155OperationId = encodeERC1155OperationId;
39
+ function decodeERC1155OperationId(id) {
40
+ var _a = __read(id.split("-"), 5), nftId = _a[0], hash = _a[1], type = _a[2], i = _a[3], j = _a[4];
41
+ return {
42
+ nftId: nftId,
43
+ hash: hash,
44
+ type: type,
45
+ i: Number(i),
46
+ j: Number(j)
47
+ };
48
+ }
49
+ exports.decodeERC1155OperationId = decodeERC1155OperationId;
50
+ //# sourceMappingURL=nftOperationId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nftOperationId.js","sourceRoot":"","sources":["../../src/nft/nftOperationId.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,SAAgB,uBAAuB,CACrC,KAAa,EACb,IAAY,EACZ,IAAY;IAEZ,OAAO,UAAG,KAAK,cAAI,IAAI,cAAI,IAAI,CAAE,CAAC;AACpC,CAAC;AAND,0DAMC;AAED,SAAgB,uBAAuB,CAAC,EAAU;IAK1C,IAAA,KAAA,OAAsB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAAlC,KAAK,QAAA,EAAE,IAAI,QAAA,EAAE,IAAI,QAAiB,CAAC;IAC1C,OAAO;QACL,KAAK,OAAA;QACL,IAAI,MAAA;QACJ,IAAI,MAAA;KACL,CAAC;AACJ,CAAC;AAXD,0DAWC;AAED,SAAgB,wBAAwB,CACtC,KAAa,EACb,IAAY,EACZ,IAAY,EACZ,CAAK,EACL,CAAK;IADL,kBAAA,EAAA,KAAK;IACL,kBAAA,EAAA,KAAK;IAEL,OAAO,UAAG,KAAK,cAAI,IAAI,cAAI,IAAI,eAAK,CAAC,cAAI,CAAC,CAAE,CAAC;AAC/C,CAAC;AARD,4DAQC;AAED,SAAgB,wBAAwB,CAAC,EAAU;IAO3C,IAAA,KAAA,OAA4B,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAAxC,KAAK,QAAA,EAAE,IAAI,QAAA,EAAE,IAAI,QAAA,EAAE,CAAC,QAAA,EAAE,CAAC,QAAiB,CAAC;IAChD,OAAO;QACL,KAAK,OAAA;QACL,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;KACb,CAAC;AACJ,CAAC;AAfD,4DAeC"}
@@ -1,5 +1,5 @@
1
1
  import { BigNumber } from "bignumber.js";
2
- import type { Account, AccountLike, Operation } from "./types";
2
+ import { Account, AccountLike, Operation } from "./types";
3
3
  export declare function findOperationInAccount({ operations, pendingOperations }: AccountLike, operationId: string): Operation | null | undefined;
4
4
  export declare function encodeOperationId(accountId: string, hash: string, type: string): string;
5
5
  export declare function decodeOperationId(id: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE/D,wBAAgB,sBAAsB,CACpC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAC9C,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,GAAG,SAAS,CA+B9B;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,GACX,SAAS,CAaX;AAED,wBAAgB,oCAAoC,CAClD,EAAE,EAAE,SAAS,GACZ,SAAS,EAAE,CAmBb;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAmCjE;AAED,wBAAgB,qCAAqC,CACnD,EAAE,EAAE,SAAS,GACZ,SAAS,CAKX;AAED,eAAO,MAAM,8BAA8B,cAC9B,SAAS,WACX,OAAO,KACf,MAC0E,CAAC;AAE9E,eAAO,MAAM,yCAAyC,cACzC,SAAS,WACX,OAAO,KACf,MAGK,CAAC;AAET,eAAO,MAAM,oBAAoB,cACpB,SAAS,WACX,OAAO,mBACC,MAAM,KACtB,OAGQ,CAAC"}
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,OAAO,EACL,OAAO,EACP,WAAW,EAGX,SAAS,EACV,MAAM,SAAS,CAAC;AAUjB,wBAAgB,sBAAsB,CACpC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAC9C,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,GAAG,SAAS,CAyC9B;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAOA;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,GACX,SAAS,CAiCX;AAED,wBAAgB,oCAAoC,CAClD,EAAE,EAAE,SAAS,GACZ,SAAS,EAAE,CAmBb;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,CAmCjE;AAED,wBAAgB,qCAAqC,CACnD,EAAE,EAAE,SAAS,GACZ,SAAS,CAKX;AAED,eAAO,MAAM,8BAA8B,cAC9B,SAAS,WACX,OAAO,KACf,MAC0E,CAAC;AAE9E,eAAO,MAAM,yCAAyC,cACzC,SAAS,WACX,OAAO,KACf,MAGK,CAAC;AAET,eAAO,MAAM,oBAAoB,cACpB,SAAS,WACX,OAAO,mBACC,MAAM,KACtB,OAGQ,CAAC"}
package/lib/operation.js CHANGED
@@ -29,6 +29,13 @@ var __read = (this && this.__read) || function (o, n) {
29
29
  exports.__esModule = true;
30
30
  exports.isConfirmedOperation = exports.getOperationConfirmationDisplayableNumber = exports.getOperationConfirmationNumber = exports.getOperationAmountNumberWithInternals = exports.getOperationAmountNumber = exports.flattenOperationWithInternalsAndNfts = exports.patchOperationWithHash = exports.decodeOperationId = exports.encodeOperationId = exports.findOperationInAccount = void 0;
31
31
  var bignumber_js_1 = require("bignumber.js");
32
+ var nft_1 = require("./nft");
33
+ var nftOperationId_1 = require("./nft/nftOperationId");
34
+ var types_1 = require("./types");
35
+ var nftOperationIdEncoderPerStandard = {
36
+ ERC721: nftOperationId_1.encodeERC721OperationId,
37
+ ERC1155: nftOperationId_1.encodeERC1155OperationId
38
+ };
32
39
  function findOperationInAccount(_a, operationId) {
33
40
  var operations = _a.operations, pendingOperations = _a.pendingOperations;
34
41
  for (var i = 0; i < operations.length; i++) {
@@ -56,6 +63,14 @@ function findOperationInAccount(_a, operationId) {
56
63
  var op = pendingOperations[i];
57
64
  if (op.id === operationId)
58
65
  return op;
66
+ if (op.nftOperations) {
67
+ var nftOps = op.nftOperations;
68
+ for (var j = 0; j < nftOps.length; j++) {
69
+ var nftOp = nftOps[j];
70
+ if (nftOp.id === operationId)
71
+ return nftOp;
72
+ }
73
+ }
59
74
  }
60
75
  return null;
61
76
  }
@@ -75,7 +90,14 @@ function decodeOperationId(id) {
75
90
  exports.decodeOperationId = decodeOperationId;
76
91
  function patchOperationWithHash(operation, hash) {
77
92
  return __assign(__assign({}, operation), { hash: hash, id: encodeOperationId(operation.accountId, hash, operation.type), subOperations: operation.subOperations &&
78
- operation.subOperations.map(function (op) { return (__assign(__assign({}, op), { hash: hash, id: encodeOperationId(op.accountId, hash, op.type) })); }) });
93
+ operation.subOperations.map(function (op) { return (__assign(__assign({}, op), { hash: hash, id: encodeOperationId(op.accountId, hash, op.type) })); }), nftOperations: operation.nftOperations &&
94
+ operation.nftOperations.map(function (nftOp, i) {
95
+ var currencyId = (0, types_1.decodeAccountId)(operation.accountId).currencyId;
96
+ var nftId = (0, nft_1.encodeNftId)(operation.accountId, nftOp.contract || "", nftOp.tokenId || "", currencyId);
97
+ var nftOperationIdEncoder = nftOperationIdEncoderPerStandard[(nftOp === null || nftOp === void 0 ? void 0 : nftOp.standard) || ""] ||
98
+ nftOperationIdEncoderPerStandard.ERC721;
99
+ return __assign(__assign({}, nftOp), { hash: hash, id: nftOperationIdEncoder(nftId, hash, nftOp.type, 0, i) });
100
+ }) });
79
101
  }
80
102
  exports.patchOperationWithHash = patchOperationWithHash;
81
103
  function flattenOperationWithInternalsAndNfts(op) {
@@ -1 +1 @@
1
- {"version":3,"file":"operation.js","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"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"}
@@ -53,4 +53,8 @@ export declare type NFTCollectionMetadataResponse = {
53
53
  tokenName: string | null;
54
54
  } | null;
55
55
  };
56
+ export declare type FloorPrice = {
57
+ ticker: string;
58
+ value: number;
59
+ };
56
60
  //# sourceMappingURL=nft.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nft.d.ts","sourceRoot":"","sources":["../../src/types/nft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAEtC,oBAAY,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C,oBAAY,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAE3D,oBAAY,SAAS,GAAG,MAAM,CAC5B,aAAa,EACb;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,oBAAY,QAAQ,GAAG;IAErB,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF,oBAAY,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG;IAC7C,QAAQ,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,oBAAY,yBAAyB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3E,oBAAY,mBAAmB,GAAG;IAChC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,EAAE,SAAS,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,KAAK,EAAE,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;KAClD,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,oBAAY,6BAA6B,GAAG;IAC1C,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,IAAI,CAAC;CACV,CAAC"}
1
+ {"version":3,"file":"nft.d.ts","sourceRoot":"","sources":["../../src/types/nft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAEtC,oBAAY,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C,oBAAY,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAE3D,oBAAY,SAAS,GAAG,MAAM,CAC5B,aAAa,EACb;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,oBAAY,QAAQ,GAAG;IAErB,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF,oBAAY,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG;IAC7C,QAAQ,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,oBAAY,yBAAyB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3E,oBAAY,mBAAmB,GAAG;IAChC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,EAAE,SAAS,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,KAAK,EAAE,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;KAClD,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,oBAAY,6BAA6B,GAAG;IAC1C,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "type": "git",
9
9
  "url": "https://github.com/LedgerHQ/ledger-live-common"
10
10
  },
11
- "version": "24.0.0-next.0",
11
+ "version": "24.0.0-next.3",
12
12
  "main": "lib/index.js",
13
13
  "types": "lib/index.d.ts",
14
14
  "license": "Apache-2.0",
@@ -89,6 +89,7 @@
89
89
  "@taquito/utils": "stablelib",
90
90
  "@types/bchaddrjs": "^0.4.0",
91
91
  "@types/bs58check": "^2.1.0",
92
+ "@types/qs": "^6.9.7",
92
93
  "@walletconnect/client": "1.7.3",
93
94
  "@xstate/react": "^1.6.3",
94
95
  "@zondax/ledger-filecoin": "^0.11.2",
@@ -127,6 +128,7 @@
127
128
  "invariant": "^2.2.2",
128
129
  "isomorphic-ws": "^4.0.1",
129
130
  "json-rpc-2.0": "^0.2.19",
131
+ "jwt-decode": "^3.1.2",
130
132
  "leb128": "^0.0.5",
131
133
  "lodash": "^4.17.21",
132
134
  "lru-cache": "5.1.1",
@@ -134,6 +136,7 @@
134
136
  "object-hash": "^2.2.0",
135
137
  "performance-now": "^2.1.0",
136
138
  "prando": "^6.0.1",
139
+ "qs": "^6.10.1",
137
140
  "redux": "^4.1.2",
138
141
  "reselect": "^4.1.5",
139
142
  "ripemd160": "^2.0.2",
package/src/env.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { $ElementType } from "utility-types";
1
+ import mapValues from "lodash/mapValues";
2
2
  // set and get environment & config variables
3
3
  import { Subject } from "rxjs";
4
- import mapValues from "lodash/mapValues";
4
+ import { $ElementType } from "utility-types";
5
5
  type EnvDef<V> = {
6
6
  desc: string;
7
7
  def: V;
@@ -400,6 +400,16 @@ const envDefinitions = {
400
400
  parser: stringParser,
401
401
  desc: "mock the server response for the exchange KYC check, options are 'open', 'pending', 'closed' or 'approved'.",
402
402
  },
403
+ MOCK_SWAP_CHECK_QUOTE: {
404
+ def: "",
405
+ parser: stringParser,
406
+ desc: "mock the server response for the exchange check quote, options are 'RATE_VALID', 'KYC_FAILED', 'KYC_PENDING', 'KYC_UNDEFINED', 'KYC_UPGRADE_REQUIRED', 'MFA_REQUIRED', 'OVER_TRADE_LIMIT', 'UNKNOW_USER' or 'UNKNOWN_ERROR'.",
407
+ },
408
+ MOCK_SWAP_WIDGET_BASE_URL: {
409
+ def: "",
410
+ parser: stringParser,
411
+ desc: "mock the FTX swap widget base url",
412
+ },
403
413
  /**
404
414
  * Note: the mocked cryptoassets config and test partner are signed with the
405
415
  * Ledger test private key
package/src/errors.ts CHANGED
@@ -160,7 +160,6 @@ export const SwapSubmitKYCFailed = createCustomErrorClass(
160
160
  "SwapSubmitKYCFailed"
161
161
  );
162
162
 
163
- export const SwapUnknownSwapId = createCustomErrorClass("SwapUnknownSwapId");
164
163
  export const SwapGenericAPIError = createCustomErrorClass(
165
164
  "SwapGenericAPIError"
166
165
  );
@@ -46,6 +46,13 @@ export type ExchangeProviderNameAndSignature = {
46
46
  nameAndPubkey: Buffer;
47
47
  signature: Buffer;
48
48
  };
49
+
50
+ export type SwapProviderConfig = ExchangeProviderNameAndSignature & {
51
+ curve: string;
52
+ needsKYC: boolean;
53
+ needsBearerToken: boolean;
54
+ };
55
+
49
56
  export const isExchangeSupportedByApp = (
50
57
  appName: string,
51
58
  appVersion: string
@@ -0,0 +1,53 @@
1
+ import axios from "axios";
2
+ import checkQuote from "./checkQuote";
3
+
4
+ jest.mock("axios");
5
+ const mockedAxios = jest.mocked(axios);
6
+
7
+ const provider = "changelly";
8
+ const quoteId = "RATE_ID";
9
+ const bearerToken = "BEARER_TOKEN";
10
+
11
+ describe("swap/checkQuote", () => {
12
+ test("should return response in case of valid rate", async () => {
13
+ const data = {
14
+ code: 1,
15
+ codeName: "RATE_VALID",
16
+ description: "KYC check passed",
17
+ };
18
+
19
+ const resp = {
20
+ data,
21
+ status: 200,
22
+ statusText: "",
23
+ headers: {},
24
+ config: {},
25
+ };
26
+
27
+ mockedAxios.mockResolvedValue(Promise.resolve(resp));
28
+ const res = await checkQuote({ provider, quoteId, bearerToken });
29
+
30
+ expect(res).toEqual(data);
31
+ });
32
+
33
+ test("should return response in case of invalid rate", async () => {
34
+ const data = {
35
+ code: 204,
36
+ codeName: "MFA_REQUIRED",
37
+ description: "MFA Required",
38
+ };
39
+
40
+ const resp = {
41
+ data,
42
+ status: 200,
43
+ statusText: "",
44
+ headers: {},
45
+ config: {},
46
+ };
47
+
48
+ mockedAxios.mockResolvedValue(Promise.resolve(resp));
49
+ const res = await checkQuote({ provider, quoteId, bearerToken });
50
+
51
+ expect(res).toEqual(data);
52
+ });
53
+ });
@@ -0,0 +1,34 @@
1
+ import { getEnv } from "../../env";
2
+ import network from "../../network";
3
+ import { getSwapAPIBaseURL } from "./";
4
+ import { mockCheckQuote } from "./mock";
5
+ import type { CheckQuote } from "./types";
6
+
7
+ const checkQuote: CheckQuote = async ({ provider, quoteId, bearerToken }) => {
8
+ if (getEnv("MOCK") || getEnv("MOCK_SWAP_CHECK_QUOTE")) {
9
+ return mockCheckQuote({ provider, quoteId, bearerToken });
10
+ }
11
+
12
+ const request = {
13
+ provider,
14
+ rateId: quoteId,
15
+ };
16
+
17
+ const { data } = await network({
18
+ method: "POST",
19
+ url: `${getSwapAPIBaseURL()}/rate/check`,
20
+ headers: {
21
+ Authorization: `Bearer ${bearerToken}`,
22
+ },
23
+ data: request,
24
+ });
25
+
26
+ /**
27
+ * TODO: we might want to handle various status and error here
28
+ * cf. https://github.com/LedgerHQ/swap/blob/master/modules/model/src/main/scala/co/ledger/swap/model/RateStatus.scala
29
+ */
30
+
31
+ return data;
32
+ };
33
+
34
+ export default checkQuote;
@@ -1,22 +1,20 @@
1
+ import { TransportStatusError, WrongDeviceForAccount } from "@ledgerhq/errors";
1
2
  import { log } from "@ledgerhq/logs";
2
3
  import { from, Observable } from "rxjs";
3
4
  import secp256k1 from "secp256k1";
4
- import { TransportStatusError, WrongDeviceForAccount } from "@ledgerhq/errors";
5
-
6
- import { delay } from "../../promise";
7
- import ExchangeTransport from "../hw-app-exchange/Exchange";
8
- import perFamily from "../../generated/exchange";
5
+ import { getCurrencyExchangeConfig } from "../";
9
6
  import { getAccountCurrency, getMainAccount } from "../../account";
10
7
  import { getAccountBridge } from "../../bridge";
11
8
  import { TransactionRefusedOnDevice } from "../../errors";
9
+ import perFamily from "../../generated/exchange";
12
10
  import { withDevice } from "../../hw/deviceAccess";
13
- import { getProviderNameAndSignature } from "./";
14
- import { getCurrencyExchangeConfig } from "../";
15
-
11
+ import { delay } from "../../promise";
12
+ import ExchangeTransport from "../hw-app-exchange/Exchange";
16
13
  import type {
17
14
  CompleteExchangeInputSwap,
18
15
  CompleteExchangeRequestEvent,
19
16
  } from "../platform/types";
17
+ import { getProviderConfig } from "./";
20
18
 
21
19
  const withDevicePromise = (deviceId, fn) =>
22
20
  withDevice(deviceId)((transport) => from(fn(transport))).toPromise();
@@ -45,7 +43,7 @@ const completeExchange = (
45
43
 
46
44
  const confirmExchange = async () => {
47
45
  await withDevicePromise(deviceId, async (transport) => {
48
- const providerNameAndSignature = getProviderNameAndSignature(provider);
46
+ const providerConfig = getProviderConfig(provider);
49
47
  const exchange = new ExchangeTransport(
50
48
  transport,
51
49
  exchangeType,
@@ -75,10 +73,10 @@ const completeExchange = (
75
73
  const errorsKeys = Object.keys(errors);
76
74
  if (errorsKeys.length > 0) throw errors[errorsKeys[0]]; // throw the first error
77
75
 
78
- await exchange.setPartnerKey(providerNameAndSignature.nameAndPubkey);
76
+ await exchange.setPartnerKey(providerConfig.nameAndPubkey);
79
77
  if (unsubscribed) return;
80
78
 
81
- await exchange.checkPartner(providerNameAndSignature.signature);
79
+ await exchange.checkPartner(providerConfig.signature);
82
80
  if (unsubscribed) return;
83
81
 
84
82
  await exchange.processTransaction(
@@ -13,9 +13,9 @@ import type {
13
13
  Transaction,
14
14
  Unit,
15
15
  } from "../../types";
16
- import { getSwapAPIBaseURL, getSwapAPIError } from "./";
16
+ import { getAvailableProviders, getSwapAPIBaseURL, getSwapAPIError } from "./";
17
17
  import { mockGetExchangeRates } from "./mock";
18
- import type { Exchange, GetExchangeRates } from "./types";
18
+ import type { CustomMinOrMaxError, Exchange, GetExchangeRates } from "./types";
19
19
 
20
20
  const getExchangeRates: GetExchangeRates = async (
21
21
  exchange: Exchange,
@@ -40,6 +40,7 @@ const getExchangeRates: GetExchangeRates = async (
40
40
  from,
41
41
  to,
42
42
  amountFrom: apiAmount.toString(),
43
+ providers: usesV3 ? getAvailableProviders() : undefined,
43
44
  };
44
45
  const res = await network({
45
46
  method: "POST",
@@ -122,7 +123,7 @@ const inferError = (
122
123
  errorCode?: number;
123
124
  errorMessage?: string;
124
125
  }
125
- ): Error | undefined => {
126
+ ): Error | CustomMinOrMaxError | undefined => {
126
127
  const tenPowMagnitude = new BigNumber(10).pow(unitFrom.magnitude);
127
128
  const { amountTo, minAmountFrom, maxAmountFrom, errorCode, errorMessage } =
128
129
  responseData;
@@ -157,6 +158,7 @@ const inferError = (
157
158
  showCode: true,
158
159
  }
159
160
  ),
161
+ amount: new BigNumber(amount),
160
162
  });
161
163
  }
162
164
  }
@@ -1,15 +1,23 @@
1
- import type { GetProviders } from "./types";
2
- import network from "../../network";
3
- import { getSwapAPIBaseURL } from "./";
1
+ import qs from "qs";
4
2
  import { getEnv } from "../../env";
5
- import { mockGetProviders } from "./mock";
6
3
  import { SwapNoAvailableProviders } from "../../errors";
4
+ import network from "../../network";
5
+ import { getAvailableProviders, getSwapAPIBaseURL } from "./";
6
+ import { mockGetProviders } from "./mock";
7
+ import type { GetProviders } from "./types";
7
8
 
8
9
  const getProviders: GetProviders = async () => {
9
10
  if (getEnv("MOCK")) return mockGetProviders();
11
+
12
+ // Rely on the api base to determine the version logic
13
+ const usesV3 = getSwapAPIBaseURL().endsWith("v3");
14
+
10
15
  const res = await network({
11
16
  method: "GET",
12
17
  url: `${getSwapAPIBaseURL()}/providers`,
18
+ params: usesV3 ? { whitelist: getAvailableProviders() } : undefined,
19
+ paramsSerializer: (params) =>
20
+ qs.stringify(params, { arrayFormat: "comma" }),
13
21
  });
14
22
 
15
23
  if (!res.data.length) {
@@ -1,18 +1,9 @@
1
+ import { getEnv } from "../../env";
1
2
  import network from "../../network";
2
3
  import { getSwapAPIBaseURL } from "./";
3
- import type { GetMultipleStatus, GetStatus } from "./types";
4
- import { getEnv } from "../../env";
5
4
  import { mockGetStatus } from "./mock";
6
- import { SwapUnknownSwapId } from "../../errors";
7
- export const getStatus: GetStatus = async (status) => {
8
- const updatedStatus = await getMultipleStatus([status]);
5
+ import type { GetMultipleStatus } from "./types";
9
6
 
10
- if (updatedStatus && updatedStatus.length) {
11
- return updatedStatus[0];
12
- }
13
-
14
- throw new SwapUnknownSwapId(undefined, { ...status });
15
- };
16
7
  export const getMultipleStatus: GetMultipleStatus = async (statusList) => {
17
8
  if (getEnv("MOCK")) return mockGetStatus(statusList);
18
9
  const res = await network({
@@ -22,4 +13,3 @@ export const getMultipleStatus: GetMultipleStatus = async (statusList) => {
22
13
  });
23
14
  return res.data;
24
15
  };
25
- export default getStatus;