@ledgerhq/coin-celo 1.6.0-nightly.8 → 1.6.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 (75) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +30 -87
  3. package/lib/__tests__/bridge/buildOptimisticOperation.test.d.ts +2 -0
  4. package/lib/__tests__/bridge/buildOptimisticOperation.test.d.ts.map +1 -0
  5. package/lib/__tests__/bridge/buildOptimisticOperation.test.js +23 -0
  6. package/lib/__tests__/bridge/buildOptimisticOperation.test.js.map +1 -0
  7. package/lib/__tests__/bridge/buildTransaction.test.d.ts +2 -0
  8. package/lib/__tests__/bridge/buildTransaction.test.d.ts.map +1 -0
  9. package/lib/__tests__/bridge/buildTransaction.test.js +412 -0
  10. package/lib/__tests__/bridge/buildTransaction.test.js.map +1 -0
  11. package/lib/__tests__/bridge/createTransaction.test.d.ts +2 -0
  12. package/lib/__tests__/bridge/createTransaction.test.d.ts.map +1 -0
  13. package/lib/__tests__/bridge/createTransaction.test.js +22 -0
  14. package/lib/__tests__/bridge/createTransaction.test.js.map +1 -0
  15. package/lib/__tests__/bridge/deviceTransactionConfig.test.d.ts +2 -0
  16. package/lib/__tests__/bridge/deviceTransactionConfig.test.d.ts.map +1 -0
  17. package/lib/__tests__/bridge/deviceTransactionConfig.test.js +21 -0
  18. package/lib/__tests__/bridge/deviceTransactionConfig.test.js.map +1 -0
  19. package/lib/__tests__/bridge/estimateMaxSpendable.test.d.ts +2 -0
  20. package/lib/__tests__/bridge/estimateMaxSpendable.test.d.ts.map +1 -0
  21. package/lib/__tests__/bridge/estimateMaxSpendable.test.js +108 -0
  22. package/lib/__tests__/bridge/estimateMaxSpendable.test.js.map +1 -0
  23. package/lib/__tests__/bridge/getFeesForTransaction.test.d.ts +2 -0
  24. package/lib/__tests__/bridge/getFeesForTransaction.test.d.ts.map +1 -0
  25. package/lib/__tests__/bridge/getFeesForTransaction.test.js +212 -0
  26. package/lib/__tests__/bridge/getFeesForTransaction.test.js.map +1 -0
  27. package/lib/__tests__/bridge/getTransactionStatus.test.d.ts +2 -0
  28. package/lib/__tests__/bridge/getTransactionStatus.test.d.ts.map +1 -0
  29. package/lib/__tests__/bridge/getTransactionStatus.test.js +214 -0
  30. package/lib/__tests__/bridge/getTransactionStatus.test.js.map +1 -0
  31. package/lib/__tests__/bridge/logic.test.d.ts +2 -0
  32. package/lib/__tests__/bridge/logic.test.d.ts.map +1 -0
  33. package/lib/__tests__/bridge/logic.test.js +490 -0
  34. package/lib/__tests__/bridge/logic.test.js.map +1 -0
  35. package/lib/__tests__/bridge/prepareTransaction.test.d.ts +2 -0
  36. package/lib/__tests__/bridge/prepareTransaction.test.d.ts.map +1 -0
  37. package/lib/__tests__/bridge/prepareTransaction.test.js +233 -0
  38. package/lib/__tests__/bridge/prepareTransaction.test.js.map +1 -0
  39. package/lib-es/__tests__/bridge/buildOptimisticOperation.test.d.ts +2 -0
  40. package/lib-es/__tests__/bridge/buildOptimisticOperation.test.d.ts.map +1 -0
  41. package/lib-es/__tests__/bridge/buildOptimisticOperation.test.js +18 -0
  42. package/lib-es/__tests__/bridge/buildOptimisticOperation.test.js.map +1 -0
  43. package/lib-es/__tests__/bridge/buildTransaction.test.d.ts +2 -0
  44. package/lib-es/__tests__/bridge/buildTransaction.test.d.ts.map +1 -0
  45. package/lib-es/__tests__/bridge/buildTransaction.test.js +407 -0
  46. package/lib-es/__tests__/bridge/buildTransaction.test.js.map +1 -0
  47. package/lib-es/__tests__/bridge/createTransaction.test.d.ts +2 -0
  48. package/lib-es/__tests__/bridge/createTransaction.test.d.ts.map +1 -0
  49. package/lib-es/__tests__/bridge/createTransaction.test.js +17 -0
  50. package/lib-es/__tests__/bridge/createTransaction.test.js.map +1 -0
  51. package/lib-es/__tests__/bridge/deviceTransactionConfig.test.d.ts +2 -0
  52. package/lib-es/__tests__/bridge/deviceTransactionConfig.test.d.ts.map +1 -0
  53. package/lib-es/__tests__/bridge/deviceTransactionConfig.test.js +16 -0
  54. package/lib-es/__tests__/bridge/deviceTransactionConfig.test.js.map +1 -0
  55. package/lib-es/__tests__/bridge/estimateMaxSpendable.test.d.ts +2 -0
  56. package/lib-es/__tests__/bridge/estimateMaxSpendable.test.d.ts.map +1 -0
  57. package/lib-es/__tests__/bridge/estimateMaxSpendable.test.js +103 -0
  58. package/lib-es/__tests__/bridge/estimateMaxSpendable.test.js.map +1 -0
  59. package/lib-es/__tests__/bridge/getFeesForTransaction.test.d.ts +2 -0
  60. package/lib-es/__tests__/bridge/getFeesForTransaction.test.d.ts.map +1 -0
  61. package/lib-es/__tests__/bridge/getFeesForTransaction.test.js +207 -0
  62. package/lib-es/__tests__/bridge/getFeesForTransaction.test.js.map +1 -0
  63. package/lib-es/__tests__/bridge/getTransactionStatus.test.d.ts +2 -0
  64. package/lib-es/__tests__/bridge/getTransactionStatus.test.d.ts.map +1 -0
  65. package/lib-es/__tests__/bridge/getTransactionStatus.test.js +209 -0
  66. package/lib-es/__tests__/bridge/getTransactionStatus.test.js.map +1 -0
  67. package/lib-es/__tests__/bridge/logic.test.d.ts +2 -0
  68. package/lib-es/__tests__/bridge/logic.test.d.ts.map +1 -0
  69. package/lib-es/__tests__/bridge/logic.test.js +485 -0
  70. package/lib-es/__tests__/bridge/logic.test.js.map +1 -0
  71. package/lib-es/__tests__/bridge/prepareTransaction.test.d.ts +2 -0
  72. package/lib-es/__tests__/bridge/prepareTransaction.test.d.ts.map +1 -0
  73. package/lib-es/__tests__/bridge/prepareTransaction.test.js +228 -0
  74. package/lib-es/__tests__/bridge/prepareTransaction.test.js.map +1 -0
  75. package/package.json +11 -11
@@ -0,0 +1,22 @@
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 createTransaction_1 = __importDefault(require("../../bridge/createTransaction"));
8
+ const fixtures_1 = require("../../bridge/fixtures");
9
+ describe("createTransaction", () => {
10
+ it("returns a dummy transaction", () => {
11
+ expect((0, createTransaction_1.default)(fixtures_1.accountFixture)).toMatchObject({
12
+ family: "celo",
13
+ amount: new bignumber_js_1.default(0),
14
+ recipient: "",
15
+ useAllAmount: false,
16
+ fees: null,
17
+ mode: "send",
18
+ index: null,
19
+ });
20
+ });
21
+ });
22
+ //# sourceMappingURL=createTransaction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTransaction.test.js","sourceRoot":"","sources":["../../../src/__tests__/bridge/createTransaction.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAqC;AACrC,uFAA+D;AAC/D,oDAAuD;AAEvD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,IAAA,2BAAiB,EAAC,yBAAc,CAAC,CAAC,CAAC,aAAa,CAAC;YACtD,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC;YACxB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deviceTransactionConfig.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceTransactionConfig.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bridge/deviceTransactionConfig.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
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 deviceTransactionConfig_1 = __importDefault(require("../../bridge/deviceTransactionConfig"));
7
+ describe("deviceTransactionConfig", () => {
8
+ it("returns the expected config", () => {
9
+ expect((0, deviceTransactionConfig_1.default)()).toEqual([
10
+ {
11
+ type: "amount",
12
+ label: "Amount",
13
+ },
14
+ {
15
+ type: "fees",
16
+ label: "Fees",
17
+ },
18
+ ]);
19
+ });
20
+ });
21
+ //# sourceMappingURL=deviceTransactionConfig.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceTransactionConfig.test.js","sourceRoot":"","sources":["../../../src/__tests__/bridge/deviceTransactionConfig.test.ts"],"names":[],"mappings":";;;;;AAAA,mGAA8E;AAE9E,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,IAAA,iCAA0B,GAAE,CAAC,CAAC,OAAO,CAAC;YAC3C;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;aAChB;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;aACd;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=estimateMaxSpendable.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimateMaxSpendable.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bridge/estimateMaxSpendable.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,108 @@
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 estimateMaxSpendable_1 = __importDefault(require("../../bridge/estimateMaxSpendable"));
8
+ const fixtures_1 = require("../../bridge/fixtures");
9
+ jest.mock("../../bridge/getFeesForTransaction", async () => 12);
10
+ const voteMock = jest.fn(() => ({
11
+ txo: {
12
+ encodeABI: jest.fn(() => ({ data: "vote_data" })),
13
+ estimateGas: jest.fn(async () => 1),
14
+ },
15
+ }));
16
+ jest.mock("../../network/sdk", () => {
17
+ return {
18
+ celoKit: jest.fn(() => ({
19
+ contracts: {
20
+ getLockedGold: jest.fn(async () => ({
21
+ address: "address",
22
+ getAccountNonvotingLockedGold: jest.fn(async () => (0, bignumber_js_1.default)(22)),
23
+ lock: jest.fn(() => ({
24
+ txo: {
25
+ encodeABI: jest.fn(() => ({ data: "lock_data" })),
26
+ estimateGas: jest.fn(async () => 2),
27
+ },
28
+ })),
29
+ unlock: jest.fn(() => ({
30
+ txo: {
31
+ encodeABI: jest.fn(() => ({ data: "unlock_data" })),
32
+ estimateGas: jest.fn(async () => 3),
33
+ },
34
+ })),
35
+ withdraw: jest.fn(() => ({
36
+ txo: {
37
+ encodeABI: jest.fn(() => ({ data: "withdraw_data" })),
38
+ estimateGas: jest.fn(async () => 3),
39
+ },
40
+ })),
41
+ vote: jest.fn(() => ({
42
+ txo: {
43
+ encodeABI: jest.fn(() => ({ data: "vote_data" })),
44
+ estimateGas: jest.fn(async () => 3),
45
+ },
46
+ })),
47
+ })),
48
+ getElection: jest.fn(async () => ({
49
+ vote: voteMock,
50
+ revoke: jest.fn(),
51
+ address: "vote_address",
52
+ })),
53
+ getAccounts: jest.fn(async () => ({
54
+ voteSignerToAccount: jest.fn(),
55
+ createAccount: jest.fn(() => ({
56
+ txo: {
57
+ encodeABI: jest.fn(() => ({ data: "register_data" })),
58
+ estimateGas: jest.fn(async () => 3),
59
+ },
60
+ })),
61
+ address: "register_address",
62
+ })),
63
+ getStableToken: jest.fn(async () => ({
64
+ address: "stable_token_address",
65
+ transfer: jest.fn(() => ({
66
+ txo: {
67
+ encodeABI: jest.fn(() => ({ data: "send_token_data" })),
68
+ },
69
+ })),
70
+ })),
71
+ getErc20: jest.fn(async () => ({
72
+ address: "erc20_token_address",
73
+ transfer: jest.fn(() => ({
74
+ txo: {
75
+ encodeABI: jest.fn(() => ({ data: "send_token_data" })),
76
+ },
77
+ })),
78
+ })),
79
+ },
80
+ connection: {
81
+ chainId: jest.fn(),
82
+ nonce: jest.fn(),
83
+ estimateGasWithInflationFactor: jest.fn().mockReturnValue(3),
84
+ },
85
+ })),
86
+ };
87
+ });
88
+ describe("estimateMaxSpendable", () => {
89
+ it("returns the maximum spendable for a celo account", async () => {
90
+ const maximumAmount = await (0, estimateMaxSpendable_1.default)({
91
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(100), spendableBalance: (0, bignumber_js_1.default)(100) },
92
+ transaction: fixtures_1.transactionFixture,
93
+ });
94
+ expect(maximumAmount).toEqual((0, bignumber_js_1.default)(100));
95
+ });
96
+ it("returns the maximum spendable for a celo account", async () => {
97
+ const maximumAmount = await (0, estimateMaxSpendable_1.default)({
98
+ account: {
99
+ ...fixtures_1.accountWithTokenAccountFixture,
100
+ balance: (0, bignumber_js_1.default)(100),
101
+ spendableBalance: (0, bignumber_js_1.default)(100),
102
+ },
103
+ transaction: fixtures_1.tokenTransactionFixture,
104
+ });
105
+ expect(maximumAmount).toEqual((0, bignumber_js_1.default)(212));
106
+ });
107
+ });
108
+ //# sourceMappingURL=estimateMaxSpendable.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimateMaxSpendable.test.js","sourceRoot":"","sources":["../../../src/__tests__/bridge/estimateMaxSpendable.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getFeesForTransaction.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFeesForTransaction.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bridge/getFeesForTransaction.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,212 @@
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 getFeesForTransaction_1 = __importDefault(require("../../bridge/getFeesForTransaction"));
8
+ const fixtures_1 = require("../../bridge/fixtures");
9
+ const chainIdMock = jest.fn();
10
+ const nonceMock = jest.fn();
11
+ const voteMock = jest.fn(() => ({
12
+ txo: {
13
+ encodeABI: jest.fn(() => ({ data: "vote_data" })),
14
+ estimateGas: jest.fn(async () => 1),
15
+ },
16
+ }));
17
+ const revokeMock = jest.fn();
18
+ const voteSignerToAccountMock = jest.fn();
19
+ jest.mock("../../network/sdk", () => {
20
+ return {
21
+ celoKit: jest.fn(() => ({
22
+ contracts: {
23
+ getLockedGold: jest.fn(async () => ({
24
+ address: "address",
25
+ lock: jest.fn(() => ({
26
+ txo: {
27
+ encodeABI: jest.fn(() => ({ data: "lock_data" })),
28
+ estimateGas: jest.fn(async () => 2),
29
+ },
30
+ })),
31
+ unlock: jest.fn(() => ({
32
+ txo: {
33
+ encodeABI: jest.fn(() => ({ data: "unlock_data" })),
34
+ estimateGas: jest.fn(async () => 3),
35
+ },
36
+ })),
37
+ withdraw: jest.fn(() => ({
38
+ txo: {
39
+ encodeABI: jest.fn(() => ({ data: "withdraw_data" })),
40
+ estimateGas: jest.fn(async () => 3),
41
+ },
42
+ })),
43
+ vote: jest.fn(() => ({
44
+ txo: {
45
+ encodeABI: jest.fn(() => ({ data: "vote_data" })),
46
+ estimateGas: jest.fn(async () => 3),
47
+ },
48
+ })),
49
+ getAccountNonvotingLockedGold: jest.fn(() => (0, bignumber_js_1.default)(0)),
50
+ })),
51
+ getElection: jest.fn(async () => ({
52
+ vote: voteMock,
53
+ revoke: revokeMock,
54
+ activate: jest.fn(() => ({
55
+ find: jest.fn(() => ({
56
+ txo: {
57
+ encodeABI: jest.fn(() => ({ data: "vote_data" })),
58
+ estimateGas: jest.fn(async () => 3),
59
+ },
60
+ })),
61
+ })),
62
+ address: "vote_address",
63
+ })),
64
+ getAccounts: jest.fn(async () => ({
65
+ voteSignerToAccount: voteSignerToAccountMock,
66
+ createAccount: jest.fn(() => ({
67
+ txo: {
68
+ encodeABI: jest.fn(() => ({ data: "register_data" })),
69
+ estimateGas: jest.fn(async () => 3),
70
+ },
71
+ })),
72
+ address: "register_address",
73
+ })),
74
+ getStableToken: jest.fn(async () => ({
75
+ address: "stable_token_address",
76
+ transfer: jest.fn(() => ({
77
+ txo: {
78
+ encodeABI: jest.fn(() => ({ data: "send_token_data" })),
79
+ },
80
+ })),
81
+ })),
82
+ getErc20: jest.fn(async () => ({
83
+ address: "erc20_token_address",
84
+ transfer: jest.fn(() => ({
85
+ txo: {
86
+ encodeABI: jest.fn(() => ({ data: "send_token_data" })),
87
+ },
88
+ })),
89
+ })),
90
+ },
91
+ connection: {
92
+ chainId: chainIdMock,
93
+ nonce: nonceMock,
94
+ estimateGasWithInflationFactor: jest.fn().mockReturnValue(3),
95
+ gasPrice: jest.fn(async () => (0, bignumber_js_1.default)(2)),
96
+ getMaxPriorityFeePerGas: jest.fn().mockResolvedValue(1),
97
+ },
98
+ })),
99
+ };
100
+ });
101
+ describe("getFeesForTransaction", () => {
102
+ it("should return the correct fees for a send transaction", async () => {
103
+ const fees = await (0, getFeesForTransaction_1.default)({
104
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
105
+ transaction: fixtures_1.transactionFixture,
106
+ });
107
+ expect(fees).toEqual((0, bignumber_js_1.default)(24));
108
+ });
109
+ it("should return the correct fees for a revoke transaction without revoked transactions", async () => {
110
+ revokeMock.mockClear();
111
+ revokeMock.mockReturnValue({
112
+ find: jest.fn(() => false),
113
+ });
114
+ const fees = await (0, getFeesForTransaction_1.default)({
115
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
116
+ transaction: { ...fixtures_1.transactionFixture, mode: "revoke" },
117
+ });
118
+ expect(fees).toEqual((0, bignumber_js_1.default)(0));
119
+ });
120
+ it("should return the correct fees for a revoke transaction with revoked transactions", async () => {
121
+ revokeMock.mockClear();
122
+ revokeMock.mockReturnValue({
123
+ find: jest.fn(() => ({
124
+ txo: {
125
+ encodeABI: jest.fn(() => ({ data: "revoke_data" })),
126
+ estimateGas: jest.fn(async () => 2),
127
+ },
128
+ })),
129
+ });
130
+ const fees = await (0, getFeesForTransaction_1.default)({
131
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
132
+ transaction: { ...fixtures_1.transactionFixture, mode: "revoke" },
133
+ });
134
+ expect(fees).toEqual((0, bignumber_js_1.default)(4));
135
+ });
136
+ it("should return the correct fees for a revoke transaction with revoked transactions and useAllAmount set to true", async () => {
137
+ revokeMock.mockClear();
138
+ revokeMock.mockReturnValue({
139
+ find: jest.fn(() => ({
140
+ txo: {
141
+ encodeABI: jest.fn(() => ({ data: "revoke_data" })),
142
+ estimateGas: jest.fn(async () => 2),
143
+ },
144
+ })),
145
+ });
146
+ const fees = await (0, getFeesForTransaction_1.default)({
147
+ account: {
148
+ ...fixtures_1.accountFixture,
149
+ balance: (0, bignumber_js_1.default)(123),
150
+ spendableBalance: (0, bignumber_js_1.default)(123),
151
+ celoResources: {
152
+ ...fixtures_1.accountFixture.celoResources,
153
+ votes: [
154
+ {
155
+ activatable: true,
156
+ amount: (0, bignumber_js_1.default)(10),
157
+ index: 0,
158
+ revokable: true,
159
+ type: "active",
160
+ validatorGroup: fixtures_1.transactionFixture.recipient,
161
+ },
162
+ ],
163
+ },
164
+ },
165
+ transaction: { ...fixtures_1.transactionFixture, mode: "revoke", useAllAmount: true },
166
+ });
167
+ expect(fees).toEqual((0, bignumber_js_1.default)(4));
168
+ });
169
+ it("should return the correct fees for a withdraw transaction", async () => {
170
+ const fees = await (0, getFeesForTransaction_1.default)({
171
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
172
+ transaction: { ...fixtures_1.transactionFixture, mode: "withdraw" },
173
+ });
174
+ expect(fees).toEqual((0, bignumber_js_1.default)(6));
175
+ });
176
+ it("should return the correct fees for a vote transaction", async () => {
177
+ const fees = await (0, getFeesForTransaction_1.default)({
178
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
179
+ transaction: { ...fixtures_1.transactionFixture, mode: "vote" },
180
+ });
181
+ expect(fees).toEqual((0, bignumber_js_1.default)(2));
182
+ });
183
+ it("should return the correct fees for a lock transaction", async () => {
184
+ const fees = await (0, getFeesForTransaction_1.default)({
185
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
186
+ transaction: { ...fixtures_1.transactionFixture, mode: "lock" },
187
+ });
188
+ expect(fees).toEqual((0, bignumber_js_1.default)(4));
189
+ });
190
+ it("should return the correct fees for a unlock transaction", async () => {
191
+ const fees = await (0, getFeesForTransaction_1.default)({
192
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
193
+ transaction: { ...fixtures_1.transactionFixture, mode: "unlock" },
194
+ });
195
+ expect(fees).toEqual((0, bignumber_js_1.default)(6));
196
+ });
197
+ it("should return the correct fees for an activate transaction", async () => {
198
+ const fees = await (0, getFeesForTransaction_1.default)({
199
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
200
+ transaction: { ...fixtures_1.transactionFixture, mode: "activate" },
201
+ });
202
+ expect(fees).toEqual((0, bignumber_js_1.default)(6));
203
+ });
204
+ it("should return the correct fees for a register transaction", async () => {
205
+ const fees = await (0, getFeesForTransaction_1.default)({
206
+ account: { ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) },
207
+ transaction: { ...fixtures_1.transactionFixture, mode: "register" },
208
+ });
209
+ expect(fees).toEqual((0, bignumber_js_1.default)(6));
210
+ });
211
+ });
212
+ //# sourceMappingURL=getFeesForTransaction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFeesForTransaction.test.js","sourceRoot":"","sources":["../../../src/__tests__/bridge/getFeesForTransaction.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAqC;AACrC,+FAAuE;AACvE,oDAA2E;AAE3E,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,GAAG,EAAE;QACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACjD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;KACpC;CACF,CAAC,CAAC,CAAC;AACJ,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAC7B,MAAM,uBAAuB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAE1C,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACtB,SAAS,EAAE;gBACT,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBAClC,OAAO,EAAE,SAAS;oBAClB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;wBACnB,GAAG,EAAE;4BACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;4BACjD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;yBACpC;qBACF,CAAC,CAAC;oBACH,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;wBACrB,GAAG,EAAE;4BACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;4BACnD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;yBACpC;qBACF,CAAC,CAAC;oBACH,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;wBACvB,GAAG,EAAE;4BACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;4BACrD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;yBACpC;qBACF,CAAC,CAAC;oBACH,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;wBACnB,GAAG,EAAE;4BACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;4BACjD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;yBACpC;qBACF,CAAC,CAAC;oBACH,6BAA6B,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC;iBAC3D,CAAC,CAAC;gBACH,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBAChC,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;wBACvB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;4BACnB,GAAG,EAAE;gCACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gCACjD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;6BACpC;yBACF,CAAC,CAAC;qBACJ,CAAC,CAAC;oBACH,OAAO,EAAE,cAAc;iBACxB,CAAC,CAAC;gBACH,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBAChC,mBAAmB,EAAE,uBAAuB;oBAC5C,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;wBAC5B,GAAG,EAAE;4BACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;4BACrD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;yBACpC;qBACF,CAAC,CAAC;oBACH,OAAO,EAAE,kBAAkB;iBAC5B,CAAC,CAAC;gBACH,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACnC,OAAO,EAAE,sBAAsB;oBAC/B,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;wBACvB,GAAG,EAAE;4BACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;yBACxD;qBACF,CAAC,CAAC;iBACJ,CAAC,CAAC;gBACH,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,qBAAqB;oBAC9B,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;wBACvB,GAAG,EAAE;4BACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;yBACxD;qBACF,CAAC,CAAC;iBACJ,CAAC,CAAC;aACJ;YACD,UAAU,EAAE;gBACV,OAAO,EAAE,WAAW;gBACpB,KAAK,EAAE,SAAS;gBAChB,8BAA8B,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC5D,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC;gBAC3C,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;aACxD;SACF,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,6BAAkB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QACpG,UAAU,CAAC,SAAS,EAAE,CAAC;QAEvB,UAAU,CAAC,eAAe,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;SAC3B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;SACvD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QACjG,UAAU,CAAC,SAAS,EAAE,CAAC;QAEvB,UAAU,CAAC,eAAe,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,GAAG,EAAE;oBACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;oBACnD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;iBACpC;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;SACvD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gHAAgH,EAAE,KAAK,IAAI,EAAE;QAC9H,UAAU,CAAC,SAAS,EAAE,CAAC;QAEvB,UAAU,CAAC,eAAe,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,GAAG,EAAE;oBACH,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;oBACnD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;iBACpC;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE;gBACP,GAAG,yBAAc;gBACjB,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC;gBACvB,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC;gBAChC,aAAa,EAAE;oBACb,GAAG,yBAAc,CAAC,aAAa;oBAC/B,KAAK,EAAE;wBACL;4BACE,WAAW,EAAE,IAAI;4BACjB,MAAM,EAAE,IAAA,sBAAS,EAAC,EAAE,CAAC;4BACrB,KAAK,EAAE,CAAC;4BACR,SAAS,EAAE,IAAI;4BACf,IAAI,EAAE,QAAQ;4BACd,cAAc,EAAE,6BAAkB,CAAC,SAAS;yBAC7C;qBACF;iBACF;aACF;YACD,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE;SAC3E,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,UAAU,EAAE;SACzD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;SACrD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;SACrD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;SACvD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,UAAU,EAAE;SACzD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC;YACvC,OAAO,EAAE,EAAE,GAAG,yBAAc,EAAE,OAAO,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,IAAA,sBAAS,EAAC,GAAG,CAAC,EAAE;YACzF,WAAW,EAAE,EAAE,GAAG,6BAAkB,EAAE,IAAI,EAAE,UAAU,EAAE;SACzD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getTransactionStatus.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionStatus.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/bridge/getTransactionStatus.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,214 @@
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 fixtures_1 = require("../../bridge/fixtures");
7
+ const getTransactionStatus_1 = __importDefault(require("../../bridge/getTransactionStatus"));
8
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
+ jest.mock("../../network/sdk", () => {
10
+ return {
11
+ celoKit: jest.fn(() => ({
12
+ contracts: {
13
+ getLockedGold: jest.fn(async () => ({
14
+ address: "address",
15
+ lock: jest.fn(() => ({
16
+ txo: {
17
+ encodeABI: jest.fn(() => ({ data: "lock_data" })),
18
+ estimateGas: jest.fn(async () => 2),
19
+ },
20
+ })),
21
+ unlock: jest.fn(() => ({
22
+ txo: {
23
+ encodeABI: jest.fn(() => ({ data: "unlock_data" })),
24
+ estimateGas: jest.fn(async () => 3),
25
+ },
26
+ })),
27
+ withdraw: jest.fn(() => ({
28
+ txo: {
29
+ encodeABI: jest.fn(() => ({ data: "withdraw_data" })),
30
+ estimateGas: jest.fn(async () => 3),
31
+ },
32
+ })),
33
+ vote: jest.fn(() => ({
34
+ txo: {
35
+ encodeABI: jest.fn(() => ({ data: "vote_data" })),
36
+ estimateGas: jest.fn(async () => 3),
37
+ },
38
+ })),
39
+ getAccountNonvotingLockedGold: jest.fn(() => (0, bignumber_js_1.default)(100)),
40
+ })),
41
+ },
42
+ })),
43
+ };
44
+ });
45
+ describe("getTransactionStatus", () => {
46
+ it("should return an InvalidAddressBecauseDestinationIsAlsoSource error in case the recipient is also the sender", async () => {
47
+ const transactionStatus = await (0, getTransactionStatus_1.default)({ ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) }, {
48
+ ...fixtures_1.transactionFixture,
49
+ recipient: fixtures_1.accountFixture.freshAddress,
50
+ fees: (0, bignumber_js_1.default)(2),
51
+ });
52
+ expect(transactionStatus.errors["recipient"].name).toEqual("InvalidAddressBecauseDestinationIsAlsoSource");
53
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
54
+ expect(transactionStatus.errors).not.toHaveProperty("amount");
55
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
56
+ });
57
+ it("should return an FeeNotLoaded error in case the transaction is missing fees", async () => {
58
+ const transactionStatus = await (0, getTransactionStatus_1.default)({ ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) }, {
59
+ ...fixtures_1.transactionFixture,
60
+ recipient: "0x79D5A290D7ba4b99322d91b577589e8d0BF87072",
61
+ });
62
+ expect(transactionStatus.errors["fees"].name).toEqual("FeeNotLoaded");
63
+ expect(transactionStatus.errors).not.toHaveProperty("recipient");
64
+ expect(transactionStatus.errors).not.toHaveProperty("amount");
65
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
66
+ });
67
+ it("should return an NotEnoughBalance error in case the transaction is more than the account balance", async () => {
68
+ const transactionStatus = await (0, getTransactionStatus_1.default)({ ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) }, {
69
+ ...fixtures_1.transactionFixture,
70
+ recipient: "0x79D5A290D7ba4b99322d91b577589e8d0BF87072",
71
+ fees: (0, bignumber_js_1.default)(2),
72
+ amount: (0, bignumber_js_1.default)(88888),
73
+ });
74
+ expect(transactionStatus.errors["amount"].name).toEqual("NotEnoughBalance");
75
+ expect(transactionStatus.errors).not.toHaveProperty("recipient");
76
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
77
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
78
+ });
79
+ it("should return an RecipientRequired error in case the transaction does not have a recipient address", async () => {
80
+ const transactionStatus = await (0, getTransactionStatus_1.default)({ ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) }, {
81
+ ...fixtures_1.transactionFixture,
82
+ recipient: "",
83
+ fees: (0, bignumber_js_1.default)(2),
84
+ });
85
+ expect(transactionStatus.errors["recipient"].name).toEqual("RecipientRequired");
86
+ expect(transactionStatus.errors).not.toHaveProperty("amount");
87
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
88
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
89
+ });
90
+ it("should return an InvalidAddress error in case the transaction does not have a valid recipient address", async () => {
91
+ const transactionStatus = await (0, getTransactionStatus_1.default)({ ...fixtures_1.accountFixture, balance: (0, bignumber_js_1.default)(123), spendableBalance: (0, bignumber_js_1.default)(123) }, {
92
+ ...fixtures_1.transactionFixture,
93
+ fees: (0, bignumber_js_1.default)(2),
94
+ });
95
+ expect(transactionStatus.errors["recipient"].name).toEqual("InvalidAddress");
96
+ expect(transactionStatus.errors).not.toHaveProperty("amount");
97
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
98
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
99
+ });
100
+ it("should return a CeloAllFundsWarning warning in case of a send or lock transaction is using all the balance above the safety buffer", async () => {
101
+ const transactionStatus = await (0, getTransactionStatus_1.default)({
102
+ ...fixtures_1.accountFixture,
103
+ balance: (0, bignumber_js_1.default)(10000000000000000),
104
+ spendableBalance: (0, bignumber_js_1.default)(10000000000000000),
105
+ celoResources: {
106
+ ...fixtures_1.accountFixture.celoResources,
107
+ lockedBalance: (0, bignumber_js_1.default)(44444),
108
+ },
109
+ }, {
110
+ ...fixtures_1.transactionFixture,
111
+ recipient: "0x79D5A290D7ba4b99322d91b577589e8d0BF87072",
112
+ amount: (0, bignumber_js_1.default)(9000000000000000),
113
+ fees: (0, bignumber_js_1.default)(2),
114
+ });
115
+ expect(transactionStatus.warnings["amount"].name).toEqual("CeloAllFundsWarning");
116
+ expect(transactionStatus.errors).not.toHaveProperty("amount");
117
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
118
+ expect(transactionStatus.errors).not.toHaveProperty("recipient");
119
+ });
120
+ it("should not return any error or warning", async () => {
121
+ const transactionStatus = await (0, getTransactionStatus_1.default)({
122
+ ...fixtures_1.accountFixture,
123
+ balance: (0, bignumber_js_1.default)(10000000000000000),
124
+ spendableBalance: (0, bignumber_js_1.default)(10000000000000000),
125
+ celoResources: {
126
+ ...fixtures_1.accountFixture.celoResources,
127
+ lockedBalance: (0, bignumber_js_1.default)(44444),
128
+ },
129
+ }, {
130
+ ...fixtures_1.transactionFixture,
131
+ recipient: "0x79D5A290D7ba4b99322d91b577589e8d0BF87072",
132
+ fees: (0, bignumber_js_1.default)(2),
133
+ useAllAmount: true,
134
+ mode: "vote",
135
+ });
136
+ expect(transactionStatus.errors).not.toHaveProperty("amount");
137
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
138
+ expect(transactionStatus.errors).not.toHaveProperty("recipient");
139
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
140
+ });
141
+ it("should return an AmountRequired error", async () => {
142
+ const transactionStatus = await (0, getTransactionStatus_1.default)({
143
+ ...fixtures_1.accountFixture,
144
+ balance: (0, bignumber_js_1.default)(10000000000000000),
145
+ spendableBalance: (0, bignumber_js_1.default)(10000000000000000),
146
+ celoResources: {
147
+ ...fixtures_1.accountFixture.celoResources,
148
+ lockedBalance: (0, bignumber_js_1.default)(44444),
149
+ },
150
+ }, {
151
+ ...fixtures_1.transactionFixture,
152
+ recipient: "0x79D5A290D7ba4b99322d91b577589e8d0BF87072",
153
+ fees: (0, bignumber_js_1.default)(2),
154
+ amount: (0, bignumber_js_1.default)(0),
155
+ });
156
+ expect(transactionStatus.errors["amount"].name).toEqual("AmountRequired");
157
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
158
+ expect(transactionStatus.errors).not.toHaveProperty("recipient");
159
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
160
+ });
161
+ it("should return an NotEnoughBalance error for a vote transaction where the amount is higher than the total non-voting locked balance", async () => {
162
+ const transactionStatus = await (0, getTransactionStatus_1.default)({
163
+ ...fixtures_1.accountFixture,
164
+ balance: (0, bignumber_js_1.default)(10000000000000000),
165
+ spendableBalance: (0, bignumber_js_1.default)(10000000000000000),
166
+ celoResources: {
167
+ ...fixtures_1.accountFixture.celoResources,
168
+ lockedBalance: (0, bignumber_js_1.default)(44444),
169
+ },
170
+ }, {
171
+ ...fixtures_1.transactionFixture,
172
+ recipient: "0x79D5A290D7ba4b99322d91b577589e8d0BF87072",
173
+ fees: (0, bignumber_js_1.default)(2),
174
+ amount: (0, bignumber_js_1.default)(200),
175
+ mode: "vote",
176
+ });
177
+ expect(transactionStatus.errors["amount"].name).toEqual("NotEnoughBalance");
178
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
179
+ expect(transactionStatus.errors).not.toHaveProperty("recipient");
180
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
181
+ });
182
+ it("should return an NotEnoughBalance error for a revoke transaction where the amount is higher than the total non-voting locked balance", async () => {
183
+ const transactionStatus = await (0, getTransactionStatus_1.default)({
184
+ ...fixtures_1.accountFixture,
185
+ balance: (0, bignumber_js_1.default)(10000000000000000),
186
+ spendableBalance: (0, bignumber_js_1.default)(10000000000000000),
187
+ celoResources: {
188
+ ...fixtures_1.accountFixture.celoResources,
189
+ lockedBalance: (0, bignumber_js_1.default)(44444),
190
+ votes: [
191
+ {
192
+ activatable: true,
193
+ amount: (0, bignumber_js_1.default)(109),
194
+ index: 0,
195
+ revokable: true,
196
+ type: "active",
197
+ validatorGroup: fixtures_1.transactionFixture.recipient,
198
+ },
199
+ ],
200
+ },
201
+ }, {
202
+ ...fixtures_1.transactionFixture,
203
+ recipient: "0x79D5A290D7ba4b99322d91b577589e8d0BF87072",
204
+ useAllAmount: true,
205
+ fees: (0, bignumber_js_1.default)(2),
206
+ mode: "revoke",
207
+ });
208
+ expect(transactionStatus.errors).not.toHaveProperty("amount");
209
+ expect(transactionStatus.errors).not.toHaveProperty("fees");
210
+ expect(transactionStatus.errors).not.toHaveProperty("recipient");
211
+ expect(Object.keys(transactionStatus.warnings).length).toEqual(0);
212
+ });
213
+ });
214
+ //# sourceMappingURL=getTransactionStatus.test.js.map