@bitgo/account-lib 2.20.0-rc.34 → 2.20.0-rc.37

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 (103) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/src/coin/polygon/transactionBuilder.d.ts +2 -2
  3. package/dist/src/coin/polygon/transactionBuilder.d.ts.map +1 -1
  4. package/dist/src/coin/polygon/transactionBuilder.js +3 -3
  5. package/dist/src/index.d.ts +2 -2
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +3 -3
  8. package/dist/tsconfig.tsbuildinfo +16762 -22001
  9. package/package.json +20 -26
  10. package/LICENSE +0 -191
  11. package/dist/src/coin/dot/addressInitializationBuilder.d.ts +0 -79
  12. package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +0 -1
  13. package/dist/src/coin/dot/addressInitializationBuilder.js +0 -182
  14. package/dist/src/coin/dot/batchTransactionBuilder.d.ts +0 -47
  15. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +0 -1
  16. package/dist/src/coin/dot/batchTransactionBuilder.js +0 -122
  17. package/dist/src/coin/dot/claimBuilder.d.ts +0 -58
  18. package/dist/src/coin/dot/claimBuilder.d.ts.map +0 -1
  19. package/dist/src/coin/dot/claimBuilder.js +0 -119
  20. package/dist/src/coin/dot/errors.d.ts +0 -8
  21. package/dist/src/coin/dot/errors.d.ts.map +0 -1
  22. package/dist/src/coin/dot/errors.js +0 -19
  23. package/dist/src/coin/dot/iface.d.ts +0 -194
  24. package/dist/src/coin/dot/iface.d.ts.map +0 -1
  25. package/dist/src/coin/dot/iface.js +0 -39
  26. package/dist/src/coin/dot/index.d.ts +0 -17
  27. package/dist/src/coin/dot/index.d.ts.map +0 -1
  28. package/dist/src/coin/dot/index.js +0 -53
  29. package/dist/src/coin/dot/keyPair.d.ts +0 -31
  30. package/dist/src/coin/dot/keyPair.d.ts.map +0 -1
  31. package/dist/src/coin/dot/keyPair.js +0 -70
  32. package/dist/src/coin/dot/singletonRegistry.d.ts +0 -7
  33. package/dist/src/coin/dot/singletonRegistry.d.ts.map +0 -1
  34. package/dist/src/coin/dot/singletonRegistry.js +0 -20
  35. package/dist/src/coin/dot/stakingBuilder.d.ts +0 -58
  36. package/dist/src/coin/dot/stakingBuilder.d.ts.map +0 -1
  37. package/dist/src/coin/dot/stakingBuilder.js +0 -139
  38. package/dist/src/coin/dot/transaction.d.ts +0 -65
  39. package/dist/src/coin/dot/transaction.d.ts.map +0 -1
  40. package/dist/src/coin/dot/transaction.js +0 -396
  41. package/dist/src/coin/dot/transactionBuilder.d.ts +0 -131
  42. package/dist/src/coin/dot/transactionBuilder.d.ts.map +0 -1
  43. package/dist/src/coin/dot/transactionBuilder.js +0 -332
  44. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +0 -26
  45. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +0 -1
  46. package/dist/src/coin/dot/transactionBuilderFactory.js +0 -93
  47. package/dist/src/coin/dot/transferBuilder.d.ts +0 -71
  48. package/dist/src/coin/dot/transferBuilder.d.ts.map +0 -1
  49. package/dist/src/coin/dot/transferBuilder.js +0 -177
  50. package/dist/src/coin/dot/txnSchema.d.ts +0 -14
  51. package/dist/src/coin/dot/txnSchema.d.ts.map +0 -1
  52. package/dist/src/coin/dot/txnSchema.js +0 -104
  53. package/dist/src/coin/dot/unnominateBuilder.d.ts +0 -24
  54. package/dist/src/coin/dot/unnominateBuilder.d.ts.map +0 -1
  55. package/dist/src/coin/dot/unnominateBuilder.js +0 -50
  56. package/dist/src/coin/dot/unstakeBuilder.d.ts +0 -38
  57. package/dist/src/coin/dot/unstakeBuilder.d.ts.map +0 -1
  58. package/dist/src/coin/dot/unstakeBuilder.js +0 -89
  59. package/dist/src/coin/dot/utils.d.ts +0 -145
  60. package/dist/src/coin/dot/utils.d.ts.map +0 -1
  61. package/dist/src/coin/dot/utils.js +0 -283
  62. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +0 -38
  63. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +0 -1
  64. package/dist/src/coin/dot/withdrawUnstakedBuilder.js +0 -90
  65. package/dist/src/coin/hbar/coinTransferBuilder.d.ts +0 -46
  66. package/dist/src/coin/hbar/coinTransferBuilder.d.ts.map +0 -1
  67. package/dist/src/coin/hbar/coinTransferBuilder.js +0 -143
  68. package/dist/src/coin/hbar/constants.d.ts +0 -8
  69. package/dist/src/coin/hbar/constants.d.ts.map +0 -1
  70. package/dist/src/coin/hbar/constants.js +0 -12
  71. package/dist/src/coin/hbar/iface.d.ts +0 -49
  72. package/dist/src/coin/hbar/iface.d.ts.map +0 -1
  73. package/dist/src/coin/hbar/iface.js +0 -3
  74. package/dist/src/coin/hbar/index.d.ts +0 -9
  75. package/dist/src/coin/hbar/index.d.ts.map +0 -1
  76. package/dist/src/coin/hbar/index.js +0 -37
  77. package/dist/src/coin/hbar/keyPair.d.ts +0 -23
  78. package/dist/src/coin/hbar/keyPair.d.ts.map +0 -1
  79. package/dist/src/coin/hbar/keyPair.js +0 -70
  80. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +0 -38
  81. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +0 -1
  82. package/dist/src/coin/hbar/tokenAssociateBuilder.js +0 -126
  83. package/dist/src/coin/hbar/tokenTransferBuilder.d.ts +0 -25
  84. package/dist/src/coin/hbar/tokenTransferBuilder.d.ts.map +0 -1
  85. package/dist/src/coin/hbar/tokenTransferBuilder.js +0 -115
  86. package/dist/src/coin/hbar/transaction.d.ts +0 -106
  87. package/dist/src/coin/hbar/transaction.d.ts.map +0 -1
  88. package/dist/src/coin/hbar/transaction.js +0 -318
  89. package/dist/src/coin/hbar/transactionBuilder.d.ts +0 -111
  90. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +0 -1
  91. package/dist/src/coin/hbar/transactionBuilder.js +0 -270
  92. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +0 -47
  93. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +0 -1
  94. package/dist/src/coin/hbar/transactionBuilderFactory.js +0 -88
  95. package/dist/src/coin/hbar/transferBuilder.d.ts +0 -24
  96. package/dist/src/coin/hbar/transferBuilder.d.ts.map +0 -1
  97. package/dist/src/coin/hbar/transferBuilder.js +0 -74
  98. package/dist/src/coin/hbar/utils.d.ts +0 -193
  99. package/dist/src/coin/hbar/utils.d.ts.map +0 -1
  100. package/dist/src/coin/hbar/utils.js +0 -410
  101. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +0 -28
  102. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +0 -1
  103. package/dist/src/coin/hbar/walletInitializationBuilder.js +0 -110
@@ -1,126 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.TokenAssociateBuilder = void 0;
23
- const proto = __importStar(require("@hashgraph/proto"));
24
- const sdk_core_1 = require("@bitgo/sdk-core");
25
- const utils_1 = require("./utils");
26
- const transactionBuilder_1 = require("./transactionBuilder");
27
- const constants_1 = require("./constants");
28
- class TokenAssociateBuilder extends transactionBuilder_1.TransactionBuilder {
29
- constructor(_coinConfig) {
30
- super(_coinConfig);
31
- this._tokenIds = [];
32
- this._txBodyData = new proto.TokenAssociateTransactionBody();
33
- this._txBody.tokenAssociate = this._txBodyData;
34
- }
35
- /** @inheritdoc */
36
- initBuilder(tx) {
37
- super.initBuilder(tx);
38
- const tokenAssociateAccount = tx.txBody.tokenAssociate;
39
- if (tokenAssociateAccount && tokenAssociateAccount.tokens) {
40
- this.initTokenAssociation(tokenAssociateAccount);
41
- }
42
- }
43
- initTokenAssociation(tokenAssociateAccount) {
44
- tokenAssociateAccount.tokens.forEach((tokenId) => {
45
- const token = utils_1.stringifyTokenId(tokenId);
46
- this.validateToken(token);
47
- this._tokenIds.push(token);
48
- });
49
- if (tokenAssociateAccount.account) {
50
- const accountId = utils_1.stringifyAccountId(tokenAssociateAccount.account);
51
- this.account(accountId);
52
- }
53
- }
54
- /** @inheritdoc */
55
- signImplementation(key) {
56
- if (this._multiSignerKeyPairs.length >= constants_1.DEFAULT_SIGNER_NUMBER) {
57
- throw new sdk_core_1.SigningError('A maximum of ' + constants_1.DEFAULT_SIGNER_NUMBER + ' can sign the transaction.');
58
- }
59
- return super.signImplementation(key);
60
- }
61
- /** @inheritdoc */
62
- async buildImplementation() {
63
- this._txBodyData.tokens = this.buildTokenData();
64
- this._txBodyData.account = this.buildAccountData();
65
- this.transaction.setTransactionType(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization);
66
- return await super.buildImplementation();
67
- }
68
- /** @inheritdoc */
69
- validateMandatoryFields() {
70
- if (!this._tokenIds || this._tokenIds.length < 1) {
71
- throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing tokens to associate');
72
- }
73
- super.validateMandatoryFields();
74
- }
75
- /**
76
- * Set account to associate with tokens, defaults to this._source.address value
77
- *
78
- * @param {string} accountID - The name of the account to associate to the transaction
79
- * @returns {TokenAssociateBuilder} - This token association builder
80
- */
81
- account(accountID) {
82
- this.validateAccount(accountID);
83
- this._account = accountID;
84
- return this;
85
- }
86
- /**
87
- * Add a token to associate to the multisig wallet.
88
- *
89
- * @param {string} tokenName - The name of the token to associate to the transaction
90
- * @returns {TokenAssociateBuilder} - This token association builder
91
- */
92
- tokens(tokenName) {
93
- const tokenId = utils_1.getHederaTokenIdFromName(tokenName);
94
- if (!tokenId) {
95
- throw new sdk_core_1.BuildTransactionError('Unsupported token: ' + tokenName);
96
- }
97
- this.validateToken(tokenId);
98
- this._tokenIds.push(tokenId);
99
- return this;
100
- }
101
- buildTokenData() {
102
- return this._tokenIds.map(utils_1.buildHederaTokenID);
103
- }
104
- buildAccountData() {
105
- let accountId = this._account;
106
- if (!accountId) {
107
- accountId = this._source.address;
108
- }
109
- return utils_1.buildHederaAccountID(accountId);
110
- }
111
- validateAccount(accountID) {
112
- if (!utils_1.isValidAddress(accountID)) {
113
- throw new sdk_core_1.BuildTransactionError('Unsupported account address: ' + accountID);
114
- }
115
- }
116
- validateToken(tokenId) {
117
- if (this._tokenIds.includes(tokenId)) {
118
- throw new sdk_core_1.BuildTransactionError('Repeated token ID: ' + tokenId);
119
- }
120
- else if (!utils_1.isValidHederaTokenID(tokenId)) {
121
- throw new sdk_core_1.BuildTransactionError('Invalid token ID: ' + tokenId);
122
- }
123
- }
124
- }
125
- exports.TokenAssociateBuilder = TokenAssociateBuilder;
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5Bc3NvY2lhdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vaGJhci90b2tlbkFzc29jaWF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHdEQUEwQztBQUMxQyw4Q0FBZ0c7QUFFaEcsbUNBUWlCO0FBQ2pCLDZEQUEwRDtBQUMxRCwyQ0FBb0Q7QUFFcEQsTUFBYSxxQkFBc0IsU0FBUSx1Q0FBa0I7SUFLM0QsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIYixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBSS9CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ2pELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ3ZELElBQUkscUJBQXFCLElBQUkscUJBQXFCLENBQUMsTUFBTSxFQUFFO1lBQ3pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBNEQsQ0FBQyxDQUFDO1NBQ3pGO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLHFCQUEyRDtRQUN0RixxQkFBcUIsQ0FBQyxNQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFO1lBQ2hFLE1BQU0sS0FBSyxHQUFHLHdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJ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Z0NBQXFCLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDbEU7YUFBTSxJQUFJLENBQUMsNEJBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztDQUNGO0FBaEhELHNEQWdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgKiBhcyBwcm90byBmcm9tICdAaGFzaGdyYXBoL3Byb3RvJztcbmltcG9ydCB7IEJhc2VLZXksIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgU2lnbmluZ0Vycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7XG4gIGJ1aWxkSGVkZXJhQWNjb3VudElELFxuICBidWlsZEhlZGVyYVRva2VuSUQsXG4gIGdldEhlZGVyYVRva2VuSWRGcm9tTmFtZSxcbiAgaXNWYWxpZEFkZHJlc3MsXG4gIGlzVmFsaWRIZWRlcmFUb2tlbklELFxuICBzdHJpbmdpZnlBY2NvdW50SWQsXG4gIHN0cmluZ2lmeVRva2VuSWQsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgREVGQVVMVF9TSUdORVJfTlVNQkVSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgVG9rZW5Bc3NvY2lhdGVCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdHhCb2R5RGF0YTogcHJvdG8uVG9rZW5Bc3NvY2lhdGVUcmFuc2FjdGlvbkJvZHk7XG4gIHByaXZhdGUgX2FjY291bnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfdG9rZW5JZHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3R4Qm9keURhdGEgPSBuZXcgcHJvdG8uVG9rZW5Bc3NvY2lhdGVUcmFuc2FjdGlvbkJvZHkoKTtcbiAgICB0aGlzLl90eEJvZHkudG9rZW5Bc3NvY2lhdGUgPSB0aGlzLl90eEJvZHlEYXRhO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCB0b2tlbkFzc29jaWF0ZUFjY291bnQgPSB0eC50eEJvZHkudG9rZW5Bc3NvY2lhdGU7XG4gICAgaWYgKHRva2VuQXNzb2NpYXRlQWNjb3VudCAmJiB0b2tlbkFzc29jaWF0ZUFjY291bnQudG9rZW5zKSB7XG4gICAgICB0aGlzLmluaXRUb2tlbkFzc29jaWF0aW9uKHRva2VuQXNzb2NpYXRlQWNjb3VudCBhcyBwcm90by5Ub2tlbkFzc29jaWF0ZVRyYW5zYWN0aW9uQm9keSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0VG9rZW5Bc3NvY2lhdGlvbih0b2tlbkFzc29jaWF0ZUFjY291bnQ6IHByb3RvLklUb2tlbkFzc29jaWF0ZVRyYW5zYWN0aW9uQm9keSk6IHZvaWQge1xuICAgIHRva2VuQXNzb2NpYXRlQWNjb3VudC50b2tlbnMhLmZvckVhY2goKHRva2VuSWQ6IHByb3RvLklUb2tlbklEKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbiA9IHN0cmluZ2lmeVRva2VuSWQodG9rZW5JZCk7XG4gICAgICB0aGlzLnZhbGlkYXRlVG9rZW4odG9rZW4pO1xuICAgICAgdGhpcy5fdG9rZW5JZHMucHVzaCh0b2tlbik7XG4gICAgfSk7XG5cbiAgICBpZiAodG9rZW5Bc3NvY2lhdGVBY2NvdW50LmFjY291bnQpIHtcbiAgICAgIGNvbnN0IGFjY291bnRJZCA9IHN0cmluZ2lmeUFjY291bnRJZCh0b2tlbkFzc29jaWF0ZUFjY291bnQuYWNjb3VudCk7XG4gICAgICB0aGlzLmFjY291bnQoYWNjb3VudElkKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMubGVuZ3RoID49IERFRkFVTFRfU0lHTkVSX05VTUJFUikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX1NJR05FUl9OVU1CRVIgKyAnIGNhbiBzaWduIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNpZ25JbXBsZW1lbnRhdGlvbihrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLl90eEJvZHlEYXRhLnRva2VucyA9IHRoaXMuYnVpbGRUb2tlbkRhdGEoKTtcbiAgICB0aGlzLl90eEJvZHlEYXRhLmFjY291bnQgPSB0aGlzLmJ1aWxkQWNjb3VudERhdGEoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdG9rZW5JZHMgfHwgdGhpcy5fdG9rZW5JZHMubGVuZ3RoIDwgMSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0b2tlbnMgdG8gYXNzb2NpYXRlJyk7XG4gICAgfVxuXG4gICAgc3VwZXIudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYWNjb3VudCB0byBhc3NvY2lhdGUgd2l0aCB0b2tlbnMsIGRlZmF1bHRzIHRvIHRoaXMuX3NvdXJjZS5hZGRyZXNzIHZhbHVlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2NvdW50SUQgLSBUaGUgbmFtZSBvZiB0aGUgYWNjb3VudCB0byBhc3NvY2lhdGUgdG8gdGhlIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUb2tlbkFzc29jaWF0ZUJ1aWxkZXJ9IC0gVGhpcyB0b2tlbiBhc3NvY2lhdGlvbiBidWlsZGVyXG4gICAqL1xuICBhY2NvdW50KGFjY291bnRJRDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFjY291bnQoYWNjb3VudElEKTtcbiAgICB0aGlzLl9hY2NvdW50ID0gYWNjb3VudElEO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRva2VuIHRvIGFzc29jaWF0ZSB0byB0aGUgbXVsdGlzaWcgd2FsbGV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRva2VuIHRvIGFzc29jaWF0ZSB0byB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge1Rva2VuQXNzb2NpYXRlQnVpbGRlcn0gLSBUaGlzIHRva2VuIGFzc29jaWF0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHRva2Vucyh0b2tlbk5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHRva2VuSWQgPSBnZXRIZWRlcmFUb2tlbklkRnJvbU5hbWUodG9rZW5OYW1lKTtcbiAgICBpZiAoIXRva2VuSWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1Vuc3VwcG9ydGVkIHRva2VuOiAnICsgdG9rZW5OYW1lKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZVRva2VuKHRva2VuSWQpO1xuICAgIHRoaXMuX3Rva2VuSWRzLnB1c2godG9rZW5JZCEpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRva2VuRGF0YSgpOiBwcm90by5Ub2tlbklEW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbklkcy5tYXAoYnVpbGRIZWRlcmFUb2tlbklEKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRBY2NvdW50RGF0YSgpOiBwcm90by5BY2NvdW50SUQge1xuICAgIGxldCBhY2NvdW50SWQgPSB0aGlzLl9hY2NvdW50O1xuICAgIGlmICghYWNjb3VudElkKSB7XG4gICAgICBhY2NvdW50SWQgPSB0aGlzLl9zb3VyY2UuYWRkcmVzcztcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRIZWRlcmFBY2NvdW50SUQoYWNjb3VudElkKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBY2NvdW50KGFjY291bnRJRDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhY2NvdW50SUQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVbnN1cHBvcnRlZCBhY2NvdW50IGFkZHJlc3M6ICcgKyBhY2NvdW50SUQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUb2tlbih0b2tlbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdG9rZW5JZHMuaW5jbHVkZXModG9rZW5JZCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1JlcGVhdGVkIHRva2VuIElEOiAnICsgdG9rZW5JZCk7XG4gICAgfSBlbHNlIGlmICghaXNWYWxpZEhlZGVyYVRva2VuSUQodG9rZW5JZCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdG9rZW4gSUQ6ICcgKyB0b2tlbklkKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,25 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
- import * as proto from '@hashgraph/proto';
3
- import { Recipient } from './iface';
4
- import { TransferBuilder } from './transferBuilder';
5
- import { Transaction } from './transaction';
6
- export declare class TokenTransferBuilder extends TransferBuilder {
7
- private _tokenName;
8
- constructor(_coinConfig: Readonly<CoinConfig>);
9
- /** @inheritdoc */
10
- protected buildImplementation(): Promise<Transaction>;
11
- private buildTokenTransferData;
12
- /** @inheritdoc */
13
- initBuilder(tx: Transaction): void;
14
- /**
15
- * Initialize the transfer specific data, getting the recipient account
16
- * represented by the element with a positive amount on the transfer element.
17
- * The negative amount represents the source account so it's ignored.
18
- *
19
- * @param {proto.IAccountAmount[]} transfers array of objects which contains accountID and transferred amount
20
- */
21
- protected initTokenTransfers(tokenTransfers: proto.ITokenTransferList[]): void;
22
- /** @inheritdoc */
23
- send(recipient: Recipient): this;
24
- }
25
- //# sourceMappingURL=tokenTransferBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/hbar/tokenTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,OAAO,CAAC,UAAU,CAAC;gBAEP,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAK3D,OAAO,CAAC,sBAAsB;IA0B9B,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAQlC;;;;;;OAMG;IACH,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,kBAAkB,EAAE,GAAG,IAAI;IA2B9E,kBAAkB;IAClB,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;CAejC"}
@@ -1,115 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.TokenTransferBuilder = void 0;
23
- const Long = __importStar(require("long"));
24
- const sdk_core_1 = require("@bitgo/sdk-core");
25
- const transferBuilder_1 = require("./transferBuilder");
26
- const utils_1 = require("./utils");
27
- const bignumber_js_1 = require("bignumber.js");
28
- class TokenTransferBuilder extends transferBuilder_1.TransferBuilder {
29
- constructor(_coinConfig) {
30
- super(_coinConfig);
31
- }
32
- /** @inheritdoc */
33
- async buildImplementation() {
34
- this._txBodyData.tokenTransfers = this.buildTokenTransferData(); // set to list by the contract
35
- return await super.buildImplementation();
36
- }
37
- buildTokenTransferData() {
38
- let tokenTransferAmount = new bignumber_js_1.BigNumber(0); // total send amount for each token
39
- const tokenId = utils_1.getHederaTokenIdFromName(this._tokenName);
40
- const tokenTransferData = [
41
- {
42
- accountID: utils_1.buildHederaAccountID(this._source.address),
43
- amount: Long.fromInt(0),
44
- },
45
- ];
46
- this._recipients.forEach((recipient) => {
47
- tokenTransferAmount = tokenTransferAmount.plus(recipient.amount);
48
- tokenTransferData.push({ accountID: utils_1.buildHederaAccountID(recipient.address), amount: Long.fromString(recipient.amount) });
49
- });
50
- tokenTransferData[0].amount = Long.fromString(tokenTransferAmount.toString()).negate(); // update sender send amount
51
- return [
52
- {
53
- token: utils_1.buildHederaTokenID(tokenId),
54
- transfers: tokenTransferData,
55
- },
56
- ];
57
- }
58
- /** @inheritdoc */
59
- initBuilder(tx) {
60
- super.initBuilder(tx);
61
- const transferData = tx.txBody.cryptoTransfer;
62
- if (utils_1.isTokenTransfer(transferData)) {
63
- this.initTokenTransfers(transferData.tokenTransfers);
64
- }
65
- }
66
- /**
67
- * Initialize the transfer specific data, getting the recipient account
68
- * represented by the element with a positive amount on the transfer element.
69
- * The negative amount represents the source account so it's ignored.
70
- *
71
- * @param {proto.IAccountAmount[]} transfers array of objects which contains accountID and transferred amount
72
- */
73
- initTokenTransfers(tokenTransfers) {
74
- tokenTransfers.forEach((tokenTransfer) => {
75
- if (!tokenTransfer.token) {
76
- throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing token id');
77
- }
78
- if (!tokenTransfer.transfers) {
79
- throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing transfer data');
80
- }
81
- const token = utils_1.getHederaTokenNameFromId(utils_1.stringifyTokenId(tokenTransfer.token));
82
- if (!token) {
83
- throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid token id');
84
- }
85
- tokenTransfer.transfers.forEach((transferData) => {
86
- const amount = Long.fromValue(transferData.amount);
87
- if (amount.isPositive()) {
88
- this.send({
89
- address: utils_1.stringifyAccountId(transferData.accountID),
90
- amount: amount.toString(),
91
- tokenName: token.name,
92
- });
93
- }
94
- });
95
- });
96
- }
97
- // region Transfer fields
98
- /** @inheritdoc */
99
- send(recipient) {
100
- if (!recipient.tokenName) {
101
- throw new sdk_core_1.InvalidParameterValueError('Invalid missing token name');
102
- }
103
- const tokenId = utils_1.getHederaTokenIdFromName(recipient.tokenName);
104
- if (!tokenId) {
105
- throw new sdk_core_1.InvalidParameterValueError(`Invalid token name: ${recipient.tokenName}`);
106
- }
107
- if (this._tokenName && this._tokenName !== recipient.tokenName) {
108
- throw new sdk_core_1.InvalidParameterValueError(`Invalid token: received ${recipient.tokenName} for ${this._tokenName} tx`);
109
- }
110
- this._tokenName = recipient.tokenName;
111
- return super.send(recipient);
112
- }
113
- }
114
- exports.TokenTransferBuilder = TokenTransferBuilder;
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9oYmFyL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwyQ0FBNkI7QUFFN0IsOENBQW9GO0FBRXBGLHVEQUFvRDtBQUVwRCxtQ0FRaUI7QUFDakIsK0NBQXlDO0FBRXpDLE1BQWEsb0JBQXFCLFNBQVEsaUNBQWU7SUFHdkQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyw4QkFBOEI7UUFDL0YsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLHdCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQ0FBbUM7UUFDL0UsTUFBTSxPQUFPLEdBQUcsZ0NBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFELE1BQU0saUJBQWlCLEdBQTJCO1lBQ2hEO2dCQUNFLFNBQVMsRUFBRSw0QkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDckQsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ3hCO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDckMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRSxp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Q0FBQyxTQUFTLFFBQVEsSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUM7U0FDbEg7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FFRjtBQWxHRCxvREFrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0ICogYXMgTG9uZyBmcm9tICdsb25nJztcbmltcG9ydCAqIGFzIHByb3RvIGZyb20gJ0BoYXNoZ3JhcGgvcHJvdG8nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBSZWNpcGllbnQgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQge1xuICBidWlsZEhlZGVyYUFjY291bnRJRCxcbiAgYnVpbGRIZWRlcmFUb2tlbklELFxuICBnZXRIZWRlcmFUb2tlbklkRnJvbU5hbWUsXG4gIGdldEhlZGVyYVRva2VuTmFtZUZyb21JZCxcbiAgaXNUb2tlblRyYW5zZmVyLFxuICBzdHJpbmdpZnlBY2NvdW50SWQsXG4gIHN0cmluZ2lmeVRva2VuSWQsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQmlnTnVtYmVyIH0gZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuZXhwb3J0IGNsYXNzIFRva2VuVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNmZXJCdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdG9rZW5OYW1lOyAvLyBjdXJyZW50bHkgb25seSBzdXBwb3J0IDEgdG9rZW4vdHJhbnNmZXJcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuX3R4Qm9keURhdGEudG9rZW5UcmFuc2ZlcnMgPSB0aGlzLmJ1aWxkVG9rZW5UcmFuc2ZlckRhdGEoKTsgLy8gc2V0IHRvIGxpc3QgYnkgdGhlIGNvbnRyYWN0XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRUb2tlblRyYW5zZmVyRGF0YSgpOiBwcm90by5JVG9rZW5UcmFuc2Zlckxpc3RbXSB7XG4gICAgbGV0IHRva2VuVHJhbnNmZXJBbW91bnQgPSBuZXcgQmlnTnVtYmVyKDApOyAvLyB0b3RhbCBzZW5kIGFtb3VudCBmb3IgZWFjaCB0b2tlblxuICAgIGNvbnN0IHRva2VuSWQgPSBnZXRIZWRlcmFUb2tlbklkRnJvbU5hbWUodGhpcy5fdG9rZW5OYW1lKTtcbiAgICBjb25zdCB0b2tlblRyYW5zZmVyRGF0YTogcHJvdG8uSUFjY291bnRBbW91bnRbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgYWNjb3VudElEOiBidWlsZEhlZGVyYUFjY291bnRJRCh0aGlzLl9zb3VyY2UuYWRkcmVzcyksXG4gICAgICAgIGFtb3VudDogTG9uZy5mcm9tSW50KDApLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdGhpcy5fcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgIHRva2VuVHJhbnNmZXJBbW91bnQgPSB0b2tlblRyYW5zZmVyQW1vdW50LnBsdXMocmVjaXBpZW50LmFtb3VudCk7XG4gICAgICB0b2tlblRyYW5zZmVyRGF0YS5wdXNoKFxuICAgICAgICB7IGFjY291bnRJRDogYnVpbGRIZWRlcmFBY2NvdW50SUQocmVjaXBpZW50LmFkZHJlc3MpLCBhbW91bnQ6IExvbmcuZnJvbVN0cmluZyhyZWNpcGllbnQuYW1vdW50KSB9LCAvLyByZWNpcGllbnRcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdG9rZW5UcmFuc2ZlckRhdGFbMF0uYW1vdW50ID0gTG9uZy5mcm9tU3RyaW5nKHRva2VuVHJhbnNmZXJBbW91bnQudG9TdHJpbmcoKSkubmVnYXRlKCk7IC8vIHVwZGF0ZSBzZW5kZXIgc2VuZCBhbW91bnRcblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRva2VuOiBidWlsZEhlZGVyYVRva2VuSUQodG9rZW5JZCEpLFxuICAgICAgICB0cmFuc2ZlcnM6IHRva2VuVHJhbnNmZXJEYXRhLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCB0cmFuc2ZlckRhdGEgPSB0eC50eEJvZHkuY3J5cHRvVHJhbnNmZXIhO1xuICAgIGlmIChpc1Rva2VuVHJhbnNmZXIodHJhbnNmZXJEYXRhKSkge1xuICAgICAgdGhpcy5pbml0VG9rZW5UcmFuc2ZlcnModHJhbnNmZXJEYXRhLnRva2VuVHJhbnNmZXJzISk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zZmVyIHNwZWNpZmljIGRhdGEsIGdldHRpbmcgdGhlIHJlY2lwaWVudCBhY2NvdW50XG4gICAqIHJlcHJlc2VudGVkIGJ5IHRoZSBlbGVtZW50IHdpdGggYSBwb3NpdGl2ZSBhbW91bnQgb24gdGhlIHRyYW5zZmVyIGVsZW1lbnQuXG4gICAqIFRoZSBuZWdhdGl2ZSBhbW91bnQgcmVwcmVzZW50cyB0aGUgc291cmNlIGFjY291bnQgc28gaXQncyBpZ25vcmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3Byb3RvLklBY2NvdW50QW1vdW50W119IHRyYW5zZmVycyBhcnJheSBvZiBvYmplY3RzIHdoaWNoIGNvbnRhaW5zIGFjY291bnRJRCBhbmQgdHJhbnNmZXJyZWQgYW1vdW50XG4gICAqL1xuICBwcm90ZWN0ZWQgaW5pdFRva2VuVHJhbnNmZXJzKHRva2VuVHJhbnNmZXJzOiBwcm90by5JVG9rZW5UcmFuc2Zlckxpc3RbXSk6IHZvaWQge1xuICAgIHRva2VuVHJhbnNmZXJzLmZvckVhY2goKHRva2VuVHJhbnNmZXI6IHByb3RvLklUb2tlblRyYW5zZmVyTGlzdCkgPT4ge1xuICAgICAgaWYgKCF0b2tlblRyYW5zZmVyLnRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdG9rZW4gaWQnKTtcbiAgICAgIH1cbiAgICAgIGlmICghdG9rZW5UcmFuc2Zlci50cmFuc2ZlcnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0cmFuc2ZlciBkYXRhJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuID0gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHN0cmluZ2lmeVRva2VuSWQodG9rZW5UcmFuc2Zlci50b2tlbiEpKTtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCB0b2tlbiBpZCcpO1xuICAgICAgfVxuICAgICAgdG9rZW5UcmFuc2Zlci50cmFuc2ZlcnMuZm9yRWFjaCgodHJhbnNmZXJEYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGFtb3VudCA9IExvbmcuZnJvbVZhbHVlKHRyYW5zZmVyRGF0YS5hbW91bnQhKTtcbiAgICAgICAgaWYgKGFtb3VudC5pc1Bvc2l0aXZlKCkpIHtcbiAgICAgICAgICB0aGlzLnNlbmQoe1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5naWZ5QWNjb3VudElkKHRyYW5zZmVyRGF0YS5hY2NvdW50SUQhKSxcbiAgICAgICAgICAgIGFtb3VudDogYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHRva2VuLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gcmVnaW9uIFRyYW5zZmVyIGZpZWxkc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc2VuZChyZWNpcGllbnQ6IFJlY2lwaWVudCk6IHRoaXMge1xuICAgIGlmICghcmVjaXBpZW50LnRva2VuTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIG1pc3NpbmcgdG9rZW4gbmFtZScpO1xuICAgIH1cbiAgICBjb25zdCB0b2tlbklkID0gZ2V0SGVkZXJhVG9rZW5JZEZyb21OYW1lKHJlY2lwaWVudC50b2tlbk5hbWUpO1xuICAgIGlmICghdG9rZW5JZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKGBJbnZhbGlkIHRva2VuIG5hbWU6ICR7cmVjaXBpZW50LnRva2VuTmFtZX1gKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3Rva2VuTmFtZSAmJiB0aGlzLl90b2tlbk5hbWUgIT09IHJlY2lwaWVudC50b2tlbk5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcihgSW52YWxpZCB0b2tlbjogcmVjZWl2ZWQgJHtyZWNpcGllbnQudG9rZW5OYW1lfSBmb3IgJHt0aGlzLl90b2tlbk5hbWV9IHR4YCk7XG4gICAgfVxuICAgIHRoaXMuX3Rva2VuTmFtZSA9IHJlY2lwaWVudC50b2tlbk5hbWU7XG4gICAgcmV0dXJuIHN1cGVyLnNlbmQocmVjaXBpZW50KTtcbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -1,106 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
- import { BaseKey, BaseTransaction, TransactionType } from '@bitgo/sdk-core';
3
- import * as proto from '@hashgraph/proto';
4
- import { TxData } from './iface';
5
- import { KeyPair } from './';
6
- export declare class Transaction extends BaseTransaction {
7
- private _hederaTx;
8
- private _txBody;
9
- protected _type: TransactionType;
10
- constructor(_coinConfig: Readonly<CoinConfig>);
11
- /** @inheritdoc */
12
- canSign(key: BaseKey): boolean;
13
- sign(keyPair: KeyPair): Promise<void>;
14
- /**
15
- * Add a signature to this transaction
16
- *
17
- * @param {string} signature - The signature to add, in string hex format
18
- * @param {KeyPair} key - The key of the key that created the signature
19
- */
20
- addSignature(signature: string, key: KeyPair): void;
21
- /** @inheritdoc */
22
- toBroadcastFormat(): string;
23
- /**
24
- * Sets this transaction payload
25
- *
26
- * @param rawTransaction
27
- */
28
- fromRawTransaction(rawTransaction: Uint8Array | string): void;
29
- /** @inheritdoc */
30
- toJson(): TxData;
31
- /**
32
- * Get the recipient account and the amount
33
- * transferred on this transaction
34
- *
35
- * @returns { tokenName, Recipient[]} is object consisting of tokenName if it's a token transfer and recipients consisting
36
- * the recipient address, the transfer amount, and the token name for token transfer
37
- */
38
- private getTransferData;
39
- /**
40
- * Get the recipient account and the amount
41
- * transferred on this transaction
42
- *
43
- * @returns { accountId: string; tokenNames[]} is an object consisting of accountId for the token owner
44
- * and list of tokenNames that will be enabled
45
- */
46
- private getAccountAssociateData;
47
- get txBody(): proto.TransactionBody;
48
- get hederaTx(): proto.Transaction;
49
- /**
50
- * Sets this transaction body components
51
- *
52
- * @param {proto.Transaction} tx - Body Transaction
53
- */
54
- body(tx: proto.Transaction): void;
55
- /**
56
- * Set the transaction type
57
- *
58
- * @param {TransactionType} transactionType - The transaction type to be set
59
- */
60
- setTransactionType(transactionType: TransactionType): void;
61
- /**
62
- * Decode previous signatures from the inner hedera transaction
63
- * and save them into the base transaction signature list.
64
- */
65
- loadPreviousSignatures(): void;
66
- /**
67
- * Load the input and output data on this transaction using the transaction json
68
- * if there are outputs. For transactions without outputs (e.g. wallet initializations),
69
- * this function will not do anything
70
- */
71
- loadInputsAndOutputs(): void;
72
- /**
73
- * Sets this transaction body components
74
- *
75
- * @param {Uint8Array} bytes - Encoded body transaction
76
- */
77
- bodyBytes(bytes: Uint8Array): void;
78
- /**
79
- * Returns this hedera transaction id components in a readable format
80
- *
81
- * @returns {[string, string]} - Transaction id parts [<account id>, <startTime in seconds>]
82
- */
83
- getTxIdParts(): [string, string];
84
- /**
85
- * Returns this transaction hash
86
- *
87
- * @returns {string} - The transaction hash
88
- */
89
- getTxHash(): string;
90
- /**
91
- * Encode an object using the given encoder class
92
- *
93
- * @param {proto} obj - The object to be encoded, must be in proto namespace
94
- * @param encoder - Object encoder
95
- * @returns {Uint8Array} - Encoded object byte array
96
- */
97
- private encode;
98
- /**
99
- * Returns a sha-384 hash
100
- *
101
- * @param {Uint8Array} bytes - Bytes to be hashed
102
- * @returns {string} - The resulting hash string
103
- */
104
- sha(bytes: Uint8Array): string;
105
- }
106
- //# sourceMappingURL=transaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/hbar/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,eAAe,EAA4C,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMtH,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAa,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAG7B,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAwB;IACvC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIxB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI;IAWnD,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAK3B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAgB7D,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAmChB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IA+BvB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAS/B,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,CAElC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,WAAW,CAEhC;IAED;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI;IAMjC;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D;;;OAGG;IACH,sBAAsB,IAAI,IAAI;IAY9B;;;;OAIG;IACH,oBAAoB,IAAI,IAAI;IAwC5B;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMlC;;;;OAIG;IACH,YAAY,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAehC;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAYnB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IAOd;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;CAG/B"}