@ledgerhq/coin-hedera 1.16.0-nightly.20251212024049 → 1.16.0-nightly.20251215100948
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/CHANGELOG.md +12 -10
- package/lib/api/index.d.ts.map +1 -1
- package/lib/api/index.js +4 -3
- package/lib/api/index.js.map +1 -1
- package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib/bridge/buildOptimisticOperation.js +14 -43
- package/lib/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib/constants.d.ts +11 -6
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +20 -1
- package/lib/constants.js.map +1 -1
- package/lib/deviceTransactionConfig.d.ts.map +1 -1
- package/lib/deviceTransactionConfig.js +1 -3
- package/lib/deviceTransactionConfig.js.map +1 -1
- package/lib/logic/getBalance.d.ts.map +1 -1
- package/lib/logic/getBalance.js +21 -4
- package/lib/logic/getBalance.js.map +1 -1
- package/lib/logic/getBlock.d.ts.map +1 -1
- package/lib/logic/getBlock.js +39 -2
- package/lib/logic/getBlock.js.map +1 -1
- package/lib/logic/getValidators.d.ts +3 -0
- package/lib/logic/getValidators.d.ts.map +1 -0
- package/lib/logic/getValidators.js +24 -0
- package/lib/logic/getValidators.js.map +1 -0
- package/lib/logic/index.d.ts +1 -0
- package/lib/logic/index.d.ts.map +1 -1
- package/lib/logic/index.js +3 -1
- package/lib/logic/index.js.map +1 -1
- package/lib/logic/listOperations.d.ts.map +1 -1
- package/lib/logic/listOperations.js +16 -2
- package/lib/logic/listOperations.js.map +1 -1
- package/lib/logic/utils.d.ts +17 -1
- package/lib/logic/utils.d.ts.map +1 -1
- package/lib/logic/utils.js +54 -1
- package/lib/logic/utils.js.map +1 -1
- package/lib/network/api.d.ts +22 -2
- package/lib/network/api.d.ts.map +1 -1
- package/lib/network/api.js +49 -14
- package/lib/network/api.js.map +1 -1
- package/lib/preload.js +2 -2
- package/lib/preload.js.map +1 -1
- package/lib/test/fixtures/account.fixture.d.ts +8 -0
- package/lib/test/fixtures/account.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/account.fixture.js +8 -0
- package/lib/test/fixtures/account.fixture.js.map +1 -1
- package/lib/test/fixtures/mirror.fixture.d.ts +2 -1
- package/lib/test/fixtures/mirror.fixture.d.ts.map +1 -1
- package/lib/test/fixtures/mirror.fixture.js +16 -1
- package/lib/test/fixtures/mirror.fixture.js.map +1 -1
- package/lib/types/bridge.d.ts +1 -0
- package/lib/types/bridge.d.ts.map +1 -1
- package/lib/types/logic.d.ts +6 -0
- package/lib/types/logic.d.ts.map +1 -1
- package/lib-es/api/index.d.ts.map +1 -1
- package/lib-es/api/index.js +5 -4
- package/lib-es/api/index.js.map +1 -1
- package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -1
- package/lib-es/bridge/buildOptimisticOperation.js +15 -44
- package/lib-es/bridge/buildOptimisticOperation.js.map +1 -1
- package/lib-es/constants.d.ts +11 -6
- package/lib-es/constants.d.ts.map +1 -1
- package/lib-es/constants.js +19 -0
- package/lib-es/constants.js.map +1 -1
- package/lib-es/deviceTransactionConfig.d.ts.map +1 -1
- package/lib-es/deviceTransactionConfig.js +2 -4
- package/lib-es/deviceTransactionConfig.js.map +1 -1
- package/lib-es/logic/getBalance.d.ts.map +1 -1
- package/lib-es/logic/getBalance.js +21 -4
- package/lib-es/logic/getBalance.js.map +1 -1
- package/lib-es/logic/getBlock.d.ts.map +1 -1
- package/lib-es/logic/getBlock.js +40 -3
- package/lib-es/logic/getBlock.js.map +1 -1
- package/lib-es/logic/getValidators.d.ts +3 -0
- package/lib-es/logic/getValidators.d.ts.map +1 -0
- package/lib-es/logic/getValidators.js +20 -0
- package/lib-es/logic/getValidators.js.map +1 -0
- package/lib-es/logic/index.d.ts +1 -0
- package/lib-es/logic/index.d.ts.map +1 -1
- package/lib-es/logic/index.js +1 -0
- package/lib-es/logic/index.js.map +1 -1
- package/lib-es/logic/listOperations.d.ts.map +1 -1
- package/lib-es/logic/listOperations.js +17 -3
- package/lib-es/logic/listOperations.js.map +1 -1
- package/lib-es/logic/utils.d.ts +17 -1
- package/lib-es/logic/utils.d.ts.map +1 -1
- package/lib-es/logic/utils.js +52 -1
- package/lib-es/logic/utils.js.map +1 -1
- package/lib-es/network/api.d.ts +22 -2
- package/lib-es/network/api.d.ts.map +1 -1
- package/lib-es/network/api.js +49 -14
- package/lib-es/network/api.js.map +1 -1
- package/lib-es/preload.js +2 -2
- package/lib-es/preload.js.map +1 -1
- package/lib-es/test/fixtures/account.fixture.d.ts +8 -0
- package/lib-es/test/fixtures/account.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/account.fixture.js +8 -0
- package/lib-es/test/fixtures/account.fixture.js.map +1 -1
- package/lib-es/test/fixtures/mirror.fixture.d.ts +2 -1
- package/lib-es/test/fixtures/mirror.fixture.d.ts.map +1 -1
- package/lib-es/test/fixtures/mirror.fixture.js +14 -0
- package/lib-es/test/fixtures/mirror.fixture.js.map +1 -1
- package/lib-es/types/bridge.d.ts +1 -0
- package/lib-es/types/bridge.d.ts.map +1 -1
- package/lib-es/types/logic.d.ts +6 -0
- package/lib-es/types/logic.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/api/index.integ.test.ts +226 -1
- package/src/api/index.test.ts +5 -2
- package/src/api/index.ts +5 -5
- package/src/bridge/{buildOptimisticOperation.integration.test.ts → buildOptimisticOperation.test.ts} +23 -68
- package/src/bridge/buildOptimisticOperation.ts +16 -45
- package/src/constants.ts +23 -1
- package/src/deviceTransactionConfig.test.ts +59 -43
- package/src/deviceTransactionConfig.ts +2 -5
- package/src/logic/getBalance.test.ts +50 -0
- package/src/logic/getBalance.ts +21 -4
- package/src/logic/getBlock.test.ts +283 -1
- package/src/logic/getBlock.ts +57 -6
- package/src/logic/getValidators.test.ts +50 -0
- package/src/logic/getValidators.ts +22 -0
- package/src/logic/index.ts +1 -0
- package/src/logic/listOperations.ts +33 -3
- package/src/logic/utils.test.ts +113 -0
- package/src/logic/utils.ts +67 -1
- package/src/network/api.test.ts +55 -9
- package/src/network/api.ts +66 -14
- package/src/preload.ts +2 -2
- package/src/test/fixtures/account.fixture.ts +8 -0
- package/src/test/fixtures/mirror.fixture.ts +18 -0
- package/src/types/bridge.ts +1 -0
- package/src/types/logic.ts +7 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { HederaMirrorCoinTransfer, HederaMirrorToken, HederaMirrorTokenTransfer } from "../../types";
|
|
1
|
+
import type { HederaMirrorAccount, HederaMirrorCoinTransfer, HederaMirrorToken, HederaMirrorTokenTransfer } from "../../types";
|
|
2
2
|
export declare const getMockedMirrorToken: (overrides?: Partial<HederaMirrorToken>) => HederaMirrorToken;
|
|
3
|
+
export declare const getMockedMirrorAccount: (overrides?: Partial<HederaMirrorAccount>) => HederaMirrorAccount;
|
|
3
4
|
export declare const createMirrorCoinTransfer: (account: string, amount: number) => HederaMirrorCoinTransfer;
|
|
4
5
|
export declare const createMirrorTokenTransfer: (account: string, amount: number, tokenId: string) => HederaMirrorTokenTransfer;
|
|
5
6
|
//# sourceMappingURL=mirror.fixture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mirror.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/mirror.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,oBAAoB,eAAgB,QAAQ,iBAAiB,CAAC,KAAG,iBAW7E,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,UACP,MAAM,KACb,wBAGD,CAAC;AAEH,eAAO,MAAM,yBAAyB,YAC3B,MAAM,UACP,MAAM,WACL,MAAM,KACd,yBAID,CAAC"}
|
|
1
|
+
{"version":3,"file":"mirror.fixture.d.ts","sourceRoot":"","sources":["../../../src/test/fixtures/mirror.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,oBAAoB,eAAgB,QAAQ,iBAAiB,CAAC,KAAG,iBAW7E,CAAC;AAEF,eAAO,MAAM,sBAAsB,eACrB,QAAQ,mBAAmB,CAAC,KACvC,mBAaF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,UACP,MAAM,KACb,wBAGD,CAAC;AAEH,eAAO,MAAM,yBAAyB,YAC3B,MAAM,UACP,MAAM,WACL,MAAM,KACd,yBAID,CAAC"}
|
|
@@ -10,6 +10,20 @@ export const getMockedMirrorToken = (overrides) => {
|
|
|
10
10
|
...overrides,
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
|
+
export const getMockedMirrorAccount = (overrides) => {
|
|
14
|
+
return {
|
|
15
|
+
account: "0.0.12345",
|
|
16
|
+
balance: {
|
|
17
|
+
balance: 1000,
|
|
18
|
+
timestamp: "1764932745.835883000",
|
|
19
|
+
tokens: [],
|
|
20
|
+
},
|
|
21
|
+
max_automatic_token_associations: -1,
|
|
22
|
+
pending_reward: 0,
|
|
23
|
+
staked_node_id: null,
|
|
24
|
+
...overrides,
|
|
25
|
+
};
|
|
26
|
+
};
|
|
13
27
|
export const createMirrorCoinTransfer = (account, amount) => ({
|
|
14
28
|
account,
|
|
15
29
|
amount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mirror.fixture.js","sourceRoot":"","sources":["../../../src/test/fixtures/mirror.fixture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mirror.fixture.js","sourceRoot":"","sources":["../../../src/test/fixtures/mirror.fixture.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAsC,EAAqB,EAAE;IAChG,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,iBAAiB,EAAE,KAAK;QACxB,qBAAqB,EAAE,KAAK;QAC5B,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,aAAa,EAAE,gBAAgB;QAC/B,UAAU,EAAE,gBAAgB;QAC5B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,SAAwC,EACnB,EAAE;IACvB,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,sBAAsB;YACjC,MAAM,EAAE,EAAE;SACX;QACD,gCAAgC,EAAE,CAAC,CAAC;QACpC,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,IAAI;QACpB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,OAAe,EACf,MAAc,EACY,EAAE,CAAC,CAAC;IAC9B,OAAO;IACP,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,OAAe,EACf,MAAc,EACd,OAAe,EACY,EAAE,CAAC,CAAC;IAC/B,QAAQ,EAAE,OAAO;IACjB,OAAO;IACP,MAAM;CACP,CAAC,CAAC"}
|
package/lib-es/types/bridge.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/types/bridge.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/types/bridge.ts"],"names":[],"mappings":"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"}
|
package/lib-es/types/logic.d.ts
CHANGED
|
@@ -40,4 +40,10 @@ export interface OperationDetailsExtraField {
|
|
|
40
40
|
key: string;
|
|
41
41
|
value: string | number;
|
|
42
42
|
}
|
|
43
|
+
export interface StakingAnalysis {
|
|
44
|
+
operationType: OperationType;
|
|
45
|
+
targetStakingNodeId: number | null;
|
|
46
|
+
previousStakingNodeId: number | null;
|
|
47
|
+
stakedAmount: bigint;
|
|
48
|
+
}
|
|
43
49
|
//# sourceMappingURL=logic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../src/types/logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAC1B;IACE,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;CACrF,GACD;IACE,aAAa,EAAE,sBAAsB,CAAC,YAAY,CAAC;IACnD,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,mBAAmB,EAAE,yBAAyB,CAAC;IAC/C,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,kBAAkB,EAAE,8BAA8B,CAAC;IACnD,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../src/types/logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAC1B;IACE,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;CACrF,GACD;IACE,aAAa,EAAE,sBAAsB,CAAC,YAAY,CAAC;IACnD,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,mBAAmB,EAAE,yBAAyB,CAAC;IAC/C,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,kBAAkB,EAAE,8BAA8B,CAAC;IACnD,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-hedera",
|
|
3
|
-
"version": "1.16.0-nightly.
|
|
3
|
+
"version": "1.16.0-nightly.20251215100948",
|
|
4
4
|
"description": "Ledger Hedera Coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -82,15 +82,15 @@
|
|
|
82
82
|
"lodash": "^4.17.21",
|
|
83
83
|
"rxjs": "7.8.2",
|
|
84
84
|
"viem": "^2.27.0",
|
|
85
|
-
"@ledgerhq/coin-framework": "^6.11.0-nightly.
|
|
86
|
-
"@ledgerhq/cryptoassets": "^13.35.0-nightly.
|
|
87
|
-
"@ledgerhq/devices": "8.8.0-nightly.
|
|
88
|
-
"@ledgerhq/errors": "^6.28.0-nightly.
|
|
89
|
-
"@ledgerhq/live-countervalues": "^0.10.2-nightly.
|
|
90
|
-
"@ledgerhq/live-env": "^2.23.0-nightly.
|
|
91
|
-
"@ledgerhq/live-network": "^2.1.3-nightly.
|
|
85
|
+
"@ledgerhq/coin-framework": "^6.11.0-nightly.20251215100948",
|
|
86
|
+
"@ledgerhq/cryptoassets": "^13.35.0-nightly.20251215100948",
|
|
87
|
+
"@ledgerhq/devices": "8.8.0-nightly.20251215100948",
|
|
88
|
+
"@ledgerhq/errors": "^6.28.0-nightly.20251215100948",
|
|
89
|
+
"@ledgerhq/live-countervalues": "^0.10.2-nightly.20251215100948",
|
|
90
|
+
"@ledgerhq/live-env": "^2.23.0-nightly.20251215100948",
|
|
91
|
+
"@ledgerhq/live-network": "^2.1.3-nightly.20251215100948",
|
|
92
92
|
"@ledgerhq/logs": "^6.13.0",
|
|
93
|
-
"@ledgerhq/types-live": "^6.91.0-nightly.
|
|
93
|
+
"@ledgerhq/types-live": "^6.91.0-nightly.20251215100948"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
96
|
"@types/invariant": "^2.2.2",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"jest": "^29.7.0",
|
|
101
101
|
"ts-jest": "^29.1.1",
|
|
102
102
|
"@ledgerhq/disable-network-setup": "^0.1.0",
|
|
103
|
-
"@ledgerhq/types-cryptoassets": "^7.31.0-nightly.
|
|
103
|
+
"@ledgerhq/types-cryptoassets": "^7.31.0-nightly.20251215100948"
|
|
104
104
|
},
|
|
105
105
|
"scripts": {
|
|
106
106
|
"clean": "rimraf lib lib-es",
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
Long,
|
|
8
8
|
TokenAssociateTransaction,
|
|
9
9
|
TransferTransaction,
|
|
10
|
+
AccountUpdateTransaction,
|
|
10
11
|
} from "@hashgraph/sdk";
|
|
11
12
|
import type { FeeEstimation, Pagination } from "@ledgerhq/coin-framework/api/types";
|
|
12
13
|
import { createApi } from "../api";
|
|
@@ -121,6 +122,37 @@ describe("createApi", () => {
|
|
|
121
122
|
expect(rawTx.transactionMemo).toBe("token association");
|
|
122
123
|
});
|
|
123
124
|
|
|
125
|
+
it.each([HEDERA_TRANSACTION_MODES.Delegate, HEDERA_TRANSACTION_MODES.Undelegate])(
|
|
126
|
+
"returns serialized %s transaction",
|
|
127
|
+
async type => {
|
|
128
|
+
const { transaction: hex } = await api.craftTransaction({
|
|
129
|
+
intentType: "transaction",
|
|
130
|
+
asset: {
|
|
131
|
+
type: "native",
|
|
132
|
+
},
|
|
133
|
+
type,
|
|
134
|
+
amount: BigInt(0),
|
|
135
|
+
sender: MAINNET_TEST_ACCOUNTS.withoutTokens.accountId,
|
|
136
|
+
senderPublicKey: MAINNET_TEST_ACCOUNTS.withoutTokens.publicKey,
|
|
137
|
+
recipient: MAINNET_TEST_ACCOUNTS.withoutTokens.accountId,
|
|
138
|
+
memo: {
|
|
139
|
+
kind: "text",
|
|
140
|
+
type: "string",
|
|
141
|
+
value: type,
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
const rawTx = AccountUpdateTransaction.fromBytes(Buffer.from(hex, "hex"));
|
|
146
|
+
|
|
147
|
+
expect(rawTx).toBeInstanceOf(AccountUpdateTransaction);
|
|
148
|
+
invariant(rawTx instanceof AccountUpdateTransaction, "AccountUpdateTransaction type guard");
|
|
149
|
+
expect(rawTx.accountId).toEqual(
|
|
150
|
+
AccountId.fromString(MAINNET_TEST_ACCOUNTS.withoutTokens.accountId),
|
|
151
|
+
);
|
|
152
|
+
expect(rawTx.transactionMemo).toBe(type);
|
|
153
|
+
},
|
|
154
|
+
);
|
|
155
|
+
|
|
124
156
|
it("applies customFees properly", async () => {
|
|
125
157
|
const customFees: FeeEstimation = {
|
|
126
158
|
value: BigInt(1000),
|
|
@@ -220,6 +252,32 @@ describe("createApi", () => {
|
|
|
220
252
|
|
|
221
253
|
expect(fees.value).toBeGreaterThanOrEqual(0n);
|
|
222
254
|
});
|
|
255
|
+
|
|
256
|
+
it.each([
|
|
257
|
+
HEDERA_TRANSACTION_MODES.Delegate,
|
|
258
|
+
HEDERA_TRANSACTION_MODES.Undelegate,
|
|
259
|
+
HEDERA_TRANSACTION_MODES.ClaimRewards,
|
|
260
|
+
HEDERA_TRANSACTION_MODES.Redelegate,
|
|
261
|
+
])("returns fee for %s transaction", async type => {
|
|
262
|
+
const fees = await api.estimateFees({
|
|
263
|
+
intentType: "transaction",
|
|
264
|
+
asset: {
|
|
265
|
+
type: "native",
|
|
266
|
+
},
|
|
267
|
+
type,
|
|
268
|
+
sender: MAINNET_TEST_ACCOUNTS.withoutTokens.accountId,
|
|
269
|
+
senderPublicKey: MAINNET_TEST_ACCOUNTS.withoutTokens.publicKey,
|
|
270
|
+
amount: BigInt(100),
|
|
271
|
+
recipient: MAINNET_TEST_ACCOUNTS.withTokens.accountId,
|
|
272
|
+
memo: {
|
|
273
|
+
kind: "text",
|
|
274
|
+
type: "string",
|
|
275
|
+
value: type,
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
expect(fees.value).toBeGreaterThanOrEqual(0n);
|
|
280
|
+
});
|
|
223
281
|
});
|
|
224
282
|
|
|
225
283
|
describe("getBalance", () => {
|
|
@@ -268,6 +326,29 @@ describe("createApi", () => {
|
|
|
268
326
|
expect(associatedTokenWithoutBalance?.value).toBe(0n);
|
|
269
327
|
expect(notAssociatedToken?.value).toBe(undefined);
|
|
270
328
|
});
|
|
329
|
+
|
|
330
|
+
it("returns stake information for delegated account", async () => {
|
|
331
|
+
const balances = await api.getBalance(MAINNET_TEST_ACCOUNTS.activeStaking.accountId);
|
|
332
|
+
const nativeBalance = balances.find(b => b.asset.type === "native");
|
|
333
|
+
|
|
334
|
+
expect(nativeBalance?.stake).toMatchObject({
|
|
335
|
+
uid: MAINNET_TEST_ACCOUNTS.activeStaking.accountId,
|
|
336
|
+
address: MAINNET_TEST_ACCOUNTS.activeStaking.accountId,
|
|
337
|
+
asset: { type: "native" },
|
|
338
|
+
state: "active",
|
|
339
|
+
amount: expect.any(BigInt),
|
|
340
|
+
amountDeposited: expect.any(BigInt),
|
|
341
|
+
amountRewarded: expect.any(BigInt),
|
|
342
|
+
delegate: expect.any(String),
|
|
343
|
+
});
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
it("returns no stake information for non-delegated account", async () => {
|
|
347
|
+
const balances = await api.getBalance(MAINNET_TEST_ACCOUNTS.inactiveStaking.accountId);
|
|
348
|
+
const nativeBalance = balances.find(b => b.asset.type === "native");
|
|
349
|
+
|
|
350
|
+
expect(nativeBalance?.stake).toBe(undefined);
|
|
351
|
+
});
|
|
271
352
|
});
|
|
272
353
|
|
|
273
354
|
describe("getBlock", () => {
|
|
@@ -304,7 +385,7 @@ describe("createApi", () => {
|
|
|
304
385
|
asset: {
|
|
305
386
|
type: "native",
|
|
306
387
|
},
|
|
307
|
-
amount: -2000000n, // 3176695n
|
|
388
|
+
amount: -2000000n, // -3176695n + 1176695n fee
|
|
308
389
|
},
|
|
309
390
|
{
|
|
310
391
|
type: "transfer",
|
|
@@ -395,6 +476,90 @@ describe("createApi", () => {
|
|
|
395
476
|
|
|
396
477
|
expect(transaction?.details?.memo).toBe("test");
|
|
397
478
|
});
|
|
479
|
+
|
|
480
|
+
it("correctly identifies staking operations in blocks", async () => {
|
|
481
|
+
const [delegateBlock, undelegateBlock, redelegateBlock, rewardsBlock] = await Promise.all([
|
|
482
|
+
api.getBlock(176220207),
|
|
483
|
+
api.getBlock(176220201),
|
|
484
|
+
api.getBlock(176220211),
|
|
485
|
+
api.getBlock(176397349),
|
|
486
|
+
]);
|
|
487
|
+
|
|
488
|
+
const delegateOperations = delegateBlock.transactions
|
|
489
|
+
.flatMap(tx => tx.operations)
|
|
490
|
+
.filter(op => op.type === "other");
|
|
491
|
+
const undelegateOperations = undelegateBlock.transactions
|
|
492
|
+
.flatMap(tx => tx.operations)
|
|
493
|
+
.filter(op => op.type === "other");
|
|
494
|
+
const redelegateOperations = redelegateBlock.transactions
|
|
495
|
+
.flatMap(tx => tx.operations)
|
|
496
|
+
.filter(op => op.type === "other");
|
|
497
|
+
const rewardsTransaction = rewardsBlock.transactions.find(
|
|
498
|
+
tx => tx.hash === "Axie2CIoLVxhU6gcHEDJEdNbQ0BW1AqYXqUu97ume44JGvdfSTvF9go2Svc/lms8",
|
|
499
|
+
);
|
|
500
|
+
|
|
501
|
+
expect(delegateOperations).toEqual([
|
|
502
|
+
{
|
|
503
|
+
type: "other",
|
|
504
|
+
operationType: "DELEGATE",
|
|
505
|
+
stakedNodeId: 34,
|
|
506
|
+
previousStakedNodeId: null,
|
|
507
|
+
stakedAmount: BigInt(21083561014),
|
|
508
|
+
},
|
|
509
|
+
]);
|
|
510
|
+
expect(undelegateOperations).toEqual([
|
|
511
|
+
{
|
|
512
|
+
type: "other",
|
|
513
|
+
operationType: "UNDELEGATE",
|
|
514
|
+
stakedNodeId: null,
|
|
515
|
+
previousStakedNodeId: 22,
|
|
516
|
+
stakedAmount: BigInt(21083561014),
|
|
517
|
+
},
|
|
518
|
+
]);
|
|
519
|
+
expect(redelegateOperations).toEqual([
|
|
520
|
+
{
|
|
521
|
+
type: "other",
|
|
522
|
+
operationType: "REDELEGATE",
|
|
523
|
+
stakedNodeId: 6,
|
|
524
|
+
previousStakedNodeId: 34,
|
|
525
|
+
stakedAmount: BigInt(21083561014),
|
|
526
|
+
},
|
|
527
|
+
]);
|
|
528
|
+
expect(rewardsTransaction?.operations).toEqual([
|
|
529
|
+
{
|
|
530
|
+
type: "transfer",
|
|
531
|
+
address: "0.0.800",
|
|
532
|
+
amount: BigInt(-6013422),
|
|
533
|
+
asset: {
|
|
534
|
+
type: "native",
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
type: "transfer",
|
|
539
|
+
address: "0.0.801",
|
|
540
|
+
amount: BigInt(1968210),
|
|
541
|
+
asset: {
|
|
542
|
+
type: "native",
|
|
543
|
+
},
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
type: "transfer",
|
|
547
|
+
address: "0.0.8835924",
|
|
548
|
+
amount: BigInt(4045212 + 1968210),
|
|
549
|
+
asset: {
|
|
550
|
+
type: "native",
|
|
551
|
+
},
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
type: "transfer",
|
|
555
|
+
address: "0.0.8835924",
|
|
556
|
+
amount: BigInt(6013422),
|
|
557
|
+
asset: {
|
|
558
|
+
type: "native",
|
|
559
|
+
},
|
|
560
|
+
},
|
|
561
|
+
]);
|
|
562
|
+
});
|
|
398
563
|
});
|
|
399
564
|
|
|
400
565
|
describe("lastBlock", () => {
|
|
@@ -485,6 +650,46 @@ describe("createApi", () => {
|
|
|
485
650
|
});
|
|
486
651
|
});
|
|
487
652
|
|
|
653
|
+
it("returns staking operations with correct metadata", async () => {
|
|
654
|
+
const lastPagingToken = "1762202113.000000000";
|
|
655
|
+
const block = await api.lastBlock();
|
|
656
|
+
const [ops] = await api.listOperations(MAINNET_TEST_ACCOUNTS.activeStaking.accountId, {
|
|
657
|
+
minHeight: block.height,
|
|
658
|
+
order: "desc",
|
|
659
|
+
limit: 30,
|
|
660
|
+
lastPagingToken,
|
|
661
|
+
});
|
|
662
|
+
|
|
663
|
+
const rewardOp = ops.find(op => op.type === "REWARD");
|
|
664
|
+
const delegateOp = ops.find(op => op.type === "DELEGATE");
|
|
665
|
+
const undelegateOp = ops.find(op => op.type === "UNDELEGATE");
|
|
666
|
+
const redelegateOp = ops.find(op => op.type === "REDELEGATE");
|
|
667
|
+
|
|
668
|
+
expect(delegateOp?.value).toBeGreaterThan(BigInt(0));
|
|
669
|
+
expect(delegateOp?.tx.fees).toBeGreaterThan(BigInt(0));
|
|
670
|
+
expect(delegateOp?.details).toMatchObject({
|
|
671
|
+
previousStakingNodeId: null,
|
|
672
|
+
targetStakingNodeId: expect.any(Number),
|
|
673
|
+
stakedAmount: expect.any(BigInt),
|
|
674
|
+
});
|
|
675
|
+
expect(undelegateOp?.value).toBeGreaterThan(BigInt(0));
|
|
676
|
+
expect(undelegateOp?.tx.fees).toBeGreaterThan(BigInt(0));
|
|
677
|
+
expect(undelegateOp?.details).toMatchObject({
|
|
678
|
+
previousStakingNodeId: expect.any(Number),
|
|
679
|
+
targetStakingNodeId: null,
|
|
680
|
+
stakedAmount: expect.any(BigInt),
|
|
681
|
+
});
|
|
682
|
+
expect(redelegateOp?.value).toBeGreaterThan(BigInt(0));
|
|
683
|
+
expect(redelegateOp?.tx.fees).toBeGreaterThan(BigInt(0));
|
|
684
|
+
expect(redelegateOp?.details).toMatchObject({
|
|
685
|
+
previousStakingNodeId: expect.any(Number),
|
|
686
|
+
targetStakingNodeId: expect.any(Number),
|
|
687
|
+
stakedAmount: expect.any(BigInt),
|
|
688
|
+
});
|
|
689
|
+
expect(rewardOp?.value).toBeGreaterThan(BigInt(0));
|
|
690
|
+
expect(rewardOp?.tx.fees).toBe(BigInt(0));
|
|
691
|
+
});
|
|
692
|
+
|
|
488
693
|
it.each(["desc", "asc"] as const)(
|
|
489
694
|
"returns paginated operations for account with high activity (%s)",
|
|
490
695
|
async order => {
|
|
@@ -533,4 +738,24 @@ describe("createApi", () => {
|
|
|
533
738
|
},
|
|
534
739
|
);
|
|
535
740
|
});
|
|
741
|
+
|
|
742
|
+
describe("getValidators", () => {
|
|
743
|
+
it("returns validators with APY information", async () => {
|
|
744
|
+
const result = await api.getValidators();
|
|
745
|
+
|
|
746
|
+
expect(result.items.length).toBeGreaterThan(0);
|
|
747
|
+
result.items.forEach(item => {
|
|
748
|
+
expect(item).toMatchObject({
|
|
749
|
+
address: expect.any(String),
|
|
750
|
+
nodeId: expect.any(String),
|
|
751
|
+
name: expect.any(String),
|
|
752
|
+
description: expect.any(String),
|
|
753
|
+
balance: expect.any(BigInt),
|
|
754
|
+
apy: expect.any(Number),
|
|
755
|
+
});
|
|
756
|
+
expect(item.apy).toBeGreaterThanOrEqual(0);
|
|
757
|
+
expect(item.apy).toBeLessThanOrEqual(1);
|
|
758
|
+
});
|
|
759
|
+
});
|
|
760
|
+
});
|
|
536
761
|
});
|
package/src/api/index.test.ts
CHANGED
|
@@ -21,10 +21,13 @@ describe("createApi", () => {
|
|
|
21
21
|
expect(api.combine).toBeInstanceOf(Function);
|
|
22
22
|
expect(api.craftTransaction).toBeInstanceOf(Function);
|
|
23
23
|
expect(api.estimateFees).toBeInstanceOf(Function);
|
|
24
|
+
expect(api.getAssetFromToken).toBeInstanceOf(Function);
|
|
24
25
|
expect(api.getBalance).toBeInstanceOf(Function);
|
|
26
|
+
expect(api.getBlock).toBeInstanceOf(Function);
|
|
27
|
+
expect(api.getBlockInfo).toBeInstanceOf(Function);
|
|
28
|
+
expect(api.getTokenFromAsset).toBeInstanceOf(Function);
|
|
29
|
+
expect(api.getValidators).toBeInstanceOf(Function);
|
|
25
30
|
expect(api.lastBlock).toBeInstanceOf(Function);
|
|
26
31
|
expect(api.listOperations).toBeInstanceOf(Function);
|
|
27
|
-
expect(api.getAssetFromToken).toBeInstanceOf(Function);
|
|
28
|
-
expect(api.getTokenFromAsset).toBeInstanceOf(Function);
|
|
29
32
|
});
|
|
30
33
|
});
|
package/src/api/index.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
Api,
|
|
3
3
|
CraftedTransaction,
|
|
4
|
-
Cursor,
|
|
5
4
|
Operation,
|
|
6
5
|
Page,
|
|
7
6
|
Reward,
|
|
8
7
|
Stake,
|
|
9
8
|
TransactionValidation,
|
|
10
|
-
Validator,
|
|
11
9
|
} from "@ledgerhq/coin-framework/api/index";
|
|
12
10
|
import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies";
|
|
13
11
|
import coinConfig from "../config";
|
|
@@ -24,6 +22,7 @@ import {
|
|
|
24
22
|
getAssetFromToken,
|
|
25
23
|
getTokenFromAsset,
|
|
26
24
|
lastBlock,
|
|
25
|
+
getValidators,
|
|
27
26
|
} from "../logic/index";
|
|
28
27
|
import { mapIntentToSDKOperation, getOperationValue } from "../logic/utils";
|
|
29
28
|
import { apiClient } from "../network/api";
|
|
@@ -116,6 +115,9 @@ export function createApi(config: Record<string, never>): Api<HederaMemo> {
|
|
|
116
115
|
...liveOp.extra,
|
|
117
116
|
ledgerOpType: liveOp.type,
|
|
118
117
|
...(asset.type !== "native" && { assetAmount: liveOp.value.toFixed(0) }),
|
|
118
|
+
...(liveOp.extra.stakedAmount && {
|
|
119
|
+
stakedAmount: BigInt(liveOp.extra.stakedAmount.toFixed(0)),
|
|
120
|
+
}),
|
|
119
121
|
},
|
|
120
122
|
tx: {
|
|
121
123
|
hash: liveOp.hash,
|
|
@@ -133,6 +135,7 @@ export function createApi(config: Record<string, never>): Api<HederaMemo> {
|
|
|
133
135
|
},
|
|
134
136
|
getTokenFromAsset: asset => getTokenFromAsset(currency, asset),
|
|
135
137
|
getAssetFromToken,
|
|
138
|
+
getValidators: cursor => getValidators(cursor),
|
|
136
139
|
validateIntent: async (_transactionIntent, _customFees): Promise<TransactionValidation> => {
|
|
137
140
|
throw new Error("validateIntent is not supported");
|
|
138
141
|
},
|
|
@@ -145,8 +148,5 @@ export function createApi(config: Record<string, never>): Api<HederaMemo> {
|
|
|
145
148
|
getRewards: async (_address, _cursor): Promise<Page<Reward>> => {
|
|
146
149
|
throw new Error("getRewards is not supported");
|
|
147
150
|
},
|
|
148
|
-
getValidators(_cursor?: Cursor): Promise<Page<Validator>> {
|
|
149
|
-
throw new Error("getValidators is not supported");
|
|
150
|
-
},
|
|
151
151
|
};
|
|
152
152
|
}
|