@ledgerhq/coin-cardano 0.13.0-nightly.8 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +22 -81
  3. package/lib/address.unit.test.d.ts +2 -0
  4. package/lib/address.unit.test.d.ts.map +1 -0
  5. package/lib/address.unit.test.js +21 -0
  6. package/lib/address.unit.test.js.map +1 -0
  7. package/lib/bridge/index.d.ts.map +1 -1
  8. package/lib/bridge/index.js +0 -1
  9. package/lib/bridge/index.js.map +1 -1
  10. package/lib/bridge.integration.test.d.ts +4 -0
  11. package/lib/bridge.integration.test.d.ts.map +1 -0
  12. package/lib/bridge.integration.test.js +120 -0
  13. package/lib/bridge.integration.test.js.map +1 -0
  14. package/lib/buildTransaction.test.d.ts +2 -0
  15. package/lib/buildTransaction.test.d.ts.map +1 -0
  16. package/lib/buildTransaction.test.js +172 -0
  17. package/lib/buildTransaction.test.js.map +1 -0
  18. package/lib/getTransactionStatus/getTransactionStatus.test.d.ts +2 -0
  19. package/lib/getTransactionStatus/getTransactionStatus.test.d.ts.map +1 -0
  20. package/lib/getTransactionStatus/getTransactionStatus.test.js +149 -0
  21. package/lib/getTransactionStatus/getTransactionStatus.test.js.map +1 -0
  22. package/lib/getTransactionStatus/handler.test.d.ts +2 -0
  23. package/lib/getTransactionStatus/handler.test.d.ts.map +1 -0
  24. package/lib/getTransactionStatus/handler.test.js +51 -0
  25. package/lib/getTransactionStatus/handler.test.js.map +1 -0
  26. package/lib/logic.unit.test.d.ts +2 -0
  27. package/lib/logic.unit.test.d.ts.map +1 -0
  28. package/lib/logic.unit.test.js +55 -0
  29. package/lib/logic.unit.test.js.map +1 -0
  30. package/lib/synchronisation.unit.test.d.ts +2 -0
  31. package/lib/synchronisation.unit.test.d.ts.map +1 -0
  32. package/lib/synchronisation.unit.test.js +150 -0
  33. package/lib/synchronisation.unit.test.js.map +1 -0
  34. package/lib-es/address.unit.test.d.ts +2 -0
  35. package/lib-es/address.unit.test.d.ts.map +1 -0
  36. package/lib-es/address.unit.test.js +19 -0
  37. package/lib-es/address.unit.test.js.map +1 -0
  38. package/lib-es/bridge/index.d.ts.map +1 -1
  39. package/lib-es/bridge/index.js +0 -1
  40. package/lib-es/bridge/index.js.map +1 -1
  41. package/lib-es/bridge.integration.test.d.ts +4 -0
  42. package/lib-es/bridge.integration.test.d.ts.map +1 -0
  43. package/lib-es/bridge.integration.test.js +114 -0
  44. package/lib-es/bridge.integration.test.js.map +1 -0
  45. package/lib-es/buildTransaction.test.d.ts +2 -0
  46. package/lib-es/buildTransaction.test.d.ts.map +1 -0
  47. package/lib-es/buildTransaction.test.js +167 -0
  48. package/lib-es/buildTransaction.test.js.map +1 -0
  49. package/lib-es/getTransactionStatus/getTransactionStatus.test.d.ts +2 -0
  50. package/lib-es/getTransactionStatus/getTransactionStatus.test.d.ts.map +1 -0
  51. package/lib-es/getTransactionStatus/getTransactionStatus.test.js +121 -0
  52. package/lib-es/getTransactionStatus/getTransactionStatus.test.js.map +1 -0
  53. package/lib-es/getTransactionStatus/handler.test.d.ts +2 -0
  54. package/lib-es/getTransactionStatus/handler.test.d.ts.map +1 -0
  55. package/lib-es/getTransactionStatus/handler.test.js +26 -0
  56. package/lib-es/getTransactionStatus/handler.test.js.map +1 -0
  57. package/lib-es/logic.unit.test.d.ts +2 -0
  58. package/lib-es/logic.unit.test.d.ts.map +1 -0
  59. package/lib-es/logic.unit.test.js +50 -0
  60. package/lib-es/logic.unit.test.js.map +1 -0
  61. package/lib-es/synchronisation.unit.test.d.ts +2 -0
  62. package/lib-es/synchronisation.unit.test.d.ts.map +1 -0
  63. package/lib-es/synchronisation.unit.test.js +145 -0
  64. package/lib-es/synchronisation.unit.test.js.map +1 -0
  65. package/package.json +9 -9
  66. package/src/bridge/index.ts +0 -1
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ /* eslint @typescript-eslint/consistent-type-assertions: 0 */
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
31
+ const getTransactionStatus_1 = require("./getTransactionStatus");
32
+ const sanction = __importStar(require("@ledgerhq/coin-framework/sanction/index"));
33
+ const errors_1 = require("@ledgerhq/coin-framework/sanction/errors");
34
+ const mode = __importStar(require("./handler"));
35
+ const config_1 = __importDefault(require("../config"));
36
+ describe("getTransactionStatus", () => {
37
+ it("should return not enough funds error when there are no utxos", async () => {
38
+ const initialAccount = {
39
+ pendingOperations: [],
40
+ cardanoResources: {
41
+ utxos: [],
42
+ },
43
+ };
44
+ const sendTx = {
45
+ amount: new bignumber_js_1.default(1000000),
46
+ recipient: "addr1qxqm3nxwzf70ke9jqa2zrtrevjznpv6yykptxnv34perjc8a7zgxmpv5pgk4hhhe0m9kfnlsf5pt7d2ahkxaul2zygrq3nura9",
47
+ mode: "send",
48
+ family: "cardano",
49
+ poolId: undefined,
50
+ };
51
+ const sendTxRes = await (0, getTransactionStatus_1.getTransactionStatus)(initialAccount, sendTx);
52
+ expect(sendTxRes.errors.amount.name).toBe("CardanoNotEnoughFunds");
53
+ const delegateTx = {
54
+ amount: new bignumber_js_1.default(0),
55
+ recipient: "",
56
+ mode: "delegate",
57
+ family: "cardano",
58
+ poolId: "d0f48f07e4e5eb8040a988085f7ea3bd32d71a2e2998d53e9bbc959a",
59
+ };
60
+ const delegateTxRes = await (0, getTransactionStatus_1.getTransactionStatus)(initialAccount, delegateTx);
61
+ expect(delegateTxRes.errors.amount.name).toBe("CardanoNotEnoughFunds");
62
+ const undelegateTx = {
63
+ amount: new bignumber_js_1.default(0),
64
+ recipient: "",
65
+ mode: "undelegate",
66
+ family: "cardano",
67
+ poolId: undefined,
68
+ };
69
+ const undelegateTxRes = await (0, getTransactionStatus_1.getTransactionStatus)(initialAccount, undelegateTx);
70
+ expect(undelegateTxRes.errors.amount.name).toBe("CardanoNotEnoughFunds");
71
+ });
72
+ it("should return as sender error only sanctioned utxo addresses", async () => {
73
+ const sanctionedAddresses = [
74
+ "addr1eKHLg16K8UTAak8srh6LiTRufkT2uziFKekkfZBxcRNMED",
75
+ "addr1UvY42XTJHMPHDEDch9UWagjhipLjke37Uqm7qzfcSkdPHT",
76
+ ];
77
+ jest.spyOn(sanction, "isAddressSanctioned").mockImplementation((_, address) => {
78
+ return Promise.resolve(sanctionedAddresses.includes(address));
79
+ });
80
+ const utxos = [
81
+ {
82
+ address: "addr1eKHLg16K8UTAak8srh6LiTRufkT2uziFKekkfZBxcRNMED",
83
+ },
84
+ {
85
+ address: "addr1UvY42XTJHMPHDEDch9UWagjhipLjke37Uqm7qzfcSkdPHT",
86
+ },
87
+ {
88
+ address: "addr1QDz6DDTAk5CNig91MNxgTKXUpYoAbz6WnyZ7AztJUXsDDK",
89
+ },
90
+ {
91
+ address: "addr1Fwc4rtTcbrhmcq3iqDJZULdyxU8nJmam3Jx6oknhY5Jqm2",
92
+ },
93
+ ];
94
+ const account = {
95
+ pendingOperations: [],
96
+ cardanoResources: {
97
+ utxos: utxos,
98
+ },
99
+ };
100
+ const transaction = {};
101
+ const status = await (0, getTransactionStatus_1.getTransactionStatus)(account, transaction);
102
+ expect(status.errors).toEqual({
103
+ sender: new errors_1.AddressesSanctionedError("AddressesSanctionedError", {
104
+ addresses: sanctionedAddresses,
105
+ }),
106
+ });
107
+ });
108
+ it("should return as no sender error when no utxo address is sanctioned", async () => {
109
+ const maxFeesWarning = (0, bignumber_js_1.default)(1000000);
110
+ jest.spyOn(config_1.default, "getCoinConfig").mockReturnValue({
111
+ maxFeesWarning: maxFeesWarning,
112
+ maxFeesError: maxFeesWarning.multipliedBy(2),
113
+ });
114
+ jest.spyOn(mode, "getTransactionStatusByTransactionMode").mockResolvedValue({
115
+ errors: {},
116
+ warnings: {},
117
+ amount: (0, bignumber_js_1.default)(0),
118
+ totalSpent: (0, bignumber_js_1.default)(0),
119
+ estimatedFees: maxFeesWarning,
120
+ });
121
+ jest.spyOn(sanction, "isAddressSanctioned").mockResolvedValue(false);
122
+ const utxos = [
123
+ {
124
+ address: "addr1eKHLg16K8UTAak8srh6LiTRufkT2uziFKekkfZBxcRNMED",
125
+ },
126
+ {
127
+ address: "addr1UvY42XTJHMPHDEDch9UWagjhipLjke37Uqm7qzfcSkdPHT",
128
+ },
129
+ {
130
+ address: "addr1QDz6DDTAk5CNig91MNxgTKXUpYoAbz6WnyZ7AztJUXsDDK",
131
+ },
132
+ {
133
+ address: "addr1Fwc4rtTcbrhmcq3iqDJZULdyxU8nJmam3Jx6oknhY5Jqm2",
134
+ },
135
+ ];
136
+ const account = {
137
+ pendingOperations: [],
138
+ cardanoResources: {
139
+ utxos: utxos,
140
+ },
141
+ };
142
+ const transaction = {
143
+ mode: "send",
144
+ };
145
+ const status = await (0, getTransactionStatus_1.getTransactionStatus)(account, transaction);
146
+ expect(status.errors).toEqual({});
147
+ });
148
+ });
149
+ //# sourceMappingURL=getTransactionStatus.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.test.js","sourceRoot":"","sources":["../../src/getTransactionStatus/getTransactionStatus.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=handler.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.test.d.ts","sourceRoot":"","sources":["../../src/getTransactionStatus/handler.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /* eslint @typescript-eslint/consistent-type-assertions: 0 */
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const delegate = __importStar(require("./delegate"));
28
+ const send = __importStar(require("./send"));
29
+ const handler_1 = require("./handler");
30
+ const undelegate = __importStar(require("./undelegate"));
31
+ jest.mock("./delegate");
32
+ jest.mock("./send");
33
+ jest.mock("./undelegate");
34
+ describe("getTransactionStatusByMode on Cardano", () => {
35
+ const sendMock = send.getSendTransactionStatus;
36
+ const delegateMock = delegate.getDelegateTransactionStatus;
37
+ const undelegateMock = undelegate.getUndelegateTransactionStatus;
38
+ describe("should redirect to the correct mode handler", () => {
39
+ test.each([
40
+ ["send", sendMock],
41
+ ["delegate", delegateMock],
42
+ ["undelegate", undelegateMock],
43
+ ])("for %s", async (mode, mock) => {
44
+ const account = {};
45
+ const transaction = { mode: mode };
46
+ await (0, handler_1.getTransactionStatusByTransactionMode)(account, transaction);
47
+ expect(mock).toHaveBeenCalledWith(account, transaction);
48
+ });
49
+ });
50
+ });
51
+ //# sourceMappingURL=handler.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.test.js","sourceRoot":"","sources":["../../src/getTransactionStatus/handler.test.ts"],"names":[],"mappings":";AAAA,6DAA6D;;;;;;;;;;;;;;;;;;;;;;;;;AAE7D,qDAAuC;AACvC,6CAA+B;AAC/B,uCAAkE;AAClE,yDAA2C;AAG3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE1B,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAqC,CAAC;IAC5D,MAAM,YAAY,GAAG,QAAQ,CAAC,4BAAyC,CAAC;IACxE,MAAM,cAAc,GAAG,UAAU,CAAC,8BAA2C,CAAC;IAE9E,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;QAC3D,IAAI,CAAC,IAAI,CAAC;YACR,CAAC,MAAM,EAAE,QAAQ,CAAC;YAClB,CAAC,UAAU,EAAE,YAAY,CAAC;YAC1B,CAAC,YAAY,EAAE,cAAc,CAAC;SAC/B,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,EAA+B,CAAC;YAChD,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,IAAI,EAA4B,CAAC;YAE7D,MAAM,IAAA,+CAAqC,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAElE,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logic.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.unit.test.d.ts","sourceRoot":"","sources":["../src/logic.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
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
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
7
+ const logic_1 = require("./logic");
8
+ describe("canStake", () => {
9
+ it("should return false when acc has no funds", () => {
10
+ const accWithNoFunds = {
11
+ balance: new bignumber_js_1.default(0),
12
+ };
13
+ expect((0, logic_1.canStake)(accWithNoFunds)).toEqual(false);
14
+ });
15
+ it("should return true when acc has funds", () => {
16
+ const accWithFunds = {
17
+ balance: new bignumber_js_1.default(1),
18
+ };
19
+ expect((0, logic_1.canStake)(accWithFunds)).toEqual(true);
20
+ });
21
+ });
22
+ describe("isAlreadyStaking", () => {
23
+ it("should return false when acc isn't delegating", () => {
24
+ const noResourcesAcc = {};
25
+ expect((0, logic_1.isAlreadyStaking)(noResourcesAcc)).toEqual(false);
26
+ const noDelegationAcc = {
27
+ cardanoResources: {},
28
+ };
29
+ expect((0, logic_1.isAlreadyStaking)(noDelegationAcc)).toEqual(false);
30
+ const noPoolIdAcc = { cardanoResources: { delegation: {} } };
31
+ expect((0, logic_1.isAlreadyStaking)(noPoolIdAcc)).toEqual(false);
32
+ });
33
+ it("should return true when acc is delegating", () => {
34
+ const noResourcesAcc = {
35
+ cardanoResources: { delegation: { poolId: "itspoolid" } },
36
+ };
37
+ expect((0, logic_1.isAlreadyStaking)(noResourcesAcc)).toEqual(true);
38
+ });
39
+ });
40
+ describe("isValidNumString", () => {
41
+ it("should return false for invalid number", () => {
42
+ expect((0, logic_1.isValidNumString)("")).toEqual(false);
43
+ expect((0, logic_1.isValidNumString)(undefined)).toEqual(false);
44
+ expect((0, logic_1.isValidNumString)(null)).toEqual(false);
45
+ expect((0, logic_1.isValidNumString)({})).toEqual(false);
46
+ expect((0, logic_1.isValidNumString)([])).toEqual(false);
47
+ });
48
+ it("should return true for valid number", () => {
49
+ expect((0, logic_1.isValidNumString)(123)).toEqual(true);
50
+ expect((0, logic_1.isValidNumString)(123.321)).toEqual(true);
51
+ expect((0, logic_1.isValidNumString)("123")).toEqual(true);
52
+ expect((0, logic_1.isValidNumString)("123.321")).toEqual(true);
53
+ });
54
+ });
55
+ //# sourceMappingURL=logic.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic.unit.test.js","sourceRoot":"","sources":["../src/logic.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=synchronisation.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronisation.unit.test.d.ts","sourceRoot":"","sources":["../src/synchronisation.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,150 @@
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
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
7
+ const getDelegationInfo_1 = require("./api/getDelegationInfo");
8
+ const synchronisation_1 = require("./synchronisation");
9
+ const getTransactions_1 = require("./api/getTransactions");
10
+ const buildSubAccounts_1 = require("./buildSubAccounts");
11
+ const getNetworkInfo_1 = require("./api/getNetworkInfo");
12
+ jest.mock("./buildSubAccounts");
13
+ jest.mock("./api/getTransactions");
14
+ jest.mock("./api/getNetworkInfo");
15
+ jest.mock("./api/getDelegationInfo");
16
+ describe("makeGetAccountShape", () => {
17
+ let signerContext;
18
+ let shape;
19
+ let accountShapeInfo;
20
+ let getTransactionsMock;
21
+ beforeEach(() => {
22
+ const pubKeyMock = {
23
+ chainCodeHex: "chainCodeHex",
24
+ publicKeyHex: "publicKeyHex",
25
+ };
26
+ const fakeSigner = {
27
+ getAddress: jest.fn(),
28
+ sign: jest.fn(),
29
+ getPublicKey: jest.fn().mockResolvedValue(pubKeyMock),
30
+ };
31
+ signerContext = (_, fn) => fn(fakeSigner);
32
+ shape = (0, synchronisation_1.makeGetAccountShape)(signerContext);
33
+ accountShapeInfo = {
34
+ currency: { id: "cardano" },
35
+ address: "add",
36
+ index: 0,
37
+ initialAccount: {
38
+ cardanoResources: {
39
+ utxos: [
40
+ {
41
+ hash: "hash",
42
+ index: 0,
43
+ address: "addr",
44
+ amount: new bignumber_js_1.default(1),
45
+ tokens: [],
46
+ paymentCredential: {
47
+ key: "key",
48
+ path: {
49
+ purpose: 1852,
50
+ coin: 1815,
51
+ account: 0,
52
+ chain: 0,
53
+ index: 0,
54
+ },
55
+ },
56
+ },
57
+ ],
58
+ },
59
+ },
60
+ derivationPath: "",
61
+ derivationMode: "cardano",
62
+ deviceId: "id",
63
+ };
64
+ const buildSubAccountsMock = jest.mocked(buildSubAccounts_1.buildSubAccounts);
65
+ buildSubAccountsMock.mockReturnValue([]);
66
+ getTransactionsMock = jest.mocked(getTransactions_1.getTransactions);
67
+ const getNetworkInfoMock = jest.mocked(getNetworkInfo_1.fetchNetworkInfo);
68
+ getNetworkInfoMock.mockReturnValue(Promise.resolve({ protocolParams: { lovelacePerUtxoWord: "1" } }));
69
+ });
70
+ afterEach(() => {
71
+ jest.resetAllMocks();
72
+ });
73
+ describe("balance", () => {
74
+ it("should return 0 balance when there is no utxos", async () => {
75
+ getTransactionsMock.mockReturnValue(Promise.resolve({
76
+ transactions: [],
77
+ externalCredentials: [
78
+ { path: { index: 0 }, networkId: "id", isUsed: false, key: "" },
79
+ ],
80
+ internalCredentials: [],
81
+ blockHeight: 0,
82
+ }));
83
+ const result = await shape(accountShapeInfo, { paginationConfig: {} });
84
+ expect(result.balance).toEqual(new bignumber_js_1.default(0));
85
+ });
86
+ it("should return the sum of utxos with delegation reward value", async () => {
87
+ getTransactionsMock.mockReturnValue(Promise.resolve({
88
+ transactions: [],
89
+ externalCredentials: [
90
+ { path: { index: 0 }, networkId: "id", isUsed: false, key: "" },
91
+ ],
92
+ internalCredentials: [
93
+ {
94
+ isUsed: true,
95
+ key: "cred",
96
+ },
97
+ ],
98
+ blockHeight: 0,
99
+ }));
100
+ const getDelegationInfoMock = jest.mocked(getDelegationInfo_1.getDelegationInfo);
101
+ getDelegationInfoMock.mockReturnValue(Promise.resolve({ rewards: new bignumber_js_1.default(42) }));
102
+ const result = await shape(accountShapeInfo, { paginationConfig: {} });
103
+ expect(result.balance).toEqual(new bignumber_js_1.default(42));
104
+ });
105
+ });
106
+ describe("spendableBalance", () => {
107
+ it("should return 0 spendable balance when there is no utxos", async () => {
108
+ const getTransactionsMock = jest.mocked(getTransactions_1.getTransactions);
109
+ getTransactionsMock.mockReturnValue(Promise.resolve({
110
+ transactions: [],
111
+ externalCredentials: [
112
+ {
113
+ isUsed: false,
114
+ key: "00000000000000000000000000000000000000000000000000000000",
115
+ path: {
116
+ purpose: 1852,
117
+ coin: 1815,
118
+ account: 0,
119
+ chain: 0,
120
+ index: 0,
121
+ },
122
+ },
123
+ ],
124
+ internalCredentials: [],
125
+ }));
126
+ const result = await shape(accountShapeInfo, { paginationConfig: {} });
127
+ expect(result.spendableBalance).toEqual(new bignumber_js_1.default(0));
128
+ });
129
+ // it("should return the sum of utxos minus ada minimum for tokens", async () => {});
130
+ });
131
+ describe("delegation", () => {
132
+ it("should check dRepHex and rewards are available", async () => {
133
+ getTransactionsMock.mockReturnValue(Promise.resolve({
134
+ blockHeight: 0,
135
+ transactions: [],
136
+ externalCredentials: [{ isUsed: false, key: "0", path: {} }],
137
+ internalCredentials: [],
138
+ }));
139
+ const getDelegationInfoMock = jest.mocked(getDelegationInfo_1.getDelegationInfo);
140
+ getDelegationInfoMock.mockReturnValue(Promise.resolve({
141
+ rewards: new bignumber_js_1.default(10),
142
+ dRepHex: "dRepHex",
143
+ }));
144
+ const result = await shape(accountShapeInfo, { paginationConfig: {} });
145
+ expect(result.cardanoResources?.delegation?.dRepHex).toEqual("dRepHex");
146
+ expect(result.cardanoResources?.delegation?.rewards).toEqual(new bignumber_js_1.default(10));
147
+ });
148
+ });
149
+ });
150
+ //# sourceMappingURL=synchronisation.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronisation.unit.test.js","sourceRoot":"","sources":["../src/synchronisation.unit.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAqC;AAIrC,+DAA4D;AAC5D,uDAAwD;AACxD,2DAAwD;AACxD,yDAAsD;AACtD,yDAAwD;AAIxD,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACnC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAErC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,aAA2C,CAAC;IAChD,IAAI,KAAsC,CAAC;IAC3C,IAAI,gBAAkD,CAAC;IACvD,IAAI,mBAAiE,CAAC;IAEtE,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,UAAU,GAAG;YACjB,YAAY,EAAE,cAAc;YAC5B,YAAY,EAAE,cAAc;SAC7B,CAAC;QACF,MAAM,UAAU,GAAkB;YAChC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC;SACtD,CAAC;QACF,aAAa,GAAG,CAAI,CAAS,EAAE,EAAyC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC5F,KAAK,GAAG,IAAA,qCAAmB,EAAC,aAAa,CAAC,CAAC;QAC3C,gBAAgB,GAAG;YACjB,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAS;YAClC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC;YACR,cAAc,EAAE;gBACd,gBAAgB,EAAE;oBAChB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,CAAC;4BACR,OAAO,EAAE,MAAM;4BACf,MAAM,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC;4BACxB,MAAM,EAAE,EAAE;4BACV,iBAAiB,EAAE;gCACjB,GAAG,EAAE,KAAK;gCACV,IAAI,EAAE;oCACJ,OAAO,EAAE,IAAI;oCACb,IAAI,EAAE,IAAI;oCACV,OAAO,EAAE,CAAC;oCACV,KAAK,EAAE,CAAC;oCACR,KAAK,EAAE,CAAC;iCACT;6BACF;yBACF;qBACF;iBACF;aAC2B;YAC9B,cAAc,EAAE,EAAE;YAClB,cAAc,EAAE,SAAS;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,mCAAgB,CAAC,CAAC;QAC3D,oBAAoB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACzC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,iCAAe,CAAC,CAAC;QACnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,iCAAgB,CAAC,CAAC;QACzD,kBAAkB,CAAC,eAAe,CAChC,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,EAAE,mBAAmB,EAAE,GAAG,EAAE,EAAoB,CAAC,CACpF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,mBAAmB,CAAC,eAAe,CACjC,OAAO,CAAC,OAAO,CAAC;gBACd,YAAY,EAAE,EAAE;gBAChB,mBAAmB,EAAE;oBACnB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;iBAC3E;gBACD,mBAAmB,EAAE,EAAE;gBACvB,WAAW,EAAE,CAAC;aACf,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,mBAAmB,CAAC,eAAe,CACjC,OAAO,CAAC,OAAO,CAAC;gBACd,YAAY,EAAE,EAAE;gBAChB,mBAAmB,EAAE;oBACnB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;iBAC3E;gBACD,mBAAmB,EAAE;oBACnB;wBACE,MAAM,EAAE,IAAI;wBACZ,GAAG,EAAE,MAAM;qBACS;iBACvB;gBACD,WAAW,EAAE,CAAC;aACf,CAAC,CACH,CAAC;YACF,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,qCAAiB,CAAC,CAAC;YAC7D,qBAAqB,CAAC,eAAe,CACnC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,sBAAS,CAAC,EAAE,CAAC,EAAuB,CAAC,CACrE,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,sBAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,iCAAe,CAAC,CAAC;YACzD,mBAAmB,CAAC,eAAe,CACjC,OAAO,CAAC,OAAO,CAAC;gBACd,YAAY,EAAE,EAAE;gBAChB,mBAAmB,EAAE;oBACnB;wBACE,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,0DAA0D;wBAC/D,IAAI,EAAE;4BACJ,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE,IAAI;4BACV,OAAO,EAAE,CAAC;4BACV,KAAK,EAAE,CAAC;4BACR,KAAK,EAAE,CAAC;yBACT;qBACF;iBACF;gBACD,mBAAmB,EAAE,EAAE;aACjB,CAAC,CACV,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,qFAAqF;IACvF,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,mBAAmB,CAAC,eAAe,CACjC,OAAO,CAAC,OAAO,CAAC;gBACd,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,EAAE;gBAChB,mBAAmB,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAuB,CAAC;gBACjF,mBAAmB,EAAE,EAAE;aACxB,CAAC,CACH,CAAC;YACF,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,qCAAiB,CAAC,CAAC;YAC7D,qBAAqB,CAAC,eAAe,CACnC,OAAO,CAAC,OAAO,CAAC;gBACd,OAAO,EAAE,IAAI,sBAAS,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,SAAS;aACE,CAAC,CACxB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,sBAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=address.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.unit.test.d.ts","sourceRoot":"","sources":["../src/address.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { isValidAddress } from "./logic";
2
+ import { NetworkId } from "./types";
3
+ describe("address validation", () => {
4
+ it("should check for invalid address", () => {
5
+ const isValid = isValidAddress("bnb136ns6lfw4zs5hg4n85vdthaad7hq5m4gtkgf23", NetworkId.mainnet);
6
+ expect(isValid).toEqual(false);
7
+ });
8
+ it("should check for valid byron address", () => {
9
+ const isValidByronAddress1 = isValidAddress("Ae2tdPwUPEZFBgKrLT9pn8JPJVbefcL4kuznpQxQpxKfTVuHJ9gLAmxKk4w", NetworkId.mainnet);
10
+ expect(isValidByronAddress1).toEqual(true);
11
+ const isValidByronAddress2 = isValidAddress("DdzFFzCqrhst6mdc3hmFeWu77FZdYNjV7tTGVtEBXQzE3iCqyZWn9SSWCBrjRbbhj94VHAyGU96khi8qGM1B29nGs1jZRZEWKg2MwbVb", NetworkId.mainnet);
12
+ expect(isValidByronAddress2).toEqual(true);
13
+ });
14
+ it("should check for valid shelley address", () => {
15
+ const isValidShelleyAddress = isValidAddress("addr1q8mgw8geggkl2hs0m6rq3pgt69uxttpqcgu6euxje5tt6plxjtjrnskhhtt03g6l3sr98p9t8mtlajr26vmwjzep77pqxn8cms", NetworkId.mainnet);
16
+ expect(isValidShelleyAddress).toEqual(true);
17
+ });
18
+ });
19
+ //# sourceMappingURL=address.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.unit.test.js","sourceRoot":"","sources":["../src/address.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,4CAA4C,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAChG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,oBAAoB,GAAG,cAAc,CACzC,6DAA6D,EAC7D,SAAS,CAAC,OAAO,CAClB,CAAC;QACF,MAAM,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE3C,MAAM,oBAAoB,GAAG,cAAc,CACzC,0GAA0G,EAC1G,SAAS,CAAC,OAAO,CAClB,CAAC;QACF,MAAM,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,qBAAqB,GAAG,cAAc,CAC1C,yGAAyG,EACzG,SAAS,CAAC,OAAO,CAClB,CAAC;QAEF,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAOA,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;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAA0B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEjE,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,cAAc,CAa/F;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,GAC1C,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,CAAC,CA2B/D;AAED,wBAAgB,aAAa,CAC3B,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,EAC3C,UAAU,EAAE,UAAU,CAAC,iBAAiB,CAAC;;;EAO1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAOA,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;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAA0B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEjE,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,CA2B/D;AAED,wBAAgB,aAAa,CAC3B,aAAa,EAAE,aAAa,CAAC,aAAa,CAAC,EAC3C,UAAU,EAAE,UAAU,CAAC,iBAAiB,CAAC;;;EAO1C"}
@@ -16,7 +16,6 @@ export function buildCurrencyBridge(signerContext) {
16
16
  const scanAccounts = makeScanAccounts({
17
17
  getAccountShape: makeGetAccountShape(signerContext),
18
18
  getAddressFn: getAddressWrapper(getAddress),
19
- postSync: postSyncPatch,
20
19
  });
21
20
  return {
22
21
  scanAccounts,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,QAAQ,GACT,MAAM,2CAA2C,CAAC;AAGnD,OAAO,iBAAiB,MAAM,mDAAmD,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AAExC,OAAO,iBAAwC,MAAM,WAAW,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,aAA2C;IAC7E,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,gBAAgB,CAAC;QACpC,eAAe,EAAE,mBAAmB,CAAC,aAAa,CAAC;QACnD,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;QAC3C,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAC;IAEH,OAAO;QACL,YAAY;QACZ,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,aAA2C;IAE3C,MAAM,IAAI,GAAG,QAAQ,CAAC;QACpB,eAAe,EAAE,mBAAmB,CAAC,aAAa,CAAC;QACnD,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,wBAAwB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,oBAAoB;QACpB,iBAAiB;QACjB,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;QAClB,IAAI;QACJ,OAAO;QACP,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;QAChD,gBAAgB,EAAE,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,SAAS;QACT,kBAAkB;QAClB,oBAAoB;QACpB,8BAA8B;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,aAA2C,EAC3C,UAAyC;IAEzC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,QAAQ,GACT,MAAM,2CAA2C,CAAC;AAGnD,OAAO,iBAAiB,MAAM,mDAAmD,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AAExC,OAAO,iBAAwC,MAAM,WAAW,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,aAA2C;IAC7E,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,gBAAgB,CAAC;QACpC,eAAe,EAAE,mBAAmB,CAAC,aAAa,CAAC;QACnD,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,YAAY;QACZ,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,aAA2C;IAE3C,MAAM,IAAI,GAAG,QAAQ,CAAC;QACpB,eAAe,EAAE,mBAAmB,CAAC,aAAa,CAAC;QACnD,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,wBAAwB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,oBAAoB;QACpB,iBAAiB;QACjB,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;QAClB,IAAI;QACJ,OAAO;QACP,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;QAChD,gBAAgB,EAAE,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,SAAS;QACT,kBAAkB;QAClB,oBAAoB;QACpB,8BAA8B;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,aAA2C,EAC3C,UAAyC;IAEzC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Transaction } from "./types";
2
+ import type { DatasetTest } from "@ledgerhq/types-live";
3
+ export declare const dataset: DatasetTest<Transaction>;
4
+ //# sourceMappingURL=bridge.integration.test.d.ts.map
@@ -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;AAUxD,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,WAAW,CAkG5C,CAAC"}
@@ -0,0 +1,114 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { cardanoRawAccount1 } from "./datasets/rawAccount.1";
3
+ import { cardanoScanAccounts } from "./datasets/scanAccounts";
4
+ import { CardanoInvalidPoolId, CardanoMinAmountError } from "./errors";
5
+ import { fromTransactionRaw } from "./transaction";
6
+ import { Buffer as OriginalBuffer } from "buffer";
7
+ // NOTE: overrides polyfill set here libs/ledger-live-common/jest.polyfills.js
8
+ Object.defineProperty(globalThis, "Buffer", {
9
+ value: OriginalBuffer,
10
+ writable: true,
11
+ configurable: true,
12
+ });
13
+ export const dataset = {
14
+ implementations: ["js"],
15
+ currencies: {
16
+ cardano_testnet: {
17
+ scanAccounts: cardanoScanAccounts,
18
+ accounts: [
19
+ {
20
+ raw: cardanoRawAccount1,
21
+ transactions: [
22
+ {
23
+ name: "amount less then minimum",
24
+ transaction: fromTransactionRaw({
25
+ family: "cardano",
26
+ recipient: "addr_test1qpl90kc2jl5kr9tev0s7vays9yhwcdnq8nlylyk4dqsdq3g466elxnxwrzwq72pvp5akenj30t5s9et7frfvrxxx8xcsxrzs87",
27
+ amount: "0.1",
28
+ mode: "send",
29
+ poolId: undefined,
30
+ }),
31
+ expectedStatus: {
32
+ amount: new BigNumber("0.1"),
33
+ errors: {
34
+ amount: new CardanoMinAmountError(),
35
+ },
36
+ },
37
+ },
38
+ /* // FIXME broken test
39
+ {
40
+ name: "token amount more than balance",
41
+ transaction: fromTransactionRaw({
42
+ family: "cardano",
43
+ recipient:
44
+ "addr_test1qpl90kc2jl5kr9tev0s7vays9yhwcdnq8nlylyk4dqsdq3g466elxnxwrzwq72pvp5akenj30t5s9et7frfvrxxx8xcsxrzs87",
45
+ amount: "101",
46
+ subAccountId:
47
+ "js:2:cardano_testnet:806499588e0c4a58f4119f7e6e096bf42c3f774a528d2acec9e82ceebf87d1ceb3d4f3622dd2c77c65cc89c123f79337db22cf8a69f122e36dab1bf5083bf82d:cardano+cardano_testnet%2Fnative%2F47be64fcc8a7fe5321b976282ce4e43e4d29015f6613cfabcea28eab54657374",
48
+ mode: "send",
49
+ poolId: undefined,
50
+ }),
51
+ expectedStatus: {
52
+ amount: new BigNumber("101"),
53
+ errors: {
54
+ amount: new NotEnoughBalance(),
55
+ },
56
+ },
57
+ },
58
+ {
59
+ name: "send max token",
60
+ transaction: fromTransactionRaw({
61
+ family: "cardano",
62
+ recipient:
63
+ "addr_test1qpl90kc2jl5kr9tev0s7vays9yhwcdnq8nlylyk4dqsdq3g466elxnxwrzwq72pvp5akenj30t5s9et7frfvrxxx8xcsxrzs87",
64
+ amount: "0",
65
+ subAccountId:
66
+ "js:2:cardano_testnet:806499588e0c4a58f4119f7e6e096bf42c3f774a528d2acec9e82ceebf87d1ceb3d4f3622dd2c77c65cc89c123f79337db22cf8a69f122e36dab1bf5083bf82d:cardano+cardano_testnet%2Fnative%2F47be64fcc8a7fe5321b976282ce4e43e4d29015f6613cfabcea28eab54657374",
67
+ mode: "send",
68
+ useAllAmount: true,
69
+ poolId: undefined,
70
+ }),
71
+ expectedStatus: {
72
+ amount: new BigNumber("100"),
73
+ totalSpent: new BigNumber("100"),
74
+ errors: {},
75
+ warnings: {},
76
+ },
77
+ },
78
+ */
79
+ {
80
+ name: "delegate to invalid poolId",
81
+ transaction: fromTransactionRaw({
82
+ family: "cardano",
83
+ recipient: "",
84
+ amount: "0",
85
+ mode: "delegate",
86
+ poolId: "efae72c07a26e4542ba55ef59d35ad45ffaaac312865e3a758ede",
87
+ }),
88
+ expectedStatus: {
89
+ errors: {
90
+ poolId: new CardanoInvalidPoolId(),
91
+ },
92
+ },
93
+ },
94
+ {
95
+ name: "delegate valid poolId",
96
+ transaction: fromTransactionRaw({
97
+ family: "cardano",
98
+ recipient: "",
99
+ amount: "0",
100
+ mode: "delegate",
101
+ poolId: "efae72c07a26e4542ba55ef59d35ad45ffaaac312865e3a758ede997",
102
+ }),
103
+ expectedStatus: {},
104
+ },
105
+ ],
106
+ },
107
+ ],
108
+ },
109
+ },
110
+ };
111
+ describe("Cardano bridge", () => {
112
+ test.todo("This is an empty test to make jest command pass. Remove it once there is a real test.");
113
+ });
114
+ //# sourceMappingURL=bridge.integration.test.js.map