@bitgo-beta/sdk-coin-sui 1.4.1-alpha.9 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +1 -0
- package/CHANGELOG.md +122 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +7 -8
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +10 -13
- package/dist/src/lib/iface.d.ts +53 -51
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +26 -1
- package/dist/src/lib/index.d.ts +5 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +12 -2
- package/dist/src/lib/keyPair.d.ts +11 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +21 -10
- package/dist/src/lib/mystenlab/builder/Inputs.d.ts +66 -0
- package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/builder/Inputs.js +56 -0
- package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +616 -0
- package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/builder/TransactionBlock.js +260 -0
- package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +566 -0
- package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +171 -0
- package/dist/src/lib/mystenlab/builder/Transactions.d.ts +992 -0
- package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/builder/Transactions.js +119 -0
- package/dist/src/lib/mystenlab/builder/bcs.d.ts +25 -0
- package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/builder/bcs.js +141 -0
- package/dist/src/lib/mystenlab/builder/index.d.ts +5 -0
- package/dist/src/lib/mystenlab/builder/index.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/builder/index.js +17 -0
- package/dist/src/lib/mystenlab/builder/serializer.d.ts +4 -0
- package/dist/src/lib/mystenlab/builder/serializer.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/builder/serializer.js +101 -0
- package/dist/src/lib/mystenlab/builder/utils.d.ts +10 -0
- package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/builder/utils.js +10 -0
- package/dist/src/lib/mystenlab/cryptography/hash.d.ts +8 -0
- package/dist/src/lib/mystenlab/cryptography/hash.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/cryptography/hash.js +22 -0
- package/dist/src/lib/mystenlab/framework/framework.d.ts +93 -0
- package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/framework/framework.js +138 -0
- package/dist/src/lib/mystenlab/framework/index.d.ts +3 -0
- package/dist/src/lib/mystenlab/framework/index.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/framework/index.js +15 -0
- package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts +12 -0
- package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/framework/sui-system-state.js +19 -0
- package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts +7 -0
- package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +119 -0
- package/dist/src/lib/mystenlab/types/coin.d.ts +89 -0
- package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/coin.js +32 -0
- package/dist/src/lib/mystenlab/types/common.d.ts +45 -0
- package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/common.js +84 -0
- package/dist/src/lib/mystenlab/types/events.d.ts +198 -0
- package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/events.js +46 -0
- package/dist/src/lib/mystenlab/types/index.d.ts +9 -0
- package/dist/src/lib/mystenlab/types/index.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/index.js +21 -0
- package/dist/src/lib/mystenlab/types/normalized.d.ts +254 -0
- package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/normalized.js +111 -0
- package/dist/src/lib/mystenlab/types/objects.d.ts +806 -0
- package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/objects.js +302 -0
- package/dist/src/lib/mystenlab/types/option.d.ts +8 -0
- package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/option.js +14 -0
- package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +111 -0
- package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/sui-bcs.js +107 -0
- package/dist/src/lib/mystenlab/types/transactions.d.ts +6703 -0
- package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/transactions.js +405 -0
- package/dist/src/lib/mystenlab/types/validator.d.ts +641 -0
- package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -0
- package/dist/src/lib/mystenlab/types/validator.js +156 -0
- package/dist/src/lib/stakingBuilder.d.ts +62 -0
- package/dist/src/lib/stakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/stakingBuilder.js +187 -0
- package/dist/src/lib/stakingTransaction.d.ts +51 -0
- package/dist/src/lib/stakingTransaction.d.ts.map +1 -0
- package/dist/src/lib/stakingTransaction.js +211 -0
- package/dist/src/lib/transaction.d.ts +36 -33
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +89 -252
- package/dist/src/lib/transactionBuilder.d.ts +18 -33
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +39 -169
- package/dist/src/lib/transactionBuilderFactory.d.ts +10 -3
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +29 -7
- package/dist/src/lib/transferBuilder.d.ts +31 -2
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +102 -1
- package/dist/src/lib/transferTransaction.d.ts +54 -0
- package/dist/src/lib/transferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transferTransaction.js +180 -0
- package/dist/src/lib/unstakingBuilder.d.ts +55 -0
- package/dist/src/lib/unstakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/unstakingBuilder.js +148 -0
- package/dist/src/lib/unstakingTransaction.d.ts +51 -0
- package/dist/src/lib/unstakingTransaction.d.ts.map +1 -0
- package/dist/src/lib/unstakingTransaction.js +206 -0
- package/dist/src/lib/utils.d.ts +49 -3
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +151 -10
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +11 -0
- package/dist/src/sui.d.ts +3 -0
- package/dist/src/sui.d.ts.map +1 -1
- package/dist/src/sui.js +34 -14
- package/package.json +11 -9
- package/dist/src/lib/bcs.d.ts +0 -3
- package/dist/src/lib/bcs.d.ts.map +0 -1
- 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"}
|