@scallop-io/sui-scallop-sdk 0.46.58 → 0.46.61
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/dist/index.js +77 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +77 -26
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopQuery.d.ts +10 -0
- package/dist/queries/supplyLimit.d.ts +9 -0
- package/dist/types/query/core.d.ts +1 -0
- package/package.json +1 -1
- package/src/builders/coreBuilder.ts +23 -26
- package/src/models/scallopQuery.ts +18 -0
- package/src/queries/coreQuery.ts +8 -0
- package/src/queries/supplyLimit.ts +48 -0
- package/src/types/query/core.ts +1 -0
package/dist/index.js
CHANGED
|
@@ -2266,6 +2266,43 @@ var import_pyth_sui_js = require("@pythnetwork/pyth-sui-js");
|
|
|
2266
2266
|
// src/queries/coreQuery.ts
|
|
2267
2267
|
var import_utils3 = require("@mysten/sui.js/utils");
|
|
2268
2268
|
var import_bignumber2 = __toESM(require("bignumber.js"));
|
|
2269
|
+
|
|
2270
|
+
// src/queries/supplyLimit.ts
|
|
2271
|
+
var import_zod = require("zod");
|
|
2272
|
+
var supplyLimitZod = import_zod.z.object({
|
|
2273
|
+
dataType: import_zod.z.string(),
|
|
2274
|
+
type: import_zod.z.string(),
|
|
2275
|
+
hasPublicTransfer: import_zod.z.boolean(),
|
|
2276
|
+
fields: import_zod.z.object({
|
|
2277
|
+
id: import_zod.z.object({
|
|
2278
|
+
id: import_zod.z.string()
|
|
2279
|
+
}),
|
|
2280
|
+
name: import_zod.z.object({
|
|
2281
|
+
type: import_zod.z.string()
|
|
2282
|
+
}),
|
|
2283
|
+
value: import_zod.z.string()
|
|
2284
|
+
})
|
|
2285
|
+
});
|
|
2286
|
+
var SUPPLY_LIMIT_TYPE = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
|
|
2287
|
+
var getSupplyLimit = async (utils, poolName) => {
|
|
2288
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2289
|
+
const marketObject = utils.address.get("core.market");
|
|
2290
|
+
if (!marketObject)
|
|
2291
|
+
return null;
|
|
2292
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2293
|
+
parentId: marketObject,
|
|
2294
|
+
name: {
|
|
2295
|
+
type: SUPPLY_LIMIT_TYPE,
|
|
2296
|
+
value: poolCoinType
|
|
2297
|
+
}
|
|
2298
|
+
});
|
|
2299
|
+
const parsedData = supplyLimitZod.safeParse(object?.data?.content);
|
|
2300
|
+
if (!parsedData.success)
|
|
2301
|
+
return null;
|
|
2302
|
+
return parsedData.data.fields.value;
|
|
2303
|
+
};
|
|
2304
|
+
|
|
2305
|
+
// src/queries/coreQuery.ts
|
|
2269
2306
|
var queryMarket = async (query, indexer = false) => {
|
|
2270
2307
|
const coinPrices = await query.utils.getCoinPrices();
|
|
2271
2308
|
const pools = {};
|
|
@@ -2325,6 +2362,7 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2325
2362
|
query.utils,
|
|
2326
2363
|
parsedMarketPoolData
|
|
2327
2364
|
);
|
|
2365
|
+
const supplyLimit = await getSupplyLimit(query.utils, poolCoinName) ?? "0";
|
|
2328
2366
|
pools[poolCoinName] = {
|
|
2329
2367
|
coinName: poolCoinName,
|
|
2330
2368
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2343,6 +2381,7 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2343
2381
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2344
2382
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2345
2383
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2384
|
+
supplyLimit,
|
|
2346
2385
|
...calculatedMarketPoolData
|
|
2347
2386
|
};
|
|
2348
2387
|
}
|
|
@@ -2546,6 +2585,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2546
2585
|
query.utils,
|
|
2547
2586
|
parsedMarketPoolData
|
|
2548
2587
|
);
|
|
2588
|
+
const supplyLimit = await getSupplyLimit(query.utils, poolCoinName) ?? "0";
|
|
2549
2589
|
marketPool = {
|
|
2550
2590
|
coinName: poolCoinName,
|
|
2551
2591
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2564,6 +2604,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2564
2604
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2565
2605
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2566
2606
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2607
|
+
supplyLimit,
|
|
2567
2608
|
...calculatedMarketPoolData
|
|
2568
2609
|
};
|
|
2569
2610
|
}
|
|
@@ -4038,7 +4079,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
|
|
|
4038
4079
|
var import_bignumber5 = __toESM(require("bignumber.js"));
|
|
4039
4080
|
var import_sui_kit3 = require("@scallop-io/sui-kit");
|
|
4040
4081
|
var import_bcs = require("@mysten/sui.js/bcs");
|
|
4041
|
-
var
|
|
4082
|
+
var import_zod2 = require("zod");
|
|
4042
4083
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
4043
4084
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
4044
4085
|
const veScaObjId = utils.address.get("vesca.object");
|
|
@@ -4082,10 +4123,10 @@ var getVeScas = async ({
|
|
|
4082
4123
|
await Promise.allSettled(tasks);
|
|
4083
4124
|
return veScas.filter(Boolean).sort((a, b) => b.currentVeScaBalance - a.currentVeScaBalance);
|
|
4084
4125
|
};
|
|
4085
|
-
var SuiObjectRefZod =
|
|
4086
|
-
objectId:
|
|
4087
|
-
digest:
|
|
4088
|
-
version:
|
|
4126
|
+
var SuiObjectRefZod = import_zod2.z.object({
|
|
4127
|
+
objectId: import_zod2.z.string(),
|
|
4128
|
+
digest: import_zod2.z.string(),
|
|
4129
|
+
version: import_zod2.z.string()
|
|
4089
4130
|
});
|
|
4090
4131
|
var getVeSca = async (utils, veScaKey, ownerAddress) => {
|
|
4091
4132
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
@@ -4218,16 +4259,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
|
|
|
4218
4259
|
|
|
4219
4260
|
// src/queries/loyaltyProgramQuery.ts
|
|
4220
4261
|
var import_bignumber6 = __toESM(require("bignumber.js"));
|
|
4221
|
-
var
|
|
4222
|
-
var rewardPoolFieldsZod =
|
|
4223
|
-
balance:
|
|
4224
|
-
enable_claim:
|
|
4262
|
+
var import_zod3 = require("zod");
|
|
4263
|
+
var rewardPoolFieldsZod = import_zod3.z.object({
|
|
4264
|
+
balance: import_zod3.z.string(),
|
|
4265
|
+
enable_claim: import_zod3.z.boolean()
|
|
4225
4266
|
}).transform((value) => ({
|
|
4226
4267
|
totalPoolReward: (0, import_bignumber6.default)(value.balance).shiftedBy(-9).toNumber(),
|
|
4227
4268
|
isClaimEnabled: value.enable_claim
|
|
4228
4269
|
}));
|
|
4229
|
-
var userRewardFieldsZod =
|
|
4230
|
-
value:
|
|
4270
|
+
var userRewardFieldsZod = import_zod3.z.object({
|
|
4271
|
+
value: import_zod3.z.string()
|
|
4231
4272
|
}).transform((value) => (0, import_bignumber6.default)(value.value).shiftedBy(-9).toNumber());
|
|
4232
4273
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
4233
4274
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -5117,41 +5158,37 @@ var generateCoreQuickMethod = ({
|
|
|
5117
5158
|
const sCoinName = builder.utils.parseSCoinName(poolCoinName);
|
|
5118
5159
|
if (!sCoinName)
|
|
5119
5160
|
throw new Error(`No sCoin for ${poolCoinName}`);
|
|
5120
|
-
const {
|
|
5121
|
-
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
|
|
5125
|
-
);
|
|
5161
|
+
const {
|
|
5162
|
+
leftCoin,
|
|
5163
|
+
takeCoin: sCoins2,
|
|
5164
|
+
totalAmount
|
|
5165
|
+
} = await builder.selectSCoin(txBlock, sCoinName, amount, sender);
|
|
5126
5166
|
txBlock.transferObjects([leftCoin], sender);
|
|
5127
|
-
const
|
|
5128
|
-
const txResult = txBlock.withdraw(marketCoin, poolCoinName);
|
|
5167
|
+
const marketCoins2 = txBlock.burnSCoin(sCoinName, sCoins2);
|
|
5129
5168
|
amount -= totalAmount;
|
|
5130
5169
|
try {
|
|
5131
5170
|
if (amount > 0) {
|
|
5132
|
-
const { leftCoin: leftCoin2, takeCoin:
|
|
5171
|
+
const { leftCoin: leftCoin2, takeCoin: walletMarketCoins } = await builder.selectMarketCoin(
|
|
5133
5172
|
txBlock,
|
|
5134
5173
|
marketCoinName,
|
|
5135
5174
|
amount,
|
|
5136
5175
|
sender
|
|
5137
5176
|
);
|
|
5138
5177
|
txBlock.transferObjects([leftCoin2], sender);
|
|
5139
|
-
txBlock.mergeCoins(
|
|
5140
|
-
txBlock.withdraw(takeCoin2, poolCoinName)
|
|
5141
|
-
]);
|
|
5178
|
+
txBlock.mergeCoins(marketCoins2, [walletMarketCoins]);
|
|
5142
5179
|
}
|
|
5143
5180
|
} catch (e) {
|
|
5144
5181
|
}
|
|
5145
|
-
return
|
|
5182
|
+
return txBlock.withdraw(marketCoins2, poolCoinName);
|
|
5146
5183
|
} catch (e) {
|
|
5147
|
-
const { leftCoin, takeCoin } = await builder.selectMarketCoin(
|
|
5184
|
+
const { leftCoin, takeCoin: walletMarketCoins } = await builder.selectMarketCoin(
|
|
5148
5185
|
txBlock,
|
|
5149
5186
|
marketCoinName,
|
|
5150
5187
|
amount,
|
|
5151
5188
|
sender
|
|
5152
5189
|
);
|
|
5153
5190
|
txBlock.transferObjects([leftCoin], sender);
|
|
5154
|
-
return txBlock.withdraw(
|
|
5191
|
+
return txBlock.withdraw(walletMarketCoins, poolCoinName);
|
|
5155
5192
|
}
|
|
5156
5193
|
},
|
|
5157
5194
|
borrowQuick: async (amount, poolCoinName, obligationId, obligationKey) => {
|
|
@@ -6962,6 +6999,14 @@ var ScallopQuery = class {
|
|
|
6962
6999
|
async getTvl(indexer = false) {
|
|
6963
7000
|
return await getTotalValueLocked(this, indexer);
|
|
6964
7001
|
}
|
|
7002
|
+
/**
|
|
7003
|
+
* Get veSca data.
|
|
7004
|
+
* @param veScaKey
|
|
7005
|
+
* @returns veSca
|
|
7006
|
+
*/
|
|
7007
|
+
async getVeSca(veScaKey) {
|
|
7008
|
+
return await getVeSca(this.utils, veScaKey);
|
|
7009
|
+
}
|
|
6965
7010
|
/**
|
|
6966
7011
|
* Get all veSca from walletAdddress
|
|
6967
7012
|
* @param walletAddress
|
|
@@ -7055,6 +7100,12 @@ var ScallopQuery = class {
|
|
|
7055
7100
|
async getFlashLoanFees(assetCoinNames = [...SUPPORT_POOLS]) {
|
|
7056
7101
|
return await getFlashLoanFees(this, assetCoinNames);
|
|
7057
7102
|
}
|
|
7103
|
+
/**
|
|
7104
|
+
* Get supply limit of supply pool
|
|
7105
|
+
*/
|
|
7106
|
+
async getPoolSupplyLimit(poolName) {
|
|
7107
|
+
return await getSupplyLimit(this.utils, poolName);
|
|
7108
|
+
}
|
|
7058
7109
|
};
|
|
7059
7110
|
|
|
7060
7111
|
// src/models/scallopBuilder.ts
|