@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/.eslintrc.js ADDED
@@ -0,0 +1,57 @@
1
+ module.exports = {
2
+ parser: "@typescript-eslint/parser",
3
+ env: {
4
+ browser: true,
5
+ es6: true,
6
+ node: true,
7
+ jest: true,
8
+ },
9
+ extends: [
10
+ "eslint:recommended",
11
+ "plugin:@typescript-eslint/eslint-recommended",
12
+ "plugin:@typescript-eslint/recommended",
13
+ "prettier",
14
+ ],
15
+ globals: {
16
+ Atomics: "readonly",
17
+ SharedArrayBuffer: "readonly",
18
+ },
19
+ plugins: ["@typescript-eslint", "prettier"],
20
+ rules: {
21
+ "no-console": ["error", { allow: ["warn", "error"] }],
22
+ "linebreak-style": ["error", "unix"],
23
+ semi: ["error", "always"],
24
+ "no-unused-vars": "off",
25
+ "import/prefer-default-export": 0,
26
+ "no-plusplus": 0,
27
+ "no-underscore-dangle": 0,
28
+ "prefer-template": 0,
29
+ "no-await-in-loop": 0,
30
+ "no-restricted-syntax": 0,
31
+ "consistent-return": 0,
32
+ "no-lonely-if": 0,
33
+ "no-use-before-define": 0,
34
+ "no-nested-ternary": 0,
35
+ "import/no-cycle": 0,
36
+ "no-multi-assign": 0,
37
+ "guard-for-in": 0,
38
+ "no-continue": 0,
39
+ "lines-between-class-members": 0,
40
+ "prefer-destructuring": 0,
41
+ "prettier/prettier": "error",
42
+ "@typescript-eslint/no-use-before-define": "off",
43
+ "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
44
+ "@typescript-eslint/no-empty-function": "off",
45
+ "@typescript-eslint/no-namespace": ["error", { allowDeclarations: true }],
46
+ "@typescript-eslint/no-explicit-any": 0,
47
+ "@typescript-eslint/ban-types": [
48
+ "error",
49
+ {
50
+ extendDefaults: true,
51
+ types: {
52
+ "{}": false,
53
+ },
54
+ },
55
+ ],
56
+ },
57
+ };
@@ -0,0 +1,4 @@
1
+
2
+ > @ledgerhq/coin-polkadot@0.0.1 build /home/runner/work/ledger-live/ledger-live/libs/coin-polkadot
3
+ > tsc && tsc -m ES6 --outDir lib-es
4
+
package/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ # @ledgerhq/coin-polkadot
2
+
3
+ ## 0.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`5b65ae6b04`](https://github.com/LedgerHQ/ledger-live/commit/5b65ae6b04f20534962b986fab4e3ed29ad2e273), [`0725151a34`](https://github.com/LedgerHQ/ledger-live/commit/0725151a348608bec1f8338b57772f12a23cb471), [`cec9e0f33d`](https://github.com/LedgerHQ/ledger-live/commit/cec9e0f33d5bc058c0e4b3a2680fc8791d5b61b1), [`62af25493e`](https://github.com/LedgerHQ/ledger-live/commit/62af25493e2becf897d517af42542db208b971c7), [`467822aaf6`](https://github.com/LedgerHQ/ledger-live/commit/467822aaf680df334531c1489e5a845fecad492a), [`725000b4ed`](https://github.com/LedgerHQ/ledger-live/commit/725000b4ed37a2669f3a0cd70ca2b5d0b1d4825e)]:
8
+ - @ledgerhq/types-live@6.31.0
9
+ - @ledgerhq/cryptoassets@9.0.0
10
+ - @ledgerhq/devices@8.0.0
11
+ - @ledgerhq/coin-framework@0.0.2
12
+ - @ledgerhq/hw-app-polkadot@6.27.12
package/jest.config.js ADDED
@@ -0,0 +1,10 @@
1
+ /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2
+ module.exports = {
3
+ preset: 'ts-jest',
4
+ testEnvironment: 'node',
5
+ testPathIgnorePatterns: [
6
+ "lib/",
7
+ "lib-es/"
8
+ ]
9
+ };
10
+
@@ -0,0 +1,15 @@
1
+ import type { Operation } from "@ledgerhq/types-live";
2
+ import { PolkadotAccount } from "./types";
3
+ import type { Unit } from "@ledgerhq/types-cryptoassets";
4
+ declare function formatOperationSpecifics(op: Operation, unit: Unit | null | undefined): string;
5
+ declare function formatAccountSpecifics(account: PolkadotAccount): string;
6
+ export declare function fromOperationExtraRaw(extra: Record<string, any> | null | undefined): Record<string, any> | null | undefined;
7
+ export declare function toOperationExtraRaw(extra: Record<string, any> | null | undefined): Record<string, any> | null | undefined;
8
+ declare const _default: {
9
+ formatAccountSpecifics: typeof formatAccountSpecifics;
10
+ formatOperationSpecifics: typeof formatOperationSpecifics;
11
+ fromOperationExtraRaw: typeof fromOperationExtraRaw;
12
+ toOperationExtraRaw: typeof toOperationExtraRaw;
13
+ };
14
+ export default _default;
15
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,iBAAS,wBAAwB,CAC/B,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAC5B,MAAM,CA0CR;AAED,iBAAS,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAiDhE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,0CA2B9C;AACD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,0CA2B9C;;;;;;;AACD,wBAKE"}
package/lib/account.js ADDED
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ exports.__esModule = true;
17
+ exports.toOperationExtraRaw = exports.fromOperationExtraRaw = void 0;
18
+ var invariant_1 = __importDefault(require("invariant"));
19
+ var bignumber_js_1 = require("bignumber.js");
20
+ var index_1 = require("@ledgerhq/coin-framework/account/index");
21
+ var index_2 = require("@ledgerhq/coin-framework/currencies/index");
22
+ function formatOperationSpecifics(op, unit) {
23
+ var _a = op.extra, validators = _a.validators, bondedAmount = _a.bondedAmount, unbondedAmount = _a.unbondedAmount, withdrawUnbondedAmount = _a.withdrawUnbondedAmount, validatorStash = _a.validatorStash, amount = _a.amount;
24
+ var str = (validators || []).map(function (v) { return "\n ".concat(v); }).join("");
25
+ var formatConfig = {
26
+ disableRounding: true,
27
+ alwaysShowSign: false,
28
+ showCode: true
29
+ };
30
+ str +=
31
+ bondedAmount && !bondedAmount.isNaN()
32
+ ? "\n bondedAmount: ".concat(unit
33
+ ? (0, index_2.formatCurrencyUnit)(unit, bondedAmount, formatConfig)
34
+ : bondedAmount)
35
+ : unbondedAmount && !unbondedAmount.isNaN()
36
+ ? "\n unbondedAmount: ".concat(unit
37
+ ? (0, index_2.formatCurrencyUnit)(unit, unbondedAmount, formatConfig)
38
+ : unbondedAmount)
39
+ : withdrawUnbondedAmount && !withdrawUnbondedAmount.isNaN()
40
+ ? "\n withdrawUnbondedAmount: ".concat(unit
41
+ ? (0, index_2.formatCurrencyUnit)(unit, withdrawUnbondedAmount, formatConfig)
42
+ : withdrawUnbondedAmount)
43
+ : "";
44
+ str += validatorStash ? "\n validatorStash: ".concat(validatorStash) : "";
45
+ str += amount
46
+ ? "\n amount: ".concat(unit ? (0, index_2.formatCurrencyUnit)(unit, amount, formatConfig) : amount)
47
+ : "";
48
+ return str;
49
+ }
50
+ function formatAccountSpecifics(account) {
51
+ var _a;
52
+ var polkadotResources = account.polkadotResources;
53
+ (0, invariant_1["default"])(polkadotResources, "polkadot account expected");
54
+ var unit = (0, index_1.getAccountUnit)(account);
55
+ var formatConfig = {
56
+ disableRounding: true,
57
+ alwaysShowSign: false,
58
+ showCode: true
59
+ };
60
+ var str = " ";
61
+ str +=
62
+ (0, index_2.formatCurrencyUnit)(unit, account.spendableBalance, formatConfig) +
63
+ " spendable. ";
64
+ if (polkadotResources.lockedBalance.gt(0)) {
65
+ str +=
66
+ (0, index_2.formatCurrencyUnit)(unit, polkadotResources.lockedBalance, formatConfig) + " locked. ";
67
+ }
68
+ if (polkadotResources.unlockedBalance.gt(0)) {
69
+ str +=
70
+ (0, index_2.formatCurrencyUnit)(unit, polkadotResources.unlockedBalance, formatConfig) + " unlocked. ";
71
+ }
72
+ if (polkadotResources.stash) {
73
+ str += "\nstash : " + polkadotResources.stash;
74
+ }
75
+ if (polkadotResources.controller) {
76
+ str +=
77
+ "\ncontroller : " + polkadotResources.controller;
78
+ }
79
+ if ((_a = polkadotResources.nominations) === null || _a === void 0 ? void 0 : _a.length) {
80
+ str += "\nNominations\n";
81
+ str += polkadotResources.nominations
82
+ .map(function (v) { return " to ".concat(v.address); })
83
+ .join("\n");
84
+ }
85
+ return str;
86
+ }
87
+ function fromOperationExtraRaw(extra) {
88
+ if (extra && extra.transferAmount) {
89
+ extra = __assign(__assign({}, extra), { transferAmount: extra.transferAmount.toString() });
90
+ }
91
+ if (extra && extra.bondedAmount) {
92
+ return __assign(__assign({}, extra), { bondedAmount: new bignumber_js_1.BigNumber(extra.bondedAmount) });
93
+ }
94
+ if (extra && extra.unbondedAmount) {
95
+ return __assign(__assign({}, extra), { unbondedAmount: new bignumber_js_1.BigNumber(extra.unbondedAmount) });
96
+ }
97
+ if (extra && extra.withdrawUnbondedAmount) {
98
+ return __assign(__assign({}, extra), { withdrawUnbondedAmount: new bignumber_js_1.BigNumber(extra.withdrawUnbondedAmount) });
99
+ }
100
+ // for subscan reward & slash
101
+ if (extra && extra.amount) {
102
+ return __assign(__assign({}, extra), { amount: new bignumber_js_1.BigNumber(extra.amount) });
103
+ }
104
+ return extra;
105
+ }
106
+ exports.fromOperationExtraRaw = fromOperationExtraRaw;
107
+ function toOperationExtraRaw(extra) {
108
+ if (extra && extra.transferAmount) {
109
+ extra = __assign(__assign({}, extra), { transferAmount: extra.transferAmount.toString() });
110
+ }
111
+ if (extra && extra.bondedAmount) {
112
+ return __assign(__assign({}, extra), { bondedAmount: extra.bondedAmount.toString() });
113
+ }
114
+ if (extra && extra.unbondedAmount) {
115
+ return __assign(__assign({}, extra), { unbondedAmount: extra.unbondedAmount.toString() });
116
+ }
117
+ if (extra && extra.withdrawUnbondedAmount) {
118
+ return __assign(__assign({}, extra), { withdrawUnbondedAmount: extra.withdrawUnbondedAmount.toString() });
119
+ }
120
+ // for subscan reward & slash
121
+ if (extra && extra.amount) {
122
+ return __assign(__assign({}, extra), { amount: extra.amount.toString() });
123
+ }
124
+ return extra;
125
+ }
126
+ exports.toOperationExtraRaw = toOperationExtraRaw;
127
+ exports["default"] = {
128
+ formatAccountSpecifics: formatAccountSpecifics,
129
+ formatOperationSpecifics: formatOperationSpecifics,
130
+ fromOperationExtraRaw: fromOperationExtraRaw,
131
+ toOperationExtraRaw: toOperationExtraRaw
132
+ };
133
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns true if address is valid, false if it's invalid (can't parse or wrong checksum)
3
+ *
4
+ * @param {*} address
5
+ */
6
+ export declare const isValidAddress: (address: string, ss58Format?: number) => boolean;
7
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH,eAAO,MAAM,cAAc,YAChB,MAAM,eACH,MAAM,KACjB,OAaF,CAAC"}
package/lib/address.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.isValidAddress = void 0;
4
+ var util_crypto_1 = require("@polkadot/util-crypto");
5
+ var util_1 = require("@polkadot/util");
6
+ var POLKADOT_SS58_PREFIX = 0;
7
+ /**
8
+ * Returns true if address is valid, false if it's invalid (can't parse or wrong checksum)
9
+ *
10
+ * @param {*} address
11
+ */
12
+ // TODO Cache this to improve perf
13
+ var isValidAddress = function (address, ss58Format) {
14
+ if (ss58Format === void 0) { ss58Format = POLKADOT_SS58_PREFIX; }
15
+ if (!address)
16
+ return false;
17
+ try {
18
+ (0, util_crypto_1.encodeAddress)((0, util_1.isHex)(address)
19
+ ? (0, util_1.hexToU8a)(address)
20
+ : (0, util_crypto_1.decodeAddress)(address, false, ss58Format));
21
+ return true;
22
+ }
23
+ catch (err) {
24
+ return false;
25
+ }
26
+ };
27
+ exports.isValidAddress = isValidAddress;
28
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":";;;AAAA,qDAAqE;AACrE,uCAAiD;AAEjD,IAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B;;;;GAIG;AACH,kCAAkC;AAC3B,IAAM,cAAc,GAAG,UAC5B,OAAe,EACf,UAAyC;IAAzC,2BAAA,EAAA,iCAAyC;IAEzC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,IAAI;QACF,IAAA,2BAAa,EACX,IAAA,YAAK,EAAC,OAAO,CAAC;YACZ,CAAC,CAAC,IAAA,eAAQ,EAAC,OAAO,CAAC;YACnB,CAAC,CAAC,IAAA,2BAAa,EAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAC9C,CAAC;QACF,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Fetch all operations for a single account from indexer
3
+ *
4
+ * @param {string} accountId
5
+ * @param {string} addr
6
+ * @param {number} startAt - blockHeight after which you fetch this op (included)
7
+ *
8
+ * @return {Operation[]}
9
+ */
10
+ export declare const getOperations: (accountId: string, addr: string, startAt?: number) => Promise<any>;
11
+ //# sourceMappingURL=bisontrails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bisontrails.d.ts","sourceRoot":"","sources":["../../src/api/bisontrails.ts"],"names":[],"mappings":"AAuUA;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,cACb,MAAM,QACX,MAAM,mCAIb,CAAC"}
@@ -0,0 +1,351 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __read = (this && this.__read) || function (o, n) {
50
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
51
+ if (!m) return o;
52
+ var i = m.call(o), r, ar = [], e;
53
+ try {
54
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
55
+ }
56
+ catch (error) { e = { error: error }; }
57
+ finally {
58
+ try {
59
+ if (r && !r.done && (m = i["return"])) m.call(i);
60
+ }
61
+ finally { if (e) throw e.error; }
62
+ }
63
+ return ar;
64
+ };
65
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
66
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
67
+ if (ar || !(i in from)) {
68
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
69
+ ar[i] = from[i];
70
+ }
71
+ }
72
+ return to.concat(ar || Array.prototype.slice.call(from));
73
+ };
74
+ var __importDefault = (this && this.__importDefault) || function (mod) {
75
+ return (mod && mod.__esModule) ? mod : { "default": mod };
76
+ };
77
+ exports.__esModule = true;
78
+ exports.getOperations = void 0;
79
+ var network_1 = __importDefault(require("@ledgerhq/coin-framework/network"));
80
+ var querystring_1 = __importDefault(require("querystring"));
81
+ var bignumber_js_1 = require("bignumber.js");
82
+ var operation_1 = require("@ledgerhq/coin-framework/operation");
83
+ var env_1 = require("@ledgerhq/coin-framework/env");
84
+ var common_1 = require("./common");
85
+ var address_1 = require("../address");
86
+ var LIMIT = 200;
87
+ /**
88
+ * Return the url of the indexer
89
+ *
90
+ * @returns {string}
91
+ */
92
+ var getBaseApiUrl = function () { return (0, env_1.getEnv)("API_POLKADOT_INDEXER"); };
93
+ /**
94
+ * Fetch operation lists from indexer
95
+ *
96
+ * @param {string} addr
97
+ * @param {number} offset
98
+ * @param {number} startAt
99
+ * @param {number} limit
100
+ *
101
+ * @returns {string}
102
+ */
103
+ var getAccountOperationUrl = function (addr, offset, startAt, limit) {
104
+ if (limit === void 0) { limit = LIMIT; }
105
+ return "".concat(getBaseApiUrl(), "/accounts/").concat(addr, "/operations?").concat(querystring_1["default"].stringify({
106
+ limit: limit,
107
+ offset: offset,
108
+ startAt: startAt
109
+ }));
110
+ };
111
+ var getWithdrawUnbondedAmount = function (extrinsic) {
112
+ var _a;
113
+ return (((_a = extrinsic === null || extrinsic === void 0 ? void 0 : extrinsic.staking) === null || _a === void 0 ? void 0 : _a.eventStaking.reduce(function (acc, curr) {
114
+ return curr.method === "Withdrawn"
115
+ ? new bignumber_js_1.BigNumber(acc).plus(curr.value)
116
+ : new bignumber_js_1.BigNumber(0);
117
+ }, new bignumber_js_1.BigNumber(0))) || new bignumber_js_1.BigNumber(0));
118
+ };
119
+ var getController = function (_extrinsic) {
120
+ // TODO: ask BisonTrails to provide the info
121
+ return "";
122
+ };
123
+ /**
124
+ * add Extra info for operation details
125
+ *
126
+ * @param {OperationType} type
127
+ * @param {*} extrinsic
128
+ *
129
+ * @returns {Object}
130
+ */
131
+ var getExtra = function (type, extrinsic) {
132
+ var _a, _b, _c;
133
+ var extra = {
134
+ palletMethod: "".concat(extrinsic.section, ".").concat(extrinsic.method)
135
+ };
136
+ switch (type) {
137
+ case "IN":
138
+ case "OUT":
139
+ if (extrinsic.amount || extrinsic.amount === 0) {
140
+ extra = __assign(__assign({}, extra), { transferAmount: new bignumber_js_1.BigNumber(extrinsic.amount) });
141
+ }
142
+ break;
143
+ case "BOND":
144
+ if (extrinsic.amount || extrinsic.amount === 0) {
145
+ extra = __assign(__assign({}, extra), { bondedAmount: new bignumber_js_1.BigNumber(extrinsic.amount) });
146
+ }
147
+ break;
148
+ case "UNBOND":
149
+ if (extrinsic.amount || extrinsic.amount === 0) {
150
+ extra = __assign(__assign({}, extra), { unbondedAmount: new bignumber_js_1.BigNumber(extrinsic.amount) });
151
+ }
152
+ break;
153
+ case "WITHDRAW_UNBONDED":
154
+ extra = __assign(__assign({}, extra), { withdrawUnbondedAmount: getWithdrawUnbondedAmount(extrinsic) });
155
+ break;
156
+ case "SET_CONTROLLER":
157
+ extra = __assign(__assign({}, extra), { controller: getController(extrinsic) });
158
+ break;
159
+ case "REWARD_PAYOUT":
160
+ case "SLASH":
161
+ extra = __assign(__assign({}, extra), { validatorStash: extrinsic.validatorStash, amount: new bignumber_js_1.BigNumber(extrinsic.value) });
162
+ break;
163
+ case "NOMINATE":
164
+ extra = __assign(__assign({}, extra), { validators: (_c = (_b = (_a = extrinsic.staking) === null || _a === void 0 ? void 0 : _a.validators) === null || _b === void 0 ? void 0 : _b.reduce(function (acc, current) {
165
+ return __spreadArray(__spreadArray([], __read(acc), false), [current.address], false);
166
+ }, [])) !== null && _c !== void 0 ? _c : [] });
167
+ break;
168
+ }
169
+ return extra;
170
+ };
171
+ /**
172
+ * Returns the operation value (amount if relevant + fees) depending on type
173
+ *
174
+ * @param {*} extrinsic
175
+ * @param {OperationType} type
176
+ *
177
+ * @returns {BigNumber}
178
+ */
179
+ var getValue = function (extrinsic, type) {
180
+ if (!extrinsic.isSuccess) {
181
+ return type === "IN"
182
+ ? new bignumber_js_1.BigNumber(0)
183
+ : new bignumber_js_1.BigNumber(extrinsic.partialFee || 0);
184
+ }
185
+ switch (type) {
186
+ case "OUT":
187
+ return extrinsic.signer !== extrinsic.affectedAddress1
188
+ ? new bignumber_js_1.BigNumber(extrinsic.amount).plus(extrinsic.partialFee)
189
+ : new bignumber_js_1.BigNumber(extrinsic.partialFee);
190
+ case "IN":
191
+ case "SLASH":
192
+ return new bignumber_js_1.BigNumber(extrinsic.amount);
193
+ default:
194
+ return new bignumber_js_1.BigNumber(extrinsic.partialFee);
195
+ }
196
+ };
197
+ /**
198
+ * Map extrinsic into the live operation type
199
+ *
200
+ * @param {string} addr
201
+ * @param {string} accountId
202
+ * @param {*} extrinsic
203
+ *
204
+ * @returns {Operation | null}
205
+ */
206
+ var extrinsicToOperation = function (addr, accountId, extrinsic) {
207
+ var type = (0, common_1.getOperationType)(extrinsic.section, extrinsic.method);
208
+ if (type === "OUT" &&
209
+ extrinsic.affectedAddress1 === addr &&
210
+ extrinsic.signer !== addr) {
211
+ type = "IN";
212
+ }
213
+ if (type !== "IN" && extrinsic.signer !== addr) {
214
+ return null;
215
+ }
216
+ return {
217
+ id: (0, operation_1.encodeOperationId)(accountId, extrinsic.hash, type),
218
+ accountId: accountId,
219
+ fee: new bignumber_js_1.BigNumber(extrinsic.partialFee || 0),
220
+ value: getValue(extrinsic, type),
221
+ type: type,
222
+ hash: extrinsic.hash,
223
+ blockHeight: extrinsic.blockNumber,
224
+ date: new Date(extrinsic.timestamp),
225
+ extra: getExtra(type, extrinsic),
226
+ senders: [extrinsic.signer],
227
+ recipients: [extrinsic.affectedAddress1, extrinsic.affectedAddress2]
228
+ .filter(Boolean)
229
+ .filter(address_1.isValidAddress),
230
+ transactionSequenceNumber: extrinsic.signer === addr ? extrinsic.nonce : undefined,
231
+ hasFailed: !extrinsic.isSuccess
232
+ };
233
+ };
234
+ /**
235
+ * Map reward to live operation type
236
+ *
237
+ * @param {string} addr
238
+ * @param {string} accountId
239
+ * @param {*} reward
240
+ *
241
+ * @returns {Operation | null}
242
+ */
243
+ var rewardToOperation = function (addr, accountId, reward) {
244
+ var hash = reward.extrinsicHash;
245
+ var type = "REWARD_PAYOUT";
246
+ return {
247
+ id: (0, operation_1.encodeOperationId)(accountId, "".concat(hash, "+").concat(reward.index), type),
248
+ accountId: accountId,
249
+ fee: new bignumber_js_1.BigNumber(0),
250
+ value: new bignumber_js_1.BigNumber(reward.value),
251
+ type: type,
252
+ hash: hash,
253
+ blockHeight: reward.blockNumber,
254
+ date: new Date(reward.timestamp),
255
+ extra: getExtra(type, reward),
256
+ senders: [reward.validatorStash].filter(Boolean),
257
+ recipients: [reward.accountId].filter(Boolean)
258
+ };
259
+ };
260
+ /**
261
+ * Map slash to live operation type
262
+ *
263
+ * @param {string} addr
264
+ * @param {string} accountId
265
+ * @param {*} slash
266
+ *
267
+ * @returns {Operation | null}
268
+ */
269
+ var slashToOperation = function (addr, accountId, slash) {
270
+ var hash = "".concat(slash.blockNumber);
271
+ var type = "SLASH";
272
+ return {
273
+ id: (0, operation_1.encodeOperationId)(accountId, "".concat(hash, "+").concat(slash.index), type),
274
+ accountId: accountId,
275
+ fee: new bignumber_js_1.BigNumber(0),
276
+ value: new bignumber_js_1.BigNumber(slash.value),
277
+ type: type,
278
+ hash: hash,
279
+ blockHeight: slash.blockNumber,
280
+ senders: [slash.validatorStash].filter(Boolean),
281
+ recipients: [slash.accountId].filter(Boolean),
282
+ date: new Date(slash.timestamp),
283
+ extra: getExtra(type, slash)
284
+ };
285
+ };
286
+ /**
287
+ * Fetch loop with multiple operations per page / offsite / start
288
+ *
289
+ * @param {string} accountId
290
+ * @param {string} addr
291
+ * @param {number} startAt
292
+ * @param {number} offset
293
+ *
294
+ * @param {Operation[]} prevOperations
295
+ */
296
+ var fetchOperationList = function (accountId, addr, startAt, offset, prevOperations) {
297
+ if (offset === void 0) { offset = 0; }
298
+ if (prevOperations === void 0) { prevOperations = []; }
299
+ return __awaiter(void 0, void 0, void 0, function () {
300
+ var data, operations, rewards, slashes, mergedOp;
301
+ return __generator(this, function (_a) {
302
+ switch (_a.label) {
303
+ case 0: return [4 /*yield*/, (0, network_1["default"])({
304
+ method: "GET",
305
+ url: getAccountOperationUrl(addr, offset, startAt)
306
+ })];
307
+ case 1:
308
+ data = (_a.sent()).data;
309
+ operations = data.extrinsics.map(function (extrinsic) {
310
+ return extrinsicToOperation(addr, accountId, extrinsic);
311
+ });
312
+ rewards = data.rewards.map(function (reward) {
313
+ return rewardToOperation(addr, accountId, reward);
314
+ });
315
+ slashes = data.slashes.map(function (slash) {
316
+ return slashToOperation(addr, accountId, slash);
317
+ });
318
+ mergedOp = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(prevOperations), false), __read(operations), false), __read(rewards), false), __read(slashes), false);
319
+ if (operations.length < LIMIT &&
320
+ rewards.length < LIMIT &&
321
+ slashes.length < LIMIT) {
322
+ return [2 /*return*/, mergedOp.filter(Boolean).sort(function (a, b) { return b.date - a.date; })];
323
+ }
324
+ return [4 /*yield*/, fetchOperationList(accountId, addr, startAt, offset + LIMIT, mergedOp)];
325
+ case 2: return [2 /*return*/, _a.sent()];
326
+ }
327
+ });
328
+ });
329
+ };
330
+ /**
331
+ * Fetch all operations for a single account from indexer
332
+ *
333
+ * @param {string} accountId
334
+ * @param {string} addr
335
+ * @param {number} startAt - blockHeight after which you fetch this op (included)
336
+ *
337
+ * @return {Operation[]}
338
+ */
339
+ var getOperations = function (accountId, addr, startAt) {
340
+ if (startAt === void 0) { startAt = 0; }
341
+ return __awaiter(void 0, void 0, void 0, function () {
342
+ return __generator(this, function (_a) {
343
+ switch (_a.label) {
344
+ case 0: return [4 /*yield*/, fetchOperationList(accountId, addr, startAt)];
345
+ case 1: return [2 /*return*/, _a.sent()];
346
+ }
347
+ });
348
+ });
349
+ };
350
+ exports.getOperations = getOperations;
351
+ //# sourceMappingURL=bisontrails.js.map