stable-layer-sdk 2.0.0 → 3.1.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.
@@ -1,24 +1,9 @@
1
1
  // src/index.ts
2
- import {
3
- coinWithBalance
4
- } from "@mysten/sui/transactions";
5
-
6
- // src/libs/constants.ts
7
- var STABLE_VAULT = "0x65f38160110cd6859d05f338ff54b4f462883bb6f87c667a65c0fb0e537410a7";
8
- var USDC_TYPE = "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC";
9
- var STABLE_LP_TYPE = "0xb75744fadcbfc174627567ca29645d0af8f6e6fd01b6f57c75a08cd3fb97c567::lake_usdc::LakeUSDC";
10
- var YUSDB_TYPE = "0xac718b4b672d7f461fe7e86847166ff9c23cadba217397f0848a95bdea1f1051::yesusdb::YesUSDB";
11
- var STABLE_LAYER_PACKAGE_ID = "0xa4a78d8d3d1df62fb81d10068142e79b0d30ad4e3f578060487e36ed9ea764da";
12
- var STABLE_VAULT_FARM_PACKAGE_ID = "0x00d31ddaa73a56abcc3e2d885ac1e1d90f9ae0e38bbef2ba2923550c8250de4d";
13
- var SAVING_TYPE = "0x38f61c75fa8407140294c84167dd57684580b55c3066883b48dedc344b1cde1e::susdb::SUSDB";
14
- var YIELD_VAULT = "0x0a7f6325253157cd437812fea0ceee9a6b96f2ec5eac410da6df39558ff3a4d1";
15
- var STABLE_REGISTRY = "0x213f4d584c0770f455bb98c94a4ee5ea9ddbc3d4ebb98a0ad6d093eb6da41642";
16
- var STABLE_VAULT_FARM_ENTITY_TYPE = `0xc1025fe014b03d33b207b5afb0ba04293be87fab438c1418a26a75c2fe05c223::stable_vault_farm::StableVaultFarmEntity<${STABLE_LP_TYPE}, ${USDC_TYPE}>`;
17
- var STABLE_VAULT_FARM = "0xe958b7d102b33bf3c09addb0e2cdff102ff2c93afe407ec5c2a541e8959a650c";
18
- var YIELD_USDB_PACKAGE_ID = "0x3dcbf82f7e3b80ed65cee596612602a6c7e78c71fd40f6455b40ad033ed04786";
19
-
20
- // src/index.ts
21
- import { getFullnodeUrl, SuiClient } from "@mysten/sui/client";
2
+ import { BucketClient } from "@bucket-protocol/sdk";
3
+ import { bcs as bcs24 } from "@mysten/sui/bcs";
4
+ import { SuiGrpcClient } from "@mysten/sui/grpc";
5
+ import { coinWithBalance, Transaction } from "@mysten/sui/transactions";
6
+ import { normalizeStructTag, SUI_CLOCK_OBJECT_ID } from "@mysten/sui/utils";
22
7
 
23
8
  // src/generated/utils/index.ts
24
9
  import { bcs, TypeTagSerializer, BcsStruct, BcsEnum, BcsTuple } from "@mysten/sui/bcs";
@@ -141,133 +126,13 @@ function stringify(val) {
141
126
  return val;
142
127
  }
143
128
 
144
- // src/generated/yield_usdb/yield_usdb.ts
145
- import { bcs as bcs8 } from "@mysten/sui/bcs";
146
-
147
- // src/generated/yield_usdb/deps/sui/object.ts
148
- import { bcs as bcs2 } from "@mysten/sui/bcs";
149
- var $moduleName = "0x2::object";
150
- var UID = new MoveStruct({ name: `${$moduleName}::UID`, fields: {
151
- id: bcs2.Address
152
- } });
153
-
154
- // src/generated/yield_usdb/deps/sui/balance.ts
155
- import { bcs as bcs3 } from "@mysten/sui/bcs";
156
- var $moduleName2 = "0x2::balance";
157
- var Balance = new MoveStruct({ name: `${$moduleName2}::Balance`, fields: {
158
- value: bcs3.u64()
159
- } });
160
- var Supply = new MoveStruct({ name: `${$moduleName2}::Supply`, fields: {
161
- value: bcs3.u64()
162
- } });
163
-
164
- // src/generated/yield_usdb/deps/sui/coin.ts
165
- var $moduleName3 = "0x2::coin";
166
- var TreasuryCap = new MoveStruct({ name: `${$moduleName3}::TreasuryCap`, fields: {
167
- id: UID,
168
- total_supply: Supply
169
- } });
170
-
171
- // src/generated/yield_usdb/deps/bucket_v2_framework/account.ts
172
- import { bcs as bcs4 } from "@mysten/sui/bcs";
173
- var $moduleName4 = "bucket_v2_framework::account";
174
- var Account = new MoveStruct({ name: `${$moduleName4}::Account`, fields: {
175
- id: UID,
176
- alias: bcs4.option(bcs4.string())
177
- } });
178
-
179
- // src/generated/yield_usdb/buffer.ts
180
- import { bcs as bcs6 } from "@mysten/sui/bcs";
181
-
182
- // src/generated/yield_usdb/deps/bucket_v2_framework/double.ts
183
- import { bcs as bcs5 } from "@mysten/sui/bcs";
184
- var $moduleName5 = "bucket_v2_framework::double";
185
- var Double = new MoveStruct({ name: `${$moduleName5}::Double`, fields: {
186
- value: bcs5.u256()
187
- } });
188
-
189
- // src/generated/yield_usdb/buffer.ts
190
- var $moduleName6 = "@local-pkg/yield_usdb.move::buffer";
191
- var Buffer = new MoveStruct({ name: `${$moduleName6}::Buffer`, fields: {
192
- balance: Balance,
193
- flow_rate: Double,
194
- timestamp: bcs6.u64()
195
- } });
196
-
197
- // src/generated/yield_usdb/deps/sui/vec_set.ts
198
- import { bcs as bcs7 } from "@mysten/sui/bcs";
199
- var $moduleName7 = "0x2::vec_set";
200
- function VecSet(...typeParameters) {
201
- return new MoveStruct({ name: `${$moduleName7}::VecSet<${typeParameters[0].name}>`, fields: {
202
- contents: bcs7.vector(typeParameters[0])
203
- } });
204
- }
205
-
206
- // src/generated/yield_usdb/yield_usdb.ts
207
- var $moduleName8 = "@local-pkg/yield_usdb.move::yield_usdb";
208
- var Created = new MoveStruct({ name: `${$moduleName8}::Created`, fields: {
209
- vault_id: bcs8.Address,
210
- max_lp_supply: bcs8.u64(),
211
- abstract_address: bcs8.Address
212
- } });
213
- var MaxSupplyUpdated = new MoveStruct({ name: `${$moduleName8}::MaxSupplyUpdated`, fields: {
214
- vault_id: bcs8.Address,
215
- previous_max_lp_supply: bcs8.u64(),
216
- current_max_lp_supply: bcs8.u64()
217
- } });
218
- var Minted = new MoveStruct({ name: `${$moduleName8}::Minted`, fields: {
219
- vault_id: bcs8.Address,
220
- usdb_amount: bcs8.u64(),
221
- lp_amount: bcs8.u64()
222
- } });
223
- var Burned = new MoveStruct({ name: `${$moduleName8}::Burned`, fields: {
224
- vault_id: bcs8.Address,
225
- lp_amount: bcs8.u64(),
226
- usdb_amount: bcs8.u64()
227
- } });
228
- var Claimed = new MoveStruct({ name: `${$moduleName8}::Claimed`, fields: {
229
- vault_id: bcs8.Address,
230
- reward_type: bcs8.string(),
231
- reward_amount: bcs8.u64()
232
- } });
233
- var Collected = new MoveStruct({ name: `${$moduleName8}::Collected`, fields: {
234
- vault_id: bcs8.Address,
235
- usdb_amount: bcs8.u64()
236
- } });
237
- var YieldVault = new MoveStruct({ name: `${$moduleName8}::YieldVault`, fields: {
238
- id: UID,
239
- max_lp_supply: bcs8.u64(),
240
- lp_treasury_cap: TreasuryCap,
241
- abstract_account: Account,
242
- buffer: Buffer,
243
- managers: VecSet(bcs8.Address),
244
- versions: VecSet(bcs8.u16())
245
- } });
246
- function release(options) {
247
- const packageAddress = options.package ?? "@local-pkg/yield_usdb.move";
248
- const argumentsTypes = [
249
- `${packageAddress}::yield_usdb::YieldVault<${options.typeArguments[0]}, ${options.typeArguments[1]}>`,
250
- `${packageAddress}::usdb::Treasury`,
251
- `${packageAddress}::saving::SavingPool<${options.typeArguments[1]}>`,
252
- "0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock"
253
- ];
254
- const parameterNames = ["vault", "treasury", "savingPool"];
255
- return (tx) => tx.moveCall({
256
- package: packageAddress,
257
- module: "yield_usdb",
258
- function: "release",
259
- arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
260
- typeArguments: options.typeArguments
261
- });
262
- }
263
-
264
129
  // src/generated/stable_layer/stable_layer.ts
265
- import { bcs as bcs15 } from "@mysten/sui/bcs";
130
+ import { bcs as bcs8 } from "@mysten/sui/bcs";
266
131
 
267
132
  // src/generated/stable_layer/deps/std/type_name.ts
268
- import { bcs as bcs9 } from "@mysten/sui/bcs";
269
- var $moduleName9 = "std::type_name";
270
- var TypeName = new MoveStruct({ name: `${$moduleName9}::TypeName`, fields: {
133
+ import { bcs as bcs2 } from "@mysten/sui/bcs";
134
+ var $moduleName = "std::type_name";
135
+ var TypeName = new MoveStruct({ name: `${$moduleName}::TypeName`, fields: {
271
136
  /**
272
137
  * String representation of the type. All types are represented using their source
273
138
  * syntax: "u8", "u64", "bool", "address", "vector", and so on for primitive types.
@@ -277,116 +142,132 @@ var TypeName = new MoveStruct({ name: `${$moduleName9}::TypeName`, fields: {
277
142
  * Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or
278
143
  * 32 depending on the Move platform)
279
144
  */
280
- name: bcs9.string()
145
+ name: bcs2.string()
281
146
  } });
282
147
 
283
148
  // src/generated/stable_layer/deps/sui/vec_map.ts
284
- import { bcs as bcs10 } from "@mysten/sui/bcs";
285
- var $moduleName10 = "0x2::vec_map";
149
+ import { bcs as bcs3 } from "@mysten/sui/bcs";
150
+ var $moduleName2 = "0x2::vec_map";
286
151
  function Entry(...typeParameters) {
287
- return new MoveStruct({ name: `${$moduleName10}::Entry<${typeParameters[0].name}, ${typeParameters[1].name}>`, fields: {
152
+ return new MoveStruct({ name: `${$moduleName2}::Entry<${typeParameters[0].name}, ${typeParameters[1].name}>`, fields: {
288
153
  key: typeParameters[0],
289
154
  value: typeParameters[1]
290
155
  } });
291
156
  }
292
157
  function VecMap(...typeParameters) {
293
- return new MoveStruct({ name: `${$moduleName10}::VecMap<${typeParameters[0].name}, ${typeParameters[1].name}>`, fields: {
294
- contents: bcs10.vector(Entry(typeParameters[0], typeParameters[1]))
158
+ return new MoveStruct({ name: `${$moduleName2}::VecMap<${typeParameters[0].name}, ${typeParameters[1].name}>`, fields: {
159
+ contents: bcs3.vector(Entry(typeParameters[0], typeParameters[1]))
295
160
  } });
296
161
  }
297
162
 
298
163
  // src/generated/stable_layer/deps/bucket_v2_framework/liability.ts
299
- import { bcs as bcs11 } from "@mysten/sui/bcs";
300
- var $moduleName11 = "bucket_v2_framework::liability";
301
- var Credit = new MoveStruct({ name: `${$moduleName11}::Credit`, fields: {
302
- value: bcs11.u64()
164
+ import { bcs as bcs4 } from "@mysten/sui/bcs";
165
+ var $moduleName3 = "bucket_v2_framework::liability";
166
+ var Credit = new MoveStruct({ name: `${$moduleName3}::Credit`, fields: {
167
+ value: bcs4.u64()
303
168
  } });
304
- var Debt = new MoveStruct({ name: `${$moduleName11}::Debt`, fields: {
305
- value: bcs11.u64()
169
+ var Debt = new MoveStruct({ name: `${$moduleName3}::Debt`, fields: {
170
+ value: bcs4.u64()
306
171
  } });
307
172
 
308
173
  // src/generated/stable_layer/deps/sui/vec_set.ts
309
- import { bcs as bcs12 } from "@mysten/sui/bcs";
310
- var $moduleName12 = "0x2::vec_set";
311
- function VecSet2(...typeParameters) {
312
- return new MoveStruct({ name: `${$moduleName12}::VecSet<${typeParameters[0].name}>`, fields: {
313
- contents: bcs12.vector(typeParameters[0])
174
+ import { bcs as bcs5 } from "@mysten/sui/bcs";
175
+ var $moduleName4 = "0x2::vec_set";
176
+ function VecSet(...typeParameters) {
177
+ return new MoveStruct({ name: `${$moduleName4}::VecSet<${typeParameters[0].name}>`, fields: {
178
+ contents: bcs5.vector(typeParameters[0])
314
179
  } });
315
180
  }
316
181
 
317
182
  // src/generated/stable_layer/deps/bucket_v2_framework/sheet.ts
318
- var $moduleName13 = "bucket_v2_framework::sheet";
319
- var Entity = new MoveTuple({ name: `${$moduleName13}::Entity`, fields: [TypeName] });
320
- var Sheet = new MoveStruct({ name: `${$moduleName13}::Sheet`, fields: {
183
+ var $moduleName5 = "bucket_v2_framework::sheet";
184
+ var Entity = new MoveTuple({ name: `${$moduleName5}::Entity`, fields: [TypeName] });
185
+ var Sheet = new MoveStruct({ name: `${$moduleName5}::Sheet`, fields: {
321
186
  credits: VecMap(Entity, Credit),
322
187
  debts: VecMap(Entity, Debt),
323
- blacklist: VecSet2(Entity)
188
+ blacklist: VecSet(Entity)
324
189
  } });
325
190
 
326
191
  // src/generated/stable_layer/deps/sui/object.ts
327
- import { bcs as bcs13 } from "@mysten/sui/bcs";
328
- var $moduleName14 = "0x2::object";
329
- var UID2 = new MoveStruct({ name: `${$moduleName14}::UID`, fields: {
330
- id: bcs13.Address
192
+ import { bcs as bcs6 } from "@mysten/sui/bcs";
193
+ var $moduleName6 = "0x2::object";
194
+ var UID = new MoveStruct({ name: `${$moduleName6}::UID`, fields: {
195
+ id: bcs6.Address
331
196
  } });
332
197
 
333
198
  // src/generated/stable_layer/deps/sui/balance.ts
334
- import { bcs as bcs14 } from "@mysten/sui/bcs";
335
- var $moduleName15 = "0x2::balance";
336
- var Supply2 = new MoveStruct({ name: `${$moduleName15}::Supply`, fields: {
337
- value: bcs14.u64()
199
+ import { bcs as bcs7 } from "@mysten/sui/bcs";
200
+ var $moduleName7 = "0x2::balance";
201
+ var Supply = new MoveStruct({ name: `${$moduleName7}::Supply`, fields: {
202
+ value: bcs7.u64()
338
203
  } });
339
204
 
340
205
  // src/generated/stable_layer/deps/sui/coin.ts
341
- var $moduleName16 = "0x2::coin";
342
- var TreasuryCap2 = new MoveStruct({ name: `${$moduleName16}::TreasuryCap`, fields: {
343
- id: UID2,
344
- total_supply: Supply2
206
+ var $moduleName8 = "0x2::coin";
207
+ var TreasuryCap = new MoveStruct({ name: `${$moduleName8}::TreasuryCap`, fields: {
208
+ id: UID,
209
+ total_supply: Supply
345
210
  } });
346
211
 
347
212
  // src/generated/stable_layer/stable_layer.ts
348
- var $moduleName17 = "@local-pkg/stable_factory.move::stable_layer";
349
- var NewStable = new MoveStruct({ name: `${$moduleName17}::NewStable`, fields: {
350
- u_type: bcs15.string(),
351
- stable_type: bcs15.string(),
352
- factory_id: bcs15.Address,
353
- factory_cap_id: bcs15.Address
354
- } });
355
- var Mint = new MoveStruct({ name: `${$moduleName17}::Mint`, fields: {
356
- u_type: bcs15.string(),
357
- stable_type: bcs15.string(),
358
- mint_amount: bcs15.u64(),
359
- farm_type: bcs15.string()
360
- } });
361
- var Burn = new MoveStruct({ name: `${$moduleName17}::Burn`, fields: {
362
- u_type: bcs15.string(),
363
- stable_type: bcs15.string(),
364
- burn_amount: bcs15.u64(),
365
- farm_types: bcs15.vector(Entity),
366
- repayment_amounts: bcs15.vector(bcs15.u64())
367
- } });
368
- var StableFactoryEntity = new MoveStruct({ name: `${$moduleName17}::StableFactoryEntity`, fields: {
369
- dummy_field: bcs15.bool()
370
- } });
371
- var StableRegistry = new MoveStruct({ name: `${$moduleName17}::StableRegistry`, fields: {
372
- id: UID2,
373
- versions: VecSet2(bcs15.u16()),
374
- total_supply: bcs15.u64()
213
+ var $moduleName9 = "@local-pkg/stable_factory.move::stable_layer";
214
+ var NewStable = new MoveStruct({ name: `${$moduleName9}::NewStable`, fields: {
215
+ u_type: bcs8.string(),
216
+ stable_type: bcs8.string(),
217
+ factory_id: bcs8.Address,
218
+ factory_cap_id: bcs8.Address
375
219
  } });
376
- var AdminCap = new MoveStruct({ name: `${$moduleName17}::AdminCap`, fields: {
377
- id: UID2
220
+ var Mint = new MoveStruct({ name: `${$moduleName9}::Mint`, fields: {
221
+ u_type: bcs8.string(),
222
+ stable_type: bcs8.string(),
223
+ mint_amount: bcs8.u64(),
224
+ farm_type: bcs8.string()
378
225
  } });
379
- var StableFactory = new MoveStruct({ name: `${$moduleName17}::StableFactory`, fields: {
380
- id: UID2,
381
- treasury_cap: TreasuryCap2,
382
- max_supply: bcs15.u64(),
226
+ var Burn = new MoveStruct({ name: `${$moduleName9}::Burn`, fields: {
227
+ u_type: bcs8.string(),
228
+ stable_type: bcs8.string(),
229
+ burn_amount: bcs8.u64(),
230
+ farm_types: bcs8.vector(Entity),
231
+ repayment_amounts: bcs8.vector(bcs8.u64())
232
+ } });
233
+ var StableFactoryEntity = new MoveStruct({ name: `${$moduleName9}::StableFactoryEntity`, fields: {
234
+ dummy_field: bcs8.bool()
235
+ } });
236
+ var StableRegistry = new MoveStruct({ name: `${$moduleName9}::StableRegistry`, fields: {
237
+ id: UID,
238
+ versions: VecSet(bcs8.u16()),
239
+ total_supply: bcs8.u64()
240
+ } });
241
+ var AdminCap = new MoveStruct({ name: `${$moduleName9}::AdminCap`, fields: {
242
+ id: UID
243
+ } });
244
+ var StableFactory = new MoveStruct({ name: `${$moduleName9}::StableFactory`, fields: {
245
+ id: UID,
246
+ treasury_cap: TreasuryCap,
247
+ max_supply: bcs8.u64(),
383
248
  sheet: Sheet,
384
- managers: VecSet2(bcs15.Address)
249
+ managers: VecSet(bcs8.Address)
385
250
  } });
386
- var FactoryCap = new MoveStruct({ name: `${$moduleName17}::FactoryCap`, fields: {
387
- id: UID2,
388
- factory_id: bcs15.Address
251
+ var FactoryCap = new MoveStruct({ name: `${$moduleName9}::FactoryCap`, fields: {
252
+ id: UID,
253
+ factory_id: bcs8.Address
389
254
  } });
255
+ function setMaxSupply(options) {
256
+ const packageAddress = options.package ?? "@local-pkg/stable_factory.move";
257
+ const argumentsTypes = [
258
+ `${packageAddress}::stable_layer::StableRegistry`,
259
+ `${packageAddress}::stable_layer::FactoryCap<${options.typeArguments[0]}, ${options.typeArguments[1]}>`,
260
+ "u64"
261
+ ];
262
+ const parameterNames = ["registry", "FactoryCap", "maxSupply"];
263
+ return (tx) => tx.moveCall({
264
+ package: packageAddress,
265
+ module: "stable_layer",
266
+ function: "set_max_supply",
267
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
268
+ typeArguments: options.typeArguments
269
+ });
270
+ }
390
271
  function mint(options) {
391
272
  const packageAddress = options.package ?? "@local-pkg/stable_factory.move";
392
273
  const argumentsTypes = [
@@ -434,19 +315,19 @@ function fulfillBurn(options) {
434
315
  }
435
316
 
436
317
  // src/generated/stable_vault_farm/stable_vault_farm.ts
437
- import { bcs as bcs23 } from "@mysten/sui/bcs";
318
+ import { bcs as bcs16 } from "@mysten/sui/bcs";
438
319
 
439
320
  // src/generated/stable_vault_farm/deps/sui/object.ts
440
- import { bcs as bcs16 } from "@mysten/sui/bcs";
441
- var $moduleName18 = "0x2::object";
442
- var UID3 = new MoveStruct({ name: `${$moduleName18}::UID`, fields: {
443
- id: bcs16.Address
321
+ import { bcs as bcs9 } from "@mysten/sui/bcs";
322
+ var $moduleName10 = "0x2::object";
323
+ var UID2 = new MoveStruct({ name: `${$moduleName10}::UID`, fields: {
324
+ id: bcs9.Address
444
325
  } });
445
326
 
446
327
  // src/generated/stable_vault_farm/deps/std/type_name.ts
447
- import { bcs as bcs17 } from "@mysten/sui/bcs";
448
- var $moduleName19 = "std::type_name";
449
- var TypeName2 = new MoveStruct({ name: `${$moduleName19}::TypeName`, fields: {
328
+ import { bcs as bcs10 } from "@mysten/sui/bcs";
329
+ var $moduleName11 = "std::type_name";
330
+ var TypeName2 = new MoveStruct({ name: `${$moduleName11}::TypeName`, fields: {
450
331
  /**
451
332
  * String representation of the type. All types are represented using their source
452
333
  * syntax: "u8", "u64", "bool", "address", "vector", and so on for primitive types.
@@ -456,90 +337,90 @@ var TypeName2 = new MoveStruct({ name: `${$moduleName19}::TypeName`, fields: {
456
337
  * Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or
457
338
  * 32 depending on the Move platform)
458
339
  */
459
- name: bcs17.string()
340
+ name: bcs10.string()
460
341
  } });
461
342
 
462
343
  // src/generated/stable_vault_farm/deps/sui/vec_map.ts
463
- import { bcs as bcs18 } from "@mysten/sui/bcs";
464
- var $moduleName20 = "0x2::vec_map";
344
+ import { bcs as bcs11 } from "@mysten/sui/bcs";
345
+ var $moduleName12 = "0x2::vec_map";
465
346
  function Entry2(...typeParameters) {
466
- return new MoveStruct({ name: `${$moduleName20}::Entry<${typeParameters[0].name}, ${typeParameters[1].name}>`, fields: {
347
+ return new MoveStruct({ name: `${$moduleName12}::Entry<${typeParameters[0].name}, ${typeParameters[1].name}>`, fields: {
467
348
  key: typeParameters[0],
468
349
  value: typeParameters[1]
469
350
  } });
470
351
  }
471
352
  function VecMap2(...typeParameters) {
472
- return new MoveStruct({ name: `${$moduleName20}::VecMap<${typeParameters[0].name}, ${typeParameters[1].name}>`, fields: {
473
- contents: bcs18.vector(Entry2(typeParameters[0], typeParameters[1]))
353
+ return new MoveStruct({ name: `${$moduleName12}::VecMap<${typeParameters[0].name}, ${typeParameters[1].name}>`, fields: {
354
+ contents: bcs11.vector(Entry2(typeParameters[0], typeParameters[1]))
474
355
  } });
475
356
  }
476
357
 
477
358
  // src/generated/stable_vault_farm/deps/bucket_v2_framework/liability.ts
478
- import { bcs as bcs19 } from "@mysten/sui/bcs";
479
- var $moduleName21 = "bucket_v2_framework::liability";
480
- var Credit2 = new MoveStruct({ name: `${$moduleName21}::Credit`, fields: {
481
- value: bcs19.u64()
359
+ import { bcs as bcs12 } from "@mysten/sui/bcs";
360
+ var $moduleName13 = "bucket_v2_framework::liability";
361
+ var Credit2 = new MoveStruct({ name: `${$moduleName13}::Credit`, fields: {
362
+ value: bcs12.u64()
482
363
  } });
483
- var Debt2 = new MoveStruct({ name: `${$moduleName21}::Debt`, fields: {
484
- value: bcs19.u64()
364
+ var Debt2 = new MoveStruct({ name: `${$moduleName13}::Debt`, fields: {
365
+ value: bcs12.u64()
485
366
  } });
486
367
 
487
368
  // src/generated/stable_vault_farm/deps/sui/vec_set.ts
488
- import { bcs as bcs20 } from "@mysten/sui/bcs";
489
- var $moduleName22 = "0x2::vec_set";
490
- function VecSet3(...typeParameters) {
491
- return new MoveStruct({ name: `${$moduleName22}::VecSet<${typeParameters[0].name}>`, fields: {
492
- contents: bcs20.vector(typeParameters[0])
369
+ import { bcs as bcs13 } from "@mysten/sui/bcs";
370
+ var $moduleName14 = "0x2::vec_set";
371
+ function VecSet2(...typeParameters) {
372
+ return new MoveStruct({ name: `${$moduleName14}::VecSet<${typeParameters[0].name}>`, fields: {
373
+ contents: bcs13.vector(typeParameters[0])
493
374
  } });
494
375
  }
495
376
 
496
377
  // src/generated/stable_vault_farm/deps/bucket_v2_framework/sheet.ts
497
- var $moduleName23 = "bucket_v2_framework::sheet";
498
- var Entity2 = new MoveTuple({ name: `${$moduleName23}::Entity`, fields: [TypeName2] });
499
- var Sheet2 = new MoveStruct({ name: `${$moduleName23}::Sheet`, fields: {
378
+ var $moduleName15 = "bucket_v2_framework::sheet";
379
+ var Entity2 = new MoveTuple({ name: `${$moduleName15}::Entity`, fields: [TypeName2] });
380
+ var Sheet2 = new MoveStruct({ name: `${$moduleName15}::Sheet`, fields: {
500
381
  credits: VecMap2(Entity2, Credit2),
501
382
  debts: VecMap2(Entity2, Debt2),
502
- blacklist: VecSet3(Entity2)
383
+ blacklist: VecSet2(Entity2)
503
384
  } });
504
385
 
505
386
  // src/generated/stable_vault_farm/deps/sui/table.ts
506
- import { bcs as bcs21 } from "@mysten/sui/bcs";
507
- var $moduleName24 = "0x2::table";
508
- var Table = new MoveStruct({ name: `${$moduleName24}::Table`, fields: {
387
+ import { bcs as bcs14 } from "@mysten/sui/bcs";
388
+ var $moduleName16 = "0x2::table";
389
+ var Table = new MoveStruct({ name: `${$moduleName16}::Table`, fields: {
509
390
  /** the ID of this table */
510
- id: UID3,
391
+ id: UID2,
511
392
  /** the number of key-value pairs in the table */
512
- size: bcs21.u64()
393
+ size: bcs14.u64()
513
394
  } });
514
395
 
515
396
  // src/generated/stable_vault_farm/deps/sui/balance.ts
516
- import { bcs as bcs22 } from "@mysten/sui/bcs";
517
- var $moduleName25 = "0x2::balance";
518
- var Balance2 = new MoveStruct({ name: `${$moduleName25}::Balance`, fields: {
519
- value: bcs22.u64()
397
+ import { bcs as bcs15 } from "@mysten/sui/bcs";
398
+ var $moduleName17 = "0x2::balance";
399
+ var Balance = new MoveStruct({ name: `${$moduleName17}::Balance`, fields: {
400
+ value: bcs15.u64()
520
401
  } });
521
402
 
522
403
  // src/generated/stable_vault_farm/stable_vault_farm.ts
523
- var $moduleName26 = "@local-pkg/stable_vault_farm.move::stable_vault_farm";
524
- var Claim = new MoveStruct({ name: `${$moduleName26}::Claim`, fields: {
525
- reward_type: bcs23.string(),
526
- amount: bcs23.u64(),
527
- claimer: bcs23.Address
404
+ var $moduleName18 = "@local-pkg/stable_vault_farm.move::stable_vault_farm";
405
+ var Claim = new MoveStruct({ name: `${$moduleName18}::Claim`, fields: {
406
+ reward_type: bcs16.string(),
407
+ amount: bcs16.u64(),
408
+ claimer: bcs16.Address
528
409
  } });
529
- var StableVaultFarmEntity = new MoveStruct({ name: `${$moduleName26}::StableVaultFarmEntity`, fields: {
530
- dummy_field: bcs23.bool()
410
+ var StableVaultFarmEntity = new MoveStruct({ name: `${$moduleName18}::StableVaultFarmEntity`, fields: {
411
+ dummy_field: bcs16.bool()
531
412
  } });
532
- var StableVaultFarmWitness = new MoveStruct({ name: `${$moduleName26}::StableVaultFarmWitness`, fields: {
533
- dummy_field: bcs23.bool()
413
+ var StableVaultFarmWitness = new MoveStruct({ name: `${$moduleName18}::StableVaultFarmWitness`, fields: {
414
+ dummy_field: bcs16.bool()
534
415
  } });
535
- var StableVaultFarm = new MoveStruct({ name: `${$moduleName26}::StableVaultFarm`, fields: {
536
- id: UID3,
416
+ var StableVaultFarm = new MoveStruct({ name: `${$moduleName18}::StableVaultFarm`, fields: {
417
+ id: UID2,
537
418
  sheet: Sheet2,
538
419
  yield_table: Table,
539
- u_surplus: Balance2
420
+ u_surplus: Balance
540
421
  } });
541
- var AdminCap2 = new MoveStruct({ name: `${$moduleName26}::AdminCap`, fields: {
542
- id: UID3
422
+ var AdminCap2 = new MoveStruct({ name: `${$moduleName18}::AdminCap`, fields: {
423
+ id: UID2
543
424
  } });
544
425
  function receive(options) {
545
426
  const packageAddress = options.package ?? "@local-pkg/stable_vault_farm.move";
@@ -606,13 +487,248 @@ function claim(options) {
606
487
  });
607
488
  }
608
489
 
490
+ // src/generated/yield_usdb/yield_usdb.ts
491
+ import { bcs as bcs23 } from "@mysten/sui/bcs";
492
+
493
+ // src/generated/yield_usdb/deps/sui/object.ts
494
+ import { bcs as bcs17 } from "@mysten/sui/bcs";
495
+ var $moduleName19 = "0x2::object";
496
+ var UID3 = new MoveStruct({ name: `${$moduleName19}::UID`, fields: {
497
+ id: bcs17.Address
498
+ } });
499
+
500
+ // src/generated/yield_usdb/deps/sui/balance.ts
501
+ import { bcs as bcs18 } from "@mysten/sui/bcs";
502
+ var $moduleName20 = "0x2::balance";
503
+ var Balance2 = new MoveStruct({ name: `${$moduleName20}::Balance`, fields: {
504
+ value: bcs18.u64()
505
+ } });
506
+ var Supply2 = new MoveStruct({ name: `${$moduleName20}::Supply`, fields: {
507
+ value: bcs18.u64()
508
+ } });
509
+
510
+ // src/generated/yield_usdb/deps/sui/coin.ts
511
+ var $moduleName21 = "0x2::coin";
512
+ var TreasuryCap2 = new MoveStruct({ name: `${$moduleName21}::TreasuryCap`, fields: {
513
+ id: UID3,
514
+ total_supply: Supply2
515
+ } });
516
+
517
+ // src/generated/yield_usdb/deps/bucket_v2_framework/account.ts
518
+ import { bcs as bcs19 } from "@mysten/sui/bcs";
519
+ var $moduleName22 = "bucket_v2_framework::account";
520
+ var Account = new MoveStruct({ name: `${$moduleName22}::Account`, fields: {
521
+ id: UID3,
522
+ alias: bcs19.option(bcs19.string())
523
+ } });
524
+
525
+ // src/generated/yield_usdb/buffer.ts
526
+ import { bcs as bcs21 } from "@mysten/sui/bcs";
527
+
528
+ // src/generated/yield_usdb/deps/bucket_v2_framework/double.ts
529
+ import { bcs as bcs20 } from "@mysten/sui/bcs";
530
+ var $moduleName23 = "bucket_v2_framework::double";
531
+ var Double = new MoveStruct({ name: `${$moduleName23}::Double`, fields: {
532
+ value: bcs20.u256()
533
+ } });
534
+
535
+ // src/generated/yield_usdb/buffer.ts
536
+ var $moduleName24 = "@local-pkg/yield_usdb.move::buffer";
537
+ var Buffer = new MoveStruct({ name: `${$moduleName24}::Buffer`, fields: {
538
+ balance: Balance2,
539
+ flow_rate: Double,
540
+ timestamp: bcs21.u64()
541
+ } });
542
+
543
+ // src/generated/yield_usdb/deps/sui/vec_set.ts
544
+ import { bcs as bcs22 } from "@mysten/sui/bcs";
545
+ var $moduleName25 = "0x2::vec_set";
546
+ function VecSet3(...typeParameters) {
547
+ return new MoveStruct({ name: `${$moduleName25}::VecSet<${typeParameters[0].name}>`, fields: {
548
+ contents: bcs22.vector(typeParameters[0])
549
+ } });
550
+ }
551
+
552
+ // src/generated/yield_usdb/yield_usdb.ts
553
+ var $moduleName26 = "@local-pkg/yield_usdb.move::yield_usdb";
554
+ var Created = new MoveStruct({ name: `${$moduleName26}::Created`, fields: {
555
+ vault_id: bcs23.Address,
556
+ max_lp_supply: bcs23.u64(),
557
+ abstract_address: bcs23.Address
558
+ } });
559
+ var MaxSupplyUpdated = new MoveStruct({ name: `${$moduleName26}::MaxSupplyUpdated`, fields: {
560
+ vault_id: bcs23.Address,
561
+ previous_max_lp_supply: bcs23.u64(),
562
+ current_max_lp_supply: bcs23.u64()
563
+ } });
564
+ var Minted = new MoveStruct({ name: `${$moduleName26}::Minted`, fields: {
565
+ vault_id: bcs23.Address,
566
+ usdb_amount: bcs23.u64(),
567
+ lp_amount: bcs23.u64()
568
+ } });
569
+ var Burned = new MoveStruct({ name: `${$moduleName26}::Burned`, fields: {
570
+ vault_id: bcs23.Address,
571
+ lp_amount: bcs23.u64(),
572
+ usdb_amount: bcs23.u64()
573
+ } });
574
+ var Claimed = new MoveStruct({ name: `${$moduleName26}::Claimed`, fields: {
575
+ vault_id: bcs23.Address,
576
+ reward_type: bcs23.string(),
577
+ reward_amount: bcs23.u64()
578
+ } });
579
+ var Collected = new MoveStruct({ name: `${$moduleName26}::Collected`, fields: {
580
+ vault_id: bcs23.Address,
581
+ usdb_amount: bcs23.u64()
582
+ } });
583
+ var YieldVault = new MoveStruct({ name: `${$moduleName26}::YieldVault`, fields: {
584
+ id: UID3,
585
+ max_lp_supply: bcs23.u64(),
586
+ lp_treasury_cap: TreasuryCap2,
587
+ abstract_account: Account,
588
+ buffer: Buffer,
589
+ managers: VecSet3(bcs23.Address),
590
+ versions: VecSet3(bcs23.u16())
591
+ } });
592
+ function release(options) {
593
+ const packageAddress = options.package ?? "@local-pkg/yield_usdb.move";
594
+ const argumentsTypes = [
595
+ `${packageAddress}::yield_usdb::YieldVault<${options.typeArguments[0]}, ${options.typeArguments[1]}>`,
596
+ `${packageAddress}::usdb::Treasury`,
597
+ `${packageAddress}::saving::SavingPool<${options.typeArguments[1]}>`,
598
+ "0x0000000000000000000000000000000000000000000000000000000000000002::clock::Clock"
599
+ ];
600
+ const parameterNames = ["vault", "treasury", "savingPool"];
601
+ return (tx) => tx.moveCall({
602
+ package: packageAddress,
603
+ module: "yield_usdb",
604
+ function: "release",
605
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
606
+ typeArguments: options.typeArguments
607
+ });
608
+ }
609
+
610
+ // src/libs/constants.mainnet.ts
611
+ var STABLE_REGISTRY_MAINNET_ALT = "0x213f4d584c0770f455bb98c94a4ee5ea9ddbc3d4ebb98a0ad6d093eb6da41642";
612
+ var STABLE_LAYER_PACKAGE_MAINNET_ALT = "0x41e25d09e20cf3bc43fe321e51ef178fac419ae47b783a7161982158fc9f17d6";
613
+ var MAINNET = {
614
+ STABLE_VAULT: "0x65f38160110cd6859d05f338ff54b4f462883bb6f87c667a65c0fb0e537410a7",
615
+ USDC_TYPE: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
616
+ STABLE_LP_TYPE: "0xb75744fadcbfc174627567ca29645d0af8f6e6fd01b6f57c75a08cd3fb97c567::lake_usdc::LakeUSDC",
617
+ YUSDB_TYPE: "0xac718b4b672d7f461fe7e86847166ff9c23cadba217397f0848a95bdea1f1051::yesusdb::YesUSDB",
618
+ STABLE_LAYER_PACKAGE_ID: "0xa4a78d8d3d1df62fb81d10068142e79b0d30ad4e3f578060487e36ed9ea764da",
619
+ STABLE_REGISTRY_MAINNET_ALT,
620
+ STABLE_LAYER_PACKAGE_MAINNET_ALT,
621
+ STABLE_VAULT_FARM_PACKAGE_ID: "0x00d31ddaa73a56abcc3e2d885ac1e1d90f9ae0e38bbef2ba2923550c8250de4d",
622
+ SAVING_TYPE: "0x38f61c75fa8407140294c84167dd57684580b55c3066883b48dedc344b1cde1e::susdb::SUSDB",
623
+ YIELD_VAULT: "0x0a7f6325253157cd437812fea0ceee9a6b96f2ec5eac410da6df39558ff3a4d1",
624
+ STABLE_REGISTRY: "0x213f4d584c0770f455bb98c94a4ee5ea9ddbc3d4ebb98a0ad6d093eb6da41642",
625
+ STABLE_VAULT_FARM: "0xe958b7d102b33bf3c09addb0e2cdff102ff2c93afe407ec5c2a541e8959a650c",
626
+ YIELD_USDB_PACKAGE_ID: "0x3dcbf82f7e3b80ed65cee596612602a6c7e78c71fd40f6455b40ad033ed04786"
627
+ };
628
+ var STABLE_VAULT_FARM_ENTITY_TYPE_MAINNET = `0xc1025fe014b03d33b207b5afb0ba04293be87fab438c1418a26a75c2fe05c223::stable_vault_farm::StableVaultFarmEntity<${MAINNET.STABLE_LP_TYPE}, ${MAINNET.USDC_TYPE}>`;
629
+
630
+ // src/libs/constants.testnet.ts
631
+ var TESTNET_USDC = "0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC";
632
+ var MOCK_FARM_PACKAGE_ID_TESTNET = "0x3a55ec8fabe5f3e982908ed3a7c3065f26e83ab226eb8d3450177dbaac25878b";
633
+ var MOCK_FARM_ORIGINAL_PACKAGE_ID_TESTNET = "0x673d4118c17de717b0b90c326f8f52f87b5fff8678f513edd2ae575a55175954";
634
+ var MOCK_FARM_REGISTRY_TESTNET = "0xc3e8d2e33e36f6a4b5c199fe2dde3ba6dc29e7af8dd045c86e62d7c21f374d02";
635
+ var MOCK_USDB_TYPE_TESTNET = `${MOCK_FARM_ORIGINAL_PACKAGE_ID_TESTNET}::usdb::USDB`;
636
+ var TESTNET = {
637
+ STABLE_LAYER_PACKAGE_ID: "0x9c248c80c3a757167780f17e0c00a4d293280be7276f1b81a153f6e47d2567c9",
638
+ STABLE_REGISTRY: "0xfa0fd96e0fbc07dc6bdc23cc1ac5b4c0056f4b469b9db0a70b6ea01c14a4c7b5",
639
+ USDC_TYPE: TESTNET_USDC,
640
+ STABLE_VAULT_FARM_ENTITY_TYPE: `${MOCK_FARM_ORIGINAL_PACKAGE_ID_TESTNET}::farm::MockFarmEntity`,
641
+ MOCK_FARM_PACKAGE_ID: MOCK_FARM_PACKAGE_ID_TESTNET,
642
+ MOCK_FARM_REGISTRY: MOCK_FARM_REGISTRY_TESTNET,
643
+ MOCK_USDB_TYPE: MOCK_USDB_TYPE_TESTNET,
644
+ STABLE_VAULT: "",
645
+ STABLE_LP_TYPE: "",
646
+ YUSDB_TYPE: "",
647
+ STABLE_VAULT_FARM_PACKAGE_ID: "",
648
+ SAVING_TYPE: "",
649
+ YIELD_VAULT: "",
650
+ STABLE_VAULT_FARM: "",
651
+ YIELD_USDB_PACKAGE_ID: ""
652
+ };
653
+ var STABLE_VAULT_FARM_ENTITY_TYPE_TESTNET = TESTNET.STABLE_VAULT_FARM_ENTITY_TYPE;
654
+
655
+ // src/libs/constants.ts
656
+ function getMainnetConstants() {
657
+ return {
658
+ ...MAINNET,
659
+ STABLE_VAULT_FARM_ENTITY_TYPE: STABLE_VAULT_FARM_ENTITY_TYPE_MAINNET,
660
+ MOCK_FARM_PACKAGE_ID: "",
661
+ MOCK_FARM_REGISTRY: "",
662
+ MOCK_USDB_TYPE: ""
663
+ };
664
+ }
665
+ function getTestnetConstants() {
666
+ return {
667
+ ...TESTNET,
668
+ STABLE_VAULT_FARM_ENTITY_TYPE: STABLE_VAULT_FARM_ENTITY_TYPE_TESTNET
669
+ };
670
+ }
671
+ function getConstants(network) {
672
+ return network === "testnet" ? getTestnetConstants() : getMainnetConstants();
673
+ }
674
+ var STABLE_VAULT = MAINNET.STABLE_VAULT;
675
+ var USDC_TYPE = MAINNET.USDC_TYPE;
676
+ var STABLE_LP_TYPE = MAINNET.STABLE_LP_TYPE;
677
+ var YUSDB_TYPE = MAINNET.YUSDB_TYPE;
678
+ var STABLE_LAYER_PACKAGE_ID = MAINNET.STABLE_LAYER_PACKAGE_ID;
679
+ var STABLE_VAULT_FARM_PACKAGE_ID = MAINNET.STABLE_VAULT_FARM_PACKAGE_ID;
680
+ var SAVING_TYPE = MAINNET.SAVING_TYPE;
681
+ var YIELD_VAULT = MAINNET.YIELD_VAULT;
682
+ var STABLE_REGISTRY = MAINNET.STABLE_REGISTRY;
683
+ var STABLE_VAULT_FARM = MAINNET.STABLE_VAULT_FARM;
684
+ var YIELD_USDB_PACKAGE_ID = MAINNET.YIELD_USDB_PACKAGE_ID;
685
+ var STABLE_VAULT_FARM_ENTITY_TYPE = STABLE_VAULT_FARM_ENTITY_TYPE_MAINNET;
686
+
609
687
  // src/index.ts
610
- import { BucketClient } from "@bucket-protocol/sdk";
611
- var StableLayerClient = class {
612
- constructor(config) {
613
- this.bucketClient = new BucketClient({ network: config.network });
614
- this.suiClient = new SuiClient({ url: getFullnodeUrl(config.network) });
688
+ var StableLayerClient = class _StableLayerClient {
689
+ static getConstants(network) {
690
+ return getConstants(network);
691
+ }
692
+ getConstants() {
693
+ return getConstants(this.network);
694
+ }
695
+ static async initialize(config) {
696
+ const defaultBaseUrl = `https://fullnode.${config.network}.sui.io:443`;
697
+ const baseUrl = config.baseUrl ?? process.env.SUI_GRPC_URL ?? defaultBaseUrl;
698
+ const suiClient = config.suiClient ?? new SuiGrpcClient({
699
+ network: config.network,
700
+ baseUrl
701
+ });
702
+ const bucketClient = await BucketClient.initialize({
703
+ network: config.network,
704
+ suiClient,
705
+ configObjectId: config.configObjectId,
706
+ configOverrides: config.configOverrides
707
+ });
708
+ return new _StableLayerClient(config, bucketClient, suiClient);
709
+ }
710
+ constructor(config, bucketClient, suiClient) {
711
+ this.bucketClient = bucketClient;
712
+ this.suiClient = suiClient;
615
713
  this.sender = config.sender;
714
+ this.network = config.network;
715
+ this.mockFarmRegistryId = config.mockFarmRegistryId;
716
+ this.mockFarmPackageId = config.mockFarmPackageId;
717
+ this.mockUsdbCoinType = config.mockUsdbCoinType;
718
+ }
719
+ getMockFarmPackageId() {
720
+ const c = this.getConstants();
721
+ const id = (this.mockFarmPackageId ?? c.MOCK_FARM_PACKAGE_ID)?.trim();
722
+ if (!id) {
723
+ throw new Error(
724
+ "StableLayerClient: missing mock farm package (set mockFarmPackageId or MOCK_FARM_PACKAGE_ID in testnet constants)."
725
+ );
726
+ }
727
+ return id;
728
+ }
729
+ getMockFarmEntityType() {
730
+ const c = this.getConstants();
731
+ return c.STABLE_VAULT_FARM_ENTITY_TYPE || `${this.getMockFarmPackageId()}::farm::MockFarmEntity`;
616
732
  }
617
733
  async buildMintTx({
618
734
  tx,
@@ -622,42 +738,69 @@ var StableLayerClient = class {
622
738
  autoTransfer = true
623
739
  }) {
624
740
  tx.setSender(sender ?? this.sender);
741
+ const constants = this.getConstants();
742
+ if (this.network === "testnet") {
743
+ const farmRegistry = this.mockFarmRegistryId ?? constants.MOCK_FARM_REGISTRY;
744
+ const pkg = this.getMockFarmPackageId();
745
+ if (!farmRegistry) {
746
+ throw new Error(
747
+ "buildMintTx (testnet): missing mock farm registry (mockFarmRegistryId or MOCK_FARM_REGISTRY)."
748
+ );
749
+ }
750
+ const stableTag = normalizeStructTag(stableCoinType);
751
+ const usdTag = normalizeStructTag(constants.USDC_TYPE);
752
+ const farmEntityTag = normalizeStructTag(this.getMockFarmEntityType());
753
+ const [stableCoin2, loan2] = mint({
754
+ package: constants.STABLE_LAYER_PACKAGE_ID,
755
+ arguments: {
756
+ registry: constants.STABLE_REGISTRY,
757
+ uCoin: usdcCoin
758
+ },
759
+ typeArguments: [stableTag, usdTag, farmEntityTag]
760
+ })(tx);
761
+ tx.moveCall({
762
+ target: `${pkg}::farm::receive`,
763
+ typeArguments: [stableTag, usdTag],
764
+ arguments: [tx.object(farmRegistry), loan2, tx.object(SUI_CLOCK_OBJECT_ID)]
765
+ });
766
+ if (autoTransfer) {
767
+ tx.transferObjects([stableCoin2], sender ?? this.sender);
768
+ return;
769
+ }
770
+ return stableCoin2;
771
+ }
625
772
  const [stableCoin, loan] = mint({
626
- package: STABLE_LAYER_PACKAGE_ID,
773
+ package: constants.STABLE_LAYER_PACKAGE_ID,
627
774
  arguments: {
628
- registry: STABLE_REGISTRY,
775
+ registry: constants.STABLE_REGISTRY,
629
776
  uCoin: usdcCoin
630
777
  },
631
- typeArguments: [
632
- stableCoinType,
633
- USDC_TYPE,
634
- STABLE_VAULT_FARM_ENTITY_TYPE
635
- ]
778
+ typeArguments: [stableCoinType, constants.USDC_TYPE, constants.STABLE_VAULT_FARM_ENTITY_TYPE]
636
779
  })(tx);
637
780
  const [uPrice] = await this.bucketClient.aggregatePrices(tx, {
638
- coinTypes: [USDC_TYPE]
781
+ coinTypes: [constants.USDC_TYPE]
639
782
  });
640
783
  const depositResponse = receive({
641
- package: STABLE_VAULT_FARM_PACKAGE_ID,
784
+ package: constants.STABLE_VAULT_FARM_PACKAGE_ID,
642
785
  typeArguments: [
643
- STABLE_LP_TYPE,
644
- USDC_TYPE,
786
+ constants.STABLE_LP_TYPE,
787
+ constants.USDC_TYPE,
645
788
  stableCoinType,
646
- YUSDB_TYPE,
647
- SAVING_TYPE
789
+ constants.YUSDB_TYPE,
790
+ constants.SAVING_TYPE
648
791
  ],
649
792
  arguments: {
650
- farm: STABLE_VAULT_FARM,
793
+ farm: constants.STABLE_VAULT_FARM,
651
794
  loan,
652
- stableVault: STABLE_VAULT,
653
- usdbTreasury: this.bucketClient.treasury(tx),
654
- psmPool: this.getBucketPSMPool(tx),
655
- savingPool: this.getBucketSavingPool(tx),
656
- yieldVault: YIELD_VAULT,
795
+ stableVault: constants.STABLE_VAULT,
796
+ usdbTreasury: await Promise.resolve(this.bucketClient.treasury(tx)),
797
+ psmPool: await this.getBucketPSMPool(tx),
798
+ savingPool: await this.getBucketSavingPool(tx),
799
+ yieldVault: constants.YIELD_VAULT,
657
800
  uPrice
658
801
  }
659
802
  })(tx);
660
- this.checkResponse({ tx, response: depositResponse, type: "deposit" });
803
+ await this.checkResponse({ tx, response: depositResponse, type: "deposit" });
661
804
  if (autoTransfer) {
662
805
  tx.transferObjects([stableCoin], sender ?? this.sender);
663
806
  return;
@@ -682,50 +825,88 @@ var StableLayerClient = class {
682
825
  (await this.suiClient.getBalance({
683
826
  owner: sender ?? this.sender,
684
827
  coinType: stableCoinType
685
- })).totalBalance
828
+ })).balance.balance
686
829
  ) : amount,
687
830
  type: stableCoinType
688
831
  });
689
- this.releaseRewards(tx);
832
+ const constants = this.getConstants();
833
+ if (this.network === "testnet") {
834
+ const farmRegistry = this.mockFarmRegistryId ?? constants.MOCK_FARM_REGISTRY;
835
+ const pkg = this.getMockFarmPackageId();
836
+ if (!farmRegistry) {
837
+ throw new Error(
838
+ "buildBurnTx (testnet): missing mock farm registry (mockFarmRegistryId or MOCK_FARM_REGISTRY)."
839
+ );
840
+ }
841
+ const stableTag = normalizeStructTag(stableCoinType);
842
+ const usdTag = normalizeStructTag(constants.USDC_TYPE);
843
+ const burnRequest2 = requestBurn({
844
+ package: constants.STABLE_LAYER_PACKAGE_ID,
845
+ arguments: {
846
+ registry: constants.STABLE_REGISTRY,
847
+ stableCoin: btcUsdCoin
848
+ },
849
+ typeArguments: [stableTag, usdTag]
850
+ })(tx);
851
+ tx.moveCall({
852
+ target: `${pkg}::farm::pay`,
853
+ typeArguments: [stableTag, usdTag],
854
+ arguments: [tx.object(farmRegistry), tx.object(SUI_CLOCK_OBJECT_ID), burnRequest2]
855
+ });
856
+ const usdcCoin2 = fulfillBurn({
857
+ package: constants.STABLE_LAYER_PACKAGE_ID,
858
+ arguments: {
859
+ registry: constants.STABLE_REGISTRY,
860
+ burnRequest: burnRequest2
861
+ },
862
+ typeArguments: [stableTag, usdTag]
863
+ })(tx);
864
+ if (autoTransfer) {
865
+ tx.transferObjects([usdcCoin2], sender ?? this.sender);
866
+ return;
867
+ }
868
+ return usdcCoin2;
869
+ }
870
+ await this.releaseRewards(tx);
690
871
  const burnRequest = requestBurn({
691
- package: STABLE_LAYER_PACKAGE_ID,
872
+ package: constants.STABLE_LAYER_PACKAGE_ID,
692
873
  arguments: {
693
- registry: STABLE_REGISTRY,
874
+ registry: constants.STABLE_REGISTRY,
694
875
  stableCoin: btcUsdCoin
695
876
  },
696
- typeArguments: [stableCoinType, USDC_TYPE]
877
+ typeArguments: [stableCoinType, constants.USDC_TYPE]
697
878
  })(tx);
698
879
  const [uPrice] = await this.bucketClient.aggregatePrices(tx, {
699
- coinTypes: [USDC_TYPE]
880
+ coinTypes: [constants.USDC_TYPE]
700
881
  });
701
882
  const withdrawResponse = pay({
702
- package: STABLE_VAULT_FARM_PACKAGE_ID,
883
+ package: constants.STABLE_VAULT_FARM_PACKAGE_ID,
703
884
  arguments: {
704
- farm: STABLE_VAULT_FARM,
885
+ farm: constants.STABLE_VAULT_FARM,
705
886
  request: burnRequest,
706
- stableVault: STABLE_VAULT,
707
- usdbTreasury: this.bucketClient.treasury(tx),
708
- psmPool: this.getBucketPSMPool(tx),
709
- savingPool: this.getBucketSavingPool(tx),
710
- yieldVault: YIELD_VAULT,
887
+ stableVault: constants.STABLE_VAULT,
888
+ usdbTreasury: await Promise.resolve(this.bucketClient.treasury(tx)),
889
+ psmPool: await this.getBucketPSMPool(tx),
890
+ savingPool: await this.getBucketSavingPool(tx),
891
+ yieldVault: constants.YIELD_VAULT,
711
892
  uPrice
712
893
  },
713
894
  typeArguments: [
714
- STABLE_LP_TYPE,
715
- USDC_TYPE,
895
+ constants.STABLE_LP_TYPE,
896
+ constants.USDC_TYPE,
716
897
  stableCoinType,
717
- YUSDB_TYPE,
718
- SAVING_TYPE
898
+ constants.YUSDB_TYPE,
899
+ constants.SAVING_TYPE
719
900
  ]
720
901
  })(tx);
721
- this.checkResponse({ tx, response: withdrawResponse, type: "withdraw" });
902
+ await this.checkResponse({ tx, response: withdrawResponse, type: "withdraw" });
722
903
  const usdcCoin = fulfillBurn({
723
- package: STABLE_LAYER_PACKAGE_ID,
904
+ package: constants.STABLE_LAYER_PACKAGE_ID,
724
905
  arguments: {
725
- registry: STABLE_REGISTRY,
906
+ registry: constants.STABLE_REGISTRY,
726
907
  burnRequest
727
908
  },
728
- typeArguments: [stableCoinType, USDC_TYPE]
909
+ typeArguments: [stableCoinType, constants.USDC_TYPE]
729
910
  })(tx);
730
911
  if (autoTransfer) {
731
912
  tx.transferObjects([usdcCoin], sender ?? this.sender);
@@ -741,26 +922,53 @@ var StableLayerClient = class {
741
922
  autoTransfer = true
742
923
  }) {
743
924
  tx.setSender(sender ?? this.sender);
744
- this.releaseRewards(tx);
925
+ if (this.network === "testnet") {
926
+ const constants2 = this.getConstants();
927
+ const farmRegistry = this.mockFarmRegistryId ?? constants2.MOCK_FARM_REGISTRY;
928
+ const pkg = this.getMockFarmPackageId();
929
+ if (!farmRegistry) {
930
+ throw new Error(
931
+ "buildClaimTx (testnet): missing mock farm registry (mockFarmRegistryId or MOCK_FARM_REGISTRY)."
932
+ );
933
+ }
934
+ const stableTag = normalizeStructTag(stableCoinType);
935
+ const usdTag = normalizeStructTag(constants2.USDC_TYPE);
936
+ const rewardCoin2 = tx.moveCall({
937
+ target: `${pkg}::farm::claim`,
938
+ typeArguments: [stableTag, usdTag],
939
+ arguments: [
940
+ tx.object(farmRegistry),
941
+ tx.object(constants2.STABLE_REGISTRY),
942
+ tx.object(SUI_CLOCK_OBJECT_ID)
943
+ ]
944
+ });
945
+ if (autoTransfer) {
946
+ tx.transferObjects([rewardCoin2], sender ?? this.sender);
947
+ return;
948
+ }
949
+ return rewardCoin2;
950
+ }
951
+ await this.releaseRewards(tx);
952
+ const constants = this.getConstants();
745
953
  const [rewardCoin, withdrawResponse] = claim({
746
- package: STABLE_VAULT_FARM_PACKAGE_ID,
954
+ package: constants.STABLE_VAULT_FARM_PACKAGE_ID,
747
955
  arguments: {
748
- stableRegistry: STABLE_REGISTRY,
749
- farm: STABLE_VAULT_FARM,
750
- stableVault: STABLE_VAULT,
751
- usdbTreasury: this.bucketClient.treasury(tx),
752
- savingPool: this.getBucketSavingPool(tx),
753
- yieldVault: YIELD_VAULT
956
+ stableRegistry: constants.STABLE_REGISTRY,
957
+ farm: constants.STABLE_VAULT_FARM,
958
+ stableVault: constants.STABLE_VAULT,
959
+ usdbTreasury: await Promise.resolve(this.bucketClient.treasury(tx)),
960
+ savingPool: await this.getBucketSavingPool(tx),
961
+ yieldVault: constants.YIELD_VAULT
754
962
  },
755
963
  typeArguments: [
756
- STABLE_LP_TYPE,
757
- USDC_TYPE,
964
+ constants.STABLE_LP_TYPE,
965
+ constants.USDC_TYPE,
758
966
  stableCoinType,
759
- YUSDB_TYPE,
760
- SAVING_TYPE
967
+ constants.YUSDB_TYPE,
968
+ constants.SAVING_TYPE
761
969
  ]
762
970
  })(tx);
763
- this.checkResponse({ tx, response: withdrawResponse, type: "withdraw" });
971
+ await this.checkResponse({ tx, response: withdrawResponse, type: "withdraw" });
764
972
  if (autoTransfer) {
765
973
  tx.transferObjects([rewardCoin], sender ?? this.sender);
766
974
  return;
@@ -768,75 +976,152 @@ var StableLayerClient = class {
768
976
  return rewardCoin;
769
977
  }
770
978
  }
979
+ async getClaimRewardUsdbAmount({
980
+ stableCoinType,
981
+ sender
982
+ }) {
983
+ const tx = new Transaction();
984
+ await this.buildClaimTx({
985
+ tx,
986
+ stableCoinType,
987
+ sender,
988
+ autoTransfer: true
989
+ });
990
+ const usdbType = this.network === "testnet" ? normalizeStructTag(this.mockUsdbCoinType ?? (this.getConstants().MOCK_USDB_TYPE || `${this.getMockFarmPackageId()}::usdb::USDB`)) : normalizeStructTag(await this.bucketClient.getUsdbCoinType());
991
+ const res = await this.suiClient.simulateTransaction({
992
+ transaction: tx,
993
+ include: { balanceChanges: true }
994
+ });
995
+ if (res.$kind !== "Transaction") {
996
+ throw new Error(
997
+ "StableLayerClient.getClaimRewardUsdbAmount: dry-run did not succeed; cannot infer claimable USDB."
998
+ );
999
+ }
1000
+ const changes = res.Transaction?.balanceChanges ?? [];
1001
+ const addr = sender.toLowerCase();
1002
+ let sum = 0n;
1003
+ for (const bc of changes) {
1004
+ if (bc.address.toLowerCase() !== addr) continue;
1005
+ if (normalizeStructTag(bc.coinType) !== usdbType) continue;
1006
+ const amt = BigInt(bc.amount);
1007
+ if (amt > 0n) sum += amt;
1008
+ }
1009
+ return sum;
1010
+ }
1011
+ buildSetMaxSupplyTx({
1012
+ tx,
1013
+ registry,
1014
+ factoryCapId,
1015
+ maxSupply,
1016
+ stableCoinType,
1017
+ usdCoinType,
1018
+ sender
1019
+ }) {
1020
+ tx.setSender(sender ?? this.sender);
1021
+ const constants = this.getConstants();
1022
+ setMaxSupply({
1023
+ package: constants.STABLE_LAYER_PACKAGE_ID,
1024
+ arguments: {
1025
+ registry,
1026
+ FactoryCap: factoryCapId,
1027
+ maxSupply
1028
+ },
1029
+ typeArguments: [stableCoinType, usdCoinType]
1030
+ })(tx);
1031
+ }
771
1032
  async getTotalSupply() {
1033
+ const constants = this.getConstants();
772
1034
  const result = await this.suiClient.getObject({
773
- id: STABLE_REGISTRY,
774
- options: {
775
- showContent: true
776
- }
1035
+ objectId: constants.STABLE_REGISTRY,
1036
+ include: { json: true }
777
1037
  });
778
- const content = result.data?.content;
779
- return content?.fields?.total_supply;
1038
+ const json = result.object?.json;
1039
+ return json?.total_supply ?? void 0;
780
1040
  }
781
1041
  async getTotalSupplyByCoinType(stableCoinType) {
782
- const result = await this.suiClient.getDynamicFieldObject({
783
- parentId: STABLE_REGISTRY,
1042
+ const TypeName3 = bcs24.struct("TypeName", { name: bcs24.string() });
1043
+ const nameBcs = TypeName3.serialize({ name: stableCoinType.slice(2) }).toBytes();
1044
+ const constants = this.getConstants();
1045
+ const result = await this.suiClient.core.getDynamicObjectField({
1046
+ parentId: constants.STABLE_REGISTRY,
784
1047
  name: {
785
1048
  type: "0x1::type_name::TypeName",
786
- value: {
787
- name: stableCoinType.slice(2)
788
- }
789
- }
1049
+ bcs: nameBcs
1050
+ },
1051
+ include: { json: true }
790
1052
  });
791
- const content = result.data?.content;
792
- return content?.fields?.treasury_cap?.fields?.total_supply?.fields?.value;
1053
+ const json = result.object?.json;
1054
+ return json?.treasury_cap?.total_supply?.value ?? void 0;
793
1055
  }
794
- getBucketSavingPool(tx) {
795
- return this.bucketClient.savingPoolObj(tx, {
796
- lpType: SAVING_TYPE
797
- });
1056
+ async getBucketSavingPool(tx) {
1057
+ return Promise.resolve(
1058
+ this.bucketClient.savingPoolObj(tx, { lpType: this.getConstants().SAVING_TYPE })
1059
+ );
798
1060
  }
799
- getBucketPSMPool(tx) {
800
- return this.bucketClient.psmPoolObj(tx, {
801
- coinType: USDC_TYPE
802
- });
1061
+ async getBucketPSMPool(tx) {
1062
+ return Promise.resolve(
1063
+ this.bucketClient.psmPoolObj(tx, { coinType: this.getConstants().USDC_TYPE })
1064
+ );
803
1065
  }
804
- checkResponse({
1066
+ async checkResponse({
805
1067
  tx,
806
1068
  response,
807
1069
  type
808
1070
  }) {
1071
+ const lpType = this.getConstants().SAVING_TYPE;
809
1072
  if (type === "deposit") {
810
- return this.bucketClient.checkDepositResponse(tx, {
811
- lpType: SAVING_TYPE,
812
- depositResponse: response
813
- });
1073
+ return Promise.resolve(
1074
+ this.bucketClient.checkDepositResponse(tx, {
1075
+ lpType,
1076
+ depositResponse: response
1077
+ })
1078
+ );
814
1079
  } else {
815
- return this.bucketClient.checkWithdrawResponse(tx, {
816
- lpType: SAVING_TYPE,
817
- withdrawResponse: response
818
- });
1080
+ return Promise.resolve(
1081
+ this.bucketClient.checkWithdrawResponse(tx, {
1082
+ lpType,
1083
+ withdrawResponse: response
1084
+ })
1085
+ );
819
1086
  }
820
1087
  }
821
- releaseRewards(tx) {
1088
+ async releaseRewards(tx) {
1089
+ const constants = this.getConstants();
822
1090
  const depositResponse = release({
823
- package: YIELD_USDB_PACKAGE_ID,
1091
+ package: constants.YIELD_USDB_PACKAGE_ID,
824
1092
  arguments: {
825
- vault: YIELD_VAULT,
826
- treasury: this.bucketClient.treasury(tx),
827
- savingPool: this.bucketClient.savingPoolObj(tx, {
828
- lpType: SAVING_TYPE
829
- })
1093
+ vault: constants.YIELD_VAULT,
1094
+ treasury: await Promise.resolve(this.bucketClient.treasury(tx)),
1095
+ savingPool: await Promise.resolve(
1096
+ this.bucketClient.savingPoolObj(tx, { lpType: constants.SAVING_TYPE })
1097
+ )
830
1098
  },
831
- typeArguments: [YUSDB_TYPE, SAVING_TYPE]
1099
+ typeArguments: [constants.YUSDB_TYPE, constants.SAVING_TYPE]
832
1100
  })(tx);
833
- this.bucketClient.checkDepositResponse(tx, {
834
- depositResponse,
835
- lpType: SAVING_TYPE
836
- });
1101
+ await Promise.resolve(
1102
+ this.bucketClient.checkDepositResponse(tx, {
1103
+ depositResponse,
1104
+ lpType: constants.SAVING_TYPE
1105
+ })
1106
+ );
837
1107
  }
838
1108
  };
839
1109
  export {
840
- StableLayerClient
1110
+ SAVING_TYPE,
1111
+ STABLE_LAYER_PACKAGE_ID,
1112
+ STABLE_LAYER_PACKAGE_MAINNET_ALT,
1113
+ STABLE_LP_TYPE,
1114
+ STABLE_REGISTRY,
1115
+ STABLE_REGISTRY_MAINNET_ALT,
1116
+ STABLE_VAULT,
1117
+ STABLE_VAULT_FARM,
1118
+ STABLE_VAULT_FARM_ENTITY_TYPE,
1119
+ STABLE_VAULT_FARM_PACKAGE_ID,
1120
+ StableLayerClient,
1121
+ USDC_TYPE,
1122
+ YIELD_USDB_PACKAGE_ID,
1123
+ YIELD_VAULT,
1124
+ YUSDB_TYPE,
1125
+ getConstants
841
1126
  };
842
1127
  //# sourceMappingURL=index.mjs.map