@scallop-io/sui-scallop-sdk 1.3.2-alpha.2 → 1.3.2
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/constants/queryKeys.d.ts +1 -4
- package/dist/index.js +176 -168
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +176 -168
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/builders/spoolBuilder.ts +4 -0
- package/src/constants/queryKeys.ts +1 -4
- package/src/models/scallopClient.ts +4 -4
- package/src/models/scallopUtils.ts +4 -2
- package/src/queries/coreQuery.ts +6 -4
- package/src/queries/sCoinQuery.ts +1 -1
- package/src/queries/spoolQuery.ts +76 -79
- package/src/queries/vescaQuery.ts +1 -1
|
@@ -40,10 +40,7 @@ export declare const queryKeys: {
|
|
|
40
40
|
})[];
|
|
41
41
|
getDynamicFieldObject: (input?: Partial<GetDynamicFieldObjectParams>) => (string | {
|
|
42
42
|
parentId: string | undefined;
|
|
43
|
-
name:
|
|
44
|
-
type: string | undefined;
|
|
45
|
-
value: unknown;
|
|
46
|
-
};
|
|
43
|
+
name: string;
|
|
47
44
|
})[];
|
|
48
45
|
getTotalVeScaTreasuryAmount: (refreshArgs?: any[], vescaAmountArgs?: (string | SuiObjectData)[]) => (string | {
|
|
49
46
|
refreshArgs: string;
|
package/dist/index.js
CHANGED
|
@@ -423,10 +423,7 @@ var queryKeys = {
|
|
|
423
423
|
"getDynamicFieldObject",
|
|
424
424
|
{
|
|
425
425
|
parentId: input?.parentId,
|
|
426
|
-
name:
|
|
427
|
-
type: input?.name?.type,
|
|
428
|
-
value: input?.name?.value
|
|
429
|
-
}
|
|
426
|
+
name: JSON.stringify(input?.name ?? void 0)
|
|
430
427
|
}
|
|
431
428
|
],
|
|
432
429
|
getTotalVeScaTreasuryAmount: (refreshArgs, vescaAmountArgs) => [
|
|
@@ -2394,86 +2391,6 @@ var getSupplyLimit = async (utils, poolName) => {
|
|
|
2394
2391
|
return parsedData.data.fields.value;
|
|
2395
2392
|
};
|
|
2396
2393
|
|
|
2397
|
-
// src/queries/isolatedAsset.ts
|
|
2398
|
-
var import_zod2 = require("zod");
|
|
2399
|
-
var isolatedAssetZod = import_zod2.z.object({
|
|
2400
|
-
dataType: import_zod2.z.string(),
|
|
2401
|
-
type: import_zod2.z.string(),
|
|
2402
|
-
hasPublicTransfer: import_zod2.z.boolean(),
|
|
2403
|
-
fields: import_zod2.z.object({
|
|
2404
|
-
id: import_zod2.z.object({
|
|
2405
|
-
id: import_zod2.z.string()
|
|
2406
|
-
}),
|
|
2407
|
-
name: import_zod2.z.object({
|
|
2408
|
-
type: import_zod2.z.string()
|
|
2409
|
-
}),
|
|
2410
|
-
value: import_zod2.z.boolean()
|
|
2411
|
-
})
|
|
2412
|
-
});
|
|
2413
|
-
var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
|
|
2414
|
-
var getIsolatedAssets = async (address) => {
|
|
2415
|
-
try {
|
|
2416
|
-
const marketObject = address.get("core.market");
|
|
2417
|
-
const isolatedAssets = [];
|
|
2418
|
-
if (!marketObject)
|
|
2419
|
-
return isolatedAssets;
|
|
2420
|
-
let hasNextPage = false;
|
|
2421
|
-
let nextCursor = null;
|
|
2422
|
-
const isIsolatedDynamicField = (dynamicField) => {
|
|
2423
|
-
return dynamicField.name.type === ISOLATED_ASSET_KEY;
|
|
2424
|
-
};
|
|
2425
|
-
do {
|
|
2426
|
-
const response = await address.cache.queryGetDynamicFields({
|
|
2427
|
-
parentId: marketObject,
|
|
2428
|
-
cursor: nextCursor,
|
|
2429
|
-
limit: 10
|
|
2430
|
-
});
|
|
2431
|
-
if (!response)
|
|
2432
|
-
break;
|
|
2433
|
-
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
2434
|
-
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
2435
|
-
if (response && response.hasNextPage && response.nextCursor) {
|
|
2436
|
-
hasNextPage = true;
|
|
2437
|
-
nextCursor = response.nextCursor;
|
|
2438
|
-
} else {
|
|
2439
|
-
hasNextPage = false;
|
|
2440
|
-
}
|
|
2441
|
-
} while (hasNextPage);
|
|
2442
|
-
return isolatedAssets;
|
|
2443
|
-
} catch (e) {
|
|
2444
|
-
console.error(e);
|
|
2445
|
-
return [];
|
|
2446
|
-
}
|
|
2447
|
-
};
|
|
2448
|
-
var isIsolatedAsset = async (utils, coinName) => {
|
|
2449
|
-
try {
|
|
2450
|
-
const marketObject = utils.address.get("core.market");
|
|
2451
|
-
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
2452
|
-
"getDynamicFields",
|
|
2453
|
-
marketObject
|
|
2454
|
-
]);
|
|
2455
|
-
if (cachedData) {
|
|
2456
|
-
const coinType2 = utils.parseCoinType(coinName);
|
|
2457
|
-
return cachedData.includes(coinType2);
|
|
2458
|
-
}
|
|
2459
|
-
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
2460
|
-
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2461
|
-
parentId: marketObject,
|
|
2462
|
-
name: {
|
|
2463
|
-
type: ISOLATED_ASSET_KEY,
|
|
2464
|
-
value: coinType
|
|
2465
|
-
}
|
|
2466
|
-
});
|
|
2467
|
-
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2468
|
-
if (!parsedData.success)
|
|
2469
|
-
return false;
|
|
2470
|
-
return parsedData.data.fields.value;
|
|
2471
|
-
} catch (e) {
|
|
2472
|
-
console.error(e);
|
|
2473
|
-
return false;
|
|
2474
|
-
}
|
|
2475
|
-
};
|
|
2476
|
-
|
|
2477
2394
|
// src/queries/coreQuery.ts
|
|
2478
2395
|
var queryMarket = async (query, indexer = false) => {
|
|
2479
2396
|
const coinPrices = await query.utils.getCoinPrices();
|
|
@@ -2503,7 +2420,7 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2503
2420
|
const queryTarget = `${packageId}::market_query::market_data`;
|
|
2504
2421
|
const args = [marketId];
|
|
2505
2422
|
const queryResult = await query.cache.queryInspectTxn({ queryTarget, args });
|
|
2506
|
-
const marketData = queryResult?.events[0]
|
|
2423
|
+
const marketData = queryResult?.events[0]?.parsedJson;
|
|
2507
2424
|
for (const pool of marketData?.pools ?? []) {
|
|
2508
2425
|
const coinType = (0, import_utils3.normalizeStructTag)(pool.type.name);
|
|
2509
2426
|
const poolCoinName = query.utils.parseCoinNameFromType(coinType);
|
|
@@ -2558,7 +2475,8 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2558
2475
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2559
2476
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2560
2477
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2561
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2478
|
+
// isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2479
|
+
isIsolated: false,
|
|
2562
2480
|
maxSupplyCoin,
|
|
2563
2481
|
...calculatedMarketPoolData
|
|
2564
2482
|
};
|
|
@@ -2786,7 +2704,8 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2786
2704
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2787
2705
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2788
2706
|
maxSupplyCoin,
|
|
2789
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2707
|
+
// isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2708
|
+
isIsolated: false,
|
|
2790
2709
|
...calculatedMarketPoolData
|
|
2791
2710
|
};
|
|
2792
2711
|
}
|
|
@@ -3145,6 +3064,9 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
|
|
|
3145
3064
|
var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPrices) => {
|
|
3146
3065
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
3147
3066
|
marketPool = marketPool || await query.getMarketPool(coinName, indexer);
|
|
3067
|
+
if (!marketPool) {
|
|
3068
|
+
throw new Error("Fail to fetch marketPool");
|
|
3069
|
+
}
|
|
3148
3070
|
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
3149
3071
|
const rewardPoolId = query.address.get(
|
|
3150
3072
|
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
@@ -3154,10 +3076,10 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
3154
3076
|
if (indexer) {
|
|
3155
3077
|
const spoolIndexer = await query.indexer.getSpool(marketCoinName);
|
|
3156
3078
|
const coinName2 = query.utils.parseCoinName(marketCoinName);
|
|
3157
|
-
const
|
|
3079
|
+
const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
3158
3080
|
spoolIndexer.coinPrice = coinPrices?.[coinName2] || spoolIndexer.coinPrice;
|
|
3159
3081
|
spoolIndexer.marketCoinPrice = (coinPrices?.[coinName2] ?? 0) * (marketPool ? marketPool.conversionRate : 0) || spoolIndexer.marketCoinPrice;
|
|
3160
|
-
spoolIndexer.rewardCoinPrice = coinPrices?.[
|
|
3082
|
+
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] || spoolIndexer.rewardCoinPrice;
|
|
3161
3083
|
return spoolIndexer;
|
|
3162
3084
|
}
|
|
3163
3085
|
const spoolObjectResponse = await query.cache.queryGetObjects(
|
|
@@ -3166,70 +3088,71 @@ var getSpool = async (query, marketCoinName, indexer = false, marketPool, coinPr
|
|
|
3166
3088
|
showContent: true
|
|
3167
3089
|
}
|
|
3168
3090
|
);
|
|
3169
|
-
if (
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3091
|
+
if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
|
|
3092
|
+
throw new Error("Fail to fetch spoolObjectResponse!");
|
|
3093
|
+
}
|
|
3094
|
+
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
3095
|
+
coinPrices = coinPrices || await query.utils.getCoinPrices([coinName, rewardCoinName]);
|
|
3096
|
+
const spoolObject = spoolObjectResponse[0];
|
|
3097
|
+
const rewardPoolObject = spoolObjectResponse[1];
|
|
3098
|
+
if (spoolObject.content && "fields" in spoolObject.content) {
|
|
3099
|
+
const spoolFields = spoolObject.content.fields;
|
|
3100
|
+
const parsedSpoolData = parseOriginSpoolData({
|
|
3101
|
+
stakeType: spoolFields.stake_type,
|
|
3102
|
+
maxDistributedPoint: spoolFields.max_distributed_point,
|
|
3103
|
+
distributedPoint: spoolFields.distributed_point,
|
|
3104
|
+
distributedPointPerPeriod: spoolFields.distributed_point_per_period,
|
|
3105
|
+
pointDistributionTime: spoolFields.point_distribution_time,
|
|
3106
|
+
maxStake: spoolFields.max_stakes,
|
|
3107
|
+
stakes: spoolFields.stakes,
|
|
3108
|
+
index: spoolFields.index,
|
|
3109
|
+
createdAt: spoolFields.created_at,
|
|
3110
|
+
lastUpdate: spoolFields.last_update
|
|
3111
|
+
});
|
|
3112
|
+
const marketCoinPrice = (coinPrices?.[coinName] ?? 0) * marketPool.conversionRate;
|
|
3113
|
+
const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
|
|
3114
|
+
const calculatedSpoolData = calculateSpoolData(
|
|
3115
|
+
parsedSpoolData,
|
|
3116
|
+
marketCoinPrice,
|
|
3117
|
+
marketCoinDecimal
|
|
3118
|
+
);
|
|
3119
|
+
if (rewardPoolObject.content && "fields" in rewardPoolObject.content) {
|
|
3120
|
+
const rewardPoolFields = rewardPoolObject.content.fields;
|
|
3121
|
+
const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData({
|
|
3122
|
+
claimed_rewards: rewardPoolFields.claimed_rewards,
|
|
3123
|
+
exchange_rate_numerator: rewardPoolFields.exchange_rate_numerator,
|
|
3124
|
+
exchange_rate_denominator: rewardPoolFields.exchange_rate_denominator,
|
|
3125
|
+
rewards: rewardPoolFields.rewards,
|
|
3126
|
+
spool_id: rewardPoolFields.spool_id
|
|
3187
3127
|
});
|
|
3188
|
-
const
|
|
3189
|
-
const
|
|
3190
|
-
const
|
|
3128
|
+
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
3129
|
+
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
3130
|
+
const calculatedRewardPoolData = calculateSpoolRewardPoolData(
|
|
3191
3131
|
parsedSpoolData,
|
|
3132
|
+
parsedSpoolRewardPoolData,
|
|
3133
|
+
calculatedSpoolData,
|
|
3134
|
+
rewardCoinPrice,
|
|
3135
|
+
rewardCoinDecimal
|
|
3136
|
+
);
|
|
3137
|
+
spool = {
|
|
3138
|
+
marketCoinName,
|
|
3139
|
+
symbol: query.utils.parseSymbol(marketCoinName),
|
|
3140
|
+
coinType: query.utils.parseCoinType(coinName),
|
|
3141
|
+
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
3142
|
+
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
3143
|
+
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
3144
|
+
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
3145
|
+
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
3192
3146
|
marketCoinPrice,
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
spool_id: rewardPoolFields.spool_id
|
|
3203
|
-
});
|
|
3204
|
-
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
3205
|
-
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
3206
|
-
const calculatedRewardPoolData = calculateSpoolRewardPoolData(
|
|
3207
|
-
parsedSpoolData,
|
|
3208
|
-
parsedSpoolRewardPoolData,
|
|
3209
|
-
calculatedSpoolData,
|
|
3210
|
-
rewardCoinPrice,
|
|
3211
|
-
rewardCoinDecimal
|
|
3212
|
-
);
|
|
3213
|
-
spool = {
|
|
3214
|
-
marketCoinName,
|
|
3215
|
-
symbol: query.utils.parseSymbol(marketCoinName),
|
|
3216
|
-
coinType: query.utils.parseCoinType(coinName),
|
|
3217
|
-
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
3218
|
-
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
3219
|
-
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
3220
|
-
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
3221
|
-
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
3222
|
-
marketCoinPrice,
|
|
3223
|
-
rewardCoinPrice,
|
|
3224
|
-
maxPoint: parsedSpoolData.maxPoint,
|
|
3225
|
-
distributedPoint: parsedSpoolData.distributedPoint,
|
|
3226
|
-
maxStake: parsedSpoolData.maxStake,
|
|
3227
|
-
...calculatedSpoolData,
|
|
3228
|
-
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
3229
|
-
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
3230
|
-
...calculatedRewardPoolData
|
|
3231
|
-
};
|
|
3232
|
-
}
|
|
3147
|
+
rewardCoinPrice,
|
|
3148
|
+
maxPoint: parsedSpoolData.maxPoint,
|
|
3149
|
+
distributedPoint: parsedSpoolData.distributedPoint,
|
|
3150
|
+
maxStake: parsedSpoolData.maxStake,
|
|
3151
|
+
...calculatedSpoolData,
|
|
3152
|
+
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
3153
|
+
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
3154
|
+
...calculatedRewardPoolData
|
|
3155
|
+
};
|
|
3233
3156
|
}
|
|
3234
3157
|
}
|
|
3235
3158
|
return spool;
|
|
@@ -4201,7 +4124,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
|
|
|
4201
4124
|
var import_bignumber5 = __toESM(require("bignumber.js"));
|
|
4202
4125
|
var import_sui_kit3 = require("@scallop-io/sui-kit");
|
|
4203
4126
|
var import_bcs = require("@mysten/sui/bcs");
|
|
4204
|
-
var
|
|
4127
|
+
var import_zod2 = require("zod");
|
|
4205
4128
|
var import_assert = __toESM(require("assert"));
|
|
4206
4129
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
4207
4130
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
@@ -4250,10 +4173,10 @@ var getVeScas = async ({
|
|
|
4250
4173
|
}
|
|
4251
4174
|
return result;
|
|
4252
4175
|
};
|
|
4253
|
-
var SuiObjectRefZod =
|
|
4254
|
-
objectId:
|
|
4255
|
-
digest:
|
|
4256
|
-
version:
|
|
4176
|
+
var SuiObjectRefZod = import_zod2.z.object({
|
|
4177
|
+
objectId: import_zod2.z.string(),
|
|
4178
|
+
digest: import_zod2.z.string(),
|
|
4179
|
+
version: import_zod2.z.string()
|
|
4257
4180
|
});
|
|
4258
4181
|
var getVeSca = async (utils, veScaKey, ownerAddress) => {
|
|
4259
4182
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
@@ -4337,7 +4260,7 @@ var getTotalVeScaTreasuryAmount = async (utils, veScaTreasury) => {
|
|
|
4337
4260
|
}
|
|
4338
4261
|
});
|
|
4339
4262
|
const results = res.results;
|
|
4340
|
-
if (results && results[1]
|
|
4263
|
+
if (results && results[1]?.returnValues) {
|
|
4341
4264
|
const value = Uint8Array.from(results[1].returnValues[0][0]);
|
|
4342
4265
|
const type = results[1].returnValues[0][1];
|
|
4343
4266
|
(0, import_assert.default)(type === "u64", "Result type is not u64");
|
|
@@ -4387,16 +4310,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
|
|
|
4387
4310
|
|
|
4388
4311
|
// src/queries/loyaltyProgramQuery.ts
|
|
4389
4312
|
var import_bignumber6 = __toESM(require("bignumber.js"));
|
|
4390
|
-
var
|
|
4391
|
-
var rewardPoolFieldsZod =
|
|
4392
|
-
balance:
|
|
4393
|
-
enable_claim:
|
|
4313
|
+
var import_zod3 = require("zod");
|
|
4314
|
+
var rewardPoolFieldsZod = import_zod3.z.object({
|
|
4315
|
+
balance: import_zod3.z.string(),
|
|
4316
|
+
enable_claim: import_zod3.z.boolean()
|
|
4394
4317
|
}).transform((value) => ({
|
|
4395
4318
|
totalPoolReward: (0, import_bignumber6.default)(value.balance).shiftedBy(-9).toNumber(),
|
|
4396
4319
|
isClaimEnabled: value.enable_claim
|
|
4397
4320
|
}));
|
|
4398
|
-
var userRewardFieldsZod =
|
|
4399
|
-
value:
|
|
4321
|
+
var userRewardFieldsZod = import_zod3.z.object({
|
|
4322
|
+
value: import_zod3.z.string()
|
|
4400
4323
|
}).transform((value) => (0, import_bignumber6.default)(value.value).shiftedBy(-9).toNumber());
|
|
4401
4324
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
4402
4325
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -4822,10 +4745,10 @@ var ScallopUtils = class {
|
|
|
4822
4745
|
const feed = await this.cache.queryClient.fetchQuery({
|
|
4823
4746
|
queryKey: queryKeys.oracle.getPythLatestPriceFeed(priceId),
|
|
4824
4747
|
queryFn: async () => {
|
|
4825
|
-
return await pythConnection.getLatestPriceFeeds([priceId]);
|
|
4748
|
+
return await pythConnection.getLatestPriceFeeds([priceId]) ?? [];
|
|
4826
4749
|
}
|
|
4827
4750
|
});
|
|
4828
|
-
if (feed) {
|
|
4751
|
+
if (feed[0]) {
|
|
4829
4752
|
const data = parseDataFromPythPriceFeed(feed[0], this.address);
|
|
4830
4753
|
this._priceMap.set(coinName, {
|
|
4831
4754
|
price: data.price,
|
|
@@ -5571,6 +5494,9 @@ var generateSpoolQuickMethod = ({
|
|
|
5571
5494
|
stakeMarketCoinName,
|
|
5572
5495
|
stakeAccountId
|
|
5573
5496
|
);
|
|
5497
|
+
if (stakeAccountIds.length === 0) {
|
|
5498
|
+
throw new Error(`No stakeAccountIds found for user ${sender}`);
|
|
5499
|
+
}
|
|
5574
5500
|
if (typeof amountOrMarketCoin === "number") {
|
|
5575
5501
|
const stakedMarketCoinAmount = await stakeHelper(
|
|
5576
5502
|
builder,
|
|
@@ -6701,7 +6627,7 @@ var getSCoinTotalSupply = async ({
|
|
|
6701
6627
|
typeArgs
|
|
6702
6628
|
});
|
|
6703
6629
|
const results = queryResults?.results;
|
|
6704
|
-
if (results && results[0]
|
|
6630
|
+
if (results && results[0]?.returnValues) {
|
|
6705
6631
|
const value = Uint8Array.from(results[0].returnValues[0][0]);
|
|
6706
6632
|
const type = results[0].returnValues[0][1];
|
|
6707
6633
|
(0, import_assert2.default)(type === "u64", "Result type is not u64");
|
|
@@ -6776,6 +6702,88 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
|
|
|
6776
6702
|
|
|
6777
6703
|
// src/models/scallopQuery.ts
|
|
6778
6704
|
var import_utils23 = require("@mysten/sui/utils");
|
|
6705
|
+
|
|
6706
|
+
// src/queries/isolatedAsset.ts
|
|
6707
|
+
var import_zod4 = require("zod");
|
|
6708
|
+
var isolatedAssetZod = import_zod4.z.object({
|
|
6709
|
+
dataType: import_zod4.z.string(),
|
|
6710
|
+
type: import_zod4.z.string(),
|
|
6711
|
+
hasPublicTransfer: import_zod4.z.boolean(),
|
|
6712
|
+
fields: import_zod4.z.object({
|
|
6713
|
+
id: import_zod4.z.object({
|
|
6714
|
+
id: import_zod4.z.string()
|
|
6715
|
+
}),
|
|
6716
|
+
name: import_zod4.z.object({
|
|
6717
|
+
type: import_zod4.z.string()
|
|
6718
|
+
}),
|
|
6719
|
+
value: import_zod4.z.boolean()
|
|
6720
|
+
})
|
|
6721
|
+
});
|
|
6722
|
+
var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
|
|
6723
|
+
var getIsolatedAssets = async (address) => {
|
|
6724
|
+
try {
|
|
6725
|
+
const marketObject = address.get("core.market");
|
|
6726
|
+
const isolatedAssets = [];
|
|
6727
|
+
if (!marketObject)
|
|
6728
|
+
return isolatedAssets;
|
|
6729
|
+
let hasNextPage = false;
|
|
6730
|
+
let nextCursor = null;
|
|
6731
|
+
const isIsolatedDynamicField = (dynamicField) => {
|
|
6732
|
+
return dynamicField.name.type === ISOLATED_ASSET_KEY;
|
|
6733
|
+
};
|
|
6734
|
+
do {
|
|
6735
|
+
const response = await address.cache.queryGetDynamicFields({
|
|
6736
|
+
parentId: marketObject,
|
|
6737
|
+
cursor: nextCursor,
|
|
6738
|
+
limit: 10
|
|
6739
|
+
});
|
|
6740
|
+
if (!response)
|
|
6741
|
+
break;
|
|
6742
|
+
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
6743
|
+
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
6744
|
+
if (response && response.hasNextPage && response.nextCursor) {
|
|
6745
|
+
hasNextPage = true;
|
|
6746
|
+
nextCursor = response.nextCursor;
|
|
6747
|
+
} else {
|
|
6748
|
+
hasNextPage = false;
|
|
6749
|
+
}
|
|
6750
|
+
} while (hasNextPage);
|
|
6751
|
+
return isolatedAssets;
|
|
6752
|
+
} catch (e) {
|
|
6753
|
+
console.error(e);
|
|
6754
|
+
return [];
|
|
6755
|
+
}
|
|
6756
|
+
};
|
|
6757
|
+
var isIsolatedAsset = async (utils, coinName) => {
|
|
6758
|
+
try {
|
|
6759
|
+
const marketObject = utils.address.get("core.market");
|
|
6760
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
6761
|
+
"getDynamicFields",
|
|
6762
|
+
marketObject
|
|
6763
|
+
]);
|
|
6764
|
+
if (cachedData) {
|
|
6765
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
6766
|
+
return cachedData.includes(coinType2);
|
|
6767
|
+
}
|
|
6768
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
6769
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
6770
|
+
parentId: marketObject,
|
|
6771
|
+
name: {
|
|
6772
|
+
type: ISOLATED_ASSET_KEY,
|
|
6773
|
+
value: coinType
|
|
6774
|
+
}
|
|
6775
|
+
});
|
|
6776
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
6777
|
+
if (!parsedData.success)
|
|
6778
|
+
return false;
|
|
6779
|
+
return parsedData.data.fields.value;
|
|
6780
|
+
} catch (e) {
|
|
6781
|
+
console.error(e);
|
|
6782
|
+
return false;
|
|
6783
|
+
}
|
|
6784
|
+
};
|
|
6785
|
+
|
|
6786
|
+
// src/models/scallopQuery.ts
|
|
6779
6787
|
var ScallopQuery = class {
|
|
6780
6788
|
constructor(params, instance) {
|
|
6781
6789
|
this.params = params;
|
|
@@ -7612,7 +7620,7 @@ var ScallopClient = class {
|
|
|
7612
7620
|
const sender = walletAddress || this.walletAddress;
|
|
7613
7621
|
txBlock.setSender(sender);
|
|
7614
7622
|
const obligations = await this.query.getObligations(sender);
|
|
7615
|
-
const specificObligationId = obligationId || obligations
|
|
7623
|
+
const specificObligationId = obligationId || obligations[0]?.id;
|
|
7616
7624
|
if (specificObligationId) {
|
|
7617
7625
|
await txBlock.addCollateralQuick(
|
|
7618
7626
|
amount,
|
|
@@ -7683,7 +7691,7 @@ var ScallopClient = class {
|
|
|
7683
7691
|
txBlock.setSender(sender);
|
|
7684
7692
|
const stakeMarketCoinName = this.utils.parseMarketCoinName(stakeCoinName);
|
|
7685
7693
|
const stakeAccounts = await this.query.getStakeAccounts(stakeMarketCoinName);
|
|
7686
|
-
const targetStakeAccount = stakeAccountId || stakeAccounts[0]
|
|
7694
|
+
const targetStakeAccount = stakeAccountId || stakeAccounts[0]?.id;
|
|
7687
7695
|
const marketCoin = await txBlock.depositQuick(amount, stakeCoinName, false);
|
|
7688
7696
|
if (targetStakeAccount) {
|
|
7689
7697
|
await txBlock.stakeQuick(
|
|
@@ -7818,7 +7826,7 @@ var ScallopClient = class {
|
|
|
7818
7826
|
const sender = walletAddress || this.walletAddress;
|
|
7819
7827
|
txBlock.setSender(sender);
|
|
7820
7828
|
const stakeAccounts = await this.query.getStakeAccounts(stakeMarketCoinName);
|
|
7821
|
-
const targetStakeAccount = stakeAccountId || stakeAccounts[0]
|
|
7829
|
+
const targetStakeAccount = stakeAccountId || stakeAccounts[0]?.id;
|
|
7822
7830
|
if (targetStakeAccount) {
|
|
7823
7831
|
await txBlock.stakeQuick(amount, stakeMarketCoinName, targetStakeAccount);
|
|
7824
7832
|
} else {
|