@ledgerhq/coin-polkadot 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/.eslintrc.js +57 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/CHANGELOG.md +12 -0
  4. package/jest.config.js +10 -0
  5. package/lib/account.d.ts +15 -0
  6. package/lib/account.d.ts.map +1 -0
  7. package/lib/account.js +133 -0
  8. package/lib/account.js.map +1 -0
  9. package/lib/address.d.ts +7 -0
  10. package/lib/address.d.ts.map +1 -0
  11. package/lib/address.js +28 -0
  12. package/lib/address.js.map +1 -0
  13. package/lib/api/bisontrails.d.ts +11 -0
  14. package/lib/api/bisontrails.d.ts.map +1 -0
  15. package/lib/api/bisontrails.js +351 -0
  16. package/lib/api/bisontrails.js.map +1 -0
  17. package/lib/api/common.d.ts +12 -0
  18. package/lib/api/common.d.ts.map +1 -0
  19. package/lib/api/common.js +41 -0
  20. package/lib/api/common.js.map +1 -0
  21. package/lib/api/index.d.ts +3 -0
  22. package/lib/api/index.d.ts.map +1 -0
  23. package/lib/api/index.js +53 -0
  24. package/lib/api/index.js.map +1 -0
  25. package/lib/api/sidecar.d.ts +193 -0
  26. package/lib/api/sidecar.d.ts.map +1 -0
  27. package/lib/api/sidecar.js +844 -0
  28. package/lib/api/sidecar.js.map +1 -0
  29. package/lib/api/sidecar.types.d.ts +163 -0
  30. package/lib/api/sidecar.types.d.ts.map +1 -0
  31. package/lib/api/sidecar.types.js +3 -0
  32. package/lib/api/sidecar.types.js.map +1 -0
  33. package/lib/api/subscan.d.ts +6 -0
  34. package/lib/api/subscan.d.ts.map +1 -0
  35. package/lib/api/subscan.js +375 -0
  36. package/lib/api/subscan.js.map +1 -0
  37. package/lib/api/websocket.d.ts +92 -0
  38. package/lib/api/websocket.d.ts.map +1 -0
  39. package/lib/api/websocket.js +759 -0
  40. package/lib/api/websocket.js.map +1 -0
  41. package/lib/bridge/js.d.ts +6 -0
  42. package/lib/bridge/js.d.ts.map +1 -0
  43. package/lib/bridge/js.js +120 -0
  44. package/lib/bridge/js.js.map +1 -0
  45. package/lib/bridge.integration.test.d.ts +4 -0
  46. package/lib/bridge.integration.test.d.ts.map +1 -0
  47. package/lib/bridge.integration.test.js +795 -0
  48. package/lib/bridge.integration.test.js.map +1 -0
  49. package/lib/cache.d.ts +65 -0
  50. package/lib/cache.d.ts.map +1 -0
  51. package/lib/cache.js +182 -0
  52. package/lib/cache.js.map +1 -0
  53. package/lib/cli-transaction.d.ts +44 -0
  54. package/lib/cli-transaction.d.ts.map +1 -0
  55. package/lib/cli-transaction.js +148 -0
  56. package/lib/cli-transaction.js.map +1 -0
  57. package/lib/deviceTransactionConfig.d.ts +16 -0
  58. package/lib/deviceTransactionConfig.d.ts.map +1 -0
  59. package/lib/deviceTransactionConfig.js +171 -0
  60. package/lib/deviceTransactionConfig.js.map +1 -0
  61. package/lib/errors.d.ts +37 -0
  62. package/lib/errors.d.ts.map +1 -0
  63. package/lib/errors.js +17 -0
  64. package/lib/errors.js.map +1 -0
  65. package/lib/hw-getAddress.d.ts +4 -0
  66. package/lib/hw-getAddress.d.ts.map +1 -0
  67. package/lib/hw-getAddress.js +64 -0
  68. package/lib/hw-getAddress.js.map +1 -0
  69. package/lib/js-buildTransaction.d.ts +25 -0
  70. package/lib/js-buildTransaction.d.ts.map +1 -0
  71. package/lib/js-buildTransaction.js +265 -0
  72. package/lib/js-buildTransaction.js.map +1 -0
  73. package/lib/js-createTransaction.d.ts +9 -0
  74. package/lib/js-createTransaction.d.ts.map +1 -0
  75. package/lib/js-createTransaction.js +22 -0
  76. package/lib/js-createTransaction.js.map +1 -0
  77. package/lib/js-estimateMaxSpendable.d.ts +15 -0
  78. package/lib/js-estimateMaxSpendable.d.ts.map +1 -0
  79. package/lib/js-estimateMaxSpendable.js +89 -0
  80. package/lib/js-estimateMaxSpendable.js.map +1 -0
  81. package/lib/js-getFeesForTransaction.d.ts +14 -0
  82. package/lib/js-getFeesForTransaction.d.ts.map +1 -0
  83. package/lib/js-getFeesForTransaction.js +94 -0
  84. package/lib/js-getFeesForTransaction.js.map +1 -0
  85. package/lib/js-getTransactionStatus.d.ts +18 -0
  86. package/lib/js-getTransactionStatus.d.ts.map +1 -0
  87. package/lib/js-getTransactionStatus.js +316 -0
  88. package/lib/js-getTransactionStatus.js.map +1 -0
  89. package/lib/js-prepareTransaction.d.ts +9 -0
  90. package/lib/js-prepareTransaction.d.ts.map +1 -0
  91. package/lib/js-prepareTransaction.js +83 -0
  92. package/lib/js-prepareTransaction.js.map +1 -0
  93. package/lib/js-signOperation.d.ts +27 -0
  94. package/lib/js-signOperation.d.ts.map +1 -0
  95. package/lib/js-signOperation.js +235 -0
  96. package/lib/js-signOperation.js.map +1 -0
  97. package/lib/js-synchronisation.d.ts +3 -0
  98. package/lib/js-synchronisation.d.ts.map +1 -0
  99. package/lib/js-synchronisation.js +104 -0
  100. package/lib/js-synchronisation.js.map +1 -0
  101. package/lib/logic.d.ts +107 -0
  102. package/lib/logic.d.ts.map +1 -0
  103. package/lib/logic.js +242 -0
  104. package/lib/logic.js.map +1 -0
  105. package/lib/platformAdapter.d.ts +11 -0
  106. package/lib/platformAdapter.d.ts.map +1 -0
  107. package/lib/platformAdapter.js +25 -0
  108. package/lib/platformAdapter.js.map +1 -0
  109. package/lib/platformAdapter.test.d.ts +2 -0
  110. package/lib/platformAdapter.test.d.ts.map +1 -0
  111. package/lib/platformAdapter.test.js +51 -0
  112. package/lib/platformAdapter.test.js.map +1 -0
  113. package/lib/polkadot-crypto.d.ts +2 -0
  114. package/lib/polkadot-crypto.d.ts.map +1 -0
  115. package/lib/polkadot-crypto.js +14 -0
  116. package/lib/polkadot-crypto.js.map +1 -0
  117. package/lib/preload.d.ts +14 -0
  118. package/lib/preload.d.ts.map +1 -0
  119. package/lib/preload.js +173 -0
  120. package/lib/preload.js.map +1 -0
  121. package/lib/serialization.d.ts +4 -0
  122. package/lib/serialization.d.ts.map +1 -0
  123. package/lib/serialization.js +51 -0
  124. package/lib/serialization.js.map +1 -0
  125. package/lib/specs.d.ts +7 -0
  126. package/lib/specs.d.ts.map +1 -0
  127. package/lib/specs.js +274 -0
  128. package/lib/specs.js.map +1 -0
  129. package/lib/speculos-deviceActions.d.ts +4 -0
  130. package/lib/speculos-deviceActions.d.ts.map +1 -0
  131. package/lib/speculos-deviceActions.js +85 -0
  132. package/lib/speculos-deviceActions.js.map +1 -0
  133. package/lib/transaction.d.ts +15 -0
  134. package/lib/transaction.d.ts.map +1 -0
  135. package/lib/transaction.js +51 -0
  136. package/lib/transaction.js.map +1 -0
  137. package/lib/types.d.ts +96 -0
  138. package/lib/types.d.ts.map +1 -0
  139. package/lib/types.js +3 -0
  140. package/lib/types.js.map +1 -0
  141. package/lib/validators.d.ts +3 -0
  142. package/lib/validators.d.ts.map +1 -0
  143. package/lib/validators.js +7 -0
  144. package/lib/validators.js.map +1 -0
  145. package/package.json +95 -0
  146. package/src/account.ts +170 -0
  147. package/src/address.ts +28 -0
  148. package/src/api/bisontrails.ts +343 -0
  149. package/src/api/common.ts +52 -0
  150. package/src/api/index.ts +38 -0
  151. package/src/api/sidecar.ts +735 -0
  152. package/src/api/sidecar.types.ts +162 -0
  153. package/src/api/subscan.ts +362 -0
  154. package/src/api/websocket.ts +535 -0
  155. package/src/bridge/js.ts +81 -0
  156. package/src/bridge.integration.test.ts +764 -0
  157. package/src/cache.ts +202 -0
  158. package/src/cli-transaction.ts +184 -0
  159. package/src/deviceTransactionConfig.ts +209 -0
  160. package/src/errors.ts +39 -0
  161. package/src/hw-getAddress.ts +14 -0
  162. package/src/js-buildTransaction.ts +206 -0
  163. package/src/js-createTransaction.ts +22 -0
  164. package/src/js-estimateMaxSpendable.ts +37 -0
  165. package/src/js-getFeesForTransaction.ts +41 -0
  166. package/src/js-getTransactionStatus.ts +350 -0
  167. package/src/js-prepareTransaction.ts +27 -0
  168. package/src/js-signOperation.ts +232 -0
  169. package/src/js-synchronisation.ts +57 -0
  170. package/src/logic.ts +266 -0
  171. package/src/platformAdapter.test.ts +61 -0
  172. package/src/platformAdapter.ts +29 -0
  173. package/src/polkadot-crypto.ts +10 -0
  174. package/src/preload.ts +148 -0
  175. package/src/serialization.ts +48 -0
  176. package/src/specs.ts +305 -0
  177. package/src/speculos-deviceActions.ts +84 -0
  178. package/src/transaction.ts +64 -0
  179. package/src/types.ts +118 -0
  180. package/src/validators.ts +2 -0
  181. package/tsconfig.json +21 -0
package/lib/logic.js ADDED
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getMinimumBalance = exports.calculateAmount = exports.getNonce = exports.isFirstBond = exports.canNominate = exports.canUnbond = exports.hasLockedBalance = exports.hasMaxUnlockings = exports.hasPendingOperationType = exports.hasMinimumBondBalance = exports.getMinimumAmountToBond = exports.canBond = exports.hasExternalStash = exports.hasExternalController = exports.isController = exports.isStash = exports.FEES_SAFETY_BUFFER = exports.MAX_AMOUNT_INPUT = exports.PRELOAD_MAX_AGE = exports.MAX_UNLOCKINGS = exports.MAX_NOMINATIONS = exports.EXISTENTIAL_DEPOSIT_RECOMMENDED_MARGIN = exports.EXISTENTIAL_DEPOSIT = void 0;
4
+ var bignumber_js_1 = require("bignumber.js");
5
+ var preload_1 = require("./preload");
6
+ exports.EXISTENTIAL_DEPOSIT = new bignumber_js_1.BigNumber(10000000000);
7
+ exports.EXISTENTIAL_DEPOSIT_RECOMMENDED_MARGIN = new bignumber_js_1.BigNumber(1000000000); // Polkadot recommended Existential Deposit error margin
8
+ exports.MAX_NOMINATIONS = 16;
9
+ exports.MAX_UNLOCKINGS = 32;
10
+ exports.PRELOAD_MAX_AGE = 60 * 1000;
11
+ // eslint-disable-next-line @typescript-eslint/no-loss-of-precision
12
+ exports.MAX_AMOUNT_INPUT = 0xffffffffffffffff;
13
+ exports.FEES_SAFETY_BUFFER = new bignumber_js_1.BigNumber(1000000000); // Arbitrary buffer for paying fees of next transactions
14
+ /**
15
+ * Returns true if account is a stash.
16
+ * When the account is a stash, we have the information of which account is the controller
17
+ *
18
+ * @param {PolkadotAccount} a
19
+ */
20
+ var isStash = function (a) {
21
+ var _a;
22
+ return !!((_a = a.polkadotResources) === null || _a === void 0 ? void 0 : _a.controller);
23
+ };
24
+ exports.isStash = isStash;
25
+ /**
26
+ * Returns true if account is a controller.
27
+ * when account is a controller, we have the information of which stash it controls
28
+ *
29
+ * @param {PolkadotAccount} a
30
+ */
31
+ var isController = function (a) {
32
+ var _a;
33
+ return !!((_a = a.polkadotResources) === null || _a === void 0 ? void 0 : _a.stash);
34
+ };
35
+ exports.isController = isController;
36
+ /**
37
+ * Returns true if account is controlled by an external account (not self)
38
+ *
39
+ * @param {PolkadotAccount} a
40
+ */
41
+ var hasExternalController = function (a) {
42
+ var _a, _b;
43
+ return ((_a = a.polkadotResources) === null || _a === void 0 ? void 0 : _a.controller)
44
+ ? ((_b = a.polkadotResources) === null || _b === void 0 ? void 0 : _b.controller) !== a.freshAddress
45
+ : false;
46
+ };
47
+ exports.hasExternalController = hasExternalController;
48
+ /**
49
+ * Returns true if account controls an external stash (not self)
50
+ *
51
+ * @param {PolkadotAccount} a
52
+ */
53
+ var hasExternalStash = function (a) {
54
+ var _a, _b;
55
+ return ((_a = a.polkadotResources) === null || _a === void 0 ? void 0 : _a.stash)
56
+ ? ((_b = a.polkadotResources) === null || _b === void 0 ? void 0 : _b.stash) !== a.freshAddress
57
+ : false;
58
+ };
59
+ exports.hasExternalStash = hasExternalStash;
60
+ /**
61
+ * Must have the minimum balance to bond
62
+ *
63
+ * @param {PolkadotAccount} a
64
+ */
65
+ var canBond = function (a) {
66
+ var balance = a.balance;
67
+ return exports.EXISTENTIAL_DEPOSIT.lte(balance);
68
+ };
69
+ exports.canBond = canBond;
70
+ /**
71
+ * Get the minimum bond amount required to bond/rebond
72
+ *
73
+ * @param {PolkadotAccount} a
74
+ */
75
+ var getMinimumAmountToBond = function (a, minimumBondBalance) {
76
+ var currentlyBondedBalance = calculateMaxUnbond(a);
77
+ if (minimumBondBalance && currentlyBondedBalance.lt(minimumBondBalance)) {
78
+ return minimumBondBalance.minus(currentlyBondedBalance);
79
+ }
80
+ return new bignumber_js_1.BigNumber(0);
81
+ };
82
+ exports.getMinimumAmountToBond = getMinimumAmountToBond;
83
+ /**
84
+ * Return true if the account has at least the current minimum bonded balance required by the network
85
+ *
86
+ * @param {PolkadotAccount} a
87
+ */
88
+ var hasMinimumBondBalance = function (a) {
89
+ var minimumBondBalance = (0, preload_1.getCurrentPolkadotPreloadData)().minimumBondBalance;
90
+ return (!a.polkadotResources ||
91
+ a.polkadotResources.lockedBalance.gte(new bignumber_js_1.BigNumber(minimumBondBalance)));
92
+ };
93
+ exports.hasMinimumBondBalance = hasMinimumBondBalance;
94
+ /**
95
+ * Return true if some operation with type is pending and not yet synchronized
96
+ *
97
+ * @param {PolkadotAccount} a
98
+ */
99
+ var hasPendingOperationType = function (a, type) {
100
+ var _a, _b;
101
+ return (_b = (_a = a.pendingOperations) === null || _a === void 0 ? void 0 : _a.some(function (op) { return op.type === type; })) !== null && _b !== void 0 ? _b : false;
102
+ };
103
+ exports.hasPendingOperationType = hasPendingOperationType;
104
+ /**
105
+ * Retyrns true if has reached the maximum of unlocking slots
106
+ *
107
+ * @param {PolkadotAccount} a
108
+ */
109
+ var hasMaxUnlockings = function (a) {
110
+ var _a = (a.polkadotResources || {}).unlockings, unlockings = _a === void 0 ? [] : _a;
111
+ return ((unlockings === null || unlockings === void 0 ? void 0 : unlockings.length) || 0) >= exports.MAX_UNLOCKINGS;
112
+ };
113
+ exports.hasMaxUnlockings = hasMaxUnlockings;
114
+ /**
115
+ * Return true if account has enough Locked Balance to rebond
116
+ *
117
+ * @param {PolkadotAccount} a
118
+ */
119
+ var hasLockedBalance = function (a) {
120
+ var _a = a.polkadotResources || {}, _b = _a.lockedBalance, lockedBalance = _b === void 0 ? new bignumber_js_1.BigNumber(0) : _b, _c = _a.unlockingBalance, unlockingBalance = _c === void 0 ? new bignumber_js_1.BigNumber(0) : _c;
121
+ return lockedBalance.minus(unlockingBalance).gt(0);
122
+ };
123
+ exports.hasLockedBalance = hasLockedBalance;
124
+ /**
125
+ * Must have locked Balance
126
+ *
127
+ * @param {PolkadotAccount} a
128
+ */
129
+ var canUnbond = function (a) {
130
+ return (0, exports.hasLockedBalance)(a) && !(0, exports.hasMaxUnlockings)(a);
131
+ };
132
+ exports.canUnbond = canUnbond;
133
+ /**
134
+ * Returns true if an account can nominate
135
+ *
136
+ * @param {PolkadotAccount} a
137
+ */
138
+ var canNominate = function (a) { return (0, exports.isController)(a); };
139
+ exports.canNominate = canNominate;
140
+ /**
141
+ * Returns true if account must do a first bond - false for a bond extra
142
+ *
143
+ * @param {Account} a
144
+ */
145
+ var isFirstBond = function (a) { return !(0, exports.isStash)(a); };
146
+ exports.isFirstBond = isFirstBond;
147
+ /**
148
+ * Returns nonce for an account
149
+ *
150
+ * @param {Account} a
151
+ */
152
+ var getNonce = function (a) {
153
+ var _a;
154
+ var lastPendingOp = a.pendingOperations[0];
155
+ var nonce = Math.max(((_a = a.polkadotResources) === null || _a === void 0 ? void 0 : _a.nonce) || 0, lastPendingOp && typeof lastPendingOp.transactionSequenceNumber === "number"
156
+ ? lastPendingOp.transactionSequenceNumber + 1
157
+ : 0);
158
+ return nonce;
159
+ };
160
+ exports.getNonce = getNonce;
161
+ /**
162
+ * Calculate max bond which is the actual spendable minus a safety buffer,
163
+ * so the user still has funds to pay the fees for next transactions
164
+ *
165
+ * @param {*} a
166
+ * @param {*} t
167
+ */
168
+ var calculateMaxBond = function (a, t) {
169
+ var amount = a.spendableBalance
170
+ .minus(t.fees || 0)
171
+ .minus(exports.FEES_SAFETY_BUFFER);
172
+ return amount.lt(0) ? new bignumber_js_1.BigNumber(0) : amount;
173
+ };
174
+ /**
175
+ * Calculates max unbond amount which is the remaining active locked balance (not unlocking)
176
+ *
177
+ * @param {*} account
178
+ */
179
+ var calculateMaxUnbond = function (a) {
180
+ var _a, _b;
181
+ return ((_b = (_a = a.polkadotResources) === null || _a === void 0 ? void 0 : _a.lockedBalance.minus(a.polkadotResources.unlockingBalance)) !== null && _b !== void 0 ? _b : new bignumber_js_1.BigNumber(0));
182
+ };
183
+ /**
184
+ * Calculates max rebond amount which is the current unlocking balance (including unlocked)
185
+ *
186
+ * @param {*} account
187
+ */
188
+ var calculateMaxRebond = function (a) {
189
+ var _a, _b;
190
+ return (_b = (_a = a.polkadotResources) === null || _a === void 0 ? void 0 : _a.unlockingBalance) !== null && _b !== void 0 ? _b : new bignumber_js_1.BigNumber(0);
191
+ };
192
+ /**
193
+ * Calculate the real spendable
194
+ *
195
+ * @param {*} a
196
+ * @param {*} t
197
+ */
198
+ var calculateMaxSend = function (a, t) {
199
+ var amount = a.spendableBalance.minus(t.fees || 0);
200
+ return amount.lt(0) ? new bignumber_js_1.BigNumber(0) : amount;
201
+ };
202
+ /**
203
+ * Calculates correct amount if useAllAmount
204
+ *
205
+ * @param {*} param
206
+ */
207
+ var calculateAmount = function (_a) {
208
+ var a = _a.a, t = _a.t;
209
+ var amount = t.amount;
210
+ if (t.useAllAmount) {
211
+ switch (t.mode) {
212
+ case "send":
213
+ amount = calculateMaxSend(a, t);
214
+ break;
215
+ case "bond":
216
+ amount = calculateMaxBond(a, t);
217
+ break;
218
+ case "unbond":
219
+ amount = calculateMaxUnbond(a);
220
+ break;
221
+ case "rebond":
222
+ amount = calculateMaxRebond(a);
223
+ break;
224
+ default:
225
+ amount = a.spendableBalance.minus(t.fees || 0);
226
+ break;
227
+ }
228
+ }
229
+ else if (t.amount.gt(exports.MAX_AMOUNT_INPUT)) {
230
+ return new bignumber_js_1.BigNumber(exports.MAX_AMOUNT_INPUT);
231
+ }
232
+ return amount.lt(0) ? new bignumber_js_1.BigNumber(0) : amount;
233
+ };
234
+ exports.calculateAmount = calculateAmount;
235
+ var getMinimumBalance = function (a) {
236
+ var lockedBalance = a.balance.minus(a.spendableBalance);
237
+ return lockedBalance.lte(exports.EXISTENTIAL_DEPOSIT)
238
+ ? exports.EXISTENTIAL_DEPOSIT.minus(lockedBalance)
239
+ : new bignumber_js_1.BigNumber(0);
240
+ };
241
+ exports.getMinimumBalance = getMinimumBalance;
242
+ //# sourceMappingURL=logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAGzC,qCAA0D;AAE7C,QAAA,mBAAmB,GAAG,IAAI,wBAAS,CAAC,WAAW,CAAC,CAAC;AACjD,QAAA,sCAAsC,GAAG,IAAI,wBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,wDAAwD;AAC5H,QAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,cAAc,GAAG,EAAE,CAAC;AACpB,QAAA,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,mEAAmE;AACtD,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,kBAAkB,GAAG,IAAI,wBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,wDAAwD;AAErH;;;;;GAKG;AACI,IAAM,OAAO,GAAG,UAAC,CAAkB;;IACxC,OAAO,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,UAAU,CAAA,CAAC;AAC3C,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB;AAEF;;;;;GAKG;AACI,IAAM,YAAY,GAAG,UAAC,CAAkB;;IAC7C,OAAO,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,KAAK,CAAA,CAAC;AACtC,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEF;;;;GAIG;AACI,IAAM,qBAAqB,GAAG,UAAC,CAAkB;;IACtD,OAAO,CAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,UAAU;QACpC,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,UAAU,MAAK,CAAC,CAAC,YAAY;QACpD,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC;AAJW,QAAA,qBAAqB,yBAIhC;AAEF;;;;GAIG;AACI,IAAM,gBAAgB,GAAG,UAAC,CAAkB;;IACjD,OAAO,CAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,KAAK;QAC/B,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,KAAK,MAAK,CAAC,CAAC,YAAY;QAC/C,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B;AAEF;;;;GAIG;AACI,IAAM,OAAO,GAAG,UAAC,CAAU;IACxB,IAAA,OAAO,GAAK,CAAC,QAAN,CAAO;IACtB,OAAO,2BAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC;AAHW,QAAA,OAAO,WAGlB;AAEF;;;;GAIG;AACI,IAAM,sBAAsB,GAAG,UACpC,CAAkB,EAClB,kBAAyC;IAEzC,IAAM,sBAAsB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAErD,IAAI,kBAAkB,IAAI,sBAAsB,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE;QACvE,OAAO,kBAAkB,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzD;IAED,OAAO,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC,CAAC;AAXW,QAAA,sBAAsB,0BAWjC;AAEF;;;;GAIG;AACI,IAAM,qBAAqB,GAAG,UAAC,CAAkB;IAC9C,IAAA,kBAAkB,GAAK,IAAA,uCAA6B,GAAE,mBAApC,CAAqC;IAC/D,OAAO,CACL,CAAC,CAAC,CAAC,iBAAiB;QACpB,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,wBAAS,CAAC,kBAAkB,CAAC,CAAC,CACzE,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC;AAEF;;;;GAIG;AACI,IAAM,uBAAuB,GAAG,UACrC,CAAU,EACV,IAAmB;;IAEnB,OAAO,MAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,IAAI,CAAC,UAAC,EAAE,IAAK,OAAA,EAAE,CAAC,IAAI,KAAK,IAAI,EAAhB,CAAgB,CAAC,mCAAI,KAAK,CAAC;AACtE,CAAC,CAAC;AALW,QAAA,uBAAuB,2BAKlC;AAEF;;;;GAIG;AACI,IAAM,gBAAgB,GAAG,UAAC,CAAkB;IACzC,IAAA,KAAoB,CAAA,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAA,WAA9B,EAAf,UAAU,mBAAG,EAAE,KAAA,CAA+B;IACtD,OAAO,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,CAAC,CAAC,IAAI,sBAAc,CAAC;AACrD,CAAC,CAAC;AAHW,QAAA,gBAAgB,oBAG3B;AAEF;;;;GAIG;AACI,IAAM,gBAAgB,GAAG,UAAC,CAAkB;IAC3C,IAAA,KAGF,CAAC,CAAC,iBAAiB,IAAI,EAAE,EAF3B,qBAAgC,EAAhC,aAAa,mBAAG,IAAI,wBAAS,CAAC,CAAC,CAAC,KAAA,EAChC,wBAAmC,EAAnC,gBAAgB,mBAAG,IAAI,wBAAS,CAAC,CAAC,CAAC,KACR,CAAC;IAC9B,OAAO,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B;AAEF;;;;GAIG;AACI,IAAM,SAAS,GAAG,UAAC,CAAkB;IAC1C,OAAO,IAAA,wBAAgB,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,wBAAgB,EAAC,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAEF;;;;GAIG;AACI,IAAM,WAAW,GAAG,UAAC,CAAkB,IAAc,OAAA,IAAA,oBAAY,EAAC,CAAC,CAAC,EAAf,CAAe,CAAC;AAA/D,QAAA,WAAW,eAAoD;AAE5E;;;;GAIG;AACI,IAAM,WAAW,GAAG,UAAC,CAAkB,IAAc,OAAA,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,EAAX,CAAW,CAAC;AAA3D,QAAA,WAAW,eAAgD;AAExE;;;;GAIG;AACI,IAAM,QAAQ,GAAG,UAAC,CAAkB;;IACzC,IAAM,aAAa,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,KAAK,KAAI,CAAC,EAC/B,aAAa,IAAI,OAAO,aAAa,CAAC,yBAAyB,KAAK,QAAQ;QAC1E,CAAC,CAAC,aAAa,CAAC,yBAAyB,GAAG,CAAC;QAC7C,CAAC,CAAC,CAAC,CACN,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AATW,QAAA,QAAQ,YASnB;AAEF;;;;;;GAMG;AACH,IAAM,gBAAgB,GAAG,UAAC,CAAkB,EAAE,CAAc;IAC1D,IAAM,MAAM,GAAG,CAAC,CAAC,gBAAgB;SAC9B,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;SAClB,KAAK,CAAC,0BAAkB,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC,CAAC;AAEF;;;;GAIG;AACH,IAAM,kBAAkB,GAAG,UAAC,CAAkB;;IAC5C,OAAO,CACL,MAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,aAAa,CAAC,KAAK,CACtC,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,CACrC,mCAAI,IAAI,wBAAS,CAAC,CAAC,CAAC,CACtB,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,IAAM,kBAAkB,GAAG,UAAC,CAAkB;;IAC5C,OAAO,MAAA,MAAA,CAAC,CAAC,iBAAiB,0CAAE,gBAAgB,mCAAI,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,IAAM,gBAAgB,GAAG,UAAC,CAAU,EAAE,CAAc;IAClD,IAAM,MAAM,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC,CAAC;AAEF;;;;GAIG;AACI,IAAM,eAAe,GAAG,UAAC,EAM/B;QALC,CAAC,OAAA,EACD,CAAC,OAAA;IAKD,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAEtB,IAAI,CAAC,CAAC,YAAY,EAAE;QAClB,QAAQ,CAAC,CAAC,IAAI,EAAE;YACd,KAAK,MAAM;gBACT,MAAM,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,MAAM;YAER,KAAK,MAAM;gBACT,MAAM,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,MAAM;YAER,KAAK,QAAQ;gBACX,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM;YAER,KAAK,QAAQ;gBACX,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM;YAER;gBACE,MAAM,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;gBAC/C,MAAM;SACT;KACF;SAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,wBAAgB,CAAC,EAAE;QACxC,OAAO,IAAI,wBAAS,CAAC,wBAAgB,CAAC,CAAC;KACxC;IAED,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC,CAAC;AApCW,QAAA,eAAe,mBAoC1B;AACK,IAAM,iBAAiB,GAAG,UAAC,CAAU;IAC1C,IAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC1D,OAAO,aAAa,CAAC,GAAG,CAAC,2BAAmB,CAAC;QAC3C,CAAC,CAAC,2BAAmB,CAAC,KAAK,CAAC,aAAa,CAAC;QAC1C,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B"}
@@ -0,0 +1,11 @@
1
+ import { PolkadotTransaction as PlatformTransaction } from "@ledgerhq/live-app-sdk";
2
+ import { Transaction } from "./types";
3
+ declare const _default: {
4
+ getPlatformTransactionSignFlowInfos: (tx: PlatformTransaction) => {
5
+ canEditFees: boolean;
6
+ hasFeesProvided: boolean;
7
+ liveTx: Partial<Transaction>;
8
+ };
9
+ };
10
+ export default _default;
11
+ //# sourceMappingURL=platformAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platformAdapter.d.ts","sourceRoot":"","sources":["../src/platformAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;;;;;;;;AAyBtC,wBAAuD"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // TODO: to remove once live-app-sdk is depreciated and removed from LL
3
+ var __assign = (this && this.__assign) || function () {
4
+ __assign = Object.assign || function(t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8
+ t[p] = s[p];
9
+ }
10
+ return t;
11
+ };
12
+ return __assign.apply(this, arguments);
13
+ };
14
+ exports.__esModule = true;
15
+ var CAN_EDIT_FEES = false;
16
+ var convertToLiveTransaction = function (tx) { return (__assign(__assign({}, tx), { era: tx.era ? "".concat(tx.era) : undefined })); };
17
+ var getPlatformTransactionSignFlowInfos = function (tx) {
18
+ return {
19
+ canEditFees: CAN_EDIT_FEES,
20
+ liveTx: convertToLiveTransaction(tx),
21
+ hasFeesProvided: false
22
+ };
23
+ };
24
+ exports["default"] = { getPlatformTransactionSignFlowInfos: getPlatformTransactionSignFlowInfos };
25
+ //# sourceMappingURL=platformAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platformAdapter.js","sourceRoot":"","sources":["../src/platformAdapter.ts"],"names":[],"mappings":";AAAA,uEAAuE;;;;;;;;;;;;;AAKvE,IAAM,aAAa,GAAG,KAAK,CAAC;AAE5B,IAAM,wBAAwB,GAAG,UAC/B,EAAuB,IACE,OAAA,uBACtB,EAAE,KACL,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,UAAG,EAAE,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,SAAS,IACrC,EAHyB,CAGzB,CAAC;AAEH,IAAM,mCAAmC,GAAG,UAC1C,EAAuB;IAMvB,OAAO;QACL,WAAW,EAAE,aAAa;QAC1B,MAAM,EAAE,wBAAwB,CAAC,EAAE,CAAC;QACpC,eAAe,EAAE,KAAK;KACvB,CAAC;AACJ,CAAC,CAAC;AAEF,qBAAe,EAAE,mCAAmC,qCAAA,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=platformAdapter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platformAdapter.test.d.ts","sourceRoot":"","sources":["../src/platformAdapter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var platformAdapter_1 = __importDefault(require("./platformAdapter"));
7
+ var live_app_sdk_1 = require("@ledgerhq/live-app-sdk");
8
+ var bignumber_js_1 = __importDefault(require("bignumber.js"));
9
+ describe("getPlatformTransactionSignFlowInfos", function () {
10
+ describe("should properly get infos for DOT platform tx", function () {
11
+ it("with most basic tx", function () {
12
+ var dotPlatformTx = {
13
+ family: live_app_sdk_1.FAMILIES.POLKADOT,
14
+ amount: new bignumber_js_1["default"](100000),
15
+ recipient: "0xABCDEF",
16
+ mode: "send"
17
+ };
18
+ var expectedLiveTx = {
19
+ family: dotPlatformTx.family,
20
+ amount: dotPlatformTx.amount,
21
+ recipient: dotPlatformTx.recipient,
22
+ mode: dotPlatformTx.mode
23
+ };
24
+ var _a = platformAdapter_1["default"].getPlatformTransactionSignFlowInfos(dotPlatformTx), canEditFees = _a.canEditFees, hasFeesProvided = _a.hasFeesProvided, liveTx = _a.liveTx;
25
+ expect(canEditFees).toBe(false);
26
+ expect(hasFeesProvided).toBe(false);
27
+ expect(liveTx).toEqual(expectedLiveTx);
28
+ });
29
+ it("with era provided", function () {
30
+ var dotPlatformTx = {
31
+ family: live_app_sdk_1.FAMILIES.POLKADOT,
32
+ amount: new bignumber_js_1["default"](100000),
33
+ recipient: "0xABCDEF",
34
+ mode: "send",
35
+ era: 1
36
+ };
37
+ var expectedLiveTx = {
38
+ family: dotPlatformTx.family,
39
+ amount: dotPlatformTx.amount,
40
+ recipient: dotPlatformTx.recipient,
41
+ mode: dotPlatformTx.mode,
42
+ era: "".concat(dotPlatformTx.era)
43
+ };
44
+ var _a = platformAdapter_1["default"].getPlatformTransactionSignFlowInfos(dotPlatformTx), canEditFees = _a.canEditFees, hasFeesProvided = _a.hasFeesProvided, liveTx = _a.liveTx;
45
+ expect(canEditFees).toBe(false);
46
+ expect(hasFeesProvided).toBe(false);
47
+ expect(liveTx).toEqual(expectedLiveTx);
48
+ });
49
+ });
50
+ });
51
+ //# sourceMappingURL=platformAdapter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platformAdapter.test.js","sourceRoot":"","sources":["../src/platformAdapter.test.ts"],"names":[],"mappings":";;;;;AAAA,sEAAoC;AAEpC,uDAAkD;AAClD,8DAAqC;AAGrC,QAAQ,CAAC,qCAAqC,EAAE;IAC9C,QAAQ,CAAC,+CAA+C,EAAE;QACxD,EAAE,CAAC,oBAAoB,EAAE;YACvB,IAAM,aAAa,GAAwB;gBACzC,MAAM,EAAE,uBAAQ,CAAC,QAAQ;gBACzB,MAAM,EAAE,IAAI,yBAAS,CAAC,MAAM,CAAC;gBAC7B,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,MAAM;aACb,CAAC;YAEF,IAAM,cAAc,GAAyB;gBAC3C,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,IAAI,EAAE,aAAa,CAAC,IAAI;aACzB,CAAC;YAEI,IAAA,KACJ,4BAAG,CAAC,mCAAmC,CAAC,aAAa,CAAC,EADhD,WAAW,iBAAA,EAAE,eAAe,qBAAA,EAAE,MAAM,YACY,CAAC;YAEzD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,EAAE;YACtB,IAAM,aAAa,GAAwB;gBACzC,MAAM,EAAE,uBAAQ,CAAC,QAAQ;gBACzB,MAAM,EAAE,IAAI,yBAAS,CAAC,MAAM,CAAC;gBAC7B,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,CAAC;aACP,CAAC;YAEF,IAAM,cAAc,GAAyB;gBAC3C,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,IAAI,EAAE,aAAa,CAAC,IAAI;gBACxB,GAAG,EAAE,UAAG,aAAa,CAAC,GAAG,CAAE;aAC5B,CAAC;YAEI,IAAA,KACJ,4BAAG,CAAC,mCAAmC,CAAC,aAAa,CAAC,EADhD,WAAW,iBAAA,EAAE,eAAe,qBAAA,EAAE,MAAM,YACY,CAAC;YAEzD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function loadPolkadotCrypto(): Promise<boolean>;
2
+ //# sourceMappingURL=polkadot-crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polkadot-crypto.d.ts","sourceRoot":"","sources":["../src/polkadot-crypto.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAKrD"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.loadPolkadotCrypto = void 0;
4
+ var util_crypto_1 = require("@polkadot/util-crypto");
5
+ var loadingPromise;
6
+ function loadPolkadotCrypto() {
7
+ if (loadingPromise)
8
+ return loadingPromise;
9
+ var p = (0, util_crypto_1.cryptoWaitReady)();
10
+ loadingPromise = p;
11
+ return p;
12
+ }
13
+ exports.loadPolkadotCrypto = loadPolkadotCrypto;
14
+ //# sourceMappingURL=polkadot-crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polkadot-crypto.js","sourceRoot":"","sources":["../src/polkadot-crypto.ts"],"names":[],"mappings":";;;AAAA,qDAAwD;AAExD,IAAI,cAAuC,CAAC;AAE5C,SAAgB,kBAAkB;IAChC,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAC1C,IAAM,CAAC,GAAG,IAAA,6BAAe,GAAE,CAAC;IAC5B,cAAc,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,CAAC;AACX,CAAC;AALD,gDAKC"}
@@ -0,0 +1,14 @@
1
+ import { Observable } from "rxjs";
2
+ import type { PolkadotPreloadData } from "./types";
3
+ export declare function getCurrentPolkadotPreloadData(): PolkadotPreloadData;
4
+ export declare function setPolkadotPreloadData(data: PolkadotPreloadData): void;
5
+ export declare function getPolkadotPreloadDataUpdates(): Observable<PolkadotPreloadData>;
6
+ /**
7
+ * load max cache time for the validators
8
+ */
9
+ export declare const getPreloadStrategy: () => {
10
+ preloadMaxAge: number;
11
+ };
12
+ export declare const preload: () => Promise<PolkadotPreloadData>;
13
+ export declare const hydrate: (data: unknown) => void;
14
+ //# sourceMappingURL=preload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../src/preload.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAI3C,OAAO,KAAK,EAAE,mBAAmB,EAAqB,MAAM,SAAS,CAAC;AA8EtE,wBAAgB,6BAA6B,IAAI,mBAAmB,CAEnE;AACD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,QAI/D;AACD,wBAAgB,6BAA6B,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAE/E;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;;CAE7B,CAAC;AAMH,eAAO,MAAM,OAAO,QAAa,QAAQ,mBAAmB,CAgC3D,CAAC;AACF,eAAO,MAAM,OAAO,SAAU,OAAO,SAOpC,CAAC"}
package/lib/preload.js ADDED
@@ -0,0 +1,173 @@
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 (g && (g = 0, op[0] && (_ = 0)), _) 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
+ exports.__esModule = true;
39
+ exports.hydrate = exports.preload = exports.getPreloadStrategy = exports.getPolkadotPreloadDataUpdates = exports.setPolkadotPreloadData = exports.getCurrentPolkadotPreloadData = void 0;
40
+ /* eslint-disable no-prototype-builtins */
41
+ var bignumber_js_1 = require("bignumber.js");
42
+ var rxjs_1 = require("rxjs");
43
+ var logs_1 = require("@ledgerhq/logs");
44
+ var logic_1 = require("./logic");
45
+ var cache_1 = require("./cache");
46
+ var validators_1 = require("./validators");
47
+ var polkadot_crypto_1 = require("./polkadot-crypto");
48
+ var currentPolkadotPreloadedData = {
49
+ validators: [],
50
+ staking: undefined,
51
+ minimumBondBalance: "0"
52
+ };
53
+ function fromHydrateValidator(validatorRaw) {
54
+ return {
55
+ address: validatorRaw.address,
56
+ identity: validatorRaw.identity,
57
+ nominatorsCount: Number(validatorRaw.nominatorsCount),
58
+ rewardPoints: validatorRaw.rewardPoints === null
59
+ ? null
60
+ : new bignumber_js_1.BigNumber(validatorRaw.rewardPoints),
61
+ commission: new bignumber_js_1.BigNumber(validatorRaw.commission),
62
+ totalBonded: new bignumber_js_1.BigNumber(validatorRaw.totalBonded),
63
+ selfBonded: new bignumber_js_1.BigNumber(validatorRaw.selfBonded),
64
+ isElected: !!validatorRaw.isElected,
65
+ isOversubscribed: !!validatorRaw.isOversubscribed
66
+ };
67
+ }
68
+ function fromHydratePreloadData(data) {
69
+ var validators = [];
70
+ var staking = undefined;
71
+ var minimumBondBalance = "0";
72
+ if (typeof data === "object" && data) {
73
+ if (Array.isArray(data.validators)) {
74
+ validators = data.validators.map(fromHydrateValidator);
75
+ }
76
+ if (data.staking !== null && typeof data.staking === "object") {
77
+ var _a = data.staking, electionClosed = _a.electionClosed, activeEra = _a.activeEra, maxNominatorRewardedPerValidator = _a.maxNominatorRewardedPerValidator, bondingDuration = _a.bondingDuration;
78
+ staking = {
79
+ electionClosed: !!electionClosed,
80
+ activeEra: Number(activeEra),
81
+ maxNominatorRewardedPerValidator: Number(maxNominatorRewardedPerValidator) || 128,
82
+ bondingDuration: Number(bondingDuration) || 28
83
+ };
84
+ }
85
+ if (data.minimumBondBalance !== null &&
86
+ typeof data.minimumBondBalance === "string") {
87
+ minimumBondBalance = data.minimumBondBalance || "0";
88
+ }
89
+ }
90
+ return {
91
+ validators: validators,
92
+ staking: staking,
93
+ minimumBondBalance: minimumBondBalance
94
+ };
95
+ }
96
+ var updates = new rxjs_1.Subject();
97
+ function getCurrentPolkadotPreloadData() {
98
+ return currentPolkadotPreloadedData;
99
+ }
100
+ exports.getCurrentPolkadotPreloadData = getCurrentPolkadotPreloadData;
101
+ function setPolkadotPreloadData(data) {
102
+ if (data === currentPolkadotPreloadedData)
103
+ return;
104
+ currentPolkadotPreloadedData = data;
105
+ updates.next(data);
106
+ }
107
+ exports.setPolkadotPreloadData = setPolkadotPreloadData;
108
+ function getPolkadotPreloadDataUpdates() {
109
+ return updates.asObservable();
110
+ }
111
+ exports.getPolkadotPreloadDataUpdates = getPolkadotPreloadDataUpdates;
112
+ /**
113
+ * load max cache time for the validators
114
+ */
115
+ var getPreloadStrategy = function () { return ({
116
+ preloadMaxAge: logic_1.PRELOAD_MAX_AGE
117
+ }); };
118
+ exports.getPreloadStrategy = getPreloadStrategy;
119
+ var shouldRefreshValidators = function (previousState, currentState) {
120
+ return !previousState || currentState.activeEra !== previousState.activeEra;
121
+ };
122
+ var preload = function () { return __awaiter(void 0, void 0, void 0, function () {
123
+ var minimumBondBalance, minimumBondBalanceStr, currentStakingProgress, previousValidators, previousStakingProgress, validators, error_1;
124
+ return __generator(this, function (_a) {
125
+ switch (_a.label) {
126
+ case 0: return [4 /*yield*/, (0, polkadot_crypto_1.loadPolkadotCrypto)()];
127
+ case 1:
128
+ _a.sent();
129
+ return [4 /*yield*/, (0, cache_1.getRegistry)()];
130
+ case 2:
131
+ _a.sent(); // ensure registry is already in cache.
132
+ return [4 /*yield*/, (0, cache_1.getMinimumBondBalance)()];
133
+ case 3:
134
+ minimumBondBalance = _a.sent();
135
+ minimumBondBalanceStr = minimumBondBalance.toString();
136
+ return [4 /*yield*/, (0, validators_1.getStakingProgress)()];
137
+ case 4:
138
+ currentStakingProgress = _a.sent();
139
+ previousValidators = currentPolkadotPreloadedData.validators, previousStakingProgress = currentPolkadotPreloadedData.staking;
140
+ validators = previousValidators;
141
+ if (!(!validators ||
142
+ !validators.length ||
143
+ shouldRefreshValidators(previousStakingProgress, currentStakingProgress))) return [3 /*break*/, 8];
144
+ (0, logs_1.log)("polkadot/preload", "refreshing polkadot validators...");
145
+ _a.label = 5;
146
+ case 5:
147
+ _a.trys.push([5, 7, , 8]);
148
+ return [4 /*yield*/, (0, validators_1.getValidators)("all")];
149
+ case 6:
150
+ validators = _a.sent();
151
+ return [3 /*break*/, 8];
152
+ case 7:
153
+ error_1 = _a.sent();
154
+ (0, logs_1.log)("polkadot/preload", "failed to fetch validators", {
155
+ error: error_1
156
+ });
157
+ return [3 /*break*/, 8];
158
+ case 8: return [2 /*return*/, {
159
+ validators: validators,
160
+ staking: currentStakingProgress,
161
+ minimumBondBalance: minimumBondBalanceStr
162
+ }];
163
+ }
164
+ });
165
+ }); };
166
+ exports.preload = preload;
167
+ var hydrate = function (data) {
168
+ var hydrated = fromHydratePreloadData(data);
169
+ (0, logs_1.log)("polkadot/preload", "hydrate " + hydrated.validators.length + " polkadot validators");
170
+ setPolkadotPreloadData(hydrated);
171
+ };
172
+ exports.hydrate = hydrate;
173
+ //# sourceMappingURL=preload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preload.js","sourceRoot":"","sources":["../src/preload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA0C;AAC1C,6CAAyC;AACzC,6BAA2C;AAC3C,uCAAqC;AACrC,iCAA0C;AAC1C,iCAA6D;AAE7D,2CAAiE;AACjE,qDAAuD;AAEvD,IAAI,4BAA4B,GAAwB;IACtD,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,SAAS;IAClB,kBAAkB,EAAE,GAAG;CACxB,CAAC;AAEF,SAAS,oBAAoB,CAC3B,YAAiC;IAEjC,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC;QACrD,YAAY,EACV,YAAY,CAAC,YAAY,KAAK,IAAI;YAChC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,wBAAS,CAAC,YAAY,CAAC,YAAY,CAAC;QAC9C,UAAU,EAAE,IAAI,wBAAS,CAAC,YAAY,CAAC,UAAU,CAAC;QAClD,WAAW,EAAE,IAAI,wBAAS,CAAC,YAAY,CAAC,WAAW,CAAC;QACpD,UAAU,EAAE,IAAI,wBAAS,CAAC,YAAY,CAAC,UAAU,CAAC;QAClD,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS;QACnC,gBAAgB,EAAE,CAAC,CAAC,YAAY,CAAC,gBAAgB;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAS;IACvC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,OAAO,GAOK,SAAS,CAAC;IAC1B,IAAI,kBAAkB,GAAG,GAAG,CAAC;IAE7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;YACvD,IAAA,KAKF,IAAI,CAAC,OAAO,EAJd,cAAc,oBAAA,EACd,SAAS,eAAA,EACT,gCAAgC,sCAAA,EAChC,eAAe,qBACD,CAAC;YACjB,OAAO,GAAG;gBACR,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;gBAC5B,gCAAgC,EAC9B,MAAM,CAAC,gCAAgC,CAAC,IAAI,GAAG;gBACjD,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;aAC/C,CAAC;SACH;QAED,IACE,IAAI,CAAC,kBAAkB,KAAK,IAAI;YAChC,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,EAC3C;YACA,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,GAAG,CAAC;SACrD;KACF;IAED,OAAO;QACL,UAAU,YAAA;QACV,OAAO,SAAA;QACP,kBAAkB,oBAAA;KACnB,CAAC;AACJ,CAAC;AAED,IAAM,OAAO,GAAG,IAAI,cAAO,EAAuB,CAAC;AACnD,SAAgB,6BAA6B;IAC3C,OAAO,4BAA4B,CAAC;AACtC,CAAC;AAFD,sEAEC;AACD,SAAgB,sBAAsB,CAAC,IAAyB;IAC9D,IAAI,IAAI,KAAK,4BAA4B;QAAE,OAAO;IAClD,4BAA4B,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAJD,wDAIC;AACD,SAAgB,6BAA6B;IAC3C,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;AAChC,CAAC;AAFD,sEAEC;AAED;;GAEG;AACI,IAAM,kBAAkB,GAAG,cAAM,OAAA,CAAC;IACvC,aAAa,EAAE,uBAAe;CAC/B,CAAC,EAFsC,CAEtC,CAAC;AAFU,QAAA,kBAAkB,sBAE5B;AAEH,IAAM,uBAAuB,GAAG,UAAC,aAAa,EAAE,YAAY;IAC1D,OAAO,CAAC,aAAa,IAAI,YAAY,CAAC,SAAS,KAAK,aAAa,CAAC,SAAS,CAAC;AAC9E,CAAC,CAAC;AAEK,IAAM,OAAO,GAAG;;;;oBACrB,qBAAM,IAAA,oCAAkB,GAAE,EAAA;;gBAA1B,SAA0B,CAAC;gBAC3B,qBAAM,IAAA,mBAAW,GAAE,EAAA;;gBAAnB,SAAmB,CAAC,CAAC,uCAAuC;gBACjC,qBAAM,IAAA,6BAAqB,GAAE,EAAA;;gBAAlD,kBAAkB,GAAG,SAA6B;gBAClD,qBAAqB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC;gBAE7B,qBAAM,IAAA,+BAAkB,GAAE,EAAA;;gBAAnD,sBAAsB,GAAG,SAA0B;gBACrC,kBAAkB,GACpC,4BAA4B,WADQ,EAAW,uBAAuB,GACtE,4BAA4B,QAD0C,CACzC;gBAC3B,UAAU,GAAG,kBAAkB,CAAC;qBAGlC,CAAA,CAAC,UAAU;oBACX,CAAC,UAAU,CAAC,MAAM;oBAClB,uBAAuB,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CAAA,EAFxE,wBAEwE;gBAExE,IAAA,UAAG,EAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAC;;;;gBAG9C,qBAAM,IAAA,0BAAa,EAAC,KAAK,CAAC,EAAA;;gBAAvC,UAAU,GAAG,SAA0B,CAAC;;;;gBAExC,IAAA,UAAG,EAAC,kBAAkB,EAAE,4BAA4B,EAAE;oBACpD,KAAK,SAAA;iBACN,CAAC,CAAC;;oBAIP,sBAAO;oBACL,UAAU,YAAA;oBACV,OAAO,EAAE,sBAAsB;oBAC/B,kBAAkB,EAAE,qBAAqB;iBAC1C,EAAC;;;KACH,CAAC;AAhCW,QAAA,OAAO,WAgClB;AACK,IAAM,OAAO,GAAG,UAAC,IAAa;IACnC,IAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAA,UAAG,EACD,kBAAkB,EAClB,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,sBAAsB,CACjE,CAAC;IACF,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB"}
@@ -0,0 +1,4 @@
1
+ import type { PolkadotResourcesRaw, PolkadotResources } from "./types";
2
+ export declare function toPolkadotResourcesRaw(r: PolkadotResources): PolkadotResourcesRaw;
3
+ export declare function fromPolkadotResourcesRaw(r: PolkadotResourcesRaw): PolkadotResources;
4
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACvE,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,iBAAiB,GACnB,oBAAoB,CAoBtB;AACD,wBAAgB,wBAAwB,CACtC,CAAC,EAAE,oBAAoB,GACtB,iBAAiB,CAoBnB"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.fromPolkadotResourcesRaw = exports.toPolkadotResourcesRaw = void 0;
4
+ var bignumber_js_1 = require("bignumber.js");
5
+ function toPolkadotResourcesRaw(r) {
6
+ var _a, _b;
7
+ var nonce = r.nonce, controller = r.controller, stash = r.stash;
8
+ return {
9
+ controller: controller,
10
+ stash: stash,
11
+ nonce: nonce,
12
+ lockedBalance: r.lockedBalance.toString(),
13
+ unlockedBalance: r.unlockedBalance.toString(),
14
+ unlockingBalance: r.unlockingBalance.toString(),
15
+ unlockings: (_a = r.unlockings) === null || _a === void 0 ? void 0 : _a.map(function (u) { return ({
16
+ amount: u.amount.toString(),
17
+ completionDate: u.completionDate.toISOString()
18
+ }); }),
19
+ nominations: (_b = r.nominations) === null || _b === void 0 ? void 0 : _b.map(function (n) { return ({
20
+ address: n.address,
21
+ value: n.value.toString(),
22
+ status: n.status
23
+ }); }),
24
+ numSlashingSpans: r.numSlashingSpans
25
+ };
26
+ }
27
+ exports.toPolkadotResourcesRaw = toPolkadotResourcesRaw;
28
+ function fromPolkadotResourcesRaw(r) {
29
+ var _a, _b;
30
+ var nonce = r.nonce, controller = r.controller, stash = r.stash;
31
+ return {
32
+ controller: controller,
33
+ stash: stash,
34
+ nonce: nonce,
35
+ lockedBalance: new bignumber_js_1.BigNumber(r.lockedBalance),
36
+ unlockedBalance: new bignumber_js_1.BigNumber(r.unlockedBalance),
37
+ unlockingBalance: new bignumber_js_1.BigNumber(r.unlockingBalance),
38
+ unlockings: (_a = r.unlockings) === null || _a === void 0 ? void 0 : _a.map(function (u) { return ({
39
+ amount: new bignumber_js_1.BigNumber(u.amount),
40
+ completionDate: new Date(u.completionDate)
41
+ }); }),
42
+ nominations: (_b = r.nominations) === null || _b === void 0 ? void 0 : _b.map(function (n) { return ({
43
+ address: n.address,
44
+ value: new bignumber_js_1.BigNumber(n.value),
45
+ status: n.status
46
+ }); }),
47
+ numSlashingSpans: Number(r.numSlashingSpans) || 0
48
+ };
49
+ }
50
+ exports.fromPolkadotResourcesRaw = fromPolkadotResourcesRaw;
51
+ //# sourceMappingURL=serialization.js.map