@suilend/sdk 1.0.1 → 1.0.3

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/core/client.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { SuiClient } from "@mysten/sui.js/client";
2
2
  import { TransactionBlock, TransactionObjectArgument, TransactionResult } from "@mysten/sui.js/transactions";
3
3
  import { SuiPriceServiceConnection, SuiPythClient } from "../pyth-sdk";
4
- import { AddPoolRewardArgs, AddReserveArgs, BorrowArgs, CancelPoolRewardArgs, ClaimRewardsAndDepositArgs, ClaimRewardsArgs, CreateRateLimiterConfigArgs, CreateReserveConfigArgs, DepositCtokensIntoObligationArgs, DepositLiquidityAndMintCtokensArgs, LiquidateArgs, ObjectArg, PhantomReified, RefreshReservePriceArgs, RepayArgs, Side, UpdateRateLimiterConfigArgs, UpdateReserveConfigArgs, WithdrawCtokensArgs } from "./types";
4
+ import { AddPoolRewardArgs, AddReserveArgs, BorrowArgs, CancelPoolRewardArgs, ClaimRewardsAndDepositArgs, ClaimRewardsArgs, ClosePoolRewardArgs, CreateRateLimiterConfigArgs, CreateReserveConfigArgs, DepositCtokensIntoObligationArgs, DepositLiquidityAndMintCtokensArgs, LiquidateArgs, MigrateArgs, ObjectArg, PhantomReified, RefreshReservePriceArgs, RepayArgs, Side, UpdateRateLimiterConfigArgs, UpdateReserveConfigArgs, WithdrawCtokensArgs } from "./types";
5
5
  interface Deps {
6
6
  phantom: (phantomType: string) => PhantomReified<string>;
7
7
  PACKAGE_ID: string;
@@ -15,6 +15,7 @@ interface Deps {
15
15
  addReserve: (txb: TransactionBlock, typeArgs: [string, string], args: AddReserveArgs) => TransactionResult;
16
16
  addPoolReward: (txb: TransactionBlock, typeArgs: [string, string], args: AddPoolRewardArgs) => TransactionResult;
17
17
  cancelPoolReward: (txb: TransactionBlock, typeArgs: [string, string], args: CancelPoolRewardArgs) => TransactionResult;
18
+ closePoolReward: (txb: TransactionBlock, typeArgs: [string, string], args: ClosePoolRewardArgs) => TransactionResult;
18
19
  claimRewards: (txb: TransactionBlock, typeArgs: [string, string], args: ClaimRewardsArgs) => TransactionResult;
19
20
  claimRewardsAndDeposit: (txb: TransactionBlock, typeArgs: [string, string], args: ClaimRewardsAndDepositArgs) => TransactionResult;
20
21
  createRateLimiterConfig: (txb: TransactionBlock, args: CreateRateLimiterConfigArgs) => TransactionResult;
@@ -26,6 +27,7 @@ interface Deps {
26
27
  borrow: (txb: TransactionBlock, typeArgs: [string, string], args: BorrowArgs) => TransactionResult;
27
28
  repay: (txb: TransactionBlock, typeArgs: [string, string], args: RepayArgs) => TransactionResult;
28
29
  liquidate: (txb: TransactionBlock, typeArgs: [string, string, string], args: LiquidateArgs) => TransactionResult;
30
+ migrate: (txb: TransactionBlock, typeArg: string, args: MigrateArgs) => TransactionResult;
29
31
  }
30
32
  export declare class SuilendClient {
31
33
  lendingMarket: any;
@@ -44,6 +46,7 @@ export declare class SuilendClient {
44
46
  addReserveFunction: Deps["addReserve"];
45
47
  addPoolRewardFunction: Deps["addPoolReward"];
46
48
  cancelPoolRewardFunction: Deps["cancelPoolReward"];
49
+ closePoolRewardFunction: Deps["closePoolReward"];
47
50
  claimRewardsFunction: Deps["claimRewards"];
48
51
  claimRewardsAndDepositFunction: Deps["claimRewardsAndDeposit"];
49
52
  createRateLimiterConfigFunction: Deps["createRateLimiterConfig"];
@@ -55,7 +58,8 @@ export declare class SuilendClient {
55
58
  borrowFunction: Deps["borrow"];
56
59
  repayFunction: Deps["repay"];
57
60
  liquidateFunction: Deps["liquidate"];
58
- constructor(lendingMarket: any, client: SuiClient, { phantom, PACKAGE_ID, PUBLISHED_AT, LendingMarket, Obligation, ObligationOwnerCap, createLendingMarket, createReserveConfig, updateReserveConfig, addReserve, addPoolReward, cancelPoolReward, claimRewards, claimRewardsAndDeposit, createRateLimiterConfig, updateRateLimiterConfig, refreshReservePrice, depositLiquidityAndMintCtokens, depositCtokensIntoObligation, withdrawCtokens, borrow, repay, liquidate, }: Deps);
61
+ migrateFunction: Deps["migrate"];
62
+ constructor(lendingMarket: any, client: SuiClient, { phantom, PACKAGE_ID, PUBLISHED_AT, LendingMarket, Obligation, ObligationOwnerCap, createLendingMarket, createReserveConfig, updateReserveConfig, addReserve, addPoolReward, cancelPoolReward, closePoolReward, claimRewards, claimRewardsAndDeposit, createRateLimiterConfig, updateRateLimiterConfig, refreshReservePrice, depositLiquidityAndMintCtokens, depositCtokensIntoObligation, withdrawCtokens, borrow, repay, liquidate, migrate, }: Deps);
59
63
  static initialize(lendingMarketId: string, lendingMarketType: string, client: SuiClient, deps: Deps): Promise<SuilendClient>;
60
64
  static initializeWithLendingMarket(lendingMarket: any, client: SuiClient, deps: Deps): Promise<SuilendClient>;
61
65
  static hasBetaPass(ownerId: string, client: SuiClient): Promise<boolean>;
@@ -72,6 +76,7 @@ export declare class SuilendClient {
72
76
  createReserve(lendingMarketOwnerCapId: string, txb: TransactionBlock, pythPriceId: string, coinType: string, createReserveConfigArgs: CreateReserveConfigArgs): Promise<TransactionResult>;
73
77
  addReward(ownerId: string, lendingMarketOwnerCapId: string, reserveArrayIndex: bigint, isDepositReward: boolean, rewardCoinType: string, rewardValue: string, startTimeMs: bigint, endTimeMs: bigint, txb: TransactionBlock): Promise<TransactionResult>;
74
78
  cancelReward(lendingMarketOwnerCapId: string, reserveArrayIndex: bigint, isDepositReward: boolean, rewardIndex: bigint, rewardCoinType: string, txb: TransactionBlock): TransactionResult;
79
+ closeReward(lendingMarketOwnerCapId: string, reserveArrayIndex: bigint, isDepositReward: boolean, rewardIndex: bigint, rewardCoinType: string, txb: TransactionBlock): TransactionResult;
75
80
  claimReward(obligationOwnerCapId: string, reserveArrayIndex: bigint, rewardIndex: bigint, rewardType: string, side: Side, txb: TransactionBlock): TransactionResult;
76
81
  claimRewardsAndDeposit(obligationId: string, rewardReserveArrayIndex: bigint, rewardIndex: bigint, rewardType: string, side: Side, depositReserveArrayIndex: bigint, txb: TransactionBlock): TransactionResult;
77
82
  claimRewardsToObligation(ownerId: string, rewards: Array<{
@@ -97,5 +102,6 @@ export declare class SuilendClient {
97
102
  repayIntoObligation(ownerId: string, obligationId: string, coinType: string, value: string, txb: TransactionBlock): Promise<TransactionResult>;
98
103
  liquidateAndRedeem(txb: TransactionBlock, obligation: typeof this.Obligation, repayCoinType: string, withdrawCoinType: string, repayCoinId: any): Promise<TransactionResult>;
99
104
  liquidate(txb: TransactionBlock, obligation: typeof this.Obligation, repayCoinType: string, withdrawCoinType: string, repayCoinId: any): Promise<TransactionResult>;
105
+ migrate(txb: TransactionBlock, lendingMarketOwnerCapId: string): Promise<TransactionResult>;
100
106
  }
101
107
  export {};
package/core/client.js CHANGED
@@ -18,7 +18,7 @@ const WORMHOLE_STATE_ID = "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6e
18
18
  const PYTH_STATE_ID = "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8";
19
19
  const SUI_COINTYPE = "0x2::sui::SUI";
20
20
  class SuilendClient {
21
- constructor(lendingMarket, client, { phantom, PACKAGE_ID, PUBLISHED_AT, LendingMarket, Obligation, ObligationOwnerCap, createLendingMarket, createReserveConfig, updateReserveConfig, addReserve, addPoolReward, cancelPoolReward, claimRewards, claimRewardsAndDeposit, createRateLimiterConfig, updateRateLimiterConfig, refreshReservePrice, depositLiquidityAndMintCtokens, depositCtokensIntoObligation, withdrawCtokens, borrow, repay, liquidate, }) {
21
+ constructor(lendingMarket, client, { phantom, PACKAGE_ID, PUBLISHED_AT, LendingMarket, Obligation, ObligationOwnerCap, createLendingMarket, createReserveConfig, updateReserveConfig, addReserve, addPoolReward, cancelPoolReward, closePoolReward, claimRewards, claimRewardsAndDeposit, createRateLimiterConfig, updateRateLimiterConfig, refreshReservePrice, depositLiquidityAndMintCtokens, depositCtokensIntoObligation, withdrawCtokens, borrow, repay, liquidate, migrate, }) {
22
22
  this.lendingMarket = lendingMarket;
23
23
  this.client = client;
24
24
  this.pythClient = new src_1.SuiPythClient(client, PYTH_STATE_ID, WORMHOLE_STATE_ID);
@@ -35,6 +35,7 @@ class SuilendClient {
35
35
  this.addReserveFunction = addReserve;
36
36
  this.addPoolRewardFunction = addPoolReward;
37
37
  this.cancelPoolRewardFunction = cancelPoolReward;
38
+ this.closePoolRewardFunction = closePoolReward;
38
39
  this.claimRewardsFunction = claimRewards;
39
40
  this.claimRewardsAndDepositFunction = claimRewardsAndDeposit;
40
41
  this.createRateLimiterConfigFunction = createRateLimiterConfig;
@@ -47,6 +48,7 @@ class SuilendClient {
47
48
  this.borrowFunction = borrow;
48
49
  this.repayFunction = repay;
49
50
  this.liquidateFunction = liquidate;
51
+ this.migrateFunction = migrate;
50
52
  }
51
53
  static initialize(lendingMarketId, lendingMarketType, client, deps) {
52
54
  return __awaiter(this, void 0, void 0, function* () {
@@ -205,6 +207,16 @@ class SuilendClient {
205
207
  clock: utils_1.SUI_CLOCK_OBJECT_ID,
206
208
  });
207
209
  }
210
+ closeReward(lendingMarketOwnerCapId, reserveArrayIndex, isDepositReward, rewardIndex, rewardCoinType, txb) {
211
+ return this.closePoolRewardFunction(txb, [this.lendingMarket.$typeArgs[0], rewardCoinType], {
212
+ lendingMarketOwnerCap: lendingMarketOwnerCapId,
213
+ lendingMarket: this.lendingMarket.id,
214
+ reserveArrayIndex,
215
+ isDepositReward,
216
+ rewardIndex,
217
+ clock: utils_1.SUI_CLOCK_OBJECT_ID,
218
+ });
219
+ }
208
220
  claimReward(obligationOwnerCapId, reserveArrayIndex, rewardIndex, rewardType, side, txb) {
209
221
  return this.claimRewardsFunction(txb, [this.lendingMarket.$typeArgs[0], rewardType], {
210
222
  lendingMarket: txb.object(this.lendingMarket.id),
@@ -474,5 +486,13 @@ class SuilendClient {
474
486
  });
475
487
  });
476
488
  }
489
+ migrate(txb, lendingMarketOwnerCapId) {
490
+ return __awaiter(this, void 0, void 0, function* () {
491
+ return this.migrateFunction(txb, this.lendingMarket.$typeArgs[0], {
492
+ lendingMarket: this.lendingMarket.id,
493
+ lendingMarketOwnerCap: lendingMarketOwnerCapId,
494
+ });
495
+ });
496
+ }
477
497
  }
478
498
  exports.SuilendClient = SuilendClient;
@@ -88,7 +88,10 @@ export declare const parseLendingMarket: ({ LendingMarket, Reserve, PoolRewardMa
88
88
  }[];
89
89
  lastUpdateTimeMs: any;
90
90
  };
91
- totalDeposits: BigNumber;
91
+ availableAmountUsd: BigNumber;
92
+ borrowedAmountUsd: BigNumber;
93
+ depositedAmount: BigNumber;
94
+ depositedAmountUsd: BigNumber;
92
95
  cTokenExchangeRate: BigNumber;
93
96
  borrowAprPercent: BigNumber;
94
97
  depositAprPercent: BigNumber;
@@ -97,10 +100,14 @@ export declare const parseLendingMarket: ({ LendingMarket, Reserve, PoolRewardMa
97
100
  name: string;
98
101
  iconUrl: string | null | undefined;
99
102
  description: string;
103
+ totalDeposits: BigNumber;
100
104
  }[];
101
105
  rateLimiter: {
102
106
  config: {
103
107
  windowDuration: any;
108
+ /**
109
+ * @deprecated since version 1.0.3. Use `depositedAmountUsd` instead.
110
+ */
104
111
  maxOutflow: any;
105
112
  };
106
113
  $typeName: any;
@@ -109,7 +116,15 @@ export declare const parseLendingMarket: ({ LendingMarket, Reserve, PoolRewardMa
109
116
  curQty: any;
110
117
  remainingOutflow: BigNumber;
111
118
  };
119
+ depositedAmountUsd: BigNumber;
120
+ borrowedAmountUsd: BigNumber;
121
+ tvlUsd: BigNumber;
122
+ /**
123
+ * @deprecated since version 1.0.3. Use `depositedAmountUsd` instead.
124
+ */
112
125
  totalSupplyUsd: BigNumber;
126
+ /**
127
+ * @deprecated since version 1.0.3. Use `borrowedAmountUsd` instead.
128
+ */
113
129
  totalBorrowUsd: BigNumber;
114
- tvlUsd: BigNumber;
115
130
  };
@@ -11,20 +11,29 @@ const parseLendingMarket = ({ LendingMarket, Reserve, PoolRewardManager, PoolRew
11
11
  const parsedReserves = reserves.map((reserve) => (0, reserve_1.parseReserve)({ Reserve, PoolRewardManager, PoolReward, simulate }, reserve, coinMetadataMap));
12
12
  const parsedRateLimiter = (0, rateLimiter_1.parseRateLimiter)({ RateLimiter }, lendingMarket.rateLimiter, currentTime);
13
13
  // Custom
14
- let totalSupplyUsd = new bignumber_js_1.default(0);
15
- let totalBorrowUsd = new bignumber_js_1.default(0);
14
+ let depositedAmountUsd = new bignumber_js_1.default(0);
15
+ let borrowedAmountUsd = new bignumber_js_1.default(0);
16
16
  let tvlUsd = new bignumber_js_1.default(0);
17
- parsedReserves.forEach((properties) => {
18
- totalSupplyUsd = totalSupplyUsd.plus(properties.totalDeposits.times(properties.price));
19
- totalBorrowUsd = totalBorrowUsd.plus(properties.borrowedAmount.times(properties.price));
20
- tvlUsd = tvlUsd.plus(properties.availableAmount.times(properties.price));
17
+ parsedReserves.forEach((parsedReserve) => {
18
+ depositedAmountUsd = depositedAmountUsd.plus(parsedReserve.depositedAmountUsd);
19
+ borrowedAmountUsd = borrowedAmountUsd.plus(parsedReserve.borrowedAmountUsd);
20
+ tvlUsd = tvlUsd.plus(parsedReserve.availableAmountUsd);
21
21
  });
22
22
  return {
23
23
  reserves: parsedReserves,
24
24
  rateLimiter: parsedRateLimiter,
25
- totalSupplyUsd,
26
- totalBorrowUsd,
25
+ depositedAmountUsd,
26
+ borrowedAmountUsd,
27
27
  tvlUsd,
28
+ // Deprecated
29
+ /**
30
+ * @deprecated since version 1.0.3. Use `depositedAmountUsd` instead.
31
+ */
32
+ totalSupplyUsd: depositedAmountUsd,
33
+ /**
34
+ * @deprecated since version 1.0.3. Use `borrowedAmountUsd` instead.
35
+ */
36
+ totalBorrowUsd: borrowedAmountUsd,
28
37
  };
29
38
  };
30
39
  exports.parseLendingMarket = parseLendingMarket;
@@ -7,20 +7,22 @@ export declare const parseObligation: ({ Obligation }: Pick<Deps, "Obligation">,
7
7
  [coinType: string]: ParsedReserve;
8
8
  }) => {
9
9
  id: any;
10
- totalSupplyUsd: BigNumber;
11
- totalBorrowUsd: BigNumber;
12
- totalWeightedBorrowUsd: BigNumber;
10
+ depositedAmountUsd: BigNumber;
11
+ borrowedAmountUsd: BigNumber;
13
12
  netValueUsd: BigNumber;
14
- borrowLimit: BigNumber;
13
+ weightedBorrowsUsd: BigNumber;
14
+ maxPriceWeightedBorrowsUsd: BigNumber;
15
+ borrowLimitUsd: BigNumber;
16
+ minPriceBorrowLimitUsd: BigNumber;
15
17
  unhealthyBorrowValueUsd: BigNumber;
16
18
  positionCount: number;
17
19
  deposits: {
18
20
  coinType: string;
19
21
  reserveArrayIndex: any;
20
22
  userRewardManagerIndex: number;
23
+ userRewardManager: any;
21
24
  depositedAmount: BigNumber;
22
25
  depositedAmountUsd: BigNumber;
23
- userRewardManager: any;
24
26
  reserve: {
25
27
  config: {
26
28
  $typeName: any;
@@ -106,7 +108,10 @@ export declare const parseObligation: ({ Obligation }: Pick<Deps, "Obligation">,
106
108
  }[];
107
109
  lastUpdateTimeMs: any;
108
110
  };
109
- totalDeposits: BigNumber;
111
+ availableAmountUsd: BigNumber;
112
+ borrowedAmountUsd: BigNumber;
113
+ depositedAmount: BigNumber;
114
+ depositedAmountUsd: BigNumber;
110
115
  cTokenExchangeRate: BigNumber;
111
116
  borrowAprPercent: BigNumber;
112
117
  depositAprPercent: BigNumber;
@@ -115,6 +120,7 @@ export declare const parseObligation: ({ Obligation }: Pick<Deps, "Obligation">,
115
120
  name: string;
116
121
  iconUrl: string | null | undefined;
117
122
  description: string;
123
+ totalDeposits: BigNumber;
118
124
  };
119
125
  original: any;
120
126
  }[];
@@ -122,9 +128,9 @@ export declare const parseObligation: ({ Obligation }: Pick<Deps, "Obligation">,
122
128
  coinType: string;
123
129
  reserveArrayIndex: any;
124
130
  userRewardManagerIndex: number;
131
+ userRewardManager: any;
125
132
  borrowedAmount: BigNumber;
126
133
  borrowedAmountUsd: BigNumber;
127
- userRewardManager: any;
128
134
  reserve: {
129
135
  config: {
130
136
  $typeName: any;
@@ -210,7 +216,10 @@ export declare const parseObligation: ({ Obligation }: Pick<Deps, "Obligation">,
210
216
  }[];
211
217
  lastUpdateTimeMs: any;
212
218
  };
213
- totalDeposits: BigNumber;
219
+ availableAmountUsd: BigNumber;
220
+ borrowedAmountUsd: BigNumber;
221
+ depositedAmount: BigNumber;
222
+ depositedAmountUsd: BigNumber;
214
223
  cTokenExchangeRate: BigNumber;
215
224
  borrowAprPercent: BigNumber;
216
225
  depositAprPercent: BigNumber;
@@ -219,11 +228,34 @@ export declare const parseObligation: ({ Obligation }: Pick<Deps, "Obligation">,
219
228
  name: string;
220
229
  iconUrl: string | null | undefined;
221
230
  description: string;
231
+ totalDeposits: BigNumber;
222
232
  };
223
233
  original: any;
224
234
  }[];
225
- minPriceBorrowLimit: BigNumber;
226
- maxPriceTotalWeightedBorrowUsd: BigNumber;
227
235
  weightedConservativeBorrowUtilizationPercent: BigNumber;
228
236
  original: any;
237
+ /**
238
+ * @deprecated since version 1.0.3. Use `depositedAmountUsd` instead.
239
+ */
240
+ totalSupplyUsd: BigNumber;
241
+ /**
242
+ * @deprecated since version 1.0.3. Use `borrowedAmountUsd` instead.
243
+ */
244
+ totalBorrowUsd: BigNumber;
245
+ /**
246
+ * @deprecated since version 1.0.3. Use `weightedBorrowsUsd` instead.
247
+ */
248
+ totalWeightedBorrowUsd: BigNumber;
249
+ /**
250
+ * @deprecated since version 1.0.3. Use `maxPriceWeightedBorrowsUsd` instead.
251
+ */
252
+ maxPriceTotalWeightedBorrowUsd: BigNumber;
253
+ /**
254
+ * @deprecated since version 1.0.3. Use `borrowLimitUsd` instead.
255
+ */
256
+ borrowLimit: BigNumber;
257
+ /**
258
+ * @deprecated since version 1.0.3. Use `minPriceBorrowLimitUsd` instead.
259
+ */
260
+ minPriceBorrowLimit: BigNumber;
229
261
  };
@@ -8,15 +8,15 @@ const utils_1 = require("@mysten/sui.js/utils");
8
8
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
9
  const constants_1 = require("../constants");
10
10
  const parseObligation = ({ Obligation }, obligation, parsedReserveMap) => {
11
- let totalSupplyUsd = new bignumber_js_1.default(0);
12
- let totalBorrowUsd = new bignumber_js_1.default(0);
13
- let borrowLimit = new bignumber_js_1.default(0);
14
- let minPriceBorrowLimit = new bignumber_js_1.default(0);
11
+ let totalDepositedAmountUsd = new bignumber_js_1.default(0);
12
+ let totalBorrowedAmountUsd = new bignumber_js_1.default(0);
13
+ let weightedBorrowsUsd = new bignumber_js_1.default(0);
14
+ let maxPriceWeightedBorrowsUsd = new bignumber_js_1.default(0);
15
+ let borrowLimitUsd = new bignumber_js_1.default(0);
16
+ let minPriceBorrowLimitUsd = new bignumber_js_1.default(0);
15
17
  let unhealthyBorrowValueUsd = new bignumber_js_1.default(0);
16
- let totalWeightedBorrowUsd = new bignumber_js_1.default(0);
17
- let maxPriceTotalWeightedBorrowUsd = new bignumber_js_1.default(0);
18
- const positionCount = obligation.deposits.filter((pos) => pos.depositedCtokenAmount.toString() !== "0").length +
19
- obligation.borrows.filter((pos) => pos.borrowedAmount.value.toString() !== "0").length;
18
+ const positionCount = obligation.deposits.filter((deposit) => new bignumber_js_1.default(deposit.depositedCtokenAmount.toString()).gt(0)).length +
19
+ obligation.borrows.filter((borrow) => new bignumber_js_1.default(borrow.borrowedAmount.value.toString()).gt(0)).length;
20
20
  const deposits = obligation.deposits.map((deposit) => {
21
21
  const coinType = (0, utils_1.normalizeStructTag)(deposit.coinType.name);
22
22
  const reserve = parsedReserveMap[coinType];
@@ -25,22 +25,22 @@ const parseObligation = ({ Obligation }, obligation, parsedReserveMap) => {
25
25
  const depositedCtokenAmount = new bignumber_js_1.default(deposit.depositedCtokenAmount.toString()).div(10 ** reserve.mintDecimals);
26
26
  const depositedAmount = depositedCtokenAmount.times(reserve.cTokenExchangeRate);
27
27
  const depositedAmountUsd = depositedAmount.times(reserve.price);
28
- totalSupplyUsd = totalSupplyUsd.plus(depositedAmountUsd);
29
- minPriceBorrowLimit = minPriceBorrowLimit.plus(depositedAmount
28
+ totalDepositedAmountUsd = totalDepositedAmountUsd.plus(depositedAmountUsd);
29
+ borrowLimitUsd = borrowLimitUsd.plus(depositedAmountUsd.times(reserve.config.openLtvPct / 100));
30
+ minPriceBorrowLimitUsd = minPriceBorrowLimitUsd.plus(depositedAmount
30
31
  .times(reserve.minPrice)
31
32
  .times(reserve.config.openLtvPct / 100));
32
- borrowLimit = borrowLimit.plus(depositedAmountUsd.times(reserve.config.openLtvPct / 100));
33
33
  unhealthyBorrowValueUsd = unhealthyBorrowValueUsd.plus(depositedAmountUsd.times(reserve.config.closeLtvPct / 100));
34
+ const reserveArrayIndex = deposit.reserveArrayIndex;
34
35
  const userRewardManagerIndex = Number(deposit.userRewardManagerIndex.toString());
35
36
  const userRewardManager = obligation.userRewardManagers[userRewardManagerIndex];
36
- const reserveArrayIndex = deposit.reserveArrayIndex;
37
37
  return {
38
38
  coinType,
39
39
  reserveArrayIndex,
40
40
  userRewardManagerIndex,
41
+ userRewardManager,
41
42
  depositedAmount,
42
43
  depositedAmountUsd,
43
- userRewardManager,
44
44
  reserve,
45
45
  original: obligation,
46
46
  };
@@ -50,50 +50,75 @@ const parseObligation = ({ Obligation }, obligation, parsedReserveMap) => {
50
50
  const reserve = parsedReserveMap[coinType];
51
51
  if (!reserve)
52
52
  throw new Error(`Reserve with coinType ${borrow.coinType.name} not found`);
53
- const reserveCumulativeBorrowRate = new bignumber_js_1.default(borrow.cumulativeBorrowRate.value.toString()).div(constants_1.WAD.toString());
53
+ const cumulativeBorrowRate = new bignumber_js_1.default(borrow.cumulativeBorrowRate.value.toString()).div(constants_1.WAD.toString());
54
54
  const borrowedAmountInitial = new bignumber_js_1.default(borrow.borrowedAmount.value.toString())
55
55
  .div(constants_1.WAD.toString())
56
56
  .div(10 ** reserve.mintDecimals);
57
- const borrowInterestIndex = reserve.cumulativeBorrowRate.div(reserveCumulativeBorrowRate);
57
+ const borrowInterestIndex = reserve.cumulativeBorrowRate.div(cumulativeBorrowRate);
58
58
  const borrowedAmount = borrowedAmountInitial.times(borrowInterestIndex);
59
59
  const borrowedAmountUsd = borrowedAmount.times(reserve.price);
60
60
  const borrowWeight = reserve.config.borrowWeightBps / 10000;
61
- totalBorrowUsd = totalBorrowUsd.plus(borrowedAmountUsd);
62
- totalWeightedBorrowUsd = totalWeightedBorrowUsd.plus(borrowedAmountUsd.times(borrowWeight));
63
- maxPriceTotalWeightedBorrowUsd = maxPriceTotalWeightedBorrowUsd.plus(borrowedAmount.times(reserve.maxPrice).times(borrowWeight));
61
+ totalBorrowedAmountUsd = totalBorrowedAmountUsd.plus(borrowedAmountUsd);
62
+ weightedBorrowsUsd = weightedBorrowsUsd.plus(borrowedAmountUsd.times(borrowWeight));
63
+ maxPriceWeightedBorrowsUsd = maxPriceWeightedBorrowsUsd.plus(borrowedAmount.times(reserve.maxPrice).times(borrowWeight));
64
+ const reserveArrayIndex = borrow.reserveArrayIndex;
64
65
  const userRewardManagerIndex = Number(borrow.userRewardManagerIndex.toString());
65
66
  const userRewardManager = obligation.userRewardManagers[userRewardManagerIndex];
66
- const reserveArrayIndex = borrow.reserveArrayIndex;
67
67
  return {
68
68
  coinType,
69
69
  reserveArrayIndex,
70
70
  userRewardManagerIndex,
71
+ userRewardManager,
71
72
  borrowedAmount,
72
73
  borrowedAmountUsd,
73
- userRewardManager,
74
74
  reserve,
75
75
  original: obligation,
76
76
  };
77
77
  });
78
- const netValueUsd = totalSupplyUsd.minus(totalBorrowUsd);
79
- const weightedConservativeBorrowUtilizationPercent = minPriceBorrowLimit.isZero()
78
+ const netValueUsd = totalDepositedAmountUsd.minus(totalBorrowedAmountUsd);
79
+ const weightedConservativeBorrowUtilizationPercent = minPriceBorrowLimitUsd.isZero()
80
80
  ? new bignumber_js_1.default(0)
81
- : maxPriceTotalWeightedBorrowUsd.div(minPriceBorrowLimit).times(100);
81
+ : maxPriceWeightedBorrowsUsd.div(minPriceBorrowLimitUsd).times(100);
82
82
  return {
83
83
  id: obligation.id,
84
- totalSupplyUsd,
85
- totalBorrowUsd,
86
- totalWeightedBorrowUsd,
84
+ depositedAmountUsd: totalDepositedAmountUsd,
85
+ borrowedAmountUsd: totalBorrowedAmountUsd,
87
86
  netValueUsd,
88
- borrowLimit,
87
+ weightedBorrowsUsd,
88
+ maxPriceWeightedBorrowsUsd,
89
+ borrowLimitUsd,
90
+ minPriceBorrowLimitUsd,
89
91
  unhealthyBorrowValueUsd,
90
92
  positionCount,
91
93
  deposits,
92
94
  borrows,
93
- minPriceBorrowLimit,
94
- maxPriceTotalWeightedBorrowUsd,
95
95
  weightedConservativeBorrowUtilizationPercent,
96
96
  original: obligation,
97
+ // Deprecated
98
+ /**
99
+ * @deprecated since version 1.0.3. Use `depositedAmountUsd` instead.
100
+ */
101
+ totalSupplyUsd: totalDepositedAmountUsd,
102
+ /**
103
+ * @deprecated since version 1.0.3. Use `borrowedAmountUsd` instead.
104
+ */
105
+ totalBorrowUsd: totalBorrowedAmountUsd,
106
+ /**
107
+ * @deprecated since version 1.0.3. Use `weightedBorrowsUsd` instead.
108
+ */
109
+ totalWeightedBorrowUsd: weightedBorrowsUsd,
110
+ /**
111
+ * @deprecated since version 1.0.3. Use `maxPriceWeightedBorrowsUsd` instead.
112
+ */
113
+ maxPriceTotalWeightedBorrowUsd: maxPriceWeightedBorrowsUsd,
114
+ /**
115
+ * @deprecated since version 1.0.3. Use `borrowLimitUsd` instead.
116
+ */
117
+ borrowLimit: borrowLimitUsd,
118
+ /**
119
+ * @deprecated since version 1.0.3. Use `minPriceBorrowLimitUsd` instead.
120
+ */
121
+ minPriceBorrowLimit: minPriceBorrowLimitUsd,
97
122
  };
98
123
  };
99
124
  exports.parseObligation = parseObligation;
@@ -90,7 +90,10 @@ export declare const parseReserve: ({ Reserve, PoolRewardManager, PoolReward, si
90
90
  }[];
91
91
  lastUpdateTimeMs: any;
92
92
  };
93
- totalDeposits: BigNumber;
93
+ availableAmountUsd: BigNumber;
94
+ borrowedAmountUsd: BigNumber;
95
+ depositedAmount: BigNumber;
96
+ depositedAmountUsd: BigNumber;
94
97
  cTokenExchangeRate: BigNumber;
95
98
  borrowAprPercent: BigNumber;
96
99
  depositAprPercent: BigNumber;
@@ -99,6 +102,10 @@ export declare const parseReserve: ({ Reserve, PoolRewardManager, PoolReward, si
99
102
  name: string;
100
103
  iconUrl: string | null | undefined;
101
104
  description: string;
105
+ /**
106
+ * @deprecated since version 1.0.3. Use `depositedAmount` instead.
107
+ */
108
+ totalDeposits: BigNumber;
102
109
  };
103
110
  export declare const parseReserveConfig: ({ Reserve }: Pick<Deps, "Reserve">, reserve: any) => {
104
111
  $typeName: any;
@@ -37,9 +37,12 @@ const parseReserve = ({ Reserve, PoolRewardManager, PoolReward, simulate, }, res
37
37
  const depositsPoolRewardManager = (0, exports.parsePoolRewardManager)({ PoolRewardManager, PoolReward }, reserve.depositsPoolRewardManager, coinMetadataMap);
38
38
  const borrowsPoolRewardManager = (0, exports.parsePoolRewardManager)({ PoolRewardManager, PoolReward }, reserve.borrowsPoolRewardManager, coinMetadataMap);
39
39
  // Custom
40
- const totalDeposits = borrowedAmount
40
+ const availableAmountUsd = availableAmount.times(price);
41
+ const borrowedAmountUsd = borrowedAmount.times(price);
42
+ const depositedAmount = borrowedAmount
41
43
  .plus(availableAmount)
42
44
  .minus(unclaimedSpreadFees);
45
+ const depositedAmountUsd = depositedAmount.times(price);
43
46
  const cTokenExchangeRate = simulate.cTokenRatio(reserve);
44
47
  const borrowAprPercent = simulate.calculateBorrowApr(reserve);
45
48
  const depositAprPercent = simulate.calculateSupplyApr(reserve);
@@ -72,7 +75,10 @@ const parseReserve = ({ Reserve, PoolRewardManager, PoolReward, simulate, }, res
72
75
  attributedBorrowValue,
73
76
  depositsPoolRewardManager,
74
77
  borrowsPoolRewardManager,
75
- totalDeposits,
78
+ availableAmountUsd,
79
+ borrowedAmountUsd,
80
+ depositedAmount,
81
+ depositedAmountUsd,
76
82
  cTokenExchangeRate,
77
83
  borrowAprPercent,
78
84
  depositAprPercent,
@@ -81,6 +87,11 @@ const parseReserve = ({ Reserve, PoolRewardManager, PoolReward, simulate, }, res
81
87
  name,
82
88
  iconUrl,
83
89
  description,
90
+ // Deprecated
91
+ /**
92
+ * @deprecated since version 1.0.3. Use `depositedAmount` instead.
93
+ */
94
+ totalDeposits: depositedAmount,
84
95
  };
85
96
  };
86
97
  exports.parseReserve = parseReserve;
package/core/types.d.ts CHANGED
@@ -585,6 +585,14 @@ export interface CancelPoolRewardArgs {
585
585
  rewardIndex: bigint | TransactionArgument;
586
586
  clock: ObjectArg;
587
587
  }
588
+ export interface ClosePoolRewardArgs {
589
+ lendingMarketOwnerCap: ObjectArg;
590
+ lendingMarket: ObjectArg;
591
+ reserveArrayIndex: bigint | TransactionArgument;
592
+ isDepositReward: boolean | TransactionArgument;
593
+ rewardIndex: bigint | TransactionArgument;
594
+ clock: ObjectArg;
595
+ }
588
596
  export interface ClaimRewardsArgs {
589
597
  lendingMarket: ObjectArg;
590
598
  cap: ObjectArg;
@@ -660,3 +668,7 @@ export interface LiquidateArgs {
660
668
  clock: ObjectArg;
661
669
  repayCoins: ObjectArg;
662
670
  }
671
+ export interface MigrateArgs {
672
+ lendingMarketOwnerCap: ObjectArg;
673
+ lendingMarket: ObjectArg;
674
+ }
package/mainnet/client.js CHANGED
@@ -34,6 +34,7 @@ const deps = {
34
34
  addReserve: functions_1.addReserve,
35
35
  addPoolReward: functions_1.addPoolReward,
36
36
  cancelPoolReward: functions_1.cancelPoolReward,
37
+ closePoolReward: functions_1.closePoolReward,
37
38
  claimRewards: functions_1.claimRewards,
38
39
  claimRewardsAndDeposit: functions_1.claimRewardsAndDeposit,
39
40
  createRateLimiterConfig: functions_3.newConfig,
@@ -45,6 +46,7 @@ const deps = {
45
46
  borrow: functions_1.borrow,
46
47
  repay: functions_1.repay,
47
48
  liquidate: functions_1.liquidate,
49
+ migrate: functions_1.migrate,
48
50
  };
49
51
  class SuilendClient extends client_1.SuilendClient {
50
52
  constructor(lendingMarket, client) {
@@ -1,2 +1,6 @@
1
+ export * from "./parsers";
2
+ export * from "./utils/";
1
3
  export * from "./client";
4
+ export * from "./constants";
2
5
  export * from "./types";
6
+ export * from "./utils";
package/mainnet/index.js CHANGED
@@ -14,5 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./parsers"), exports);
18
+ __exportStar(require("./utils/"), exports);
17
19
  __exportStar(require("./client"), exports);
20
+ __exportStar(require("./constants"), exports);
18
21
  __exportStar(require("./types"), exports);
22
+ __exportStar(require("./utils"), exports);
@@ -0,0 +1,4 @@
1
+ export * from "./lendingMarket";
2
+ export * from "./obligation";
3
+ export * from "./rateLimiter";
4
+ export * from "./reserve";
@@ -0,0 +1,20 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lendingMarket"), exports);
18
+ __exportStar(require("./obligation"), exports);
19
+ __exportStar(require("./rateLimiter"), exports);
20
+ __exportStar(require("./reserve"), exports);
@@ -88,7 +88,10 @@ export declare const parseLendingMarket: (lendingMarket: LendingMarket<string>,
88
88
  }[];
89
89
  lastUpdateTimeMs: any;
90
90
  };
91
- totalDeposits: import("bignumber.js").BigNumber;
91
+ availableAmountUsd: import("bignumber.js").BigNumber;
92
+ borrowedAmountUsd: import("bignumber.js").BigNumber;
93
+ depositedAmount: import("bignumber.js").BigNumber;
94
+ depositedAmountUsd: import("bignumber.js").BigNumber;
92
95
  cTokenExchangeRate: import("bignumber.js").BigNumber;
93
96
  borrowAprPercent: import("bignumber.js").BigNumber;
94
97
  depositAprPercent: import("bignumber.js").BigNumber;
@@ -97,6 +100,7 @@ export declare const parseLendingMarket: (lendingMarket: LendingMarket<string>,
97
100
  name: string;
98
101
  iconUrl: string | null | undefined;
99
102
  description: string;
103
+ totalDeposits: import("bignumber.js").BigNumber;
100
104
  }[];
101
105
  rateLimiter: {
102
106
  config: {
@@ -109,7 +113,9 @@ export declare const parseLendingMarket: (lendingMarket: LendingMarket<string>,
109
113
  curQty: any;
110
114
  remainingOutflow: import("bignumber.js").BigNumber;
111
115
  };
116
+ depositedAmountUsd: import("bignumber.js").BigNumber;
117
+ borrowedAmountUsd: import("bignumber.js").BigNumber;
118
+ tvlUsd: import("bignumber.js").BigNumber;
112
119
  totalSupplyUsd: import("bignumber.js").BigNumber;
113
120
  totalBorrowUsd: import("bignumber.js").BigNumber;
114
- tvlUsd: import("bignumber.js").BigNumber;
115
121
  };
@@ -90,7 +90,10 @@ export declare const parseReserve: (reserve: Reserve<string>, coinMetadataMap: R
90
90
  }[];
91
91
  lastUpdateTimeMs: any;
92
92
  };
93
- totalDeposits: import("bignumber.js").BigNumber;
93
+ availableAmountUsd: import("bignumber.js").BigNumber;
94
+ borrowedAmountUsd: import("bignumber.js").BigNumber;
95
+ depositedAmount: import("bignumber.js").BigNumber;
96
+ depositedAmountUsd: import("bignumber.js").BigNumber;
94
97
  cTokenExchangeRate: import("bignumber.js").BigNumber;
95
98
  borrowAprPercent: import("bignumber.js").BigNumber;
96
99
  depositAprPercent: import("bignumber.js").BigNumber;
@@ -99,6 +102,7 @@ export declare const parseReserve: (reserve: Reserve<string>, coinMetadataMap: R
99
102
  name: string;
100
103
  iconUrl: string | null | undefined;
101
104
  description: string;
105
+ totalDeposits: import("bignumber.js").BigNumber;
102
106
  };
103
107
  export declare const parseReserveConfig: (reserve: Reserve<string>) => {
104
108
  $typeName: any;
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@suilend/sdk","version":"1.0.1","private":false,"description":"A TypeScript SDK for interacting with the Suilend program","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./*":"./*/*.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix \"./src/**/*.ts\"","prettier":"prettier --write \"./src/**/*\"","lint":"bun eslint && bun prettier","release":"bun run build && bun ts-node ./prepublish.ts && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/solendprotocol/suilend-public.git"},"bugs":{"url":"https://github.com/solendprotocol/suilend-public/issues"},"homepage":"https://github.com/solendprotocol/suilend-public/tree/HEAD/sdk#readme","dependencies":{"@mysten/bcs":"^0.10.1","@mysten/sui.js":"^0.49.1","bignumber.js":"^9.1.2","uuid":"^9.0.1"},"devDependencies":{"@types/node":"^20.12.7","ts-node":"^10.9.2","typescript":"^5.3.3"}}
1
+ {"name":"@suilend/sdk","version":"1.0.3","private":false,"description":"A TypeScript SDK for interacting with the Suilend program","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./mainnet/client":"./mainnet/client.js","./mainnet/constants":"./mainnet/constants.js","./mainnet":"./mainnet/index.js","./mainnet/types":"./mainnet/types.js","./mainnet/utils":"./mainnet/utils/index.js","./pyth-sdk/SuiPriceServiceConnection":"./pyth-sdk/SuiPriceServiceConnection.js","./pyth-sdk/client":"./pyth-sdk/client.js","./pyth-sdk":"./pyth-sdk/index.js","./mainnet/parsers":"./mainnet/parsers/index.js","./mainnet/parsers/lendingMarket":"./mainnet/parsers/lendingMarket.js","./mainnet/parsers/obligation":"./mainnet/parsers/obligation.js","./mainnet/parsers/rateLimiter":"./mainnet/parsers/rateLimiter.js","./mainnet/parsers/reserve":"./mainnet/parsers/reserve.js","./mainnet/utils/events":"./mainnet/utils/events.js","./mainnet/utils/obligation":"./mainnet/utils/obligation.js","./mainnet/utils/simulate":"./mainnet/utils/simulate.js","./mainnet/utils/utils":"./mainnet/utils/utils.js","./mainnet/_generated/_framework/init-source":"./mainnet/_generated/_framework/init-source.js","./mainnet/_generated/_framework/loader":"./mainnet/_generated/_framework/loader.js","./mainnet/_generated/_framework/reified":"./mainnet/_generated/_framework/reified.js","./mainnet/_generated/_framework/util":"./mainnet/_generated/_framework/util.js","./mainnet/_generated/suilend":"./mainnet/_generated/suilend/index.js","./mainnet/_generated/suilend/init":"./mainnet/_generated/suilend/init.js","./mainnet/_generated/suilend/cell/functions":"./mainnet/_generated/suilend/cell/functions.js","./mainnet/_generated/suilend/cell/structs":"./mainnet/_generated/suilend/cell/structs.js","./mainnet/_generated/suilend/decimal/functions":"./mainnet/_generated/suilend/decimal/functions.js","./mainnet/_generated/suilend/decimal/structs":"./mainnet/_generated/suilend/decimal/structs.js","./mainnet/_generated/suilend/launch/functions":"./mainnet/_generated/suilend/launch/functions.js","./mainnet/_generated/suilend/launch/structs":"./mainnet/_generated/suilend/launch/structs.js","./mainnet/_generated/suilend/lending-market/functions":"./mainnet/_generated/suilend/lending-market/functions.js","./mainnet/_generated/suilend/lending-market/structs":"./mainnet/_generated/suilend/lending-market/structs.js","./mainnet/_generated/suilend/lending-market-registry/functions":"./mainnet/_generated/suilend/lending-market-registry/functions.js","./mainnet/_generated/suilend/lending-market-registry/structs":"./mainnet/_generated/suilend/lending-market-registry/structs.js","./mainnet/_generated/suilend/liquidity-mining/functions":"./mainnet/_generated/suilend/liquidity-mining/functions.js","./mainnet/_generated/suilend/liquidity-mining/structs":"./mainnet/_generated/suilend/liquidity-mining/structs.js","./mainnet/_generated/suilend/obligation/functions":"./mainnet/_generated/suilend/obligation/functions.js","./mainnet/_generated/suilend/obligation/structs":"./mainnet/_generated/suilend/obligation/structs.js","./mainnet/_generated/suilend/oracles/functions":"./mainnet/_generated/suilend/oracles/functions.js","./mainnet/_generated/suilend/rate-limiter/functions":"./mainnet/_generated/suilend/rate-limiter/functions.js","./mainnet/_generated/suilend/rate-limiter/structs":"./mainnet/_generated/suilend/rate-limiter/structs.js","./mainnet/_generated/suilend/reserve/functions":"./mainnet/_generated/suilend/reserve/functions.js","./mainnet/_generated/suilend/reserve/structs":"./mainnet/_generated/suilend/reserve/structs.js","./mainnet/_generated/suilend/reserve-config/functions":"./mainnet/_generated/suilend/reserve-config/functions.js","./mainnet/_generated/suilend/reserve-config/structs":"./mainnet/_generated/suilend/reserve-config/structs.js","./mainnet/_generated/suilend/suilend/structs":"./mainnet/_generated/suilend/suilend/structs.js","./mainnet/_generated/_dependencies/source/0x1":"./mainnet/_generated/_dependencies/source/0x1/index.js","./mainnet/_generated/_dependencies/source/0x1/init":"./mainnet/_generated/_dependencies/source/0x1/init.js","./mainnet/_generated/_dependencies/source/0x2":"./mainnet/_generated/_dependencies/source/0x2/index.js","./mainnet/_generated/_dependencies/source/0x2/init":"./mainnet/_generated/_dependencies/source/0x2/init.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/index.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/init":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/init.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/init":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/init.js","./mainnet/_generated/_dependencies/source/0x1/ascii/structs":"./mainnet/_generated/_dependencies/source/0x1/ascii/structs.js","./mainnet/_generated/_dependencies/source/0x1/bit-vector/structs":"./mainnet/_generated/_dependencies/source/0x1/bit-vector/structs.js","./mainnet/_generated/_dependencies/source/0x1/fixed-point32/structs":"./mainnet/_generated/_dependencies/source/0x1/fixed-point32/structs.js","./mainnet/_generated/_dependencies/source/0x1/option/structs":"./mainnet/_generated/_dependencies/source/0x1/option/structs.js","./mainnet/_generated/_dependencies/source/0x1/string/structs":"./mainnet/_generated/_dependencies/source/0x1/string/structs.js","./mainnet/_generated/_dependencies/source/0x1/type-name/structs":"./mainnet/_generated/_dependencies/source/0x1/type-name/structs.js","./mainnet/_generated/_dependencies/source/0x2/authenticator-state/structs":"./mainnet/_generated/_dependencies/source/0x2/authenticator-state/structs.js","./mainnet/_generated/_dependencies/source/0x2/bag/structs":"./mainnet/_generated/_dependencies/source/0x2/bag/structs.js","./mainnet/_generated/_dependencies/source/0x2/balance/structs":"./mainnet/_generated/_dependencies/source/0x2/balance/structs.js","./mainnet/_generated/_dependencies/source/0x2/bcs/structs":"./mainnet/_generated/_dependencies/source/0x2/bcs/structs.js","./mainnet/_generated/_dependencies/source/0x2/bls12381/structs":"./mainnet/_generated/_dependencies/source/0x2/bls12381/structs.js","./mainnet/_generated/_dependencies/source/0x2/borrow/structs":"./mainnet/_generated/_dependencies/source/0x2/borrow/structs.js","./mainnet/_generated/_dependencies/source/0x2/clock/structs":"./mainnet/_generated/_dependencies/source/0x2/clock/structs.js","./mainnet/_generated/_dependencies/source/0x2/coin/structs":"./mainnet/_generated/_dependencies/source/0x2/coin/structs.js","./mainnet/_generated/_dependencies/source/0x2/deny-list/structs":"./mainnet/_generated/_dependencies/source/0x2/deny-list/structs.js","./mainnet/_generated/_dependencies/source/0x2/display/structs":"./mainnet/_generated/_dependencies/source/0x2/display/structs.js","./mainnet/_generated/_dependencies/source/0x2/dynamic-field/structs":"./mainnet/_generated/_dependencies/source/0x2/dynamic-field/structs.js","./mainnet/_generated/_dependencies/source/0x2/dynamic-object-field/structs":"./mainnet/_generated/_dependencies/source/0x2/dynamic-object-field/structs.js","./mainnet/_generated/_dependencies/source/0x2/groth16/structs":"./mainnet/_generated/_dependencies/source/0x2/groth16/structs.js","./mainnet/_generated/_dependencies/source/0x2/group-ops/structs":"./mainnet/_generated/_dependencies/source/0x2/group-ops/structs.js","./mainnet/_generated/_dependencies/source/0x2/kiosk/structs":"./mainnet/_generated/_dependencies/source/0x2/kiosk/structs.js","./mainnet/_generated/_dependencies/source/0x2/kiosk-extension/structs":"./mainnet/_generated/_dependencies/source/0x2/kiosk-extension/structs.js","./mainnet/_generated/_dependencies/source/0x2/linked-table/structs":"./mainnet/_generated/_dependencies/source/0x2/linked-table/structs.js","./mainnet/_generated/_dependencies/source/0x2/object/structs":"./mainnet/_generated/_dependencies/source/0x2/object/structs.js","./mainnet/_generated/_dependencies/source/0x2/object-bag/structs":"./mainnet/_generated/_dependencies/source/0x2/object-bag/structs.js","./mainnet/_generated/_dependencies/source/0x2/object-table/structs":"./mainnet/_generated/_dependencies/source/0x2/object-table/structs.js","./mainnet/_generated/_dependencies/source/0x2/package/structs":"./mainnet/_generated/_dependencies/source/0x2/package/structs.js","./mainnet/_generated/_dependencies/source/0x2/priority-queue/structs":"./mainnet/_generated/_dependencies/source/0x2/priority-queue/structs.js","./mainnet/_generated/_dependencies/source/0x2/random/structs":"./mainnet/_generated/_dependencies/source/0x2/random/structs.js","./mainnet/_generated/_dependencies/source/0x2/sui/structs":"./mainnet/_generated/_dependencies/source/0x2/sui/structs.js","./mainnet/_generated/_dependencies/source/0x2/table/structs":"./mainnet/_generated/_dependencies/source/0x2/table/structs.js","./mainnet/_generated/_dependencies/source/0x2/table-vec/structs":"./mainnet/_generated/_dependencies/source/0x2/table-vec/structs.js","./mainnet/_generated/_dependencies/source/0x2/token/structs":"./mainnet/_generated/_dependencies/source/0x2/token/structs.js","./mainnet/_generated/_dependencies/source/0x2/transfer/structs":"./mainnet/_generated/_dependencies/source/0x2/transfer/structs.js","./mainnet/_generated/_dependencies/source/0x2/transfer-policy/structs":"./mainnet/_generated/_dependencies/source/0x2/transfer-policy/structs.js","./mainnet/_generated/_dependencies/source/0x2/tx-context/structs":"./mainnet/_generated/_dependencies/source/0x2/tx-context/structs.js","./mainnet/_generated/_dependencies/source/0x2/url/structs":"./mainnet/_generated/_dependencies/source/0x2/url/structs.js","./mainnet/_generated/_dependencies/source/0x2/vec-map/structs":"./mainnet/_generated/_dependencies/source/0x2/vec-map/structs.js","./mainnet/_generated/_dependencies/source/0x2/vec-set/structs":"./mainnet/_generated/_dependencies/source/0x2/vec-set/structs.js","./mainnet/_generated/_dependencies/source/0x2/versioned/structs":"./mainnet/_generated/_dependencies/source/0x2/versioned/structs.js","./mainnet/_generated/_dependencies/source/0x2/zklogin-verified-id/structs":"./mainnet/_generated/_dependencies/source/0x2/zklogin-verified-id/structs.js","./mainnet/_generated/_dependencies/source/0x2/zklogin-verified-issuer/structs":"./mainnet/_generated/_dependencies/source/0x2/zklogin-verified-issuer/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/bytes20/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/bytes20/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/bytes32/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/bytes32/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/consumed-vaas/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/consumed-vaas/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/cursor/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/cursor/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/emitter/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/emitter/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/external-address/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/external-address/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/fee-collector/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/fee-collector/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/governance-message/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/governance-message/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian-set/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian-set/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian-signature/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/guardian-signature/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/migrate/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/migrate/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/package-utils/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/package-utils/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/publish-message/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/publish-message/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/set/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/set/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/set-fee/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/set-fee/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/setup/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/setup/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/state/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/state/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/transfer-fee/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/transfer-fee/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/update-guardian-set/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/update-guardian-set/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/upgrade-contract/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/upgrade-contract/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/vaa/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/vaa/structs.js","./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/version-control/structs":"./mainnet/_generated/_dependencies/source/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a/version-control/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/batch-price-attestation/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/batch-price-attestation/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/contract-upgrade/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/contract-upgrade/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/data-source/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/data-source/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/event/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/event/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance-action/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance-action/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance-instruction/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/governance-instruction/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/hot-potato-vector/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/hot-potato-vector/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/migrate/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/migrate/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-status/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-status/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-data-sources/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-data-sources/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-fee-recipient/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-fee-recipient/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-governance-data-source/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-governance-data-source/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-stale-price-threshold/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-stale-price-threshold/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-update-fee/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/set-update-fee/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/setup/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/setup/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/state/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/state/structs.js","./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/version-control/structs":"./mainnet/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/version-control/structs.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix \"./src/**/*.ts\"","prettier":"prettier --write \"./src/**/*\"","lint":"bun eslint && bun prettier","release":"bun run build && bun ts-node ./prepublish.ts && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/solendprotocol/suilend-public.git"},"bugs":{"url":"https://github.com/solendprotocol/suilend-public/issues"},"homepage":"https://github.com/solendprotocol/suilend-public/tree/HEAD/sdk#readme","dependencies":{"@mysten/bcs":"^0.10.1","@mysten/sui.js":"^0.49.1","bignumber.js":"^9.1.2","p-limit":"^5.0.0","uuid":"^9.0.1"},"devDependencies":{"@types/node":"^20.12.7","ts-node":"^10.9.2","typescript":"^5.3.3"}}