@ledgerhq/coin-hedera 1.15.0-nightly.20251205111238 → 1.15.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +26 -10
- package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib/bridge/buildOptimisticOperation.js +0 -33
- package/lib/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
- package/lib/bridge/getTransactionStatus.js +0 -54
- package/lib/bridge/getTransactionStatus.js.map +1 -1
- package/lib/bridge/index.d.ts.map +1 -1
- package/lib/bridge/index.js +2 -4
- package/lib/bridge/index.js.map +1 -1
- package/lib/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib/bridge/prepareTransaction.js +0 -16
- package/lib/bridge/prepareTransaction.js.map +1 -1
- package/lib/bridge/serialization.d.ts.map +1 -1
- package/lib/bridge/serialization.js +0 -20
- package/lib/bridge/serialization.js.map +1 -1
- package/lib/bridge/signOperation.d.ts +4 -4
- package/lib/bridge/signOperation.d.ts.map +1 -1
- package/lib/bridge/signOperation.js +0 -10
- package/lib/bridge/signOperation.js.map +1 -1
- package/lib/bridge/synchronisation.d.ts.map +1 -1
- package/lib/bridge/synchronisation.js +0 -8
- package/lib/bridge/synchronisation.js.map +1 -1
- package/lib/constants.d.ts +1 -21
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +1 -22
- package/lib/constants.js.map +1 -1
- package/lib/deviceTransactionConfig.d.ts.map +1 -1
- package/lib/deviceTransactionConfig.js +0 -30
- package/lib/deviceTransactionConfig.js.map +1 -1
- package/lib/errors.d.ts +0 -9
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +1 -4
- package/lib/errors.js.map +1 -1
- package/lib/logic/craftTransaction.d.ts +2 -2
- package/lib/logic/craftTransaction.d.ts.map +1 -1
- package/lib/logic/craftTransaction.js +8 -42
- package/lib/logic/craftTransaction.js.map +1 -1
- package/lib/logic/getBlock.d.ts.map +1 -1
- package/lib/logic/getBlock.js +0 -1
- package/lib/logic/getBlock.js.map +1 -1
- package/lib/logic/listOperations.d.ts.map +1 -1
- package/lib/logic/listOperations.js +7 -39
- package/lib/logic/listOperations.js.map +1 -1
- package/lib/logic/utils.d.ts +3 -61
- package/lib/logic/utils.d.ts.map +1 -1
- package/lib/logic/utils.js +3 -116
- package/lib/logic/utils.js.map +1 -1
- package/lib/network/api.d.ts +1 -3
- package/lib/network/api.d.ts.map +1 -1
- package/lib/network/api.js +0 -19
- package/lib/network/api.js.map +1 -1
- package/lib/test/fixtures/account.fixture.d.ts +1 -1
- package/lib/test/fixtures/account.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/account.fixture.js +0 -2
- package/lib/test/fixtures/account.fixture.js.map +1 -1
- package/lib/transaction.d.ts.map +1 -1
- package/lib/transaction.js +0 -34
- package/lib/transaction.js.map +1 -1
- package/lib/types/alpaca.d.ts +0 -3
- package/lib/types/alpaca.d.ts.map +1 -1
- package/lib/types/bridge.d.ts +3 -87
- package/lib/types/bridge.d.ts.map +1 -1
- package/lib/types/logic.d.ts +1 -5
- package/lib/types/logic.d.ts.map +1 -1
- package/lib/types/mirror.d.ts +0 -19
- package/lib/types/mirror.d.ts.map +1 -1
- package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib-es/bridge/buildOptimisticOperation.js +1 -34
- package/lib-es/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -1
- package/lib-es/bridge/getTransactionStatus.js +3 -57
- package/lib-es/bridge/getTransactionStatus.js.map +1 -1
- package/lib-es/bridge/index.d.ts.map +1 -1
- package/lib-es/bridge/index.js +2 -4
- package/lib-es/bridge/index.js.map +1 -1
- package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
- package/lib-es/bridge/prepareTransaction.js +2 -15
- package/lib-es/bridge/prepareTransaction.js.map +1 -1
- package/lib-es/bridge/serialization.d.ts.map +1 -1
- package/lib-es/bridge/serialization.js +0 -17
- package/lib-es/bridge/serialization.js.map +1 -1
- package/lib-es/bridge/signOperation.d.ts +4 -4
- package/lib-es/bridge/signOperation.d.ts.map +1 -1
- package/lib-es/bridge/signOperation.js +1 -11
- package/lib-es/bridge/signOperation.js.map +1 -1
- package/lib-es/bridge/synchronisation.d.ts.map +1 -1
- package/lib-es/bridge/synchronisation.js +0 -8
- package/lib-es/bridge/synchronisation.js.map +1 -1
- package/lib-es/constants.d.ts +1 -21
- package/lib-es/constants.d.ts.map +1 -1
- package/lib-es/constants.js +0 -21
- package/lib-es/constants.js.map +1 -1
- package/lib-es/deviceTransactionConfig.d.ts.map +1 -1
- package/lib-es/deviceTransactionConfig.js +1 -31
- package/lib-es/deviceTransactionConfig.js.map +1 -1
- package/lib-es/errors.d.ts +0 -9
- package/lib-es/errors.d.ts.map +1 -1
- package/lib-es/errors.js +0 -3
- package/lib-es/errors.js.map +1 -1
- package/lib-es/logic/craftTransaction.d.ts +2 -2
- package/lib-es/logic/craftTransaction.d.ts.map +1 -1
- package/lib-es/logic/craftTransaction.js +10 -44
- package/lib-es/logic/craftTransaction.js.map +1 -1
- package/lib-es/logic/getBlock.d.ts.map +1 -1
- package/lib-es/logic/getBlock.js +1 -2
- package/lib-es/logic/getBlock.js.map +1 -1
- package/lib-es/logic/listOperations.d.ts.map +1 -1
- package/lib-es/logic/listOperations.js +7 -39
- package/lib-es/logic/listOperations.js.map +1 -1
- package/lib-es/logic/utils.d.ts +3 -61
- package/lib-es/logic/utils.d.ts.map +1 -1
- package/lib-es/logic/utils.js +3 -106
- package/lib-es/logic/utils.js.map +1 -1
- package/lib-es/network/api.d.ts +1 -3
- package/lib-es/network/api.d.ts.map +1 -1
- package/lib-es/network/api.js +0 -19
- package/lib-es/network/api.js.map +1 -1
- package/lib-es/test/fixtures/account.fixture.d.ts +1 -1
- package/lib-es/test/fixtures/account.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/account.fixture.js +0 -2
- package/lib-es/test/fixtures/account.fixture.js.map +1 -1
- package/lib-es/transaction.d.ts.map +1 -1
- package/lib-es/transaction.js +0 -34
- package/lib-es/transaction.js.map +1 -1
- package/lib-es/types/alpaca.d.ts +0 -3
- package/lib-es/types/alpaca.d.ts.map +1 -1
- package/lib-es/types/bridge.d.ts +3 -87
- package/lib-es/types/bridge.d.ts.map +1 -1
- package/lib-es/types/logic.d.ts +1 -5
- package/lib-es/types/logic.d.ts.map +1 -1
- package/lib-es/types/mirror.d.ts +0 -19
- package/lib-es/types/mirror.d.ts.map +1 -1
- package/package.json +9 -10
- package/src/api/index.integ.test.ts +1 -11
- package/src/bridge/buildOptimisticOperation.integration.test.ts +4 -159
- package/src/bridge/buildOptimisticOperation.ts +2 -50
- package/src/bridge/getTransactionStatus.test.ts +21 -191
- package/src/bridge/getTransactionStatus.ts +1 -75
- package/src/bridge/index.ts +2 -4
- package/src/bridge/prepareTransaction.test.ts +8 -112
- package/src/bridge/prepareTransaction.ts +2 -20
- package/src/bridge/serialization.ts +0 -17
- package/src/bridge/signOperation.ts +5 -15
- package/src/bridge/synchronisation.ts +0 -9
- package/src/bridge/utils.integration.test.ts +10 -3
- package/src/constants.ts +0 -22
- package/src/deviceTransactionConfig.ts +1 -37
- package/src/errors.ts +0 -7
- package/src/logic/craftTransaction.ts +13 -70
- package/src/logic/getBalance.test.ts +16 -15
- package/src/logic/getBlock.ts +1 -2
- package/src/logic/listOperations.test.ts +29 -86
- package/src/logic/listOperations.ts +6 -46
- package/src/logic/utils.test.ts +8 -362
- package/src/logic/utils.ts +3 -157
- package/src/network/api.test.ts +6 -58
- package/src/network/api.ts +0 -25
- package/src/network/thirdweb.test.ts +2 -2
- package/src/network/utils.test.ts +6 -4
- package/src/test/fixtures/account.fixture.ts +1 -3
- package/src/transaction.ts +0 -42
- package/src/types/alpaca.ts +0 -4
- package/src/types/bridge.ts +3 -108
- package/src/types/logic.ts +1 -6
- package/src/types/mirror.ts +0 -21
- package/lib/preload-data.d.ts +0 -7
- package/lib/preload-data.d.ts.map +0 -1
- package/lib/preload-data.js +0 -37
- package/lib/preload-data.js.map +0 -1
- package/lib/preload.d.ts +0 -8
- package/lib/preload.d.ts.map +0 -1
- package/lib/preload.js +0 -76
- package/lib/preload.js.map +0 -1
- package/lib-es/preload-data.d.ts +0 -7
- package/lib-es/preload-data.d.ts.map +0 -1
- package/lib-es/preload-data.js +0 -31
- package/lib-es/preload-data.js.map +0 -1
- package/lib-es/preload.d.ts +0 -8
- package/lib-es/preload.d.ts.map +0 -1
- package/lib-es/preload.js +0 -67
- package/lib-es/preload.js.map +0 -1
- package/src/deviceTransactionConfig.test.ts +0 -315
- package/src/preload-data.ts +0 -38
- package/src/preload.test.ts +0 -64
- package/src/preload.ts +0 -80
package/lib-es/types/mirror.d.ts
CHANGED
|
@@ -15,7 +15,6 @@ export interface HederaMirrorTokenTransfer {
|
|
|
15
15
|
export interface HederaMirrorTransaction {
|
|
16
16
|
transfers: HederaMirrorCoinTransfer[];
|
|
17
17
|
token_transfers: HederaMirrorTokenTransfer[];
|
|
18
|
-
staking_reward_transfers: HederaMirrorCoinTransfer[];
|
|
19
18
|
charged_tx_fee: number;
|
|
20
19
|
transaction_hash: string;
|
|
21
20
|
transaction_id: string;
|
|
@@ -37,8 +36,6 @@ export interface HederaMirrorToken {
|
|
|
37
36
|
export interface HederaMirrorAccount {
|
|
38
37
|
account: string;
|
|
39
38
|
max_automatic_token_associations: number;
|
|
40
|
-
staked_node_id: number | null;
|
|
41
|
-
pending_reward: number;
|
|
42
39
|
balance: {
|
|
43
40
|
balance: number;
|
|
44
41
|
timestamp: string;
|
|
@@ -91,21 +88,5 @@ export interface HederaMirrorContractCallEstimate {
|
|
|
91
88
|
export interface HederaMirrorContractCallBalance {
|
|
92
89
|
result: string;
|
|
93
90
|
}
|
|
94
|
-
export interface HederaMirrorNode {
|
|
95
|
-
node_id: number;
|
|
96
|
-
node_account_id: string;
|
|
97
|
-
description: string;
|
|
98
|
-
max_stake: number;
|
|
99
|
-
min_stake: number;
|
|
100
|
-
stake: number;
|
|
101
|
-
stake_rewarded: number;
|
|
102
|
-
reward_rate_start: number;
|
|
103
|
-
}
|
|
104
|
-
export interface HederaMirrorNodesResponse {
|
|
105
|
-
nodes: HederaMirrorNode[];
|
|
106
|
-
links: {
|
|
107
|
-
next: string | null;
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
91
|
export {};
|
|
111
92
|
//# sourceMappingURL=mirror.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mirror.d.ts","sourceRoot":"","sources":["../../src/types/mirror.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,KAAK,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE7D,KAAK,SAAS,GAAG,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,eAAe,EAAE,yBAAyB,EAAE,CAAC;IAC7C,
|
|
1
|
+
{"version":3,"file":"mirror.d.ts","sourceRoot":"","sources":["../../src/types/mirror.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-hedera",
|
|
3
|
-
"version": "1.15.0
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "Ledger Hedera Coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -82,15 +82,14 @@
|
|
|
82
82
|
"lodash": "^4.17.21",
|
|
83
83
|
"rxjs": "^7.8.1",
|
|
84
84
|
"viem": "^2.27.0",
|
|
85
|
-
"@ledgerhq/coin-framework": "^6.10.0
|
|
86
|
-
"@ledgerhq/cryptoassets": "^13.34.0
|
|
85
|
+
"@ledgerhq/coin-framework": "^6.10.0",
|
|
86
|
+
"@ledgerhq/cryptoassets": "^13.34.0",
|
|
87
87
|
"@ledgerhq/devices": "8.7.0",
|
|
88
88
|
"@ledgerhq/errors": "^6.27.0",
|
|
89
|
-
"@ledgerhq/live-countervalues": "^0.10.1
|
|
90
|
-
"@ledgerhq/live-
|
|
91
|
-
"@ledgerhq/live
|
|
92
|
-
"@ledgerhq/
|
|
93
|
-
"@ledgerhq/types-live": "^6.90.0-nightly.20251205111238"
|
|
89
|
+
"@ledgerhq/live-countervalues": "^0.10.1",
|
|
90
|
+
"@ledgerhq/live-network": "^2.1.2",
|
|
91
|
+
"@ledgerhq/types-live": "^6.90.0",
|
|
92
|
+
"@ledgerhq/live-env": "^2.22.0"
|
|
94
93
|
},
|
|
95
94
|
"devDependencies": {
|
|
96
95
|
"@types/invariant": "^2.2.2",
|
|
@@ -99,8 +98,8 @@
|
|
|
99
98
|
"eslint-plugin-jest": "^27.4.2",
|
|
100
99
|
"jest": "^29.7.0",
|
|
101
100
|
"ts-jest": "^29.1.1",
|
|
102
|
-
"@ledgerhq/
|
|
103
|
-
"@ledgerhq/
|
|
101
|
+
"@ledgerhq/types-cryptoassets": "^7.30.0",
|
|
102
|
+
"@ledgerhq/disable-network-setup": "^0.1.0"
|
|
104
103
|
},
|
|
105
104
|
"scripts": {
|
|
106
105
|
"clean": "rimraf lib lib-es",
|
|
@@ -385,16 +385,6 @@ describe("createApi", () => {
|
|
|
385
385
|
expect(tx.fees).toBeGreaterThanOrEqual(0n);
|
|
386
386
|
});
|
|
387
387
|
});
|
|
388
|
-
|
|
389
|
-
it("returns block with transaction memo", async () => {
|
|
390
|
-
const blockHeight = 176180671;
|
|
391
|
-
const txHash = "4Ksb7RTwtvvk9r6vvK0Gwxb38kwPqVbJjP6bL4bu2gTvdwrIGZGk6TWntlgRsjvU";
|
|
392
|
-
|
|
393
|
-
const block = await api.getBlock(blockHeight);
|
|
394
|
-
const transaction = block.transactions.find(tx => tx.hash === txHash);
|
|
395
|
-
|
|
396
|
-
expect(transaction?.details?.memo).toBe("test");
|
|
397
|
-
});
|
|
398
388
|
});
|
|
399
389
|
|
|
400
390
|
describe("lastBlock", () => {
|
|
@@ -432,7 +422,7 @@ describe("createApi", () => {
|
|
|
432
422
|
const expectedSyntheticBlock = getSyntheticBlock(lastPagingToken);
|
|
433
423
|
const blockHeights = ops.map(o => o.tx.block.height);
|
|
434
424
|
|
|
435
|
-
expect(blockHeights).toHaveLength(
|
|
425
|
+
expect(blockHeights).toHaveLength(4);
|
|
436
426
|
expect(blockHeights.every(h => h >= expectedSyntheticBlock.blockHeight)).toBe(true);
|
|
437
427
|
});
|
|
438
428
|
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import { getMockedTransaction } from "../test/fixtures/transaction.fixture";
|
|
11
11
|
|
|
12
12
|
describe("buildOptimisticOperation", () => {
|
|
13
|
-
|
|
13
|
+
test("builds optimistic operation for token association", async () => {
|
|
14
14
|
const mockedAccount = getMockedAccount();
|
|
15
15
|
const mockedToken = getMockedHTSTokenCurrency();
|
|
16
16
|
const mockedTransaction = getMockedTransaction({
|
|
@@ -39,7 +39,7 @@ describe("buildOptimisticOperation", () => {
|
|
|
39
39
|
expect(op.recipients).toContain("0.0.1234");
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
test("builds optimistic operation for coin", async () => {
|
|
43
43
|
const mockedAccount = getMockedAccount();
|
|
44
44
|
const mockedTransaction = getMockedTransaction({
|
|
45
45
|
amount: new BigNumber(123),
|
|
@@ -63,7 +63,7 @@ describe("buildOptimisticOperation", () => {
|
|
|
63
63
|
expect(op.recipients).toContain("0.0.5678");
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
test("builds optimistic operation for HTS token", async () => {
|
|
67
67
|
const mockedAccount = getMockedAccount();
|
|
68
68
|
const mockedTokenCurrency = getMockedHTSTokenCurrency();
|
|
69
69
|
const tokenAccount = getMockedTokenAccount(mockedTokenCurrency);
|
|
@@ -95,7 +95,7 @@ describe("buildOptimisticOperation", () => {
|
|
|
95
95
|
expect(subOp.recipients).toContain("0.0.9999");
|
|
96
96
|
});
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
test("builds optimistic operation for ERC20 token", async () => {
|
|
99
99
|
const mockedTokenCurrency = getMockedERC20TokenCurrency();
|
|
100
100
|
const tokenAccount = getMockedTokenAccount(mockedTokenCurrency);
|
|
101
101
|
const parentAccount = getMockedAccount({ subAccounts: [tokenAccount] });
|
|
@@ -136,159 +136,4 @@ describe("buildOptimisticOperation", () => {
|
|
|
136
136
|
expect(subOp.accountId).toBe(tokenAccount.id);
|
|
137
137
|
expect(subOp.recipients).toContain("0.0.9999");
|
|
138
138
|
});
|
|
139
|
-
|
|
140
|
-
it("builds optimistic operation for delegate transaction", async () => {
|
|
141
|
-
const mockedAccount = getMockedAccount();
|
|
142
|
-
const stakingNodeId = 5;
|
|
143
|
-
const mockedTransaction = getMockedTransaction({
|
|
144
|
-
mode: HEDERA_TRANSACTION_MODES.Delegate,
|
|
145
|
-
amount: new BigNumber(0),
|
|
146
|
-
recipient: "",
|
|
147
|
-
properties: {
|
|
148
|
-
stakingNodeId,
|
|
149
|
-
},
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
const estimatedFee = await estimateFees({
|
|
153
|
-
currency: mockedAccount.currency,
|
|
154
|
-
operationType: HEDERA_OPERATION_TYPES.CryptoUpdate,
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
const op = await buildOptimisticOperation({
|
|
158
|
-
account: mockedAccount,
|
|
159
|
-
transaction: mockedTransaction,
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
expect(op.type).toBe("UPDATE_ACCOUNT");
|
|
163
|
-
expect(op.fee).toEqual(estimatedFee.tinybars);
|
|
164
|
-
expect(op.value).toEqual(new BigNumber(0));
|
|
165
|
-
expect(op.senders).toContain(mockedAccount.freshAddress);
|
|
166
|
-
expect(op.extra).toEqual({
|
|
167
|
-
memo: null,
|
|
168
|
-
targetStakingNodeId: stakingNodeId,
|
|
169
|
-
previousStakingNodeId: null,
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it("builds optimistic operation for redelegate transaction", async () => {
|
|
174
|
-
const previousNodeId = 3;
|
|
175
|
-
const newNodeId = 10;
|
|
176
|
-
const mockedAccount = getMockedAccount({
|
|
177
|
-
hederaResources: {
|
|
178
|
-
isAutoTokenAssociationEnabled: false,
|
|
179
|
-
maxAutomaticTokenAssociations: 0,
|
|
180
|
-
delegation: {
|
|
181
|
-
nodeId: previousNodeId,
|
|
182
|
-
delegated: new BigNumber(1000000),
|
|
183
|
-
pendingReward: new BigNumber(500),
|
|
184
|
-
},
|
|
185
|
-
},
|
|
186
|
-
});
|
|
187
|
-
const mockedTransaction = getMockedTransaction({
|
|
188
|
-
mode: HEDERA_TRANSACTION_MODES.Redelegate,
|
|
189
|
-
amount: new BigNumber(0),
|
|
190
|
-
recipient: "",
|
|
191
|
-
properties: {
|
|
192
|
-
stakingNodeId: newNodeId,
|
|
193
|
-
},
|
|
194
|
-
memo: "Redelegating to better validator",
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
const estimatedFee = await estimateFees({
|
|
198
|
-
currency: mockedAccount.currency,
|
|
199
|
-
operationType: HEDERA_OPERATION_TYPES.CryptoUpdate,
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
const op = await buildOptimisticOperation({
|
|
203
|
-
account: mockedAccount,
|
|
204
|
-
transaction: mockedTransaction,
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
expect(op.type).toBe("UPDATE_ACCOUNT");
|
|
208
|
-
expect(op.fee).toEqual(estimatedFee.tinybars);
|
|
209
|
-
expect(op.extra).toEqual({
|
|
210
|
-
memo: "Redelegating to better validator",
|
|
211
|
-
targetStakingNodeId: newNodeId,
|
|
212
|
-
previousStakingNodeId: previousNodeId,
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
it("builds optimistic operation for undelegate transaction", async () => {
|
|
217
|
-
const previousNodeId = 5;
|
|
218
|
-
const mockedAccount = getMockedAccount({
|
|
219
|
-
hederaResources: {
|
|
220
|
-
isAutoTokenAssociationEnabled: false,
|
|
221
|
-
maxAutomaticTokenAssociations: 0,
|
|
222
|
-
delegation: {
|
|
223
|
-
nodeId: previousNodeId,
|
|
224
|
-
delegated: new BigNumber(2000000),
|
|
225
|
-
pendingReward: new BigNumber(1000),
|
|
226
|
-
},
|
|
227
|
-
},
|
|
228
|
-
});
|
|
229
|
-
const mockedTransaction = getMockedTransaction({
|
|
230
|
-
mode: HEDERA_TRANSACTION_MODES.Undelegate,
|
|
231
|
-
amount: new BigNumber(0),
|
|
232
|
-
recipient: "",
|
|
233
|
-
properties: {
|
|
234
|
-
stakingNodeId: null,
|
|
235
|
-
},
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
const estimatedFee = await estimateFees({
|
|
239
|
-
currency: mockedAccount.currency,
|
|
240
|
-
operationType: HEDERA_OPERATION_TYPES.CryptoUpdate,
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
const op = await buildOptimisticOperation({
|
|
244
|
-
account: mockedAccount,
|
|
245
|
-
transaction: mockedTransaction,
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
expect(op.type).toBe("UPDATE_ACCOUNT");
|
|
249
|
-
expect(op.fee).toEqual(estimatedFee.tinybars);
|
|
250
|
-
expect(op.value).toEqual(new BigNumber(0));
|
|
251
|
-
expect(op.extra).toEqual({
|
|
252
|
-
memo: null,
|
|
253
|
-
targetStakingNodeId: null,
|
|
254
|
-
previousStakingNodeId: previousNodeId,
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
it("builds optimistic operation for claim rewards transaction", async () => {
|
|
259
|
-
const stakingNodeId = 8;
|
|
260
|
-
const mockedAccount = getMockedAccount({
|
|
261
|
-
hederaResources: {
|
|
262
|
-
isAutoTokenAssociationEnabled: false,
|
|
263
|
-
maxAutomaticTokenAssociations: 0,
|
|
264
|
-
delegation: {
|
|
265
|
-
nodeId: stakingNodeId,
|
|
266
|
-
delegated: new BigNumber(5000000),
|
|
267
|
-
pendingReward: new BigNumber(2500),
|
|
268
|
-
},
|
|
269
|
-
},
|
|
270
|
-
});
|
|
271
|
-
const mockedTransaction = getMockedTransaction({
|
|
272
|
-
mode: HEDERA_TRANSACTION_MODES.ClaimRewards,
|
|
273
|
-
amount: new BigNumber(0),
|
|
274
|
-
recipient: "",
|
|
275
|
-
memo: "Claiming staking rewards",
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
const estimatedFee = await estimateFees({
|
|
279
|
-
currency: mockedAccount.currency,
|
|
280
|
-
operationType: HEDERA_OPERATION_TYPES.CryptoTransfer,
|
|
281
|
-
});
|
|
282
|
-
|
|
283
|
-
const op = await buildOptimisticOperation({
|
|
284
|
-
account: mockedAccount,
|
|
285
|
-
transaction: mockedTransaction,
|
|
286
|
-
});
|
|
287
|
-
|
|
288
|
-
expect(op.type).toBe("OUT");
|
|
289
|
-
expect(op.fee).toEqual(estimatedFee.tinybars);
|
|
290
|
-
expect(op.extra).toEqual({
|
|
291
|
-
memo: "Claiming staking rewards",
|
|
292
|
-
});
|
|
293
|
-
});
|
|
294
139
|
});
|
|
@@ -5,12 +5,8 @@ import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
|
|
|
5
5
|
import { findSubAccountById } from "@ledgerhq/coin-framework/account/helpers";
|
|
6
6
|
import { HEDERA_OPERATION_TYPES, HEDERA_TRANSACTION_MODES } from "../constants";
|
|
7
7
|
import { estimateFees } from "../logic/estimateFees";
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
isTokenAssociateTransaction,
|
|
11
|
-
isStakingTransaction,
|
|
12
|
-
} from "../logic/utils";
|
|
13
|
-
import type { HederaAccount, HederaOperationExtra, Transaction } from "../types";
|
|
8
|
+
import { safeParseAccountId, isTokenAssociateTransaction } from "../logic/utils";
|
|
9
|
+
import type { HederaOperationExtra, Transaction } from "../types";
|
|
14
10
|
|
|
15
11
|
const buildOptimisticTokenAssociateOperation = async ({
|
|
16
12
|
account,
|
|
@@ -204,44 +200,6 @@ const buildOptimisticERC20TokenOperation = async ({
|
|
|
204
200
|
return operation;
|
|
205
201
|
};
|
|
206
202
|
|
|
207
|
-
const buildOptimisticUpdateAccountOperation = async ({
|
|
208
|
-
account,
|
|
209
|
-
transaction,
|
|
210
|
-
}: {
|
|
211
|
-
account: HederaAccount;
|
|
212
|
-
transaction: Transaction;
|
|
213
|
-
}): Promise<Operation> => {
|
|
214
|
-
invariant(isStakingTransaction(transaction), "invalid transaction properties");
|
|
215
|
-
|
|
216
|
-
const estimatedFee = await estimateFees({
|
|
217
|
-
operationType: HEDERA_OPERATION_TYPES.CryptoUpdate,
|
|
218
|
-
currency: account.currency,
|
|
219
|
-
});
|
|
220
|
-
const value = transaction.amount;
|
|
221
|
-
const type: OperationType = "UPDATE_ACCOUNT";
|
|
222
|
-
|
|
223
|
-
const operation: Operation = {
|
|
224
|
-
id: encodeOperationId(account.id, "", type),
|
|
225
|
-
hash: "",
|
|
226
|
-
type,
|
|
227
|
-
value,
|
|
228
|
-
fee: estimatedFee.tinybars,
|
|
229
|
-
blockHash: null,
|
|
230
|
-
blockHeight: null,
|
|
231
|
-
senders: [account.freshAddress.toString()],
|
|
232
|
-
recipients: [transaction.recipient],
|
|
233
|
-
accountId: account.id,
|
|
234
|
-
date: new Date(),
|
|
235
|
-
extra: {
|
|
236
|
-
memo: transaction.memo ?? null,
|
|
237
|
-
targetStakingNodeId: transaction.properties?.stakingNodeId ?? null,
|
|
238
|
-
previousStakingNodeId: account.hederaResources?.delegation?.nodeId ?? null,
|
|
239
|
-
} satisfies Partial<HederaOperationExtra>,
|
|
240
|
-
};
|
|
241
|
-
|
|
242
|
-
return operation;
|
|
243
|
-
};
|
|
244
|
-
|
|
245
203
|
export const buildOptimisticOperation = async ({
|
|
246
204
|
account,
|
|
247
205
|
transaction,
|
|
@@ -261,12 +219,6 @@ export const buildOptimisticOperation = async ({
|
|
|
261
219
|
return buildOptimisticHTSTokenOperation({ account, tokenAccount: subAccount, transaction });
|
|
262
220
|
} else if (isERC20TokenTransaction) {
|
|
263
221
|
return buildOptimisticERC20TokenOperation({ account, tokenAccount: subAccount, transaction });
|
|
264
|
-
} else if (
|
|
265
|
-
transaction.mode === HEDERA_TRANSACTION_MODES.Redelegate ||
|
|
266
|
-
transaction.mode === HEDERA_TRANSACTION_MODES.Undelegate ||
|
|
267
|
-
transaction.mode === HEDERA_TRANSACTION_MODES.Delegate
|
|
268
|
-
) {
|
|
269
|
-
return buildOptimisticUpdateAccountOperation({ account, transaction });
|
|
270
222
|
} else {
|
|
271
223
|
return buildOptimisticCoinOperation({ account, transaction });
|
|
272
224
|
}
|