@bitgo/sdk-coin-ton 3.8.4 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/src/index.d.ts +1 -0
  3. package/dist/src/index.d.ts.map +1 -1
  4. package/dist/src/index.js +2 -1
  5. package/dist/src/jettonToken.d.ts +19 -0
  6. package/dist/src/jettonToken.d.ts.map +1 -0
  7. package/dist/src/jettonToken.js +52 -0
  8. package/dist/src/lib/constants.d.ts +4 -0
  9. package/dist/src/lib/constants.d.ts.map +1 -0
  10. package/dist/src/lib/constants.js +7 -0
  11. package/dist/src/lib/singleNominatorWithdrawBuilder.d.ts +1 -1
  12. package/dist/src/lib/singleNominatorWithdrawBuilder.d.ts.map +1 -1
  13. package/dist/src/lib/singleNominatorWithdrawBuilder.js +4 -2
  14. package/dist/src/lib/tokenTransaction.d.ts +16 -0
  15. package/dist/src/lib/tokenTransaction.d.ts.map +1 -0
  16. package/dist/src/lib/tokenTransaction.js +97 -0
  17. package/dist/src/lib/tokenTransferBuilder.d.ts +20 -0
  18. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  19. package/dist/src/lib/tokenTransferBuilder.js +57 -0
  20. package/dist/src/lib/transaction.d.ts +7 -7
  21. package/dist/src/lib/transaction.d.ts.map +1 -1
  22. package/dist/src/lib/transaction.js +48 -19
  23. package/dist/src/lib/transactionBuilder.d.ts +2 -2
  24. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  25. package/dist/src/lib/transactionBuilder.js +3 -5
  26. package/dist/src/lib/transactionBuilderFactory.d.ts +6 -1
  27. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  28. package/dist/src/lib/transactionBuilderFactory.js +14 -3
  29. package/dist/src/lib/transferBuilder.d.ts +1 -1
  30. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  31. package/dist/src/lib/transferBuilder.js +4 -2
  32. package/dist/src/register.d.ts.map +1 -1
  33. package/dist/src/register.js +5 -1
  34. package/dist/src/ton.d.ts.map +1 -1
  35. package/dist/src/ton.js +7 -6
  36. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.9.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-ton@3.8.4...@bitgo/sdk-coin-ton@3.9.0) (2025-09-25)
7
+
8
+ ### Features
9
+
10
+ - add jetton token standard ([699415e](https://github.com/BitGo/BitGoJS/commit/699415ef63cb29875c2662910ab24972334f1f18))
11
+ - add ton mainnet token ([7846c48](https://github.com/BitGo/BitGoJS/commit/7846c48103c83883879b0d061209e465f9937249))
12
+ - onboard testnet ton tokens ([e9e720b](https://github.com/BitGo/BitGoJS/commit/e9e720bd6e91d5a0fea9cdfcf36ba4e67fea321a))
13
+ - **sdk-coin-ton:** add jetton transaction support ([ee1b696](https://github.com/BitGo/BitGoJS/commit/ee1b69665a96ae9a72d060a983755c48a2d36ebd))
14
+
6
15
  ## [3.8.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-ton@3.8.3...@bitgo/sdk-coin-ton@3.8.4) (2025-09-03)
7
16
 
8
17
  **Note:** Version bump only for package @bitgo/sdk-coin-ton
@@ -2,4 +2,5 @@ export * from './lib';
2
2
  export * from './register';
3
3
  export * from './ton';
4
4
  export * from './tton';
5
+ export * from './jettonToken';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"}
package/dist/src/index.js CHANGED
@@ -18,4 +18,5 @@ __exportStar(require("./lib"), exports);
18
18
  __exportStar(require("./register"), exports);
19
19
  __exportStar(require("./ton"), exports);
20
20
  __exportStar(require("./tton"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0Qiw2Q0FBMkI7QUFDM0Isd0NBQXNCO0FBQ3RCLHlDQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliJztcbmV4cG9ydCAqIGZyb20gJy4vcmVnaXN0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi90b24nO1xuZXhwb3J0ICogZnJvbSAnLi90dG9uJztcbiJdfQ==
21
+ __exportStar(require("./jettonToken"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0Qiw2Q0FBMkI7QUFDM0Isd0NBQXNCO0FBQ3RCLHlDQUF1QjtBQUN2QixnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdG9uJztcbmV4cG9ydCAqIGZyb20gJy4vdHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2pldHRvblRva2VuJztcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { BitGoBase, CoinConstructor, NamedCoinConstructor } from '@bitgo/sdk-core';
2
+ import { JettonTokenConfig } from '@bitgo/statics';
3
+ import { Ton } from './ton';
4
+ export declare class JettonToken extends Ton {
5
+ readonly tokenConfig: JettonTokenConfig;
6
+ constructor(bitgo: BitGoBase, tokenConfig: JettonTokenConfig);
7
+ static createTokenConstructor(config: JettonTokenConfig): CoinConstructor;
8
+ static createTokenConstructors(tokenConfig?: JettonTokenConfig[]): NamedCoinConstructor[];
9
+ get name(): string;
10
+ get coin(): string;
11
+ get network(): string;
12
+ get contractAddress(): string;
13
+ get decimalPlaces(): number;
14
+ getChain(): string;
15
+ getBaseChain(): string;
16
+ getFullName(): string;
17
+ getBaseFactor(): number;
18
+ }
19
+ //# sourceMappingURL=jettonToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jettonToken.d.ts","sourceRoot":"","sources":["../../src/jettonToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAiB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,qBAAa,WAAY,SAAQ,GAAG;IAClC,SAAgB,WAAW,EAAE,iBAAiB,CAAC;gBAEnC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB;IAM5D,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe;IAIzE,MAAM,CAAC,uBAAuB,CAC5B,WAAW,GAAE,iBAAiB,EAAiE,GAC9F,oBAAoB,EAAE;IASzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;CAGxB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JettonToken = void 0;
4
+ const statics_1 = require("@bitgo/statics");
5
+ const ton_1 = require("./ton");
6
+ class JettonToken extends ton_1.Ton {
7
+ constructor(bitgo, tokenConfig) {
8
+ const staticsCoin = tokenConfig.network === 'Mainnet' ? statics_1.coins.get('ton') : statics_1.coins.get('tton');
9
+ super(bitgo, staticsCoin);
10
+ this.tokenConfig = tokenConfig;
11
+ }
12
+ static createTokenConstructor(config) {
13
+ return (bitgo) => new JettonToken(bitgo, config);
14
+ }
15
+ static createTokenConstructors(tokenConfig = [...statics_1.tokens.bitcoin.ton.tokens, ...statics_1.tokens.testnet.ton.tokens]) {
16
+ const tokensCtors = [];
17
+ for (const token of tokenConfig) {
18
+ const tokenConstructor = JettonToken.createTokenConstructor(token);
19
+ tokensCtors.push({ name: token.type, coinConstructor: tokenConstructor });
20
+ }
21
+ return tokensCtors;
22
+ }
23
+ get name() {
24
+ return this.tokenConfig.name;
25
+ }
26
+ get coin() {
27
+ return this.tokenConfig.coin;
28
+ }
29
+ get network() {
30
+ return this.tokenConfig.network;
31
+ }
32
+ get contractAddress() {
33
+ return this.tokenConfig.contractAddress;
34
+ }
35
+ get decimalPlaces() {
36
+ return this.tokenConfig.decimalPlaces;
37
+ }
38
+ getChain() {
39
+ return this.tokenConfig.type;
40
+ }
41
+ getBaseChain() {
42
+ return this.coin;
43
+ }
44
+ getFullName() {
45
+ return 'Ton Token';
46
+ }
47
+ getBaseFactor() {
48
+ return Math.pow(10, this.tokenConfig.decimalPlaces);
49
+ }
50
+ }
51
+ exports.JettonToken = JettonToken;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamV0dG9uVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamV0dG9uVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNENBQWtFO0FBQ2xFLCtCQUE0QjtBQUU1QixNQUFhLFdBQVksU0FBUSxTQUFHO0lBR2xDLFlBQVksS0FBZ0IsRUFBRSxXQUE4QjtRQUMxRCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RixLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBeUI7UUFDckQsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixjQUFtQyxDQUFDLEdBQUcsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFFL0YsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUMvQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25FLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBM0RELGtDQTJEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSwgQ29pbkNvbnN0cnVjdG9yLCBOYW1lZENvaW5Db25zdHJ1Y3RvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBKZXR0b25Ub2tlbkNvbmZpZywgY29pbnMsIHRva2VucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRvbiB9IGZyb20gJy4vdG9uJztcblxuZXhwb3J0IGNsYXNzIEpldHRvblRva2VuIGV4dGVuZHMgVG9uIHtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuQ29uZmlnOiBKZXR0b25Ub2tlbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogSmV0dG9uVG9rZW5Db25maWcpIHtcbiAgICBjb25zdCBzdGF0aWNzQ29pbiA9IHRva2VuQ29uZmlnLm5ldHdvcmsgPT09ICdNYWlubmV0JyA/IGNvaW5zLmdldCgndG9uJykgOiBjb2lucy5nZXQoJ3R0b24nKTtcbiAgICBzdXBlcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICAgIHRoaXMudG9rZW5Db25maWcgPSB0b2tlbkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9yKGNvbmZpZzogSmV0dG9uVG9rZW5Db25maWcpOiBDb2luQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiAoYml0Z286IEJpdEdvQmFzZSkgPT4gbmV3IEpldHRvblRva2VuKGJpdGdvLCBjb25maWcpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKFxuICAgIHRva2VuQ29uZmlnOiBKZXR0b25Ub2tlbkNvbmZpZ1tdID0gWy4uLnRva2Vucy5iaXRjb2luLnRvbi50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LnRvbi50b2tlbnNdXG4gICk6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10ge1xuICAgIGNvbnN0IHRva2Vuc0N0b3JzOiBOYW1lZENvaW5Db25zdHJ1Y3RvcltdID0gW107XG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbkNvbmZpZykge1xuICAgICAgY29uc3QgdG9rZW5Db25zdHJ1Y3RvciA9IEpldHRvblRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW4pO1xuICAgICAgdG9rZW5zQ3RvcnMucHVzaCh7IG5hbWU6IHRva2VuLnR5cGUsIGNvaW5Db25zdHJ1Y3RvcjogdG9rZW5Db25zdHJ1Y3RvciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRva2Vuc0N0b3JzO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uYW1lO1xuICB9XG5cbiAgZ2V0IGNvaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5jb2luO1xuICB9XG5cbiAgZ2V0IG5ldHdvcmsoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uZXR3b3JrO1xuICB9XG5cbiAgZ2V0IGNvbnRyYWN0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmNvbnRyYWN0QWRkcmVzcztcbiAgfVxuXG4gIGdldCBkZWNpbWFsUGxhY2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcztcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudHlwZTtcbiAgfVxuXG4gIGdldEJhc2VDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvaW47XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnVG9uIFRva2VuJztcbiAgfVxuXG4gIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export declare const WALLET_ID = 698983191;
2
+ export declare const JETTON_TRANSFER_OPCODE = 260734629;
3
+ export declare const WITHDRAW_OPCODE = "00001000";
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -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/statics';
3
2
  import { Recipient, TransactionType } from '@bitgo/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,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE7D,qBAAa,8BAA+B,SAAQ,kBAAkB;gBACxD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,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
+ {"version":3,"file":"singleNominatorWithdrawBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/singleNominatorWithdrawBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,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/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQTBEO0FBRTFELDhDQUE2RDtBQUU3RCxNQUFhLDhCQUErQixTQUFRLHVDQUFrQjtJQUNwRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyx1QkFBdUIsQ0FBQztJQUNqRCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQW9CO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBdEJELHdFQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBSZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2luZ2xlTm9taW5hdG9yV2l0aGRyYXc7XG4gIH1cblxuICBzZXRXaXRoZHJhd0Ftb3VudChhbW91bnQ6IHN0cmluZyk6IFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi53aXRoZHJhd0Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50OiBSZWNpcGllbnQpOiBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50ID0gcmVjaXBpZW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TWVzc2FnZShtc2c6IHN0cmluZyk6IFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsOENBQTZEO0FBQzdELDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFFNUMsTUFBYSw4QkFBK0IsU0FBUSx1Q0FBa0I7SUFDcEUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsdUJBQXVCLENBQUM7SUFDakQsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFvQjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQXZCRCx3RUF1QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2luZ2xlTm9taW5hdG9yV2l0aGRyYXc7XG4gIH1cblxuICBzZXRXaXRoZHJhd0Ftb3VudChhbW91bnQ6IHN0cmluZyk6IFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi53aXRoZHJhd0Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50OiBSZWNpcGllbnQpOiBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50ID0gcmVjaXBpZW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0TWVzc2FnZShtc2c6IHN0cmluZyk6IFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/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,gBAAgB,CAAC;AACxD,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/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9rZW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsaUNBQTJCO0FBRTNCLDhDQUF3RTtBQUd4RSwrQ0FBNEM7QUFDNUMsMkNBQWdFO0FBRWhFLE1BQWEsZ0JBQWlCLFNBQVEseUJBQVc7SUFLL0MsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtZQUN6RCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDaEIsQ0FBQztJQUNkLENBQUM7SUFFTywyQkFBMkIsQ0FDakMsWUFBb0IsRUFDcEIsU0FBaUIsRUFDakIsZ0JBQXdCLEVBQ3hCLE9BQWdCO1FBRWhCLE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQ0FBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztR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QUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7UUFDaEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWpILE1BQU0sT0FBTyxHQUEyQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLE9BQU87WUFDTCxZQUFZO1lBQ1osRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsT0FBTztZQUNQLFlBQVk7WUFDWixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO1lBQ3ZCLGNBQWM7U0FDZixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBL0dELDRDQStHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUb25XZWIgZnJvbSAndG9ud2ViJztcbmltcG9ydCB7IEJOIH0gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJ3RvbndlYi9kaXN0L3R5cGVzL2JvYy9jZWxsJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEpFVFRPTl9UUkFOU0ZFUl9PUENPREUsIFdBTExFVF9JRCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFRva2VuVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbiB7XG4gIHB1YmxpYyBmb3J3YXJkVG9uQW1vdW50OiBzdHJpbmc7IC8vIGZvciBjb3ZlcmluZyBmb3J3YXJkIGZlZXMgZm9yIG5vdGlmeSB0cmFuc2ZlclxuICBwdWJsaWMgc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzczogc3RyaW5nOyAvLyB0aGUgc2VuZGVyJ3MgSmV0dG9uIHdhbGxldCBhZGRyZXNzXG4gIHB1YmxpYyB0b25BbW91bnQ6IHN0cmluZzsgLy8gYW1vdW50IG9mIFRPTiBzZW50IHRvIHRoZSBzZW5kZXIncyBKZXR0b24gd2FsbGV0XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlci50b0pzb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uanNvbixcbiAgICAgIGZvcndhcmRUb25BbW91bnQ6IHRoaXMuZm9yd2FyZFRvbkFtb3VudCxcbiAgICAgIHNlbmRlckpldHRvbldhbGxldEFkZHJlc3M6IHRoaXMuc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzcyxcbiAgICAgIHRvbkFtb3VudDogdGhpcy50b25BbW91bnQsXG4gICAgfSBhcyBUeERhdGE7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUpldHRvblRyYW5zZmVyUGF5bG9hZChcbiAgICBqZXR0b25BbW91bnQ6IHN0cmluZyxcbiAgICB0b0FkZHJlc3M6IHN0cmluZyxcbiAgICBmb3J3YXJkVG9uQW1vdW50OiBzdHJpbmcsXG4gICAgY29tbWVudD86IHN0cmluZ1xuICApOiBDZWxsIHtcbiAgICBjb25zdCBmb3J3YXJkUGF5bG9hZCA9IG5ldyBUb25XZWIuYm9jLkNlbGwoKTtcbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgZm9yd2FyZFBheWxvYWQuYml0cy53cml0ZVVpbnQoMCwgMzIpO1xuICAgICAgZm9yd2FyZFBheWxvYWQuYml0cy53cml0ZVN0cmluZyhjb21tZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXlsb2FkID0gbmV3IFRvbldlYi5ib2MuQ2VsbCgpO1xuICAgIHBheWxvYWQuYml0cy53cml0ZVVpbnQoSkVUVE9OX1RSQU5TRkVSX09QQ09ERSwgMzIpOyAvLyBTdG9yZSBKZXR0b24gdHJhbnNmZXIgb3AgY29kZVxuICAgIHBheWxvYWQuYml0cy53cml0ZVVpbnQoMCwgNjQpOyAvLyBxdWVyeV9pZFxuICAgIHBheWxvYWQuYml0cy53cml0ZUNvaW5zKG5ldyBCTihqZXR0b25BbW91bnQpKTsgLy8gSmV0dG9uIGFtb3VudCB0byB0cmFuc2ZlclxuICAgIHBheWxvYWQuYml0cy53cml0ZUFkZHJlc3MobmV3IFRvbldlYi5BZGRyZXNzKHRvQWRkcmVzcykpOyAvLyByZWNpcGllbnQncyBUT04gd2FsbGV0IGFkZHJlc3NcbiAgICBwYXlsb2FkLmJpdHMud3JpdGVBZGRyZXNzKG5ldyBUb25XZWIuQWRkcmVzcyh0aGlzLnNlbmRlcikpOyAvLyByZXNwb25zZV9kZXN0aW5hdGlvbiBmb3Igc2VuZGluZyBleGNlc3MgVE9OIChleGNlc3MgaXMgcmV0dXJuZWQgYmFjayB0byB0aGUgc2VuZGVyKVxuICAgIHBheWxvYWQuYml0cy53cml0ZUJpdChmYWxzZSk7IC8vIE5vIGN1c3RvbSBwYXlsb2FkXG4gICAgcGF5bG9hZC5iaXRzLndyaXRlQ29pbnMobmV3IEJOKGZvcndhcmRUb25BbW91bnQpKTsgLy8gZm9yd2FyZF90b25fYW1vdW50IHRvIHBheSBmZWVzXG4gICAgcGF5bG9hZC5iaXRzLndyaXRlQml0KHRydWUpOyAvLyBGb3J3YXJkIHBheWxvYWQgZXhpc3RzIGFzIGEgcmVmZXJlbmNlXG4gICAgcGF5bG9hZC5yZWZzLnB1c2goZm9yd2FyZFBheWxvYWQpOyAvLyBBZGQgZm9yd2FyZCBwYXlsb2FkIGFzIGEgcmVmZXJlbmNlXG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGpldHRvblRyYW5zZmVyUGF5bG9hZCA9IHRoaXMuY3JlYXRlSmV0dG9uVHJhbnNmZXJQYXlsb2FkKFxuICAgICAgdGhpcy5yZWNpcGllbnQuYW1vdW50LFxuICAgICAgdGhpcy5yZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgIHRoaXMuZm9yd2FyZFRvbkFtb3VudCxcbiAgICAgIHRoaXMubWVzc2FnZVxuICAgICk7XG5cbiAgICBjb25zdCBzaWduaW5nTWVzc2FnZSA9IHRoaXMuY3JlYXRlU2lnbmluZ01lc3NhZ2UoV0FMTEVUX0lELCB0aGlzLnNlcW5vLCB0aGlzLmV4cGlyZVRpbWUpO1xuICAgIGNvbnN0IHNlbmRNb2RlID0gMztcbiAgICBzaWduaW5nTWVzc2FnZS5iaXRzLndyaXRlVWludDgoc2VuZE1vZGUpO1xuICAgIGNvbnN0IG91dE1zZyA9IHRoaXMuY3JlYXRlT3V0TXNnKHRoaXMuc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzcywgdGhpcy50b25BbW91bnQsIGpldHRvblRyYW5zZmVyUGF5bG9hZCk7XG5cbiAgICBzaWduaW5nTWVzc2FnZS5yZWZzLnB1c2gob3V0TXNnKTtcbiAgICB0aGlzLnVuc2lnbmVkTWVzc2FnZSA9IEJ1ZmZlci5mcm9tKGF3YWl0IHNpZ25pbmdNZXNzYWdlLmhhc2goKSkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID1cbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMubGVuZ3RoID4gMCA/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 @@
1
+ {"version":3,"file":"tokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,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/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUE2RDtBQUU3RCw2REFBMEQ7QUFDMUQseURBQXNEO0FBR3RELE1BQWEsb0JBQXFCLFNBQVEsdUNBQWtCO0lBRzFELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxtQ0FBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsU0FBUyxDQUFDO1FBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsU0FBUyxDQUFDO1FBQzdELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQy9CLElBQUksQ0FBQyxXQUFnQyxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxPQUFlO1FBQ3pDLElBQUksQ0FBQyxXQUFnQyxDQUFDLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN4QixJQUFJLENBQUMsV0FBZ0MsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxTQUFTLENBQ1AsT0FBZSxFQUNmLHlCQUFpQyxFQUNqQyxTQUFpQixFQUNqQixZQUFvQixFQUNwQixnQkFBd0I7UUFFeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUc7WUFDNUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTSxFQUFFLFlBQVksRUFBRSxrQ0FBa0M7U0FDekQsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFpQyxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDLENBQUMscUNBQXFDO1FBQ25JLElBQUksQ0FBQyxZQUFpQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxnREFBZ0Q7UUFDOUcsSUFBSSxDQUFDLFlBQWlDLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyw4REFBOEQ7UUFDM0ksT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQW9CO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQWhFRCxvREFnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUsIFJlY2lwaWVudCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2FjdGlvbiB9IGZyb20gJy4vdG9rZW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBUb2tlblRyYW5zYWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVG9rZW5UcmFuc2FjdGlvbihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW47XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbjtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbjtcbiAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uLmJ1aWxkKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0Rm9yd2FyZFRvbkFtb3VudChhbW91bnQ6IHN0cmluZyk6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICAodGhpcy50cmFuc2FjdGlvbiBhcyBUb2tlblRyYW5zYWN0aW9uKS5mb3J3YXJkVG9uQW1vdW50ID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0U2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgVG9rZW5UcmFuc2FjdGlvbikuc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRUb25BbW91bnQoYW1vdW50OiBzdHJpbmcpOiBUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgVG9rZW5UcmFuc2FjdGlvbikudG9uQW1vdW50ID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gcmVjaXBpZW50IG1ldGhvZCB0byBoYW5kbGUgYm90aCBUT04gYW5kIHRva2VuIGFtb3VudHNcbiAgcmVjaXBpZW50KFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBzZW5kZXJKZXR0b25XYWxsZXRBZGRyZXNzOiBzdHJpbmcsXG4gICAgdG9uQW1vdW50OiBzdHJpbmcsXG4gICAgamV0dG9uQW1vdW50OiBzdHJpbmcsXG4gICAgZm9yd2FyZFRvbkFtb3VudDogc3RyaW5nXG4gICk6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5yZWNpcGllbnQgPSB7XG4gICAgICBhZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgYW1vdW50OiBqZXR0b25BbW91bnQsIC8vIEpldHRvbiBhbW91bnQgdG8gYmUgdHJhbnNmZXJyZWRcbiAgICB9O1xuICAgICh0aGlzLl90cmFuc2FjdGlvbiBhcyBUb2tlblRyYW5zYWN0aW9uKS5zZW5kZXJKZXR0b25XYWxsZXRBZGRyZXNzID0gc2VuZGVySmV0dG9uV2FsbGV0QWRkcmVzczsgLy8gVGhlIHNlbmRlcidzIEpldHRvbiB3YWxsZXQgYWRkcmVzc1xuICAgICh0aGlzLl90cmFuc2FjdGlvbiBhcyBUb2tlblRyYW5zYWN0aW9uKS50b25BbW91bnQgPSB0b25BbW91bnQ7IC8vIFRPTiBhbW91bnQgc2VudCB0byB0aGUgc2VuZGVyJ3MgSmV0dG9uIHdhbGxldFxuICAgICh0aGlzLl90cmFuc2FjdGlvbiBhcyBUb2tlblRyYW5zYWN0aW9uKS5mb3J3YXJkVG9uQW1vdW50ID0gZm9yd2FyZFRvbkFtb3VudDsgLy8gVE9OIGFtb3VudCB0byBjb3ZlciBmb3J3YXJkIGZlZXMgaW4gY2FzZSBvZiBub3RpZnkgdHJhbnNmZXJcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50OiBSZWNpcGllbnQpOiBUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQgPSByZWNpcGllbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
+ import { Cell } from 'tonweb/dist/types/boc/cell';
1
2
  import { BaseKey, BaseTransaction, Recipient, TransactionType } from '@bitgo/sdk-core';
2
- import { TxData, TransactionExplanation } from './iface';
3
3
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
4
- import { Cell } from 'tonweb/dist/types/boc/cell';
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
- private unsignedMessage;
17
- private finalMessage;
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
- private createSigningMessage;
30
- private createOutMsg;
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
- private parseTransaction;
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":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAS,SAAS,EAAwB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAKlD,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,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;gBAEjB,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,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,YAAY;IAoCd,qBAAqB,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlG,oBAAoB,IAAI,IAAI;IAiB5B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAsBhD,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAkB5C,OAAO,CAAC,gBAAgB;IA6CxB,OAAO,CAAC,oBAAoB;IAgF5B,OAAO,CAAC,sBAAsB;CAgB/B"}
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,iBAAiB,CAAC;AACpH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,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"}