@bitgo-beta/sdk-coin-sui 1.4.1-alpha.9 → 3.0.2

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 (126) hide show
  1. package/.eslintignore +1 -0
  2. package/CHANGELOG.md +122 -0
  3. package/dist/src/index.d.ts +1 -0
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +2 -1
  6. package/dist/src/lib/constants.d.ts +7 -8
  7. package/dist/src/lib/constants.d.ts.map +1 -1
  8. package/dist/src/lib/constants.js +10 -13
  9. package/dist/src/lib/iface.d.ts +53 -51
  10. package/dist/src/lib/iface.d.ts.map +1 -1
  11. package/dist/src/lib/iface.js +26 -1
  12. package/dist/src/lib/index.d.ts +5 -0
  13. package/dist/src/lib/index.d.ts.map +1 -1
  14. package/dist/src/lib/index.js +12 -2
  15. package/dist/src/lib/keyPair.d.ts +11 -0
  16. package/dist/src/lib/keyPair.d.ts.map +1 -1
  17. package/dist/src/lib/keyPair.js +21 -10
  18. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +66 -0
  19. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -0
  20. package/dist/src/lib/mystenlab/builder/Inputs.js +56 -0
  21. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +616 -0
  22. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -0
  23. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +260 -0
  24. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +566 -0
  25. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -0
  26. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +171 -0
  27. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +992 -0
  28. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -0
  29. package/dist/src/lib/mystenlab/builder/Transactions.js +119 -0
  30. package/dist/src/lib/mystenlab/builder/bcs.d.ts +25 -0
  31. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -0
  32. package/dist/src/lib/mystenlab/builder/bcs.js +141 -0
  33. package/dist/src/lib/mystenlab/builder/index.d.ts +5 -0
  34. package/dist/src/lib/mystenlab/builder/index.d.ts.map +1 -0
  35. package/dist/src/lib/mystenlab/builder/index.js +17 -0
  36. package/dist/src/lib/mystenlab/builder/serializer.d.ts +4 -0
  37. package/dist/src/lib/mystenlab/builder/serializer.d.ts.map +1 -0
  38. package/dist/src/lib/mystenlab/builder/serializer.js +101 -0
  39. package/dist/src/lib/mystenlab/builder/utils.d.ts +10 -0
  40. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -0
  41. package/dist/src/lib/mystenlab/builder/utils.js +10 -0
  42. package/dist/src/lib/mystenlab/cryptography/hash.d.ts +8 -0
  43. package/dist/src/lib/mystenlab/cryptography/hash.d.ts.map +1 -0
  44. package/dist/src/lib/mystenlab/cryptography/hash.js +22 -0
  45. package/dist/src/lib/mystenlab/framework/framework.d.ts +93 -0
  46. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -0
  47. package/dist/src/lib/mystenlab/framework/framework.js +138 -0
  48. package/dist/src/lib/mystenlab/framework/index.d.ts +3 -0
  49. package/dist/src/lib/mystenlab/framework/index.d.ts.map +1 -0
  50. package/dist/src/lib/mystenlab/framework/index.js +15 -0
  51. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts +12 -0
  52. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts.map +1 -0
  53. package/dist/src/lib/mystenlab/framework/sui-system-state.js +19 -0
  54. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts +7 -0
  55. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts.map +1 -0
  56. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +119 -0
  57. package/dist/src/lib/mystenlab/types/coin.d.ts +89 -0
  58. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -0
  59. package/dist/src/lib/mystenlab/types/coin.js +32 -0
  60. package/dist/src/lib/mystenlab/types/common.d.ts +45 -0
  61. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -0
  62. package/dist/src/lib/mystenlab/types/common.js +84 -0
  63. package/dist/src/lib/mystenlab/types/events.d.ts +198 -0
  64. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -0
  65. package/dist/src/lib/mystenlab/types/events.js +46 -0
  66. package/dist/src/lib/mystenlab/types/index.d.ts +9 -0
  67. package/dist/src/lib/mystenlab/types/index.d.ts.map +1 -0
  68. package/dist/src/lib/mystenlab/types/index.js +21 -0
  69. package/dist/src/lib/mystenlab/types/normalized.d.ts +254 -0
  70. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -0
  71. package/dist/src/lib/mystenlab/types/normalized.js +111 -0
  72. package/dist/src/lib/mystenlab/types/objects.d.ts +806 -0
  73. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -0
  74. package/dist/src/lib/mystenlab/types/objects.js +302 -0
  75. package/dist/src/lib/mystenlab/types/option.d.ts +8 -0
  76. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -0
  77. package/dist/src/lib/mystenlab/types/option.js +14 -0
  78. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +111 -0
  79. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -0
  80. package/dist/src/lib/mystenlab/types/sui-bcs.js +107 -0
  81. package/dist/src/lib/mystenlab/types/transactions.d.ts +6703 -0
  82. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -0
  83. package/dist/src/lib/mystenlab/types/transactions.js +405 -0
  84. package/dist/src/lib/mystenlab/types/validator.d.ts +641 -0
  85. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -0
  86. package/dist/src/lib/mystenlab/types/validator.js +156 -0
  87. package/dist/src/lib/stakingBuilder.d.ts +62 -0
  88. package/dist/src/lib/stakingBuilder.d.ts.map +1 -0
  89. package/dist/src/lib/stakingBuilder.js +187 -0
  90. package/dist/src/lib/stakingTransaction.d.ts +51 -0
  91. package/dist/src/lib/stakingTransaction.d.ts.map +1 -0
  92. package/dist/src/lib/stakingTransaction.js +211 -0
  93. package/dist/src/lib/transaction.d.ts +36 -33
  94. package/dist/src/lib/transaction.d.ts.map +1 -1
  95. package/dist/src/lib/transaction.js +89 -252
  96. package/dist/src/lib/transactionBuilder.d.ts +18 -33
  97. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  98. package/dist/src/lib/transactionBuilder.js +39 -169
  99. package/dist/src/lib/transactionBuilderFactory.d.ts +10 -3
  100. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  101. package/dist/src/lib/transactionBuilderFactory.js +29 -7
  102. package/dist/src/lib/transferBuilder.d.ts +31 -2
  103. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  104. package/dist/src/lib/transferBuilder.js +102 -1
  105. package/dist/src/lib/transferTransaction.d.ts +54 -0
  106. package/dist/src/lib/transferTransaction.d.ts.map +1 -0
  107. package/dist/src/lib/transferTransaction.js +180 -0
  108. package/dist/src/lib/unstakingBuilder.d.ts +55 -0
  109. package/dist/src/lib/unstakingBuilder.d.ts.map +1 -0
  110. package/dist/src/lib/unstakingBuilder.js +148 -0
  111. package/dist/src/lib/unstakingTransaction.d.ts +51 -0
  112. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -0
  113. package/dist/src/lib/unstakingTransaction.js +206 -0
  114. package/dist/src/lib/utils.d.ts +49 -3
  115. package/dist/src/lib/utils.d.ts.map +1 -1
  116. package/dist/src/lib/utils.js +151 -10
  117. package/dist/src/register.d.ts +3 -0
  118. package/dist/src/register.d.ts.map +1 -0
  119. package/dist/src/register.js +11 -0
  120. package/dist/src/sui.d.ts +3 -0
  121. package/dist/src/sui.d.ts.map +1 -1
  122. package/dist/src/sui.js +34 -14
  123. package/package.json +11 -9
  124. package/dist/src/lib/bcs.d.ts +0 -3
  125. package/dist/src/lib/bcs.d.ts.map +0 -1
  126. package/dist/src/lib/bcs.js +0 -82
@@ -0,0 +1,211 @@
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.StakingTransaction = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const utils_1 = __importDefault(require("./utils"));
9
+ const buffer_1 = require("buffer");
10
+ const transaction_1 = require("./transaction");
11
+ const builder_1 = require("./mystenlab/builder");
12
+ const types_1 = require("./mystenlab/types");
13
+ const bcs_1 = require("@mysten/bcs");
14
+ const constants_1 = require("./constants");
15
+ class StakingTransaction extends transaction_1.Transaction {
16
+ constructor(_coinConfig) {
17
+ super(_coinConfig);
18
+ }
19
+ get suiTransaction() {
20
+ return this._suiTransaction;
21
+ }
22
+ setSuiTransaction(tx) {
23
+ this._suiTransaction = tx;
24
+ }
25
+ addSignature(publicKey, signature) {
26
+ this._signatures.push(signature.toString('hex'));
27
+ this._signature = { publicKey, signature };
28
+ this.serialize();
29
+ }
30
+ get suiSignature() {
31
+ return this._signature;
32
+ }
33
+ /** @inheritdoc */
34
+ canSign(key) {
35
+ return true;
36
+ }
37
+ /** @inheritdoc */
38
+ toBroadcastFormat() {
39
+ if (!this._suiTransaction) {
40
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
41
+ }
42
+ return this.serialize();
43
+ }
44
+ /** @inheritdoc */
45
+ toJson() {
46
+ if (!this._suiTransaction) {
47
+ throw new sdk_core_1.ParseTransactionError('Empty transaction');
48
+ }
49
+ const tx = this._suiTransaction;
50
+ return {
51
+ id: this._id,
52
+ sender: tx.sender,
53
+ kind: { ProgrammableTransaction: tx.tx },
54
+ gasData: tx.gasData,
55
+ expiration: { None: null },
56
+ };
57
+ }
58
+ /** @inheritDoc */
59
+ explainTransaction() {
60
+ const result = this.toJson();
61
+ const displayOrder = [
62
+ 'id',
63
+ 'outputs',
64
+ 'outputAmount',
65
+ 'changeOutputs',
66
+ 'changeAmount',
67
+ 'fee',
68
+ 'type',
69
+ 'module',
70
+ 'function',
71
+ 'validatorAddress',
72
+ ];
73
+ const outputs = [];
74
+ const explanationResult = {
75
+ displayOrder,
76
+ id: this.id,
77
+ outputs,
78
+ outputAmount: '0',
79
+ changeOutputs: [],
80
+ changeAmount: '0',
81
+ fee: { fee: this.suiTransaction.gasData.budget.toString() },
82
+ type: this.type,
83
+ };
84
+ switch (this.type) {
85
+ case sdk_core_1.TransactionType.StakingAdd:
86
+ return this.explainAddDelegationTransaction(result, explanationResult);
87
+ default:
88
+ throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
89
+ }
90
+ }
91
+ /**
92
+ * Set the transaction type.
93
+ *
94
+ * @param {TransactionType} transactionType The transaction type to be set.
95
+ */
96
+ transactionType(transactionType) {
97
+ this._type = transactionType;
98
+ }
99
+ /**
100
+ * Load the input and output data on this transaction.
101
+ */
102
+ loadInputsAndOutputs() {
103
+ if (!this.suiTransaction) {
104
+ return;
105
+ }
106
+ const amountInputIdx = this.suiTransaction.tx.transactions[0].amounts[0].index;
107
+ const amount = utils_1.default.getAmount(this.suiTransaction.tx.inputs[amountInputIdx]);
108
+ const validatorAddressInputIdx = this.suiTransaction.tx.transactions[1].arguments[2].index;
109
+ const validatorAddress = utils_1.default.getAddress(this.suiTransaction.tx.inputs[validatorAddressInputIdx]);
110
+ this._outputs = [
111
+ {
112
+ address: validatorAddress,
113
+ value: Number(amount).toString(),
114
+ coin: this._coinConfig.name,
115
+ },
116
+ ];
117
+ this._inputs = [
118
+ {
119
+ address: this.suiTransaction.sender,
120
+ value: Number(amount).toString(),
121
+ coin: this._coinConfig.name,
122
+ },
123
+ ];
124
+ }
125
+ /**
126
+ * Sets this transaction payload
127
+ *
128
+ * @param {string} rawTransaction
129
+ */
130
+ fromRawTransaction(rawTransaction) {
131
+ try {
132
+ utils_1.default.isValidRawTransaction(rawTransaction);
133
+ this._suiTransaction = transaction_1.Transaction.deserializeSuiTransaction(rawTransaction);
134
+ this._type = utils_1.default.getTransactionType(this._suiTransaction.type);
135
+ this._id = this._suiTransaction.id;
136
+ this.loadInputsAndOutputs();
137
+ }
138
+ catch (e) {
139
+ throw e;
140
+ }
141
+ }
142
+ /**
143
+ * Helper function for serialize() to get the correct txData with transaction type
144
+ *
145
+ * @return {TxData}
146
+ */
147
+ getTxData() {
148
+ if (!this._suiTransaction) {
149
+ throw new sdk_core_1.InvalidTransactionError('empty transaction');
150
+ }
151
+ const inputs = this._suiTransaction.tx.inputs.map((input, index) => {
152
+ if (input.hasOwnProperty('Object')) {
153
+ return input;
154
+ }
155
+ if (input.hasOwnProperty('Pure')) {
156
+ if (input.Pure.length === constants_1.SUI_ADDRESS_LENGTH) {
157
+ const address = types_1.normalizeSuiAddress(builder_1.builder.de(bcs_1.BCS.ADDRESS, buffer_1.Buffer.from(input.Pure).toString('base64'), 'base64'));
158
+ return builder_1.Inputs.Pure(address, bcs_1.BCS.ADDRESS);
159
+ }
160
+ else {
161
+ const amount = builder_1.builder.de(bcs_1.BCS.U64, buffer_1.Buffer.from(input.Pure).toString('base64'), 'base64');
162
+ return builder_1.Inputs.Pure(amount, bcs_1.BCS.U64);
163
+ }
164
+ }
165
+ if (input.kind === 'Input' && (input.value.hasOwnProperty('Object') || input.value.hasOwnProperty('Pure'))) {
166
+ return input.value;
167
+ }
168
+ // what's left is the pure number or address string
169
+ return builder_1.Inputs.Pure(input.value, input.type === 'pure' ? bcs_1.BCS.U64 : bcs_1.BCS.ADDRESS);
170
+ });
171
+ const programmableTx = {
172
+ inputs: inputs,
173
+ transactions: this._suiTransaction.tx.transactions,
174
+ };
175
+ return {
176
+ sender: this._suiTransaction.sender,
177
+ expiration: { None: null },
178
+ gasData: this._suiTransaction.gasData,
179
+ kind: {
180
+ ProgrammableTransaction: programmableTx,
181
+ },
182
+ };
183
+ }
184
+ /**
185
+ * Returns a complete explanation for a staking transaction
186
+ *
187
+ * @param {TxData} json The transaction data in json format
188
+ * @param {TransactionExplanation} explanationResult The transaction explanation to be completed
189
+ * @returns {TransactionExplanation}
190
+ */
191
+ explainAddDelegationTransaction(json, explanationResult) {
192
+ const amountInputIdx = this.suiTransaction.tx.transactions[0].amounts[0].index;
193
+ const amount = this.suiTransaction.tx.inputs[amountInputIdx].value;
194
+ const validatorAddressInputIdx = this.suiTransaction.tx.transactions[1].arguments[2].index;
195
+ const validatorAddress = utils_1.default.getAddress(this.suiTransaction.tx.inputs[validatorAddressInputIdx]);
196
+ const outputs = [
197
+ {
198
+ address: validatorAddress,
199
+ amount: Number(amount).toString(),
200
+ },
201
+ ];
202
+ const outputAmount = amount;
203
+ return {
204
+ ...explanationResult,
205
+ outputAmount,
206
+ outputs,
207
+ };
208
+ }
209
+ }
210
+ exports.StakingTransaction = StakingTransaction;
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1RyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zdGFraW5nVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBUThCO0FBRzlCLG9EQUE0QjtBQUM1QixtQ0FBZ0M7QUFDaEMsK0NBQTRDO0FBQzVDLGlEQU02QjtBQUM3Qiw2Q0FBaUU7QUFDakUscUNBQWtDO0FBQ2xDLDJDQUFpRDtBQUVqRCxNQUFhLGtCQUFtQixTQUFRLHlCQUEyQztJQUNqRixZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBa0Q7UUFDbEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3hEO1FB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Q0FBQyxDQUFDLFFBQVEsRUFBRTthQUNsQztTQUNGLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7UUFFNUIsT0FBTztZQUNMLEdBQUcsaUJBQWlCO1lBQ3BCLFlBQVk7WUFDWixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXpPRCxnREF5T0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sIFN1aVRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgYnVpbGRlcixcbiAgSW5wdXRzLFxuICBNb3ZlQ2FsbFRyYW5zYWN0aW9uLFxuICBTcGxpdENvaW5zVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCxcbn0gZnJvbSAnLi9teXN0ZW5sYWIvYnVpbGRlcic7XG5pbXBvcnQgeyBDYWxsQXJnLCBub3JtYWxpemVTdWlBZGRyZXNzIH0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHsgQkNTIH0gZnJvbSAnQG15c3Rlbi9iY3MnO1xuaW1wb3J0IHsgU1VJX0FERFJFU1NfTEVOR1RIIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ1RyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb248U3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBzdWlUcmFuc2FjdGlvbigpOiBTdWlUcmFuc2FjdGlvbjxTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fc3VpVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXRTdWlUcmFuc2FjdGlvbih0eDogU3VpVHJhbnNhY3Rpb248U3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IHZvaWQge1xuICAgIHRoaXMuX3N1aVRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gICAgdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBzdWlTaWduYXR1cmUoKTogU2lnbmF0dXJlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdHggPSB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuX2lkLFxuICAgICAgc2VuZGVyOiB0eC5zZW5kZXIsXG4gICAgICBraW5kOiB7IFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uOiB0eC50eCB9LFxuICAgICAgZ2FzRGF0YTogdHguZ2FzRGF0YSxcbiAgICAgIGV4cGlyYXRpb246IHsgTm9uZTogbnVsbCB9LFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gW1xuICAgICAgJ2lkJyxcbiAgICAgICdvdXRwdXRzJyxcbiAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAnZmVlJyxcbiAgICAgICd0eXBlJyxcbiAgICAgICdtb2R1bGUnLFxuICAgICAgJ2Z1bmN0aW9uJyxcbiAgICAgICd2YWxpZGF0b3JBZGRyZXNzJyxcbiAgICBdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcblxuICAgIGNvbnN0IGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogdGhpcy5zdWlUcmFuc2FjdGlvbi5nYXNEYXRhLmJ1ZGdldC50b1N0cmluZygpIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWRkOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluQWRkRGVsZWdhdGlvblRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhbW91bnRJbnB1dElkeCA9IChcbiAgICAgICh0aGlzLnN1aVRyYW5zYWN0aW9uLnR4LnRyYW5zYWN0aW9uc1swXSBhcyBTcGxpdENvaW5zVHJhbnNhY3Rpb24pLmFtb3VudHNbMF0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgKS5pbmRleDtcbiAgICBjb25zdCBhbW91bnQgPSB1dGlscy5nZXRBbW91bnQodGhpcy5zdWlUcmFuc2FjdGlvbi50eC5pbnB1dHNbYW1vdW50SW5wdXRJZHhdIGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCk7XG5cbiAgICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzSW5wdXRJZHggPSAoXG4gICAgICAodGhpcy5zdWlUcmFuc2FjdGlvbi50eC50cmFuc2FjdGlvbnNbMV0gYXMgTW92ZUNhbGxUcmFuc2FjdGlvbikuYXJndW1lbnRzWzJdIGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dFxuICAgICkuaW5kZXg7XG4gICAgY29uc3QgdmFsaWRhdG9yQWRkcmVzcyA9IHV0aWxzLmdldEFkZHJlc3MoXG4gICAgICB0aGlzLnN1aVRyYW5zYWN0aW9uLnR4LmlucHV0c1t2YWxpZGF0b3JBZGRyZXNzSW5wdXRJZHhdIGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dFxuICAgICk7XG5cbiAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB2YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICB2YWx1ZTogTnVtYmVyKGFtb3VudCkudG9TdHJpbmcoKSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSxcbiAgICBdO1xuICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5zdWlUcmFuc2FjdGlvbi5zZW5kZXIsXG4gICAgICAgIHZhbHVlOiBOdW1iZXIoYW1vdW50KS50b1N0cmluZygpLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB1dGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5fc3VpVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKFxuICAgICAgICByYXdUcmFuc2FjdGlvblxuICAgICAgKSBhcyBTdWlUcmFuc2FjdGlvbjxTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+O1xuICAgICAgdGhpcy5fdHlwZSA9IHV0aWxzLmdldFRyYW5zYWN0aW9uVHlwZSh0aGlzLl9zdWlUcmFuc2FjdGlvbi50eXBlKTtcbiAgICAgIHRoaXMuX2lkID0gdGhpcy5fc3VpVHJhbnNhY3Rpb24uaWQ7XG4gICAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBzZXJpYWxpemUoKSB0byBnZXQgdGhlIGNvcnJlY3QgdHhEYXRhIHdpdGggdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcmV0dXJuIHtUeERhdGF9XG4gICAqL1xuICBnZXRUeERhdGEoKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ2VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGlucHV0czogQ2FsbEFyZ1tdIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0W10gPSB0aGlzLl9zdWlUcmFuc2FjdGlvbi50eC5pbnB1dHMubWFwKChpbnB1dCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbnB1dC5oYXNPd25Qcm9wZXJ0eSgnT2JqZWN0JykpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0Lmhhc093blByb3BlcnR5KCdQdXJlJykpIHtcbiAgICAgICAgaWYgKGlucHV0LlB1cmUubGVuZ3RoID09PSBTVUlfQUREUkVTU19MRU5HVEgpIHtcbiAgICAgICAgICBjb25zdCBhZGRyZXNzID0gbm9ybWFsaXplU3VpQWRkcmVzcyhcbiAgICAgICAgICAgIGJ1aWxkZXIuZGUoQkNTLkFERFJFU1MsIEJ1ZmZlci5mcm9tKGlucHV0LlB1cmUpLnRvU3RyaW5nKCdiYXNlNjQnKSwgJ2Jhc2U2NCcpXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gSW5wdXRzLlB1cmUoYWRkcmVzcywgQkNTLkFERFJFU1MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGFtb3VudCA9IGJ1aWxkZXIuZGUoQkNTLlU2NCwgQnVmZmVyLmZyb20oaW5wdXQuUHVyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpLCAnYmFzZTY0Jyk7XG4gICAgICAgICAgcmV0dXJuIElucHV0cy5QdXJlKGFtb3VudCwgQkNTLlU2NCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dC5raW5kID09PSAnSW5wdXQnICYmIChpbnB1dC52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnT2JqZWN0JykgfHwgaW5wdXQudmFsdWUuaGFzT3duUHJvcGVydHkoJ1B1cmUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LnZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyB3aGF0J3MgbGVmdCBpcyB0aGUgcHVyZSBudW1iZXIgb3IgYWRkcmVzcyBzdHJpbmdcbiAgICAgIHJldHVybiBJbnB1dHMuUHVyZShpbnB1dC52YWx1ZSwgaW5wdXQudHlwZSA9PT0gJ3B1cmUnID8gQkNTLlU2NCA6IEJDUy5BRERSRVNTKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHByb2dyYW1tYWJsZVR4ID0ge1xuICAgICAgaW5wdXRzOiBpbnB1dHMsXG4gICAgICB0cmFuc2FjdGlvbnM6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnR4LnRyYW5zYWN0aW9ucyxcbiAgICB9IGFzIFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjtcblxuICAgIHJldHVybiB7XG4gICAgICBzZW5kZXI6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnNlbmRlcixcbiAgICAgIGV4cGlyYXRpb246IHsgTm9uZTogbnVsbCB9LFxuICAgICAgZ2FzRGF0YTogdGhpcy5fc3VpVHJhbnNhY3Rpb24uZ2FzRGF0YSxcbiAgICAgIGtpbmQ6IHtcbiAgICAgICAgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHByb2dyYW1tYWJsZVR4LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHhEYXRhfSBqc29uIFRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGpzb24gZm9ybWF0XG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn0gZXhwbGFuYXRpb25SZXN1bHQgVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIHRvIGJlIGNvbXBsZXRlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn1cbiAgICovXG4gIGV4cGxhaW5BZGREZWxlZ2F0aW9uVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IGFtb3VudElucHV0SWR4ID0gKFxuICAgICAgKHRoaXMuc3VpVHJhbnNhY3Rpb24udHgudHJhbnNhY3Rpb25zWzBdIGFzIFNwbGl0Q29pbnNUcmFuc2FjdGlvbikuYW1vdW50c1swXSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXRcbiAgICApLmluZGV4O1xuICAgIGNvbnN0IGFtb3VudCA9ICh0aGlzLnN1aVRyYW5zYWN0aW9uLnR4LmlucHV0c1thbW91bnRJbnB1dElkeF0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0KS52YWx1ZTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckFkZHJlc3NJbnB1dElkeCA9IChcbiAgICAgICh0aGlzLnN1aVRyYW5zYWN0aW9uLnR4LnRyYW5zYWN0aW9uc1sxXSBhcyBNb3ZlQ2FsbFRyYW5zYWN0aW9uKS5hcmd1bWVudHNbMl0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgKS5pbmRleDtcbiAgICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzID0gdXRpbHMuZ2V0QWRkcmVzcyhcbiAgICAgIHRoaXMuc3VpVHJhbnNhY3Rpb24udHguaW5wdXRzW3ZhbGlkYXRvckFkZHJlc3NJbnB1dElkeF0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgKTtcblxuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogTnVtYmVyKGFtb3VudCkudG9TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBhbW91bnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBvdXRwdXRzLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,60 +1,63 @@
1
1
  /// <reference types="node" />
2
- import { BaseKey, BaseTransaction, PublicKey as BasePublicKey, Signature, TransactionType } from '@bitgo-beta/sdk-core';
3
- import { SuiObjectRef, SuiTransaction, TransactionExplanation, TxData } from './iface';
2
+ import { BaseKey, BaseTransaction, PublicKey as BasePublicKey, Signature, TransactionType as BitGoTransactionType } from '@bitgo-beta/sdk-core';
3
+ import { StakingProgrammableTransaction, SuiTransaction, TransferProgrammableTransaction, TxData } from './iface';
4
4
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
5
- import { SuiTransactionType } from './constants';
6
- export declare class Transaction extends BaseTransaction {
7
- private _suiTransaction;
8
- private _signature;
9
- constructor(_coinConfig: Readonly<CoinConfig>);
10
- get suiTransaction(): SuiTransaction;
11
- setSuiTransaction(tx: SuiTransaction): void;
5
+ import { GasData } from './mystenlab/types';
6
+ import { KeyPair } from './keyPair';
7
+ export declare abstract class Transaction<T> extends BaseTransaction {
8
+ protected _suiTransaction: SuiTransaction<T>;
9
+ protected _signature: Signature;
10
+ private _serializedSig;
11
+ protected constructor(_coinConfig: Readonly<CoinConfig>);
12
+ get suiTransaction(): SuiTransaction<T>;
13
+ setSuiTransaction(tx: SuiTransaction<T>): void;
12
14
  /** @inheritDoc **/
13
15
  get id(): string;
14
16
  addSignature(publicKey: BasePublicKey, signature: Buffer): void;
15
17
  get suiSignature(): Signature;
16
- getInputCoins(): SuiObjectRef[];
18
+ get serializedSig(): Uint8Array;
19
+ setSerializedSig(publicKey: BasePublicKey, signature: Buffer): void;
17
20
  /** @inheritdoc */
18
21
  canSign(key: BaseKey): boolean;
22
+ /**
23
+ * Sign this transaction
24
+ *
25
+ * @param {KeyPair} signer key
26
+ */
27
+ sign(signer: KeyPair): void;
19
28
  /** @inheritdoc */
20
29
  toBroadcastFormat(): string;
21
30
  /** @inheritdoc */
22
- toJson(): TxData;
23
- /** @inheritDoc */
24
- explainTransaction(): TransactionExplanation;
31
+ abstract toJson(): TxData;
25
32
  /**
26
33
  * Set the transaction type.
27
34
  *
28
35
  * @param {TransactionType} transactionType The transaction type to be set.
29
36
  */
30
- transactionType(transactionType: TransactionType): void;
37
+ transactionType(transactionType: BitGoTransactionType): void;
38
+ /**
39
+ * get the correct txData with transaction type
40
+ */
41
+ abstract getTxData(): TxData;
31
42
  /**
32
43
  * Load the input and output data on this transaction.
33
44
  */
34
- loadInputsAndOutputs(): void;
45
+ abstract loadInputsAndOutputs(): void;
35
46
  /**
36
47
  * Sets this transaction payload
37
48
  *
38
49
  * @param rawTransaction
39
50
  */
40
- fromRawTransaction(rawTransaction: string): void;
41
- /**
42
- * Helper function for serialize() to get the correct txData with transaction type
43
- */
44
- private getTxData;
51
+ abstract fromRawTransaction(rawTransaction: string): void;
52
+ getDataBytes(): Uint8Array;
53
+ /** @inheritDoc */
54
+ get signablePayload(): Buffer;
55
+ private messageWithIntent;
56
+ private intentWithScope;
45
57
  serialize(): string;
46
- static deserializeSuiTransaction(serializedTx: string): SuiTransaction;
47
- static getProperTxDetails(k: any, type: SuiTransactionType): {
48
- coins: SuiObjectRef[];
49
- recipients: string[];
50
- amounts: number[];
51
- };
52
- /**
53
- * Returns a complete explanation for a transfer transaction
54
- * @param {TxData} json The transaction data in json format
55
- * @param {TransactionExplanation} explanationResult The transaction explanation to be completed
56
- * @returns {TransactionExplanation}
57
- */
58
- explainTransferTransaction(json: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
58
+ static deserializeSuiTransaction(serializedTx: string): SuiTransaction<TransferProgrammableTransaction | StakingProgrammableTransaction>;
59
+ static getProperGasData(k: any): GasData;
60
+ private static normalizeCoins;
61
+ private static normalizeSuiObjectRef;
59
62
  }
60
63
  //# sourceMappingURL=transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAIf,SAAS,IAAI,aAAa,EAC1B,SAAS,EAET,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,EAAa,MAAM,SAAS,CAAC;AAClG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI7D,OAAO,EAAiB,kBAAkB,EAA8B,MAAM,aAAa,CAAC;AAG5F,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,UAAU,CAAY;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IAI3C,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,aAAa,IAAI,YAAY,EAAE;IAI/B,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAkDhB,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAwB5C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIvD;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAgC5B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAWhD;;OAEG;IACH,OAAO,CAAC,SAAS;IA6CjB,SAAS,IAAI,MAAM;IAanB,MAAM,CAAC,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc;IAqCtE,MAAM,CAAC,kBAAkB,CACvB,CAAC,EAAE,GAAG,EACN,IAAI,EAAE,kBAAkB,GACvB;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAuCrE;;;;;OAKG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;CAgB5G"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAEf,SAAS,IAAI,aAAa,EAC1B,SAAS,EACT,eAAe,IAAI,oBAAoB,EACxC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,8BAA8B,EAAE,cAAc,EAAE,+BAA+B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAClH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,OAAO,EAA2D,MAAM,mBAAmB,CAAC;AAKrG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,8BAAsB,WAAW,CAAC,CAAC,CAAE,SAAQ,eAAe;IAC1D,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7C,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;IAChC,OAAO,CAAC,cAAc,CAAa;IAEnC,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAIvD,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,CAEtC;IAED,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAI9C,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAKf;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,IAAI,aAAa,IAAI,UAAU,CAE9B;IAED,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IASnE,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B;;;;OAIG;IAEH,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAY3B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,QAAQ,CAAC,MAAM,IAAI,MAAM;IAEzB;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,oBAAoB,GAAG,IAAI;IAI5D;;OAEG;IACH,QAAQ,CAAC,SAAS,IAAI,MAAM;IAE5B;;OAEG;IACH,QAAQ,CAAC,oBAAoB,IAAI,IAAI;IAErC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAEzD,YAAY,IAAI,UAAU;IAM1B,kBAAkB;IAClB,IAAI,eAAe,IAAI,MAAM,CAI5B;IAED,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,eAAe;IAIvB,SAAS,IAAI,MAAM;IAMnB,MAAM,CAAC,yBAAyB,CAC9B,YAAY,EAAE,MAAM,GACnB,cAAc,CAAC,+BAA+B,GAAG,8BAA8B,CAAC;IAuBnF,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO;IASxC,OAAO,CAAC,MAAM,CAAC,cAAc;IAM7B,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAOrC"}