@suilend/springsui-cli 1.0.0

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 (63) hide show
  1. package/cli/src/index.d.ts +1 -0
  2. package/cli/src/index.js +304 -0
  3. package/package.json +1 -0
  4. package/sdk/src/_generated/_dependencies/source/0x1/ascii/structs.d.ts +92 -0
  5. package/sdk/src/_generated/_dependencies/source/0x1/ascii/structs.js +289 -0
  6. package/sdk/src/_generated/_dependencies/source/0x1/index.d.ts +3 -0
  7. package/sdk/src/_generated/_dependencies/source/0x1/index.js +6 -0
  8. package/sdk/src/_generated/_dependencies/source/0x1/option/structs.d.ts +52 -0
  9. package/sdk/src/_generated/_dependencies/source/0x1/option/structs.js +180 -0
  10. package/sdk/src/_generated/_dependencies/source/0x1/string/structs.d.ts +50 -0
  11. package/sdk/src/_generated/_dependencies/source/0x1/string/structs.js +167 -0
  12. package/sdk/src/_generated/_dependencies/source/0x1/type-name/structs.d.ts +53 -0
  13. package/sdk/src/_generated/_dependencies/source/0x1/type-name/structs.js +144 -0
  14. package/sdk/src/_generated/_dependencies/source/0x2/bag/structs.d.ts +61 -0
  15. package/sdk/src/_generated/_dependencies/source/0x2/bag/structs.js +149 -0
  16. package/sdk/src/_generated/_dependencies/source/0x2/balance/structs.d.ts +88 -0
  17. package/sdk/src/_generated/_dependencies/source/0x2/balance/structs.js +291 -0
  18. package/sdk/src/_generated/_dependencies/source/0x2/coin/structs.d.ts +460 -0
  19. package/sdk/src/_generated/_dependencies/source/0x2/coin/structs.js +1045 -0
  20. package/sdk/src/_generated/_dependencies/source/0x2/index.d.ts +3 -0
  21. package/sdk/src/_generated/_dependencies/source/0x2/index.js +6 -0
  22. package/sdk/src/_generated/_dependencies/source/0x2/object/structs.d.ts +92 -0
  23. package/sdk/src/_generated/_dependencies/source/0x2/object/structs.js +270 -0
  24. package/sdk/src/_generated/_dependencies/source/0x2/sui/structs.d.ts +46 -0
  25. package/sdk/src/_generated/_dependencies/source/0x2/sui/structs.js +142 -0
  26. package/sdk/src/_generated/_dependencies/source/0x2/table/structs.d.ts +61 -0
  27. package/sdk/src/_generated/_dependencies/source/0x2/table/structs.js +163 -0
  28. package/sdk/src/_generated/_dependencies/source/0x2/url/structs.d.ts +53 -0
  29. package/sdk/src/_generated/_dependencies/source/0x2/url/structs.js +143 -0
  30. package/sdk/src/_generated/_dependencies/source/0x2/vec-map/structs.d.ts +111 -0
  31. package/sdk/src/_generated/_dependencies/source/0x2/vec-map/structs.js +325 -0
  32. package/sdk/src/_generated/_dependencies/source/0x3/index.d.ts +3 -0
  33. package/sdk/src/_generated/_dependencies/source/0x3/index.js +6 -0
  34. package/sdk/src/_generated/_dependencies/source/0x3/staking-pool/structs.d.ts +487 -0
  35. package/sdk/src/_generated/_dependencies/source/0x3/staking-pool/structs.js +915 -0
  36. package/sdk/src/_generated/_framework/reified.d.ts +108 -0
  37. package/sdk/src/_generated/_framework/reified.js +240 -0
  38. package/sdk/src/_generated/_framework/util.d.ts +35 -0
  39. package/sdk/src/_generated/_framework/util.js +334 -0
  40. package/sdk/src/_generated/_framework/vector.d.ts +35 -0
  41. package/sdk/src/_generated/_framework/vector.js +77 -0
  42. package/sdk/src/_generated/liquid_staking/cell/structs.d.ts +54 -0
  43. package/sdk/src/_generated/liquid_staking/cell/structs.js +156 -0
  44. package/sdk/src/_generated/liquid_staking/fees/functions.d.ts +51 -0
  45. package/sdk/src/_generated/liquid_staking/fees/functions.js +130 -0
  46. package/sdk/src/_generated/liquid_staking/fees/structs.d.ts +165 -0
  47. package/sdk/src/_generated/liquid_staking/fees/structs.js +307 -0
  48. package/sdk/src/_generated/liquid_staking/index.d.ts +4 -0
  49. package/sdk/src/_generated/liquid_staking/index.js +10 -0
  50. package/sdk/src/_generated/liquid_staking/liquid-staking/functions.d.ts +88 -0
  51. package/sdk/src/_generated/liquid_staking/liquid-staking/functions.js +199 -0
  52. package/sdk/src/_generated/liquid_staking/liquid-staking/structs.d.ts +955 -0
  53. package/sdk/src/_generated/liquid_staking/liquid-staking/structs.js +1477 -0
  54. package/sdk/src/_generated/liquid_staking/storage/structs.d.ts +358 -0
  55. package/sdk/src/_generated/liquid_staking/storage/structs.js +365 -0
  56. package/sdk/src/_generated/liquid_staking/version/structs.d.ts +46 -0
  57. package/sdk/src/_generated/liquid_staking/version/structs.js +143 -0
  58. package/sdk/src/_generated/liquid_staking/weight/functions.d.ts +19 -0
  59. package/sdk/src/_generated/liquid_staking/weight/functions.js +44 -0
  60. package/sdk/src/_generated/liquid_staking/weight/structs.d.ts +205 -0
  61. package/sdk/src/_generated/liquid_staking/weight/structs.js +332 -0
  62. package/sdk/src/index.d.ts +44 -0
  63. package/sdk/src/index.js +234 -0
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.LstClient = void 0;
36
+ exports.fetchLiquidStakingInfo = fetchLiquidStakingInfo;
37
+ exports.getSpringSuiApy = getSpringSuiApy;
38
+ const reified_1 = require("./_generated/_framework/reified");
39
+ const liquid_staking_1 = require("./_generated/liquid_staking");
40
+ const functions_1 = require("./_generated/liquid_staking/fees/functions");
41
+ const generated = __importStar(require("./_generated/liquid_staking/liquid-staking/functions"));
42
+ const structs_1 = require("./_generated/liquid_staking/liquid-staking/structs");
43
+ const weightHookGenerated = __importStar(require("./_generated/liquid_staking/weight/functions"));
44
+ const structs_2 = require("./_generated/liquid_staking/weight/structs");
45
+ const SUI_SYSTEM_STATE_ID = "0x0000000000000000000000000000000000000000000000000000000000000005";
46
+ const SUILEND_VALIDATOR_ADDRESS = "0xce8e537664ba5d1d5a6a857b17bd142097138706281882be6805e17065ecde89";
47
+ const SPRING_SUI_UPGRADE_CAP_ID = "0x393ea4538463add6f405f2b1e3e6d896e17850975c772135843de26d14cd17c6";
48
+ function getLatestPackageId(client, upgradeCapId) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ var _a;
51
+ const object = yield client.getObject({
52
+ id: upgradeCapId,
53
+ options: {
54
+ showContent: true,
55
+ },
56
+ });
57
+ return ((_a = object.data) === null || _a === void 0 ? void 0 : _a.content).fields.package;
58
+ });
59
+ }
60
+ class LstClient {
61
+ static initialize(client, liquidStakingObjectInfo) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const publishedAt = yield getLatestPackageId(client, SPRING_SUI_UPGRADE_CAP_ID);
64
+ (0, liquid_staking_1.setPublishedAt)(publishedAt);
65
+ console.log(`Initialized LstClient with package ID: ${publishedAt}`);
66
+ return new LstClient(liquidStakingObjectInfo, client);
67
+ });
68
+ }
69
+ constructor(liquidStakingObject, client) {
70
+ this.liquidStakingObject = liquidStakingObject;
71
+ this.client = client;
72
+ }
73
+ getAdminCapId(address) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ var _a;
76
+ const res = (yield this.client.getOwnedObjects({
77
+ owner: address,
78
+ filter: {
79
+ StructType: `${liquid_staking_1.PACKAGE_ID}::liquid_staking::AdminCap<${this.liquidStakingObject.type}>`,
80
+ },
81
+ })).data;
82
+ if (res.length == 0) {
83
+ return null;
84
+ }
85
+ return (_a = res[0].data) === null || _a === void 0 ? void 0 : _a.objectId;
86
+ });
87
+ }
88
+ getWeightHookAdminCapId(address) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ var _a;
91
+ const res = (yield this.client.getOwnedObjects({
92
+ owner: address,
93
+ filter: {
94
+ StructType: `${liquid_staking_1.PACKAGE_ID}::weight::WeightHookAdminCap<${this.liquidStakingObject.type}>`,
95
+ },
96
+ })).data;
97
+ if (res.length == 0) {
98
+ return null;
99
+ }
100
+ return (_a = res[0].data) === null || _a === void 0 ? void 0 : _a.objectId;
101
+ });
102
+ }
103
+ // returns the lst object
104
+ mint(tx, suiCoinId) {
105
+ const [rSui] = generated.mint(tx, this.liquidStakingObject.type, {
106
+ self: this.liquidStakingObject.id,
107
+ sui: suiCoinId,
108
+ systemState: SUI_SYSTEM_STATE_ID,
109
+ });
110
+ return rSui;
111
+ }
112
+ // returns the sui coin
113
+ redeemLst(tx, lstId) {
114
+ const [sui] = generated.redeem(tx, this.liquidStakingObject.type, {
115
+ self: this.liquidStakingObject.id,
116
+ systemState: SUI_SYSTEM_STATE_ID,
117
+ lst: lstId,
118
+ });
119
+ return sui;
120
+ }
121
+ // admin functions
122
+ increaseValidatorStake(tx, adminCapId, validatorAddress, suiAmount) {
123
+ generated.increaseValidatorStake(tx, this.liquidStakingObject.type, {
124
+ self: this.liquidStakingObject.id,
125
+ adminCap: adminCapId,
126
+ systemState: SUI_SYSTEM_STATE_ID,
127
+ validatorAddress,
128
+ suiAmount: BigInt(suiAmount),
129
+ });
130
+ }
131
+ decreaseValidatorStake(tx, adminCapId, validatorAddress, maxSuiAmount) {
132
+ generated.decreaseValidatorStake(tx, this.liquidStakingObject.type, {
133
+ self: this.liquidStakingObject.id,
134
+ adminCap: adminCapId,
135
+ systemState: SUI_SYSTEM_STATE_ID,
136
+ validatorAddress,
137
+ maxSuiAmount: BigInt(maxSuiAmount),
138
+ });
139
+ }
140
+ collectFees(tx, adminCapId) {
141
+ const [sui] = generated.collectFees(tx, this.liquidStakingObject.type, {
142
+ self: this.liquidStakingObject.id,
143
+ systemState: SUI_SYSTEM_STATE_ID,
144
+ adminCap: adminCapId,
145
+ });
146
+ return sui;
147
+ }
148
+ updateFees(tx, adminCapId, feeConfigArgs) {
149
+ let [builder] = (0, functions_1.newBuilder)(tx);
150
+ if (feeConfigArgs.mintFeeBps != null) {
151
+ console.log(`Setting mint fee bps to ${feeConfigArgs.mintFeeBps}`);
152
+ builder = (0, functions_1.setSuiMintFeeBps)(tx, {
153
+ self: builder,
154
+ fee: BigInt(feeConfigArgs.mintFeeBps),
155
+ })[0];
156
+ }
157
+ if (feeConfigArgs.redeemFeeBps != null) {
158
+ console.log(`Setting redeem fee bps to ${feeConfigArgs.redeemFeeBps}`);
159
+ builder = (0, functions_1.setRedeemFeeBps)(tx, {
160
+ self: builder,
161
+ fee: BigInt(feeConfigArgs.redeemFeeBps),
162
+ })[0];
163
+ }
164
+ if (feeConfigArgs.spreadFee != null) {
165
+ builder = (0, functions_1.setSpreadFeeBps)(tx, {
166
+ self: builder,
167
+ fee: BigInt(feeConfigArgs.spreadFee),
168
+ })[0];
169
+ }
170
+ const [feeConfig] = (0, functions_1.toFeeConfig)(tx, builder);
171
+ generated.updateFees(tx, this.liquidStakingObject.type, {
172
+ self: this.liquidStakingObject.id,
173
+ adminCap: adminCapId,
174
+ feeConfig,
175
+ });
176
+ }
177
+ // weight hook functions
178
+ initializeWeightHook(tx, adminCapId) {
179
+ const [weightHook, weightHookAdminCap] = weightHookGenerated.new_(tx, this.liquidStakingObject.type, adminCapId);
180
+ tx.moveCall({
181
+ target: `0x2::transfer::public_share_object`,
182
+ typeArguments: [
183
+ `${structs_2.WeightHook.$typeName}<${this.liquidStakingObject.type}>`,
184
+ ],
185
+ arguments: [weightHook],
186
+ });
187
+ return weightHookAdminCap;
188
+ }
189
+ setValidatorAddressesAndWeights(tx, weightHookId, weightHookAdminCap, validatorAddressesAndWeights) {
190
+ const [vecMap] = tx.moveCall({
191
+ target: `0x2::vec_map::empty`,
192
+ typeArguments: ["address", "u64"],
193
+ arguments: [],
194
+ });
195
+ for (const [validatorAddress, weight,] of validatorAddressesAndWeights.entries()) {
196
+ tx.moveCall({
197
+ target: `0x2::vec_map::insert`,
198
+ typeArguments: ["address", "u64"],
199
+ arguments: [
200
+ vecMap,
201
+ tx.pure.address(validatorAddress),
202
+ tx.pure.u64(weight),
203
+ ],
204
+ });
205
+ }
206
+ weightHookGenerated.setValidatorAddressesAndWeights(tx, this.liquidStakingObject.type, {
207
+ self: weightHookId,
208
+ weightHookAdminCap,
209
+ validatorAddressesAndWeights: vecMap,
210
+ });
211
+ }
212
+ rebalance(tx, weightHookId) {
213
+ weightHookGenerated.rebalance(tx, this.liquidStakingObject.type, {
214
+ self: weightHookId,
215
+ systemState: SUI_SYSTEM_STATE_ID,
216
+ liquidStakingInfo: this.liquidStakingObject.id,
217
+ });
218
+ }
219
+ }
220
+ exports.LstClient = LstClient;
221
+ // user functions
222
+ function fetchLiquidStakingInfo(info, client) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ return structs_1.LiquidStakingInfo.fetch(client, (0, reified_1.phantom)(info.type), info.id);
225
+ });
226
+ }
227
+ // only works for sSui
228
+ function getSpringSuiApy(client) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ const res = yield client.getValidatorsApy();
231
+ const validatorApy = res.apys.find((apy) => apy.address == SUILEND_VALIDATOR_ADDRESS);
232
+ return validatorApy === null || validatorApy === void 0 ? void 0 : validatorApy.apy;
233
+ });
234
+ }