@ledgerhq/coin-aptos 2.2.0 → 2.2.1-nightly.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/CHANGELOG.md +8 -0
- package/lib/__tests__/api/getBalance.unit.test.js +68 -28
- package/lib/__tests__/api/getBalance.unit.test.js.map +1 -1
- package/lib/__tests__/api/index.integ.test.js +16 -4
- package/lib/__tests__/api/index.integ.test.js.map +1 -1
- package/lib/__tests__/bridge/synchronisation.test.js +15 -6
- package/lib/__tests__/bridge/synchronisation.test.js.map +1 -1
- package/lib/__tests__/logic/getBalances.test.d.ts +2 -0
- package/lib/__tests__/logic/getBalances.test.d.ts.map +1 -0
- package/lib/__tests__/logic/getBalances.test.js +63 -0
- package/lib/__tests__/logic/getBalances.test.js.map +1 -0
- package/lib/__tests__/network/client.test.js +63 -63
- package/lib/__tests__/network/client.test.js.map +1 -1
- package/lib/api/index.js +2 -2
- package/lib/api/index.js.map +1 -1
- package/lib/bridge/synchronisation.d.ts.map +1 -1
- package/lib/bridge/synchronisation.js +7 -2
- package/lib/bridge/synchronisation.js.map +1 -1
- package/lib/logic/getBalances.d.ts +5 -0
- package/lib/logic/getBalances.d.ts.map +1 -0
- package/lib/logic/getBalances.js +21 -0
- package/lib/logic/getBalances.js.map +1 -0
- package/lib/network/client.d.ts +1 -5
- package/lib/network/client.d.ts.map +1 -1
- package/lib/network/client.js +25 -60
- package/lib/network/client.js.map +1 -1
- package/lib-es/__tests__/api/getBalance.unit.test.js +69 -26
- package/lib-es/__tests__/api/getBalance.unit.test.js.map +1 -1
- package/lib-es/__tests__/api/index.integ.test.js +16 -4
- package/lib-es/__tests__/api/index.integ.test.js.map +1 -1
- package/lib-es/__tests__/bridge/synchronisation.test.js +15 -6
- package/lib-es/__tests__/bridge/synchronisation.test.js.map +1 -1
- package/lib-es/__tests__/logic/getBalances.test.d.ts +2 -0
- package/lib-es/__tests__/logic/getBalances.test.d.ts.map +1 -0
- package/lib-es/__tests__/logic/getBalances.test.js +61 -0
- package/lib-es/__tests__/logic/getBalances.test.js.map +1 -0
- package/lib-es/__tests__/network/client.test.js +63 -63
- package/lib-es/__tests__/network/client.test.js.map +1 -1
- package/lib-es/api/index.js +2 -2
- package/lib-es/api/index.js.map +1 -1
- package/lib-es/bridge/synchronisation.d.ts.map +1 -1
- package/lib-es/bridge/synchronisation.js +4 -2
- package/lib-es/bridge/synchronisation.js.map +1 -1
- package/lib-es/logic/getBalances.d.ts +5 -0
- package/lib-es/logic/getBalances.d.ts.map +1 -0
- package/lib-es/logic/getBalances.js +17 -0
- package/lib-es/logic/getBalances.js.map +1 -0
- package/lib-es/network/client.d.ts +1 -5
- package/lib-es/network/client.d.ts.map +1 -1
- package/lib-es/network/client.js +25 -60
- package/lib-es/network/client.js.map +1 -1
- package/package.json +5 -5
- package/src/__tests__/api/craftTransaction.unit.test.ts +1 -1
- package/src/__tests__/api/getBalance.unit.test.ts +82 -28
- package/src/__tests__/api/index.integ.test.ts +19 -4
- package/src/__tests__/bridge/synchronisation.test.ts +21 -6
- package/src/__tests__/logic/getBalances.test.ts +80 -0
- package/src/__tests__/network/client.test.ts +70 -79
- package/src/api/index.ts +2 -2
- package/src/bridge/synchronisation.ts +4 -2
- package/src/logic/getBalances.ts +27 -0
- package/src/network/client.ts +26 -64
- package/lib/logic/getBalance.d.ts +0 -5
- package/lib/logic/getBalance.d.ts.map +0 -1
- package/lib/logic/getBalance.js +0 -12
- package/lib/logic/getBalance.js.map +0 -1
- package/lib-es/logic/getBalance.d.ts +0 -5
- package/lib-es/logic/getBalance.d.ts.map +0 -1
- package/lib-es/logic/getBalance.js +0 -8
- package/lib-es/logic/getBalance.js.map +0 -1
- package/src/logic/getBalance.ts +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/network/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAEL,KAAK,EACL,WAAW,EACX,gBAAgB,EAIhB,QAAQ,EAOR,GAAG,EACH,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/network/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-aptos",
|
|
3
|
-
"version": "2.2.0",
|
|
3
|
+
"version": "2.2.1-nightly.0",
|
|
4
4
|
"description": "Ledger Aptos Coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -90,14 +90,14 @@
|
|
|
90
90
|
"invariant": "^2.2.4",
|
|
91
91
|
"lodash": "^4.17.21",
|
|
92
92
|
"rxjs": "^7.8.1",
|
|
93
|
-
"@ledgerhq/coin-framework": "^5.3.0",
|
|
93
|
+
"@ledgerhq/coin-framework": "^5.3.1-nightly.0",
|
|
94
94
|
"@ledgerhq/cryptoassets": "^13.18.1",
|
|
95
|
-
"@ledgerhq/devices": "8.4.
|
|
96
|
-
"@ledgerhq/errors": "^6.
|
|
95
|
+
"@ledgerhq/devices": "8.4.7-nightly.0",
|
|
96
|
+
"@ledgerhq/errors": "^6.22.0-nightly.0",
|
|
97
97
|
"@ledgerhq/live-env": "^2.10.0",
|
|
98
98
|
"@ledgerhq/live-network": "^2.0.10",
|
|
99
99
|
"@ledgerhq/logs": "^6.13.0",
|
|
100
|
-
"@ledgerhq/types-live": "^6.
|
|
100
|
+
"@ledgerhq/types-live": "^6.74.0-nightly.0"
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
103
|
"@faker-js/faker": "^9.4.0",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Hex, RawTransaction, Deserializer } from "@aptos-labs/ts-sdk";
|
|
2
|
-
import type { TransactionIntent } from "@ledgerhq/coin-framework/
|
|
2
|
+
import type { TransactionIntent } from "@ledgerhq/coin-framework/api/types";
|
|
3
3
|
import { createApi } from "../../api";
|
|
4
4
|
import type { AptosAsset, AptosExtra, AptosSender } from "../../types/assets";
|
|
5
5
|
import { AptosAPI } from "../../network";
|
|
@@ -1,44 +1,98 @@
|
|
|
1
1
|
import { AptosAPI } from "../../network";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
jest.mock("../../network", () => {
|
|
7
|
-
return {
|
|
8
|
-
AptosAPI: jest.fn().mockImplementation(() => ({
|
|
9
|
-
getBalances: jest.fn(),
|
|
10
|
-
})),
|
|
11
|
-
};
|
|
12
|
-
});
|
|
2
|
+
import { APTOS_ASSET_ID, TOKEN_TYPE } from "../../constants";
|
|
3
|
+
import type { AptosConfig } from "../../config";
|
|
4
|
+
import { createApi } from "../../api";
|
|
13
5
|
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
jest.mock("@aptos-labs/ts-sdk");
|
|
7
|
+
let mockedAptosApi: jest.Mocked<any>;
|
|
8
|
+
jest.mock("../../network");
|
|
9
|
+
jest.mock("../../config", () => ({
|
|
10
|
+
setCoinConfig: jest.fn(),
|
|
11
|
+
}));
|
|
16
12
|
|
|
13
|
+
const mockAptosConfig: AptosConfig = {} as AptosConfig;
|
|
14
|
+
|
|
15
|
+
describe("getBalance", () => {
|
|
17
16
|
beforeEach(() => {
|
|
18
|
-
jest.
|
|
17
|
+
mockedAptosApi = jest.mocked(AptosAPI);
|
|
18
|
+
});
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
jest.resetAllMocks();
|
|
22
|
+
});
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
it("should return balance with value 10", async () => {
|
|
25
|
+
mockedAptosApi.mockImplementation(() => ({
|
|
26
|
+
getBalances: jest.fn().mockResolvedValue([{ contractAddress: APTOS_ASSET_ID, amount: 10n }]),
|
|
26
27
|
}));
|
|
28
|
+
|
|
29
|
+
const api = createApi(mockAptosConfig);
|
|
30
|
+
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
31
|
+
|
|
32
|
+
expect(await api.getBalance(accountAddress)).toStrictEqual([
|
|
33
|
+
{ value: 10n, asset: { type: "native" } },
|
|
34
|
+
]);
|
|
27
35
|
});
|
|
28
36
|
|
|
29
|
-
|
|
30
|
-
|
|
37
|
+
it("should return empty array when no contract_address and no data", async () => {
|
|
38
|
+
mockedAptosApi.mockImplementation(() => ({
|
|
39
|
+
getBalances: jest.fn().mockResolvedValue([]),
|
|
40
|
+
}));
|
|
41
|
+
|
|
42
|
+
const accountAddress = "0xno_contract_and_no_data";
|
|
43
|
+
|
|
44
|
+
const api = createApi(mockAptosConfig);
|
|
45
|
+
expect(await api.getBalance(accountAddress)).toStrictEqual([]);
|
|
31
46
|
});
|
|
32
47
|
|
|
33
|
-
it("should
|
|
34
|
-
|
|
48
|
+
it("should return balance with 'native' contract_address (APTOS_ASSET_ID)", async () => {
|
|
49
|
+
mockedAptosApi.mockImplementation(() => ({
|
|
50
|
+
getBalances: jest.fn().mockResolvedValue([{ contractAddress: APTOS_ASSET_ID, amount: 15n }]),
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
const api = createApi(mockAptosConfig);
|
|
54
|
+
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
55
|
+
|
|
56
|
+
expect(await api.getBalance(accountAddress)).toStrictEqual([
|
|
57
|
+
{ value: 15n, asset: { type: "native" } },
|
|
58
|
+
]);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("should return token balance when contract_address is a coin token", async () => {
|
|
62
|
+
const TOKEN_ASSET_ID = "0x1::my_token::Token";
|
|
63
|
+
mockedAptosApi.mockImplementation(() => ({
|
|
64
|
+
getBalances: jest.fn().mockResolvedValue([{ contractAddress: TOKEN_ASSET_ID, amount: 25n }]),
|
|
65
|
+
}));
|
|
66
|
+
|
|
67
|
+
const api = createApi(mockAptosConfig);
|
|
68
|
+
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
69
|
+
|
|
70
|
+
expect(await api.getBalance(accountAddress)).toStrictEqual([
|
|
71
|
+
{
|
|
72
|
+
value: 25n,
|
|
73
|
+
asset: { type: "token", contractAddress: TOKEN_ASSET_ID, standard: TOKEN_TYPE.COIN },
|
|
74
|
+
},
|
|
75
|
+
]);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it("should return token balance when contract_address is a fungible_asset token", async () => {
|
|
79
|
+
const TOKEN_ASSET_ID = "0x1";
|
|
80
|
+
mockedAptosApi.mockImplementation(() => ({
|
|
81
|
+
getBalances: jest.fn().mockResolvedValue([{ contractAddress: TOKEN_ASSET_ID, amount: 25n }]),
|
|
82
|
+
}));
|
|
35
83
|
|
|
84
|
+
const api = createApi(mockAptosConfig);
|
|
36
85
|
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
37
|
-
const client = new AptosAPI("aptos");
|
|
38
|
-
const balance = await getBalance(client, accountAddress);
|
|
39
86
|
|
|
40
|
-
expect(
|
|
41
|
-
|
|
42
|
-
|
|
87
|
+
expect(await api.getBalance(accountAddress)).toStrictEqual([
|
|
88
|
+
{
|
|
89
|
+
value: 25n,
|
|
90
|
+
asset: {
|
|
91
|
+
type: "token",
|
|
92
|
+
contractAddress: TOKEN_ASSET_ID,
|
|
93
|
+
standard: TOKEN_TYPE.FUNGIBLE_ASSET,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
]);
|
|
43
97
|
});
|
|
44
98
|
});
|
|
@@ -12,6 +12,8 @@ describe("createApi", () => {
|
|
|
12
12
|
indexer: getEnv("APTOS_INDEXER_ENDPOINT"),
|
|
13
13
|
},
|
|
14
14
|
});
|
|
15
|
+
const assetTypeNative = "native";
|
|
16
|
+
const assetTypeToken = "token";
|
|
15
17
|
|
|
16
18
|
const sender: AptosSender = {
|
|
17
19
|
xpub: "0x934887885b27a0407bf8a5e0bbc6b6371254bea94de5510e948bcc92dc0a519b",
|
|
@@ -204,12 +206,25 @@ describe("createApi", () => {
|
|
|
204
206
|
});
|
|
205
207
|
});
|
|
206
208
|
|
|
207
|
-
describe("
|
|
208
|
-
it("
|
|
209
|
+
describe("getBalances", () => {
|
|
210
|
+
it("returned balances should have one native asset", async () => {
|
|
209
211
|
const balances = await api.getBalance(sender.freshAddress);
|
|
212
|
+
const nativeBalance = balances.filter(b => b.asset.type === assetTypeNative);
|
|
213
|
+
expect(nativeBalance.length).toBe(1);
|
|
214
|
+
expect(nativeBalance[0].value).toBeGreaterThan(0);
|
|
215
|
+
});
|
|
210
216
|
|
|
211
|
-
|
|
212
|
-
|
|
217
|
+
it("returned balances should have a token asset", async () => {
|
|
218
|
+
const balances = await api.getBalance(tokenAccount.freshAddress);
|
|
219
|
+
const tokenBalances = balances.filter(
|
|
220
|
+
b =>
|
|
221
|
+
b.asset.type === assetTypeToken &&
|
|
222
|
+
b.asset.contractAddress ===
|
|
223
|
+
"0x2ebb2ccac5e027a87fa0e2e5f656a3a4238d6a48d93ec9b610d570fc0aa0df12",
|
|
224
|
+
);
|
|
225
|
+
expect(tokenBalances.length).toBeGreaterThan(0);
|
|
226
|
+
expect(balances.length).toBeGreaterThan(1);
|
|
227
|
+
expect(balances[0].value).toBeGreaterThan(0);
|
|
213
228
|
});
|
|
214
229
|
});
|
|
215
230
|
|
|
@@ -798,10 +798,15 @@ describe("getAccountShape", () => {
|
|
|
798
798
|
blockHeight: 316278241,
|
|
799
799
|
}));
|
|
800
800
|
|
|
801
|
-
const
|
|
801
|
+
const TOKEN_CONTRACT_ADDRESS = "0xd111::staked_coin::StakedAptos";
|
|
802
|
+
|
|
803
|
+
const mockGetBalances = jest
|
|
804
|
+
.fn()
|
|
805
|
+
.mockResolvedValue([{ contractAddress: TOKEN_CONTRACT_ADDRESS, amount: BigNumber(1234567) }]);
|
|
806
|
+
|
|
802
807
|
mockedAptosAPI.mockImplementation(() => ({
|
|
808
|
+
getBalances: mockGetBalances,
|
|
803
809
|
getAccountInfo: mockGetAccountInfo,
|
|
804
|
-
getBalance: mockGetBalance,
|
|
805
810
|
}));
|
|
806
811
|
|
|
807
812
|
const mockGetAccountSpy = jest.spyOn({ getAccount: mockGetAccountInfo }, "getAccount");
|
|
@@ -1312,9 +1317,14 @@ describe("getSubAccountShape", () => {
|
|
|
1312
1317
|
] as Operation[];
|
|
1313
1318
|
|
|
1314
1319
|
it("returns the correct information", async () => {
|
|
1315
|
-
const
|
|
1320
|
+
const TOKEN_CONTRACT_ADDRESS = "0xd111::staked_coin::StakedAptos";
|
|
1321
|
+
|
|
1322
|
+
const mockGetBalances = jest
|
|
1323
|
+
.fn()
|
|
1324
|
+
.mockResolvedValue([{ contractAddress: TOKEN_CONTRACT_ADDRESS, amount: BigNumber(1234567) }]);
|
|
1325
|
+
|
|
1316
1326
|
mockedAptosAPI.mockImplementation(() => ({
|
|
1317
|
-
|
|
1327
|
+
getBalances: mockGetBalances,
|
|
1318
1328
|
}));
|
|
1319
1329
|
|
|
1320
1330
|
const subAccount = await getSubAccountShape(currency, address, parentId, token, operations);
|
|
@@ -1421,9 +1431,14 @@ describe("getSubAccounts", () => {
|
|
|
1421
1431
|
] as Operation[];
|
|
1422
1432
|
|
|
1423
1433
|
it("returns the correct information", async () => {
|
|
1424
|
-
const
|
|
1434
|
+
const TOKEN_CONTRACT_ADDRESS = "0xd111::staked_coin::StakedAptos";
|
|
1435
|
+
|
|
1436
|
+
const mockGetBalances = jest
|
|
1437
|
+
.fn()
|
|
1438
|
+
.mockResolvedValue([{ contractAddress: TOKEN_CONTRACT_ADDRESS, amount: BigNumber(1234567) }]);
|
|
1439
|
+
|
|
1425
1440
|
mockedAptosAPI.mockImplementation(() => ({
|
|
1426
|
-
|
|
1441
|
+
getBalances: mockGetBalances,
|
|
1427
1442
|
}));
|
|
1428
1443
|
|
|
1429
1444
|
mockedDecodeTokenAccountId.mockReturnValue({
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { getBalances } from "../../logic/getBalances";
|
|
2
|
+
import { APTOS_ASSET_ID, TOKEN_TYPE } from "../../constants";
|
|
3
|
+
import type { AptosAPI } from "../../network";
|
|
4
|
+
|
|
5
|
+
describe("getBalance", () => {
|
|
6
|
+
it("should return balance with value 10", async () => {
|
|
7
|
+
const mockAptosClient = {
|
|
8
|
+
getBalances: jest.fn().mockResolvedValue([{ contractAddress: APTOS_ASSET_ID, amount: 10n }]),
|
|
9
|
+
} as Partial<AptosAPI> as AptosAPI;
|
|
10
|
+
|
|
11
|
+
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
12
|
+
|
|
13
|
+
const balances = await getBalances(mockAptosClient, accountAddress);
|
|
14
|
+
|
|
15
|
+
expect(balances).toStrictEqual([{ value: 10n, asset: { type: "native" } }]);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("should return empty array when no contract_address and no data", async () => {
|
|
19
|
+
const mockAptosClient = {
|
|
20
|
+
getBalances: jest.fn().mockResolvedValue([]),
|
|
21
|
+
} as Partial<AptosAPI> as AptosAPI;
|
|
22
|
+
|
|
23
|
+
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
24
|
+
|
|
25
|
+
const balances = await getBalances(mockAptosClient, accountAddress);
|
|
26
|
+
expect(balances).toStrictEqual([]);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("should return balance with 'native' contract_address (APTOS_ASSET_ID)", async () => {
|
|
30
|
+
const mockAptosClient = {
|
|
31
|
+
getBalances: jest.fn().mockResolvedValue([{ contractAddress: APTOS_ASSET_ID, amount: 10n }]),
|
|
32
|
+
} as Partial<AptosAPI> as AptosAPI;
|
|
33
|
+
|
|
34
|
+
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
35
|
+
|
|
36
|
+
const balances = await getBalances(mockAptosClient, accountAddress);
|
|
37
|
+
|
|
38
|
+
expect(balances).toStrictEqual([{ value: 10n, asset: { type: "native" } }]);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("should return token balance when contract_address is a coin token", async () => {
|
|
42
|
+
const TOKEN_ASSET_ID = "0x1::my_token::Token";
|
|
43
|
+
const mockAptosClient = {
|
|
44
|
+
getBalances: jest.fn().mockResolvedValue([{ contractAddress: TOKEN_ASSET_ID, amount: 25n }]),
|
|
45
|
+
} as Partial<AptosAPI> as AptosAPI;
|
|
46
|
+
|
|
47
|
+
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
48
|
+
|
|
49
|
+
const balances = await getBalances(mockAptosClient, accountAddress);
|
|
50
|
+
|
|
51
|
+
expect(balances).toStrictEqual([
|
|
52
|
+
{
|
|
53
|
+
value: 25n,
|
|
54
|
+
asset: { type: "token", contractAddress: TOKEN_ASSET_ID, standard: TOKEN_TYPE.COIN },
|
|
55
|
+
},
|
|
56
|
+
]);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("should return token balance when contract_address is a fungible_asset token", async () => {
|
|
60
|
+
const TOKEN_ASSET_ID = "0x1";
|
|
61
|
+
const mockAptosClient = {
|
|
62
|
+
getBalances: jest.fn().mockResolvedValue([{ contractAddress: TOKEN_ASSET_ID, amount: 25n }]),
|
|
63
|
+
} as Partial<AptosAPI> as AptosAPI;
|
|
64
|
+
|
|
65
|
+
const accountAddress = "0x4be47904b31063d60ac0dfde06e5dc203e647edbe853bae0e666ae5a763c3906";
|
|
66
|
+
|
|
67
|
+
const balances = await getBalances(mockAptosClient, accountAddress);
|
|
68
|
+
|
|
69
|
+
expect(balances).toStrictEqual([
|
|
70
|
+
{
|
|
71
|
+
value: 25n,
|
|
72
|
+
asset: {
|
|
73
|
+
type: "token",
|
|
74
|
+
contractAddress: TOKEN_ASSET_ID,
|
|
75
|
+
standard: TOKEN_TYPE.FUNGIBLE_ASSET,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
]);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
@@ -16,9 +16,8 @@ import BigNumber from "bignumber.js";
|
|
|
16
16
|
import { AptosAPI } from "../../network";
|
|
17
17
|
import { AptosAsset, AptosExtra, AptosSender } from "../../types/assets";
|
|
18
18
|
import { Pagination, TransactionIntent } from "@ledgerhq/coin-framework/api/types";
|
|
19
|
-
import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
|
|
20
19
|
import { APTOS_ASSET_ID } from "../../constants";
|
|
21
|
-
import { AptosTransaction } from "../../types";
|
|
20
|
+
import { AptosBalance, AptosTransaction } from "../../types";
|
|
22
21
|
|
|
23
22
|
jest.mock("@aptos-labs/ts-sdk");
|
|
24
23
|
jest.mock("@apollo/client");
|
|
@@ -96,75 +95,6 @@ describe("Aptos API", () => {
|
|
|
96
95
|
});
|
|
97
96
|
});
|
|
98
97
|
|
|
99
|
-
describe("getBalance", () => {
|
|
100
|
-
let token: TokenCurrency;
|
|
101
|
-
|
|
102
|
-
beforeEach(() => {
|
|
103
|
-
token = {
|
|
104
|
-
type: "TokenCurrency",
|
|
105
|
-
id: "aptos_token",
|
|
106
|
-
name: "Aptos Token",
|
|
107
|
-
ticker: "APT",
|
|
108
|
-
units: [{ name: "APT", code: "APT", magnitude: 6 }],
|
|
109
|
-
contractAddress: "APTOS_1_ADDRESS",
|
|
110
|
-
tokenType: "fungible_asset",
|
|
111
|
-
parentCurrency: {
|
|
112
|
-
type: "CryptoCurrency",
|
|
113
|
-
id: "aptos",
|
|
114
|
-
name: "Aptos",
|
|
115
|
-
ticker: "APT",
|
|
116
|
-
units: [{ name: "APT", code: "APT", magnitude: 6 }],
|
|
117
|
-
color: "#000000",
|
|
118
|
-
family: "aptos",
|
|
119
|
-
scheme: "aptos",
|
|
120
|
-
explorerViews: [],
|
|
121
|
-
managerAppName: "Aptos",
|
|
122
|
-
coinType: 637,
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it("get coin balance", async () => {
|
|
128
|
-
mockedAptos.mockImplementation(() => ({
|
|
129
|
-
view: jest.fn().mockReturnValue(["1234"]),
|
|
130
|
-
}));
|
|
131
|
-
|
|
132
|
-
token.tokenType = "coin";
|
|
133
|
-
const api = new AptosAPI("aptos");
|
|
134
|
-
const balance = await api.getBalance("address", token);
|
|
135
|
-
|
|
136
|
-
expect(balance).toEqual(new BigNumber(1234));
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
it("get fungible assets balance", async () => {
|
|
140
|
-
mockedAptos.mockImplementation(() => ({
|
|
141
|
-
view: jest.fn().mockReturnValue(["12345"]),
|
|
142
|
-
}));
|
|
143
|
-
|
|
144
|
-
token.tokenType = "fungible_asset";
|
|
145
|
-
|
|
146
|
-
const api = new AptosAPI("aptos");
|
|
147
|
-
const balance = await api.getBalance("address", token);
|
|
148
|
-
|
|
149
|
-
expect(balance).toEqual(new BigNumber(12345));
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
it("return 0 balace if could not retrieve proper balance of fungible assets", async () => {
|
|
153
|
-
mockedAptos.mockImplementation(() => ({
|
|
154
|
-
view: jest.fn().mockImplementation(() => {
|
|
155
|
-
throw new Error("error");
|
|
156
|
-
}),
|
|
157
|
-
}));
|
|
158
|
-
|
|
159
|
-
token.tokenType = "fungible_asset";
|
|
160
|
-
|
|
161
|
-
const api = new AptosAPI("aptos");
|
|
162
|
-
const balance = await api.getBalance("address", token);
|
|
163
|
-
|
|
164
|
-
expect(balance).toEqual(new BigNumber(0));
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
|
|
168
98
|
describe("getAccountInfo", () => {
|
|
169
99
|
it("calls getCoinBalance, fetchTransactions and getHeight", async () => {
|
|
170
100
|
mockedAptos.mockImplementation(() => ({
|
|
@@ -177,6 +107,12 @@ describe("Aptos API", () => {
|
|
|
177
107
|
block_height: "1",
|
|
178
108
|
block_hash: "83ca6d",
|
|
179
109
|
}),
|
|
110
|
+
getCurrentFungibleAssetBalances: jest.fn().mockResolvedValue([
|
|
111
|
+
{
|
|
112
|
+
asset_type: APTOS_ASSET_ID,
|
|
113
|
+
amount: new BigNumber(123),
|
|
114
|
+
},
|
|
115
|
+
]),
|
|
180
116
|
}));
|
|
181
117
|
|
|
182
118
|
mockedNetwork.mockResolvedValue(
|
|
@@ -307,6 +243,12 @@ describe("Aptos API", () => {
|
|
|
307
243
|
block_height: "1",
|
|
308
244
|
block_hash: "83ca6d",
|
|
309
245
|
}),
|
|
246
|
+
getCurrentFungibleAssetBalances: jest.fn().mockResolvedValue([
|
|
247
|
+
{
|
|
248
|
+
asset_type: APTOS_ASSET_ID,
|
|
249
|
+
amount: new BigNumber(123),
|
|
250
|
+
},
|
|
251
|
+
]),
|
|
310
252
|
}));
|
|
311
253
|
|
|
312
254
|
mockedNetwork.mockResolvedValue(
|
|
@@ -361,6 +303,12 @@ describe("Aptos API", () => {
|
|
|
361
303
|
block_height: "1",
|
|
362
304
|
block_hash: "83ca6d",
|
|
363
305
|
}),
|
|
306
|
+
getCurrentFungibleAssetBalances: jest.fn().mockResolvedValue([
|
|
307
|
+
{
|
|
308
|
+
asset_type: APTOS_ASSET_ID,
|
|
309
|
+
amount: new BigNumber(123),
|
|
310
|
+
},
|
|
311
|
+
]),
|
|
364
312
|
}));
|
|
365
313
|
|
|
366
314
|
mockedNetwork.mockResolvedValue(
|
|
@@ -398,8 +346,7 @@ describe("Aptos API", () => {
|
|
|
398
346
|
}));
|
|
399
347
|
|
|
400
348
|
const api = new AptosAPI("aptos");
|
|
401
|
-
const accountInfo = await api.getAccountInfo(
|
|
402
|
-
|
|
349
|
+
const accountInfo = await api.getAccountInfo(APTOS_ASSET_ID, "1");
|
|
403
350
|
expect(accountInfo.balance).toEqual(new BigNumber(123));
|
|
404
351
|
expect(accountInfo.transactions).toEqual([null]);
|
|
405
352
|
expect(accountInfo.blockHeight).toEqual(999);
|
|
@@ -782,6 +729,10 @@ describe("Aptos API", () => {
|
|
|
782
729
|
|
|
783
730
|
describe("getBalances", () => {
|
|
784
731
|
it("returns an array of AptosBalances objects", async () => {
|
|
732
|
+
const expectedAptosBalace: AptosBalance = {
|
|
733
|
+
contractAddress: APTOS_ASSET_ID,
|
|
734
|
+
amount: BigNumber(200),
|
|
735
|
+
};
|
|
785
736
|
const assets = [{ asset_type: APTOS_ASSET_ID, amount: 200 }];
|
|
786
737
|
const mockGetCurrentFungibleAssetBalances = jest.fn().mockResolvedValue(assets);
|
|
787
738
|
mockedAptos.mockImplementation(() => ({
|
|
@@ -791,21 +742,61 @@ describe("Aptos API", () => {
|
|
|
791
742
|
const address = "0x42";
|
|
792
743
|
|
|
793
744
|
const api = new AptosAPI("aptos");
|
|
794
|
-
const balances = await api.getBalances(address);
|
|
745
|
+
const balances = await api.getBalances(address, APTOS_ASSET_ID);
|
|
795
746
|
|
|
796
747
|
expect(mockGetCurrentFungibleAssetBalances).toHaveBeenCalledWith({
|
|
797
748
|
options: {
|
|
798
|
-
offset: 0,
|
|
799
|
-
limit: 1000,
|
|
800
749
|
where: {
|
|
801
750
|
asset_type: { _eq: APTOS_ASSET_ID },
|
|
802
751
|
owner_address: { _eq: address },
|
|
803
752
|
},
|
|
804
753
|
},
|
|
805
754
|
});
|
|
806
|
-
expect(balances).
|
|
807
|
-
|
|
808
|
-
|
|
755
|
+
expect(balances).toEqual([expectedAptosBalace]);
|
|
756
|
+
});
|
|
757
|
+
|
|
758
|
+
it("returns an array of AptosBalances when just address ispassed", async () => {
|
|
759
|
+
const expectedAptosBalace: AptosBalance = {
|
|
760
|
+
contractAddress: APTOS_ASSET_ID,
|
|
761
|
+
amount: BigNumber(200),
|
|
762
|
+
};
|
|
763
|
+
const assets = [{ asset_type: APTOS_ASSET_ID, amount: 200n }];
|
|
764
|
+
const mockGetCurrentFungibleAssetBalances = jest.fn().mockResolvedValue(assets);
|
|
765
|
+
mockedAptos.mockImplementation(() => ({
|
|
766
|
+
getCurrentFungibleAssetBalances: mockGetCurrentFungibleAssetBalances,
|
|
767
|
+
}));
|
|
768
|
+
const address = "0x42";
|
|
769
|
+
const api = new AptosAPI("aptos");
|
|
770
|
+
|
|
771
|
+
const balance = await api.getBalances(address);
|
|
772
|
+
|
|
773
|
+
expect(mockGetCurrentFungibleAssetBalances).toHaveBeenCalledWith({
|
|
774
|
+
options: {
|
|
775
|
+
where: {
|
|
776
|
+
owner_address: { _eq: address },
|
|
777
|
+
},
|
|
778
|
+
},
|
|
779
|
+
});
|
|
780
|
+
expect(balance).toEqual([expectedAptosBalace]);
|
|
781
|
+
});
|
|
782
|
+
|
|
783
|
+
it("return 0 balace if could not retrieve proper balance of fungible assets", async () => {
|
|
784
|
+
const expectedBalance = new BigNumber(0);
|
|
785
|
+
mockedAptos.mockImplementation(() => ({
|
|
786
|
+
getCurrentFungibleAssetBalances: jest.fn().mockImplementation(() => {
|
|
787
|
+
throw new Error("error");
|
|
788
|
+
}),
|
|
789
|
+
}));
|
|
790
|
+
|
|
791
|
+
const api = new AptosAPI("aptos");
|
|
792
|
+
const balance = await api.getBalances("address", "0x42");
|
|
793
|
+
|
|
794
|
+
expect(balance).toEqual([
|
|
795
|
+
{
|
|
796
|
+
contractAddress: "",
|
|
797
|
+
amount: expectedBalance,
|
|
798
|
+
},
|
|
799
|
+
]);
|
|
809
800
|
});
|
|
810
801
|
});
|
|
811
802
|
|
package/src/api/index.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { AptosAsset, AptosExtra, AptosFeeParameters, AptosSender } from "..
|
|
|
6
6
|
import { AptosAPI } from "../network";
|
|
7
7
|
import { combine } from "../logic/combine";
|
|
8
8
|
import { craftTransaction } from "../logic/craftTransaction";
|
|
9
|
-
import {
|
|
9
|
+
import { getBalances } from "../logic/getBalances";
|
|
10
10
|
|
|
11
11
|
export function createApi(
|
|
12
12
|
config: AptosConfigApi,
|
|
@@ -22,7 +22,7 @@ export function createApi(
|
|
|
22
22
|
craftTransaction(client, transactionIntent),
|
|
23
23
|
estimateFees: (transactionIntent: TransactionIntent<AptosAsset, AptosExtra, AptosSender>) =>
|
|
24
24
|
client.estimateFees(transactionIntent),
|
|
25
|
-
getBalance: (address): Promise<Balance<AptosAsset>[]> =>
|
|
25
|
+
getBalance: (address): Promise<Balance<AptosAsset>[]> => getBalances(client, address),
|
|
26
26
|
lastBlock: () => client.getLastBlock(),
|
|
27
27
|
listOperations: (address: string, pagination: Pagination) =>
|
|
28
28
|
client.listOperations(address, pagination),
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
encodeTokenAccountId,
|
|
14
14
|
} from "@ledgerhq/coin-framework/account/index";
|
|
15
15
|
import { AccountShapeInfo } from "@ledgerhq/coin-framework/bridge/jsHelpers";
|
|
16
|
+
import BigNumber from "bignumber.js";
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* List of properties of a sub account that can be updated when 2 "identical" accounts are found
|
|
@@ -70,7 +71,7 @@ export const mergeSubAccounts = (
|
|
|
70
71
|
mergeOps(
|
|
71
72
|
duplicatedAccount[name as keyof TokenAccount] as Operation[],
|
|
72
73
|
newSubAccount[name as keyof TokenAccount] as Operation[],
|
|
73
|
-
)
|
|
74
|
+
) ?? [];
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
|
|
@@ -100,7 +101,8 @@ export const getSubAccountShape = async (
|
|
|
100
101
|
): Promise<TokenAccount> => {
|
|
101
102
|
const aptosClient = new AptosAPI(currency.id);
|
|
102
103
|
const tokenAccountId = encodeTokenAccountId(parentId, token);
|
|
103
|
-
const
|
|
104
|
+
const balances = await aptosClient.getBalances(address, token.contractAddress);
|
|
105
|
+
const balance = balances.length > 0 ? balances[0].amount : BigNumber(0);
|
|
104
106
|
const firstOperation = operations
|
|
105
107
|
.sort((a, b) => b.date.getTime() - a.date.getTime())
|
|
106
108
|
.at(operations.length - 1);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Balance } from "@ledgerhq/coin-framework/lib/api/types";
|
|
2
|
+
import type { AptosAsset } from "../types/assets";
|
|
3
|
+
import type { AptosAPI } from "../network";
|
|
4
|
+
import { APTOS_ASSET_ID, TOKEN_TYPE } from "../constants";
|
|
5
|
+
|
|
6
|
+
export async function getBalances(
|
|
7
|
+
aptosClient: AptosAPI,
|
|
8
|
+
address: string,
|
|
9
|
+
contract_address?: string,
|
|
10
|
+
): Promise<Balance<AptosAsset>[]> {
|
|
11
|
+
const balances = await aptosClient.getBalances(address, contract_address);
|
|
12
|
+
|
|
13
|
+
return balances.map(balance => {
|
|
14
|
+
const isNative = balance.contractAddress === APTOS_ASSET_ID;
|
|
15
|
+
const standard =
|
|
16
|
+
balance.contractAddress.split("::").length === 3
|
|
17
|
+
? TOKEN_TYPE.COIN
|
|
18
|
+
: TOKEN_TYPE.FUNGIBLE_ASSET;
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
value: BigInt(balance.amount.toString()),
|
|
22
|
+
asset: isNative
|
|
23
|
+
? { type: "native" }
|
|
24
|
+
: { type: "token", contractAddress: balance.contractAddress, standard: standard },
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|