@ledgerhq/coin-cardano 0.1.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +20 -0
- package/.turbo/turbo-build.log +4 -0
- package/.unimportedrc.json +35 -0
- package/CHANGELOG.md +19 -0
- package/LICENSE.txt +21 -0
- package/jest.config.js +8 -0
- package/lib/account.d.ts +7 -0
- package/lib/account.d.ts.map +1 -0
- package/lib/account.js +41 -0
- package/lib/account.js.map +1 -0
- package/lib/address.unit.test.d.ts +2 -0
- package/lib/address.unit.test.d.ts.map +1 -0
- package/lib/address.unit.test.js +21 -0
- package/lib/address.unit.test.js.map +1 -0
- package/lib/api/api-types.d.ts +106 -0
- package/lib/api/api-types.d.ts.map +1 -0
- package/lib/api/api-types.js +9 -0
- package/lib/api/api-types.js.map +1 -0
- package/lib/api/getDelegationInfo.d.ts +4 -0
- package/lib/api/getDelegationInfo.d.ts.map +1 -0
- package/lib/api/getDelegationInfo.js +48 -0
- package/lib/api/getDelegationInfo.js.map +1 -0
- package/lib/api/getNetworkInfo.d.ts +5 -0
- package/lib/api/getNetworkInfo.d.ts.map +1 -0
- package/lib/api/getNetworkInfo.js +46 -0
- package/lib/api/getNetworkInfo.js.map +1 -0
- package/lib/api/getPools.d.ts +5 -0
- package/lib/api/getPools.d.ts.map +1 -0
- package/lib/api/getPools.js +45 -0
- package/lib/api/getPools.js.map +1 -0
- package/lib/api/getTransactions.d.ts +10 -0
- package/lib/api/getTransactions.d.ts.map +1 -0
- package/lib/api/getTransactions.js +139 -0
- package/lib/api/getTransactions.js.map +1 -0
- package/lib/api/submitTransaction.d.ts +7 -0
- package/lib/api/submitTransaction.d.ts.map +1 -0
- package/lib/api/submitTransaction.js +34 -0
- package/lib/api/submitTransaction.js.map +1 -0
- package/lib/bridge/index.d.ts +11 -0
- package/lib/bridge/index.d.ts.map +1 -0
- package/lib/bridge/index.js +70 -0
- package/lib/bridge/index.js.map +1 -0
- package/lib/bridge.integration.test.d.ts +4 -0
- package/lib/bridge.integration.test.d.ts.map +1 -0
- package/lib/bridge.integration.test.js +113 -0
- package/lib/bridge.integration.test.js.map +1 -0
- package/lib/broadcast.d.ts +8 -0
- package/lib/broadcast.d.ts.map +1 -0
- package/lib/broadcast.js +28 -0
- package/lib/broadcast.js.map +1 -0
- package/lib/buildOptimisticOperation.d.ts +4 -0
- package/lib/buildOptimisticOperation.d.ts.map +1 -0
- package/lib/buildOptimisticOperation.js +125 -0
- package/lib/buildOptimisticOperation.js.map +1 -0
- package/lib/buildSubAccounts.d.ts +26 -0
- package/lib/buildSubAccounts.d.ts.map +1 -0
- package/lib/buildSubAccounts.js +124 -0
- package/lib/buildSubAccounts.js.map +1 -0
- package/lib/buildTransaction.d.ts +11 -0
- package/lib/buildTransaction.d.ts.map +1 -0
- package/lib/buildTransaction.js +342 -0
- package/lib/buildTransaction.js.map +1 -0
- package/lib/cli-transaction.d.ts +18 -0
- package/lib/cli-transaction.d.ts.map +1 -0
- package/lib/cli-transaction.js +66 -0
- package/lib/cli-transaction.js.map +1 -0
- package/lib/constants.d.ts +8 -0
- package/lib/constants.d.ts.map +1 -0
- package/lib/constants.js +12 -0
- package/lib/constants.js.map +1 -0
- package/lib/createTransaction.d.ts +9 -0
- package/lib/createTransaction.d.ts.map +1 -0
- package/lib/createTransaction.js +23 -0
- package/lib/createTransaction.js.map +1 -0
- package/lib/datasets/rawAccount.1.d.ts +3 -0
- package/lib/datasets/rawAccount.1.d.ts.map +1 -0
- package/lib/datasets/rawAccount.1.js +20 -0
- package/lib/datasets/rawAccount.1.js.map +1 -0
- package/lib/datasets/scanAccounts.d.ts +5 -0
- package/lib/datasets/scanAccounts.d.ts.map +1 -0
- package/lib/datasets/scanAccounts.js +27 -0
- package/lib/datasets/scanAccounts.js.map +1 -0
- package/lib/deviceTransactionConfig.d.ts +11 -0
- package/lib/deviceTransactionConfig.d.ts.map +1 -0
- package/lib/deviceTransactionConfig.js +106 -0
- package/lib/deviceTransactionConfig.js.map +1 -0
- package/lib/errors.d.ts +22 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +18 -0
- package/lib/errors.js.map +1 -0
- package/lib/estimateMaxSpendable.d.ts +9 -0
- package/lib/estimateMaxSpendable.d.ts.map +1 -0
- package/lib/estimateMaxSpendable.js +53 -0
- package/lib/estimateMaxSpendable.js.map +1 -0
- package/lib/getTransactionStatus.d.ts +4 -0
- package/lib/getTransactionStatus.d.ts.map +1 -0
- package/lib/getTransactionStatus.js +214 -0
- package/lib/getTransactionStatus.js.map +1 -0
- package/lib/getTransactionStatus.unit.test.d.ts +2 -0
- package/lib/getTransactionStatus.unit.test.d.ts.map +1 -0
- package/lib/getTransactionStatus.unit.test.js +54 -0
- package/lib/getTransactionStatus.unit.test.js.map +1 -0
- package/lib/hw-getAddress.d.ts +6 -0
- package/lib/hw-getAddress.d.ts.map +1 -0
- package/lib/hw-getAddress.js +37 -0
- package/lib/hw-getAddress.js.map +1 -0
- package/lib/logic.d.ts +88 -0
- package/lib/logic.d.ts.map +1 -0
- package/lib/logic.js +264 -0
- package/lib/logic.js.map +1 -0
- package/lib/logic.unit.test.d.ts +2 -0
- package/lib/logic.unit.test.d.ts.map +1 -0
- package/lib/logic.unit.test.js +40 -0
- package/lib/logic.unit.test.js.map +1 -0
- package/lib/networks.d.ts +3 -0
- package/lib/networks.d.ts.map +1 -0
- package/lib/networks.js +36 -0
- package/lib/networks.js.map +1 -0
- package/lib/postSyncPatch.d.ts +6 -0
- package/lib/postSyncPatch.d.ts.map +1 -0
- package/lib/postSyncPatch.js +35 -0
- package/lib/postSyncPatch.js.map +1 -0
- package/lib/prepareTransaction.d.ts +10 -0
- package/lib/prepareTransaction.d.ts.map +1 -0
- package/lib/prepareTransaction.js +44 -0
- package/lib/prepareTransaction.js.map +1 -0
- package/lib/serialization.d.ts +7 -0
- package/lib/serialization.d.ts.map +1 -0
- package/lib/serialization.js +146 -0
- package/lib/serialization.js.map +1 -0
- package/lib/signOperation.d.ts +9 -0
- package/lib/signOperation.d.ts.map +1 -0
- package/lib/signOperation.js +71 -0
- package/lib/signOperation.js.map +1 -0
- package/lib/signer.d.ts +92 -0
- package/lib/signer.d.ts.map +1 -0
- package/lib/signer.js +3 -0
- package/lib/signer.js.map +1 -0
- package/lib/specs.d.ts +7 -0
- package/lib/specs.d.ts.map +1 -0
- package/lib/specs.js +218 -0
- package/lib/specs.js.map +1 -0
- package/lib/speculos-deviceActions.d.ts +4 -0
- package/lib/speculos-deviceActions.d.ts.map +1 -0
- package/lib/speculos-deviceActions.js +128 -0
- package/lib/speculos-deviceActions.js.map +1 -0
- package/lib/synchronisation.d.ts +6 -0
- package/lib/synchronisation.d.ts.map +1 -0
- package/lib/synchronisation.js +237 -0
- package/lib/synchronisation.js.map +1 -0
- package/lib/synchronisation.unit.test.d.ts +2 -0
- package/lib/synchronisation.unit.test.d.ts.map +1 -0
- package/lib/synchronisation.unit.test.js +129 -0
- package/lib/synchronisation.unit.test.js.map +1 -0
- package/lib/transaction.d.ts +15 -0
- package/lib/transaction.d.ts.map +1 -0
- package/lib/transaction.js +43 -0
- package/lib/transaction.js.map +1 -0
- package/lib/types.d.ts +188 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +18 -0
- package/lib/types.js.map +1 -0
- package/lib/typhonSerializer.d.ts +17 -0
- package/lib/typhonSerializer.d.ts.map +1 -0
- package/lib/typhonSerializer.js +213 -0
- package/lib/typhonSerializer.js.map +1 -0
- package/lib/utils.d.ts +2 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +8 -0
- package/lib/utils.js.map +1 -0
- package/lib-es/account.d.ts +7 -0
- package/lib-es/account.d.ts.map +1 -0
- package/lib-es/account.js +34 -0
- package/lib-es/account.js.map +1 -0
- package/lib-es/address.unit.test.d.ts +2 -0
- package/lib-es/address.unit.test.d.ts.map +1 -0
- package/lib-es/address.unit.test.js +19 -0
- package/lib-es/address.unit.test.js.map +1 -0
- package/lib-es/api/api-types.d.ts +106 -0
- package/lib-es/api/api-types.d.ts.map +1 -0
- package/lib-es/api/api-types.js +6 -0
- package/lib-es/api/api-types.js.map +1 -0
- package/lib-es/api/getDelegationInfo.d.ts +4 -0
- package/lib-es/api/getDelegationInfo.d.ts.map +1 -0
- package/lib-es/api/getDelegationInfo.js +41 -0
- package/lib-es/api/getDelegationInfo.js.map +1 -0
- package/lib-es/api/getNetworkInfo.d.ts +5 -0
- package/lib-es/api/getNetworkInfo.d.ts.map +1 -0
- package/lib-es/api/getNetworkInfo.js +39 -0
- package/lib-es/api/getNetworkInfo.js.map +1 -0
- package/lib-es/api/getPools.d.ts +5 -0
- package/lib-es/api/getPools.d.ts.map +1 -0
- package/lib-es/api/getPools.js +37 -0
- package/lib-es/api/getPools.js.map +1 -0
- package/lib-es/api/getTransactions.d.ts +10 -0
- package/lib-es/api/getTransactions.d.ts.map +1 -0
- package/lib-es/api/getTransactions.js +132 -0
- package/lib-es/api/getTransactions.js.map +1 -0
- package/lib-es/api/submitTransaction.d.ts +7 -0
- package/lib-es/api/submitTransaction.d.ts.map +1 -0
- package/lib-es/api/submitTransaction.js +27 -0
- package/lib-es/api/submitTransaction.js.map +1 -0
- package/lib-es/bridge/index.d.ts +11 -0
- package/lib-es/bridge/index.d.ts.map +1 -0
- package/lib-es/bridge/index.js +61 -0
- package/lib-es/bridge/index.js.map +1 -0
- package/lib-es/bridge.integration.test.d.ts +4 -0
- package/lib-es/bridge.integration.test.d.ts.map +1 -0
- package/lib-es/bridge.integration.test.js +107 -0
- package/lib-es/bridge.integration.test.js.map +1 -0
- package/lib-es/broadcast.d.ts +8 -0
- package/lib-es/broadcast.d.ts.map +1 -0
- package/lib-es/broadcast.js +24 -0
- package/lib-es/broadcast.js.map +1 -0
- package/lib-es/buildOptimisticOperation.d.ts +4 -0
- package/lib-es/buildOptimisticOperation.d.ts.map +1 -0
- package/lib-es/buildOptimisticOperation.js +118 -0
- package/lib-es/buildOptimisticOperation.js.map +1 -0
- package/lib-es/buildSubAccounts.d.ts +26 -0
- package/lib-es/buildSubAccounts.d.ts.map +1 -0
- package/lib-es/buildSubAccounts.js +114 -0
- package/lib-es/buildSubAccounts.js.map +1 -0
- package/lib-es/buildTransaction.d.ts +11 -0
- package/lib-es/buildTransaction.d.ts.map +1 -0
- package/lib-es/buildTransaction.js +335 -0
- package/lib-es/buildTransaction.js.map +1 -0
- package/lib-es/cli-transaction.d.ts +18 -0
- package/lib-es/cli-transaction.d.ts.map +1 -0
- package/lib-es/cli-transaction.js +60 -0
- package/lib-es/cli-transaction.js.map +1 -0
- package/lib-es/constants.d.ts +8 -0
- package/lib-es/constants.d.ts.map +1 -0
- package/lib-es/constants.js +9 -0
- package/lib-es/constants.js.map +1 -0
- package/lib-es/createTransaction.d.ts +9 -0
- package/lib-es/createTransaction.d.ts.map +1 -0
- package/lib-es/createTransaction.js +16 -0
- package/lib-es/createTransaction.js.map +1 -0
- package/lib-es/datasets/rawAccount.1.d.ts +3 -0
- package/lib-es/datasets/rawAccount.1.d.ts.map +1 -0
- package/lib-es/datasets/rawAccount.1.js +17 -0
- package/lib-es/datasets/rawAccount.1.js.map +1 -0
- package/lib-es/datasets/scanAccounts.d.ts +5 -0
- package/lib-es/datasets/scanAccounts.d.ts.map +1 -0
- package/lib-es/datasets/scanAccounts.js +24 -0
- package/lib-es/datasets/scanAccounts.js.map +1 -0
- package/lib-es/deviceTransactionConfig.d.ts +11 -0
- package/lib-es/deviceTransactionConfig.d.ts.map +1 -0
- package/lib-es/deviceTransactionConfig.js +101 -0
- package/lib-es/deviceTransactionConfig.js.map +1 -0
- package/lib-es/errors.d.ts +22 -0
- package/lib-es/errors.d.ts.map +1 -0
- package/lib-es/errors.js +15 -0
- package/lib-es/errors.js.map +1 -0
- package/lib-es/estimateMaxSpendable.d.ts +9 -0
- package/lib-es/estimateMaxSpendable.d.ts.map +1 -0
- package/lib-es/estimateMaxSpendable.js +49 -0
- package/lib-es/estimateMaxSpendable.js.map +1 -0
- package/lib-es/getTransactionStatus.d.ts +4 -0
- package/lib-es/getTransactionStatus.d.ts.map +1 -0
- package/lib-es/getTransactionStatus.js +210 -0
- package/lib-es/getTransactionStatus.js.map +1 -0
- package/lib-es/getTransactionStatus.unit.test.d.ts +2 -0
- package/lib-es/getTransactionStatus.unit.test.d.ts.map +1 -0
- package/lib-es/getTransactionStatus.unit.test.js +49 -0
- package/lib-es/getTransactionStatus.unit.test.js.map +1 -0
- package/lib-es/hw-getAddress.d.ts +6 -0
- package/lib-es/hw-getAddress.d.ts.map +1 -0
- package/lib-es/hw-getAddress.js +35 -0
- package/lib-es/hw-getAddress.js.map +1 -0
- package/lib-es/logic.d.ts +88 -0
- package/lib-es/logic.d.ts.map +1 -0
- package/lib-es/logic.js +236 -0
- package/lib-es/logic.js.map +1 -0
- package/lib-es/logic.unit.test.d.ts +2 -0
- package/lib-es/logic.unit.test.d.ts.map +1 -0
- package/lib-es/logic.unit.test.js +35 -0
- package/lib-es/logic.unit.test.js.map +1 -0
- package/lib-es/networks.d.ts +3 -0
- package/lib-es/networks.d.ts.map +1 -0
- package/lib-es/networks.js +32 -0
- package/lib-es/networks.js.map +1 -0
- package/lib-es/postSyncPatch.d.ts +6 -0
- package/lib-es/postSyncPatch.d.ts.map +1 -0
- package/lib-es/postSyncPatch.js +31 -0
- package/lib-es/postSyncPatch.js.map +1 -0
- package/lib-es/prepareTransaction.d.ts +10 -0
- package/lib-es/prepareTransaction.d.ts.map +1 -0
- package/lib-es/prepareTransaction.js +40 -0
- package/lib-es/prepareTransaction.js.map +1 -0
- package/lib-es/serialization.d.ts +7 -0
- package/lib-es/serialization.d.ts.map +1 -0
- package/lib-es/serialization.js +139 -0
- package/lib-es/serialization.js.map +1 -0
- package/lib-es/signOperation.d.ts +9 -0
- package/lib-es/signOperation.d.ts.map +1 -0
- package/lib-es/signOperation.js +64 -0
- package/lib-es/signOperation.js.map +1 -0
- package/lib-es/signer.d.ts +92 -0
- package/lib-es/signer.d.ts.map +1 -0
- package/lib-es/signer.js +2 -0
- package/lib-es/signer.js.map +1 -0
- package/lib-es/specs.d.ts +7 -0
- package/lib-es/specs.d.ts.map +1 -0
- package/lib-es/specs.js +213 -0
- package/lib-es/specs.js.map +1 -0
- package/lib-es/speculos-deviceActions.d.ts +4 -0
- package/lib-es/speculos-deviceActions.d.ts.map +1 -0
- package/lib-es/speculos-deviceActions.js +125 -0
- package/lib-es/speculos-deviceActions.js.map +1 -0
- package/lib-es/synchronisation.d.ts +6 -0
- package/lib-es/synchronisation.d.ts.map +1 -0
- package/lib-es/synchronisation.js +230 -0
- package/lib-es/synchronisation.js.map +1 -0
- package/lib-es/synchronisation.unit.test.d.ts +2 -0
- package/lib-es/synchronisation.unit.test.d.ts.map +1 -0
- package/lib-es/synchronisation.unit.test.js +124 -0
- package/lib-es/synchronisation.unit.test.js.map +1 -0
- package/lib-es/transaction.d.ts +15 -0
- package/lib-es/transaction.d.ts.map +1 -0
- package/lib-es/transaction.js +37 -0
- package/lib-es/transaction.js.map +1 -0
- package/lib-es/types.d.ts +188 -0
- package/lib-es/types.d.ts.map +1 -0
- package/lib-es/types.js +15 -0
- package/lib-es/types.js.map +1 -0
- package/lib-es/typhonSerializer.d.ts +17 -0
- package/lib-es/typhonSerializer.d.ts.map +1 -0
- package/lib-es/typhonSerializer.js +207 -0
- package/lib-es/typhonSerializer.js.map +1 -0
- package/lib-es/utils.d.ts +2 -0
- package/lib-es/utils.d.ts.map +1 -0
- package/lib-es/utils.js +5 -0
- package/lib-es/utils.js.map +1 -0
- package/package.json +91 -0
- package/src/account.ts +39 -0
- package/src/address.unit.test.ts +32 -0
- package/src/api/api-types.ts +115 -0
- package/src/api/getDelegationInfo.ts +39 -0
- package/src/api/getNetworkInfo.ts +34 -0
- package/src/api/getPools.ts +35 -0
- package/src/api/getTransactions.ts +218 -0
- package/src/api/submitTransaction.ts +24 -0
- package/src/bridge/index.ts +69 -0
- package/src/bridge.integration.test.ts +113 -0
- package/src/broadcast.ts +21 -0
- package/src/buildOptimisticOperation.ts +181 -0
- package/src/buildSubAccounts.ts +170 -0
- package/src/buildTransaction.ts +435 -0
- package/src/cli-transaction.ts +82 -0
- package/src/constants.ts +10 -0
- package/src/createTransaction.ts +18 -0
- package/src/datasets/rawAccount.1.ts +19 -0
- package/src/datasets/scanAccounts.ts +23 -0
- package/src/deviceTransactionConfig.ts +128 -0
- package/src/errors.ts +18 -0
- package/src/estimateMaxSpendable.ts +61 -0
- package/src/getTransactionStatus.ts +251 -0
- package/src/getTransactionStatus.unit.test.ts +45 -0
- package/src/hw-getAddress.ts +37 -0
- package/src/logic.ts +330 -0
- package/src/logic.unit.test.ts +39 -0
- package/src/networks.ts +33 -0
- package/src/postSyncPatch.ts +42 -0
- package/src/prepareTransaction.ts +41 -0
- package/src/serialization.ts +219 -0
- package/src/signOperation.ts +82 -0
- package/src/signer.ts +98 -0
- package/src/specs.ts +253 -0
- package/src/speculos-deviceActions.ts +132 -0
- package/src/synchronisation.ts +347 -0
- package/src/synchronisation.unit.test.ts +137 -0
- package/src/transaction.ts +66 -0
- package/src/types.ts +227 -0
- package/src/typhonSerializer.ts +259 -0
- package/src/utils.ts +4 -0
- package/tsconfig.json +12 -0
|
@@ -0,0 +1,139 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getTransactions = void 0;
|
|
16
|
+
const network_1 = __importDefault(require("@ledgerhq/live-network/network"));
|
|
17
|
+
const chunk_1 = __importDefault(require("lodash/chunk"));
|
|
18
|
+
const range_1 = __importDefault(require("lodash/range"));
|
|
19
|
+
const live_env_1 = require("@ledgerhq/live-env");
|
|
20
|
+
const constants_1 = require("../constants");
|
|
21
|
+
const logic_1 = require("../logic");
|
|
22
|
+
const types_1 = require("../types");
|
|
23
|
+
function fetchTransactions(paymentKeys, pageNo, blockHeight, currency) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const res = yield (0, network_1.default)({
|
|
26
|
+
method: "POST",
|
|
27
|
+
url: (0, logic_1.isTestnet)(currency)
|
|
28
|
+
? `${constants_1.CARDANO_TESTNET_API_ENDPOINT}/v1/transaction`
|
|
29
|
+
: `${constants_1.CARDANO_API_ENDPOINT}/v1/transaction`,
|
|
30
|
+
data: {
|
|
31
|
+
paymentKeys,
|
|
32
|
+
pageNo,
|
|
33
|
+
blockHeight,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
return res.data;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function getAllTransactionsByKeys(paymentKeys, blockHeight, currency) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const transactions = [];
|
|
42
|
+
let latestBlockHeight = 0;
|
|
43
|
+
let isAllTrxFetched = false;
|
|
44
|
+
let pageNo = 1;
|
|
45
|
+
while (!isAllTrxFetched) {
|
|
46
|
+
const res = yield fetchTransactions(paymentKeys, pageNo, blockHeight, currency);
|
|
47
|
+
transactions.push(...res.transactions);
|
|
48
|
+
latestBlockHeight = Math.max(res.blockHeight, latestBlockHeight);
|
|
49
|
+
isAllTrxFetched = res.transactions.length < res.limit;
|
|
50
|
+
pageNo += 1;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
transactions,
|
|
54
|
+
blockHeight: latestBlockHeight,
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function getSyncedTransactionsByChain(accountPubKey, accountIndex, chainType, blockHeight, initialPaymentCredentials, currency) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
const keyChainRange = (0, live_env_1.getEnv)("KEYCHAIN_OBSERVABLE_RANGE") || 20;
|
|
61
|
+
// credentialsMap for efficient use
|
|
62
|
+
const initialPaymentCredentialMap = {};
|
|
63
|
+
let maxUsedKeyIndex = -1;
|
|
64
|
+
initialPaymentCredentials.forEach(cred => {
|
|
65
|
+
initialPaymentCredentialMap[cred.key] = cred;
|
|
66
|
+
if (cred.isUsed)
|
|
67
|
+
maxUsedKeyIndex = cred.path.index;
|
|
68
|
+
});
|
|
69
|
+
const transactions = [];
|
|
70
|
+
let latestBlockHeight = 0;
|
|
71
|
+
// fetch transactions for existing keys
|
|
72
|
+
const trxsRes = yield Promise.all((0, chunk_1.default)(Object.keys(initialPaymentCredentialMap), keyChainRange).map(keys => getAllTransactionsByKeys(keys, blockHeight, currency)));
|
|
73
|
+
trxsRes.forEach(txRes => {
|
|
74
|
+
transactions.push(...txRes.transactions);
|
|
75
|
+
latestBlockHeight = Math.max(latestBlockHeight, txRes.blockHeight);
|
|
76
|
+
});
|
|
77
|
+
// fetch transactions for new avaialble keys
|
|
78
|
+
let newPaymentCredentialsMap = {};
|
|
79
|
+
let lastSyncedKeyIndex = initialPaymentCredentials.length
|
|
80
|
+
? initialPaymentCredentials[initialPaymentCredentials.length - 1].path.index
|
|
81
|
+
: -1;
|
|
82
|
+
let syncToKeyIndex = maxUsedKeyIndex + keyChainRange;
|
|
83
|
+
while (syncToKeyIndex !== lastSyncedKeyIndex) {
|
|
84
|
+
const currentPaymentKeysMap = {};
|
|
85
|
+
(0, range_1.default)(lastSyncedKeyIndex + 1, syncToKeyIndex + 1, 1).forEach(keyIndex => {
|
|
86
|
+
const keyPath = (0, logic_1.getCredentialKey)(accountPubKey, (0, logic_1.getBipPath)({
|
|
87
|
+
account: accountIndex,
|
|
88
|
+
chain: chainType,
|
|
89
|
+
index: keyIndex,
|
|
90
|
+
}));
|
|
91
|
+
currentPaymentKeysMap[keyPath.key] = {
|
|
92
|
+
isUsed: false,
|
|
93
|
+
key: keyPath.key,
|
|
94
|
+
path: keyPath.path,
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
const trxRes = yield getAllTransactionsByKeys(Object.keys(currentPaymentKeysMap), blockHeight, currency);
|
|
98
|
+
transactions.push(...trxRes.transactions);
|
|
99
|
+
lastSyncedKeyIndex = syncToKeyIndex;
|
|
100
|
+
latestBlockHeight = Math.max(latestBlockHeight, trxRes.blockHeight);
|
|
101
|
+
newPaymentCredentialsMap = Object.assign({}, newPaymentCredentialsMap, currentPaymentKeysMap);
|
|
102
|
+
maxUsedKeyIndex = trxRes.transactions.reduce((maxIndexA, { inputs, outputs }) => [...inputs, ...outputs].reduce((maxIndexB, io) => { var _a; return Math.max(((_a = newPaymentCredentialsMap[io.paymentKey]) === null || _a === void 0 ? void 0 : _a.path.index) || -1, maxIndexB); }, maxIndexA), maxUsedKeyIndex);
|
|
103
|
+
syncToKeyIndex = maxUsedKeyIndex + keyChainRange;
|
|
104
|
+
}
|
|
105
|
+
const availablePaymentCredentialsMap = Object.assign(Object.assign({}, initialPaymentCredentialMap), newPaymentCredentialsMap);
|
|
106
|
+
transactions.forEach(trx => {
|
|
107
|
+
[...trx.inputs, ...trx.outputs].forEach(io => {
|
|
108
|
+
if (availablePaymentCredentialsMap[io.paymentKey]) {
|
|
109
|
+
availablePaymentCredentialsMap[io.paymentKey].isUsed = true;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
transactions,
|
|
115
|
+
latestBlockHeight,
|
|
116
|
+
paymentCredentials: Object.values(availablePaymentCredentialsMap).sort((aCred, bCred) => aCred.path.index - bCred.path.index),
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function getTransactions(xpub, accountIndex, initialAccount, blockHeight, currency) {
|
|
121
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
var _a, _b;
|
|
123
|
+
const accountPubKey = (0, logic_1.getExtendedPublicKeyFromHex)(xpub);
|
|
124
|
+
const oldExternalCredentials = ((_a = initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.cardanoResources) === null || _a === void 0 ? void 0 : _a.externalCredentials) || [];
|
|
125
|
+
const oldInternalCredentials = ((_b = initialAccount === null || initialAccount === void 0 ? void 0 : initialAccount.cardanoResources) === null || _b === void 0 ? void 0 : _b.internalCredentials) || [];
|
|
126
|
+
const [{ transactions: externalKeyTransactions, latestBlockHeight: aBlockHeight, paymentCredentials: externalCredentials, }, { transactions: internalKeyTransactions, latestBlockHeight: bBlockHeight, paymentCredentials: internalCredentials, },] = yield Promise.all([
|
|
127
|
+
getSyncedTransactionsByChain(accountPubKey, accountIndex, types_1.PaymentChain.external, blockHeight, oldExternalCredentials, currency),
|
|
128
|
+
getSyncedTransactionsByChain(accountPubKey, accountIndex, types_1.PaymentChain.internal, blockHeight, oldInternalCredentials, currency),
|
|
129
|
+
]);
|
|
130
|
+
return {
|
|
131
|
+
transactions: [...externalKeyTransactions, ...internalKeyTransactions],
|
|
132
|
+
blockHeight: Math.max(aBlockHeight, bBlockHeight),
|
|
133
|
+
externalCredentials,
|
|
134
|
+
internalCredentials,
|
|
135
|
+
};
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
exports.getTransactions = getTransactions;
|
|
139
|
+
//# sourceMappingURL=getTransactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTransactions.js","sourceRoot":"","sources":["../../src/api/getTransactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
|
|
2
|
+
import { APITransaction } from "./api-types";
|
|
3
|
+
export declare function submitTransaction({ transaction, currency, }: {
|
|
4
|
+
transaction: string;
|
|
5
|
+
currency: CryptoCurrency;
|
|
6
|
+
}): Promise<APITransaction>;
|
|
7
|
+
//# sourceMappingURL=submitTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submitTransaction.d.ts","sourceRoot":"","sources":["../../src/api/submitTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAsB,iBAAiB,CAAC,EACtC,WAAW,EACX,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,cAAc,CAAC;CAC1B,GAAG,OAAO,CAAC,cAAc,CAAC,CAW1B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.submitTransaction = void 0;
|
|
16
|
+
const network_1 = __importDefault(require("@ledgerhq/live-network/network"));
|
|
17
|
+
const constants_1 = require("../constants");
|
|
18
|
+
const logic_1 = require("../logic");
|
|
19
|
+
function submitTransaction(_a) {
|
|
20
|
+
return __awaiter(this, arguments, void 0, function* ({ transaction, currency, }) {
|
|
21
|
+
const res = yield (0, network_1.default)({
|
|
22
|
+
method: "POST",
|
|
23
|
+
url: (0, logic_1.isTestnet)(currency)
|
|
24
|
+
? `${constants_1.CARDANO_TESTNET_API_ENDPOINT}/v1/transaction/submit`
|
|
25
|
+
: `${constants_1.CARDANO_API_ENDPOINT}/v1/transaction/submit`,
|
|
26
|
+
data: {
|
|
27
|
+
transaction: transaction,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
return res.data.transaction;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
exports.submitTransaction = submitTransaction;
|
|
34
|
+
//# sourceMappingURL=submitTransaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submitTransaction.js","sourceRoot":"","sources":["../../src/api/submitTransaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6EAAqD;AAErD,4CAAkF;AAClF,oCAAqC;AAGrC,SAAsB,iBAAiB;yDAAC,EACtC,WAAW,EACX,QAAQ,GAIT;QACC,MAAM,GAAG,GAAG,MAAM,IAAA,iBAAO,EAAC;YACxB,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,IAAA,iBAAS,EAAC,QAAQ,CAAC;gBACtB,CAAC,CAAC,GAAG,wCAA4B,wBAAwB;gBACzD,CAAC,CAAC,GAAG,gCAAoB,wBAAwB;YACnD,IAAI,EAAE;gBACJ,WAAW,EAAE,WAAW;aACzB;SACF,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;IAC9B,CAAC;CAAA;AAjBD,8CAiBC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SignerContext } from "@ledgerhq/coin-framework/signer";
|
|
2
|
+
import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live";
|
|
3
|
+
import type { CardanoAccount, Transaction, TransactionStatus } from "../types";
|
|
4
|
+
import { CardanoSigner } from "../signer";
|
|
5
|
+
export declare function buildCurrencyBridge(signerContext: SignerContext<CardanoSigner>): CurrencyBridge;
|
|
6
|
+
export declare function buildAccountBridge(signerContext: SignerContext<CardanoSigner>): AccountBridge<Transaction, CardanoAccount, TransactionStatus>;
|
|
7
|
+
export declare function createBridges(signerContext: SignerContext<CardanoSigner>): {
|
|
8
|
+
currencyBridge: CurrencyBridge;
|
|
9
|
+
accountBridge: AccountBridge<Transaction, CardanoAccount, import("@ledgerhq/types-live").TransactionStatusCommon, import("@ledgerhq/types-live").AccountRaw>;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAS/E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,cAAc,CAY/F;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,GAC1C,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAuB/D;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC;;;EAKxE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.createBridges = exports.buildAccountBridge = exports.buildCurrencyBridge = void 0;
|
|
16
|
+
const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
|
|
17
|
+
const getAddressWrapper_1 = __importDefault(require("@ledgerhq/coin-framework/bridge/getAddressWrapper"));
|
|
18
|
+
const serialization_1 = require("../serialization");
|
|
19
|
+
const estimateMaxSpendable_1 = require("../estimateMaxSpendable");
|
|
20
|
+
const getTransactionStatus_1 = require("../getTransactionStatus");
|
|
21
|
+
const prepareTransaction_1 = require("../prepareTransaction");
|
|
22
|
+
const createTransaction_1 = require("../createTransaction");
|
|
23
|
+
const synchronisation_1 = require("../synchronisation");
|
|
24
|
+
const signOperation_1 = require("../signOperation");
|
|
25
|
+
const postSyncPatch_1 = require("../postSyncPatch");
|
|
26
|
+
const broadcast_1 = require("../broadcast");
|
|
27
|
+
const hw_getAddress_1 = __importDefault(require("../hw-getAddress"));
|
|
28
|
+
function buildCurrencyBridge(signerContext) {
|
|
29
|
+
const getAddress = (0, hw_getAddress_1.default)(signerContext);
|
|
30
|
+
const scanAccounts = (0, jsHelpers_1.makeScanAccounts)({
|
|
31
|
+
getAccountShape: (0, synchronisation_1.makeGetAccountShape)(signerContext),
|
|
32
|
+
getAddressFn: (0, getAddressWrapper_1.default)(getAddress),
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
scanAccounts,
|
|
36
|
+
preload: () => __awaiter(this, void 0, void 0, function* () { return ({}); }),
|
|
37
|
+
hydrate: () => { },
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
exports.buildCurrencyBridge = buildCurrencyBridge;
|
|
41
|
+
function buildAccountBridge(signerContext) {
|
|
42
|
+
const sync = (0, jsHelpers_1.makeSync)({
|
|
43
|
+
getAccountShape: (0, synchronisation_1.makeGetAccountShape)(signerContext),
|
|
44
|
+
postSync: postSyncPatch_1.postSyncPatch,
|
|
45
|
+
});
|
|
46
|
+
const getAddress = (0, hw_getAddress_1.default)(signerContext);
|
|
47
|
+
const receive = (0, jsHelpers_1.makeAccountBridgeReceive)((0, getAddressWrapper_1.default)(getAddress));
|
|
48
|
+
return {
|
|
49
|
+
estimateMaxSpendable: estimateMaxSpendable_1.estimateMaxSpendable,
|
|
50
|
+
createTransaction: createTransaction_1.createTransaction,
|
|
51
|
+
updateTransaction: jsHelpers_1.defaultUpdateTransaction,
|
|
52
|
+
getTransactionStatus: getTransactionStatus_1.getTransactionStatus,
|
|
53
|
+
prepareTransaction: prepareTransaction_1.prepareTransaction,
|
|
54
|
+
sync,
|
|
55
|
+
receive,
|
|
56
|
+
signOperation: (0, signOperation_1.buildSignOperation)(signerContext),
|
|
57
|
+
broadcast: broadcast_1.broadcast,
|
|
58
|
+
assignToAccountRaw: serialization_1.assignToAccountRaw,
|
|
59
|
+
assignFromAccountRaw: serialization_1.assignFromAccountRaw,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
exports.buildAccountBridge = buildAccountBridge;
|
|
63
|
+
function createBridges(signerContext) {
|
|
64
|
+
return {
|
|
65
|
+
currencyBridge: buildCurrencyBridge(signerContext),
|
|
66
|
+
accountBridge: buildAccountBridge(signerContext),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
exports.createBridges = createBridges;
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yEAKmD;AAGnD,0GAAkF;AAElF,oDAA4E;AAC5E,kEAA+D;AAC/D,kEAA+D;AAC/D,8DAA2D;AAC3D,4DAAyD;AACzD,wDAAyD;AACzD,oDAAsD;AACtD,oDAAiD;AAEjD,4CAAyC;AACzC,qEAAwC;AAExC,SAAgB,mBAAmB,CAAC,aAA2C;IAC7E,MAAM,UAAU,GAAG,IAAA,uBAAQ,EAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAA,4BAAgB,EAAC;QACpC,eAAe,EAAE,IAAA,qCAAmB,EAAC,aAAa,CAAC;QACnD,YAAY,EAAE,IAAA,2BAAiB,EAAC,UAAU,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,YAAY;QACZ,OAAO,EAAE,GAAS,EAAE,gDAAC,OAAA,CAAC,EAAE,CAAC,CAAA,GAAA;QACzB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB,CAAC;AACJ,CAAC;AAZD,kDAYC;AAED,SAAgB,kBAAkB,CAChC,aAA2C;IAE3C,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC;QACpB,eAAe,EAAE,IAAA,qCAAmB,EAAC,aAAa,CAAC;QACnD,QAAQ,EAAE,6BAAa;KACxB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAA,uBAAQ,EAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,IAAA,oCAAwB,EAAC,IAAA,2BAAiB,EAAC,UAAU,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,oBAAoB,EAApB,2CAAoB;QACpB,iBAAiB,EAAjB,qCAAiB;QACjB,iBAAiB,EAAE,oCAAwB;QAC3C,oBAAoB,EAApB,2CAAoB;QACpB,kBAAkB,EAAlB,uCAAkB;QAClB,IAAI;QACJ,OAAO;QACP,aAAa,EAAE,IAAA,kCAAkB,EAAC,aAAa,CAAC;QAChD,SAAS,EAAT,qBAAS;QACT,kBAAkB,EAAlB,kCAAkB;QAClB,oBAAoB,EAApB,oCAAoB;KACrB,CAAC;AACJ,CAAC;AAzBD,gDAyBC;AAED,SAAgB,aAAa,CAAC,aAA2C;IACvE,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC;AALD,sCAKC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.integration.test.d.ts","sourceRoot":"","sources":["../src/bridge.integration.test.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,WAAW,CAkG5C,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.dataset = void 0;
|
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
|
+
const rawAccount_1_1 = require("./datasets/rawAccount.1");
|
|
9
|
+
const scanAccounts_1 = require("./datasets/scanAccounts");
|
|
10
|
+
const errors_1 = require("./errors");
|
|
11
|
+
const transaction_1 = require("./transaction");
|
|
12
|
+
exports.dataset = {
|
|
13
|
+
implementations: ["js"],
|
|
14
|
+
currencies: {
|
|
15
|
+
cardano_testnet: {
|
|
16
|
+
scanAccounts: scanAccounts_1.cardanoScanAccounts,
|
|
17
|
+
accounts: [
|
|
18
|
+
{
|
|
19
|
+
raw: rawAccount_1_1.cardanoRawAccount1,
|
|
20
|
+
transactions: [
|
|
21
|
+
{
|
|
22
|
+
name: "amount less then minimum",
|
|
23
|
+
transaction: (0, transaction_1.fromTransactionRaw)({
|
|
24
|
+
family: "cardano",
|
|
25
|
+
recipient: "addr_test1qpl90kc2jl5kr9tev0s7vays9yhwcdnq8nlylyk4dqsdq3g466elxnxwrzwq72pvp5akenj30t5s9et7frfvrxxx8xcsxrzs87",
|
|
26
|
+
amount: "0.1",
|
|
27
|
+
mode: "send",
|
|
28
|
+
poolId: undefined,
|
|
29
|
+
}),
|
|
30
|
+
expectedStatus: {
|
|
31
|
+
amount: new bignumber_js_1.default("0.1"),
|
|
32
|
+
errors: {
|
|
33
|
+
amount: new errors_1.CardanoMinAmountError(),
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
/* // FIXME broken test
|
|
38
|
+
{
|
|
39
|
+
name: "token amount more than balance",
|
|
40
|
+
transaction: fromTransactionRaw({
|
|
41
|
+
family: "cardano",
|
|
42
|
+
recipient:
|
|
43
|
+
"addr_test1qpl90kc2jl5kr9tev0s7vays9yhwcdnq8nlylyk4dqsdq3g466elxnxwrzwq72pvp5akenj30t5s9et7frfvrxxx8xcsxrzs87",
|
|
44
|
+
amount: "101",
|
|
45
|
+
subAccountId:
|
|
46
|
+
"js:2:cardano_testnet:806499588e0c4a58f4119f7e6e096bf42c3f774a528d2acec9e82ceebf87d1ceb3d4f3622dd2c77c65cc89c123f79337db22cf8a69f122e36dab1bf5083bf82d:cardano+cardano_testnet%2Fnative%2F47be64fcc8a7fe5321b976282ce4e43e4d29015f6613cfabcea28eab54657374",
|
|
47
|
+
mode: "send",
|
|
48
|
+
poolId: undefined,
|
|
49
|
+
}),
|
|
50
|
+
expectedStatus: {
|
|
51
|
+
amount: new BigNumber("101"),
|
|
52
|
+
errors: {
|
|
53
|
+
amount: new NotEnoughBalance(),
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "send max token",
|
|
59
|
+
transaction: fromTransactionRaw({
|
|
60
|
+
family: "cardano",
|
|
61
|
+
recipient:
|
|
62
|
+
"addr_test1qpl90kc2jl5kr9tev0s7vays9yhwcdnq8nlylyk4dqsdq3g466elxnxwrzwq72pvp5akenj30t5s9et7frfvrxxx8xcsxrzs87",
|
|
63
|
+
amount: "0",
|
|
64
|
+
subAccountId:
|
|
65
|
+
"js:2:cardano_testnet:806499588e0c4a58f4119f7e6e096bf42c3f774a528d2acec9e82ceebf87d1ceb3d4f3622dd2c77c65cc89c123f79337db22cf8a69f122e36dab1bf5083bf82d:cardano+cardano_testnet%2Fnative%2F47be64fcc8a7fe5321b976282ce4e43e4d29015f6613cfabcea28eab54657374",
|
|
66
|
+
mode: "send",
|
|
67
|
+
useAllAmount: true,
|
|
68
|
+
poolId: undefined,
|
|
69
|
+
}),
|
|
70
|
+
expectedStatus: {
|
|
71
|
+
amount: new BigNumber("100"),
|
|
72
|
+
totalSpent: new BigNumber("100"),
|
|
73
|
+
errors: {},
|
|
74
|
+
warnings: {},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
*/
|
|
78
|
+
{
|
|
79
|
+
name: "delegate to invalid poolId",
|
|
80
|
+
transaction: (0, transaction_1.fromTransactionRaw)({
|
|
81
|
+
family: "cardano",
|
|
82
|
+
recipient: "",
|
|
83
|
+
amount: "0",
|
|
84
|
+
mode: "delegate",
|
|
85
|
+
poolId: "efae72c07a26e4542ba55ef59d35ad45ffaaac312865e3a758ede",
|
|
86
|
+
}),
|
|
87
|
+
expectedStatus: {
|
|
88
|
+
errors: {
|
|
89
|
+
poolId: new errors_1.CardanoInvalidPoolId(),
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "delegate valid poolId",
|
|
95
|
+
transaction: (0, transaction_1.fromTransactionRaw)({
|
|
96
|
+
family: "cardano",
|
|
97
|
+
recipient: "",
|
|
98
|
+
amount: "0",
|
|
99
|
+
mode: "delegate",
|
|
100
|
+
poolId: "efae72c07a26e4542ba55ef59d35ad45ffaaac312865e3a758ede997",
|
|
101
|
+
}),
|
|
102
|
+
expectedStatus: {},
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
describe("Cardano bridge", () => {
|
|
111
|
+
test.todo("This is an empty test to make jest command pass. Remove it once there is a real test.");
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=bridge.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.integration.test.js","sourceRoot":"","sources":["../src/bridge.integration.test.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AACrC,0DAA6D;AAC7D,0DAA8D;AAC9D,qCAAuE;AACvE,+CAAmD;AAItC,QAAA,OAAO,GAA6B;IAC/C,eAAe,EAAE,CAAC,IAAI,CAAC;IACvB,UAAU,EAAE;QACV,eAAe,EAAE;YACf,YAAY,EAAE,kCAAmB;YACjC,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,iCAAkB;oBACvB,YAAY,EAAE;wBACZ;4BACE,IAAI,EAAE,0BAA0B;4BAChC,WAAW,EAAE,IAAA,gCAAkB,EAAC;gCAC9B,MAAM,EAAE,SAAS;gCACjB,SAAS,EACP,8GAA8G;gCAChH,MAAM,EAAE,KAAK;gCACb,IAAI,EAAE,MAAM;gCACZ,MAAM,EAAE,SAAS;6BAClB,CAAC;4BACF,cAAc,EAAE;gCACd,MAAM,EAAE,IAAI,sBAAS,CAAC,KAAK,CAAC;gCAC5B,MAAM,EAAE;oCACN,MAAM,EAAE,IAAI,8BAAqB,EAAE;iCACpC;6BACF;yBACF;wBACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAwCE;wBACF;4BACE,IAAI,EAAE,4BAA4B;4BAClC,WAAW,EAAE,IAAA,gCAAkB,EAAC;gCAC9B,MAAM,EAAE,SAAS;gCACjB,SAAS,EAAE,EAAE;gCACb,MAAM,EAAE,GAAG;gCACX,IAAI,EAAE,UAAU;gCAChB,MAAM,EAAE,uDAAuD;6BAChE,CAAC;4BACF,cAAc,EAAE;gCACd,MAAM,EAAE;oCACN,MAAM,EAAE,IAAI,6BAAoB,EAAE;iCACnC;6BACF;yBACF;wBACD;4BACE,IAAI,EAAE,uBAAuB;4BAC7B,WAAW,EAAE,IAAA,gCAAkB,EAAC;gCAC9B,MAAM,EAAE,SAAS;gCACjB,SAAS,EAAE,EAAE;gCACb,MAAM,EAAE,GAAG;gCACX,IAAI,EAAE,UAAU;gCAChB,MAAM,EAAE,0DAA0D;6BACnE,CAAC;4BACF,cAAc,EAAE,EAAE;yBACnB;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,IAAI,CACP,uFAAuF,CACxF,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AccountBridge } from "@ledgerhq/types-live";
|
|
2
|
+
import { Transaction } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Broadcast the signed transaction
|
|
5
|
+
* @param {signature: string, operation: string} signedOperation
|
|
6
|
+
*/
|
|
7
|
+
export declare const broadcast: AccountBridge<Transaction>["broadcast"];
|
|
8
|
+
//# sourceMappingURL=broadcast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../src/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,WAAW,CAW7D,CAAC"}
|
package/lib/broadcast.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.broadcast = void 0;
|
|
13
|
+
const operation_1 = require("@ledgerhq/coin-framework/operation");
|
|
14
|
+
const submitTransaction_1 = require("./api/submitTransaction");
|
|
15
|
+
/**
|
|
16
|
+
* Broadcast the signed transaction
|
|
17
|
+
* @param {signature: string, operation: string} signedOperation
|
|
18
|
+
*/
|
|
19
|
+
const broadcast = (_a) => __awaiter(void 0, [_a], void 0, function* ({ signedOperation, account, }) {
|
|
20
|
+
const signedTx = signedOperation.signature;
|
|
21
|
+
const pendingTransaction = yield (0, submitTransaction_1.submitTransaction)({
|
|
22
|
+
transaction: signedTx,
|
|
23
|
+
currency: account.currency,
|
|
24
|
+
});
|
|
25
|
+
return (0, operation_1.patchOperationWithHash)(signedOperation.operation, pendingTransaction.hash);
|
|
26
|
+
});
|
|
27
|
+
exports.broadcast = broadcast;
|
|
28
|
+
//# sourceMappingURL=broadcast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../src/broadcast.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,kEAA4E;AAC5E,+DAA4D;AAG5D;;;GAGG;AACI,MAAM,SAAS,GAA4C,KAG/D,EAAE,4CAHoE,EACvE,eAAe,EACf,OAAO,GACR;IACC,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC;IAC3C,MAAM,kBAAkB,GAAG,MAAM,IAAA,qCAAiB,EAAC;QACjD,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IAEH,OAAO,IAAA,kCAAsB,EAAC,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACpF,CAAC,CAAA,CAAC;AAXW,QAAA,SAAS,aAWpB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Transaction as TyphonTransaction } from "@stricahq/typhonjs";
|
|
2
|
+
import { CardanoAccount, CardanoOperation, Transaction } from "./types";
|
|
3
|
+
export declare const buildOptimisticOperation: (account: CardanoAccount, unsignedTransaction: TyphonTransaction, transaction: Transaction) => CardanoOperation;
|
|
4
|
+
//# sourceMappingURL=buildOptimisticOperation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildOptimisticOperation.d.ts","sourceRoot":"","sources":["../src/buildOptimisticOperation.ts"],"names":[],"mappings":"AAMA,OAAO,EAAwB,WAAW,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5F,OAAO,EACL,cAAc,EACd,gBAAgB,EAGhB,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,wBAAwB,YAC1B,cAAc,uBACF,iBAAiB,eACzB,WAAW,KACvB,gBA+JF,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildOptimisticOperation = void 0;
|
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
|
+
const types_1 = require("@stricahq/typhonjs/dist/types");
|
|
9
|
+
const operation_1 = require("@ledgerhq/coin-framework/operation");
|
|
10
|
+
const currencies_1 = require("@ledgerhq/coin-framework/currencies");
|
|
11
|
+
const ShelleyTypeAddress_1 = __importDefault(require("@stricahq/typhonjs/dist/address/ShelleyTypeAddress"));
|
|
12
|
+
const typhonjs_1 = require("@stricahq/typhonjs");
|
|
13
|
+
const logic_1 = require("./logic");
|
|
14
|
+
const constants_1 = require("./constants");
|
|
15
|
+
const buildOptimisticOperation = (account, unsignedTransaction, transaction) => {
|
|
16
|
+
var _a;
|
|
17
|
+
const cardanoResources = account.cardanoResources;
|
|
18
|
+
const accountCreds = new Set([...cardanoResources.externalCredentials, ...cardanoResources.internalCredentials].map(cred => cred.key));
|
|
19
|
+
const stakeCredential = (0, logic_1.getAccountStakeCredential)(account.xpub, account.index);
|
|
20
|
+
const protocolParams = account.cardanoResources.protocolParams;
|
|
21
|
+
const accountInput = unsignedTransaction
|
|
22
|
+
.getInputs()
|
|
23
|
+
.reduce((total, i) => accountCreds.has(i.address.paymentCredential.hash) ? total.plus(i.amount) : total.plus(0), new bignumber_js_1.default(0));
|
|
24
|
+
const accountOutput = unsignedTransaction
|
|
25
|
+
.getOutputs()
|
|
26
|
+
.reduce((total, o) => o.address instanceof ShelleyTypeAddress_1.default &&
|
|
27
|
+
accountCreds.has(o.address.paymentCredential.hash)
|
|
28
|
+
? total.plus(o.amount)
|
|
29
|
+
: total.plus(0), new bignumber_js_1.default(0));
|
|
30
|
+
const txCertificates = unsignedTransaction.getCertificates();
|
|
31
|
+
const stakeRegistrationCertificates = txCertificates.filter(c => c.certType === typhonjs_1.types.CertificateType.STAKE_REGISTRATION);
|
|
32
|
+
const stakeDeRegistrationCertificates = txCertificates.filter(c => c.certType === typhonjs_1.types.CertificateType.STAKE_DE_REGISTRATION);
|
|
33
|
+
const txWithdrawals = unsignedTransaction.getWithdrawals();
|
|
34
|
+
const transactionHash = unsignedTransaction.getTransactionHash().toString("hex");
|
|
35
|
+
const auxiliaryData = unsignedTransaction.getAuxiliaryData();
|
|
36
|
+
const extra = {};
|
|
37
|
+
if (auxiliaryData) {
|
|
38
|
+
const memoMetadata = auxiliaryData.metadata.find(m => m.label === constants_1.MEMO_LABEL);
|
|
39
|
+
if (memoMetadata && memoMetadata.data instanceof Map) {
|
|
40
|
+
const msg = memoMetadata.data.get("msg");
|
|
41
|
+
if (Array.isArray(msg) && msg.length) {
|
|
42
|
+
extra.memo = msg.join(", ");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
let operationValue = accountOutput.minus(accountInput);
|
|
47
|
+
if (stakeRegistrationCertificates.length) {
|
|
48
|
+
const walletRegistration = stakeRegistrationCertificates.find(c => c.stakeCredential.type === types_1.HashType.ADDRESS &&
|
|
49
|
+
c.stakeCredential.hash === stakeCredential.key);
|
|
50
|
+
if (walletRegistration) {
|
|
51
|
+
extra.deposit = (0, currencies_1.formatCurrencyUnit)(account.currency.units[0], new bignumber_js_1.default(protocolParams.stakeKeyDeposit), {
|
|
52
|
+
showCode: true,
|
|
53
|
+
disableRounding: true,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (stakeDeRegistrationCertificates.length) {
|
|
58
|
+
const walletDeRegistration = stakeDeRegistrationCertificates.find(c => c.stakeCredential.type === types_1.HashType.ADDRESS &&
|
|
59
|
+
c.stakeCredential.hash === stakeCredential.key);
|
|
60
|
+
if (walletDeRegistration) {
|
|
61
|
+
operationValue = operationValue.minus(protocolParams.stakeKeyDeposit);
|
|
62
|
+
extra.refund = (0, currencies_1.formatCurrencyUnit)(account.currency.units[0], new bignumber_js_1.default(protocolParams.stakeKeyDeposit), {
|
|
63
|
+
showCode: true,
|
|
64
|
+
disableRounding: true,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (txWithdrawals && txWithdrawals.length) {
|
|
69
|
+
const walletWithdraw = txWithdrawals.find(w => w.rewardAccount.stakeCredential.type === types_1.HashType.ADDRESS &&
|
|
70
|
+
w.rewardAccount.stakeCredential.hash === stakeCredential.key);
|
|
71
|
+
if (walletWithdraw) {
|
|
72
|
+
operationValue = operationValue.minus(walletWithdraw.amount);
|
|
73
|
+
extra.rewards = (0, currencies_1.formatCurrencyUnit)(account.currency.units[0], new bignumber_js_1.default(walletWithdraw.amount), {
|
|
74
|
+
showCode: true,
|
|
75
|
+
disableRounding: true,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const opType = txCertificates.find(c => c.certType === typhonjs_1.types.CertificateType.STAKE_DELEGATION)
|
|
80
|
+
? "DELEGATE"
|
|
81
|
+
: txCertificates.find(c => c.certType === typhonjs_1.types.CertificateType.STAKE_DE_REGISTRATION)
|
|
82
|
+
? "UNDELEGATE"
|
|
83
|
+
: (0, logic_1.getOperationType)({
|
|
84
|
+
valueChange: operationValue,
|
|
85
|
+
fees: unsignedTransaction.getFee(),
|
|
86
|
+
});
|
|
87
|
+
const op = {
|
|
88
|
+
id: (0, operation_1.encodeOperationId)(account.id, transactionHash, opType),
|
|
89
|
+
hash: transactionHash,
|
|
90
|
+
type: opType,
|
|
91
|
+
value: operationValue.absoluteValue(),
|
|
92
|
+
fee: unsignedTransaction.getFee(),
|
|
93
|
+
blockHash: undefined,
|
|
94
|
+
blockHeight: null,
|
|
95
|
+
senders: unsignedTransaction.getInputs().map(i => i.address.getBech32()),
|
|
96
|
+
recipients: unsignedTransaction.getOutputs().map(o => o.address.getBech32()),
|
|
97
|
+
accountId: account.id,
|
|
98
|
+
date: new Date(),
|
|
99
|
+
extra,
|
|
100
|
+
};
|
|
101
|
+
const tokenAccount = transaction.subAccountId
|
|
102
|
+
? (_a = account.subAccounts) === null || _a === void 0 ? void 0 : _a.find(ta => ta.id === transaction.subAccountId)
|
|
103
|
+
: null;
|
|
104
|
+
if (tokenAccount && opType === "OUT") {
|
|
105
|
+
op.subOperations = [
|
|
106
|
+
{
|
|
107
|
+
id: (0, operation_1.encodeOperationId)(tokenAccount.id, transactionHash, opType),
|
|
108
|
+
hash: transactionHash,
|
|
109
|
+
type: opType,
|
|
110
|
+
value: transaction.useAllAmount ? tokenAccount.balance : transaction.amount,
|
|
111
|
+
fee: transaction.fees,
|
|
112
|
+
blockHash: undefined,
|
|
113
|
+
blockHeight: null,
|
|
114
|
+
senders: unsignedTransaction.getInputs().map(i => i.address.getBech32()),
|
|
115
|
+
recipients: unsignedTransaction.getOutputs().map(o => o.address.getBech32()),
|
|
116
|
+
accountId: tokenAccount.id,
|
|
117
|
+
date: new Date(),
|
|
118
|
+
extra: {},
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
}
|
|
122
|
+
return op;
|
|
123
|
+
};
|
|
124
|
+
exports.buildOptimisticOperation = buildOptimisticOperation;
|
|
125
|
+
//# sourceMappingURL=buildOptimisticOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildOptimisticOperation.js","sourceRoot":"","sources":["../src/buildOptimisticOperation.ts"],"names":[],"mappings":"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"}
|