@bitgo-beta/sdk-coin-sui 1.4.1-alpha.8 → 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,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SuiSystemStateSummary = exports.SuiValidatorSummary = exports.CommitteeInfo = exports.DelegationStakingPool = exports.DelegationStakingPoolFields = exports.Contents = exports.ContentsFieldsWithdraw = exports.ContentsFields = exports.SuiSupplyFields = exports.StakeSubsidy = exports.StakeSubsidyFields = exports.DelegatedStake = exports.StakeObject = exports.Balance = void 0;
4
+ const superstruct_1 = require("superstruct");
5
+ const common_1 = require("./common");
6
+ const transactions_1 = require("./transactions");
7
+ // Staking
8
+ exports.Balance = superstruct_1.object({
9
+ value: superstruct_1.number(),
10
+ });
11
+ exports.StakeObject = superstruct_1.object({
12
+ stakedSuiId: common_1.ObjectId,
13
+ stakeRequestEpoch: transactions_1.EpochId,
14
+ stakeActiveEpoch: transactions_1.EpochId,
15
+ principal: superstruct_1.number(),
16
+ status: superstruct_1.union([superstruct_1.literal('Active'), superstruct_1.literal('Pending'), superstruct_1.literal('Unstaked')]),
17
+ estimatedReward: superstruct_1.optional(superstruct_1.number()),
18
+ });
19
+ exports.DelegatedStake = superstruct_1.object({
20
+ validatorAddress: common_1.SuiAddress,
21
+ stakingPool: common_1.ObjectId,
22
+ stakes: superstruct_1.array(exports.StakeObject),
23
+ });
24
+ exports.StakeSubsidyFields = superstruct_1.object({
25
+ balance: superstruct_1.object({ value: superstruct_1.number() }),
26
+ distribution_counter: superstruct_1.number(),
27
+ current_distribution_amount: superstruct_1.number(),
28
+ stake_subsidy_period_length: superstruct_1.number(),
29
+ stake_subsidy_decrease_rate: superstruct_1.number(),
30
+ });
31
+ exports.StakeSubsidy = superstruct_1.object({
32
+ type: superstruct_1.string(),
33
+ fields: exports.StakeSubsidyFields,
34
+ });
35
+ exports.SuiSupplyFields = superstruct_1.object({
36
+ value: superstruct_1.number(),
37
+ });
38
+ exports.ContentsFields = superstruct_1.object({
39
+ id: superstruct_1.string(),
40
+ size: superstruct_1.number(),
41
+ head: superstruct_1.object({ vec: superstruct_1.array() }),
42
+ tail: superstruct_1.object({ vec: superstruct_1.array() }),
43
+ });
44
+ exports.ContentsFieldsWithdraw = superstruct_1.object({
45
+ id: superstruct_1.string(),
46
+ size: superstruct_1.number(),
47
+ });
48
+ exports.Contents = superstruct_1.object({
49
+ type: superstruct_1.string(),
50
+ fields: exports.ContentsFields,
51
+ });
52
+ exports.DelegationStakingPoolFields = superstruct_1.object({
53
+ exchangeRates: superstruct_1.object({
54
+ id: superstruct_1.string(),
55
+ size: superstruct_1.number(),
56
+ }),
57
+ id: superstruct_1.string(),
58
+ pendingStake: superstruct_1.number(),
59
+ pendingPoolTokenWithdraw: superstruct_1.number(),
60
+ pendingTotalSuiWithdraw: superstruct_1.number(),
61
+ poolTokenBalance: superstruct_1.number(),
62
+ rewardsPool: superstruct_1.object({ value: superstruct_1.number() }),
63
+ activationEpoch: superstruct_1.object({ vec: superstruct_1.array() }),
64
+ deactivationEpoch: superstruct_1.object({ vec: superstruct_1.array() }),
65
+ suiBalance: superstruct_1.number(),
66
+ });
67
+ exports.DelegationStakingPool = superstruct_1.object({
68
+ type: superstruct_1.string(),
69
+ fields: exports.DelegationStakingPoolFields,
70
+ });
71
+ exports.CommitteeInfo = superstruct_1.object({
72
+ epoch: superstruct_1.number(),
73
+ /** Array of (validator public key, stake unit) tuple */
74
+ validators: superstruct_1.optional(superstruct_1.array(superstruct_1.tuple([transactions_1.AuthorityName, superstruct_1.number()]))),
75
+ });
76
+ exports.SuiValidatorSummary = superstruct_1.object({
77
+ suiAddress: common_1.SuiAddress,
78
+ protocolPubkeyBytes: superstruct_1.string(),
79
+ networkPubkeyBytes: superstruct_1.string(),
80
+ workerPubkeyBytes: superstruct_1.string(),
81
+ proofOfPossessionBytes: superstruct_1.string(),
82
+ operationCapId: superstruct_1.string(),
83
+ name: superstruct_1.string(),
84
+ description: superstruct_1.string(),
85
+ imageUrl: superstruct_1.string(),
86
+ projectUrl: superstruct_1.string(),
87
+ p2pAddress: superstruct_1.string(),
88
+ netAddress: superstruct_1.string(),
89
+ primaryAddress: superstruct_1.string(),
90
+ workerAddress: superstruct_1.string(),
91
+ nextEpochProtocolPubkeyBytes: superstruct_1.nullable(superstruct_1.string()),
92
+ nextEpochProofOfPossession: superstruct_1.nullable(superstruct_1.string()),
93
+ nextEpochNetworkPubkeyBytes: superstruct_1.nullable(superstruct_1.string()),
94
+ nextEpochWorkerPubkeyBytes: superstruct_1.nullable(superstruct_1.string()),
95
+ nextEpochNetAddress: superstruct_1.nullable(superstruct_1.string()),
96
+ nextEpochP2pAddress: superstruct_1.nullable(superstruct_1.string()),
97
+ nextEpochPrimaryAddress: superstruct_1.nullable(superstruct_1.string()),
98
+ nextEpochWorkerAddress: superstruct_1.nullable(superstruct_1.string()),
99
+ votingPower: superstruct_1.number(),
100
+ gasPrice: superstruct_1.number(),
101
+ commissionRate: superstruct_1.number(),
102
+ nextEpochStake: superstruct_1.number(),
103
+ nextEpochGasPrice: superstruct_1.number(),
104
+ nextEpochCommissionRate: superstruct_1.number(),
105
+ stakingPoolId: superstruct_1.string(),
106
+ stakingPoolActivationEpoch: superstruct_1.nullable(superstruct_1.number()),
107
+ stakingPoolDeactivationEpoch: superstruct_1.nullable(superstruct_1.number()),
108
+ stakingPoolSuiBalance: superstruct_1.number(),
109
+ rewardsPool: superstruct_1.number(),
110
+ poolTokenBalance: superstruct_1.number(),
111
+ pendingStake: superstruct_1.number(),
112
+ pendingPoolTokenWithdraw: superstruct_1.number(),
113
+ pendingTotalSuiWithdraw: superstruct_1.number(),
114
+ exchangeRatesId: superstruct_1.string(),
115
+ exchangeRatesSize: superstruct_1.number(),
116
+ });
117
+ exports.SuiSystemStateSummary = superstruct_1.object({
118
+ epoch: superstruct_1.number(),
119
+ protocolVersion: superstruct_1.number(),
120
+ systemStateVersion: superstruct_1.number(),
121
+ storageFundTotalObjectStorageRebates: superstruct_1.number(),
122
+ storageFundNonRefundableBalance: superstruct_1.number(),
123
+ referenceGasPrice: superstruct_1.number(),
124
+ safeMode: superstruct_1.boolean(),
125
+ safeModeStorageRewards: superstruct_1.number(),
126
+ safeModeComputationRewards: superstruct_1.number(),
127
+ safeModeStorageRebates: superstruct_1.number(),
128
+ safeModeNonRefundableStorageFee: superstruct_1.number(),
129
+ epochStartTimestampMs: superstruct_1.number(),
130
+ epochDurationMs: superstruct_1.number(),
131
+ stakeSubsidyStartEpoch: superstruct_1.number(),
132
+ maxValidatorCount: superstruct_1.number(),
133
+ minValidatorJoiningStake: superstruct_1.number(),
134
+ validatorLowStakeThreshold: superstruct_1.number(),
135
+ validatorVeryLowStakeThreshold: superstruct_1.number(),
136
+ validatorLowStakeGracePeriod: superstruct_1.number(),
137
+ stakeSubsidyBalance: superstruct_1.number(),
138
+ stakeSubsidyDistributionCounter: superstruct_1.number(),
139
+ stakeSubsidyCurrentDistributionAmount: superstruct_1.number(),
140
+ stakeSubsidyPeriodLength: superstruct_1.number(),
141
+ stakeSubsidyDecreaseRate: superstruct_1.number(),
142
+ totalStake: superstruct_1.number(),
143
+ activeValidators: superstruct_1.array(exports.SuiValidatorSummary),
144
+ pendingActiveValidatorsId: superstruct_1.string(),
145
+ pendingActiveValidatorsSize: superstruct_1.number(),
146
+ pendingRemovals: superstruct_1.array(superstruct_1.number()),
147
+ stakingPoolMappingsId: superstruct_1.string(),
148
+ stakingPoolMappingsSize: superstruct_1.number(),
149
+ inactivePoolsId: superstruct_1.string(),
150
+ inactivePoolsSize: superstruct_1.number(),
151
+ validatorCandidatesId: superstruct_1.string(),
152
+ validatorCandidatesSize: superstruct_1.number(),
153
+ atRiskValidators: superstruct_1.array(superstruct_1.tuple([common_1.SuiAddress, superstruct_1.number()])),
154
+ validatorReportRecords: superstruct_1.array(superstruct_1.tuple([common_1.SuiAddress, superstruct_1.array(common_1.SuiAddress)])),
155
+ });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9teXN0ZW5sYWIvdHlwZXMvdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF1SDtBQUN2SCxxQ0FBZ0Q7QUFDaEQsaURBQXdEO0FBUXhELFVBQVU7QUFFRyxRQUFBLE9BQU8sR0FBRyxvQkFBTSxDQUFDO0lBQzVCLEtBQUssRUFBRSxvQkFBTSxFQUFFO0NBQ2hCLENBQUMsQ0FBQztBQUVVLFFBQUEsV0FBVyxHQUFHLG9CQUFNLENBQUM7SUFDaEMsV0FBVyxFQUFFLGlCQUFRO0lBQ3JCLGlCQUFpQixFQUFFLHNCQUFPO0lBQzFCLGdCQUFnQixFQUFFLHNCQUFPO0lBQ3pCLFNBQVMsRUFBRSxvQkFBTSxFQUFFO0lBQ25CLE1BQU0sRUFBRSxtQkFBSyxDQUFDLENBQUMscUJBQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxxQkFBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLHFCQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzRSxlQUFlLEVBQUUsc0JBQVEsQ0FBQyxvQkFBTSxFQUFFLENBQUM7Q0FDcEMsQ0FBQyxDQUFDO0FBRVUsUUFBQSxjQUFjLEdBQUcsb0JBQU0sQ0FBQztJQUNuQyxnQkFBZ0IsRUFBRSxtQkFBVTtJQUM1QixXQUFXLEVBQUUsaUJBQVE7SUFDckIsTUFBTSxFQUFFLG1CQUFLLENBQUMsbUJBQVcsQ0FBQztDQUMzQixDQUFDLENBQUM7QUFFVSxRQUFBLGtCQUFrQixHQUFHLG9CQUFNLENBQUM7SUFDdkMsT0FBTyxFQUFFLG9CQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsb0JBQU0sRUFBRSxFQUFFLENBQUM7SUFDcEMsb0JBQW9CLEVBQUUsb0JBQU0sRUFBRTtJQUM5QiwyQkFBMkIsRUFBRSxvQkFBTSxFQUFFO0lBQ3JDLDJCQUEyQixFQUFFLG9CQUFNLEVBQUU7SUFDckMsMkJBQTJCLEVBQUUs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QkFBTSxFQUFFO0lBQy9CLHVCQUF1QixFQUFFLG9CQUFNLEVBQUU7SUFDakMsZUFBZSxFQUFFLG9CQUFNLEVBQUU7SUFDekIsaUJBQWlCLEVBQUUsb0JBQU0sRUFBRTtJQUMzQixxQkFBcUIsRUFBRSxvQkFBTSxFQUFFO0lBQy9CLHVCQUF1QixFQUFFLG9CQUFNLEVBQUU7SUFDakMsZ0JBQWdCLEVBQUUsbUJBQUssQ0FBQyxtQkFBSyxDQUFDLENBQUMsbUJBQVUsRUFBRSxvQkFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELHNCQUFzQixFQUFFLG1CQUFLLENBQUMsbUJBQUssQ0FBQyxDQUFDLG1CQUFVLEVBQUUsbUJBQUssQ0FBQyxtQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3RFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFycmF5LCBib29sZWFuLCBsaXRlcmFsLCBudW1iZXIsIG9iamVjdCwgc3RyaW5nLCB1bmlvbiwgSW5mZXIsIG51bGxhYmxlLCB0dXBsZSwgb3B0aW9uYWwgfSBmcm9tICdzdXBlcnN0cnVjdCc7XG5pbXBvcnQgeyBPYmplY3RJZCwgU3VpQWRkcmVzcyB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IEF1dGhvcml0eU5hbWUsIEVwb2NoSWQgfSBmcm9tICcuL3RyYW5zYWN0aW9ucyc7XG5cbi8qIC0tLS0tLS0tLS0tLS0tIFR5cGVzIGZvciB0aGUgU3VpU3lzdGVtU3RhdGUgUnVzdCBkZWZpbml0aW9uIC0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCB0eXBlIERlbGVnYXRlZFN0YWtlID0gSW5mZXI8dHlwZW9mIERlbGVnYXRlZFN0YWtlPjtcbmV4cG9ydCB0eXBlIENvbW1pdHRlZUluZm8gPSBJbmZlcjx0eXBlb2YgQ29tbWl0dGVlSW5mbz47XG5leHBvcnQgdHlwZSBTdGFrZU9iamVjdCA9IEluZmVyPHR5cGVvZiBTdGFrZU9iamVjdD47XG5cbi8vIFN0YWtpbmdcblxuZXhwb3J0IGNvbnN0IEJhbGFuY2UgPSBvYmplY3Qoe1xuICB2YWx1ZTogbnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFN0YWtlT2JqZWN0ID0gb2JqZWN0KHtcbiAgc3Rha2VkU3VpSWQ6IE9iamVjdElkLFxuICBzdGFrZVJlcXVlc3RFcG9jaDogRXBvY2hJZCxcbiAgc3Rha2VBY3RpdmVFcG9jaDogRXBvY2hJZCxcbiAgcHJpbmNpcGFsOiBudW1iZXIoKSxcbiAgc3RhdHVzOiB1bmlvbihbbGl0ZXJhbCgnQWN0aXZlJyksIGxpdGVyYWwoJ1BlbmRpbmcnKSwgbGl0ZXJhbCgnVW5zdGFrZWQnKV0pLFxuICBlc3RpbWF0ZWRSZXdhcmQ6IG9wdGlvbmFsKG51bWJlcigpKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGVsZWdhdGVkU3Rha2UgPSBvYmplY3Qoe1xuICB2YWxpZGF0b3JBZGRyZXNzOiBTdWlBZGRyZXNzLFxuICBzdGFraW5nUG9vbDogT2JqZWN0SWQsXG4gIHN0YWtlczogYXJyYXkoU3Rha2VPYmplY3QpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdGFrZVN1YnNpZHlGaWVsZHMgPSBvYmplY3Qoe1xuICBiYWxhbmNlOiBvYmplY3QoeyB2YWx1ZTogbnVtYmVyKCkgfSksXG4gIGRpc3RyaWJ1dGlvbl9jb3VudGVyOiBudW1iZXIoKSxcbiAgY3VycmVudF9kaXN0cmlidXRpb25fYW1vdW50OiBudW1iZXIoKSxcbiAgc3Rha2Vfc3Vic2lkeV9wZXJpb2RfbGVuZ3RoOiBudW1iZXIoKSxcbiAgc3Rha2Vfc3Vic2lkeV9kZWNyZWFzZV9yYXRlOiBudW1iZXIoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU3Rha2VTdWJzaWR5ID0gb2JqZWN0KHtcbiAgdHlwZTogc3RyaW5nKCksXG4gIGZpZWxkczogU3Rha2VTdWJzaWR5RmllbGRzLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdWlTdXBwbHlGaWVsZHMgPSBvYmplY3Qoe1xuICB2YWx1ZTogbnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IENvbnRlbnRzRmllbGRzID0gb2JqZWN0KHtcbiAgaWQ6IHN0cmluZygpLFxuICBzaXplOiBudW1iZXIoKSxcbiAgaGVhZDogb2JqZWN0KHsgdmVjOiBhcnJheSgpIH0pLFxuICB0YWlsOiBvYmplY3QoeyB2ZWM6IGFycmF5KCkgfSksXG59KTtcblxuZXhwb3J0IGNvbnN0IENvbnRlbnRzRmllbGRzV2l0aGRyYXcgPSBvYmplY3Qoe1xuICBpZDogc3RyaW5nKCksXG4gIHNpemU6IG51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDb250ZW50cyA9IG9iamVjdCh7XG4gIHR5cGU6IHN0cmluZygpLFxuICBmaWVsZHM6IENvbnRlbnRzRmllbGRzLFxufSk7XG5cbmV4cG9ydCBjb25zdCBEZWxlZ2F0aW9uU3Rha2luZ1Bvb2xGaWVsZHMgPSBvYmplY3Qoe1xuICBleGNoYW5nZVJhdGVzOiBvYmplY3Qoe1xuICAgIGlkOiBzdHJpbmcoKSxcbiAgICBzaXplOiBudW1iZXIoKSxcbiAgfSksXG4gIGlkOiBzdHJpbmcoKSxcbiAgcGVuZGluZ1N0YWtlOiBudW1iZXIoKSxcbiAgcGVuZGluZ1Bvb2xUb2tlbldpdGhkcmF3OiBudW1iZXIoKSxcbiAgcGVuZGluZ1RvdGFsU3VpV2l0aGRyYXc6IG51bWJlcigpLFxuICBwb29sVG9rZW5CYWxhbmNlOiBudW1iZXIoKSxcbiAgcmV3YXJkc1Bvb2w6IG9iamVjdCh7IHZhbHVlOiBudW1iZXIoKSB9KSxcbiAgYWN0aXZhdGlvbkVwb2NoOiBvYmplY3QoeyB2ZWM6IGFycmF5KCkgfSksXG4gIGRlYWN0aXZhdGlvbkVwb2NoOiBvYmplY3QoeyB2ZWM6IGFycmF5KCkgfSksXG4gIHN1aUJhbGFuY2U6IG51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBEZWxlZ2F0aW9uU3Rha2luZ1Bvb2wgPSBvYmplY3Qoe1xuICB0eXBlOiBzdHJpbmcoKSxcbiAgZmllbGRzOiBEZWxlZ2F0aW9uU3Rha2luZ1Bvb2xGaWVsZHMsXG59KTtcblxuZXhwb3J0IGNvbnN0IENvbW1pdHRlZUluZm8gPSBvYmplY3Qoe1xuICBlcG9jaDogbnVtYmVyKCksXG4gIC8qKiBBcnJheSBvZiAodmFsaWRhdG9yIHB1YmxpYyBrZXksIHN0YWtlIHVuaXQpIHR1cGxlICovXG4gIHZhbGlkYXRvcnM6IG9wdGlvbmFsKGFycmF5KHR1cGxlKFtBdXRob3JpdHlOYW1lLCBudW1iZXIoKV0pKSksXG59KTtcblxuZXhwb3J0IGNvbnN0IFN1aVZhbGlkYXRvclN1bW1hcnkgPSBvYmplY3Qoe1xuICBzdWlBZGRyZXNzOiBTdWlBZGRyZXNzLFxuICBwcm90b2NvbFB1YmtleUJ5dGVzOiBzdHJpbmcoKSxcbiAgbmV0d29ya1B1YmtleUJ5dGVzOiBzdHJpbmcoKSxcbiAgd29ya2VyUHVia2V5Qnl0ZXM6IHN0cmluZygpLFxuICBwcm9vZk9mUG9zc2Vzc2lvbkJ5dGVzOiBzdHJpbmcoKSxcbiAgb3BlcmF0aW9uQ2FwSWQ6IHN0cmluZygpLFxuICBuYW1lOiBzdHJpbmcoKSxcbiAgZGVzY3JpcHRpb246IHN0cmluZygpLFxuICBpbWFnZVVybDogc3RyaW5nKCksXG4gIHByb2plY3RVcmw6IHN0cmluZygpLFxuICBwMnBBZGRyZXNzOiBzdHJpbmcoKSxcbiAgbmV0QWRkcmVzczogc3RyaW5nKCksXG4gIHByaW1hcnlBZGRyZXNzOiBzdHJpbmcoKSxcbiAgd29ya2VyQWRkcmVzczogc3RyaW5nKCksXG4gIG5leHRFcG9jaFByb3RvY29sUHVia2V5Qnl0ZXM6IG51bGxhYmxlKHN0cmluZygpKSxcbiAgbmV4dEVwb2NoUHJvb2ZPZlBvc3Nlc3Npb246IG51bGxhYmxlKHN0cmluZygpKSxcbiAgbmV4dEVwb2NoTmV0d29ya1B1YmtleUJ5dGVzOiBudWxsYWJsZShzdHJpbmcoKSksXG4gIG5leHRFcG9jaFdvcmtlclB1YmtleUJ5dGVzOiBudWxsYWJsZShzdHJpbmcoKSksXG4gIG5leHRFcG9jaE5ldEFkZHJlc3M6IG51bGxhYmxlKHN0cmluZygpKSxcbiAgbmV4dEVwb2NoUDJwQWRkcmVzczogbnVsbGFibGUoc3RyaW5nKCkpLFxuICBuZXh0RXBvY2hQcmltYXJ5QWRkcmVzczogbnVsbGFibGUoc3RyaW5nKCkpLFxuICBuZXh0RXBvY2hXb3JrZXJBZGRyZXNzOiBudWxsYWJsZShzdHJpbmcoKSksXG4gIHZvdGluZ1Bvd2VyOiBudW1iZXIoKSxcbiAgZ2FzUHJpY2U6IG51bWJlcigpLFxuICBjb21taXNzaW9uUmF0ZTogbnVtYmVyKCksXG4gIG5leHRFcG9jaFN0YWtlOiBudW1iZXIoKSxcbiAgbmV4dEVwb2NoR2FzUHJpY2U6IG51bWJlcigpLFxuICBuZXh0RXBvY2hDb21taXNzaW9uUmF0ZTogbnVtYmVyKCksXG4gIHN0YWtpbmdQb29sSWQ6IHN0cmluZygpLFxuICBzdGFraW5nUG9vbEFjdGl2YXRpb25FcG9jaDogbnVsbGFibGUobnVtYmVyKCkpLFxuICBzdGFraW5nUG9vbERlYWN0aXZhdGlvbkVwb2NoOiBudWxsYWJsZShudW1iZXIoKSksXG4gIHN0YWtpbmdQb29sU3VpQmFsYW5jZTogbnVtYmVyKCksXG4gIHJld2FyZHNQb29sOiBudW1iZXIoKSxcbiAgcG9vbFRva2VuQmFsYW5jZTogbnVtYmVyKCksXG4gIHBlbmRpbmdTdGFrZTogbnVtYmVyKCksXG4gIHBlbmRpbmdQb29sVG9rZW5XaXRoZHJhdzogbnVtYmVyKCksXG4gIHBlbmRpbmdUb3RhbFN1aVdpdGhkcmF3OiBudW1iZXIoKSxcbiAgZXhjaGFuZ2VSYXRlc0lkOiBzdHJpbmcoKSxcbiAgZXhjaGFuZ2VSYXRlc1NpemU6IG51bWJlcigpLFxufSk7XG5cbmV4cG9ydCB0eXBlIFN1aVZhbGlkYXRvclN1bW1hcnkgPSBJbmZlcjx0eXBlb2YgU3VpVmFsaWRhdG9yU3VtbWFyeT47XG5cbmV4cG9ydCBjb25zdCBTdWlTeXN0ZW1TdGF0ZVN1bW1hcnkgPSBvYmplY3Qoe1xuICBlcG9jaDogbnVtYmVyKCksXG4gIHByb3RvY29sVmVyc2lvbjogbnVtYmVyKCksXG4gIHN5c3RlbVN0YXRlVmVyc2lvbjogbnVtYmVyKCksXG4gIHN0b3JhZ2VGdW5kVG90YWxPYmplY3RTdG9yYWdlUmViYXRlczogbnVtYmVyKCksXG4gIHN0b3JhZ2VGdW5kTm9uUmVmdW5kYWJsZUJhbGFuY2U6IG51bWJlcigpLFxuICByZWZlcmVuY2VHYXNQcmljZTogbnVtYmVyKCksXG4gIHNhZmVNb2RlOiBib29sZWFuKCksXG4gIHNhZmVNb2RlU3RvcmFnZVJld2FyZHM6IG51bWJlcigpLFxuICBzYWZlTW9kZUNvbXB1dGF0aW9uUmV3YXJkczogbnVtYmVyKCksXG4gIHNhZmVNb2RlU3RvcmFnZVJlYmF0ZXM6IG51bWJlcigpLFxuICBzYWZlTW9kZU5vblJlZnVuZGFibGVTdG9yYWdlRmVlOiBudW1iZXIoKSxcbiAgZXBvY2hTdGFydFRpbWVzdGFtcE1zOiBudW1iZXIoKSxcbiAgZXBvY2hEdXJhdGlvbk1zOiBudW1iZXIoKSxcbiAgc3Rha2VTdWJzaWR5U3RhcnRFcG9jaDogbnVtYmVyKCksXG4gIG1heFZhbGlkYXRvckNvdW50OiBudW1iZXIoKSxcbiAgbWluVmFsaWRhdG9ySm9pbmluZ1N0YWtlOiBudW1iZXIoKSxcbiAgdmFsaWRhdG9yTG93U3Rha2VUaHJlc2hvbGQ6IG51bWJlcigpLFxuICB2YWxpZGF0b3JWZXJ5TG93U3Rha2VUaHJlc2hvbGQ6IG51bWJlcigpLFxuICB2YWxpZGF0b3JMb3dTdGFrZUdyYWNlUGVyaW9kOiBudW1iZXIoKSxcbiAgc3Rha2VTdWJzaWR5QmFsYW5jZTogbnVtYmVyKCksXG4gIHN0YWtlU3Vic2lkeURpc3RyaWJ1dGlvbkNvdW50ZXI6IG51bWJlcigpLFxuICBzdGFrZVN1YnNpZHlDdXJyZW50RGlzdHJpYnV0aW9uQW1vdW50OiBudW1iZXIoKSxcbiAgc3Rha2VTdWJzaWR5UGVyaW9kTGVuZ3RoOiBudW1iZXIoKSxcbiAgc3Rha2VTdWJzaWR5RGVjcmVhc2VSYXRlOiBudW1iZXIoKSxcbiAgdG90YWxTdGFrZTogbnVtYmVyKCksXG4gIGFjdGl2ZVZhbGlkYXRvcnM6IGFycmF5KFN1aVZhbGlkYXRvclN1bW1hcnkpLFxuICBwZW5kaW5nQWN0aXZlVmFsaWRhdG9yc0lkOiBzdHJpbmcoKSxcbiAgcGVuZGluZ0FjdGl2ZVZhbGlkYXRvcnNTaXplOiBudW1iZXIoKSxcbiAgcGVuZGluZ1JlbW92YWxzOiBhcnJheShudW1iZXIoKSksXG4gIHN0YWtpbmdQb29sTWFwcGluZ3NJZDogc3RyaW5nKCksXG4gIHN0YWtpbmdQb29sTWFwcGluZ3NTaXplOiBudW1iZXIoKSxcbiAgaW5hY3RpdmVQb29sc0lkOiBzdHJpbmcoKSxcbiAgaW5hY3RpdmVQb29sc1NpemU6IG51bWJlcigpLFxuICB2YWxpZGF0b3JDYW5kaWRhdGVzSWQ6IHN0cmluZygpLFxuICB2YWxpZGF0b3JDYW5kaWRhdGVzU2l6ZTogbnVtYmVyKCksXG4gIGF0Umlza1ZhbGlkYXRvcnM6IGFycmF5KHR1cGxlKFtTdWlBZGRyZXNzLCBudW1iZXIoKV0pKSxcbiAgdmFsaWRhdG9yUmVwb3J0UmVjb3JkczogYXJyYXkodHVwbGUoW1N1aUFkZHJlc3MsIGFycmF5KFN1aUFkZHJlc3MpXSkpLFxufSk7XG5cbmV4cG9ydCB0eXBlIFN1aVN5c3RlbVN0YXRlU3VtbWFyeSA9IEluZmVyPHR5cGVvZiBTdWlTeXN0ZW1TdGF0ZVN1bW1hcnk+O1xuIl19
@@ -0,0 +1,62 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { BaseKey, TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { SuiTransaction, RequestAddStake, RequestWithdrawStakedSui, StakingProgrammableTransaction } from './iface';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from './transaction';
6
+ import { TransferTransaction } from './transferTransaction';
7
+ export declare class StakingBuilder extends TransactionBuilder<StakingProgrammableTransaction> {
8
+ protected _addStakeTx: RequestAddStake;
9
+ protected _withdrawDelegation: RequestWithdrawStakedSui;
10
+ constructor(_coinConfig: Readonly<CoinConfig>);
11
+ /**
12
+ * Build a MoveCall transaction ready to be signed and executed.
13
+ *
14
+ * @returns {BitGoSuiTransaction} an unsigned Sui transaction
15
+ */
16
+ protected buildStakeTransaction(): SuiTransaction<StakingProgrammableTransaction>;
17
+ /**
18
+ * Get staking transaction type
19
+ *
20
+ * @return {TransactionType}
21
+ * @protected
22
+ */
23
+ protected get transactionType(): TransactionType;
24
+ /** @inheritdoc */
25
+ validateTransaction(transaction: TransferTransaction): void;
26
+ /** @inheritdoc */
27
+ sign(key: BaseKey): void;
28
+ /**
29
+ * Create a new transaction for staking coins ready to be signed and executed.
30
+ *
31
+ * @param {RequestAddStake} request
32
+ */
33
+ stake(request: RequestAddStake): this;
34
+ /**
35
+ * Create a new transaction for withdrawing coins ready to be signed
36
+ *
37
+ * @param {RequestWithdrawStakedSui} request
38
+ */
39
+ unstake(request: RequestWithdrawStakedSui): this;
40
+ /** @inheritdoc */
41
+ protected fromImplementation(rawTransaction: string): Transaction<StakingProgrammableTransaction>;
42
+ /** @inheritdoc */
43
+ protected buildImplementation(): Promise<Transaction<StakingProgrammableTransaction>>;
44
+ /**
45
+ * Initialize the transaction builder fields using the decoded transaction data
46
+ *
47
+ * @param {StakingTransaction} tx the transaction data
48
+ */
49
+ initBuilder(tx: Transaction<StakingProgrammableTransaction>): void;
50
+ /**
51
+ * Validates all fields are defined
52
+ */
53
+ private validateTransactionFields;
54
+ /**
55
+ * Build SuiTransaction
56
+ *
57
+ * @return {BitGoSuiTransaction<MoveCallTx>}
58
+ * @protected
59
+ */
60
+ protected buildSuiTransaction(): SuiTransaction<StakingProgrammableTransaction>;
61
+ }
62
+ //# sourceMappingURL=stakingBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAkD,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAChH,OAAO,EACL,cAAc,EACd,eAAe,EACf,wBAAwB,EAExB,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAiB5D,qBAAa,cAAe,SAAQ,kBAAkB,CAAC,8BAA8B,CAAC;IACpF,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC;IACvC,SAAS,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;gBAE5C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,IAAI,cAAc,CAAC,8BAA8B,CAAC;IAYjF;;;;;OAKG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAO3D,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,OAAO;IAKjB;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAYrC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAMhD,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,CAAC,8BAA8B,CAAC;IAQjG,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;IAgB3F;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,8BAA8B,CAAC,GAAG,IAAI;IA2BlE;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,IAAI,cAAc,CAAC,8BAA8B,CAAC;CA+ChF"}
@@ -0,0 +1,187 @@
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.StakingBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const iface_1 = require("./iface");
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const utils_1 = __importDefault(require("./utils"));
11
+ const assert_1 = __importDefault(require("assert"));
12
+ const stakingTransaction_1 = require("./stakingTransaction");
13
+ const builder_1 = require("./mystenlab/builder");
14
+ const framework_1 = require("./mystenlab/framework");
15
+ const bcs_1 = require("@mysten/bcs");
16
+ class StakingBuilder extends transactionBuilder_1.TransactionBuilder {
17
+ constructor(_coinConfig) {
18
+ super(_coinConfig);
19
+ this._transaction = new stakingTransaction_1.StakingTransaction(_coinConfig);
20
+ }
21
+ /**
22
+ * Build a MoveCall transaction ready to be signed and executed.
23
+ *
24
+ * @returns {BitGoSuiTransaction} an unsigned Sui transaction
25
+ */
26
+ buildStakeTransaction() {
27
+ return {
28
+ type: iface_1.SuiTransactionType.AddStake,
29
+ sender: this._sender,
30
+ tx: {
31
+ inputs: [],
32
+ transactions: [],
33
+ },
34
+ gasData: this._gasData,
35
+ };
36
+ }
37
+ /**
38
+ * Get staking transaction type
39
+ *
40
+ * @return {TransactionType}
41
+ * @protected
42
+ */
43
+ get transactionType() {
44
+ return sdk_core_1.TransactionType.StakingAdd;
45
+ }
46
+ /** @inheritdoc */
47
+ validateTransaction(transaction) {
48
+ if (!transaction.suiTransaction) {
49
+ return;
50
+ }
51
+ this.validateTransactionFields();
52
+ }
53
+ /** @inheritdoc */
54
+ sign(key) {
55
+ this.transaction.setSuiTransaction(this.buildSuiTransaction());
56
+ super.sign(key);
57
+ }
58
+ /**
59
+ * Create a new transaction for staking coins ready to be signed and executed.
60
+ *
61
+ * @param {RequestAddStake} request
62
+ */
63
+ stake(request) {
64
+ utils_1.default.validateAddress(request.validatorAddress, 'validatorAddress');
65
+ assert_1.default(utils_1.default.isValidAmount(request.amount), 'Invalid recipient amount');
66
+ if (this._sender === request.validatorAddress) {
67
+ throw new sdk_core_1.BuildTransactionError('Sender address cannot be the same as the Staking address');
68
+ }
69
+ this._addStakeTx = request;
70
+ return this;
71
+ }
72
+ /**
73
+ * Create a new transaction for withdrawing coins ready to be signed
74
+ *
75
+ * @param {RequestWithdrawStakedSui} request
76
+ */
77
+ unstake(request) {
78
+ this.validateSuiObjectRef(request.stakedSui, 'stakedSui');
79
+ this._withdrawDelegation = request;
80
+ return this;
81
+ }
82
+ /** @inheritdoc */
83
+ fromImplementation(rawTransaction) {
84
+ const tx = new stakingTransaction_1.StakingTransaction(this._coinConfig);
85
+ this.validateRawTransaction(rawTransaction);
86
+ tx.fromRawTransaction(rawTransaction);
87
+ this.initBuilder(tx);
88
+ return this.transaction;
89
+ }
90
+ /** @inheritdoc */
91
+ async buildImplementation() {
92
+ this.transaction.setSuiTransaction(this.buildSuiTransaction());
93
+ this.transaction.transactionType(this.transactionType);
94
+ if (this._signer) {
95
+ this.transaction.sign(this._signer);
96
+ }
97
+ this._signatures.forEach((signature) => {
98
+ this.transaction.addSignature(signature.publicKey, signature.signature);
99
+ });
100
+ this.transaction.loadInputsAndOutputs();
101
+ return this.transaction;
102
+ }
103
+ /**
104
+ * Initialize the transaction builder fields using the decoded transaction data
105
+ *
106
+ * @param {StakingTransaction} tx the transaction data
107
+ */
108
+ initBuilder(tx) {
109
+ this._transaction = tx;
110
+ if (tx.signature && tx.signature.length > 0) {
111
+ this._signatures = [tx.suiSignature];
112
+ }
113
+ const txData = tx.toJson();
114
+ this.type(iface_1.SuiTransactionType.AddStake);
115
+ this.sender(txData.sender);
116
+ this.gasData(txData.gasData);
117
+ const amountInputIdx = txData.kind.ProgrammableTransaction.transactions[1].arguments[1].index;
118
+ const amount = utils_1.default.getAmount(txData.kind.ProgrammableTransaction.inputs[amountInputIdx]);
119
+ const validatorAddressInputIdx = txData.kind.ProgrammableTransaction.transactions[1].arguments[2].index;
120
+ const validatorAddress = utils_1.default.getAddress(txData.kind.ProgrammableTransaction.inputs[validatorAddressInputIdx]);
121
+ this.stake({ amount, validatorAddress });
122
+ }
123
+ /**
124
+ * Validates all fields are defined
125
+ */
126
+ validateTransactionFields() {
127
+ assert_1.default(this._type, new sdk_core_1.BuildTransactionError('type is required before building'));
128
+ assert_1.default(this._sender, new sdk_core_1.BuildTransactionError('sender is required before building'));
129
+ assert_1.default(this._addStakeTx.validatorAddress, new sdk_core_1.BuildTransactionError('validator address is required before building'));
130
+ assert_1.default(this._addStakeTx.amount, new sdk_core_1.BuildTransactionError('staking amount is required before building'));
131
+ assert_1.default(this._gasData, new sdk_core_1.BuildTransactionError('gasData is required before building'));
132
+ this.validateGasData(this._gasData);
133
+ }
134
+ /**
135
+ * Build SuiTransaction
136
+ *
137
+ * @return {BitGoSuiTransaction<MoveCallTx>}
138
+ * @protected
139
+ */
140
+ buildSuiTransaction() {
141
+ this.validateTransactionFields();
142
+ const programmableTxBuilder = new builder_1.TransactionBlock();
143
+ switch (this._type) {
144
+ case iface_1.SuiTransactionType.AddStake:
145
+ // Create a new coin with staking balance, based on the coins used as gas payment.
146
+ const coin = programmableTxBuilder.splitCoins(programmableTxBuilder.gas, [
147
+ programmableTxBuilder.pure(this._addStakeTx.amount),
148
+ ]);
149
+ // Stake the split coin to a specific validator address.
150
+ programmableTxBuilder.moveCall({
151
+ target: `${framework_1.SUI_SYSTEM_ADDRESS}::${framework_1.SUI_SYSTEM_MODULE_NAME}::${framework_1.ADD_STAKE_FUN_NAME}`,
152
+ arguments: [
153
+ programmableTxBuilder.object(builder_1.Inputs.SharedObjectRef(framework_1.SUI_SYSTEM_STATE_OBJECT)),
154
+ coin,
155
+ programmableTxBuilder.pure(builder_1.Inputs.Pure(this._addStakeTx.validatorAddress, bcs_1.BCS.ADDRESS)),
156
+ ],
157
+ });
158
+ break;
159
+ case iface_1.SuiTransactionType.WithdrawStake:
160
+ // Unstake staked object.
161
+ programmableTxBuilder.moveCall({
162
+ target: `${framework_1.SUI_SYSTEM_ADDRESS}::${framework_1.SUI_SYSTEM_MODULE_NAME}::${framework_1.WITHDRAW_STAKE_FUN_NAME}`,
163
+ arguments: [
164
+ programmableTxBuilder.object(builder_1.Inputs.SharedObjectRef(framework_1.SUI_SYSTEM_STATE_OBJECT)),
165
+ programmableTxBuilder.pure(builder_1.Inputs.ObjectRef(this._withdrawDelegation.stakedSui)),
166
+ ],
167
+ });
168
+ break;
169
+ default:
170
+ throw new sdk_core_1.InvalidTransactionError(`unsupported target method`);
171
+ }
172
+ const txData = programmableTxBuilder.blockData;
173
+ return {
174
+ type: this._type,
175
+ sender: this._sender,
176
+ tx: {
177
+ inputs: [...txData.inputs],
178
+ transactions: [...txData.transactions],
179
+ },
180
+ gasData: {
181
+ ...this._gasData,
182
+ },
183
+ };
184
+ }
185
+ }
186
+ exports.StakingBuilder = StakingBuilder;
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0YWtpbmdCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLG1EQUFnSDtBQUNoSCxtQ0FNaUI7QUFDakIsNkRBQTBEO0FBRTFELG9EQUE0QjtBQUM1QixvREFBNEI7QUFFNUIsNkRBQTBEO0FBQzFELGlEQUs2QjtBQUM3QixxREFNK0I7QUFDL0IscUNBQWtDO0FBRWxDLE1BQWEsY0FBZSxTQUFRLHVDQUFrRDtJQUlwRixZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksdUNBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxxQkFBcUI7UUFDN0IsT0FBTztZQUNMLElBQUksRUFBRSwwQkFBa0IsQ0FBQyxRQUFRO1lBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNwQixFQUFFLEVBQUU7Z0JBQ0YsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsWUFBWSxFQUFFLEVBQUU7YUFDakI7WUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBZ0M7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBWTtRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixF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LGVBQWUsQ0FBQyxtQ0FBdUIsQ0FBQyxDQUFDO3dCQUM3RSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUNqRjtpQkFDcUIsQ0FBQyxDQUFDO2dCQUMxQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDbEU7UUFFRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUM7UUFDL0MsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDcEIsRUFBRSxFQUFFO2dCQUNGLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDMUIsWUFBWSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO2FBQ3ZDO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsSUFBSSxDQUFDLFFBQVE7YUFDakI7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBNU1ELHdDQTRNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VLZXksIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIFN1aVRyYW5zYWN0aW9uLFxuICBSZXF1ZXN0QWRkU3Rha2UsXG4gIFJlcXVlc3RXaXRoZHJhd1N0YWtlZFN1aSxcbiAgU3VpVHJhbnNhY3Rpb25UeXBlLFxuICBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zZmVyVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3Rha2luZ1RyYW5zYWN0aW9uIH0gZnJvbSAnLi9zdGFraW5nVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25CbG9jayBhcyBQcm9ncmFtbWluZ1RyYW5zYWN0aW9uQmxvY2tCdWlsZGVyLFxuICBUcmFuc2FjdGlvbkJsb2NrSW5wdXQsXG4gIE1vdmVDYWxsVHJhbnNhY3Rpb24sXG4gIElucHV0cyxcbn0gZnJvbSAnLi9teXN0ZW5sYWIvYnVpbGRlcic7XG5pbXBvcnQge1xuICBBRERfU1RBS0VfRlVOX05BTUUsXG4gIFNVSV9TWVNURU1fQUREUkVTUyxcbiAgU1VJX1NZU1RFTV9NT0RVTEVfTkFNRSxcbiAgU1VJX1NZU1RFTV9TVEFURV9PQkpFQ1QsXG4gIFdJVEhEUkFXX1NUQUtFX0ZVTl9OQU1FLFxufSBmcm9tICcuL215c3RlbmxhYi9mcmFtZXdvcmsnO1xuaW1wb3J0IHsgQkNTIH0gZnJvbSAnQG15c3Rlbi9iY3MnO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXI8U3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB7XG4gIHByb3RlY3RlZCBfYWRkU3Rha2VUeDogUmVxdWVzdEFkZFN0YWtlO1xuICBwcm90ZWN0ZWQgX3dpdGhkcmF3RGVsZWdhdGlvbjogUmVxdWVzdFdpdGhkcmF3U3Rha2VkU3VpO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBTdGFraW5nVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgTW92ZUNhbGwgdHJhbnNhY3Rpb24gcmVhZHkgdG8gYmUgc2lnbmVkIGFuZCBleGVjdXRlZC5cbiAgICpcbiAgICogQHJldHVybnMge0JpdEdvU3VpVHJhbnNhY3Rpb259IGFuIHVuc2lnbmVkIFN1aSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkU3Rha2VUcmFuc2FjdGlvbigpOiBTdWlUcmFuc2FjdGlvbjxTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogU3VpVHJhbnNhY3Rpb25UeXBlLkFkZFN0YWtlLFxuICAgICAgc2VuZGVyOiB0aGlzLl9zZW5kZXIsXG4gICAgICB0eDoge1xuICAgICAgICBpbnB1dHM6IFtdLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IFtdLFxuICAgICAgfSxcbiAgICAgIGdhc0RhdGE6IHRoaXMuX2dhc0RhdGEsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc3Rha2luZyB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEByZXR1cm4ge1RyYW5zYWN0aW9uVHlwZX1cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBZGQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNmZXJUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24uc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uRmllbGRzKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc2lnbihrZXk6IEJhc2VLZXkpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFN1aVRyYW5zYWN0aW9uKHRoaXMuYnVpbGRTdWlUcmFuc2FjdGlvbigpKTtcbiAgICBzdXBlci5zaWduKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHRyYW5zYWN0aW9uIGZvciBzdGFraW5nIGNvaW5zIHJlYWR5IHRvIGJlIHNpZ25lZCBhbmQgZXhlY3V0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVxdWVzdEFkZFN0YWtlfSByZXF1ZXN0XG4gICAqL1xuICBzdGFrZShyZXF1ZXN0OiBSZXF1ZXN0QWRkU3Rha2UpOiB0aGlzIHtcbiAgICB1dGlscy52YWxpZGF0ZUFkZHJlc3MocmVxdWVzdC52YWxpZGF0b3JBZGRyZXNzLCAndmFsaWRhdG9yQWRkcmVzcycpO1xuICAgIGFzc2VydCh1dGlscy5pc1ZhbGlkQW1vdW50KHJlcXVlc3QuYW1vdW50KSwgJ0ludmFsaWQgcmVjaXBpZW50IGFtb3VudCcpO1xuXG4gICAgaWYgKHRoaXMuX3NlbmRlciA9PT0gcmVxdWVzdC52YWxpZGF0b3JBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTZW5kZXIgYWRkcmVzcyBjYW5ub3QgYmUgdGhlIHNhbWUgYXMgdGhlIFN0YWtpbmcgYWRkcmVzcycpO1xuICAgIH1cblxuICAgIHRoaXMuX2FkZFN0YWtlVHggPSByZXF1ZXN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB0cmFuc2FjdGlvbiBmb3Igd2l0aGRyYXdpbmcgY29pbnMgcmVhZHkgdG8gYmUgc2lnbmVkXG4gICAqXG4gICAqIEBwYXJhbSB7UmVxdWVzdFdpdGhkcmF3U3Rha2VkU3VpfSByZXF1ZXN0XG4gICAqL1xuICB1bnN0YWtlKHJlcXVlc3Q6IFJlcXVlc3RXaXRoZHJhd1N0YWtlZFN1aSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVTdWlPYmplY3RSZWYocmVxdWVzdC5zdGFrZWRTdWksICdzdGFrZWRTdWknKTtcbiAgICB0aGlzLl93aXRoZHJhd0RlbGVnYXRpb24gPSByZXF1ZXN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uPFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFN0YWtpbmdUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbjxTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+PiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRTdWlUcmFuc2FjdGlvbih0aGlzLmJ1aWxkU3VpVHJhbnNhY3Rpb24oKSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuXG4gICAgaWYgKHRoaXMuX3NpZ25lcikge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5zaWduKHRoaXMuX3NpZ25lcik7XG4gICAgfVxuXG4gICAgdGhpcy5fc2lnbmF0dXJlcy5mb3JFYWNoKChzaWduYXR1cmUpID0+IHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHNpZ25hdHVyZS5wdWJsaWNLZXksIHNpZ25hdHVyZS5zaWduYXR1cmUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtTdGFraW5nVHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb248U3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG5cbiAgICBpZiAodHguc2lnbmF0dXJlICYmIHR4LnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmVzID0gW3R4LnN1aVNpZ25hdHVyZV07XG4gICAgfVxuXG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgdGhpcy50eXBlKFN1aVRyYW5zYWN0aW9uVHlwZS5BZGRTdGFrZSk7XG4gICAgdGhpcy5zZW5kZXIodHhEYXRhLnNlbmRlcik7XG4gICAgdGhpcy5nYXNEYXRhKHR4RGF0YS5nYXNEYXRhKTtcblxuICAgIGNvbnN0IGFtb3VudElucHV0SWR4ID0gKFxuICAgICAgKHR4RGF0YS5raW5kLlByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uc1sxXSBhcyBNb3ZlQ2FsbFRyYW5zYWN0aW9uKS5hcmd1bWVudHNbMV0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgKS5pbmRleDtcbiAgICBjb25zdCBhbW91bnQgPSB1dGlscy5nZXRBbW91bnQodHhEYXRhLmtpbmQuUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24uaW5wdXRzW2Ftb3VudElucHV0SWR4XSBhcyBUcmFuc2FjdGlvbkJsb2NrSW5wdXQpO1xuXG4gICAgY29uc3QgdmFsaWRhdG9yQWRkcmVzc0lucHV0SWR4ID0gKFxuICAgICAgKHR4RGF0YS5raW5kLlByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uc1sxXSBhcyBNb3ZlQ2FsbFRyYW5zYWN0aW9uKS5hcmd1bWVudHNbMl0gYXMgVHJhbnNhY3Rpb25CbG9ja0lucHV0XG4gICAgKS5pbmRleDtcbiAgICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzID0gdXRpbHMuZ2V0QWRkcmVzcyhcbiAgICAgIHR4RGF0YS5raW5kLlByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLmlucHV0c1t2YWxpZGF0b3JBZGRyZXNzSW5wdXRJZHhdIGFzIFRyYW5zYWN0aW9uQmxvY2tJbnB1dFxuICAgICk7XG5cbiAgICB0aGlzLnN0YWtlKHsgYW1vdW50LCB2YWxpZGF0b3JBZGRyZXNzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbGwgZmllbGRzIGFyZSBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgYXNzZXJ0KHRoaXMuX3R5cGUsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3R5cGUgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRlciBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KFxuICAgICAgdGhpcy5fYWRkU3Rha2VUeC52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndmFsaWRhdG9yIGFkZHJlc3MgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJylcbiAgICApO1xuICAgIGFzc2VydCh0aGlzLl9hZGRTdGFrZVR4LmFtb3VudCwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignc3Rha2luZyBhbW91bnQgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9nYXNEYXRhLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdnYXNEYXRhIGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICB0aGlzLnZhbGlkYXRlR2FzRGF0YSh0aGlzLl9nYXNEYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBTdWlUcmFuc2FjdGlvblxuICAgKlxuICAgKiBAcmV0dXJuIHtCaXRHb1N1aVRyYW5zYWN0aW9uPE1vdmVDYWxsVHg+fVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRTdWlUcmFuc2FjdGlvbigpOiBTdWlUcmFuc2FjdGlvbjxTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTtcblxuICAgIGNvbnN0IHByb2dyYW1tYWJsZVR4QnVpbGRlciA9IG5ldyBQcm9ncmFtbWluZ1RyYW5zYWN0aW9uQmxvY2tCdWlsZGVyKCk7XG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XG4gICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5BZGRTdGFrZTpcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGNvaW4gd2l0aCBzdGFraW5nIGJhbGFuY2UsIGJhc2VkIG9uIHRoZSBjb2lucyB1c2VkIGFzIGdhcyBwYXltZW50LlxuICAgICAgICBjb25zdCBjb2luID0gcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnNwbGl0Q29pbnMocHJvZ3JhbW1hYmxlVHhCdWlsZGVyLmdhcywgW1xuICAgICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci5wdXJlKHRoaXMuX2FkZFN0YWtlVHguYW1vdW50KSxcbiAgICAgICAgXSk7XG4gICAgICAgIC8vIFN0YWtlIHRoZSBzcGxpdCBjb2luIHRvIGEgc3BlY2lmaWMgdmFsaWRhdG9yIGFkZHJlc3MuXG4gICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci5tb3ZlQ2FsbCh7XG4gICAgICAgICAgdGFyZ2V0OiBgJHtTVUlfU1lTVEVNX0FERFJFU1N9Ojoke1NVSV9TWVNURU1fTU9EVUxFX05BTUV9Ojoke0FERF9TVEFLRV9GVU5fTkFNRX1gLFxuICAgICAgICAgIGFyZ3VtZW50czogW1xuICAgICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdChJbnB1dHMuU2hhcmVkT2JqZWN0UmVmKFNVSV9TWVNURU1fU1RBVEVfT0JKRUNUKSksXG4gICAgICAgICAgICBjb2luLFxuICAgICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnB1cmUoSW5wdXRzLlB1cmUodGhpcy5fYWRkU3Rha2VUeC52YWxpZGF0b3JBZGRyZXNzLCBCQ1MuQUREUkVTUykpLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0gYXMgTW92ZUNhbGxUcmFuc2FjdGlvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuV2l0aGRyYXdTdGFrZTpcbiAgICAgICAgLy8gVW5zdGFrZSBzdGFrZWQgb2JqZWN0LlxuICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIubW92ZUNhbGwoe1xuICAgICAgICAgIHRhcmdldDogYCR7U1VJX1NZU1RFTV9BRERSRVNTfTo6JHtTVUlfU1lTVEVNX01PRFVMRV9OQU1FfTo6JHtXSVRIRFJBV19TVEFLRV9GVU5fTkFNRX1gLFxuICAgICAgICAgIGFyZ3VtZW50czogW1xuICAgICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdChJbnB1dHMuU2hhcmVkT2JqZWN0UmVmKFNVSV9TWVNURU1fU1RBVEVfT0JKRUNUKSksXG4gICAgICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIucHVyZShJbnB1dHMuT2JqZWN0UmVmKHRoaXMuX3dpdGhkcmF3RGVsZWdhdGlvbi5zdGFrZWRTdWkpKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9IGFzIE1vdmVDYWxsVHJhbnNhY3Rpb24pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgdW5zdXBwb3J0ZWQgdGFyZ2V0IG1ldGhvZGApO1xuICAgIH1cblxuICAgIGNvbnN0IHR4RGF0YSA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5ibG9ja0RhdGE7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUsXG4gICAgICBzZW5kZXI6IHRoaXMuX3NlbmRlcixcbiAgICAgIHR4OiB7XG4gICAgICAgIGlucHV0czogWy4uLnR4RGF0YS5pbnB1dHNdLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IFsuLi50eERhdGEudHJhbnNhY3Rpb25zXSxcbiAgICAgIH0sXG4gICAgICBnYXNEYXRhOiB7XG4gICAgICAgIC4uLnRoaXMuX2dhc0RhdGEsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,51 @@
1
+ /// <reference types="node" />
2
+ import { BaseKey, PublicKey as BasePublicKey, Signature, TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { StakingProgrammableTransaction, SuiTransaction, TransactionExplanation, TxData } from './iface';
4
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
5
+ import { Transaction } from './transaction';
6
+ export declare class StakingTransaction extends Transaction<StakingProgrammableTransaction> {
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ get suiTransaction(): SuiTransaction<StakingProgrammableTransaction>;
9
+ setSuiTransaction(tx: SuiTransaction<StakingProgrammableTransaction>): void;
10
+ addSignature(publicKey: BasePublicKey, signature: Buffer): void;
11
+ get suiSignature(): Signature;
12
+ /** @inheritdoc */
13
+ canSign(key: BaseKey): boolean;
14
+ /** @inheritdoc */
15
+ toBroadcastFormat(): string;
16
+ /** @inheritdoc */
17
+ toJson(): TxData;
18
+ /** @inheritDoc */
19
+ explainTransaction(): TransactionExplanation;
20
+ /**
21
+ * Set the transaction type.
22
+ *
23
+ * @param {TransactionType} transactionType The transaction type to be set.
24
+ */
25
+ transactionType(transactionType: TransactionType): void;
26
+ /**
27
+ * Load the input and output data on this transaction.
28
+ */
29
+ loadInputsAndOutputs(): void;
30
+ /**
31
+ * Sets this transaction payload
32
+ *
33
+ * @param {string} rawTransaction
34
+ */
35
+ fromRawTransaction(rawTransaction: string): void;
36
+ /**
37
+ * Helper function for serialize() to get the correct txData with transaction type
38
+ *
39
+ * @return {TxData}
40
+ */
41
+ getTxData(): TxData;
42
+ /**
43
+ * Returns a complete explanation for a staking transaction
44
+ *
45
+ * @param {TxData} json The transaction data in json format
46
+ * @param {TransactionExplanation} explanationResult The transaction explanation to be completed
47
+ * @returns {TransactionExplanation}
48
+ */
49
+ explainAddDelegationTransaction(json: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
50
+ }
51
+ //# sourceMappingURL=stakingTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingTransaction.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAGP,SAAS,IAAI,aAAa,EAC1B,SAAS,EAET,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,8BAA8B,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,8BAA8B,CAAC;gBACrE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAAC,8BAA8B,CAAC,CAEnE;IAED,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,8BAA8B,CAAC,GAAG,IAAI;IAI3E,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAehB,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAmC5C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIvD;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAiC5B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAchD;;;;OAIG;IACH,SAAS,IAAI,MAAM;IA0CnB;;;;;;OAMG;IACH,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;CA2BjH"}