@bitgo/sdk-coin-ton 4.0.4 → 4.0.6
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/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +1 -1
- package/dist/cjs/src/jettonToken.d.ts.map +1 -0
- package/dist/cjs/src/jettonToken.js +52 -0
- package/dist/cjs/src/lib/constants.d.ts.map +1 -0
- package/dist/cjs/src/lib/constants.js +12 -0
- package/dist/{src → cjs/src}/lib/explainTransactionWasm.d.ts +15 -1
- package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/src/lib/explainTransactionWasm.js +104 -0
- package/dist/cjs/src/lib/iface.d.ts.map +1 -0
- package/dist/cjs/src/lib/iface.js +3 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/lib/index.js +1 -1
- package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
- package/dist/cjs/src/lib/keyPair.js +103 -0
- package/dist/cjs/src/lib/singleNominatorWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/singleNominatorWithdrawBuilder.js +38 -0
- package/dist/cjs/src/lib/tokenTransaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenTransaction.js +97 -0
- package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tokenTransferBuilder.js +57 -0
- package/dist/cjs/src/lib/tonWhalesDepositBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tonWhalesDepositBuilder.js +42 -0
- package/dist/cjs/src/lib/tonWhalesVestingDepositBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tonWhalesVestingDepositBuilder.js +37 -0
- package/dist/cjs/src/lib/tonWhalesVestingWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tonWhalesVestingWithdrawBuilder.js +37 -0
- package/dist/cjs/src/lib/tonWhalesWithdrawalBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/tonWhalesWithdrawalBuilder.js +60 -0
- package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/transaction.js +415 -0
- package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilder.js +152 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionBuilderFactory.js +100 -0
- package/dist/cjs/src/lib/transactionExplanation.d.ts.map +1 -0
- package/dist/cjs/src/lib/transactionExplanation.js +3 -0
- package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/transferBuilder.js +21 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -0
- package/dist/cjs/src/lib/utils.js +159 -0
- package/dist/cjs/src/register.d.ts.map +1 -0
- package/dist/cjs/src/register.js +15 -0
- package/dist/cjs/src/ton.d.ts.map +1 -0
- package/dist/cjs/src/ton.js +520 -0
- package/dist/cjs/src/tton.d.ts.map +1 -0
- package/dist/cjs/src/tton.js +30 -0
- package/dist/cjs/test/resources/ton.d.ts.map +1 -0
- package/dist/cjs/test/resources/ton.js +208 -0
- package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
- package/dist/cjs/test/unit/explainTransactionWasm.js +147 -0
- package/dist/cjs/test/unit/jettonToken.d.ts.map +1 -0
- package/dist/cjs/test/unit/jettonToken.js +341 -0
- package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
- package/dist/cjs/test/unit/keyPair.js +55 -0
- package/dist/cjs/test/unit/singleNominatorWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/singleNominatorWithdrawBuilder.js +314 -0
- package/dist/cjs/test/unit/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/tokenTransferBuilder.js +262 -0
- package/dist/{test → cjs/test}/unit/ton.d.ts.map +1 -1
- package/dist/cjs/test/unit/ton.js +752 -0
- package/dist/cjs/test/unit/tonWhalesDepositBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/tonWhalesDepositBuilder.js +114 -0
- package/dist/cjs/test/unit/tonWhalesVestingDepositBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/tonWhalesVestingDepositBuilder.js +136 -0
- package/dist/cjs/test/unit/tonWhalesVestingWithdrawBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/tonWhalesVestingWithdrawBuilder.js +136 -0
- package/dist/cjs/test/unit/tonWhalesWithdrawalBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/tonWhalesWithdrawalBuilder.js +130 -0
- package/dist/cjs/test/unit/transferBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transferBuilder.js +281 -0
- package/dist/cjs/test/unit/wasmCrossCompatibility.d.ts.map +1 -0
- package/dist/cjs/test/unit/wasmCrossCompatibility.js +176 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/jettonToken.d.ts +19 -0
- package/dist/esm/jettonToken.js +48 -0
- package/dist/esm/lib/constants.d.ts +9 -0
- package/dist/esm/lib/constants.js +9 -0
- package/dist/esm/lib/explainTransactionWasm.d.ts +36 -0
- package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
- package/dist/esm/lib/explainTransactionWasm.js +99 -0
- package/dist/esm/lib/iface.d.ts +32 -0
- package/dist/{src → esm}/lib/iface.js +1 -2
- package/dist/esm/lib/index.d.ts +14 -0
- package/dist/esm/lib/index.js +14 -0
- package/dist/esm/lib/keyPair.d.ts +25 -0
- package/dist/esm/lib/keyPair.js +63 -0
- package/dist/esm/lib/singleNominatorWithdrawBuilder.d.ts +17 -0
- package/dist/esm/lib/singleNominatorWithdrawBuilder.js +34 -0
- package/dist/esm/lib/tokenTransaction.d.ts +16 -0
- package/dist/esm/lib/tokenTransaction.js +90 -0
- package/dist/esm/lib/tokenTransferBuilder.d.ts +20 -0
- package/dist/esm/lib/tokenTransferBuilder.js +53 -0
- package/dist/esm/lib/tonWhalesDepositBuilder.d.ts +12 -0
- package/dist/esm/lib/tonWhalesDepositBuilder.js +38 -0
- package/dist/esm/lib/tonWhalesVestingDepositBuilder.d.ts +12 -0
- package/dist/esm/lib/tonWhalesVestingDepositBuilder.js +33 -0
- package/dist/esm/lib/tonWhalesVestingWithdrawBuilder.d.ts +12 -0
- package/dist/esm/lib/tonWhalesVestingWithdrawBuilder.js +33 -0
- package/dist/esm/lib/tonWhalesWithdrawalBuilder.d.ts +30 -0
- package/dist/esm/lib/tonWhalesWithdrawalBuilder.js +56 -0
- package/dist/esm/lib/transaction.d.ts +42 -0
- package/dist/esm/lib/transaction.js +408 -0
- package/dist/esm/lib/transactionBuilder.d.ts +74 -0
- package/dist/esm/lib/transactionBuilder.js +145 -0
- package/dist/esm/lib/transactionBuilderFactory.d.ts +32 -0
- package/dist/esm/lib/transactionBuilderFactory.js +96 -0
- package/dist/esm/lib/transactionExplanation.d.ts +14 -0
- package/dist/{src → esm}/lib/transactionExplanation.js +1 -2
- package/dist/esm/lib/transferBuilder.d.ts +9 -0
- package/dist/esm/lib/transferBuilder.js +17 -0
- package/dist/esm/lib/utils.d.ts +41 -0
- package/dist/esm/lib/utils.js +151 -0
- package/dist/esm/register.d.ts +3 -0
- package/dist/esm/register.js +11 -0
- package/dist/esm/ton.d.ts +59 -0
- package/dist/{src → esm}/ton.d.ts.map +1 -1
- package/dist/esm/ton.js +480 -0
- package/dist/esm/tton.d.ts +22 -0
- package/dist/esm/tton.js +26 -0
- package/package.json +27 -10
- package/dist/src/jettonToken.js +0 -52
- package/dist/src/lib/constants.js +0 -12
- package/dist/src/lib/explainTransactionWasm.d.ts.map +0 -1
- package/dist/src/lib/explainTransactionWasm.js +0 -61
- package/dist/src/lib/keyPair.js +0 -103
- package/dist/src/lib/singleNominatorWithdrawBuilder.js +0 -38
- package/dist/src/lib/tokenTransaction.js +0 -97
- package/dist/src/lib/tokenTransferBuilder.js +0 -57
- package/dist/src/lib/tonWhalesDepositBuilder.js +0 -42
- package/dist/src/lib/tonWhalesVestingDepositBuilder.js +0 -37
- package/dist/src/lib/tonWhalesVestingWithdrawBuilder.js +0 -37
- package/dist/src/lib/tonWhalesWithdrawalBuilder.js +0 -60
- package/dist/src/lib/transaction.js +0 -415
- package/dist/src/lib/transactionBuilder.js +0 -152
- package/dist/src/lib/transactionBuilderFactory.js +0 -100
- package/dist/src/lib/transferBuilder.js +0 -21
- package/dist/src/lib/utils.js +0 -159
- package/dist/src/register.js +0 -15
- package/dist/src/ton.js +0 -525
- package/dist/src/tton.js +0 -30
- package/dist/test/resources/ton.d.ts.map +0 -1
- package/dist/test/resources/ton.js +0 -208
- package/dist/test/unit/explainTransactionWasm.d.ts.map +0 -1
- package/dist/test/unit/explainTransactionWasm.js +0 -147
- package/dist/test/unit/jettonToken.d.ts.map +0 -1
- package/dist/test/unit/jettonToken.js +0 -341
- package/dist/test/unit/keyPair.js +0 -55
- package/dist/test/unit/singleNominatorWithdrawBuilder.d.ts.map +0 -1
- package/dist/test/unit/singleNominatorWithdrawBuilder.js +0 -314
- package/dist/test/unit/tokenTransferBuilder.d.ts.map +0 -1
- package/dist/test/unit/tokenTransferBuilder.js +0 -262
- package/dist/test/unit/ton.js +0 -752
- package/dist/test/unit/tonWhalesDepositBuilder.d.ts.map +0 -1
- package/dist/test/unit/tonWhalesDepositBuilder.js +0 -114
- package/dist/test/unit/tonWhalesVestingDepositBuilder.d.ts.map +0 -1
- package/dist/test/unit/tonWhalesVestingDepositBuilder.js +0 -136
- package/dist/test/unit/tonWhalesVestingWithdrawBuilder.d.ts.map +0 -1
- package/dist/test/unit/tonWhalesVestingWithdrawBuilder.js +0 -136
- package/dist/test/unit/tonWhalesWithdrawalBuilder.d.ts.map +0 -1
- package/dist/test/unit/tonWhalesWithdrawalBuilder.js +0 -130
- package/dist/test/unit/transferBuilder.d.ts.map +0 -1
- package/dist/test/unit/transferBuilder.js +0 -281
- package/dist/test/unit/wasmCrossCompatibility.d.ts.map +0 -1
- package/dist/test/unit/wasmCrossCompatibility.js +0 -176
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src → cjs/src}/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/jettonToken.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/constants.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/iface.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/singleNominatorWithdrawBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/tokenTransaction.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/tonWhalesDepositBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/tonWhalesVestingDepositBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/tonWhalesVestingWithdrawBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/tonWhalesWithdrawalBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transactionExplanation.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
- /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/register.d.ts +0 -0
- /package/dist/{src → cjs/src}/ton.d.ts +0 -0
- /package/dist/{src → cjs/src}/tton.d.ts +0 -0
- /package/dist/{test → cjs/test}/resources/ton.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/explainTransactionWasm.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/jettonToken.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/singleNominatorWithdrawBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/tokenTransferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/ton.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/tonWhalesDepositBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/tonWhalesVestingDepositBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/tonWhalesVestingWithdrawBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/tonWhalesWithdrawalBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/transferBuilder.d.ts +0 -0
- /package/dist/{test → cjs/test}/unit/wasmCrossCompatibility.d.ts +0 -0
- /package/dist/{src → esm}/index.d.ts.map +0 -0
- /package/dist/{src → esm}/jettonToken.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/constants.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/iface.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/index.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/singleNominatorWithdrawBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/tokenTransaction.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/tonWhalesDepositBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/tonWhalesVestingDepositBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/tonWhalesVestingWithdrawBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/tonWhalesWithdrawalBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transaction.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transactionBuilderFactory.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transactionExplanation.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
- /package/dist/{src → esm}/lib/utils.d.ts.map +0 -0
- /package/dist/{src → esm}/register.d.ts.map +0 -0
- /package/dist/{src → esm}/tton.d.ts.map +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import TonWeb from 'tonweb';
|
|
2
|
+
import { BN } from 'bn.js';
|
|
3
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
4
|
+
import { Transaction } from './transaction';
|
|
5
|
+
import { JETTON_TRANSFER_OPCODE, WALLET_ID } from './constants';
|
|
6
|
+
export class TokenTransaction extends Transaction {
|
|
7
|
+
constructor(coinConfig) {
|
|
8
|
+
super(coinConfig);
|
|
9
|
+
}
|
|
10
|
+
toJson() {
|
|
11
|
+
const json = super.toJson();
|
|
12
|
+
return {
|
|
13
|
+
...json,
|
|
14
|
+
forwardTonAmount: this.forwardTonAmount,
|
|
15
|
+
senderJettonWalletAddress: this.senderJettonWalletAddress,
|
|
16
|
+
tonAmount: this.tonAmount,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
createJettonTransferPayload(jettonAmount, toAddress, forwardTonAmount, comment) {
|
|
20
|
+
const forwardPayload = new TonWeb.boc.Cell();
|
|
21
|
+
if (comment) {
|
|
22
|
+
forwardPayload.bits.writeUint(0, 32);
|
|
23
|
+
forwardPayload.bits.writeString(comment);
|
|
24
|
+
}
|
|
25
|
+
const payload = new TonWeb.boc.Cell();
|
|
26
|
+
payload.bits.writeUint(JETTON_TRANSFER_OPCODE, 32); // Store Jetton transfer op code
|
|
27
|
+
payload.bits.writeUint(0, 64); // query_id
|
|
28
|
+
payload.bits.writeCoins(new BN(jettonAmount)); // Jetton amount to transfer
|
|
29
|
+
payload.bits.writeAddress(new TonWeb.Address(toAddress)); // recipient's TON wallet address
|
|
30
|
+
payload.bits.writeAddress(new TonWeb.Address(this.sender)); // response_destination for sending excess TON (excess is returned back to the sender)
|
|
31
|
+
payload.bits.writeBit(false); // No custom payload
|
|
32
|
+
payload.bits.writeCoins(new BN(forwardTonAmount)); // forward_ton_amount to pay fees
|
|
33
|
+
payload.bits.writeBit(true); // Forward payload exists as a reference
|
|
34
|
+
payload.refs.push(forwardPayload); // Add forward payload as a reference
|
|
35
|
+
return payload;
|
|
36
|
+
}
|
|
37
|
+
async build() {
|
|
38
|
+
const jettonTransferPayload = this.createJettonTransferPayload(this.recipient.amount, this.recipient.address, this.forwardTonAmount, this.message);
|
|
39
|
+
const signingMessage = this.createSigningMessage(WALLET_ID, this.seqno, this.expireTime);
|
|
40
|
+
const sendMode = 3;
|
|
41
|
+
signingMessage.bits.writeUint8(sendMode);
|
|
42
|
+
const outMsg = this.createOutMsg(this.senderJettonWalletAddress, this.tonAmount, jettonTransferPayload);
|
|
43
|
+
signingMessage.refs.push(outMsg);
|
|
44
|
+
this.unsignedMessage = Buffer.from(await signingMessage.hash()).toString('hex');
|
|
45
|
+
const signature = this._signatures.length > 0 ? this._signatures[0] : Buffer.from(new Uint8Array(64)).toString('hex');
|
|
46
|
+
const finalMessage = await this.createExternalMessage(signingMessage, this.seqno, signature);
|
|
47
|
+
this.finalMessage = TonWeb.utils.bytesToBase64(await finalMessage.toBoc(false));
|
|
48
|
+
const originalTxId = TonWeb.utils.bytesToBase64(await finalMessage.hash());
|
|
49
|
+
this._id = originalTxId.replace(/\//g, '_').replace(/\+/g, '-');
|
|
50
|
+
}
|
|
51
|
+
fromRawTransaction(rawTransaction) {
|
|
52
|
+
try {
|
|
53
|
+
const cell = TonWeb.boc.Cell.oneFromBoc(TonWeb.utils.base64ToBytes(rawTransaction));
|
|
54
|
+
const parsed = this.parseTransaction(cell);
|
|
55
|
+
this.transactionType = TransactionType.SendToken;
|
|
56
|
+
this.sender = parsed.fromAddress;
|
|
57
|
+
this.recipient = { address: parsed.payload.jettonRecipient, amount: parsed.payload.jettonAmount };
|
|
58
|
+
this.tonAmount = parsed.value;
|
|
59
|
+
this.forwardTonAmount = parsed.payload.forwardTonAmount;
|
|
60
|
+
this.senderJettonWalletAddress = parsed.toAddress;
|
|
61
|
+
this.seqno = parsed.seqno;
|
|
62
|
+
this.publicKey = parsed.publicKey;
|
|
63
|
+
this.expireTime = parsed.expireAt;
|
|
64
|
+
this.message = parsed.payload.message;
|
|
65
|
+
this._signatures.push(parsed.signature);
|
|
66
|
+
this.bounceable = parsed.bounce;
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
throw new Error('invalid raw transaction');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** @inheritDoc */
|
|
73
|
+
explainTransaction() {
|
|
74
|
+
const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'withdrawAmount'];
|
|
75
|
+
const outputs = [this.recipient];
|
|
76
|
+
const outputAmount = this.recipient.amount;
|
|
77
|
+
const withdrawAmount = this.withdrawAmount;
|
|
78
|
+
return {
|
|
79
|
+
displayOrder,
|
|
80
|
+
id: this.id,
|
|
81
|
+
outputs,
|
|
82
|
+
outputAmount,
|
|
83
|
+
changeOutputs: [],
|
|
84
|
+
changeAmount: '0',
|
|
85
|
+
fee: { fee: 'UNKNOWN' },
|
|
86
|
+
withdrawAmount,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9rZW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUzQixPQUFPLEVBQXdCLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsV0FBVztJQUsvQyxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixPQUFPO1lBQ0wsR0FBRyxJQUFJO1lBQ1AsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2Qyx5QkFBeUIsRUFBRSxJQUFJLENBQUMseUJBQXlCO1lBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUNoQixDQUFDO0lBQ2QsQ0FBQztJQUVPLDJCQUEyQixDQUNqQyxZQUFvQixFQUNwQixTQUFpQixFQUNqQixnQkFBd0IsRUFDeEIsT0FBZ0I7UUFFaEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0Ms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QVEsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDbEMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCO1FBQ2hCLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUVqSCxNQUFNLE9BQU8sR0FBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxPQUFPO1lBQ0wsWUFBWTtZQUNaLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLE9BQU87WUFDUCxZQUFZO1lBQ1osYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEdBQUc7WUFDakIsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtZQUN2QixjQUFjO1NBQ2YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUb25XZWIgZnJvbSAndG9ud2ViJztcbmltcG9ydCB7IEJOIH0gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJ3RvbndlYi9kaXN0L3R5cGVzL2JvYy9jZWxsJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEpFVFRPTl9UUkFOU0ZFUl9PUENPREUsIFdBTExFVF9JRCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFRva2VuVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbiB7XG4gIHB1YmxpYyBmb3J3YXJkVG9uQW1vdW50OiBzdHJpbmc7IC8vIGZvciBjb3ZlcmluZyBmb3J3YXJkIGZlZXMgZm9yIG5vdGlmeSB0cmFuc2ZlclxuICBwdWJsaWMgc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzczogc3RyaW5nOyAvLyB0aGUgc2VuZGVyJ3MgSmV0dG9uIHdhbGxldCBhZGRyZXNzXG4gIHB1YmxpYyB0b25BbW91bnQ6IHN0cmluZzsgLy8gYW1vdW50IG9mIFRPTiBzZW50IHRvIHRoZSBzZW5kZXIncyBKZXR0b24gd2FsbGV0XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlci50b0pzb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uanNvbixcbiAgICAgIGZvcndhcmRUb25BbW91bnQ6IHRoaXMuZm9yd2FyZFRvbkFtb3VudCxcbiAgICAgIHNlbmRlckpldHRvbldhbGxldEFkZHJlc3M6IHRoaXMuc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzcyxcbiAgICAgIHRvbkFtb3VudDogdGhpcy50b25BbW91bnQsXG4gICAgfSBhcyBUeERhdGE7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUpldHRvblRyYW5zZmVyUGF5bG9hZChcbiAgICBqZXR0b25BbW91bnQ6IHN0cmluZyxcbiAgICB0b0FkZHJlc3M6IHN0cmluZyxcbiAgICBmb3J3YXJkVG9uQW1vdW50OiBzdHJpbmcsXG4gICAgY29tbWVudD86IHN0cmluZ1xuICApOiBDZWxsIHtcbiAgICBjb25zdCBmb3J3YXJkUGF5bG9hZCA9IG5ldyBUb25XZWIuYm9jLkNlbGwoKTtcbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgZm9yd2FyZFBheWxvYWQuYml0cy53cml0ZVVpbnQoMCwgMzIpO1xuICAgICAgZm9yd2FyZFBheWxvYWQuYml0cy53cml0ZVN0cmluZyhjb21tZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXlsb2FkID0gbmV3IFRvbldlYi5ib2MuQ2VsbCgpO1xuICAgIHBheWxvYWQuYml0cy53cml0ZVVpbnQoSkVUVE9OX1RSQU5TRkVSX09QQ09ERSwgMzIpOyAvLyBTdG9yZSBKZXR0b24gdHJhbnNmZXIgb3AgY29kZVxuICAgIHBheWxvYWQuYml0cy53cml0ZVVpbnQoMCwgNjQpOyAvLyBxdWVyeV9pZFxuICAgIHBheWxvYWQuYml0cy53cml0ZUNvaW5zKG5ldyBCTihqZXR0b25BbW91bnQpKTsgLy8gSmV0dG9uIGFtb3VudCB0byB0cmFuc2ZlclxuICAgIHBheWxvYWQuYml0cy53cml0ZUFkZHJlc3MobmV3IFRvbldlYi5BZGRyZXNzKHRvQWRkcmVzcykpOyAvLyByZWNpcGllbnQncyBUT04gd2FsbGV0IGFkZHJlc3NcbiAgICBwYXlsb2FkLmJpdHMud3JpdGVBZGRyZXNzKG5ldyBUb25XZWIuQWRkcmVzcyh0aGlzLnNlbmRlcikpOyAvLyByZXNwb25zZV9kZXN0aW5hdGlvbiBmb3Igc2VuZGluZyBleGNlc3MgVE9OIChleGNlc3MgaXMgcmV0dXJuZWQgYmFjayB0byB0aGUgc2VuZGVyKVxuICAgIHBheWxvYWQuYml0cy53cml0ZUJpdChmYWxzZSk7IC8vIE5vIGN1c3RvbSBwYXlsb2FkXG4gICAgcGF5bG9hZC5iaXRzLndyaXRlQ29pbnMobmV3IEJOKGZvcndhcmRUb25BbW91bnQpKTsgLy8gZm9yd2FyZF90b25fYW1vdW50IHRvIHBheSBmZWVzXG4gICAgcGF5bG9hZC5iaXRzLndyaXRlQml0KHRydWUpOyAvLyBGb3J3YXJkIHBheWxvYWQgZXhpc3RzIGFzIGEgcmVmZXJlbmNlXG4gICAgcGF5bG9hZC5yZWZzLnB1c2goZm9yd2FyZFBheWxvYWQpOyAvLyBBZGQgZm9yd2FyZCBwYXlsb2FkIGFzIGEgcmVmZXJlbmNlXG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGpldHRvblRyYW5zZmVyUGF5bG9hZCA9IHRoaXMuY3JlYXRlSmV0dG9uVHJhbnNmZXJQYXlsb2FkKFxuICAgICAgdGhpcy5yZWNpcGllbnQuYW1vdW50LFxuICAgICAgdGhpcy5yZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgIHRoaXMuZm9yd2FyZFRvbkFtb3VudCxcbiAgICAgIHRoaXMubWVzc2FnZVxuICAgICk7XG5cbiAgICBjb25zdCBzaWduaW5nTWVzc2FnZSA9IHRoaXMuY3JlYXRlU2lnbmluZ01lc3NhZ2UoV0FMTEVUX0lELCB0aGlzLnNlcW5vLCB0aGlzLmV4cGlyZVRpbWUpO1xuICAgIGNvbnN0IHNlbmRNb2RlID0gMztcbiAgICBzaWduaW5nTWVzc2FnZS5iaXRzLndyaXRlVWludDgoc2VuZE1vZGUpO1xuICAgIGNvbnN0IG91dE1zZyA9IHRoaXMuY3JlYXRlT3V0TXNnKHRoaXMuc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzcywgdGhpcy50b25BbW91bnQsIGpldHRvblRyYW5zZmVyUGF5bG9hZCk7XG5cbiAgICBzaWduaW5nTWVzc2FnZS5yZWZzLnB1c2gob3V0TXNnKTtcbiAgICB0aGlzLnVuc2lnbmVkTWVzc2FnZSA9IEJ1ZmZlci5mcm9tKGF3YWl0IHNpZ25pbmdNZXNzYWdlLmhhc2goKSkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID1cbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMubGVuZ3RoID4gMCA/IHRoaXMuX3NpZ25hdHVyZXNbMF0gOiBCdWZmZXIuZnJvbShuZXcgVWludDhBcnJheSg2NCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBmaW5hbE1lc3NhZ2UgPSBhd2FpdCB0aGlzLmNyZWF0ZUV4dGVybmFsTWVzc2FnZShzaWduaW5nTWVzc2FnZSwgdGhpcy5zZXFubywgc2lnbmF0dXJlKTtcblxuICAgIHRoaXMuZmluYWxNZXNzYWdlID0gVG9uV2ViLnV0aWxzLmJ5dGVzVG9CYXNlNjQoYXdhaXQgZmluYWxNZXNzYWdlLnRvQm9jKGZhbHNlKSk7XG5cbiAgICBjb25zdCBvcmlnaW5hbFR4SWQgPSBUb25XZWIudXRpbHMuYnl0ZXNUb0Jhc2U2NChhd2FpdCBmaW5hbE1lc3NhZ2UuaGFzaCgpKTtcbiAgICB0aGlzLl9pZCA9IG9yaWdpbmFsVHhJZC5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC9cXCsvZywgJy0nKTtcbiAgfVxuXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNlbGwgPSBUb25XZWIuYm9jLkNlbGwub25lRnJvbUJvYyhUb25XZWIudXRpbHMuYmFzZTY0VG9CeXRlcyhyYXdUcmFuc2FjdGlvbikpO1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVRyYW5zYWN0aW9uKGNlbGwpO1xuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW47XG4gICAgICB0aGlzLnNlbmRlciA9IHBhcnNlZC5mcm9tQWRkcmVzcztcbiAgICAgIHRoaXMucmVjaXBpZW50ID0geyBhZGRyZXNzOiBwYXJzZWQucGF5bG9hZC5qZXR0b25SZWNpcGllbnQsIGFtb3VudDogcGFyc2VkLnBheWxvYWQuamV0dG9uQW1vdW50IH07XG4gICAgICB0aGlzLnRvbkFtb3VudCA9IHBhcnNlZC52YWx1ZTtcbiAgICAgIHRoaXMuZm9yd2FyZFRvbkFtb3VudCA9IHBhcnNlZC5wYXlsb2FkLmZvcndhcmRUb25BbW91bnQ7XG4gICAgICB0aGlzLnNlbmRlckpldHRvbldhbGxldEFkZHJlc3MgPSBwYXJzZWQudG9BZGRyZXNzO1xuICAgICAgdGhpcy5zZXFubyA9IHBhcnNlZC5zZXFubztcbiAgICAgIHRoaXMucHVibGljS2V5ID0gcGFyc2VkLnB1YmxpY0tleSBhcyBzdHJpbmc7XG4gICAgICB0aGlzLmV4cGlyZVRpbWUgPSBwYXJzZWQuZXhwaXJlQXQ7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSBwYXJzZWQucGF5bG9hZC5tZXNzYWdlO1xuICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHBhcnNlZC5zaWduYXR1cmUpO1xuICAgICAgdGhpcy5ib3VuY2VhYmxlID0gcGFyc2VkLmJvdW5jZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ291dHB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZU91dHB1dHMnLCAnY2hhbmdlQW1vdW50JywgJ2ZlZScsICd3aXRoZHJhd0Ftb3VudCddO1xuXG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFt0aGlzLnJlY2lwaWVudF07XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gdGhpcy5yZWNpcGllbnQuYW1vdW50O1xuICAgIGNvbnN0IHdpdGhkcmF3QW1vdW50ID0gdGhpcy53aXRoZHJhd0Ftb3VudDtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6ICdVTktOT1dOJyB9LFxuICAgICAgd2l0aGRyYXdBbW91bnQsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TransactionType, Recipient } from '@bitgo/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
import { TokenTransaction } from './tokenTransaction';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
export declare class TokenTransferBuilder extends TransactionBuilder {
|
|
7
|
+
protected _transaction: TokenTransaction;
|
|
8
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
9
|
+
protected get transactionType(): TransactionType;
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
14
|
+
setForwardTonAmount(amount: string): TokenTransferBuilder;
|
|
15
|
+
setSenderJettonWalletAddress(address: string): TokenTransferBuilder;
|
|
16
|
+
setTonAmount(amount: string): TokenTransferBuilder;
|
|
17
|
+
recipient(address: string, senderJettonWalletAddress: string, tonAmount: string, jettonAmount: string, forwardTonAmount: string): TokenTransferBuilder;
|
|
18
|
+
send(recipient: Recipient): TokenTransferBuilder;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=tokenTransferBuilder.d.ts.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
2
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
+
import { TokenTransaction } from './tokenTransaction';
|
|
4
|
+
export class TokenTransferBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(coinConfig) {
|
|
6
|
+
super(coinConfig);
|
|
7
|
+
this._transaction = new TokenTransaction(coinConfig);
|
|
8
|
+
}
|
|
9
|
+
get transactionType() {
|
|
10
|
+
return TransactionType.SendToken;
|
|
11
|
+
}
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
fromImplementation(rawTransaction) {
|
|
14
|
+
this.transaction.transactionType = TransactionType.SendToken;
|
|
15
|
+
this.transaction.fromRawTransaction(rawTransaction);
|
|
16
|
+
return this.transaction;
|
|
17
|
+
}
|
|
18
|
+
/** @inheritdoc */
|
|
19
|
+
async buildImplementation() {
|
|
20
|
+
this.transaction.transactionType = TransactionType.SendToken;
|
|
21
|
+
await this.transaction.build();
|
|
22
|
+
this.transaction.loadInputsAndOutputs();
|
|
23
|
+
return this.transaction;
|
|
24
|
+
}
|
|
25
|
+
setForwardTonAmount(amount) {
|
|
26
|
+
this.transaction.forwardTonAmount = amount;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
setSenderJettonWalletAddress(address) {
|
|
30
|
+
this.transaction.senderJettonWalletAddress = address;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
setTonAmount(amount) {
|
|
34
|
+
this.transaction.tonAmount = amount;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
// recipient method to handle both TON and token amounts
|
|
38
|
+
recipient(address, senderJettonWalletAddress, tonAmount, jettonAmount, forwardTonAmount) {
|
|
39
|
+
this._transaction.recipient = {
|
|
40
|
+
address: address,
|
|
41
|
+
amount: jettonAmount, // Jetton amount to be transferred
|
|
42
|
+
};
|
|
43
|
+
this._transaction.senderJettonWalletAddress = senderJettonWalletAddress; // The sender's Jetton wallet address
|
|
44
|
+
this._transaction.tonAmount = tonAmount; // TON amount sent to the sender's Jetton wallet
|
|
45
|
+
this._transaction.forwardTonAmount = forwardTonAmount; // TON amount to cover forward fees in case of notify transfer
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
send(recipient) {
|
|
49
|
+
this.transaction.recipient = recipient;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUd0RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBRzFELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsY0FBc0I7UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQztRQUM3RCxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQzdELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQy9CLElBQUksQ0FBQyxXQUFnQyxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxPQUFlO1FBQ3pDLElBQUksQ0FBQyxXQUFnQyxDQUFDLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN4QixJQUFJLENBQUMsV0FBZ0MsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxTQUFTLENBQ1AsT0FBZSxFQUNmLHlCQUFpQyxFQUNqQyxTQUFpQixFQUNqQixZQUFvQixFQUNwQixnQkFBd0I7UUFFeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUc7WUFDNUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTSxFQUFFLFlBQVksRUFBRSxrQ0FBa0M7U0FDekQsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFpQyxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDLENBQUMscUNBQXFDO1FBQ25JLElBQUksQ0FBQyxZQUFpQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxnREFBZ0Q7UUFDOUcsSUFBSSxDQUFDLFlBQWlDLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyw4REFBOEQ7UUFDM0ksT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQW9CO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSwgUmVjaXBpZW50IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90b2tlblRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBUb2tlblRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRva2VuVHJhbnNhY3Rpb247XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUb2tlblRyYW5zYWN0aW9uKGNvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uYnVpbGQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXRGb3J3YXJkVG9uQW1vdW50KGFtb3VudDogc3RyaW5nKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIFRva2VuVHJhbnNhY3Rpb24pLmZvcndhcmRUb25BbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRTZW5kZXJKZXR0b25XYWxsZXRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICAodGhpcy50cmFuc2FjdGlvbiBhcyBUb2tlblRyYW5zYWN0aW9uKS5zZW5kZXJKZXR0b25XYWxsZXRBZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFRvbkFtb3VudChhbW91bnQ6IHN0cmluZyk6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICAodGhpcy50cmFuc2FjdGlvbiBhcyBUb2tlblRyYW5zYWN0aW9uKS50b25BbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyByZWNpcGllbnQgbWV0aG9kIHRvIGhhbmRsZSBib3RoIFRPTiBhbmQgdG9rZW4gYW1vdW50c1xuICByZWNpcGllbnQoXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIHNlbmRlckpldHRvbldhbGxldEFkZHJlc3M6IHN0cmluZyxcbiAgICB0b25BbW91bnQ6IHN0cmluZyxcbiAgICBqZXR0b25BbW91bnQ6IHN0cmluZyxcbiAgICBmb3J3YXJkVG9uQW1vdW50OiBzdHJpbmdcbiAgKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnJlY2lwaWVudCA9IHtcbiAgICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGpldHRvbkFtb3VudCwgLy8gSmV0dG9uIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZFxuICAgIH07XG4gICAgKHRoaXMuX3RyYW5zYWN0aW9uIGFzIFRva2VuVHJhbnNhY3Rpb24pLnNlbmRlckpldHRvbldhbGxldEFkZHJlc3MgPSBzZW5kZXJKZXR0b25XYWxsZXRBZGRyZXNzOyAvLyBUaGUgc2VuZGVyJ3MgSmV0dG9uIHdhbGxldCBhZGRyZXNzXG4gICAgKHRoaXMuX3RyYW5zYWN0aW9uIGFzIFRva2VuVHJhbnNhY3Rpb24pLnRvbkFtb3VudCA9IHRvbkFtb3VudDsgLy8gVE9OIGFtb3VudCBzZW50IHRvIHRoZSBzZW5kZXIncyBKZXR0b24gd2FsbGV0XG4gICAgKHRoaXMuX3RyYW5zYWN0aW9uIGFzIFRva2VuVHJhbnNhY3Rpb24pLmZvcndhcmRUb25BbW91bnQgPSBmb3J3YXJkVG9uQW1vdW50OyAvLyBUT04gYW1vdW50IHRvIGNvdmVyIGZvcndhcmQgZmVlcyBpbiBjYXNlIG9mIG5vdGlmeSB0cmFuc2ZlclxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VuZChyZWNpcGllbnQ6IFJlY2lwaWVudCk6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCA9IHJlY2lwaWVudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import { Recipient, TransactionType } from '@bitgo/sdk-core';
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
export declare class TonWhalesDepositBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected get transactionType(): TransactionType;
|
|
7
|
+
setDepositMessage(queryId?: string): TonWhalesDepositBuilder;
|
|
8
|
+
setDepositAmount(amount: string): TonWhalesDepositBuilder;
|
|
9
|
+
send(recipient: Recipient): TonWhalesDepositBuilder;
|
|
10
|
+
setMessage(msg: string): TonWhalesDepositBuilder;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=tonWhalesDepositBuilder.d.ts.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
2
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { TON_WHALES_DEPOSIT_OPCODE } from './constants';
|
|
5
|
+
export class TonWhalesDepositBuilder extends TransactionBuilder {
|
|
6
|
+
constructor(_coinConfig) {
|
|
7
|
+
super(_coinConfig);
|
|
8
|
+
this._transaction = new Transaction(_coinConfig);
|
|
9
|
+
}
|
|
10
|
+
get transactionType() {
|
|
11
|
+
return TransactionType.TonWhalesDeposit;
|
|
12
|
+
}
|
|
13
|
+
setDepositMessage(queryId) {
|
|
14
|
+
// Deposit payload is just OpCode + QueryId.
|
|
15
|
+
// The Amount is in the transaction value (recipient.amount)
|
|
16
|
+
// The Gas Limit is hardcoded in Transaction.ts build()
|
|
17
|
+
const qId = queryId || '0000000000000000';
|
|
18
|
+
this.transaction.message = TON_WHALES_DEPOSIT_OPCODE + qId;
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
setDepositAmount(amount) {
|
|
22
|
+
if (!this.transaction.recipient) {
|
|
23
|
+
this.transaction.recipient = { address: '', amount: amount };
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.transaction.recipient.amount = amount;
|
|
27
|
+
}
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
send(recipient) {
|
|
31
|
+
this.transaction.recipient = recipient;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
setMessage(msg) {
|
|
35
|
+
throw new Error('Method not implemented.');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RvbldoYWxlc0RlcG9zaXRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBQzdELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZ0I7UUFDaEMsNENBQTRDO1FBQzVDLDREQUE0RDtRQUM1RCx1REFBdUQ7UUFDdkQsTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLGtCQUFrQixDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLHlCQUF5QixHQUFHLEdBQUcsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBb0I7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRPTl9XSEFMRVNfREVQT1NJVF9PUENPREUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUb25XaGFsZXNEZXBvc2l0QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuVG9uV2hhbGVzRGVwb3NpdDtcbiAgfVxuXG4gIHNldERlcG9zaXRNZXNzYWdlKHF1ZXJ5SWQ/OiBzdHJpbmcpOiBUb25XaGFsZXNEZXBvc2l0QnVpbGRlciB7XG4gICAgLy8gRGVwb3NpdCBwYXlsb2FkIGlzIGp1c3QgT3BDb2RlICsgUXVlcnlJZC5cbiAgICAvLyBUaGUgQW1vdW50IGlzIGluIHRoZSB0cmFuc2FjdGlvbiB2YWx1ZSAocmVjaXBpZW50LmFtb3VudClcbiAgICAvLyBUaGUgR2FzIExpbWl0IGlzIGhhcmRjb2RlZCBpbiBUcmFuc2FjdGlvbi50cyBidWlsZCgpXG4gICAgY29uc3QgcUlkID0gcXVlcnlJZCB8fCAnMDAwMDAwMDAwMDAwMDAwMCc7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5tZXNzYWdlID0gVE9OX1dIQUxFU19ERVBPU0lUX09QQ09ERSArIHFJZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldERlcG9zaXRBbW91bnQoYW1vdW50OiBzdHJpbmcpOiBUb25XaGFsZXNEZXBvc2l0QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQgPSB7IGFkZHJlc3M6ICcnLCBhbW91bnQ6IGFtb3VudCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQgPSBhbW91bnQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VuZChyZWNpcGllbnQ6IFJlY2lwaWVudCk6IFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCA9IHJlY2lwaWVudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldE1lc3NhZ2UobXNnOiBzdHJpbmcpOiBUb25XaGFsZXNEZXBvc2l0QnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import { Recipient, TransactionType } from '@bitgo/sdk-core';
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
export declare class TonWhalesVestingDepositBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected get transactionType(): TransactionType;
|
|
7
|
+
setDepositMessage(): TonWhalesVestingDepositBuilder;
|
|
8
|
+
setDepositAmount(amount: string): TonWhalesVestingDepositBuilder;
|
|
9
|
+
send(recipient: Recipient): TonWhalesVestingDepositBuilder;
|
|
10
|
+
setMessage(msg: string): TonWhalesVestingDepositBuilder;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=tonWhalesVestingDepositBuilder.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
2
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
export class TonWhalesVestingDepositBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(_coinConfig) {
|
|
6
|
+
super(_coinConfig);
|
|
7
|
+
this._transaction = new Transaction(_coinConfig);
|
|
8
|
+
}
|
|
9
|
+
get transactionType() {
|
|
10
|
+
return TransactionType.TonWhalesVestingDeposit;
|
|
11
|
+
}
|
|
12
|
+
setDepositMessage() {
|
|
13
|
+
this.transaction.message = 'Deposit';
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
setDepositAmount(amount) {
|
|
17
|
+
if (!this.transaction.recipient) {
|
|
18
|
+
this.transaction.recipient = { address: '', amount: amount };
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.transaction.recipient.amount = amount;
|
|
22
|
+
}
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
send(recipient) {
|
|
26
|
+
this.transaction.recipient = recipient;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
setMessage(msg) {
|
|
30
|
+
throw new Error('Method not implemented. Use setDepositMessage() instead.');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9uV2hhbGVzVmVzdGluZ0RlcG9zaXRCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b25XaGFsZXNWZXN0aW5nRGVwb3NpdEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxPQUFPLDhCQUErQixTQUFRLGtCQUFrQjtJQUNwRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFjLGVBQWU7UUFDM0IsT0FBTyxlQUFlLENBQUMsdUJBQXVCLENBQUM7SUFDakQsQ0FBQztJQUNELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBb0I7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0O1xuICB9XG4gIHNldERlcG9zaXRNZXNzYWdlKCk6IFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5tZXNzYWdlID0gJ0RlcG9zaXQnO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0RGVwb3NpdEFtb3VudChhbW91bnQ6IHN0cmluZyk6IFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQgPSB7IGFkZHJlc3M6ICcnLCBhbW91bnQ6IGFtb3VudCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQgPSBhbW91bnQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VuZChyZWNpcGllbnQ6IFJlY2lwaWVudCk6IFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQgPSByZWNpcGllbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgc2V0TWVzc2FnZShtc2c6IHN0cmluZyk6IFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLiBVc2Ugc2V0RGVwb3NpdE1lc3NhZ2UoKSBpbnN0ZWFkLicpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import { Recipient, TransactionType } from '@bitgo/sdk-core';
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
export declare class TonWhalesVestingWithdrawBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected get transactionType(): TransactionType;
|
|
7
|
+
setWithdrawMessage(): TonWhalesVestingWithdrawBuilder;
|
|
8
|
+
setForwardAmount(amount: string): TonWhalesVestingWithdrawBuilder;
|
|
9
|
+
send(recipient: Recipient): TonWhalesVestingWithdrawBuilder;
|
|
10
|
+
setMessage(msg: string): TonWhalesVestingWithdrawBuilder;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=tonWhalesVestingWithdrawBuilder.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
2
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
export class TonWhalesVestingWithdrawBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(_coinConfig) {
|
|
6
|
+
super(_coinConfig);
|
|
7
|
+
this._transaction = new Transaction(_coinConfig);
|
|
8
|
+
}
|
|
9
|
+
get transactionType() {
|
|
10
|
+
return TransactionType.TonWhalesVestingWithdrawal;
|
|
11
|
+
}
|
|
12
|
+
setWithdrawMessage() {
|
|
13
|
+
this.transaction.message = 'Withdraw';
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
setForwardAmount(amount) {
|
|
17
|
+
if (!this.transaction.recipient) {
|
|
18
|
+
this.transaction.recipient = { address: '', amount: amount };
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.transaction.recipient.amount = amount;
|
|
22
|
+
}
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
send(recipient) {
|
|
26
|
+
this.transaction.recipient = recipient;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
setMessage(msg) {
|
|
30
|
+
throw new Error('Method not implemented. Use setWithdrawMessage() instead.');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsa0JBQWtCO0lBQ3JFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELElBQWMsZUFBZTtRQUMzQixPQUFPLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQztJQUNwRCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBb0I7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRvbldoYWxlc1Zlc3RpbmdXaXRoZHJhd0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5Ub25XaGFsZXNWZXN0aW5nV2l0aGRyYXdhbDtcbiAgfVxuICBzZXRXaXRoZHJhd01lc3NhZ2UoKTogVG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3QnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5tZXNzYWdlID0gJ1dpdGhkcmF3JztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEZvcndhcmRBbW91bnQoYW1vdW50OiBzdHJpbmcpOiBUb25XaGFsZXNWZXN0aW5nV2l0aGRyYXdCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50KSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCA9IHsgYWRkcmVzczogJycsIGFtb3VudDogYW1vdW50IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50LmFtb3VudCA9IGFtb3VudDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZW5kKHJlY2lwaWVudDogUmVjaXBpZW50KTogVG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3QnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQgPSByZWNpcGllbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgc2V0TWVzc2FnZShtc2c6IHN0cmluZyk6IFRvbldoYWxlc1Zlc3RpbmdXaXRoZHJhd0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4gVXNlIHNldFdpdGhkcmF3TWVzc2FnZSgpIGluc3RlYWQuJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import { Recipient, TransactionType } from '@bitgo/sdk-core';
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
export declare class TonWhalesWithdrawalBuilder extends TransactionBuilder {
|
|
5
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected get transactionType(): TransactionType;
|
|
7
|
+
/**
|
|
8
|
+
* Sets the payload for the withdrawal request.
|
|
9
|
+
* Structure: OpCode (32) + QueryId (64) + GasLimit (Coins) + UnstakeAmount (Coins)
|
|
10
|
+
* * @param unstakeAmount The amount of NanoTON to unstake (inside payload)
|
|
11
|
+
* @param unstakeAmount The amount to unstake
|
|
12
|
+
* @param queryId Optional custom query ID
|
|
13
|
+
*/
|
|
14
|
+
setWithdrawalMessage(unstakeAmount: string, queryId?: string): TonWhalesWithdrawalBuilder;
|
|
15
|
+
/**
|
|
16
|
+
* Sets the message to withdraw EVERYTHING from the pool.
|
|
17
|
+
* This sets the unstakeAmount to "0", which is the specific signal for full withdrawal.
|
|
18
|
+
*/
|
|
19
|
+
setFullWithdrawalMessage(queryId?: string): TonWhalesWithdrawalBuilder;
|
|
20
|
+
/**
|
|
21
|
+
* Sets the value attached to the transaction (The Fees).
|
|
22
|
+
* NOTE: This is NOT the unstake amount. This is the fee paid to the pool
|
|
23
|
+
* to process the request (e.g. withdrawFee + receiptPrice).
|
|
24
|
+
* * @param amount NanoTON amount to attach to the message
|
|
25
|
+
*/
|
|
26
|
+
setForwardAmount(amount: string): TonWhalesWithdrawalBuilder;
|
|
27
|
+
send(recipient: Recipient): TonWhalesWithdrawalBuilder;
|
|
28
|
+
setMessage(msg: string): TonWhalesWithdrawalBuilder;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=tonWhalesWithdrawalBuilder.d.ts.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { TransactionType } from '@bitgo/sdk-core';
|
|
2
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { TON_WHALES_WITHDRAW_OPCODE } from './constants';
|
|
5
|
+
export class TonWhalesWithdrawalBuilder extends TransactionBuilder {
|
|
6
|
+
constructor(_coinConfig) {
|
|
7
|
+
super(_coinConfig);
|
|
8
|
+
this._transaction = new Transaction(_coinConfig);
|
|
9
|
+
}
|
|
10
|
+
get transactionType() {
|
|
11
|
+
return TransactionType.TonWhalesWithdrawal;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Sets the payload for the withdrawal request.
|
|
15
|
+
* Structure: OpCode (32) + QueryId (64) + GasLimit (Coins) + UnstakeAmount (Coins)
|
|
16
|
+
* * @param unstakeAmount The amount of NanoTON to unstake (inside payload)
|
|
17
|
+
* @param unstakeAmount The amount to unstake
|
|
18
|
+
* @param queryId Optional custom query ID
|
|
19
|
+
*/
|
|
20
|
+
setWithdrawalMessage(unstakeAmount, queryId) {
|
|
21
|
+
const qId = queryId || '0000000000000000';
|
|
22
|
+
this.transaction.withdrawAmount = unstakeAmount;
|
|
23
|
+
this.transaction.message = TON_WHALES_WITHDRAW_OPCODE + qId + unstakeAmount;
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Sets the message to withdraw EVERYTHING from the pool.
|
|
28
|
+
* This sets the unstakeAmount to "0", which is the specific signal for full withdrawal.
|
|
29
|
+
*/
|
|
30
|
+
setFullWithdrawalMessage(queryId) {
|
|
31
|
+
return this.setWithdrawalMessage('0', queryId);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Sets the value attached to the transaction (The Fees).
|
|
35
|
+
* NOTE: This is NOT the unstake amount. This is the fee paid to the pool
|
|
36
|
+
* to process the request (e.g. withdrawFee + receiptPrice).
|
|
37
|
+
* * @param amount NanoTON amount to attach to the message
|
|
38
|
+
*/
|
|
39
|
+
setForwardAmount(amount) {
|
|
40
|
+
if (!this.transaction.recipient) {
|
|
41
|
+
this.transaction.recipient = { address: '', amount: amount };
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.transaction.recipient.amount = amount;
|
|
45
|
+
}
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
send(recipient) {
|
|
49
|
+
this.transaction.recipient = recipient;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
setMessage(msg) {
|
|
53
|
+
throw new Error('Use setWithdrawalMessage for specific payload construction');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RvbldoYWxlc1dpdGhkcmF3YWxCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsa0JBQWtCO0lBQ2hFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsb0JBQW9CLENBQUMsYUFBcUIsRUFBRSxPQUFnQjtRQUMxRCxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksa0JBQWtCLENBQUM7UUFFMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLDBCQUEwQixHQUFHLEdBQUcsR0FBRyxhQUFhLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsd0JBQXdCLENBQUMsT0FBZ0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMvRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFvQjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBSZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVE9OX1dIQUxFU19XSVRIRFJBV19PUENPREUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuVG9uV2hhbGVzV2l0aGRyYXdhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXlsb2FkIGZvciB0aGUgd2l0aGRyYXdhbCByZXF1ZXN0LlxuICAgKiBTdHJ1Y3R1cmU6IE9wQ29kZSAoMzIpICsgUXVlcnlJZCAoNjQpICsgR2FzTGltaXQgKENvaW5zKSArIFVuc3Rha2VBbW91bnQgKENvaW5zKVxuICAgKiAqIEBwYXJhbSB1bnN0YWtlQW1vdW50IFRoZSBhbW91bnQgb2YgTmFub1RPTiB0byB1bnN0YWtlIChpbnNpZGUgcGF5bG9hZClcbiAgICogQHBhcmFtIHVuc3Rha2VBbW91bnQgVGhlIGFtb3VudCB0byB1bnN0YWtlXG4gICAqIEBwYXJhbSBxdWVyeUlkIE9wdGlvbmFsIGN1c3RvbSBxdWVyeSBJRFxuICAgKi9cbiAgc2V0V2l0aGRyYXdhbE1lc3NhZ2UodW5zdGFrZUFtb3VudDogc3RyaW5nLCBxdWVyeUlkPzogc3RyaW5nKTogVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIge1xuICAgIGNvbnN0IHFJZCA9IHF1ZXJ5SWQgfHwgJzAwMDAwMDAwMDAwMDAwMDAnO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi53aXRoZHJhd0Ftb3VudCA9IHVuc3Rha2VBbW91bnQ7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5tZXNzYWdlID0gVE9OX1dIQUxFU19XSVRIRFJBV19PUENPREUgKyBxSWQgKyB1bnN0YWtlQW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1lc3NhZ2UgdG8gd2l0aGRyYXcgRVZFUllUSElORyBmcm9tIHRoZSBwb29sLlxuICAgKiBUaGlzIHNldHMgdGhlIHVuc3Rha2VBbW91bnQgdG8gXCIwXCIsIHdoaWNoIGlzIHRoZSBzcGVjaWZpYyBzaWduYWwgZm9yIGZ1bGwgd2l0aGRyYXdhbC5cbiAgICovXG4gIHNldEZ1bGxXaXRoZHJhd2FsTWVzc2FnZShxdWVyeUlkPzogc3RyaW5nKTogVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldFdpdGhkcmF3YWxNZXNzYWdlKCcwJywgcXVlcnlJZCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zYWN0aW9uIChUaGUgRmVlcykuXG4gICAqIE5PVEU6IFRoaXMgaXMgTk9UIHRoZSB1bnN0YWtlIGFtb3VudC4gVGhpcyBpcyB0aGUgZmVlIHBhaWQgdG8gdGhlIHBvb2xcbiAgICogdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCAoZS5nLiB3aXRoZHJhd0ZlZSArIHJlY2VpcHRQcmljZSkuXG4gICAqICogQHBhcmFtIGFtb3VudCBOYW5vVE9OIGFtb3VudCB0byBhdHRhY2ggdG8gdGhlIG1lc3NhZ2VcbiAgICovXG4gIHNldEZvcndhcmRBbW91bnQoYW1vdW50OiBzdHJpbmcpOiBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQgPSB7IGFkZHJlc3M6ICcnLCBhbW91bnQ6IGFtb3VudCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQgPSBhbW91bnQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VuZChyZWNpcGllbnQ6IFJlY2lwaWVudCk6IFRvbldoYWxlc1dpdGhkcmF3YWxCdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCA9IHJlY2lwaWVudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldE1lc3NhZ2UobXNnOiBzdHJpbmcpOiBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVc2Ugc2V0V2l0aGRyYXdhbE1lc3NhZ2UgZm9yIHNwZWNpZmljIHBheWxvYWQgY29uc3RydWN0aW9uJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Cell } from 'tonweb/dist/types/boc/cell';
|
|
2
|
+
import { BaseKey, BaseTransaction, Recipient, TransactionType } from '@bitgo/sdk-core';
|
|
3
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
4
|
+
import { TransactionExplanation, TxData } from './iface';
|
|
5
|
+
export declare class Transaction extends BaseTransaction {
|
|
6
|
+
recipient: Recipient;
|
|
7
|
+
bounceable: boolean;
|
|
8
|
+
fromAddressBounceable: boolean;
|
|
9
|
+
toAddressBounceable: boolean;
|
|
10
|
+
message: string;
|
|
11
|
+
withdrawAmount: string;
|
|
12
|
+
seqno: number;
|
|
13
|
+
expireTime: number;
|
|
14
|
+
sender: string;
|
|
15
|
+
publicKey: string;
|
|
16
|
+
isV3ContractMessage: boolean;
|
|
17
|
+
sub_wallet_id: number;
|
|
18
|
+
protected unsignedMessage: string;
|
|
19
|
+
protected finalMessage: string;
|
|
20
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
21
|
+
canSign(key: BaseKey): boolean;
|
|
22
|
+
toBroadcastFormat(): string;
|
|
23
|
+
toJson(): TxData;
|
|
24
|
+
get signablePayload(): Buffer;
|
|
25
|
+
/**
|
|
26
|
+
* Set the transaction type.
|
|
27
|
+
* @param {TransactionType} transactionType The transaction type to be set.
|
|
28
|
+
*/
|
|
29
|
+
set transactionType(transactionType: TransactionType);
|
|
30
|
+
build(): Promise<void>;
|
|
31
|
+
protected createSigningMessage(walletId: any, seqno: any, expireAt: any): Cell;
|
|
32
|
+
protected createOutMsg(address: any, amount: any, payload: any): Cell;
|
|
33
|
+
createExternalMessage(signingMessage: Cell, seqno: number, signature: string): Promise<Cell>;
|
|
34
|
+
loadInputsAndOutputs(): void;
|
|
35
|
+
fromRawTransaction(rawTransaction: string): void;
|
|
36
|
+
/** @inheritDoc */
|
|
37
|
+
explainTransaction(): TransactionExplanation;
|
|
38
|
+
protected parseTransaction(cell: Cell): any;
|
|
39
|
+
private parseTransactionBody;
|
|
40
|
+
private parseTransferStateInit;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=transaction.d.ts.map
|