@bitgo-beta/sdk-coin-sui 3.0.3-beta.86 → 3.0.3-beta.861

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 (136) hide show
  1. package/CHANGELOG.md +777 -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 +7 -2
  5. package/dist/src/lib/compareTransactionBlocks.js +2 -3
  6. package/dist/src/lib/constants.d.ts +9 -2
  7. package/dist/src/lib/constants.d.ts.map +1 -1
  8. package/dist/src/lib/constants.js +18 -2
  9. package/dist/src/lib/customTransaction.d.ts +57 -0
  10. package/dist/src/lib/customTransaction.d.ts.map +1 -0
  11. package/dist/src/lib/customTransaction.js +159 -0
  12. package/dist/src/lib/customTransactionBuilder.d.ts +46 -0
  13. package/dist/src/lib/customTransactionBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/customTransactionBuilder.js +117 -0
  15. package/dist/src/lib/iface.d.ts +76 -10
  16. package/dist/src/lib/iface.d.ts.map +1 -1
  17. package/dist/src/lib/iface.js +40 -5
  18. package/dist/src/lib/index.d.ts +8 -0
  19. package/dist/src/lib/index.d.ts.map +1 -1
  20. package/dist/src/lib/index.js +40 -10
  21. package/dist/src/lib/keyPair.js +24 -10
  22. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +9 -9
  23. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
  24. package/dist/src/lib/mystenlab/builder/Inputs.js +18 -19
  25. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +40 -354
  26. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -1
  27. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +22 -25
  28. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +74 -74
  29. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -1
  30. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +41 -44
  31. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +133 -188
  32. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -1
  33. package/dist/src/lib/mystenlab/builder/Transactions.js +52 -53
  34. package/dist/src/lib/mystenlab/builder/bcs.d.ts +1 -1
  35. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -1
  36. package/dist/src/lib/mystenlab/builder/bcs.js +2 -2
  37. package/dist/src/lib/mystenlab/builder/index.js +6 -2
  38. package/dist/src/lib/mystenlab/builder/serializer.js +6 -8
  39. package/dist/src/lib/mystenlab/builder/utils.d.ts +1 -1
  40. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -1
  41. package/dist/src/lib/mystenlab/builder/utils.js +4 -4
  42. package/dist/src/lib/mystenlab/cryptography/hash.js +3 -4
  43. package/dist/src/lib/mystenlab/framework/framework.d.ts +6 -6
  44. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -1
  45. package/dist/src/lib/mystenlab/framework/framework.js +22 -25
  46. package/dist/src/lib/mystenlab/framework/index.js +6 -2
  47. package/dist/src/lib/mystenlab/framework/sui-system-state.js +2 -2
  48. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +2 -2
  49. package/dist/src/lib/mystenlab/types/coin.d.ts +10 -10
  50. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -1
  51. package/dist/src/lib/mystenlab/types/coin.js +19 -19
  52. package/dist/src/lib/mystenlab/types/common.d.ts +8 -8
  53. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -1
  54. package/dist/src/lib/mystenlab/types/common.js +22 -22
  55. package/dist/src/lib/mystenlab/types/events.d.ts +14 -14
  56. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -1
  57. package/dist/src/lib/mystenlab/types/events.js +17 -17
  58. package/dist/src/lib/mystenlab/types/index.js +6 -2
  59. package/dist/src/lib/mystenlab/types/normalized.d.ts +21 -21
  60. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -1
  61. package/dist/src/lib/mystenlab/types/normalized.js +41 -41
  62. package/dist/src/lib/mystenlab/types/objects.d.ts +51 -51
  63. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -1
  64. package/dist/src/lib/mystenlab/types/objects.js +96 -106
  65. package/dist/src/lib/mystenlab/types/option.d.ts +1 -1
  66. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -1
  67. package/dist/src/lib/mystenlab/types/option.js +2 -3
  68. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +8 -8
  69. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
  70. package/dist/src/lib/mystenlab/types/sui-bcs.js +5 -5
  71. package/dist/src/lib/mystenlab/types/transactions.d.ts +625 -625
  72. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -1
  73. package/dist/src/lib/mystenlab/types/transactions.js +178 -194
  74. package/dist/src/lib/mystenlab/types/validator.d.ts +9 -9
  75. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -1
  76. package/dist/src/lib/mystenlab/types/validator.js +124 -124
  77. package/dist/src/lib/resources/walrusConfig.d.ts +22 -0
  78. package/dist/src/lib/resources/walrusConfig.d.ts.map +1 -0
  79. package/dist/src/lib/resources/walrusConfig.js +37 -0
  80. package/dist/src/lib/rpcClient.d.ts +5 -0
  81. package/dist/src/lib/rpcClient.d.ts.map +1 -0
  82. package/dist/src/lib/rpcClient.js +74 -0
  83. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  84. package/dist/src/lib/stakingBuilder.js +23 -7
  85. package/dist/src/lib/stakingTransaction.d.ts +1 -1
  86. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  87. package/dist/src/lib/stakingTransaction.js +26 -15
  88. package/dist/src/lib/tokenTransferBuilder.d.ts +38 -0
  89. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  90. package/dist/src/lib/tokenTransferBuilder.js +132 -0
  91. package/dist/src/lib/tokenTransferTransaction.d.ts +57 -0
  92. package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -0
  93. package/dist/src/lib/tokenTransferTransaction.js +250 -0
  94. package/dist/src/lib/transaction.d.ts +12 -4
  95. package/dist/src/lib/transaction.d.ts.map +1 -1
  96. package/dist/src/lib/transaction.js +91 -18
  97. package/dist/src/lib/transactionBuilder.d.ts +2 -3
  98. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  99. package/dist/src/lib/transactionBuilder.js +4 -4
  100. package/dist/src/lib/transactionBuilderFactory.d.ts +14 -2
  101. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  102. package/dist/src/lib/transactionBuilderFactory.js +42 -1
  103. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  104. package/dist/src/lib/transferBuilder.js +21 -5
  105. package/dist/src/lib/transferTransaction.d.ts +1 -1
  106. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  107. package/dist/src/lib/transferTransaction.js +31 -8
  108. package/dist/src/lib/unstakingBuilder.js +6 -6
  109. package/dist/src/lib/unstakingTransaction.d.ts +1 -1
  110. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -1
  111. package/dist/src/lib/unstakingTransaction.js +31 -17
  112. package/dist/src/lib/utils.d.ts +15 -4
  113. package/dist/src/lib/utils.d.ts.map +1 -1
  114. package/dist/src/lib/utils.js +264 -29
  115. package/dist/src/lib/walrusStakingBuilder.d.ts +66 -0
  116. package/dist/src/lib/walrusStakingBuilder.d.ts.map +1 -0
  117. package/dist/src/lib/walrusStakingBuilder.js +200 -0
  118. package/dist/src/lib/walrusStakingTransaction.d.ts +52 -0
  119. package/dist/src/lib/walrusStakingTransaction.d.ts.map +1 -0
  120. package/dist/src/lib/walrusStakingTransaction.js +269 -0
  121. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts +36 -0
  122. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts.map +1 -0
  123. package/dist/src/lib/walrusWithdrawStakeBuilder.js +173 -0
  124. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts +21 -0
  125. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts.map +1 -0
  126. package/dist/src/lib/walrusWithdrawStakeTransaction.js +186 -0
  127. package/dist/src/register.d.ts.map +1 -1
  128. package/dist/src/register.js +5 -1
  129. package/dist/src/sui.d.ts +44 -8
  130. package/dist/src/sui.d.ts.map +1 -1
  131. package/dist/src/sui.js +472 -32
  132. package/dist/src/suiToken.d.ts +22 -0
  133. package/dist/src/suiToken.d.ts.map +1 -0
  134. package/dist/src/suiToken.js +61 -0
  135. package/dist/src/tsui.js +1 -1
  136. package/package.json +10 -8
@@ -0,0 +1,173 @@
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.WalrusWithdrawStakeBuilder = void 0;
7
+ const iface_1 = require("./iface");
8
+ const statics_1 = require("@bitgo-beta/statics");
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const walrusWithdrawStakeTransaction_1 = require("./walrusWithdrawStakeTransaction");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ const walrusConfig_1 = require("./resources/walrusConfig");
13
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
14
+ const types_1 = require("./mystenlab/types");
15
+ const builder_1 = require("./mystenlab/builder");
16
+ const assert_1 = __importDefault(require("assert"));
17
+ const constants_1 = require("./constants");
18
+ class WalrusWithdrawStakeBuilder extends transactionBuilder_1.TransactionBuilder {
19
+ constructor(_coinConfig) {
20
+ super(_coinConfig);
21
+ this._transaction = new walrusWithdrawStakeTransaction_1.WalrusWithdrawStakeTransaction(_coinConfig);
22
+ // TODO improve mainnet vs. testnet configuration
23
+ this.walrusConfig = _coinConfig.network.type === statics_1.NetworkType.MAINNET ? walrusConfig_1.WALRUS_PROD_CONFIG : walrusConfig_1.WALRUS_TESTNET_CONFIG;
24
+ }
25
+ /**
26
+ * Get staking transaction type
27
+ *
28
+ * @return {TransactionType}
29
+ * @protected
30
+ */
31
+ get transactionType() {
32
+ return utils_1.default.getTransactionType(this.transaction.suiTransaction.type);
33
+ }
34
+ /** @inheritDoc */
35
+ validateTransaction(transaction) {
36
+ if (!transaction.suiTransaction) {
37
+ return;
38
+ }
39
+ this.validateTransactionFields();
40
+ }
41
+ /** @inheritDoc */
42
+ sign(key) {
43
+ this.transaction.setSuiTransaction(this.buildSuiTransaction());
44
+ super.sign(key);
45
+ }
46
+ /**
47
+ * Create a new transaction for requesting coin withdrawal, ready to be signed and executed.
48
+ *
49
+ * @param request - the request object
50
+ */
51
+ requestWithdrawStake(request) {
52
+ this.validateSuiObjectRef(request.stakedWal, 'stakedWal');
53
+ if (request.amount !== undefined) {
54
+ if (!utils_1.default.isValidAmount(request.amount)) {
55
+ throw new Error(`invalid amount: ${request.amount}`);
56
+ }
57
+ }
58
+ this._withdrawStake = request;
59
+ return this;
60
+ }
61
+ /** @inheritDoc */
62
+ fromImplementation(rawTransaction) {
63
+ const tx = new walrusWithdrawStakeTransaction_1.WalrusWithdrawStakeTransaction(this._coinConfig);
64
+ this.validateRawTransaction(rawTransaction);
65
+ tx.fromRawTransaction(rawTransaction);
66
+ this.initBuilder(tx);
67
+ return this.transaction;
68
+ }
69
+ /** @inheritDoc */
70
+ async buildImplementation() {
71
+ this.transaction.setSuiTransaction(this.buildSuiTransaction());
72
+ this.transaction.transactionType(this.transactionType);
73
+ if (this._signer) {
74
+ this.transaction.sign(this._signer);
75
+ }
76
+ this._signatures.forEach((signature) => {
77
+ this.transaction.addSignature(signature.publicKey, signature.signature);
78
+ });
79
+ this.transaction.loadInputsAndOutputs();
80
+ return this.transaction;
81
+ }
82
+ initBuilder(tx) {
83
+ this._transaction = tx;
84
+ if (tx.signature && tx.signature.length > 0) {
85
+ this._signatures = [tx.suiSignature];
86
+ }
87
+ const txData = tx.toJson();
88
+ this.type(tx.suiTransaction.type);
89
+ this.sender(txData.sender);
90
+ this.gasData(txData.gasData);
91
+ const parsed = utils_1.default.getWalrusWithdrawStakeRequests(tx.suiTransaction.tx);
92
+ this.requestWithdrawStake({
93
+ stakedWal: {
94
+ ...parsed.stakedWal,
95
+ objectId: (0, types_1.normalizeSuiObjectId)(parsed.stakedWal.objectId),
96
+ version: Number(parsed.stakedWal.version),
97
+ },
98
+ amount: parsed.amount === undefined ? undefined : Number(parsed.amount),
99
+ });
100
+ }
101
+ validateTransactionFields() {
102
+ (0, assert_1.default)(this._type, new sdk_core_1.BuildTransactionError('type is required before building'));
103
+ (0, assert_1.default)(this._sender, new sdk_core_1.BuildTransactionError('sender is required before building'));
104
+ (0, assert_1.default)(this._withdrawStake.stakedWal, new sdk_core_1.BuildTransactionError('stakedWal object is required before building'));
105
+ (0, assert_1.default)(this._gasData, new sdk_core_1.BuildTransactionError('gasData is required before building'));
106
+ this.validateGasData(this._gasData);
107
+ }
108
+ buildSuiTransaction() {
109
+ this.validateTransactionFields();
110
+ const ptb = new builder_1.TransactionBlock();
111
+ switch (this._type) {
112
+ case iface_1.SuiTransactionType.WalrusRequestWithdrawStake:
113
+ // For request_withdraw, we may need to split the staked WAL into two objects
114
+ if (this._withdrawStake.amount !== undefined) {
115
+ // This is a partial unstake. Split the StakedWAL
116
+ const splitStakedWal = ptb.moveCall({
117
+ target: `${this.walrusConfig.WALRUS_PKG_ID}::staked_wal::split`,
118
+ arguments: [
119
+ ptb.object(builder_1.Inputs.ObjectRef(this._withdrawStake.stakedWal)),
120
+ ptb.pure(Number(this._withdrawStake.amount)),
121
+ ],
122
+ });
123
+ // Request to withdraw the split StakedWAL
124
+ ptb.moveCall({
125
+ target: `${this.walrusConfig.WALRUS_PKG_ID}::${this.walrusConfig.WALRUS_STAKING_MODULE_NAME}::request_withdraw_stake`,
126
+ arguments: [ptb.object(builder_1.Inputs.SharedObjectRef(this.walrusConfig.WALRUS_STAKING_OBJECT)), splitStakedWal],
127
+ });
128
+ ptb.transferObjects([splitStakedWal], ptb.object(this._sender));
129
+ }
130
+ else {
131
+ // This is a full unstake. No need to split, just withdraw the provided StakedWAL.
132
+ // Also, since there is no newly-created StakedWAL, no need to transferObjects.
133
+ ptb.moveCall({
134
+ target: `${this.walrusConfig.WALRUS_PKG_ID}::${this.walrusConfig.WALRUS_STAKING_MODULE_NAME}::request_withdraw_stake`,
135
+ arguments: [
136
+ ptb.object(builder_1.Inputs.SharedObjectRef(this.walrusConfig.WALRUS_STAKING_OBJECT)),
137
+ ptb.object(builder_1.Inputs.ObjectRef(this._withdrawStake.stakedWal)),
138
+ ],
139
+ });
140
+ }
141
+ break;
142
+ case iface_1.SuiTransactionType.WalrusWithdrawStake:
143
+ // For the actual withdraw, we are using the already split StakedWAL from above
144
+ // No need to split, just do the withdraw_stake move call
145
+ const unstakedWal = ptb.moveCall({
146
+ target: `${this.walrusConfig.WALRUS_PKG_ID}::${this.walrusConfig.WALRUS_STAKING_MODULE_NAME}::withdraw_stake`,
147
+ arguments: [
148
+ ptb.object(builder_1.Inputs.SharedObjectRef(this.walrusConfig.WALRUS_STAKING_OBJECT)),
149
+ ptb.object(builder_1.Inputs.ObjectRef(this._withdrawStake.stakedWal)),
150
+ ],
151
+ });
152
+ ptb.transferObjects([unstakedWal], ptb.object(this._sender));
153
+ break;
154
+ default:
155
+ throw new sdk_core_1.BuildTransactionError(`Invalid transaction type: ${this._type}`);
156
+ }
157
+ const txData = ptb.blockData;
158
+ return {
159
+ type: this._type,
160
+ sender: this._sender,
161
+ tx: {
162
+ inputs: [...txData.inputs],
163
+ transactions: [...txData.transactions],
164
+ },
165
+ gasData: {
166
+ ...this._gasData,
167
+ payment: this._gasData.payment.slice(0, constants_1.MAX_GAS_OBJECTS - 1),
168
+ },
169
+ };
170
+ }
171
+ }
172
+ exports.WalrusWithdrawStakeBuilder = WalrusWithdrawStakeBuilder;
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FscnVzV2l0aGRyYXdTdGFrZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dhbHJ1c1dpdGhkcmF3U3Rha2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQUtpQjtBQUNqQixpREFBMEU7QUFDMUUsNkRBQTBEO0FBQzFELHFGQUFrRjtBQUNsRixvREFBNEI7QUFFNUIsMkRBQXFGO0FBQ3JGLG1EQUF1RjtBQUd2Riw2Q0FBeUQ7QUFDekQsaURBSTZCO0FBQzdCLG9EQUE0QjtBQUM1QiwyQ0FBOEM7QUFFOUMsTUFBYSwwQkFBMkIsU0FBUSx1Q0FBOEQ7SUFLNUcsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLCtEQUE4QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXBFLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLHFCQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQ0FBa0IsQ0FBQyxDQUFDLENBQUMsb0NBQXFCLENBQUM7SUFDcEgsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBYyxlQUFlO1FBQzNCLE9BQU8sZUFBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBZ0M7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLEdBQVk7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLGlC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LEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7YUFDdkM7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsR0FBRyxJQUFJLENBQUMsUUFBUTtnQkFDaEIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsMkJBQWUsR0FBRyxDQUFDLENBQUM7YUFDN0Q7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBOUtELGdFQThLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN1aVRyYW5zYWN0aW9uLFxuICBSZXF1ZXN0V2FscnVzV2l0aGRyYXdTdGFrZSxcbiAgV2FscnVzV2l0aGRyYXdTdGFrZVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBTdWlUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFdhbHJ1c1dpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbiB9IGZyb20gJy4vd2FscnVzV2l0aGRyYXdTdGFrZVRyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuaW1wb3J0IHsgV0FMUlVTX1RFU1RORVRfQ09ORklHLCBXQUxSVVNfUFJPRF9DT05GSUcgfSBmcm9tICcuL3Jlc291cmNlcy93YWxydXNDb25maWcnO1xuaW1wb3J0IHsgQmFzZUtleSwgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBub3JtYWxpemVTdWlPYmplY3RJZCB9IGZyb20gJy4vbXlzdGVubGFiL3R5cGVzJztcbmltcG9ydCB7XG4gIElucHV0cyxcbiAgTW92ZUNhbGxUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25CbG9jayBhcyBQcm9ncmFtbWluZ1RyYW5zYWN0aW9uQmxvY2tCdWlsZGVyLFxufSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IE1BWF9HQVNfT0JKRUNUUyB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFdhbHJ1c1dpdGhkcmF3U3Rha2VCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPFdhbHJ1c1dpdGhkcmF3U3Rha2VQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICBwcm90ZWN0ZWQgX3dpdGhkcmF3U3Rha2U6IFJlcXVlc3RXYWxydXNXaXRoZHJhd1N0YWtlO1xuXG4gIHByaXZhdGUgd2FscnVzQ29uZmlnOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFdhbHJ1c1dpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG5cbiAgICAvLyBUT0RPIGltcHJvdmUgbWFpbm5ldCB2cy4gdGVzdG5ldCBjb25maWd1cmF0aW9uXG4gICAgdGhpcy53YWxydXNDb25maWcgPSBfY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyBXQUxSVVNfUFJPRF9DT05GSUcgOiBXQUxSVVNfVEVTVE5FVF9DT05GSUc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHN0YWtpbmcgdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcmV0dXJuIHtUcmFuc2FjdGlvblR5cGV9XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIHV0aWxzLmdldFRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uLnN1aVRyYW5zYWN0aW9uLnR5cGUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zZmVyVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uLnN1aVRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbkZpZWxkcygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHNpZ24oa2V5OiBCYXNlS2V5KSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRTdWlUcmFuc2FjdGlvbih0aGlzLmJ1aWxkU3VpVHJhbnNhY3Rpb24oKSk7XG4gICAgc3VwZXIuc2lnbihrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB0cmFuc2FjdGlvbiBmb3IgcmVxdWVzdGluZyBjb2luIHdpdGhkcmF3YWwsIHJlYWR5IHRvIGJlIHNpZ25lZCBhbmQgZXhlY3V0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IC0gdGhlIHJlcXVlc3Qgb2JqZWN0XG4gICAqL1xuICByZXF1ZXN0V2l0aGRyYXdTdGFrZShyZXF1ZXN0OiBSZXF1ZXN0V2FscnVzV2l0aGRyYXdTdGFrZSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVTdWlPYmplY3RSZWYocmVxdWVzdC5zdGFrZWRXYWwsICdzdGFrZWRXYWwnKTtcbiAgICBpZiAocmVxdWVzdC5hbW91bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCF1dGlscy5pc1ZhbGlkQW1vdW50KHJlcXVlc3QuYW1vdW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgYW1vdW50OiAke3JlcXVlc3QuYW1vdW50fWApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl93aXRoZHJhd1N0YWtlID0gcmVxdWVzdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbjxXYWxydXNXaXRoZHJhd1N0YWtlUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eCA9IG5ldyBXYWxydXNXaXRoZHJhd1N0YWtlVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb248V2FscnVzV2l0aGRyYXdTdGFrZVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0U3VpVHJhbnNhY3Rpb24odGhpcy5idWlsZFN1aVRyYW5zYWN0aW9uKCkpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcblxuICAgIGlmICh0aGlzLl9zaWduZXIpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbih0aGlzLl9zaWduZXIpO1xuICAgIH1cblxuICAgIHRoaXMuX3NpZ25hdHVyZXMuZm9yRWFjaCgoc2lnbmF0dXJlKSA9PiB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShzaWduYXR1cmUucHVibGljS2V5LCBzaWduYXR1cmUuc2lnbmF0dXJlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbjxXYWxydXNXaXRoZHJhd1N0YWtlUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcblxuICAgIGlmICh0eC5zaWduYXR1cmUgJiYgdHguc2lnbmF0dXJlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbdHguc3VpU2lnbmF0dXJlXTtcbiAgICB9XG5cbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLnR5cGUodHguc3VpVHJhbnNhY3Rpb24udHlwZSk7XG4gICAgdGhpcy5zZW5kZXIodHhEYXRhLnNlbmRlcik7XG4gICAgdGhpcy5nYXNEYXRhKHR4RGF0YS5nYXNEYXRhKTtcbiAgICBjb25zdCBwYXJzZWQgPSB1dGlscy5nZXRXYWxydXNXaXRoZHJhd1N0YWtlUmVxdWVzdHModHguc3VpVHJhbnNhY3Rpb24udHgpO1xuICAgIHRoaXMucmVxdWVzdFdpdGhkcmF3U3Rha2Uoe1xuICAgICAgc3Rha2VkV2FsOiB7XG4gICAgICAgIC4uLnBhcnNlZC5zdGFrZWRXYWwsXG4gICAgICAgIG9iamVjdElkOiBub3JtYWxpemVTdWlPYmplY3RJZChwYXJzZWQuc3Rha2VkV2FsLm9iamVjdElkKSxcbiAgICAgICAgdmVyc2lvbjogTnVtYmVyKHBhcnNlZC5zdGFrZWRXYWwudmVyc2lvbiksXG4gICAgICB9LFxuICAgICAgYW1vdW50OiBwYXJzZWQuYW1vdW50ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBOdW1iZXIocGFyc2VkLmFtb3VudCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgYXNzZXJ0KHRoaXMuX3R5cGUsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3R5cGUgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRlciBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX3dpdGhkcmF3U3Rha2Uuc3Rha2VkV2FsLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzdGFrZWRXYWwgb2JqZWN0IGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBhc3NlcnQodGhpcy5fZ2FzRGF0YSwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZ2FzRGF0YSBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgdGhpcy52YWxpZGF0ZUdhc0RhdGEodGhpcy5fZ2FzRGF0YSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRTdWlUcmFuc2FjdGlvbigpOiBTdWlUcmFuc2FjdGlvbjxXYWxydXNXaXRoZHJhd1N0YWtlUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgICBjb25zdCBwdGIgPSBuZXcgUHJvZ3JhbW1pbmdUcmFuc2FjdGlvbkJsb2NrQnVpbGRlcigpO1xuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuV2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2U6XG4gICAgICAgIC8vIEZvciByZXF1ZXN0X3dpdGhkcmF3LCB3ZSBtYXkgbmVlZCB0byBzcGxpdCB0aGUgc3Rha2VkIFdBTCBpbnRvIHR3byBvYmplY3RzXG4gICAgICAgIGlmICh0aGlzLl93aXRoZHJhd1N0YWtlLmFtb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBhIHBhcnRpYWwgdW5zdGFrZS4gU3BsaXQgdGhlIFN0YWtlZFdBTFxuICAgICAgICAgIGNvbnN0IHNwbGl0U3Rha2VkV2FsID0gcHRiLm1vdmVDYWxsKHtcbiAgICAgICAgICAgIHRhcmdldDogYCR7dGhpcy53YWxydXNDb25maWcuV0FMUlVTX1BLR19JRH06OnN0YWtlZF93YWw6OnNwbGl0YCxcbiAgICAgICAgICAgIGFyZ3VtZW50czogW1xuICAgICAgICAgICAgICBwdGIub2JqZWN0KElucHV0cy5PYmplY3RSZWYodGhpcy5fd2l0aGRyYXdTdGFrZS5zdGFrZWRXYWwpKSxcbiAgICAgICAgICAgICAgcHRiLnB1cmUoTnVtYmVyKHRoaXMuX3dpdGhkcmF3U3Rha2UuYW1vdW50KSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBNb3ZlQ2FsbFRyYW5zYWN0aW9uKTtcblxuICAgICAgICAgIC8vIFJlcXVlc3QgdG8gd2l0aGRyYXcgdGhlIHNwbGl0IFN0YWtlZFdBTFxuICAgICAgICAgIHB0Yi5tb3ZlQ2FsbCh7XG4gICAgICAgICAgICB0YXJnZXQ6IGAke3RoaXMud2FscnVzQ29uZmlnLldBTFJVU19QS0dfSUR9Ojoke3RoaXMud2FscnVzQ29uZmlnLldBTFJVU19TVEFLSU5HX01PRFVMRV9OQU1FfTo6cmVxdWVzdF93aXRoZHJhd19zdGFrZWAsXG4gICAgICAgICAgICBhcmd1bWVudHM6IFtwdGIub2JqZWN0KElucHV0cy5TaGFyZWRPYmplY3RSZWYodGhpcy53YWxydXNDb25maWcuV0FMUlVTX1NUQUtJTkdfT0JKRUNUKSksIHNwbGl0U3Rha2VkV2FsXSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHB0Yi50cmFuc2Zlck9iamVjdHMoW3NwbGl0U3Rha2VkV2FsXSwgcHRiLm9iamVjdCh0aGlzLl9zZW5kZXIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGEgZnVsbCB1bnN0YWtlLiBObyBuZWVkIHRvIHNwbGl0LCBqdXN0IHdpdGhkcmF3IHRoZSBwcm92aWRlZCBTdGFrZWRXQUwuXG4gICAgICAgICAgLy8gQWxzbywgc2luY2UgdGhlcmUgaXMgbm8gbmV3bHktY3JlYXRlZCBTdGFrZWRXQUwsIG5vIG5lZWQgdG8gdHJhbnNmZXJPYmplY3RzLlxuICAgICAgICAgIHB0Yi5tb3ZlQ2FsbCh7XG4gICAgICAgICAgICB0YXJnZXQ6IGAke3RoaXMud2FscnVzQ29uZmlnLldBTFJVU19QS0dfSUR9Ojoke3RoaXMud2FscnVzQ29uZmlnLldBTFJVU19TVEFLSU5HX01PRFVMRV9OQU1FfTo6cmVxdWVzdF93aXRoZHJhd19zdGFrZWAsXG4gICAgICAgICAgICBhcmd1bWVudHM6IFtcbiAgICAgICAgICAgICAgcHRiLm9iamVjdChJbnB1dHMuU2hhcmVkT2JqZWN0UmVmKHRoaXMud2FscnVzQ29uZmlnLldBTFJVU19TVEFLSU5HX09CSkVDVCkpLFxuICAgICAgICAgICAgICBwdGIub2JqZWN0KElucHV0cy5PYmplY3RSZWYodGhpcy5fd2l0aGRyYXdTdGFrZS5zdGFrZWRXYWwpKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5XYWxydXNXaXRoZHJhd1N0YWtlOlxuICAgICAgICAvLyBGb3IgdGhlIGFjdHVhbCB3aXRoZHJhdywgd2UgYXJlIHVzaW5nIHRoZSBhbHJlYWR5IHNwbGl0IFN0YWtlZFdBTCBmcm9tIGFib3ZlXG4gICAgICAgIC8vIE5vIG5lZWQgdG8gc3BsaXQsIGp1c3QgZG8gdGhlIHdpdGhkcmF3X3N0YWtlIG1vdmUgY2FsbFxuICAgICAgICBjb25zdCB1bnN0YWtlZFdhbCA9IHB0Yi5tb3ZlQ2FsbCh7XG4gICAgICAgICAgdGFyZ2V0OiBgJHt0aGlzLndhbHJ1c0NvbmZpZy5XQUxSVVNfUEtHX0lEfTo6JHt0aGlzLndhbHJ1c0NvbmZpZy5XQUxSVVNfU1RBS0lOR19NT0RVTEVfTkFNRX06OndpdGhkcmF3X3N0YWtlYCxcbiAgICAgICAgICBhcmd1bWVudHM6IFtcbiAgICAgICAgICAgIHB0Yi5vYmplY3QoSW5wdXRzLlNoYXJlZE9iamVjdFJlZih0aGlzLndhbHJ1c0NvbmZpZy5XQUxSVVNfU1RBS0lOR19PQkpFQ1QpKSxcbiAgICAgICAgICAgIHB0Yi5vYmplY3QoSW5wdXRzLk9iamVjdFJlZih0aGlzLl93aXRoZHJhd1N0YWtlLnN0YWtlZFdhbCkpLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgICBwdGIudHJhbnNmZXJPYmplY3RzKFt1bnN0YWtlZFdhbF0sIHB0Yi5vYmplY3QodGhpcy5fc2VuZGVyKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlOiAke3RoaXMuX3R5cGV9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgdHhEYXRhID0gcHRiLmJsb2NrRGF0YTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdGhpcy5fdHlwZSxcbiAgICAgIHNlbmRlcjogdGhpcy5fc2VuZGVyLFxuICAgICAgdHg6IHtcbiAgICAgICAgaW5wdXRzOiBbLi4udHhEYXRhLmlucHV0c10sXG4gICAgICAgIHRyYW5zYWN0aW9uczogWy4uLnR4RGF0YS50cmFuc2FjdGlvbnNdLFxuICAgICAgfSxcbiAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgLi4udGhpcy5fZ2FzRGF0YSxcbiAgICAgICAgcGF5bWVudDogdGhpcy5fZ2FzRGF0YS5wYXltZW50LnNsaWNlKDAsIE1BWF9HQVNfT0JKRUNUUyAtIDEpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { SuiTransaction, TransactionExplanation, TxData, WalrusWithdrawStakeProgrammableTransaction } from './iface';
2
+ import { Transaction } from './transaction';
3
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
4
+ import { BaseKey, PublicKey as BasePublicKey, Signature } from '@bitgo-beta/sdk-core';
5
+ import { Buffer } from 'buffer';
6
+ export declare class WalrusWithdrawStakeTransaction extends Transaction<WalrusWithdrawStakeProgrammableTransaction> {
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ get suiTransaction(): SuiTransaction<WalrusWithdrawStakeProgrammableTransaction>;
9
+ addSignature(publicKey: BasePublicKey, signature: Buffer): void;
10
+ get suiSignature(): Signature;
11
+ canSign(key: BaseKey): boolean;
12
+ toBroadcastFormat(): string;
13
+ toJson(): TxData;
14
+ explainTransaction(): TransactionExplanation;
15
+ explainRequestWithdrawStakedWalTransaction(result: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
16
+ explainWithdrawStakedWalTransaction(result: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
17
+ fromRawTransaction(rawTransaction: string): void;
18
+ getTxData(): TxData;
19
+ loadInputsAndOutputs(): void;
20
+ }
21
+ //# sourceMappingURL=walrusWithdrawStakeTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walrusWithdrawStakeTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/walrusWithdrawStakeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,EAAE,0CAA0C,EAAE,MAAM,SAAS,CAAC;AACrH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EACL,OAAO,EAGP,SAAS,IAAI,aAAa,EAC1B,SAAS,EAGV,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,qBAAa,8BAA+B,SAAQ,WAAW,CAAC,0CAA0C,CAAC;gBAC7F,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAAC,0CAA0C,CAAC,CAE/E;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,iBAAiB,IAAI,MAAM;IAO3B,MAAM,IAAI,MAAM;IAgBhB,kBAAkB,IAAI,sBAAsB;IAsC5C,0CAA0C,CACxC,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;IAezB,mCAAmC,CACjC,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;IAezB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAchD,SAAS,IAAI,MAAM;IA0CnB,oBAAoB,IAAI,IAAI;CAqB7B"}
@@ -0,0 +1,186 @@
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.WalrusWithdrawStakeTransaction = void 0;
7
+ const transaction_1 = require("./transaction");
8
+ const utils_1 = __importDefault(require("./utils"));
9
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
10
+ const types_1 = require("./mystenlab/types");
11
+ const builder_1 = require("./mystenlab/builder");
12
+ const constants_1 = require("./constants");
13
+ const bcs_1 = require("@mysten/bcs");
14
+ const buffer_1 = require("buffer");
15
+ class WalrusWithdrawStakeTransaction extends transaction_1.Transaction {
16
+ constructor(_coinConfig) {
17
+ super(_coinConfig);
18
+ }
19
+ get suiTransaction() {
20
+ return this._suiTransaction;
21
+ }
22
+ addSignature(publicKey, signature) {
23
+ this._signatures.push(signature.toString('hex'));
24
+ this._signature = { publicKey, signature };
25
+ this.serialize();
26
+ }
27
+ get suiSignature() {
28
+ return this._signature;
29
+ }
30
+ canSign(key) {
31
+ return true;
32
+ }
33
+ toBroadcastFormat() {
34
+ if (!this._suiTransaction) {
35
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
36
+ }
37
+ return this.serialize();
38
+ }
39
+ toJson() {
40
+ if (!this._suiTransaction) {
41
+ throw new sdk_core_1.ParseTransactionError('Empty transaction');
42
+ }
43
+ const tx = this._suiTransaction;
44
+ return {
45
+ id: this._id,
46
+ sender: tx.sender,
47
+ kind: { ProgrammableTransaction: tx.tx },
48
+ gasData: tx.gasData,
49
+ expiration: { None: null },
50
+ inputObjects: [utils_1.default.getWalrusWithdrawStakeRequests(tx.tx).stakedWal],
51
+ };
52
+ }
53
+ explainTransaction() {
54
+ const result = this.toJson();
55
+ const displayOrder = [
56
+ 'id',
57
+ 'outputs',
58
+ 'outputAmount',
59
+ 'changeOutputs',
60
+ 'changeAmount',
61
+ 'fee',
62
+ 'type',
63
+ 'module',
64
+ 'function',
65
+ 'validatorAddress',
66
+ ];
67
+ const outputs = [];
68
+ const explanationResult = {
69
+ displayOrder,
70
+ id: this.id,
71
+ outputs,
72
+ outputAmount: '0',
73
+ changeOutputs: [],
74
+ changeAmount: '0',
75
+ fee: { fee: this.suiTransaction.gasData.budget.toString() },
76
+ type: this.type,
77
+ };
78
+ switch (this.type) {
79
+ case sdk_core_1.TransactionType.StakingDeactivate:
80
+ return this.explainRequestWithdrawStakedWalTransaction(result, explanationResult);
81
+ case sdk_core_1.TransactionType.StakingWithdraw:
82
+ return this.explainWithdrawStakedWalTransaction(result, explanationResult);
83
+ default:
84
+ throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
85
+ }
86
+ }
87
+ explainRequestWithdrawStakedWalTransaction(result, explanationResult) {
88
+ const outputs = [
89
+ {
90
+ address: this.suiTransaction.sender,
91
+ amount: constants_1.AMOUNT_UNKNOWN_TEXT,
92
+ },
93
+ ];
94
+ const outputAmount = constants_1.AMOUNT_UNKNOWN_TEXT;
95
+ return {
96
+ ...explanationResult,
97
+ outputAmount,
98
+ outputs,
99
+ };
100
+ }
101
+ explainWithdrawStakedWalTransaction(result, explanationResult) {
102
+ const outputs = [
103
+ {
104
+ address: this.suiTransaction.sender,
105
+ amount: constants_1.AMOUNT_UNKNOWN_TEXT,
106
+ },
107
+ ];
108
+ const outputAmount = constants_1.AMOUNT_UNKNOWN_TEXT;
109
+ return {
110
+ ...explanationResult,
111
+ outputAmount,
112
+ outputs,
113
+ };
114
+ }
115
+ fromRawTransaction(rawTransaction) {
116
+ try {
117
+ utils_1.default.isValidRawTransaction(rawTransaction);
118
+ this._suiTransaction = transaction_1.Transaction.deserializeSuiTransaction(rawTransaction);
119
+ this._type = utils_1.default.getTransactionType(this._suiTransaction.type);
120
+ this._id = this._suiTransaction.id;
121
+ this.loadInputsAndOutputs();
122
+ }
123
+ catch (e) {
124
+ throw e;
125
+ }
126
+ }
127
+ getTxData() {
128
+ if (!this._suiTransaction) {
129
+ throw new sdk_core_1.InvalidTransactionError('empty transaction');
130
+ }
131
+ const inputs = this._suiTransaction.tx.inputs.map((input, index) => {
132
+ if (input.hasOwnProperty('Object')) {
133
+ return input;
134
+ }
135
+ if (input.hasOwnProperty('Pure')) {
136
+ if (input.Pure.length === constants_1.SUI_ADDRESS_LENGTH) {
137
+ const address = (0, types_1.normalizeSuiAddress)(builder_1.builder.de(bcs_1.BCS.ADDRESS, buffer_1.Buffer.from(input.Pure).toString('base64'), 'base64'));
138
+ return builder_1.Inputs.Pure(address, bcs_1.BCS.ADDRESS);
139
+ }
140
+ else {
141
+ const amount = builder_1.builder.de(bcs_1.BCS.U64, buffer_1.Buffer.from(input.Pure).toString('base64'), 'base64');
142
+ return builder_1.Inputs.Pure(amount, bcs_1.BCS.U64);
143
+ }
144
+ }
145
+ if (input.kind === 'Input' && (input.value.hasOwnProperty('Object') || input.value.hasOwnProperty('Pure'))) {
146
+ return input.value;
147
+ }
148
+ // what's left is the pure number or address string
149
+ return builder_1.Inputs.Pure(input.value, input.type === 'pure' ? bcs_1.BCS.U64 : bcs_1.BCS.ADDRESS);
150
+ });
151
+ const programmableTx = {
152
+ inputs: inputs,
153
+ transactions: this._suiTransaction.tx.transactions,
154
+ };
155
+ return {
156
+ sender: this._suiTransaction.sender,
157
+ expiration: { None: null },
158
+ gasData: this._suiTransaction.gasData,
159
+ kind: {
160
+ ProgrammableTransaction: programmableTx,
161
+ },
162
+ };
163
+ }
164
+ loadInputsAndOutputs() {
165
+ if (!this._suiTransaction) {
166
+ return;
167
+ }
168
+ const withdrawRequest = utils_1.default.getWalrusWithdrawStakeRequests(this._suiTransaction.tx);
169
+ this._inputs = [
170
+ {
171
+ address: withdrawRequest.stakedWal.objectId,
172
+ value: withdrawRequest.amount === undefined ? constants_1.AMOUNT_UNKNOWN_TEXT : withdrawRequest.amount.toString(),
173
+ coin: this._coinConfig.name,
174
+ },
175
+ ];
176
+ this._outputs = [
177
+ {
178
+ address: this.suiTransaction.sender,
179
+ value: withdrawRequest.amount === undefined ? constants_1.AMOUNT_UNKNOWN_TEXT : withdrawRequest.amount.toString(),
180
+ coin: this._coinConfig.name,
181
+ },
182
+ ];
183
+ }
184
+ }
185
+ exports.WalrusWithdrawStakeTransaction = WalrusWithdrawStakeTransaction;
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FscnVzV2l0aGRyYXdTdGFrZVRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93YWxydXNXaXRoZHJhd1N0YWtlVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsK0NBQTRDO0FBRzVDLG9EQUE0QjtBQUM1QixtREFROEI7QUFDOUIsNkNBQWlFO0FBQ2pFLGlEQUE2RTtBQUM3RSwyQ0FBc0U7QUFDdEUscUNBQWtDO0FBQ2xDLG1DQUFnQztBQUVoQyxNQUFhLDhCQUErQixTQUFRLHlCQUF1RDtJQUN6RyxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXdCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFB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QUNKLHVCQUF1QixFQUFFLGNBQWM7YUFDeEM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsZUFBSyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiO2dCQUNFLE9BQU8sRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVE7Z0JBQzNDLEtBQUssRUFBRSxlQUFlLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsK0JBQW1CLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUNyRyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2FBQzVCO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZDtnQkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO2dCQUNuQyxLQUFLLEVBQUUsZUFBZSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLCtCQUFtQixDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDckcsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTthQUM1QjtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFyTUQsd0VBcU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VpVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFR4RGF0YSwgV2FscnVzV2l0aGRyYXdTdGFrZVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1xuICBCYXNlS2V5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDYWxsQXJnLCBub3JtYWxpemVTdWlBZGRyZXNzIH0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRlciwgSW5wdXRzLCBUcmFuc2FjdGlvbkJsb2NrSW5wdXQgfSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyJztcbmltcG9ydCB7IEFNT1VOVF9VTktOT1dOX1RFWFQsIFNVSV9BRERSRVNTX0xFTkdUSCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJDUyB9IGZyb20gJ0BteXN0ZW4vYmNzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5cbmV4cG9ydCBjbGFzcyBXYWxydXNXaXRoZHJhd1N0YWtlVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbjxXYWxydXNXaXRoZHJhd1N0YWtlUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHN1aVRyYW5zYWN0aW9uKCk6IFN1aVRyYW5zYWN0aW9uPFdhbHJ1c1dpdGhkcmF3U3Rha2VQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZS50b1N0cmluZygnaGV4JykpO1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgICB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IHN1aVNpZ25hdHVyZSgpOiBTaWduYXR1cmUge1xuICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmU7XG4gIH1cblxuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eCA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICBzZW5kZXI6IHR4LnNlbmRlcixcbiAgICAgIGtpbmQ6IHsgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHR4LnR4IH0sXG4gICAgICBnYXNEYXRhOiB0eC5nYXNEYXRhLFxuICAgICAgZXhwaXJhdGlvbjogeyBOb25lOiBudWxsIH0sXG4gICAgICBpbnB1dE9iamVjdHM6IFt1dGlscy5nZXRXYWxydXNXaXRoZHJhd1N0YWtlUmVxdWVzdHModHgudHgpLnN0YWtlZFdhbF0sXG4gICAgfTtcbiAgfVxuXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFtcbiAgICAgICdpZCcsXG4gICAgICAnb3V0cHV0cycsXG4gICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgJ2ZlZScsXG4gICAgICAndHlwZScsXG4gICAgICAnbW9kdWxlJyxcbiAgICAgICdmdW5jdGlvbicsXG4gICAgICAndmFsaWRhdG9yQWRkcmVzcycsXG4gICAgXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6IHRoaXMuc3VpVHJhbnNhY3Rpb24uZ2FzRGF0YS5idWRnZXQudG9TdHJpbmcoKSB9LFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5SZXF1ZXN0V2l0aGRyYXdTdGFrZWRXYWxUcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpbldpdGhkcmF3U3Rha2VkV2FsVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgZXhwbGFpblJlcXVlc3RXaXRoZHJhd1N0YWtlZFdhbFRyYW5zYWN0aW9uKFxuICAgIHJlc3VsdDogVHhEYXRhLFxuICAgIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uXG4gICk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRoaXMuc3VpVHJhbnNhY3Rpb24uc2VuZGVyLFxuICAgICAgICBhbW91bnQ6IEFNT1VOVF9VTktOT1dOX1RFWFQsXG4gICAgICB9LFxuICAgIF07XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gQU1PVU5UX1VOS05PV05fVEVYVDtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBvdXRwdXRzLFxuICAgIH07XG4gIH1cblxuICBleHBsYWluV2l0aGRyYXdTdGFrZWRXYWxUcmFuc2FjdGlvbihcbiAgICByZXN1bHQ6IFR4RGF0YSxcbiAgICBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB0aGlzLnN1aVRyYW5zYWN0aW9uLnNlbmRlcixcbiAgICAgICAgYW1vdW50OiBBTU9VTlRfVU5LTk9XTl9URVhULFxuICAgICAgfSxcbiAgICBdO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IEFNT1VOVF9VTktOT1dOX1RFWFQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuX3N1aVRyYW5zYWN0aW9uID0gVHJhbnNhY3Rpb24uZGVzZXJpYWxpemVTdWlUcmFuc2FjdGlvbihcbiAgICAgICAgcmF3VHJhbnNhY3Rpb25cbiAgICAgICkgYXMgU3VpVHJhbnNhY3Rpb248V2FscnVzV2l0aGRyYXdTdGFrZVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPjtcbiAgICAgIHRoaXMuX3R5cGUgPSB1dGlscy5nZXRUcmFuc2FjdGlvblR5cGUodGhpcy5fc3VpVHJhbnNhY3Rpb24udHlwZSk7XG4gICAgICB0aGlzLl9pZCA9IHRoaXMuX3N1aVRyYW5zYWN0aW9uLmlkO1xuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHhEYXRhKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdlbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dHM6IENhbGxBcmdbXSB8IFRyYW5zYWN0aW9uQmxvY2tJbnB1dFtdID0gdGhpcy5fc3VpVHJhbnNhY3Rpb24udHguaW5wdXRzLm1hcCgoaW5wdXQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5wdXQuaGFzT3duUHJvcGVydHkoJ09iamVjdCcpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dC5oYXNPd25Qcm9wZXJ0eSgnUHVyZScpKSB7XG4gICAgICAgIGlmIChpbnB1dC5QdXJlLmxlbmd0aCA9PT0gU1VJX0FERFJFU1NfTEVOR1RIKSB7XG4gICAgICAgICAgY29uc3QgYWRkcmVzcyA9IG5vcm1hbGl6ZVN1aUFkZHJlc3MoXG4gICAgICAgICAgICBidWlsZGVyLmRlKEJDUy5BRERSRVNTLCBCdWZmZXIuZnJvbShpbnB1dC5QdXJlKS50b1N0cmluZygnYmFzZTY0JyksICdiYXNlNjQnKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIElucHV0cy5QdXJlKGFkZHJlc3MsIEJDUy5BRERSRVNTKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBhbW91bnQgPSBidWlsZGVyLmRlKEJDUy5VNjQsIEJ1ZmZlci5mcm9tKGlucHV0LlB1cmUpLnRvU3RyaW5nKCdiYXNlNjQnKSwgJ2Jhc2U2NCcpO1xuICAgICAgICAgIHJldHVybiBJbnB1dHMuUHVyZShhbW91bnQsIEJDUy5VNjQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQua2luZCA9PT0gJ0lucHV0JyAmJiAoaW5wdXQudmFsdWUuaGFzT3duUHJvcGVydHkoJ09iamVjdCcpIHx8IGlucHV0LnZhbHVlLmhhc093blByb3BlcnR5KCdQdXJlJykpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gd2hhdCdzIGxlZnQgaXMgdGhlIHB1cmUgbnVtYmVyIG9yIGFkZHJlc3Mgc3RyaW5nXG4gICAgICByZXR1cm4gSW5wdXRzLlB1cmUoaW5wdXQudmFsdWUsIGlucHV0LnR5cGUgPT09ICdwdXJlJyA/IEJDUy5VNjQgOiBCQ1MuQUREUkVTUyk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwcm9ncmFtbWFibGVUeCA9IHtcbiAgICAgIGlucHV0czogaW5wdXRzLFxuICAgICAgdHJhbnNhY3Rpb25zOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi50eC50cmFuc2FjdGlvbnMsXG4gICAgfSBhcyBXYWxydXNXaXRoZHJhd1N0YWtlUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb247XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5zZW5kZXIsXG4gICAgICBleHBpcmF0aW9uOiB7IE5vbmU6IG51bGwgfSxcbiAgICAgIGdhc0RhdGE6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLmdhc0RhdGEsXG4gICAgICBraW5kOiB7XG4gICAgICAgIFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uOiBwcm9ncmFtbWFibGVUeCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB3aXRoZHJhd1JlcXVlc3QgPSB1dGlscy5nZXRXYWxydXNXaXRoZHJhd1N0YWtlUmVxdWVzdHModGhpcy5fc3VpVHJhbnNhY3Rpb24udHgpO1xuICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogd2l0aGRyYXdSZXF1ZXN0LnN0YWtlZFdhbC5vYmplY3RJZCxcbiAgICAgICAgdmFsdWU6IHdpdGhkcmF3UmVxdWVzdC5hbW91bnQgPT09IHVuZGVmaW5lZCA/IEFNT1VOVF9VTktOT1dOX1RFWFQgOiB3aXRoZHJhd1JlcXVlc3QuYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB0aGlzLnN1aVRyYW5zYWN0aW9uLnNlbmRlcixcbiAgICAgICAgdmFsdWU6IHdpdGhkcmF3UmVxdWVzdC5hbW91bnQgPT09IHVuZGVmaW5lZCA/IEFNT1VOVF9VTktOT1dOX1RFWFQgOiB3aXRoZHJhd1JlcXVlc3QuYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAGzC,CAAC"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAMzC,CAAC"}
@@ -3,9 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.register = void 0;
4
4
  const sui_1 = require("./sui");
5
5
  const tsui_1 = require("./tsui");
6
+ const suiToken_1 = require("./suiToken");
6
7
  const register = (sdk) => {
7
8
  sdk.register('sui', sui_1.Sui.createInstance);
8
9
  sdk.register('tsui', tsui_1.Tsui.createInstance);
10
+ suiToken_1.SuiToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
11
+ sdk.register(name, coinConstructor);
12
+ });
9
13
  };
10
14
  exports.register = register;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRCO0FBQzVCLGlDQUE4QjtBQUV2QixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWMsRUFBUSxFQUFFO0lBQy9DLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBSFcsUUFBQSxRQUFRLFlBR25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgU3VpIH0gZnJvbSAnLi9zdWknO1xuaW1wb3J0IHsgVHN1aSB9IGZyb20gJy4vdHN1aSc7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlciA9IChzZGs6IEJpdEdvQmFzZSk6IHZvaWQgPT4ge1xuICBzZGsucmVnaXN0ZXIoJ3N1aScsIFN1aS5jcmVhdGVJbnN0YW5jZSk7XG4gIHNkay5yZWdpc3RlcigndHN1aScsIFRzdWkuY3JlYXRlSW5zdGFuY2UpO1xufTtcbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRCO0FBQzVCLGlDQUE4QjtBQUM5Qix5Q0FBc0M7QUFFL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFjLEVBQVEsRUFBRTtJQUMvQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLG1CQUFRLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO1FBQ3ZFLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBTlcsUUFBQSxRQUFRLFlBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgU3VpIH0gZnJvbSAnLi9zdWknO1xuaW1wb3J0IHsgVHN1aSB9IGZyb20gJy4vdHN1aSc7XG5pbXBvcnQgeyBTdWlUb2tlbiB9IGZyb20gJy4vc3VpVG9rZW4nO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCdzdWknLCBTdWkuY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3RzdWknLCBUc3VpLmNyZWF0ZUluc3RhbmNlKTtcbiAgU3VpVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xufTtcbiJdfQ==
package/dist/src/sui.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- /// <reference types="node" />
2
- import { BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, ParsedTransaction, ParseTransactionOptions as BaseParseTransactionOptions, SignedTransaction, SignTransactionOptions, TransactionExplanation, TssVerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
3
- import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
1
+ import { BaseBroadcastTransactionOptions, BaseBroadcastTransactionResult, BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, MPCRecoveryOptions, MPCConsolidationRecoveryOptions, MPCSweepRecoveryOptions, MPCSweepTxs, MPCTxs, ParsedTransaction, ParseTransactionOptions as BaseParseTransactionOptions, SignedTransaction, SignTransactionOptions, TransactionExplanation, TssVerifyAddressOptions, VerifyTransactionOptions, PopulatedIntent, PrebuildTransactionWithIntentOptions, MultisigType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as StaticsBaseCoin, BaseNetwork } from '@bitgo-beta/statics';
3
+ import BigNumber from 'bignumber.js';
4
+ import { SuiObjectInfo } from './lib/iface';
4
5
  export interface ExplainTransactionOptions {
5
6
  txHex: string;
6
7
  }
@@ -11,12 +12,13 @@ interface TransactionOutput {
11
12
  address: string;
12
13
  amount: string;
13
14
  }
14
- declare type TransactionInput = TransactionOutput;
15
+ type TransactionInput = TransactionOutput;
15
16
  export interface SuiParsedTransaction extends ParsedTransaction {
16
17
  inputs: TransactionInput[];
17
18
  outputs: TransactionOutput[];
19
+ fee: BigNumber;
18
20
  }
19
- export declare type SuiTransactionExplanation = TransactionExplanation;
21
+ export type SuiTransactionExplanation = TransactionExplanation;
20
22
  export declare class Sui extends BaseCoin {
21
23
  protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
22
24
  protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
@@ -28,18 +30,21 @@ export declare class Sui extends BaseCoin {
28
30
  getChain(): string;
29
31
  getFamily(): string;
30
32
  getFullName(): string;
33
+ getNetwork(): BaseNetwork;
31
34
  /** @inheritDoc */
32
35
  supportsTss(): boolean;
36
+ /** inherited doc */
37
+ getDefaultMultisigType(): MultisigType;
33
38
  getMPCAlgorithm(): MPCAlgorithm;
34
39
  allowsAccountConsolidations(): boolean;
35
40
  verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
36
41
  isWalletAddress(params: TssVerifyAddressOptions): Promise<boolean>;
37
42
  parseTransaction(params: SuiParseTransactionOptions): Promise<SuiParsedTransaction>;
38
43
  generateKeyPair(seed?: Buffer): KeyPair;
39
- isValidPub(pub: string): boolean;
40
- isValidPrv(prv: string): boolean;
44
+ isValidPub(_: string): boolean;
45
+ isValidPrv(_: string): boolean;
41
46
  isValidAddress(address: string): boolean;
42
- signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
47
+ signTransaction(_: SignTransactionOptions): Promise<SignedTransaction>;
43
48
  /**
44
49
  * Explain a Sui transaction
45
50
  * @param params
@@ -49,6 +54,37 @@ export declare class Sui extends BaseCoin {
49
54
  private getAddressFromPublicKey;
50
55
  /** @inheritDoc */
51
56
  getSignablePayload(serializedTx: string): Promise<Buffer>;
57
+ protected getPublicNodeUrl(): string;
58
+ protected getBalance(owner: string, coinType?: string): Promise<string>;
59
+ protected getInputCoins(owner: string, coinType?: string): Promise<SuiObjectInfo[]>;
60
+ protected getFeeEstimate(txHex: string): Promise<BigNumber>;
61
+ /**
62
+ * Builds funds recovery transaction(s) without BitGo
63
+ *
64
+ * @param {MPCRecoveryOptions} params parameters needed to construct and
65
+ * (maybe) sign the transaction
66
+ *
67
+ * @returns {MPCTx | MPCSweepTxs} array of the serialized transaction hex strings and indices
68
+ * of the addresses being swept
69
+ */
70
+ recover(params: MPCRecoveryOptions): Promise<MPCTxs | MPCSweepTxs>;
71
+ private recoverSuiToken;
72
+ private buildUnsignedSweepTransaction;
73
+ private signRecoveryTransaction;
74
+ broadcastTransaction({ transactions, }: BaseBroadcastTransactionOptions): Promise<BaseBroadcastTransactionResult>;
75
+ /** inherited doc */
76
+ createBroadcastableSweepTransaction(params: MPCSweepRecoveryOptions): Promise<MPCTxs>;
77
+ /**
78
+ * Builds native SUI recoveries of receive addresses in batch without BitGo.
79
+ * Funds will be recovered to base address first. You need to initiate another sweep txn after that.
80
+ *
81
+ * @param {MPCConsolidationRecoveryOptions} params - options for consolidation recovery.
82
+ * @param {string} [params.startingScanIndex] - receive address index to start scanning from. default to 1 (inclusive).
83
+ * @param {string} [params.endingScanIndex] - receive address index to end scanning at. default to startingScanIndex + 20 (exclusive).
84
+ */
85
+ recoverConsolidations(params: MPCConsolidationRecoveryOptions): Promise<MPCTxs | MPCSweepTxs>;
86
+ /** inherited doc */
87
+ setCoinSpecificFieldsInIntent(intent: PopulatedIntent, params: PrebuildTransactionWithIntentOptions): void;
52
88
  }
53
89
  export {};
54
90
  //# sourceMappingURL=sui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../src/sui.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,QAAQ,EAER,SAAS,EAGT,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,IAAI,2BAA2B,EACtD,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AAOzE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,0BAA2B,SAAQ,2BAA2B;IAC7E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,aAAK,gBAAgB,GAAG,iBAAiB,CAAC;AAE1C,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAE7D,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAG3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,oBAAY,yBAAyB,GAAG,sBAAsB,CAAC;AAE/D,qBAAa,GAAI,SAAQ,QAAQ;IAC/B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F;;OAEG;IACI,aAAa,IAAI,MAAM;IAIvB,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAI5B,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,eAAe,IAAI,YAAY;IAI/B,2BAA2B,IAAI,OAAO;IAIhC,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsCrE,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BlE,gBAAgB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuCzF,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAYvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3E;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAc/F,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,uBAAuB;IAK/B,kBAAkB;IACZ,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAKhE"}
1
+ {"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../src/sui.ts"],"names":[],"mappings":"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"}