@ledgerhq/coin-aptos 1.10.0-nightly.2 → 1.10.0-nightly.3
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 +8 -0
- package/lib/__tests__/api/craftTransaction.unit.test.js +147 -10
- package/lib/__tests__/api/craftTransaction.unit.test.js.map +1 -1
- package/lib/__tests__/api/index.integ.test.js +175 -2
- package/lib/__tests__/api/index.integ.test.js.map +1 -1
- package/lib/__tests__/logic/buildTransaction.test.js +8 -6
- package/lib/__tests__/logic/buildTransaction.test.js.map +1 -1
- package/lib/__tests__/network/client.test.js +1 -1
- package/lib/__tests__/network/client.test.js.map +1 -1
- package/lib/constants.d.ts +4 -1
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +6 -2
- package/lib/constants.js.map +1 -1
- package/lib/logic/buildTransaction.d.ts +4 -2
- package/lib/logic/buildTransaction.d.ts.map +1 -1
- package/lib/logic/buildTransaction.js +30 -28
- package/lib/logic/buildTransaction.js.map +1 -1
- package/lib/logic/craftTransaction.d.ts.map +1 -1
- package/lib/logic/craftTransaction.js +51 -6
- package/lib/logic/craftTransaction.js.map +1 -1
- package/lib/logic/transactionsToOperations.d.ts +1 -1
- package/lib/logic/transactionsToOperations.d.ts.map +1 -1
- package/lib/logic/transactionsToOperations.js +8 -10
- package/lib/logic/transactionsToOperations.js.map +1 -1
- package/lib/network/client.js +2 -2
- package/lib/network/client.js.map +1 -1
- package/lib/types/assets.d.ts +5 -1
- package/lib/types/assets.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib-es/__tests__/api/craftTransaction.unit.test.js +147 -10
- package/lib-es/__tests__/api/craftTransaction.unit.test.js.map +1 -1
- package/lib-es/__tests__/api/index.integ.test.js +175 -2
- package/lib-es/__tests__/api/index.integ.test.js.map +1 -1
- package/lib-es/__tests__/logic/buildTransaction.test.js +8 -6
- package/lib-es/__tests__/logic/buildTransaction.test.js.map +1 -1
- package/lib-es/__tests__/network/client.test.js +1 -1
- package/lib-es/__tests__/network/client.test.js.map +1 -1
- package/lib-es/constants.d.ts +4 -1
- package/lib-es/constants.d.ts.map +1 -1
- package/lib-es/constants.js +5 -1
- package/lib-es/constants.js.map +1 -1
- package/lib-es/logic/buildTransaction.d.ts +4 -2
- package/lib-es/logic/buildTransaction.d.ts.map +1 -1
- package/lib-es/logic/buildTransaction.js +30 -30
- package/lib-es/logic/buildTransaction.js.map +1 -1
- package/lib-es/logic/craftTransaction.d.ts.map +1 -1
- package/lib-es/logic/craftTransaction.js +28 -6
- package/lib-es/logic/craftTransaction.js.map +1 -1
- package/lib-es/logic/transactionsToOperations.d.ts +1 -1
- package/lib-es/logic/transactionsToOperations.d.ts.map +1 -1
- package/lib-es/logic/transactionsToOperations.js +8 -10
- package/lib-es/logic/transactionsToOperations.js.map +1 -1
- package/lib-es/network/client.js +2 -2
- package/lib-es/network/client.js.map +1 -1
- package/lib-es/types/assets.d.ts +5 -1
- package/lib-es/types/assets.d.ts.map +1 -1
- package/lib-es/types/index.d.ts +1 -1
- package/lib-es/types/index.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/__tests__/api/craftTransaction.unit.test.ts +193 -20
- package/src/__tests__/api/index.integ.test.ts +226 -2
- package/src/__tests__/logic/buildTransaction.test.ts +8 -6
- package/src/__tests__/network/client.test.ts +1 -1
- package/src/constants.ts +5 -1
- package/src/logic/buildTransaction.ts +45 -37
- package/src/logic/craftTransaction.ts +46 -7
- package/src/logic/transactionsToOperations.ts +9 -12
- package/src/network/client.ts +2 -2
- package/src/types/assets.ts +3 -1
- package/src/types/index.ts +1 -1
|
@@ -1,26 +1,65 @@
|
|
|
1
1
|
import type { TransactionIntent } from "@ledgerhq/coin-framework/lib/api/types";
|
|
2
2
|
import type { AptosAsset, AptosExtra, AptosSender } from "../types/assets";
|
|
3
|
-
import type { Account } from "@ledgerhq/types-live";
|
|
3
|
+
import type { Account, TokenAccount } from "@ledgerhq/types-live";
|
|
4
4
|
import type { AptosAPI } from "../network";
|
|
5
|
-
import buildTransaction from "./buildTransaction";
|
|
5
|
+
import buildTransaction, { isTokenType } from "./buildTransaction";
|
|
6
6
|
import createTransaction from "./createTransaction";
|
|
7
7
|
import BigNumber from "bignumber.js";
|
|
8
|
+
import { APTOS_ASSET_ID, type TOKEN_TYPE } from "../constants";
|
|
9
|
+
import type { AptosBalance } from "../types";
|
|
8
10
|
|
|
9
11
|
export async function craftTransaction(
|
|
10
12
|
aptosClient: AptosAPI,
|
|
11
13
|
transactionIntent: TransactionIntent<AptosAsset, AptosExtra, AptosSender>,
|
|
12
14
|
): Promise<string> {
|
|
15
|
+
const newTx = createTransaction();
|
|
16
|
+
newTx.amount = BigNumber(transactionIntent.amount.toString());
|
|
17
|
+
newTx.recipient = transactionIntent.recipient;
|
|
18
|
+
newTx.mode = transactionIntent.type;
|
|
19
|
+
newTx.useAllAmount = transactionIntent.amount === BigInt(0);
|
|
20
|
+
|
|
13
21
|
const account = {
|
|
14
22
|
freshAddress: transactionIntent.sender.freshAddress,
|
|
15
23
|
xpub: transactionIntent.sender.xpub,
|
|
24
|
+
subAccounts: new Array<TokenAccount>(),
|
|
16
25
|
} as Account;
|
|
17
26
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
27
|
+
let tokenType: TOKEN_TYPE | undefined;
|
|
28
|
+
const contractAddress = getContractAddress(transactionIntent);
|
|
29
|
+
let balance: AptosBalance | undefined;
|
|
30
|
+
|
|
31
|
+
if (newTx.useAllAmount === true) {
|
|
32
|
+
const balances = await aptosClient.getBalances(transactionIntent.sender.freshAddress);
|
|
33
|
+
balance = balances?.find(
|
|
34
|
+
b => b.contractAddress.toLowerCase() === contractAddress?.toLowerCase(),
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
if (balance !== undefined) {
|
|
38
|
+
newTx.amount = BigNumber(balance.amount.toString());
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (transactionIntent.asset.type === "token") {
|
|
43
|
+
tokenType = transactionIntent.asset.standard as TOKEN_TYPE;
|
|
44
|
+
}
|
|
22
45
|
|
|
23
|
-
const aptosTx = await buildTransaction(
|
|
46
|
+
const aptosTx = await buildTransaction(
|
|
47
|
+
account,
|
|
48
|
+
newTx,
|
|
49
|
+
aptosClient,
|
|
50
|
+
contractAddress,
|
|
51
|
+
tokenType ?? undefined,
|
|
52
|
+
);
|
|
24
53
|
|
|
25
54
|
return aptosTx.bcsToHex().toString();
|
|
26
55
|
}
|
|
56
|
+
|
|
57
|
+
function getContractAddress(
|
|
58
|
+
txIntent: TransactionIntent<AptosAsset, AptosExtra, AptosSender>,
|
|
59
|
+
): string {
|
|
60
|
+
if (txIntent.asset.type === "token" && isTokenType(txIntent.asset.standard)) {
|
|
61
|
+
return txIntent.asset.contractAddress;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return APTOS_ASSET_ID;
|
|
65
|
+
}
|
|
@@ -32,8 +32,8 @@ const detectType = (address: string, tx: AptosTransaction, value: BigNumber): DI
|
|
|
32
32
|
export function transactionsToOperations(
|
|
33
33
|
address: string,
|
|
34
34
|
txs: (AptosTransaction | null)[],
|
|
35
|
-
):
|
|
36
|
-
const operations:
|
|
35
|
+
): Operation<AptosAsset>[] {
|
|
36
|
+
const operations: Operation<AptosAsset>[] = [];
|
|
37
37
|
|
|
38
38
|
return txs.reduce((acc, tx) => {
|
|
39
39
|
if (tx === null) {
|
|
@@ -82,22 +82,19 @@ export function transactionsToOperations(
|
|
|
82
82
|
|
|
83
83
|
if (op.type !== DIRECTION.UNKNOWN && coin_id !== null) {
|
|
84
84
|
if (coin_id === APTOS_ASSET_ID) {
|
|
85
|
-
acc
|
|
85
|
+
acc.push(op);
|
|
86
86
|
return acc;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
const token = findTokenByAddressInCurrency(coin_id.toLowerCase(), "aptos");
|
|
90
90
|
|
|
91
91
|
if (token !== undefined) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
type: "FEES",
|
|
99
|
-
});
|
|
100
|
-
}
|
|
92
|
+
op.asset = {
|
|
93
|
+
type: "token",
|
|
94
|
+
standard: token.tokenType,
|
|
95
|
+
contractAddress: token.contractAddress,
|
|
96
|
+
};
|
|
97
|
+
acc.push(op);
|
|
101
98
|
}
|
|
102
99
|
}
|
|
103
100
|
return acc;
|
package/src/network/client.ts
CHANGED
|
@@ -262,7 +262,7 @@ export class AptosAPI {
|
|
|
262
262
|
pagination: Pagination,
|
|
263
263
|
): Promise<[Operation<AptosAsset>[], string]> {
|
|
264
264
|
const transactions = await this.getAccountInfo(address, pagination.minHeight.toString());
|
|
265
|
-
const
|
|
265
|
+
const newOperations = transactionsToOperations(address, transactions.transactions);
|
|
266
266
|
|
|
267
267
|
return [newOperations, ""];
|
|
268
268
|
}
|
|
@@ -344,7 +344,7 @@ export class AptosAPI {
|
|
|
344
344
|
});
|
|
345
345
|
|
|
346
346
|
return response.map(x => ({
|
|
347
|
-
|
|
347
|
+
contractAddress: x.asset_type ?? "-",
|
|
348
348
|
amount: BigNumber(x.amount),
|
|
349
349
|
}));
|
|
350
350
|
}
|
package/src/types/assets.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Asset } from "@ledgerhq/coin-framework/api/types";
|
|
2
2
|
|
|
3
|
-
export type AptosAsset = Asset
|
|
3
|
+
export type AptosAsset = Asset<AptosTokenInformation>;
|
|
4
|
+
|
|
5
|
+
export type AptosTokenInformation = { standard: string; contractAddress: string };
|
|
4
6
|
|
|
5
7
|
export type AptosExtra = Record<string, unknown>;
|
|
6
8
|
|