@ledgerhq/coin-ton 0.7.0 → 0.8.0-next.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 +15 -0
- package/jest.config.js +1 -0
- package/lib/__tests__/fixtures/common.fixtures.d.ts +3 -4
- package/lib/__tests__/fixtures/common.fixtures.d.ts.map +1 -1
- package/lib/__tests__/fixtures/common.fixtures.js +9 -1
- package/lib/__tests__/fixtures/common.fixtures.js.map +1 -1
- package/lib/__tests__/integration/bridge.integration.test.d.ts.map +1 -1
- package/lib/__tests__/integration/bridge.integration.test.js +2 -2
- package/lib/__tests__/integration/bridge.integration.test.js.map +1 -1
- package/lib/__tests__/unit/api.unit.test.js +1 -0
- package/lib/__tests__/unit/api.unit.test.js.map +1 -1
- package/lib/__tests__/unit/deviceTransactionConfig.unit.test.js +12 -3
- package/lib/__tests__/unit/deviceTransactionConfig.unit.test.js.map +1 -1
- package/lib/__tests__/unit/prepareTransaction.unit.test.js +38 -0
- package/lib/__tests__/unit/prepareTransaction.unit.test.js.map +1 -1
- package/lib/__tests__/unit/utils.unit.test.js +43 -1
- package/lib/__tests__/unit/utils.unit.test.js.map +1 -1
- package/lib/bridge/js.d.ts +3 -3
- package/lib/bridge/js.d.ts.map +1 -1
- package/lib/config.d.ts +2 -0
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js.map +1 -1
- package/lib/constants.d.ts +18 -0
- 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 +14 -3
- package/lib/deviceTransactionConfig.js.map +1 -1
- package/lib/estimateMaxSpendable.d.ts +3 -3
- package/lib/estimateMaxSpendable.d.ts.map +1 -1
- package/lib/estimateMaxSpendable.js +6 -5
- package/lib/estimateMaxSpendable.js.map +1 -1
- package/lib/getTransactionStatus.d.ts +3 -3
- package/lib/getTransactionStatus.d.ts.map +1 -1
- package/lib/getTransactionStatus.js +2 -2
- package/lib/getTransactionStatus.js.map +1 -1
- package/lib/prepareTransaction.d.ts +3 -3
- package/lib/prepareTransaction.d.ts.map +1 -1
- package/lib/prepareTransaction.js +1 -2
- package/lib/prepareTransaction.js.map +1 -1
- package/lib/signOperation.d.ts +4 -4
- package/lib/signOperation.d.ts.map +1 -1
- package/lib/signOperation.js.map +1 -1
- package/lib/synchronisation.d.ts +3 -3
- package/lib/synchronisation.d.ts.map +1 -1
- package/lib/synchronisation.js +4 -3
- package/lib/synchronisation.js.map +1 -1
- package/lib/types.d.ts +79 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/utils.d.ts +8 -4
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +30 -5
- package/lib/utils.js.map +1 -1
- package/lib-es/__tests__/fixtures/common.fixtures.d.ts +3 -4
- package/lib-es/__tests__/fixtures/common.fixtures.d.ts.map +1 -1
- package/lib-es/__tests__/fixtures/common.fixtures.js +9 -1
- package/lib-es/__tests__/fixtures/common.fixtures.js.map +1 -1
- package/lib-es/__tests__/integration/bridge.integration.test.d.ts.map +1 -1
- package/lib-es/__tests__/integration/bridge.integration.test.js +1 -1
- package/lib-es/__tests__/integration/bridge.integration.test.js.map +1 -1
- package/lib-es/__tests__/unit/api.unit.test.js +1 -0
- package/lib-es/__tests__/unit/api.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.js +12 -3
- package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/prepareTransaction.unit.test.js +15 -0
- package/lib-es/__tests__/unit/prepareTransaction.unit.test.js.map +1 -1
- package/lib-es/__tests__/unit/utils.unit.test.js +20 -1
- package/lib-es/__tests__/unit/utils.unit.test.js.map +1 -1
- package/lib-es/bridge/js.d.ts +3 -3
- package/lib-es/bridge/js.d.ts.map +1 -1
- package/lib-es/bridge/js.js +1 -1
- package/lib-es/bridge/js.js.map +1 -1
- package/lib-es/config.d.ts +2 -0
- package/lib-es/config.d.ts.map +1 -1
- package/lib-es/config.js.map +1 -1
- package/lib-es/constants.d.ts +18 -0
- 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 +15 -4
- package/lib-es/deviceTransactionConfig.js.map +1 -1
- package/lib-es/estimateMaxSpendable.d.ts +3 -3
- package/lib-es/estimateMaxSpendable.d.ts.map +1 -1
- package/lib-es/estimateMaxSpendable.js +7 -6
- package/lib-es/estimateMaxSpendable.js.map +1 -1
- package/lib-es/getTransactionStatus.d.ts +3 -3
- package/lib-es/getTransactionStatus.d.ts.map +1 -1
- package/lib-es/getTransactionStatus.js +2 -2
- package/lib-es/getTransactionStatus.js.map +1 -1
- package/lib-es/prepareTransaction.d.ts +3 -3
- package/lib-es/prepareTransaction.d.ts.map +1 -1
- package/lib-es/prepareTransaction.js +1 -2
- package/lib-es/prepareTransaction.js.map +1 -1
- package/lib-es/signOperation.d.ts +4 -4
- package/lib-es/signOperation.d.ts.map +1 -1
- package/lib-es/signOperation.js.map +1 -1
- package/lib-es/synchronisation.d.ts +3 -3
- package/lib-es/synchronisation.d.ts.map +1 -1
- package/lib-es/synchronisation.js +4 -3
- package/lib-es/synchronisation.js.map +1 -1
- package/lib-es/types.d.ts +79 -2
- package/lib-es/types.d.ts.map +1 -1
- package/lib-es/utils.d.ts +8 -4
- package/lib-es/utils.d.ts.map +1 -1
- package/lib-es/utils.js +29 -5
- package/lib-es/utils.js.map +1 -1
- package/package.json +8 -8
- package/src/__tests__/fixtures/common.fixtures.ts +12 -5
- package/src/__tests__/integration/bridge.integration.test.ts +3 -3
- package/src/__tests__/unit/api.unit.test.ts +1 -0
- package/src/__tests__/unit/deviceTransactionConfig.unit.test.ts +20 -3
- package/src/__tests__/unit/prepareTransaction.unit.test.ts +17 -0
- package/src/__tests__/unit/utils.unit.test.ts +22 -1
- package/src/bridge/js.ts +3 -3
- package/src/config.ts +2 -0
- package/src/constants.ts +20 -0
- package/src/deviceTransactionConfig.ts +23 -4
- package/src/estimateMaxSpendable.ts +13 -17
- package/src/getTransactionStatus.ts +9 -9
- package/src/prepareTransaction.ts +5 -6
- package/src/signOperation.ts +6 -4
- package/src/synchronisation.ts +17 -12
- package/src/types.ts +103 -1
- package/src/utils.ts +39 -8
package/src/utils.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { decodeAccountId
|
|
2
|
-
import { Account } from "@ledgerhq/types-live";
|
|
1
|
+
import { decodeAccountId } from "@ledgerhq/coin-framework/account/index";
|
|
3
2
|
import {
|
|
4
3
|
Builder,
|
|
5
4
|
SendMode,
|
|
@@ -11,17 +10,22 @@ import {
|
|
|
11
10
|
} from "@ton/ton";
|
|
12
11
|
import BigNumber from "bignumber.js";
|
|
13
12
|
import { estimateFee } from "./bridge/bridgeHelpers/api";
|
|
13
|
+
import { getCoinConfig } from "./config";
|
|
14
14
|
import {
|
|
15
15
|
JettonOpCode,
|
|
16
16
|
MAX_COMMENT_BYTES,
|
|
17
17
|
TOKEN_TRANSFER_FORWARD_AMOUNT,
|
|
18
18
|
TOKEN_TRANSFER_MAX_FEE,
|
|
19
19
|
TOKEN_TRANSFER_QUERY_ID,
|
|
20
|
+
WORKCHAIN,
|
|
20
21
|
} from "./constants";
|
|
21
22
|
import {
|
|
23
|
+
KnownJetton,
|
|
24
|
+
TonAccount,
|
|
22
25
|
TonCell,
|
|
23
26
|
TonComment,
|
|
24
27
|
TonPayloadJettonTransfer,
|
|
28
|
+
TonSubAccount,
|
|
25
29
|
TonTransaction,
|
|
26
30
|
Transaction,
|
|
27
31
|
} from "./types";
|
|
@@ -55,14 +59,31 @@ export const addressesAreEqual = (addr1: string, addr2: string) => {
|
|
|
55
59
|
}
|
|
56
60
|
};
|
|
57
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Returns the known jetton ID and workchain for a given token address.
|
|
64
|
+
* Returns null if the token is not found in the known jettons list.
|
|
65
|
+
*/
|
|
66
|
+
function getKnownJettonId(tokenAddress: string, knownJettons: KnownJetton[]) {
|
|
67
|
+
const index = knownJettons.findIndex(jetton => jetton.masterAddress.toString() === tokenAddress);
|
|
68
|
+
return index > -1 ? { jettonId: index, workchain: WORKCHAIN } : null;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Finds a sub-account by its ID in a TON account.
|
|
73
|
+
* Returns undefined if no matching sub-account is found.
|
|
74
|
+
*/
|
|
75
|
+
export function findSubAccountById(account: TonAccount, id: string): TonSubAccount | undefined {
|
|
76
|
+
return account.subAccounts?.find(a => a.id === id) as TonSubAccount | undefined;
|
|
77
|
+
}
|
|
78
|
+
|
|
58
79
|
/**
|
|
59
80
|
* Builds a TonTransaction object based on the given transaction details.
|
|
60
81
|
*/
|
|
61
|
-
export
|
|
82
|
+
export function buildTonTransaction(
|
|
62
83
|
transaction: Transaction,
|
|
63
84
|
seqno: number,
|
|
64
|
-
account:
|
|
65
|
-
): TonTransaction
|
|
85
|
+
account: TonAccount,
|
|
86
|
+
): TonTransaction {
|
|
66
87
|
const { subAccountId, useAllAmount, amount, comment: commentTx, recipient } = transaction;
|
|
67
88
|
let recipientParsed = recipient;
|
|
68
89
|
// if recipient is not valid calculate fees with empty address
|
|
@@ -76,12 +97,16 @@ export const buildTonTransaction = (
|
|
|
76
97
|
// if there is a sub account, the transaction is a token transfer
|
|
77
98
|
const subAccount = findSubAccountById(account, subAccountId ?? "");
|
|
78
99
|
|
|
100
|
+
if (subAccount && !subAccount.jettonWallet) {
|
|
101
|
+
throw new Error("[ton] jetton wallet not found");
|
|
102
|
+
}
|
|
103
|
+
|
|
79
104
|
const finalAmount = subAccount
|
|
80
105
|
? toNano(TOKEN_TRANSFER_MAX_FEE) // for commission fees, excess will be returned
|
|
81
106
|
: useAllAmount
|
|
82
107
|
? BigInt(0)
|
|
83
108
|
: BigInt(amount.toFixed());
|
|
84
|
-
const to = subAccount
|
|
109
|
+
const to = subAccount?.jettonWallet ?? recipientParsed;
|
|
85
110
|
|
|
86
111
|
const tonTransaction: TonTransaction = {
|
|
87
112
|
to: TonAddress.parse(to),
|
|
@@ -102,6 +127,9 @@ export const buildTonTransaction = (
|
|
|
102
127
|
if (subAccount) {
|
|
103
128
|
const forwardPayload = commentTx.text.length ? comment(commentTx.text) : null;
|
|
104
129
|
|
|
130
|
+
const currencyConfig = getCoinConfig();
|
|
131
|
+
const knownJettons = currencyConfig.infra.KNOWN_JETTONS;
|
|
132
|
+
|
|
105
133
|
tonTransaction.payload = {
|
|
106
134
|
type: "jetton-transfer",
|
|
107
135
|
queryId: BigInt(TOKEN_TRANSFER_QUERY_ID),
|
|
@@ -111,11 +139,14 @@ export const buildTonTransaction = (
|
|
|
111
139
|
customPayload: null,
|
|
112
140
|
forwardAmount: BigInt(TOKEN_TRANSFER_FORWARD_AMOUNT),
|
|
113
141
|
forwardPayload,
|
|
142
|
+
knownJetton: knownJettons
|
|
143
|
+
? getKnownJettonId(subAccount?.token.contractAddress, knownJettons)
|
|
144
|
+
: null,
|
|
114
145
|
};
|
|
115
146
|
}
|
|
116
147
|
|
|
117
148
|
return tonTransaction;
|
|
118
|
-
}
|
|
149
|
+
}
|
|
119
150
|
|
|
120
151
|
/**
|
|
121
152
|
* Validates if the given comment is valid.
|
|
@@ -132,7 +163,7 @@ export const getTransferExpirationTime = () => Math.floor(Date.now() / 1000 + 60
|
|
|
132
163
|
* Estimates the fees for a Ton transaction.
|
|
133
164
|
*/
|
|
134
165
|
export const getTonEstimatedFees = async (
|
|
135
|
-
account:
|
|
166
|
+
account: TonAccount,
|
|
136
167
|
needsInit: boolean,
|
|
137
168
|
tx: TonTransaction,
|
|
138
169
|
) => {
|