@bitgo-beta/sdk-coin-ton 1.0.1-beta.1069 → 1.0.1-beta.1070
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/src/lib/constants.d.ts +4 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +7 -0
- package/dist/src/lib/singleNominatorWithdrawBuilder.d.ts +1 -1
- package/dist/src/lib/singleNominatorWithdrawBuilder.d.ts.map +1 -1
- package/dist/src/lib/singleNominatorWithdrawBuilder.js +4 -2
- package/dist/src/lib/tokenTransaction.d.ts +16 -0
- package/dist/src/lib/tokenTransaction.d.ts.map +1 -0
- package/dist/src/lib/tokenTransaction.js +97 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts +20 -0
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/tokenTransferBuilder.js +57 -0
- package/dist/src/lib/transaction.d.ts +7 -7
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +48 -19
- package/dist/src/lib/transactionBuilder.d.ts +2 -2
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +3 -5
- package/dist/src/lib/transactionBuilderFactory.d.ts +6 -1
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +14 -3
- package/dist/src/lib/transferBuilder.d.ts +1 -1
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +4 -2
- package/dist/src/ton.d.ts.map +1 -1
- package/dist/src/ton.js +7 -6
- package/package.json +6 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,sBAAsB,YAAa,CAAC;AACjD,eAAO,MAAM,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WITHDRAW_OPCODE = exports.JETTON_TRANSFER_OPCODE = exports.WALLET_ID = void 0;
|
|
4
|
+
exports.WALLET_ID = 698983191;
|
|
5
|
+
exports.JETTON_TRANSFER_OPCODE = 0x0f8a7ea5;
|
|
6
|
+
exports.WITHDRAW_OPCODE = '00001000';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ3RCLFFBQUEsc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLFFBQUEsZUFBZSxHQUFHLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBXQUxMRVRfSUQgPSA2OTg5ODMxOTE7XG5leHBvcnQgY29uc3QgSkVUVE9OX1RSQU5TRkVSX09QQ09ERSA9IDB4MGY4YTdlYTU7XG5leHBvcnQgY29uc3QgV0lUSERSQVdfT1BDT0RFID0gJzAwMDAxMDAwJztcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TransactionBuilder } from './transactionBuilder';
|
|
2
1
|
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
2
|
import { Recipient, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
4
|
export declare class SingleNominatorWithdrawBuilder extends TransactionBuilder {
|
|
5
5
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
6
6
|
protected get transactionType(): TransactionType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleNominatorWithdrawBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/singleNominatorWithdrawBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"singleNominatorWithdrawBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/singleNominatorWithdrawBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,8BAA+B,SAAQ,kBAAkB;gBACxD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,8BAA8B;IAKjE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,8BAA8B;IAK1D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,8BAA8B;CAGxD"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SingleNominatorWithdrawBuilder = void 0;
|
|
4
|
-
const transactionBuilder_1 = require("./transactionBuilder");
|
|
5
4
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
6
|
+
const transaction_1 = require("./transaction");
|
|
6
7
|
class SingleNominatorWithdrawBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
7
8
|
constructor(_coinConfig) {
|
|
8
9
|
super(_coinConfig);
|
|
10
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
9
11
|
}
|
|
10
12
|
get transactionType() {
|
|
11
13
|
return sdk_core_1.TransactionType.SingleNominatorWithdraw;
|
|
@@ -23,4 +25,4 @@ class SingleNominatorWithdrawBuilder extends transactionBuilder_1.TransactionBui
|
|
|
23
25
|
}
|
|
24
26
|
}
|
|
25
27
|
exports.SingleNominatorWithdrawBuilder = SingleNominatorWithdrawBuilder;
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQWtFO0FBQ2xFLDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFFNUMsTUFBYSw4QkFBK0IsU0FBUSx1Q0FBa0I7SUFDcEUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsdUJBQXVCLENBQUM7SUFDakQsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFvQjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQXZCRCx3RUF1QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBSZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNpbmdsZU5vbWluYXRvcldpdGhkcmF3O1xuICB9XG5cbiAgc2V0V2l0aGRyYXdBbW91bnQoYW1vdW50OiBzdHJpbmcpOiBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ud2l0aGRyYXdBbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZW5kKHJlY2lwaWVudDogUmVjaXBpZW50KTogU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCA9IHJlY2lwaWVudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldE1lc3NhZ2UobXNnOiBzdHJpbmcpOiBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import { TransactionExplanation, TxData } from './iface';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
export declare class TokenTransaction extends Transaction {
|
|
5
|
+
forwardTonAmount: string;
|
|
6
|
+
senderJettonWalletAddress: string;
|
|
7
|
+
tonAmount: string;
|
|
8
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
9
|
+
toJson(): TxData;
|
|
10
|
+
private createJettonTransferPayload;
|
|
11
|
+
build(): Promise<void>;
|
|
12
|
+
fromRawTransaction(rawTransaction: string): void;
|
|
13
|
+
/** @inheritDoc */
|
|
14
|
+
explainTransaction(): TransactionExplanation;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=tokenTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,gBAAiB,SAAQ,WAAW;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,EAAE,MAAM,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;gBAEb,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,MAAM,IAAI,MAAM;IAUhB,OAAO,CAAC,2BAA2B;IA0B7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAsBhD,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;CAiB7C"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TokenTransaction = void 0;
|
|
7
|
+
const tonweb_1 = __importDefault(require("tonweb"));
|
|
8
|
+
const bn_js_1 = require("bn.js");
|
|
9
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
10
|
+
const transaction_1 = require("./transaction");
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
class TokenTransaction extends transaction_1.Transaction {
|
|
13
|
+
constructor(coinConfig) {
|
|
14
|
+
super(coinConfig);
|
|
15
|
+
}
|
|
16
|
+
toJson() {
|
|
17
|
+
const json = super.toJson();
|
|
18
|
+
return {
|
|
19
|
+
...json,
|
|
20
|
+
forwardTonAmount: this.forwardTonAmount,
|
|
21
|
+
senderJettonWalletAddress: this.senderJettonWalletAddress,
|
|
22
|
+
tonAmount: this.tonAmount,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
createJettonTransferPayload(jettonAmount, toAddress, forwardTonAmount, comment) {
|
|
26
|
+
const forwardPayload = new tonweb_1.default.boc.Cell();
|
|
27
|
+
if (comment) {
|
|
28
|
+
forwardPayload.bits.writeUint(0, 32);
|
|
29
|
+
forwardPayload.bits.writeString(comment);
|
|
30
|
+
}
|
|
31
|
+
const payload = new tonweb_1.default.boc.Cell();
|
|
32
|
+
payload.bits.writeUint(constants_1.JETTON_TRANSFER_OPCODE, 32); // Store Jetton transfer op code
|
|
33
|
+
payload.bits.writeUint(0, 64); // query_id
|
|
34
|
+
payload.bits.writeCoins(new bn_js_1.BN(jettonAmount)); // Jetton amount to transfer
|
|
35
|
+
payload.bits.writeAddress(new tonweb_1.default.Address(toAddress)); // recipient's TON wallet address
|
|
36
|
+
payload.bits.writeAddress(new tonweb_1.default.Address(this.sender)); // response_destination for sending excess TON (excess is returned back to the sender)
|
|
37
|
+
payload.bits.writeBit(false); // No custom payload
|
|
38
|
+
payload.bits.writeCoins(new bn_js_1.BN(forwardTonAmount)); // forward_ton_amount to pay fees
|
|
39
|
+
payload.bits.writeBit(true); // Forward payload exists as a reference
|
|
40
|
+
payload.refs.push(forwardPayload); // Add forward payload as a reference
|
|
41
|
+
return payload;
|
|
42
|
+
}
|
|
43
|
+
async build() {
|
|
44
|
+
const jettonTransferPayload = this.createJettonTransferPayload(this.recipient.amount, this.recipient.address, this.forwardTonAmount, this.message);
|
|
45
|
+
const signingMessage = this.createSigningMessage(constants_1.WALLET_ID, this.seqno, this.expireTime);
|
|
46
|
+
const sendMode = 3;
|
|
47
|
+
signingMessage.bits.writeUint8(sendMode);
|
|
48
|
+
const outMsg = this.createOutMsg(this.senderJettonWalletAddress, this.tonAmount, jettonTransferPayload);
|
|
49
|
+
signingMessage.refs.push(outMsg);
|
|
50
|
+
this.unsignedMessage = Buffer.from(await signingMessage.hash()).toString('hex');
|
|
51
|
+
const signature = this._signatures.length > 0 ? this._signatures[0] : Buffer.from(new Uint8Array(64)).toString('hex');
|
|
52
|
+
const finalMessage = await this.createExternalMessage(signingMessage, this.seqno, signature);
|
|
53
|
+
this.finalMessage = tonweb_1.default.utils.bytesToBase64(await finalMessage.toBoc(false));
|
|
54
|
+
const originalTxId = tonweb_1.default.utils.bytesToBase64(await finalMessage.hash());
|
|
55
|
+
this._id = originalTxId.replace(/\//g, '_').replace(/\+/g, '-');
|
|
56
|
+
}
|
|
57
|
+
fromRawTransaction(rawTransaction) {
|
|
58
|
+
try {
|
|
59
|
+
const cell = tonweb_1.default.boc.Cell.oneFromBoc(tonweb_1.default.utils.base64ToBytes(rawTransaction));
|
|
60
|
+
const parsed = this.parseTransaction(cell);
|
|
61
|
+
this.transactionType = sdk_core_1.TransactionType.SendToken;
|
|
62
|
+
this.sender = parsed.fromAddress;
|
|
63
|
+
this.recipient = { address: parsed.payload.jettonRecipient, amount: parsed.payload.jettonAmount };
|
|
64
|
+
this.tonAmount = parsed.value;
|
|
65
|
+
this.forwardTonAmount = parsed.payload.forwardTonAmount;
|
|
66
|
+
this.senderJettonWalletAddress = parsed.toAddress;
|
|
67
|
+
this.seqno = parsed.seqno;
|
|
68
|
+
this.publicKey = parsed.publicKey;
|
|
69
|
+
this.expireTime = parsed.expireAt;
|
|
70
|
+
this.message = parsed.payload.message;
|
|
71
|
+
this._signatures.push(parsed.signature);
|
|
72
|
+
this.bounceable = parsed.bounce;
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
throw new Error('invalid raw transaction');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** @inheritDoc */
|
|
79
|
+
explainTransaction() {
|
|
80
|
+
const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'withdrawAmount'];
|
|
81
|
+
const outputs = [this.recipient];
|
|
82
|
+
const outputAmount = this.recipient.amount;
|
|
83
|
+
const withdrawAmount = this.withdrawAmount;
|
|
84
|
+
return {
|
|
85
|
+
displayOrder,
|
|
86
|
+
id: this.id,
|
|
87
|
+
outputs,
|
|
88
|
+
outputAmount,
|
|
89
|
+
changeOutputs: [],
|
|
90
|
+
changeAmount: '0',
|
|
91
|
+
fee: { fee: 'UNKNOWN' },
|
|
92
|
+
withdrawAmount,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.TokenTransaction = TokenTransaction;
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9rZW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsaUNBQTJCO0FBRTNCLG1EQUE2RTtBQUc3RSwrQ0FBNEM7QUFDNUMsMkNBQWdFO0FBRWhFLE1BQWEsZ0JBQWlCLFNBQVEseUJBQVc7SUFLL0MsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtZQUN6RCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDaEIsQ0FBQztJQUNkLENBQUM7SUFFTywyQkFBMkIsQ0FDakMsWUFBb0IsRUFDcEIsU0FBaUIsRUFDakIsZ0JBQXdCLEVBQ3hCLE9BQWdCO1FBRWhCLE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQ0FBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztR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QUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7UUFDaEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWpILE1BQU0sT0FBTyxHQUEyQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLE9BQU87WUFDTCxZQUFZO1lBQ1osRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsT0FBTztZQUNQLFlBQVk7WUFDWixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1lBQ3ZCLGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBL0dELDRDQStHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUb25XZWIgZnJvbSAndG9ud2ViJztcbmltcG9ydCB7IEJOIH0gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJ3RvbndlYi9kaXN0L3R5cGVzL2JvYy9jZWxsJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBKRVRUT05fVFJBTlNGRVJfT1BDT0RFLCBXQUxMRVRfSUQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUb2tlblRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwdWJsaWMgZm9yd2FyZFRvbkFtb3VudDogc3RyaW5nOyAvLyBmb3IgY292ZXJpbmcgZm9yd2FyZCBmZWVzIGZvciBub3RpZnkgdHJhbnNmZXJcbiAgcHVibGljIHNlbmRlckpldHRvbldhbGxldEFkZHJlc3M6IHN0cmluZzsgLy8gdGhlIHNlbmRlcidzIEpldHRvbiB3YWxsZXQgYWRkcmVzc1xuICBwdWJsaWMgdG9uQW1vdW50OiBzdHJpbmc7IC8vIGFtb3VudCBvZiBUT04gc2VudCB0byB0aGUgc2VuZGVyJ3MgSmV0dG9uIHdhbGxldFxuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBqc29uID0gc3VwZXIudG9Kc29uKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmpzb24sXG4gICAgICBmb3J3YXJkVG9uQW1vdW50OiB0aGlzLmZvcndhcmRUb25BbW91bnQsXG4gICAgICBzZW5kZXJKZXR0b25XYWxsZXRBZGRyZXNzOiB0aGlzLnNlbmRlckpldHRvbldhbGxldEFkZHJlc3MsXG4gICAgICB0b25BbW91bnQ6IHRoaXMudG9uQW1vdW50LFxuICAgIH0gYXMgVHhEYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVKZXR0b25UcmFuc2ZlclBheWxvYWQoXG4gICAgamV0dG9uQW1vdW50OiBzdHJpbmcsXG4gICAgdG9BZGRyZXNzOiBzdHJpbmcsXG4gICAgZm9yd2FyZFRvbkFtb3VudDogc3RyaW5nLFxuICAgIGNvbW1lbnQ/OiBzdHJpbmdcbiAgKTogQ2VsbCB7XG4gICAgY29uc3QgZm9yd2FyZFBheWxvYWQgPSBuZXcgVG9uV2ViLmJvYy5DZWxsKCk7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgIGZvcndhcmRQYXlsb2FkLmJpdHMud3JpdGVVaW50KDAsIDMyKTtcbiAgICAgIGZvcndhcmRQYXlsb2FkLmJpdHMud3JpdGVTdHJpbmcoY29tbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bG9hZCA9IG5ldyBUb25XZWIuYm9jLkNlbGwoKTtcbiAgICBwYXlsb2FkLmJpdHMud3JpdGVVaW50KEpFVFRPTl9UUkFOU0ZFUl9PUENPREUsIDMyKTsgLy8gU3RvcmUgSmV0dG9uIHRyYW5zZmVyIG9wIGNvZGVcbiAgICBwYXlsb2FkLmJpdHMud3JpdGVVaW50KDAsIDY0KTsgLy8gcXVlcnlfaWRcbiAgICBwYXlsb2FkLmJpdHMud3JpdGVDb2lucyhuZXcgQk4oamV0dG9uQW1vdW50KSk7IC8vIEpldHRvbiBhbW91bnQgdG8gdHJhbnNmZXJcbiAgICBwYXlsb2FkLmJpdHMud3JpdGVBZGRyZXNzKG5ldyBUb25XZWIuQWRkcmVzcyh0b0FkZHJlc3MpKTsgLy8gcmVjaXBpZW50J3MgVE9OIHdhbGxldCBhZGRyZXNzXG4gICAgcGF5bG9hZC5iaXRzLndyaXRlQWRkcmVzcyhuZXcgVG9uV2ViLkFkZHJlc3ModGhpcy5zZW5kZXIpKTsgLy8gcmVzcG9uc2VfZGVzdGluYXRpb24gZm9yIHNlbmRpbmcgZXhjZXNzIFRPTiAoZXhjZXNzIGlzIHJldHVybmVkIGJhY2sgdG8gdGhlIHNlbmRlcilcbiAgICBwYXlsb2FkLmJpdHMud3JpdGVCaXQoZmFsc2UpOyAvLyBObyBjdXN0b20gcGF5bG9hZFxuICAgIHBheWxvYWQuYml0cy53cml0ZUNvaW5zKG5ldyBCTihmb3J3YXJkVG9uQW1vdW50KSk7IC8vIGZvcndhcmRfdG9uX2Ftb3VudCB0byBwYXkgZmVlc1xuICAgIHBheWxvYWQuYml0cy53cml0ZUJpdCh0cnVlKTsgLy8gRm9yd2FyZCBwYXlsb2FkIGV4aXN0cyBhcyBhIHJlZmVyZW5jZVxuICAgIHBheWxvYWQucmVmcy5wdXNoKGZvcndhcmRQYXlsb2FkKTsgLy8gQWRkIGZvcndhcmQgcGF5bG9hZCBhcyBhIHJlZmVyZW5jZVxuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH1cblxuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBqZXR0b25UcmFuc2ZlclBheWxvYWQgPSB0aGlzLmNyZWF0ZUpldHRvblRyYW5zZmVyUGF5bG9hZChcbiAgICAgIHRoaXMucmVjaXBpZW50LmFtb3VudCxcbiAgICAgIHRoaXMucmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICB0aGlzLmZvcndhcmRUb25BbW91bnQsXG4gICAgICB0aGlzLm1lc3NhZ2VcbiAgICApO1xuXG4gICAgY29uc3Qgc2lnbmluZ01lc3NhZ2UgPSB0aGlzLmNyZWF0ZVNpZ25pbmdNZXNzYWdlKFdBTExFVF9JRCwgdGhpcy5zZXFubywgdGhpcy5leHBpcmVUaW1lKTtcbiAgICBjb25zdCBzZW5kTW9kZSA9IDM7XG4gICAgc2lnbmluZ01lc3NhZ2UuYml0cy53cml0ZVVpbnQ4KHNlbmRNb2RlKTtcbiAgICBjb25zdCBvdXRNc2cgPSB0aGlzLmNyZWF0ZU91dE1zZyh0aGlzLnNlbmRlckpldHRvbldhbGxldEFkZHJlc3MsIHRoaXMudG9uQW1vdW50LCBqZXR0b25UcmFuc2ZlclBheWxvYWQpO1xuXG4gICAgc2lnbmluZ01lc3NhZ2UucmVmcy5wdXNoKG91dE1zZyk7XG4gICAgdGhpcy51bnNpZ25lZE1lc3NhZ2UgPSBCdWZmZXIuZnJvbShhd2FpdCBzaWduaW5nTWVzc2FnZS5oYXNoKCkpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZSA9XG4gICAgICB0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDAgPyB0aGlzLl9zaWduYXR1cmVzWzBdIDogQnVmZmVyLmZyb20obmV3IFVpbnQ4QXJyYXkoNjQpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgZmluYWxNZXNzYWdlID0gYXdhaXQgdGhpcy5jcmVhdGVFeHRlcm5hbE1lc3NhZ2Uoc2lnbmluZ01lc3NhZ2UsIHRoaXMuc2Vxbm8sIHNpZ25hdHVyZSk7XG5cbiAgICB0aGlzLmZpbmFsTWVzc2FnZSA9IFRvbldlYi51dGlscy5ieXRlc1RvQmFzZTY0KGF3YWl0IGZpbmFsTWVzc2FnZS50b0JvYyhmYWxzZSkpO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxUeElkID0gVG9uV2ViLnV0aWxzLmJ5dGVzVG9CYXNlNjQoYXdhaXQgZmluYWxNZXNzYWdlLmhhc2goKSk7XG4gICAgdGhpcy5faWQgPSBvcmlnaW5hbFR4SWQucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvXFwrL2csICctJyk7XG4gIH1cblxuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjZWxsID0gVG9uV2ViLmJvYy5DZWxsLm9uZUZyb21Cb2MoVG9uV2ViLnV0aWxzLmJhc2U2NFRvQnl0ZXMocmF3VHJhbnNhY3Rpb24pKTtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VUcmFuc2FjdGlvbihjZWxsKTtcblxuICAgICAgdGhpcy50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgICAgdGhpcy5zZW5kZXIgPSBwYXJzZWQuZnJvbUFkZHJlc3M7XG4gICAgICB0aGlzLnJlY2lwaWVudCA9IHsgYWRkcmVzczogcGFyc2VkLnBheWxvYWQuamV0dG9uUmVjaXBpZW50LCBhbW91bnQ6IHBhcnNlZC5wYXlsb2FkLmpldHRvbkFtb3VudCB9O1xuICAgICAgdGhpcy50b25BbW91bnQgPSBwYXJzZWQudmFsdWU7XG4gICAgICB0aGlzLmZvcndhcmRUb25BbW91bnQgPSBwYXJzZWQucGF5bG9hZC5mb3J3YXJkVG9uQW1vdW50O1xuICAgICAgdGhpcy5zZW5kZXJKZXR0b25XYWxsZXRBZGRyZXNzID0gcGFyc2VkLnRvQWRkcmVzcztcbiAgICAgIHRoaXMuc2Vxbm8gPSBwYXJzZWQuc2Vxbm87XG4gICAgICB0aGlzLnB1YmxpY0tleSA9IHBhcnNlZC5wdWJsaWNLZXkgYXMgc3RyaW5nO1xuICAgICAgdGhpcy5leHBpcmVUaW1lID0gcGFyc2VkLmV4cGlyZUF0O1xuICAgICAgdGhpcy5tZXNzYWdlID0gcGFyc2VkLnBheWxvYWQubWVzc2FnZTtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChwYXJzZWQuc2lnbmF0dXJlKTtcbiAgICAgIHRoaXMuYm91bmNlYWJsZSA9IHBhcnNlZC5ib3VuY2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAnd2l0aGRyYXdBbW91bnQnXTtcblxuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbdGhpcy5yZWNpcGllbnRdO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IHRoaXMucmVjaXBpZW50LmFtb3VudDtcbiAgICBjb25zdCB3aXRoZHJhd0Ftb3VudCA9IHRoaXMud2l0aGRyYXdBbW91bnQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiAnVU5LTk9XTicgfSxcbiAgICAgIHdpdGhkcmF3QW1vdW50LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TransactionType, Recipient } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/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 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC1D,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC;gBAE7B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAMjE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAKzD,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB;IAKnE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAMlD,SAAS,CACP,OAAO,EAAE,MAAM,EACf,yBAAyB,EAAE,MAAM,EACjC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB,oBAAoB;IAWvB,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,oBAAoB;CAIjD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TokenTransferBuilder = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
6
|
+
const tokenTransaction_1 = require("./tokenTransaction");
|
|
7
|
+
class TokenTransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
8
|
+
constructor(coinConfig) {
|
|
9
|
+
super(coinConfig);
|
|
10
|
+
this._transaction = new tokenTransaction_1.TokenTransaction(coinConfig);
|
|
11
|
+
}
|
|
12
|
+
get transactionType() {
|
|
13
|
+
return sdk_core_1.TransactionType.SendToken;
|
|
14
|
+
}
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
fromImplementation(rawTransaction) {
|
|
17
|
+
this.transaction.transactionType = sdk_core_1.TransactionType.SendToken;
|
|
18
|
+
this.transaction.fromRawTransaction(rawTransaction);
|
|
19
|
+
return this.transaction;
|
|
20
|
+
}
|
|
21
|
+
/** @inheritdoc */
|
|
22
|
+
async buildImplementation() {
|
|
23
|
+
this.transaction.transactionType = sdk_core_1.TransactionType.SendToken;
|
|
24
|
+
await this.transaction.build();
|
|
25
|
+
this.transaction.loadInputsAndOutputs();
|
|
26
|
+
return this.transaction;
|
|
27
|
+
}
|
|
28
|
+
setForwardTonAmount(amount) {
|
|
29
|
+
this.transaction.forwardTonAmount = amount;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
setSenderJettonWalletAddress(address) {
|
|
33
|
+
this.transaction.senderJettonWalletAddress = address;
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
setTonAmount(amount) {
|
|
37
|
+
this.transaction.tonAmount = amount;
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
// recipient method to handle both TON and token amounts
|
|
41
|
+
recipient(address, senderJettonWalletAddress, tonAmount, jettonAmount, forwardTonAmount) {
|
|
42
|
+
this._transaction.recipient = {
|
|
43
|
+
address: address,
|
|
44
|
+
amount: jettonAmount, // Jetton amount to be transferred
|
|
45
|
+
};
|
|
46
|
+
this._transaction.senderJettonWalletAddress = senderJettonWalletAddress; // The sender's Jetton wallet address
|
|
47
|
+
this._transaction.tonAmount = tonAmount; // TON amount sent to the sender's Jetton wallet
|
|
48
|
+
this._transaction.forwardTonAmount = forwardTonAmount; // TON amount to cover forward fees in case of notify transfer
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
send(recipient) {
|
|
52
|
+
this.transaction.recipient = recipient;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.TokenTransferBuilder = TokenTransferBuilder;
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFrRTtBQUVsRSw2REFBMEQ7QUFDMUQseURBQXNEO0FBR3RELE1BQWEsb0JBQXFCLFNBQVEsdUNBQWtCO0lBRzFELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxtQ0FBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsU0FBUyxDQUFDO1FBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsU0FBUyxDQUFDO1FBQzdELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQy9CLElBQUksQ0FBQyxXQUFnQyxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxPQUFlO1FBQ3pDLElBQUksQ0FBQyxXQUFnQyxDQUFDLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN4QixJQUFJLENBQUMsV0FBZ0MsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxTQUFTLENBQ1AsT0FBZSxFQUNmLHlCQUFpQyxFQUNqQyxTQUFpQixFQUNqQixZQUFvQixFQUNwQixnQkFBd0I7UUFFeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUc7WUFDNUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTSxFQUFFLFlBQVksRUFBRSxrQ0FBa0M7U0FDekQsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFpQyxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDLENBQUMscUNBQXFDO1FBQ25JLElBQUksQ0FBQyxZQUFpQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxnREFBZ0Q7UUFDOUcsSUFBSSxDQUFDLFlBQWlDLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyw4REFBOEQ7UUFDM0ksT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQW9CO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQWhFRCxvREFnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUsIFJlY2lwaWVudCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRva2VuVHJhbnNhY3Rpb24gfSBmcm9tICcuL3Rva2VuVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRva2VuVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVG9rZW5UcmFuc2FjdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRva2VuVHJhbnNhY3Rpb24oY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW47XG4gICAgdGhpcy50cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW47XG4gICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5idWlsZCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldEZvcndhcmRUb25BbW91bnQoYW1vdW50OiBzdHJpbmcpOiBUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgVG9rZW5UcmFuc2FjdGlvbikuZm9yd2FyZFRvbkFtb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFNlbmRlckpldHRvbldhbGxldEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIFRva2VuVHJhbnNhY3Rpb24pLnNlbmRlckpldHRvbldhbGxldEFkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0VG9uQW1vdW50KGFtb3VudDogc3RyaW5nKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIFRva2VuVHJhbnNhY3Rpb24pLnRvbkFtb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHJlY2lwaWVudCBtZXRob2QgdG8gaGFuZGxlIGJvdGggVE9OIGFuZCB0b2tlbiBhbW91bnRzXG4gIHJlY2lwaWVudChcbiAgICBhZGRyZXNzOiBzdHJpbmcsXG4gICAgc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzczogc3RyaW5nLFxuICAgIHRvbkFtb3VudDogc3RyaW5nLFxuICAgIGpldHRvbkFtb3VudDogc3RyaW5nLFxuICAgIGZvcndhcmRUb25BbW91bnQ6IHN0cmluZ1xuICApOiBUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ucmVjaXBpZW50ID0ge1xuICAgICAgYWRkcmVzczogYWRkcmVzcyxcbiAgICAgIGFtb3VudDogamV0dG9uQW1vdW50LCAvLyBKZXR0b24gYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkXG4gICAgfTtcbiAgICAodGhpcy5fdHJhbnNhY3Rpb24gYXMgVG9rZW5UcmFuc2FjdGlvbikuc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzcyA9IHNlbmRlckpldHRvbldhbGxldEFkZHJlc3M7IC8vIFRoZSBzZW5kZXIncyBKZXR0b24gd2FsbGV0IGFkZHJlc3NcbiAgICAodGhpcy5fdHJhbnNhY3Rpb24gYXMgVG9rZW5UcmFuc2FjdGlvbikudG9uQW1vdW50ID0gdG9uQW1vdW50OyAvLyBUT04gYW1vdW50IHNlbnQgdG8gdGhlIHNlbmRlcidzIEpldHRvbiB3YWxsZXRcbiAgICAodGhpcy5fdHJhbnNhY3Rpb24gYXMgVG9rZW5UcmFuc2FjdGlvbikuZm9yd2FyZFRvbkFtb3VudCA9IGZvcndhcmRUb25BbW91bnQ7IC8vIFRPTiBhbW91bnQgdG8gY292ZXIgZm9yd2FyZCBmZWVzIGluIGNhc2Ugb2Ygbm90aWZ5IHRyYW5zZmVyXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZW5kKHJlY2lwaWVudDogUmVjaXBpZW50KTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50ID0gcmVjaXBpZW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Cell } from 'tonweb/dist/types/boc/cell';
|
|
1
2
|
import { BaseKey, BaseTransaction, Recipient, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
-
import { TxData, TransactionExplanation } from './iface';
|
|
3
3
|
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
-
import {
|
|
4
|
+
import { TransactionExplanation, TxData } from './iface';
|
|
5
5
|
export declare class Transaction extends BaseTransaction {
|
|
6
6
|
recipient: Recipient;
|
|
7
7
|
bounceable: boolean;
|
|
@@ -13,8 +13,8 @@ export declare class Transaction extends BaseTransaction {
|
|
|
13
13
|
expireTime: number;
|
|
14
14
|
sender: string;
|
|
15
15
|
publicKey: string;
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
protected unsignedMessage: string;
|
|
17
|
+
protected finalMessage: string;
|
|
18
18
|
constructor(coinConfig: Readonly<CoinConfig>);
|
|
19
19
|
canSign(key: BaseKey): boolean;
|
|
20
20
|
toBroadcastFormat(): string;
|
|
@@ -26,14 +26,14 @@ export declare class Transaction extends BaseTransaction {
|
|
|
26
26
|
*/
|
|
27
27
|
set transactionType(transactionType: TransactionType);
|
|
28
28
|
build(): Promise<void>;
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
protected createSigningMessage(walletId: any, seqno: any, expireAt: any): Cell;
|
|
30
|
+
protected createOutMsg(address: any, amount: any, payload: any): Cell;
|
|
31
31
|
createExternalMessage(signingMessage: Cell, seqno: number, signature: string): Promise<Cell>;
|
|
32
32
|
loadInputsAndOutputs(): void;
|
|
33
33
|
fromRawTransaction(rawTransaction: string): void;
|
|
34
34
|
/** @inheritDoc */
|
|
35
35
|
explainTransaction(): TransactionExplanation;
|
|
36
|
-
|
|
36
|
+
protected parseTransaction(cell: Cell): any;
|
|
37
37
|
private parseTransactionBody;
|
|
38
38
|
private parseTransferStateInit;
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAS,SAAS,EAAwB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACzH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGzD,qBAAa,WAAY,SAAQ,eAAe;IACvC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;gBAEnB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAO5C,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,iBAAiB,IAAI,MAAM;IAI3B,MAAM,IAAI,MAAM;IAqBhB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,IAAI,eAAe,CAAC,eAAe,EAAE,eAAe,EAEnD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,SAAS,CAAC,oBAAoB,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAA,EAAE,QAAQ,KAAA;IAUxD,SAAS,CAAC,YAAY,CAAC,OAAO,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAA;IAoCzC,qBAAqB,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBlG,oBAAoB,IAAI,IAAI;IAiB5B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAmBhD,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAkB5C,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG;IA6C3C,OAAO,CAAC,oBAAoB;IAkH5B,OAAO,CAAC,sBAAsB;CAgB/B"}
|