@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.mjs
CHANGED
|
@@ -2192,6 +2192,43 @@ import { SuiPriceServiceConnection } from "@pythnetwork/pyth-sui-js";
|
|
|
2192
2192
|
// src/queries/coreQuery.ts
|
|
2193
2193
|
import { normalizeStructTag as normalizeStructTag3 } from "@mysten/sui.js/utils";
|
|
2194
2194
|
import BigNumber2 from "bignumber.js";
|
|
2195
|
+
|
|
2196
|
+
// src/queries/supplyLimit.ts
|
|
2197
|
+
import { z as zod } from "zod";
|
|
2198
|
+
var supplyLimitZod = zod.object({
|
|
2199
|
+
dataType: zod.string(),
|
|
2200
|
+
type: zod.string(),
|
|
2201
|
+
hasPublicTransfer: zod.boolean(),
|
|
2202
|
+
fields: zod.object({
|
|
2203
|
+
id: zod.object({
|
|
2204
|
+
id: zod.string()
|
|
2205
|
+
}),
|
|
2206
|
+
name: zod.object({
|
|
2207
|
+
type: zod.string()
|
|
2208
|
+
}),
|
|
2209
|
+
value: zod.string()
|
|
2210
|
+
})
|
|
2211
|
+
});
|
|
2212
|
+
var SUPPLY_LIMIT_TYPE = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
|
|
2213
|
+
var getSupplyLimit = async (utils, poolName) => {
|
|
2214
|
+
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2215
|
+
const marketObject = utils.address.get("core.market");
|
|
2216
|
+
if (!marketObject)
|
|
2217
|
+
return null;
|
|
2218
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2219
|
+
parentId: marketObject,
|
|
2220
|
+
name: {
|
|
2221
|
+
type: SUPPLY_LIMIT_TYPE,
|
|
2222
|
+
value: poolCoinType
|
|
2223
|
+
}
|
|
2224
|
+
});
|
|
2225
|
+
const parsedData = supplyLimitZod.safeParse(object?.data?.content);
|
|
2226
|
+
if (!parsedData.success)
|
|
2227
|
+
return null;
|
|
2228
|
+
return parsedData.data.fields.value;
|
|
2229
|
+
};
|
|
2230
|
+
|
|
2231
|
+
// src/queries/coreQuery.ts
|
|
2195
2232
|
var queryMarket = async (query, indexer = false) => {
|
|
2196
2233
|
const coinPrices = await query.utils.getCoinPrices();
|
|
2197
2234
|
const pools = {};
|
|
@@ -2251,6 +2288,7 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2251
2288
|
query.utils,
|
|
2252
2289
|
parsedMarketPoolData
|
|
2253
2290
|
);
|
|
2291
|
+
const supplyLimit = await getSupplyLimit(query.utils, poolCoinName) ?? "0";
|
|
2254
2292
|
pools[poolCoinName] = {
|
|
2255
2293
|
coinName: poolCoinName,
|
|
2256
2294
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2269,6 +2307,7 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2269
2307
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2270
2308
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2271
2309
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2310
|
+
supplyLimit,
|
|
2272
2311
|
...calculatedMarketPoolData
|
|
2273
2312
|
};
|
|
2274
2313
|
}
|
|
@@ -2472,6 +2511,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2472
2511
|
query.utils,
|
|
2473
2512
|
parsedMarketPoolData
|
|
2474
2513
|
);
|
|
2514
|
+
const supplyLimit = await getSupplyLimit(query.utils, poolCoinName) ?? "0";
|
|
2475
2515
|
marketPool = {
|
|
2476
2516
|
coinName: poolCoinName,
|
|
2477
2517
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2490,6 +2530,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2490
2530
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2491
2531
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2492
2532
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2533
|
+
supplyLimit,
|
|
2493
2534
|
...calculatedMarketPoolData
|
|
2494
2535
|
};
|
|
2495
2536
|
}
|
|
@@ -3964,7 +4005,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
|
|
|
3964
4005
|
import BigNumber5 from "bignumber.js";
|
|
3965
4006
|
import { SUI_CLOCK_OBJECT_ID, SuiTxBlock as SuiTxBlock2 } from "@scallop-io/sui-kit";
|
|
3966
4007
|
import { bcs } from "@mysten/sui.js/bcs";
|
|
3967
|
-
import { z as
|
|
4008
|
+
import { z as zod2 } from "zod";
|
|
3968
4009
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
3969
4010
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
3970
4011
|
const veScaObjId = utils.address.get("vesca.object");
|
|
@@ -4008,10 +4049,10 @@ var getVeScas = async ({
|
|
|
4008
4049
|
await Promise.allSettled(tasks);
|
|
4009
4050
|
return veScas.filter(Boolean).sort((a, b) => b.currentVeScaBalance - a.currentVeScaBalance);
|
|
4010
4051
|
};
|
|
4011
|
-
var SuiObjectRefZod =
|
|
4012
|
-
objectId:
|
|
4013
|
-
digest:
|
|
4014
|
-
version:
|
|
4052
|
+
var SuiObjectRefZod = zod2.object({
|
|
4053
|
+
objectId: zod2.string(),
|
|
4054
|
+
digest: zod2.string(),
|
|
4055
|
+
version: zod2.string()
|
|
4015
4056
|
});
|
|
4016
4057
|
var getVeSca = async (utils, veScaKey, ownerAddress) => {
|
|
4017
4058
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
@@ -4144,16 +4185,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
|
|
|
4144
4185
|
|
|
4145
4186
|
// src/queries/loyaltyProgramQuery.ts
|
|
4146
4187
|
import BigNumber6 from "bignumber.js";
|
|
4147
|
-
import { z as
|
|
4148
|
-
var rewardPoolFieldsZod =
|
|
4149
|
-
balance:
|
|
4150
|
-
enable_claim:
|
|
4188
|
+
import { z as zod3 } from "zod";
|
|
4189
|
+
var rewardPoolFieldsZod = zod3.object({
|
|
4190
|
+
balance: zod3.string(),
|
|
4191
|
+
enable_claim: zod3.boolean()
|
|
4151
4192
|
}).transform((value) => ({
|
|
4152
4193
|
totalPoolReward: BigNumber6(value.balance).shiftedBy(-9).toNumber(),
|
|
4153
4194
|
isClaimEnabled: value.enable_claim
|
|
4154
4195
|
}));
|
|
4155
|
-
var userRewardFieldsZod =
|
|
4156
|
-
value:
|
|
4196
|
+
var userRewardFieldsZod = zod3.object({
|
|
4197
|
+
value: zod3.string()
|
|
4157
4198
|
}).transform((value) => BigNumber6(value.value).shiftedBy(-9).toNumber());
|
|
4158
4199
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
4159
4200
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -5046,41 +5087,37 @@ var generateCoreQuickMethod = ({
|
|
|
5046
5087
|
const sCoinName = builder.utils.parseSCoinName(poolCoinName);
|
|
5047
5088
|
if (!sCoinName)
|
|
5048
5089
|
throw new Error(`No sCoin for ${poolCoinName}`);
|
|
5049
|
-
const {
|
|
5050
|
-
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
);
|
|
5090
|
+
const {
|
|
5091
|
+
leftCoin,
|
|
5092
|
+
takeCoin: sCoins2,
|
|
5093
|
+
totalAmount
|
|
5094
|
+
} = await builder.selectSCoin(txBlock, sCoinName, amount, sender);
|
|
5055
5095
|
txBlock.transferObjects([leftCoin], sender);
|
|
5056
|
-
const
|
|
5057
|
-
const txResult = txBlock.withdraw(marketCoin, poolCoinName);
|
|
5096
|
+
const marketCoins2 = txBlock.burnSCoin(sCoinName, sCoins2);
|
|
5058
5097
|
amount -= totalAmount;
|
|
5059
5098
|
try {
|
|
5060
5099
|
if (amount > 0) {
|
|
5061
|
-
const { leftCoin: leftCoin2, takeCoin:
|
|
5100
|
+
const { leftCoin: leftCoin2, takeCoin: walletMarketCoins } = await builder.selectMarketCoin(
|
|
5062
5101
|
txBlock,
|
|
5063
5102
|
marketCoinName,
|
|
5064
5103
|
amount,
|
|
5065
5104
|
sender
|
|
5066
5105
|
);
|
|
5067
5106
|
txBlock.transferObjects([leftCoin2], sender);
|
|
5068
|
-
txBlock.mergeCoins(
|
|
5069
|
-
txBlock.withdraw(takeCoin2, poolCoinName)
|
|
5070
|
-
]);
|
|
5107
|
+
txBlock.mergeCoins(marketCoins2, [walletMarketCoins]);
|
|
5071
5108
|
}
|
|
5072
5109
|
} catch (e) {
|
|
5073
5110
|
}
|
|
5074
|
-
return
|
|
5111
|
+
return txBlock.withdraw(marketCoins2, poolCoinName);
|
|
5075
5112
|
} catch (e) {
|
|
5076
|
-
const { leftCoin, takeCoin } = await builder.selectMarketCoin(
|
|
5113
|
+
const { leftCoin, takeCoin: walletMarketCoins } = await builder.selectMarketCoin(
|
|
5077
5114
|
txBlock,
|
|
5078
5115
|
marketCoinName,
|
|
5079
5116
|
amount,
|
|
5080
5117
|
sender
|
|
5081
5118
|
);
|
|
5082
5119
|
txBlock.transferObjects([leftCoin], sender);
|
|
5083
|
-
return txBlock.withdraw(
|
|
5120
|
+
return txBlock.withdraw(walletMarketCoins, poolCoinName);
|
|
5084
5121
|
}
|
|
5085
5122
|
},
|
|
5086
5123
|
borrowQuick: async (amount, poolCoinName, obligationId, obligationKey) => {
|
|
@@ -6902,6 +6939,14 @@ var ScallopQuery = class {
|
|
|
6902
6939
|
async getTvl(indexer = false) {
|
|
6903
6940
|
return await getTotalValueLocked(this, indexer);
|
|
6904
6941
|
}
|
|
6942
|
+
/**
|
|
6943
|
+
* Get veSca data.
|
|
6944
|
+
* @param veScaKey
|
|
6945
|
+
* @returns veSca
|
|
6946
|
+
*/
|
|
6947
|
+
async getVeSca(veScaKey) {
|
|
6948
|
+
return await getVeSca(this.utils, veScaKey);
|
|
6949
|
+
}
|
|
6905
6950
|
/**
|
|
6906
6951
|
* Get all veSca from walletAdddress
|
|
6907
6952
|
* @param walletAddress
|
|
@@ -6995,6 +7040,12 @@ var ScallopQuery = class {
|
|
|
6995
7040
|
async getFlashLoanFees(assetCoinNames = [...SUPPORT_POOLS]) {
|
|
6996
7041
|
return await getFlashLoanFees(this, assetCoinNames);
|
|
6997
7042
|
}
|
|
7043
|
+
/**
|
|
7044
|
+
* Get supply limit of supply pool
|
|
7045
|
+
*/
|
|
7046
|
+
async getPoolSupplyLimit(poolName) {
|
|
7047
|
+
return await getSupplyLimit(this.utils, poolName);
|
|
7048
|
+
}
|
|
6998
7049
|
};
|
|
6999
7050
|
|
|
7000
7051
|
// src/models/scallopBuilder.ts
|