@scallop-io/sui-scallop-sdk 1.4.14 → 1.4.15-rc.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/poolAddress.d.ts +15 -4
- package/dist/constants/queryKeys.d.ts +1 -2
- package/dist/constants/tokenBucket.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +873 -416
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +826 -371
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopCache.d.ts +1 -0
- package/dist/models/scallopQuery.d.ts +21 -17
- package/dist/queries/coreQuery.d.ts +18 -19
- package/dist/queries/index.d.ts +2 -0
- package/dist/queries/isolatedAssetQuery.d.ts +2 -2
- package/dist/queries/objectsQuery.d.ts +3 -0
- package/dist/queries/poolAddressesQuery.d.ts +16 -0
- package/dist/queries/spoolQuery.d.ts +6 -2
- package/dist/test.d.ts +1 -0
- package/dist/types/query/core.d.ts +22 -5
- package/dist/types/query/spool.d.ts +20 -0
- package/dist/types/utils.d.ts +7 -2
- package/dist/utils/core.d.ts +2 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/util.d.ts +1 -0
- package/package.json +1 -1
- package/src/constants/poolAddress.ts +291 -29
- package/src/constants/queryKeys.ts +5 -5
- package/src/constants/tokenBucket.ts +1 -1
- package/src/index.ts +1 -0
- package/src/models/scallopCache.ts +43 -11
- package/src/models/scallopQuery.ts +25 -20
- package/src/queries/borrowIncentiveQuery.ts +1 -1
- package/src/queries/coreQuery.ts +378 -248
- package/src/queries/index.ts +2 -0
- package/src/queries/isolatedAssetQuery.ts +37 -31
- package/src/queries/objectsQuery.ts +20 -0
- package/src/queries/poolAddressesQuery.ts +140 -0
- package/src/queries/portfolioQuery.ts +14 -7
- package/src/queries/priceQuery.ts +3 -1
- package/src/queries/spoolQuery.ts +189 -122
- package/src/test.ts +17 -0
- package/src/types/query/core.ts +21 -5
- package/src/types/query/spool.ts +21 -0
- package/src/types/utils.ts +8 -3
- package/src/utils/core.ts +18 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/query.ts +16 -2
- package/src/utils/tokenBucket.ts +2 -2
- package/src/utils/util.ts +8 -0
package/dist/index.mjs
CHANGED
|
@@ -328,67 +328,213 @@ var FlashLoanFeeObjectMap = {
|
|
|
328
328
|
|
|
329
329
|
// src/constants/poolAddress.ts
|
|
330
330
|
var POOL_ADDRESSES = {
|
|
331
|
-
usdc: {
|
|
332
|
-
lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
|
|
333
|
-
collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af"
|
|
334
|
-
},
|
|
335
331
|
sbeth: {
|
|
336
|
-
lendingPoolAddress: "
|
|
337
|
-
collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f"
|
|
332
|
+
lendingPoolAddress: "0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",
|
|
333
|
+
collateralPoolAddress: "0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",
|
|
334
|
+
borrowDynamic: "0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",
|
|
335
|
+
interestModel: "0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",
|
|
336
|
+
riskModel: "0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",
|
|
337
|
+
borrowFeeKey: "0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",
|
|
338
|
+
supplyLimitKey: "0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",
|
|
339
|
+
borrowLimitKey: "0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",
|
|
340
|
+
isolatedAssetKey: void 0,
|
|
341
|
+
spool: void 0,
|
|
342
|
+
spoolReward: void 0
|
|
338
343
|
},
|
|
339
|
-
|
|
340
|
-
lendingPoolAddress: "
|
|
341
|
-
collateralPoolAddress: "
|
|
344
|
+
usdc: {
|
|
345
|
+
lendingPoolAddress: "0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",
|
|
346
|
+
collateralPoolAddress: "0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",
|
|
347
|
+
borrowDynamic: "0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",
|
|
348
|
+
interestModel: "0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",
|
|
349
|
+
riskModel: "0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",
|
|
350
|
+
borrowFeeKey: "0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",
|
|
351
|
+
supplyLimitKey: "0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",
|
|
352
|
+
borrowLimitKey: "0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",
|
|
353
|
+
isolatedAssetKey: void 0,
|
|
354
|
+
spool: "0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",
|
|
355
|
+
spoolReward: "0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"
|
|
342
356
|
},
|
|
343
357
|
wbtc: {
|
|
344
358
|
lendingPoolAddress: "0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",
|
|
345
|
-
collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3"
|
|
359
|
+
collateralPoolAddress: "0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",
|
|
360
|
+
borrowDynamic: "0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",
|
|
361
|
+
interestModel: "0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",
|
|
362
|
+
riskModel: "0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",
|
|
363
|
+
borrowFeeKey: "0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",
|
|
364
|
+
supplyLimitKey: "0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",
|
|
365
|
+
borrowLimitKey: "0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",
|
|
366
|
+
isolatedAssetKey: void 0,
|
|
367
|
+
spool: void 0,
|
|
368
|
+
spoolReward: void 0
|
|
346
369
|
},
|
|
347
370
|
wusdc: {
|
|
348
|
-
lendingPoolAddress: "
|
|
349
|
-
collateralPoolAddress: "
|
|
371
|
+
lendingPoolAddress: "0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",
|
|
372
|
+
collateralPoolAddress: "0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",
|
|
373
|
+
borrowDynamic: "0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",
|
|
374
|
+
interestModel: "0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",
|
|
375
|
+
riskModel: "0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",
|
|
376
|
+
borrowFeeKey: "0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",
|
|
377
|
+
supplyLimitKey: "0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",
|
|
378
|
+
borrowLimitKey: "0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",
|
|
379
|
+
isolatedAssetKey: void 0,
|
|
380
|
+
spool: "0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",
|
|
381
|
+
spoolReward: "0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"
|
|
382
|
+
},
|
|
383
|
+
weth: {
|
|
384
|
+
lendingPoolAddress: "0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",
|
|
385
|
+
collateralPoolAddress: "0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",
|
|
386
|
+
borrowDynamic: "0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",
|
|
387
|
+
interestModel: "0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",
|
|
388
|
+
riskModel: "0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",
|
|
389
|
+
borrowFeeKey: "0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",
|
|
390
|
+
supplyLimitKey: "0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",
|
|
391
|
+
borrowLimitKey: "0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",
|
|
392
|
+
isolatedAssetKey: void 0,
|
|
393
|
+
spool: "0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",
|
|
394
|
+
spoolReward: "0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"
|
|
350
395
|
},
|
|
351
396
|
wusdt: {
|
|
352
397
|
lendingPoolAddress: "0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",
|
|
353
|
-
collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3"
|
|
398
|
+
collateralPoolAddress: "0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",
|
|
399
|
+
borrowDynamic: "0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",
|
|
400
|
+
interestModel: "0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",
|
|
401
|
+
riskModel: "0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",
|
|
402
|
+
borrowFeeKey: "0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",
|
|
403
|
+
supplyLimitKey: "0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",
|
|
404
|
+
borrowLimitKey: "0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",
|
|
405
|
+
isolatedAssetKey: void 0,
|
|
406
|
+
spool: "0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",
|
|
407
|
+
spoolReward: "0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"
|
|
354
408
|
},
|
|
355
409
|
sui: {
|
|
356
410
|
lendingPoolAddress: "0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",
|
|
357
|
-
collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb"
|
|
411
|
+
collateralPoolAddress: "0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",
|
|
412
|
+
borrowDynamic: "0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",
|
|
413
|
+
interestModel: "0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",
|
|
414
|
+
riskModel: "0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",
|
|
415
|
+
borrowFeeKey: "0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",
|
|
416
|
+
supplyLimitKey: "0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",
|
|
417
|
+
borrowLimitKey: "0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",
|
|
418
|
+
isolatedAssetKey: void 0,
|
|
419
|
+
spool: "0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",
|
|
420
|
+
spoolReward: "0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"
|
|
358
421
|
},
|
|
359
422
|
wapt: {
|
|
360
423
|
lendingPoolAddress: "0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",
|
|
361
|
-
collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c"
|
|
424
|
+
collateralPoolAddress: "0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",
|
|
425
|
+
borrowDynamic: "0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",
|
|
426
|
+
interestModel: "0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",
|
|
427
|
+
riskModel: "0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",
|
|
428
|
+
borrowFeeKey: "0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",
|
|
429
|
+
supplyLimitKey: void 0,
|
|
430
|
+
borrowLimitKey: void 0,
|
|
431
|
+
isolatedAssetKey: void 0,
|
|
432
|
+
spool: void 0,
|
|
433
|
+
spoolReward: void 0
|
|
434
|
+
},
|
|
435
|
+
afsui: {
|
|
436
|
+
lendingPoolAddress: "0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",
|
|
437
|
+
collateralPoolAddress: "0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",
|
|
438
|
+
borrowDynamic: "0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",
|
|
439
|
+
interestModel: "0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",
|
|
440
|
+
riskModel: "0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",
|
|
441
|
+
borrowFeeKey: "0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",
|
|
442
|
+
supplyLimitKey: "0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",
|
|
443
|
+
borrowLimitKey: "0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",
|
|
444
|
+
isolatedAssetKey: void 0,
|
|
445
|
+
spool: "0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",
|
|
446
|
+
spoolReward: "0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"
|
|
362
447
|
},
|
|
363
448
|
wsol: {
|
|
364
449
|
lendingPoolAddress: "0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",
|
|
365
|
-
collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f"
|
|
450
|
+
collateralPoolAddress: "0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",
|
|
451
|
+
borrowDynamic: "0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",
|
|
452
|
+
interestModel: "0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",
|
|
453
|
+
riskModel: "0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",
|
|
454
|
+
borrowFeeKey: "0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",
|
|
455
|
+
supplyLimitKey: "0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",
|
|
456
|
+
borrowLimitKey: "0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",
|
|
457
|
+
isolatedAssetKey: void 0,
|
|
458
|
+
spool: void 0,
|
|
459
|
+
spoolReward: void 0
|
|
366
460
|
},
|
|
367
461
|
cetus: {
|
|
368
462
|
lendingPoolAddress: "0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",
|
|
369
|
-
collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a"
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
463
|
+
collateralPoolAddress: "0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",
|
|
464
|
+
borrowDynamic: "0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",
|
|
465
|
+
interestModel: "0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",
|
|
466
|
+
riskModel: "0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",
|
|
467
|
+
borrowFeeKey: "0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",
|
|
468
|
+
supplyLimitKey: "0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",
|
|
469
|
+
borrowLimitKey: "0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",
|
|
470
|
+
isolatedAssetKey: void 0,
|
|
471
|
+
spool: "0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",
|
|
472
|
+
spoolReward: "0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"
|
|
374
473
|
},
|
|
375
474
|
hasui: {
|
|
376
475
|
lendingPoolAddress: "0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",
|
|
377
|
-
collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d"
|
|
476
|
+
collateralPoolAddress: "0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",
|
|
477
|
+
borrowDynamic: "0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",
|
|
478
|
+
interestModel: "0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",
|
|
479
|
+
riskModel: "0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",
|
|
480
|
+
borrowFeeKey: "0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",
|
|
481
|
+
supplyLimitKey: "0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",
|
|
482
|
+
borrowLimitKey: "0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",
|
|
483
|
+
isolatedAssetKey: void 0,
|
|
484
|
+
spool: "0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",
|
|
485
|
+
spoolReward: "0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"
|
|
378
486
|
},
|
|
379
487
|
vsui: {
|
|
380
488
|
lendingPoolAddress: "0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",
|
|
381
|
-
collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e"
|
|
489
|
+
collateralPoolAddress: "0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",
|
|
490
|
+
borrowDynamic: "0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",
|
|
491
|
+
interestModel: "0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",
|
|
492
|
+
riskModel: "0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",
|
|
493
|
+
borrowFeeKey: "0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",
|
|
494
|
+
supplyLimitKey: "0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",
|
|
495
|
+
borrowLimitKey: "0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",
|
|
496
|
+
isolatedAssetKey: void 0,
|
|
497
|
+
spool: "0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",
|
|
498
|
+
spoolReward: "0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"
|
|
382
499
|
},
|
|
383
500
|
sca: {
|
|
384
501
|
lendingPoolAddress: "0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",
|
|
385
|
-
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31"
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
502
|
+
collateralPoolAddress: "0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",
|
|
503
|
+
borrowDynamic: "0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",
|
|
504
|
+
interestModel: "0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",
|
|
505
|
+
riskModel: "0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",
|
|
506
|
+
borrowFeeKey: "0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",
|
|
507
|
+
supplyLimitKey: "0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",
|
|
508
|
+
borrowLimitKey: "0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",
|
|
509
|
+
isolatedAssetKey: void 0,
|
|
510
|
+
spool: void 0,
|
|
511
|
+
spoolReward: void 0
|
|
389
512
|
},
|
|
390
513
|
deep: {
|
|
391
|
-
lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03"
|
|
514
|
+
lendingPoolAddress: "0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",
|
|
515
|
+
collateralPoolAddress: void 0,
|
|
516
|
+
borrowDynamic: "0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",
|
|
517
|
+
interestModel: "0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",
|
|
518
|
+
riskModel: void 0,
|
|
519
|
+
borrowFeeKey: "0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",
|
|
520
|
+
supplyLimitKey: "0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",
|
|
521
|
+
borrowLimitKey: "0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",
|
|
522
|
+
isolatedAssetKey: "0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",
|
|
523
|
+
spool: void 0,
|
|
524
|
+
spoolReward: void 0
|
|
525
|
+
},
|
|
526
|
+
fud: {
|
|
527
|
+
lendingPoolAddress: "0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",
|
|
528
|
+
collateralPoolAddress: void 0,
|
|
529
|
+
borrowDynamic: "0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",
|
|
530
|
+
interestModel: "0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",
|
|
531
|
+
riskModel: void 0,
|
|
532
|
+
borrowFeeKey: "0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",
|
|
533
|
+
supplyLimitKey: "0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",
|
|
534
|
+
borrowLimitKey: "0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",
|
|
535
|
+
isolatedAssetKey: "0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",
|
|
536
|
+
spool: void 0,
|
|
537
|
+
spoolReward: void 0
|
|
392
538
|
}
|
|
393
539
|
};
|
|
394
540
|
|
|
@@ -439,7 +585,11 @@ var queryKeys = {
|
|
|
439
585
|
typeArgs: !typeArgs ? void 0 : JSON.stringify(typeArgs)
|
|
440
586
|
}
|
|
441
587
|
],
|
|
442
|
-
getObject: (objectId,
|
|
588
|
+
getObject: (objectId, options) => [
|
|
589
|
+
"rpc",
|
|
590
|
+
"getObject",
|
|
591
|
+
{ options, objectId }
|
|
592
|
+
],
|
|
443
593
|
getObjects: (objectIds, walletAddress, options) => [
|
|
444
594
|
"rpc",
|
|
445
595
|
"getObjects",
|
|
@@ -973,7 +1123,7 @@ var TEST_ADDRESSES = {
|
|
|
973
1123
|
|
|
974
1124
|
// src/constants/tokenBucket.ts
|
|
975
1125
|
var DEFAULT_TOKENS_PER_INTERVAL = 10;
|
|
976
|
-
var DEFAULT_INTERVAL_IN_MS =
|
|
1126
|
+
var DEFAULT_INTERVAL_IN_MS = 250;
|
|
977
1127
|
|
|
978
1128
|
// src/constants/vesca.ts
|
|
979
1129
|
var UNLOCK_ROUND_DURATION = 60 * 60 * 24;
|
|
@@ -1120,7 +1270,10 @@ var parseOriginMarketPoolData = (originMarketPoolData) => {
|
|
|
1120
1270
|
borrowRateOnMidKink: Number(originMarketPoolData.borrowRateOnMidKink.value) / 2 ** 32,
|
|
1121
1271
|
highKink: Number(originMarketPoolData.highKink.value) / 2 ** 32,
|
|
1122
1272
|
midKink: Number(originMarketPoolData.midKink.value) / 2 ** 32,
|
|
1123
|
-
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount)
|
|
1273
|
+
minBorrowAmount: Number(originMarketPoolData.minBorrowAmount),
|
|
1274
|
+
isIsolated: originMarketPoolData.isIsolated,
|
|
1275
|
+
supplyLimit: Number(originMarketPoolData.supplyLimit),
|
|
1276
|
+
borrowLimit: Number(originMarketPoolData.borrowLimit)
|
|
1124
1277
|
};
|
|
1125
1278
|
};
|
|
1126
1279
|
var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
@@ -1172,6 +1325,7 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1172
1325
|
borrowApyOnHighKink: utils.parseAprToApy(borrowAprOnHighKink),
|
|
1173
1326
|
borrowAprOnMidKink,
|
|
1174
1327
|
borrowApyOnMidKink: utils.parseAprToApy(borrowAprOnMidKink),
|
|
1328
|
+
coinDecimal,
|
|
1175
1329
|
maxBorrowApr,
|
|
1176
1330
|
maxBorrowApy: utils.parseAprToApy(maxBorrowApr),
|
|
1177
1331
|
borrowApr: Math.min(borrowApr, maxBorrowApr),
|
|
@@ -1190,17 +1344,21 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
|
|
|
1190
1344
|
utilizationRate: utilizationRate.toNumber(),
|
|
1191
1345
|
supplyApr: supplyApr.toNumber(),
|
|
1192
1346
|
supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
|
|
1193
|
-
conversionRate: conversionRate.toNumber()
|
|
1347
|
+
conversionRate: conversionRate.toNumber(),
|
|
1348
|
+
isIsolated: parsedMarketPoolData.isIsolated,
|
|
1349
|
+
maxSupplyCoin: BigNumber(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
|
|
1350
|
+
maxBorrowCoin: BigNumber(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
|
|
1194
1351
|
};
|
|
1195
1352
|
};
|
|
1196
1353
|
var parseOriginMarketCollateralData = (originMarketCollateralData) => {
|
|
1197
1354
|
const divisor = 2 ** 32;
|
|
1198
1355
|
return {
|
|
1199
1356
|
coinType: normalizeStructTag(originMarketCollateralData.type.name),
|
|
1357
|
+
isIsolated: originMarketCollateralData.isIsolated,
|
|
1200
1358
|
collateralFactor: Number(originMarketCollateralData.collateralFactor.value) / divisor,
|
|
1201
1359
|
liquidationFactor: Number(originMarketCollateralData.liquidationFactor.value) / divisor,
|
|
1202
1360
|
liquidationDiscount: Number(originMarketCollateralData.liquidationDiscount.value) / divisor,
|
|
1203
|
-
|
|
1361
|
+
liquidationPenalty: Number(originMarketCollateralData.liquidationPenalty.value) / divisor,
|
|
1204
1362
|
liquidationReserveFactor: Number(originMarketCollateralData.liquidationReserveFactor.value) / divisor,
|
|
1205
1363
|
maxCollateralAmount: Number(originMarketCollateralData.maxCollateralAmount),
|
|
1206
1364
|
totalCollateralAmount: Number(
|
|
@@ -1220,6 +1378,8 @@ var calculateMarketCollateralData = (utils, parsedMarketCollateralData) => {
|
|
|
1220
1378
|
parsedMarketCollateralData.totalCollateralAmount
|
|
1221
1379
|
).shiftedBy(-1 * coinDecimal);
|
|
1222
1380
|
return {
|
|
1381
|
+
coinDecimal,
|
|
1382
|
+
isIsolated: parsedMarketCollateralData.isIsolated,
|
|
1223
1383
|
maxDepositAmount: parsedMarketCollateralData.maxCollateralAmount,
|
|
1224
1384
|
maxDepositCoin: maxCollateralCoin.toNumber(),
|
|
1225
1385
|
depositAmount: parsedMarketCollateralData.totalCollateralAmount,
|
|
@@ -1550,6 +1710,13 @@ var findClosestUnlockRound = (unlockAtInSecondTimestamp) => {
|
|
|
1550
1710
|
}
|
|
1551
1711
|
return Math.floor(closestTwelveAM.getTime() / 1e3);
|
|
1552
1712
|
};
|
|
1713
|
+
var partitionArray = (array, chunkSize) => {
|
|
1714
|
+
const result = [];
|
|
1715
|
+
for (let i = 0; i < array.length; i += chunkSize) {
|
|
1716
|
+
result.push(array.slice(i, i + chunkSize));
|
|
1717
|
+
}
|
|
1718
|
+
return result;
|
|
1719
|
+
};
|
|
1553
1720
|
|
|
1554
1721
|
// src/utils/tokenBucket.ts
|
|
1555
1722
|
var TokenBucket = class {
|
|
@@ -1577,7 +1744,7 @@ var TokenBucket = class {
|
|
|
1577
1744
|
return false;
|
|
1578
1745
|
}
|
|
1579
1746
|
};
|
|
1580
|
-
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor =
|
|
1747
|
+
var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVAL_IN_MS, maxRetries = 15, backoffFactor = 1.25) => {
|
|
1581
1748
|
let retries = 0;
|
|
1582
1749
|
const tryRequest = async () => {
|
|
1583
1750
|
if (tokenBucket.removeTokens(1)) {
|
|
@@ -1586,7 +1753,6 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
|
|
|
1586
1753
|
} else if (retries < maxRetries) {
|
|
1587
1754
|
retries++;
|
|
1588
1755
|
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
1589
|
-
console.error(`Rate limit exceeded, retrying in ${delay} ms`);
|
|
1590
1756
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
1591
1757
|
return tryRequest();
|
|
1592
1758
|
} else {
|
|
@@ -1622,6 +1788,22 @@ function withIndexerFallback(method) {
|
|
|
1622
1788
|
};
|
|
1623
1789
|
}
|
|
1624
1790
|
|
|
1791
|
+
// src/utils/core.ts
|
|
1792
|
+
var parseObjectAs = (object) => {
|
|
1793
|
+
if (!(object && object.content && "fields" in object.content))
|
|
1794
|
+
throw new Error(`Failed to parse object`);
|
|
1795
|
+
const fields = object.content.fields;
|
|
1796
|
+
if (typeof fields === "object" && "value" in fields) {
|
|
1797
|
+
const value = fields.value;
|
|
1798
|
+
if (typeof value === "object" && "fields" in value)
|
|
1799
|
+
return value.fields;
|
|
1800
|
+
return value;
|
|
1801
|
+
} else if (typeof fields === "object") {
|
|
1802
|
+
return fields;
|
|
1803
|
+
}
|
|
1804
|
+
return fields;
|
|
1805
|
+
};
|
|
1806
|
+
|
|
1625
1807
|
// src/models/scallopCache.ts
|
|
1626
1808
|
var ScallopCache = class {
|
|
1627
1809
|
constructor(suiKit, walletAddress, cacheOptions, tokenBucket, queryClient) {
|
|
@@ -1656,6 +1838,13 @@ var ScallopCache = class {
|
|
|
1656
1838
|
})
|
|
1657
1839
|
);
|
|
1658
1840
|
}
|
|
1841
|
+
retryFn(errCount, e) {
|
|
1842
|
+
if (errCount === 5)
|
|
1843
|
+
return false;
|
|
1844
|
+
if (e.status === 429)
|
|
1845
|
+
return true;
|
|
1846
|
+
return false;
|
|
1847
|
+
}
|
|
1659
1848
|
/**
|
|
1660
1849
|
* @description Provides cache for inspectTxn of the SuiKit.
|
|
1661
1850
|
* @param QueryInspectTxnParams
|
|
@@ -1668,9 +1857,17 @@ var ScallopCache = class {
|
|
|
1668
1857
|
typeArgs
|
|
1669
1858
|
}) {
|
|
1670
1859
|
const txBlock = new SuiTxBlock();
|
|
1671
|
-
|
|
1860
|
+
const resolvedArgs = await Promise.all(
|
|
1861
|
+
args.map(async (arg) => {
|
|
1862
|
+
if (typeof arg === "string") {
|
|
1863
|
+
return (await this.queryGetObject(arg))?.data;
|
|
1864
|
+
}
|
|
1865
|
+
return arg;
|
|
1866
|
+
})
|
|
1867
|
+
);
|
|
1868
|
+
txBlock.moveCall(queryTarget, resolvedArgs, typeArgs);
|
|
1672
1869
|
const query = await this.queryClient.fetchQuery({
|
|
1673
|
-
retry:
|
|
1870
|
+
retry: this.retryFn,
|
|
1674
1871
|
retryDelay: 1e3,
|
|
1675
1872
|
queryKey: queryKeys.rpc.getInspectTxn(queryTarget, args, typeArgs),
|
|
1676
1873
|
queryFn: async () => {
|
|
@@ -1690,9 +1887,9 @@ var ScallopCache = class {
|
|
|
1690
1887
|
*/
|
|
1691
1888
|
async queryGetObject(objectId, options) {
|
|
1692
1889
|
return this.queryClient.fetchQuery({
|
|
1693
|
-
retry:
|
|
1890
|
+
retry: this.retryFn,
|
|
1694
1891
|
retryDelay: 1e3,
|
|
1695
|
-
queryKey: queryKeys.rpc.getObject(objectId,
|
|
1892
|
+
queryKey: queryKeys.rpc.getObject(objectId, options),
|
|
1696
1893
|
queryFn: async () => {
|
|
1697
1894
|
return await callWithRateLimit(
|
|
1698
1895
|
this.tokenBucket,
|
|
@@ -1715,7 +1912,7 @@ var ScallopCache = class {
|
|
|
1715
1912
|
if (objectIds.length === 0)
|
|
1716
1913
|
return [];
|
|
1717
1914
|
return this.queryClient.fetchQuery({
|
|
1718
|
-
retry:
|
|
1915
|
+
retry: this.retryFn,
|
|
1719
1916
|
retryDelay: 1e3,
|
|
1720
1917
|
queryKey: queryKeys.rpc.getObjects(
|
|
1721
1918
|
objectIds,
|
|
@@ -1723,10 +1920,28 @@ var ScallopCache = class {
|
|
|
1723
1920
|
options
|
|
1724
1921
|
),
|
|
1725
1922
|
queryFn: async () => {
|
|
1726
|
-
|
|
1923
|
+
const results = await callWithRateLimit(
|
|
1727
1924
|
this.tokenBucket,
|
|
1728
1925
|
async () => await this.suiKit.getObjects(objectIds, options)
|
|
1729
1926
|
);
|
|
1927
|
+
if (results) {
|
|
1928
|
+
results.forEach((result) => {
|
|
1929
|
+
this.queryClient.setQueriesData(
|
|
1930
|
+
{
|
|
1931
|
+
exact: false,
|
|
1932
|
+
queryKey: queryKeys.rpc.getObject(result.objectId, options)
|
|
1933
|
+
},
|
|
1934
|
+
{
|
|
1935
|
+
data: result,
|
|
1936
|
+
error: null
|
|
1937
|
+
},
|
|
1938
|
+
{
|
|
1939
|
+
updatedAt: Date.now()
|
|
1940
|
+
}
|
|
1941
|
+
);
|
|
1942
|
+
});
|
|
1943
|
+
}
|
|
1944
|
+
return results;
|
|
1730
1945
|
}
|
|
1731
1946
|
});
|
|
1732
1947
|
}
|
|
@@ -1737,7 +1952,7 @@ var ScallopCache = class {
|
|
|
1737
1952
|
*/
|
|
1738
1953
|
async queryGetOwnedObjects(input) {
|
|
1739
1954
|
return this.queryClient.fetchQuery({
|
|
1740
|
-
retry:
|
|
1955
|
+
retry: this.retryFn,
|
|
1741
1956
|
retryDelay: 1e3,
|
|
1742
1957
|
queryKey: queryKeys.rpc.getOwnedObjects(input),
|
|
1743
1958
|
queryFn: async () => {
|
|
@@ -1750,7 +1965,7 @@ var ScallopCache = class {
|
|
|
1750
1965
|
}
|
|
1751
1966
|
async queryGetDynamicFields(input) {
|
|
1752
1967
|
return this.queryClient.fetchQuery({
|
|
1753
|
-
retry:
|
|
1968
|
+
retry: this.retryFn,
|
|
1754
1969
|
retryDelay: 1e3,
|
|
1755
1970
|
queryKey: queryKeys.rpc.getDynamicFields(input),
|
|
1756
1971
|
queryFn: async () => {
|
|
@@ -1763,7 +1978,7 @@ var ScallopCache = class {
|
|
|
1763
1978
|
}
|
|
1764
1979
|
async queryGetDynamicFieldObject(input) {
|
|
1765
1980
|
return this.queryClient.fetchQuery({
|
|
1766
|
-
retry:
|
|
1981
|
+
retry: this.retryFn,
|
|
1767
1982
|
retryDelay: (attemptIndex) => Math.min(1e3 * attemptIndex, 8e3),
|
|
1768
1983
|
queryKey: queryKeys.rpc.getDynamicFieldObject(input),
|
|
1769
1984
|
queryFn: async () => {
|
|
@@ -1776,7 +1991,7 @@ var ScallopCache = class {
|
|
|
1776
1991
|
}
|
|
1777
1992
|
async queryGetAllCoinBalances(owner) {
|
|
1778
1993
|
return this.queryClient.fetchQuery({
|
|
1779
|
-
retry:
|
|
1994
|
+
retry: this.retryFn,
|
|
1780
1995
|
retryDelay: 1e3,
|
|
1781
1996
|
queryKey: queryKeys.rpc.getAllCoinBalances(owner),
|
|
1782
1997
|
queryFn: async () => {
|
|
@@ -2495,7 +2710,7 @@ var getBorrowIncentivePools = async (query, borrowIncentiveCoinNames = [
|
|
|
2495
2710
|
...SUPPORT_BORROW_INCENTIVE_POOLS
|
|
2496
2711
|
], indexer = false, marketPools, coinPrices) => {
|
|
2497
2712
|
const borrowIncentivePools = {};
|
|
2498
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices, indexer });
|
|
2713
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices, indexer })).pools;
|
|
2499
2714
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools });
|
|
2500
2715
|
if (indexer) {
|
|
2501
2716
|
const borrowIncentivePoolsIndexer = await query.indexer.getBorrowIncentivePools();
|
|
@@ -2728,9 +2943,14 @@ var isolatedAssetZod = zod2.object({
|
|
|
2728
2943
|
})
|
|
2729
2944
|
});
|
|
2730
2945
|
var isolatedAssetKeyType = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
2731
|
-
var getIsolatedAssets = async (
|
|
2946
|
+
var getIsolatedAssets = async (query) => {
|
|
2947
|
+
if (SUPPORT_POOLS.every((t) => !!POOL_ADDRESSES[t])) {
|
|
2948
|
+
return SUPPORT_POOLS.filter(
|
|
2949
|
+
(t) => !!POOL_ADDRESSES[t]?.isolatedAssetKey && !!POOL_ADDRESSES[t]?.coinType
|
|
2950
|
+
).map((t) => POOL_ADDRESSES[t]?.coinType);
|
|
2951
|
+
}
|
|
2732
2952
|
try {
|
|
2733
|
-
const marketObject = address.get("core.market");
|
|
2953
|
+
const marketObject = query.address.get("core.market");
|
|
2734
2954
|
const isolatedAssets = [];
|
|
2735
2955
|
if (!marketObject)
|
|
2736
2956
|
return isolatedAssets;
|
|
@@ -2740,7 +2960,7 @@ var getIsolatedAssets = async (address) => {
|
|
|
2740
2960
|
return dynamicField.name.type === isolatedAssetKeyType;
|
|
2741
2961
|
};
|
|
2742
2962
|
do {
|
|
2743
|
-
const response = await
|
|
2963
|
+
const response = await query.cache.queryGetDynamicFields({
|
|
2744
2964
|
parentId: marketObject,
|
|
2745
2965
|
cursor: nextCursor,
|
|
2746
2966
|
limit: 10
|
|
@@ -2763,32 +2983,30 @@ var getIsolatedAssets = async (address) => {
|
|
|
2763
2983
|
}
|
|
2764
2984
|
};
|
|
2765
2985
|
var isIsolatedAsset = async (utils, coinName) => {
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2986
|
+
if (POOL_ADDRESSES[coinName]) {
|
|
2987
|
+
return !!POOL_ADDRESSES[coinName].isolatedAssetKey;
|
|
2988
|
+
}
|
|
2989
|
+
const marketObject = utils.address.get("core.market");
|
|
2990
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
2991
|
+
"getDynamicFields",
|
|
2992
|
+
marketObject
|
|
2993
|
+
]);
|
|
2994
|
+
if (cachedData) {
|
|
2995
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
2996
|
+
return cachedData.includes(coinType2);
|
|
2997
|
+
}
|
|
2998
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
2999
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
3000
|
+
parentId: marketObject,
|
|
3001
|
+
name: {
|
|
3002
|
+
type: isolatedAssetKeyType,
|
|
3003
|
+
value: coinType
|
|
2775
3004
|
}
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
name: {
|
|
2780
|
-
type: isolatedAssetKeyType,
|
|
2781
|
-
value: coinType
|
|
2782
|
-
}
|
|
2783
|
-
});
|
|
2784
|
-
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2785
|
-
if (!parsedData.success)
|
|
2786
|
-
return false;
|
|
2787
|
-
return parsedData.data.fields.value;
|
|
2788
|
-
} catch (e) {
|
|
2789
|
-
console.error(e);
|
|
3005
|
+
});
|
|
3006
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
3007
|
+
if (!parsedData.success)
|
|
2790
3008
|
return false;
|
|
2791
|
-
|
|
3009
|
+
return parsedData.data.fields.value;
|
|
2792
3010
|
};
|
|
2793
3011
|
|
|
2794
3012
|
// src/queries/borrowLimitQuery.ts
|
|
@@ -2831,6 +3049,17 @@ var getBorrowLimit = async (utils, poolName) => {
|
|
|
2831
3049
|
}
|
|
2832
3050
|
};
|
|
2833
3051
|
|
|
3052
|
+
// src/queries/objectsQuery.ts
|
|
3053
|
+
var queryMultipleObjects = async (cache, objectIds, options, partitionSize = 50) => {
|
|
3054
|
+
const objectIdsPartition = partitionArray(objectIds, partitionSize);
|
|
3055
|
+
const objects = [];
|
|
3056
|
+
for (const objectIds2 of objectIdsPartition) {
|
|
3057
|
+
const result = await cache.queryGetObjects(objectIds2, options);
|
|
3058
|
+
objects.push(...result);
|
|
3059
|
+
}
|
|
3060
|
+
return objects;
|
|
3061
|
+
};
|
|
3062
|
+
|
|
2834
3063
|
// src/queries/coreQuery.ts
|
|
2835
3064
|
var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
2836
3065
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices() ?? {};
|
|
@@ -2887,19 +3116,15 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2887
3116
|
borrowRateOnMidKink: pool.borrowRateOnMidKink,
|
|
2888
3117
|
highKink: pool.highKink,
|
|
2889
3118
|
midKink: pool.midKink,
|
|
2890
|
-
minBorrowAmount: pool.minBorrowAmount
|
|
3119
|
+
minBorrowAmount: pool.minBorrowAmount,
|
|
3120
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
3121
|
+
supplyLimit: await getSupplyLimit(query.utils, poolCoinName) ?? "0",
|
|
3122
|
+
borrowLimit: await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2891
3123
|
});
|
|
2892
3124
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
2893
3125
|
query.utils,
|
|
2894
3126
|
parsedMarketPoolData
|
|
2895
3127
|
);
|
|
2896
|
-
const coinDecimal = query.utils.getCoinDecimal(poolCoinName);
|
|
2897
|
-
const maxSupplyCoin = BigNumber3(
|
|
2898
|
-
await getSupplyLimit(query.utils, poolCoinName) ?? "0"
|
|
2899
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2900
|
-
const maxBorrowCoin = BigNumber3(
|
|
2901
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
2902
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
2903
3128
|
pools[poolCoinName] = {
|
|
2904
3129
|
coinName: poolCoinName,
|
|
2905
3130
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
@@ -2909,7 +3134,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2909
3134
|
query.utils.parseMarketCoinName(poolCoinName)
|
|
2910
3135
|
),
|
|
2911
3136
|
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
2912
|
-
coinDecimal,
|
|
2913
3137
|
coinPrice,
|
|
2914
3138
|
highKink: parsedMarketPoolData.highKink,
|
|
2915
3139
|
midKink: parsedMarketPoolData.midKink,
|
|
@@ -2918,10 +3142,6 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2918
3142
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2919
3143
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2920
3144
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2921
|
-
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2922
|
-
// isIsolated: false,
|
|
2923
|
-
maxSupplyCoin,
|
|
2924
|
-
maxBorrowCoin,
|
|
2925
3145
|
...calculatedMarketPoolData
|
|
2926
3146
|
};
|
|
2927
3147
|
}
|
|
@@ -2937,10 +3157,11 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2937
3157
|
collateralFactor: collateral.collateralFactor,
|
|
2938
3158
|
liquidationFactor: collateral.liquidationFactor,
|
|
2939
3159
|
liquidationDiscount: collateral.liquidationDiscount,
|
|
2940
|
-
|
|
3160
|
+
liquidationPenalty: collateral.liquidationPanelty,
|
|
2941
3161
|
liquidationReserveFactor: collateral.liquidationReserveFactor,
|
|
2942
3162
|
maxCollateralAmount: collateral.maxCollateralAmount,
|
|
2943
|
-
totalCollateralAmount: collateral.totalCollateralAmount
|
|
3163
|
+
totalCollateralAmount: collateral.totalCollateralAmount,
|
|
3164
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
2944
3165
|
});
|
|
2945
3166
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
2946
3167
|
query.utils,
|
|
@@ -2952,14 +3173,12 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2952
3173
|
coinType,
|
|
2953
3174
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
2954
3175
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
2955
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
2956
3176
|
coinPrice,
|
|
2957
3177
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
2958
3178
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
2959
3179
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
2960
|
-
|
|
3180
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
2961
3181
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
2962
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
2963
3182
|
...calculatedMarketCollateralData
|
|
2964
3183
|
};
|
|
2965
3184
|
}
|
|
@@ -2969,44 +3188,216 @@ var queryMarket = async (query, indexer = false, coinPrices) => {
|
|
|
2969
3188
|
// data: marketData,
|
|
2970
3189
|
};
|
|
2971
3190
|
};
|
|
2972
|
-
var
|
|
2973
|
-
const
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
3191
|
+
var queryRequiredMarketObjects = async (query, poolCoinNames) => {
|
|
3192
|
+
const tasks = poolCoinNames.map((t) => ({
|
|
3193
|
+
poolCoinName: t,
|
|
3194
|
+
balanceSheet: POOL_ADDRESSES[t]?.lendingPoolAddress,
|
|
3195
|
+
collateralStat: POOL_ADDRESSES[t]?.collateralPoolAddress,
|
|
3196
|
+
borrowDynamic: POOL_ADDRESSES[t]?.borrowDynamic,
|
|
3197
|
+
interestModel: POOL_ADDRESSES[t]?.interestModel,
|
|
3198
|
+
riskModel: POOL_ADDRESSES[t]?.riskModel,
|
|
3199
|
+
borrowFeeKey: POOL_ADDRESSES[t]?.borrowFeeKey,
|
|
3200
|
+
supplyLimitKey: POOL_ADDRESSES[t]?.supplyLimitKey,
|
|
3201
|
+
borrowLimitKey: POOL_ADDRESSES[t]?.borrowLimitKey,
|
|
3202
|
+
isolatedAssetKey: POOL_ADDRESSES[t]?.isolatedAssetKey
|
|
3203
|
+
}));
|
|
3204
|
+
const [
|
|
3205
|
+
balanceSheetObjects,
|
|
3206
|
+
collateralStatObjects,
|
|
3207
|
+
borrowDynamicObjects,
|
|
3208
|
+
interestModelObjects,
|
|
3209
|
+
riskModelObjects,
|
|
3210
|
+
borrowFeeObjects,
|
|
3211
|
+
supplyLimitObjects,
|
|
3212
|
+
borrowLimitObjects,
|
|
3213
|
+
isolatedAssetObjects
|
|
3214
|
+
] = await Promise.all([
|
|
3215
|
+
queryMultipleObjects(
|
|
3216
|
+
query.cache,
|
|
3217
|
+
tasks.map((task) => task.balanceSheet).filter((t) => !!t)
|
|
3218
|
+
),
|
|
3219
|
+
queryMultipleObjects(
|
|
3220
|
+
query.cache,
|
|
3221
|
+
tasks.map((task) => task.collateralStat).filter((t) => !!t)
|
|
3222
|
+
),
|
|
3223
|
+
queryMultipleObjects(
|
|
3224
|
+
query.cache,
|
|
3225
|
+
tasks.map((task) => task.borrowDynamic).filter((t) => !!t)
|
|
3226
|
+
),
|
|
3227
|
+
queryMultipleObjects(
|
|
3228
|
+
query.cache,
|
|
3229
|
+
tasks.map((task) => task.interestModel).filter((t) => !!t)
|
|
3230
|
+
),
|
|
3231
|
+
queryMultipleObjects(
|
|
3232
|
+
query.cache,
|
|
3233
|
+
tasks.map((task) => task.riskModel).filter((t) => !!t)
|
|
3234
|
+
),
|
|
3235
|
+
queryMultipleObjects(
|
|
3236
|
+
query.cache,
|
|
3237
|
+
tasks.map((task) => task.borrowFeeKey).filter((t) => !!t)
|
|
3238
|
+
),
|
|
3239
|
+
queryMultipleObjects(
|
|
3240
|
+
query.cache,
|
|
3241
|
+
tasks.map((task) => task.supplyLimitKey).filter((t) => !!t)
|
|
3242
|
+
),
|
|
3243
|
+
queryMultipleObjects(
|
|
3244
|
+
query.cache,
|
|
3245
|
+
tasks.map((task) => task.borrowLimitKey).filter((t) => !!t)
|
|
3246
|
+
),
|
|
3247
|
+
queryMultipleObjects(
|
|
3248
|
+
query.cache,
|
|
3249
|
+
tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
|
|
3250
|
+
)
|
|
3251
|
+
]);
|
|
3252
|
+
const mapObjects = (tasks2, fetchedObjects) => {
|
|
3253
|
+
const resultMap = {};
|
|
3254
|
+
let fetchedIndex = 0;
|
|
3255
|
+
for (const task of tasks2) {
|
|
3256
|
+
const key = task[Object.keys(task)[1]];
|
|
3257
|
+
if (key) {
|
|
3258
|
+
resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
|
|
3259
|
+
fetchedIndex++;
|
|
3260
|
+
}
|
|
3261
|
+
}
|
|
3262
|
+
return resultMap;
|
|
3263
|
+
};
|
|
3264
|
+
const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
|
|
3265
|
+
const collateralStatMap = mapObjects(tasks, collateralStatObjects);
|
|
3266
|
+
const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
|
|
3267
|
+
const interestModelMap = mapObjects(tasks, interestModelObjects);
|
|
3268
|
+
const riskModelMap = mapObjects(tasks, riskModelObjects);
|
|
3269
|
+
const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
|
|
3270
|
+
const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
|
|
3271
|
+
const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
|
|
3272
|
+
const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
|
|
3273
|
+
return poolCoinNames.reduce(
|
|
3274
|
+
(acc, name) => {
|
|
3275
|
+
acc[name] = {
|
|
3276
|
+
balanceSheet: balanceSheetMap[name],
|
|
3277
|
+
collateralStat: collateralStatMap[name],
|
|
3278
|
+
borrowDynamic: borrowDynamicMap[name],
|
|
3279
|
+
interestModel: interestModelMap[name],
|
|
3280
|
+
riskModel: riskModelMap[name],
|
|
3281
|
+
borrowFeeKey: borrowFeeMap[name],
|
|
3282
|
+
supplyLimitKey: supplyLimitMap[name],
|
|
3283
|
+
borrowLimitKey: borrowLimitMap[name],
|
|
3284
|
+
isolatedAssetKey: isolatedAssetMap[name]
|
|
3285
|
+
};
|
|
3286
|
+
return acc;
|
|
3287
|
+
},
|
|
3288
|
+
{}
|
|
3289
|
+
);
|
|
3290
|
+
};
|
|
3291
|
+
var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
|
|
2977
3292
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
2978
|
-
const
|
|
3293
|
+
const pools = {};
|
|
3294
|
+
const collaterals = {};
|
|
2979
3295
|
if (indexer) {
|
|
2980
|
-
const
|
|
2981
|
-
const
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
3296
|
+
const marketIndexer = await query.indexer.getMarket();
|
|
3297
|
+
const updatePools = (item) => {
|
|
3298
|
+
item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
|
|
3299
|
+
item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
|
|
3300
|
+
pools[item.coinName] = item;
|
|
3301
|
+
};
|
|
3302
|
+
const updateCollaterals = (item) => {
|
|
3303
|
+
item.coinPrice = coinPrices[item.coinName] ?? item.coinPrice;
|
|
3304
|
+
item.coinWrappedType = query.utils.getCoinWrappedType(item.coinName);
|
|
3305
|
+
collaterals[item.coinName] = item;
|
|
3306
|
+
};
|
|
3307
|
+
Object.values(marketIndexer.pools).forEach(updatePools);
|
|
3308
|
+
Object.values(marketIndexer.collaterals).forEach(updateCollaterals);
|
|
3309
|
+
return {
|
|
3310
|
+
pools,
|
|
3311
|
+
collaterals
|
|
2989
3312
|
};
|
|
2990
|
-
Object.values(marketPoolsIndexer).forEach(updateMarketPool);
|
|
2991
|
-
return marketPools;
|
|
2992
3313
|
}
|
|
3314
|
+
const requiredObjects = await queryRequiredMarketObjects(
|
|
3315
|
+
query,
|
|
3316
|
+
poolCoinNames
|
|
3317
|
+
);
|
|
2993
3318
|
await Promise.allSettled(
|
|
2994
3319
|
poolCoinNames.map(async (poolCoinName) => {
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3320
|
+
try {
|
|
3321
|
+
const result = await getMarketPool(
|
|
3322
|
+
query,
|
|
3323
|
+
poolCoinName,
|
|
3324
|
+
indexer,
|
|
3325
|
+
coinPrices?.[poolCoinName] ?? 0,
|
|
3326
|
+
requiredObjects[poolCoinName]
|
|
3327
|
+
);
|
|
3328
|
+
if (result?.marketPool) {
|
|
3329
|
+
pools[poolCoinName] = result?.marketPool;
|
|
3330
|
+
}
|
|
3331
|
+
if (result?.collateral) {
|
|
3332
|
+
collaterals[poolCoinName] = result.collateral;
|
|
3333
|
+
}
|
|
3334
|
+
} catch (e) {
|
|
3335
|
+
console.error(e);
|
|
3004
3336
|
}
|
|
3005
3337
|
})
|
|
3006
3338
|
);
|
|
3007
|
-
return
|
|
3339
|
+
return {
|
|
3340
|
+
pools,
|
|
3341
|
+
collaterals
|
|
3342
|
+
};
|
|
3008
3343
|
};
|
|
3009
|
-
var
|
|
3344
|
+
var parseMarketPoolObjects = ({
|
|
3345
|
+
balanceSheet,
|
|
3346
|
+
borrowDynamic,
|
|
3347
|
+
collateralStat,
|
|
3348
|
+
interestModel,
|
|
3349
|
+
riskModel,
|
|
3350
|
+
borrowFeeKey,
|
|
3351
|
+
supplyLimitKey,
|
|
3352
|
+
borrowLimitKey,
|
|
3353
|
+
isolatedAssetKey
|
|
3354
|
+
}) => {
|
|
3355
|
+
const _balanceSheet = parseObjectAs(balanceSheet);
|
|
3356
|
+
const _interestModel = parseObjectAs(interestModel);
|
|
3357
|
+
const _borrowDynamic = parseObjectAs(borrowDynamic);
|
|
3358
|
+
const _borrowFee = parseObjectAs(borrowFeeKey);
|
|
3359
|
+
const _supplyLimit = supplyLimitKey ? parseObjectAs(supplyLimitKey) : "0";
|
|
3360
|
+
const _borrowLimit = borrowLimitKey ? parseObjectAs(borrowLimitKey) : "0";
|
|
3361
|
+
const _riskModel = riskModel ? parseObjectAs(riskModel) : void 0;
|
|
3362
|
+
const _collateralStat = collateralStat ? parseObjectAs(collateralStat) : void 0;
|
|
3363
|
+
const parsedOriginMarketCollateral = _riskModel && _collateralStat ? {
|
|
3364
|
+
type: _interestModel.type.fields,
|
|
3365
|
+
isIsolated: !!isolatedAssetKey,
|
|
3366
|
+
collateralFactor: _riskModel.collateral_factor.fields,
|
|
3367
|
+
liquidationFactor: _riskModel.liquidation_factor.fields,
|
|
3368
|
+
liquidationPenalty: _riskModel.liquidation_penalty.fields,
|
|
3369
|
+
liquidationDiscount: _riskModel.liquidation_discount.fields,
|
|
3370
|
+
liquidationReserveFactor: _riskModel.liquidation_revenue_factor.fields,
|
|
3371
|
+
maxCollateralAmount: _riskModel.max_collateral_amount,
|
|
3372
|
+
totalCollateralAmount: _collateralStat.amount
|
|
3373
|
+
} : void 0;
|
|
3374
|
+
return {
|
|
3375
|
+
type: _interestModel.type.fields,
|
|
3376
|
+
maxBorrowRate: _interestModel.max_borrow_rate.fields,
|
|
3377
|
+
interestRate: _borrowDynamic.interest_rate.fields,
|
|
3378
|
+
interestRateScale: _borrowDynamic.interest_rate_scale,
|
|
3379
|
+
borrowIndex: _borrowDynamic.borrow_index,
|
|
3380
|
+
lastUpdated: _borrowDynamic.last_updated,
|
|
3381
|
+
cash: _balanceSheet.cash,
|
|
3382
|
+
debt: _balanceSheet.debt,
|
|
3383
|
+
marketCoinSupply: _balanceSheet.market_coin_supply,
|
|
3384
|
+
reserve: _balanceSheet.revenue,
|
|
3385
|
+
reserveFactor: _interestModel.revenue_factor.fields,
|
|
3386
|
+
borrowWeight: _interestModel.borrow_weight.fields,
|
|
3387
|
+
borrowFeeRate: _borrowFee,
|
|
3388
|
+
baseBorrowRatePerSec: _interestModel.base_borrow_rate_per_sec.fields,
|
|
3389
|
+
borrowRateOnHighKink: _interestModel.borrow_rate_on_high_kink.fields,
|
|
3390
|
+
borrowRateOnMidKink: _interestModel.borrow_rate_on_mid_kink.fields,
|
|
3391
|
+
highKink: _interestModel.high_kink.fields,
|
|
3392
|
+
midKink: _interestModel.mid_kink.fields,
|
|
3393
|
+
minBorrowAmount: _interestModel.min_borrow_amount,
|
|
3394
|
+
isIsolated: !!isolatedAssetKey,
|
|
3395
|
+
supplyLimit: _supplyLimit,
|
|
3396
|
+
borrowLimit: _borrowLimit,
|
|
3397
|
+
parsedOriginMarketCollateral
|
|
3398
|
+
};
|
|
3399
|
+
};
|
|
3400
|
+
var getMarketPool = async (query, poolCoinName, indexer = false, coinPrice, requiredObjects) => {
|
|
3010
3401
|
coinPrice = coinPrice ?? (await query.utils.getCoinPrices())?.[poolCoinName];
|
|
3011
3402
|
if (indexer) {
|
|
3012
3403
|
const marketPoolIndexer = await query.indexer.getMarketPool(poolCoinName);
|
|
@@ -3017,135 +3408,70 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
3017
3408
|
marketPoolIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3018
3409
|
marketPoolIndexer.coinName
|
|
3019
3410
|
);
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
const coinType = query.utils.parseCoinType(poolCoinName);
|
|
3030
|
-
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
3031
|
-
const balanceSheetDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3032
|
-
parentId: balanceSheetParentId,
|
|
3033
|
-
name: {
|
|
3034
|
-
type: "0x1::type_name::TypeName",
|
|
3035
|
-
value: {
|
|
3036
|
-
name: coinType.substring(2)
|
|
3037
|
-
}
|
|
3038
|
-
}
|
|
3039
|
-
});
|
|
3040
|
-
const balanceSheetDynamicFieldObject = balanceSheetDynamicFieldObjectResponse?.data;
|
|
3041
|
-
if (!(balanceSheetDynamicFieldObject && balanceSheetDynamicFieldObject.content && "fields" in balanceSheetDynamicFieldObject.content))
|
|
3042
|
-
throw new Error(
|
|
3043
|
-
`Failed to fetch balanceSheetDynamicFieldObject for ${poolCoinName}: ${balanceSheetDynamicFieldObjectResponse?.error?.code.toString()}`
|
|
3044
|
-
);
|
|
3045
|
-
const balanceSheet = balanceSheetDynamicFieldObject.content.fields.value.fields;
|
|
3046
|
-
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
3047
|
-
const borrowIndexDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3048
|
-
parentId: borrowIndexParentId,
|
|
3049
|
-
name: {
|
|
3050
|
-
type: "0x1::type_name::TypeName",
|
|
3051
|
-
value: {
|
|
3052
|
-
name: coinType.substring(2)
|
|
3053
|
-
}
|
|
3054
|
-
}
|
|
3055
|
-
});
|
|
3056
|
-
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse?.data;
|
|
3057
|
-
if (!(borrowIndexDynamicFieldObject && borrowIndexDynamicFieldObject.content && "fields" in borrowIndexDynamicFieldObject.content))
|
|
3058
|
-
throw new Error(
|
|
3059
|
-
`Failed to fetch borrowIndexDynamicFieldObject for ${poolCoinName}`
|
|
3060
|
-
);
|
|
3061
|
-
const borrowIndex = borrowIndexDynamicFieldObject.content.fields.value.fields;
|
|
3062
|
-
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
3063
|
-
const interestModelDynamicFieldObjectResponse = await query.cache.queryGetDynamicFieldObject({
|
|
3064
|
-
parentId: interestModelParentId,
|
|
3065
|
-
name: {
|
|
3066
|
-
type: "0x1::type_name::TypeName",
|
|
3067
|
-
value: {
|
|
3068
|
-
name: coinType.substring(2)
|
|
3069
|
-
}
|
|
3411
|
+
let marketCollateralIndexer = void 0;
|
|
3412
|
+
if (SUPPORT_COLLATERALS.includes(poolCoinName)) {
|
|
3413
|
+
marketCollateralIndexer = await query.indexer.getMarketCollateral(
|
|
3414
|
+
poolCoinName
|
|
3415
|
+
);
|
|
3416
|
+
marketCollateralIndexer.coinPrice = coinPrice ?? marketCollateralIndexer.coinPrice;
|
|
3417
|
+
marketCollateralIndexer.coinWrappedType = query.utils.getCoinWrappedType(
|
|
3418
|
+
marketCollateralIndexer.coinName
|
|
3419
|
+
);
|
|
3070
3420
|
}
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
const
|
|
3078
|
-
const
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
name: {
|
|
3082
|
-
type: `${BORROW_FEE_PROTOCOL_ID}::market_dynamic_keys::BorrowFeeKey`,
|
|
3083
|
-
value: {
|
|
3084
|
-
type: {
|
|
3085
|
-
name: coinType.substring(2)
|
|
3086
|
-
}
|
|
3087
|
-
}
|
|
3088
|
-
}
|
|
3089
|
-
});
|
|
3090
|
-
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse?.data;
|
|
3091
|
-
if (!(borrowFeeDynamicFieldObject && borrowFeeDynamicFieldObject.content && "fields" in borrowFeeDynamicFieldObject.content))
|
|
3092
|
-
return { value: "0" };
|
|
3093
|
-
return borrowFeeDynamicFieldObject.content.fields.value.fields;
|
|
3094
|
-
};
|
|
3095
|
-
const parsedMarketPoolData = parseOriginMarketPoolData({
|
|
3096
|
-
type: interestModel.type.fields,
|
|
3097
|
-
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
3098
|
-
interestRate: borrowIndex.interest_rate.fields,
|
|
3099
|
-
interestRateScale: borrowIndex.interest_rate_scale,
|
|
3100
|
-
borrowIndex: borrowIndex.borrow_index,
|
|
3101
|
-
lastUpdated: borrowIndex.last_updated,
|
|
3102
|
-
cash: balanceSheet.cash,
|
|
3103
|
-
debt: balanceSheet.debt,
|
|
3104
|
-
marketCoinSupply: balanceSheet.market_coin_supply,
|
|
3105
|
-
reserve: balanceSheet.revenue,
|
|
3106
|
-
reserveFactor: interestModel.revenue_factor.fields,
|
|
3107
|
-
borrowWeight: interestModel.borrow_weight.fields,
|
|
3108
|
-
borrowFeeRate: await getBorrowFee(),
|
|
3109
|
-
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
3110
|
-
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
3111
|
-
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
3112
|
-
highKink: interestModel.high_kink.fields,
|
|
3113
|
-
midKink: interestModel.mid_kink.fields,
|
|
3114
|
-
minBorrowAmount: interestModel.min_borrow_amount
|
|
3115
|
-
});
|
|
3421
|
+
return {
|
|
3422
|
+
marketPool: marketPoolIndexer,
|
|
3423
|
+
collateral: marketCollateralIndexer
|
|
3424
|
+
};
|
|
3425
|
+
}
|
|
3426
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredMarketObjects(query, [poolCoinName]))[poolCoinName]);
|
|
3427
|
+
const parsedMarketPoolObjects = parseMarketPoolObjects(requiredObjects);
|
|
3428
|
+
const parsedMarketPoolData = parseOriginMarketPoolData(
|
|
3429
|
+
parsedMarketPoolObjects
|
|
3430
|
+
);
|
|
3116
3431
|
const calculatedMarketPoolData = calculateMarketPoolData(
|
|
3117
3432
|
query.utils,
|
|
3118
3433
|
parsedMarketPoolData
|
|
3119
3434
|
);
|
|
3120
|
-
const
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
const maxBorrowCoin = BigNumber3(
|
|
3125
|
-
await getBorrowLimit(query.utils, poolCoinName) ?? "0"
|
|
3126
|
-
).shiftedBy(-coinDecimal).toNumber();
|
|
3127
|
-
return {
|
|
3435
|
+
const parsedMarketCollateralData = parsedMarketPoolObjects.parsedOriginMarketCollateral ? parseOriginMarketCollateralData(
|
|
3436
|
+
parsedMarketPoolObjects.parsedOriginMarketCollateral
|
|
3437
|
+
) : void 0;
|
|
3438
|
+
const basePoolData = () => ({
|
|
3128
3439
|
coinName: poolCoinName,
|
|
3129
3440
|
symbol: query.utils.parseSymbol(poolCoinName),
|
|
3130
|
-
coinType: query.utils.parseCoinType(poolCoinName),
|
|
3131
3441
|
marketCoinType: query.utils.parseMarketCoinType(poolCoinName),
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3442
|
+
coinType: query.utils.parseCoinType(poolCoinName)
|
|
3443
|
+
});
|
|
3444
|
+
return {
|
|
3445
|
+
marketPool: {
|
|
3446
|
+
...basePoolData(),
|
|
3447
|
+
sCoinType: query.utils.parseSCoinType(
|
|
3448
|
+
query.utils.parseMarketCoinName(poolCoinName)
|
|
3449
|
+
),
|
|
3450
|
+
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3451
|
+
coinPrice: coinPrice ?? 0,
|
|
3452
|
+
highKink: parsedMarketPoolData.highKink,
|
|
3453
|
+
midKink: parsedMarketPoolData.midKink,
|
|
3454
|
+
reserveFactor: parsedMarketPoolData.reserveFactor,
|
|
3455
|
+
borrowWeight: parsedMarketPoolData.borrowWeight,
|
|
3456
|
+
borrowFee: parsedMarketPoolData.borrowFee,
|
|
3457
|
+
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
3458
|
+
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
3459
|
+
...calculatedMarketPoolData
|
|
3460
|
+
},
|
|
3461
|
+
collateral: parsedMarketCollateralData ? {
|
|
3462
|
+
...basePoolData(),
|
|
3463
|
+
coinWrappedType: query.utils.getCoinWrappedType(poolCoinName),
|
|
3464
|
+
coinPrice,
|
|
3465
|
+
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3466
|
+
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3467
|
+
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3468
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3469
|
+
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3470
|
+
...calculateMarketCollateralData(
|
|
3471
|
+
query.utils,
|
|
3472
|
+
parsedMarketCollateralData
|
|
3473
|
+
)
|
|
3474
|
+
} : void 0
|
|
3149
3475
|
};
|
|
3150
3476
|
};
|
|
3151
3477
|
var getMarketCollaterals = async (query, collateralCoinNames = [...SUPPORT_COLLATERALS], indexer = false) => {
|
|
@@ -3240,10 +3566,11 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3240
3566
|
collateralFactor: riskModel.collateral_factor.fields,
|
|
3241
3567
|
liquidationFactor: riskModel.liquidation_factor.fields,
|
|
3242
3568
|
liquidationDiscount: riskModel.liquidation_discount.fields,
|
|
3243
|
-
|
|
3569
|
+
liquidationPenalty: riskModel.liquidation_penalty.fields,
|
|
3244
3570
|
liquidationReserveFactor: riskModel.liquidation_revenue_factor.fields,
|
|
3245
3571
|
maxCollateralAmount: riskModel.max_collateral_amount,
|
|
3246
|
-
totalCollateralAmount: collateralStat.amount
|
|
3572
|
+
totalCollateralAmount: collateralStat.amount,
|
|
3573
|
+
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName)
|
|
3247
3574
|
});
|
|
3248
3575
|
const calculatedMarketCollateralData = calculateMarketCollateralData(
|
|
3249
3576
|
query.utils,
|
|
@@ -3255,14 +3582,12 @@ var getMarketCollateral = async (query, collateralCoinName, indexer = false, mar
|
|
|
3255
3582
|
coinType: query.utils.parseCoinType(collateralCoinName),
|
|
3256
3583
|
marketCoinType: query.utils.parseMarketCoinType(collateralCoinName),
|
|
3257
3584
|
coinWrappedType: query.utils.getCoinWrappedType(collateralCoinName),
|
|
3258
|
-
coinDecimal: query.utils.getCoinDecimal(collateralCoinName),
|
|
3259
3585
|
coinPrice: coinPrice ?? 0,
|
|
3260
3586
|
collateralFactor: parsedMarketCollateralData.collateralFactor,
|
|
3261
3587
|
liquidationFactor: parsedMarketCollateralData.liquidationFactor,
|
|
3262
3588
|
liquidationDiscount: parsedMarketCollateralData.liquidationDiscount,
|
|
3263
|
-
|
|
3589
|
+
liquidationPenalty: parsedMarketCollateralData.liquidationPenalty,
|
|
3264
3590
|
liquidationReserveFactor: parsedMarketCollateralData.liquidationReserveFactor,
|
|
3265
|
-
isIsolated: await isIsolatedAsset(query.utils, collateralCoinName),
|
|
3266
3591
|
...calculatedMarketCollateralData
|
|
3267
3592
|
};
|
|
3268
3593
|
};
|
|
@@ -3503,10 +3828,10 @@ var getLendings = async (query, poolCoinNames = [...SUPPORT_POOLS], ownerAddress
|
|
|
3503
3828
|
(marketCoinName) => SUPPORT_SPOOLS.includes(marketCoinName)
|
|
3504
3829
|
);
|
|
3505
3830
|
const coinPrices = await query.utils.getCoinPrices();
|
|
3506
|
-
const marketPools = await query.getMarketPools(poolCoinNames, {
|
|
3831
|
+
const marketPools = (await query.getMarketPools(poolCoinNames, {
|
|
3507
3832
|
indexer,
|
|
3508
3833
|
coinPrices
|
|
3509
|
-
});
|
|
3834
|
+
})).pools;
|
|
3510
3835
|
const spools = await query.getSpools(stakeMarketCoinNames, {
|
|
3511
3836
|
indexer,
|
|
3512
3837
|
marketPools,
|
|
@@ -3675,7 +4000,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
3675
4000
|
};
|
|
3676
4001
|
var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
|
|
3677
4002
|
const coinPrices = await query.utils.getCoinPrices();
|
|
3678
|
-
const market = await query.
|
|
4003
|
+
const market = await query.getMarketPools(void 0, { coinPrices, indexer });
|
|
3679
4004
|
const [coinAmounts, obligations] = await Promise.all([
|
|
3680
4005
|
query.getCoinAmounts(void 0, ownerAddress),
|
|
3681
4006
|
query.getObligations(ownerAddress)
|
|
@@ -3703,7 +4028,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3703
4028
|
const collateralAssetCoinNames = [
|
|
3704
4029
|
...SUPPORT_COLLATERALS
|
|
3705
4030
|
];
|
|
3706
|
-
market = market ?? await query.
|
|
4031
|
+
market = market ?? await query.getMarketPools(void 0, { indexer });
|
|
3707
4032
|
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
|
|
3708
4033
|
coinAmounts = coinAmounts || await query.getCoinAmounts(coinNames, ownerAddress);
|
|
3709
4034
|
const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
|
|
@@ -3994,7 +4319,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
|
|
|
3994
4319
|
return obligationAccount;
|
|
3995
4320
|
};
|
|
3996
4321
|
var getTotalValueLocked = async (query, indexer = false) => {
|
|
3997
|
-
const market = await query.
|
|
4322
|
+
const market = await query.getMarketPools(void 0, { indexer });
|
|
3998
4323
|
let supplyValue = BigNumber5(0);
|
|
3999
4324
|
let borrowValue = BigNumber5(0);
|
|
4000
4325
|
if (indexer) {
|
|
@@ -4115,7 +4440,7 @@ var getPythPrices = async ({
|
|
|
4115
4440
|
};
|
|
4116
4441
|
var getAllCoinPrices = async (query, marketPools, coinPrices) => {
|
|
4117
4442
|
coinPrices = coinPrices ?? await query.utils.getCoinPrices();
|
|
4118
|
-
marketPools = marketPools ?? await query.getMarketPools(void 0, { coinPrices });
|
|
4443
|
+
marketPools = marketPools ?? (await query.getMarketPools(void 0, { coinPrices })).pools;
|
|
4119
4444
|
if (!marketPools) {
|
|
4120
4445
|
throw new Error(`Failed to fetch market pool for getAllCoinPrices`);
|
|
4121
4446
|
}
|
|
@@ -4241,12 +4566,80 @@ var getSCoinSwapRate = async (query, fromSCoin, toSCoin, underlyingCoinPrice) =>
|
|
|
4241
4566
|
|
|
4242
4567
|
// src/queries/spoolQuery.ts
|
|
4243
4568
|
import { normalizeStructTag as normalizeStructTag5 } from "@mysten/sui/utils";
|
|
4569
|
+
var queryRequiredSpoolObjects = async (query, stakePoolCoinNames) => {
|
|
4570
|
+
const tasks = stakePoolCoinNames.map((t, idx) => ({
|
|
4571
|
+
poolCoinName: stakePoolCoinNames[idx],
|
|
4572
|
+
spool: POOL_ADDRESSES[t]?.spool,
|
|
4573
|
+
spoolReward: POOL_ADDRESSES[t]?.spoolReward,
|
|
4574
|
+
sCoinTreasury: POOL_ADDRESSES[t]?.sCoinTreasury
|
|
4575
|
+
}));
|
|
4576
|
+
const [spoolObjects, spoolRewardObjects, sCoinTreasuryObjects] = await Promise.all([
|
|
4577
|
+
queryMultipleObjects(
|
|
4578
|
+
query.cache,
|
|
4579
|
+
tasks.map((task) => task.spool).filter((t) => !!t)
|
|
4580
|
+
),
|
|
4581
|
+
queryMultipleObjects(
|
|
4582
|
+
query.cache,
|
|
4583
|
+
tasks.map((task) => task.spoolReward).filter((t) => !!t)
|
|
4584
|
+
),
|
|
4585
|
+
queryMultipleObjects(
|
|
4586
|
+
query.cache,
|
|
4587
|
+
tasks.map((task) => task.sCoinTreasury).filter((t) => !!t)
|
|
4588
|
+
)
|
|
4589
|
+
]);
|
|
4590
|
+
const mapObjects = (tasks2, fetchedObjects) => {
|
|
4591
|
+
const resultMap = {};
|
|
4592
|
+
let fetchedIndex = 0;
|
|
4593
|
+
for (const task of tasks2) {
|
|
4594
|
+
const key = task[Object.keys(task)[1]];
|
|
4595
|
+
if (key) {
|
|
4596
|
+
resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
|
|
4597
|
+
fetchedIndex++;
|
|
4598
|
+
}
|
|
4599
|
+
}
|
|
4600
|
+
return resultMap;
|
|
4601
|
+
};
|
|
4602
|
+
const spoolMap = mapObjects(tasks, spoolObjects);
|
|
4603
|
+
const spoolRewardMap = mapObjects(tasks, spoolRewardObjects);
|
|
4604
|
+
const sCoinTreasuryMap = mapObjects(tasks, sCoinTreasuryObjects);
|
|
4605
|
+
return stakePoolCoinNames.reduce(
|
|
4606
|
+
(acc, name) => {
|
|
4607
|
+
acc[name] = {
|
|
4608
|
+
spool: spoolMap[name],
|
|
4609
|
+
spoolReward: spoolRewardMap[name],
|
|
4610
|
+
sCoinTreasury: sCoinTreasuryMap[name]
|
|
4611
|
+
};
|
|
4612
|
+
return acc;
|
|
4613
|
+
},
|
|
4614
|
+
{}
|
|
4615
|
+
);
|
|
4616
|
+
};
|
|
4617
|
+
var parseSpoolObjects = ({
|
|
4618
|
+
spool,
|
|
4619
|
+
spoolReward
|
|
4620
|
+
}) => {
|
|
4621
|
+
const _spool = parseObjectAs(spool);
|
|
4622
|
+
const _spoolReward = parseObjectAs(spoolReward);
|
|
4623
|
+
return {
|
|
4624
|
+
stakeType: _spool.stake_type,
|
|
4625
|
+
maxDistributedPoint: _spool.max_distributed_point,
|
|
4626
|
+
distributedPoint: _spool.distributed_point,
|
|
4627
|
+
distributedPointPerPeriod: _spool.distributed_point_per_period,
|
|
4628
|
+
pointDistributionTime: _spool.point_distribution_time,
|
|
4629
|
+
maxStake: _spool.max_stakes,
|
|
4630
|
+
stakes: _spool.stakes,
|
|
4631
|
+
index: _spool.index,
|
|
4632
|
+
createdAt: _spool.created_at,
|
|
4633
|
+
lastUpdate: _spool.last_update,
|
|
4634
|
+
..._spoolReward
|
|
4635
|
+
};
|
|
4636
|
+
};
|
|
4244
4637
|
var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexer = false, marketPools, coinPrices) => {
|
|
4245
4638
|
const stakeCoinNames = stakeMarketCoinNames.map(
|
|
4246
4639
|
(stakeMarketCoinName) => query.utils.parseCoinName(stakeMarketCoinName)
|
|
4247
4640
|
);
|
|
4248
|
-
|
|
4249
|
-
|
|
4641
|
+
marketPools = marketPools ?? (await query.getMarketPools(stakeCoinNames, { indexer })).pools;
|
|
4642
|
+
coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools }) ?? {};
|
|
4250
4643
|
if (!marketPools)
|
|
4251
4644
|
throw new Error(`Fail to fetch marketPools for ${stakeCoinNames}`);
|
|
4252
4645
|
const spools = {};
|
|
@@ -4261,126 +4654,93 @@ var getSpools = async (query, stakeMarketCoinNames = [...SUPPORT_SPOOLS], indexe
|
|
|
4261
4654
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(
|
|
4262
4655
|
spool.marketCoinName
|
|
4263
4656
|
);
|
|
4264
|
-
const marketPool = marketPools[coinName];
|
|
4265
4657
|
spool.coinPrice = coinPrices[coinName] ?? spool.coinPrice;
|
|
4266
|
-
spool.marketCoinPrice = coinPrices[
|
|
4658
|
+
spool.marketCoinPrice = coinPrices[spool.marketCoinName] ?? spool.marketCoinPrice;
|
|
4267
4659
|
spool.rewardCoinPrice = coinPrices[rewardCoinName] ?? spool.rewardCoinPrice;
|
|
4268
4660
|
spools[spool.marketCoinName] = spool;
|
|
4269
4661
|
};
|
|
4270
4662
|
Object.values(spoolsIndexer).forEach(updateSpools);
|
|
4271
4663
|
return spools;
|
|
4272
4664
|
}
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4665
|
+
const requiredObjects = await queryRequiredSpoolObjects(
|
|
4666
|
+
query,
|
|
4667
|
+
stakeCoinNames
|
|
4668
|
+
);
|
|
4669
|
+
await Promise.allSettled(
|
|
4670
|
+
stakeMarketCoinNames.map(async (stakeMarketCoinName, idx) => {
|
|
4671
|
+
try {
|
|
4672
|
+
const stakeCoinName = stakeCoinNames[idx];
|
|
4673
|
+
const spool = await getSpool(
|
|
4674
|
+
query,
|
|
4675
|
+
stakeMarketCoinName,
|
|
4676
|
+
indexer,
|
|
4677
|
+
coinPrices,
|
|
4678
|
+
requiredObjects[stakeCoinName]
|
|
4679
|
+
);
|
|
4680
|
+
if (spool) {
|
|
4681
|
+
spools[stakeMarketCoinName] = spool;
|
|
4682
|
+
}
|
|
4683
|
+
} catch (e) {
|
|
4684
|
+
console.error(e);
|
|
4685
|
+
}
|
|
4686
|
+
})
|
|
4687
|
+
);
|
|
4286
4688
|
return spools;
|
|
4287
4689
|
};
|
|
4288
|
-
var getSpool = async (query, marketCoinName, indexer = false,
|
|
4690
|
+
var getSpool = async (query, marketCoinName, indexer = false, coinPrices, requiredObjects) => {
|
|
4289
4691
|
const coinName = query.utils.parseCoinName(marketCoinName);
|
|
4290
|
-
|
|
4291
|
-
if (!marketPool) {
|
|
4292
|
-
throw new Error(`Failed to fetch marketPool for ${marketCoinName}`);
|
|
4293
|
-
}
|
|
4294
|
-
const poolId = query.address.get(`spool.pools.${marketCoinName}.id`);
|
|
4295
|
-
const rewardPoolId = query.address.get(
|
|
4296
|
-
`spool.pools.${marketCoinName}.rewardPoolId`
|
|
4297
|
-
);
|
|
4298
|
-
let spool = void 0;
|
|
4299
|
-
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4692
|
+
coinPrices = coinPrices || await query.getAllCoinPrices();
|
|
4300
4693
|
if (indexer) {
|
|
4301
4694
|
const spoolIndexer = await query.indexer.getSpool(marketCoinName);
|
|
4302
4695
|
const coinName2 = query.utils.parseCoinName(marketCoinName);
|
|
4303
4696
|
const rewardCoinName2 = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4304
|
-
spoolIndexer.coinPrice = coinPrices?.[coinName2]
|
|
4305
|
-
spoolIndexer.marketCoinPrice =
|
|
4306
|
-
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2]
|
|
4697
|
+
spoolIndexer.coinPrice = coinPrices?.[coinName2] ?? spoolIndexer.coinPrice;
|
|
4698
|
+
spoolIndexer.marketCoinPrice = coinPrices?.[marketCoinName] ?? spoolIndexer.marketCoinPrice;
|
|
4699
|
+
spoolIndexer.rewardCoinPrice = coinPrices?.[rewardCoinName2] ?? spoolIndexer.rewardCoinPrice;
|
|
4307
4700
|
return spoolIndexer;
|
|
4308
4701
|
}
|
|
4309
|
-
|
|
4310
|
-
[poolId, rewardPoolId],
|
|
4311
|
-
{
|
|
4312
|
-
showContent: true
|
|
4313
|
-
}
|
|
4314
|
-
);
|
|
4315
|
-
if (!(spoolObjectResponse[0] && spoolObjectResponse[1])) {
|
|
4316
|
-
throw new Error("Fail to fetch spoolObjectResponse!");
|
|
4317
|
-
}
|
|
4702
|
+
requiredObjects ?? (requiredObjects = (await queryRequiredSpoolObjects(query, [coinName]))[coinName]);
|
|
4318
4703
|
const rewardCoinName = query.utils.getSpoolRewardCoinName(marketCoinName);
|
|
4319
4704
|
coinPrices = coinPrices || await query.utils.getCoinPrices();
|
|
4320
|
-
const
|
|
4321
|
-
const
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
)
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
rewardCoinDecimal
|
|
4360
|
-
);
|
|
4361
|
-
spool = {
|
|
4362
|
-
marketCoinName,
|
|
4363
|
-
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4364
|
-
coinType: query.utils.parseCoinType(coinName),
|
|
4365
|
-
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4366
|
-
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4367
|
-
sCoinType: marketPool.sCoinType,
|
|
4368
|
-
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4369
|
-
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4370
|
-
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4371
|
-
marketCoinPrice,
|
|
4372
|
-
rewardCoinPrice,
|
|
4373
|
-
maxPoint: parsedSpoolData.maxPoint,
|
|
4374
|
-
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4375
|
-
maxStake: parsedSpoolData.maxStake,
|
|
4376
|
-
...calculatedSpoolData,
|
|
4377
|
-
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4378
|
-
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4379
|
-
...calculatedRewardPoolData
|
|
4380
|
-
};
|
|
4381
|
-
}
|
|
4382
|
-
}
|
|
4383
|
-
return spool;
|
|
4705
|
+
const parsedSpoolObjects = parseSpoolObjects(requiredObjects);
|
|
4706
|
+
const parsedSpoolData = parseOriginSpoolData(parsedSpoolObjects);
|
|
4707
|
+
const marketCoinPrice = coinPrices?.[marketCoinName] ?? 0;
|
|
4708
|
+
const marketCoinDecimal = query.utils.getCoinDecimal(marketCoinName);
|
|
4709
|
+
const calculatedSpoolData = calculateSpoolData(
|
|
4710
|
+
parsedSpoolData,
|
|
4711
|
+
marketCoinPrice,
|
|
4712
|
+
marketCoinDecimal
|
|
4713
|
+
);
|
|
4714
|
+
const parsedSpoolRewardPoolData = parseOriginSpoolRewardPoolData(parsedSpoolObjects);
|
|
4715
|
+
const rewardCoinPrice = coinPrices?.[rewardCoinName] ?? 0;
|
|
4716
|
+
const rewardCoinDecimal = query.utils.getCoinDecimal(rewardCoinName);
|
|
4717
|
+
const calculatedRewardPoolData = calculateSpoolRewardPoolData(
|
|
4718
|
+
parsedSpoolData,
|
|
4719
|
+
parsedSpoolRewardPoolData,
|
|
4720
|
+
calculatedSpoolData,
|
|
4721
|
+
rewardCoinPrice,
|
|
4722
|
+
rewardCoinDecimal
|
|
4723
|
+
);
|
|
4724
|
+
return {
|
|
4725
|
+
marketCoinName,
|
|
4726
|
+
symbol: query.utils.parseSymbol(marketCoinName),
|
|
4727
|
+
coinType: query.utils.parseCoinType(coinName),
|
|
4728
|
+
marketCoinType: query.utils.parseMarketCoinType(coinName),
|
|
4729
|
+
rewardCoinType: isMarketCoin(rewardCoinName) ? query.utils.parseMarketCoinType(rewardCoinName) : query.utils.parseCoinType(rewardCoinName),
|
|
4730
|
+
sCoinType: query.utils.parseSCoinType(marketCoinName),
|
|
4731
|
+
coinDecimal: query.utils.getCoinDecimal(coinName),
|
|
4732
|
+
rewardCoinDecimal: query.utils.getCoinDecimal(rewardCoinName),
|
|
4733
|
+
coinPrice: coinPrices?.[coinName] ?? 0,
|
|
4734
|
+
marketCoinPrice,
|
|
4735
|
+
rewardCoinPrice,
|
|
4736
|
+
maxPoint: parsedSpoolData.maxPoint,
|
|
4737
|
+
distributedPoint: parsedSpoolData.distributedPoint,
|
|
4738
|
+
maxStake: parsedSpoolData.maxStake,
|
|
4739
|
+
...calculatedSpoolData,
|
|
4740
|
+
exchangeRateNumerator: parsedSpoolRewardPoolData.exchangeRateNumerator,
|
|
4741
|
+
exchangeRateDenominator: parsedSpoolRewardPoolData.exchangeRateDenominator,
|
|
4742
|
+
...calculatedRewardPoolData
|
|
4743
|
+
};
|
|
4384
4744
|
};
|
|
4385
4745
|
var getStakeAccounts = async ({
|
|
4386
4746
|
utils
|
|
@@ -4730,6 +5090,101 @@ var getVeScaTreasuryInfo = async (utils) => {
|
|
|
4730
5090
|
};
|
|
4731
5091
|
};
|
|
4732
5092
|
|
|
5093
|
+
// src/queries/poolAddressesQuery.ts
|
|
5094
|
+
var getAllAddresses = async (query) => {
|
|
5095
|
+
const results = {};
|
|
5096
|
+
const marketId = query.address.get("core.market");
|
|
5097
|
+
const marketObject = (await query.cache.queryGetObject(marketId, {
|
|
5098
|
+
showContent: true
|
|
5099
|
+
}))?.data;
|
|
5100
|
+
if (!(marketObject && marketObject.content?.dataType === "moveObject"))
|
|
5101
|
+
throw new Error(`Failed to fetch marketObject`);
|
|
5102
|
+
const fields = marketObject.content.fields;
|
|
5103
|
+
const coinTypesPairs = SUPPORT_POOLS.reduce(
|
|
5104
|
+
(acc, pool) => {
|
|
5105
|
+
acc.push([pool, query.utils.parseCoinType(pool).substring(2)]);
|
|
5106
|
+
return acc;
|
|
5107
|
+
},
|
|
5108
|
+
[]
|
|
5109
|
+
);
|
|
5110
|
+
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id.id;
|
|
5111
|
+
const collateralStatsParentId = fields.collateral_stats.fields.table.fields.id.id;
|
|
5112
|
+
const borrowDynamicsParentid = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
5113
|
+
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
5114
|
+
const riskModelParentId = fields.risk_models.fields.table.fields.id.id;
|
|
5115
|
+
const ADDRESS_TYPE = `0x1::type_name::TypeName`;
|
|
5116
|
+
const BORROW_FEE_TYPE = `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`;
|
|
5117
|
+
const SUPPLY_LIMIT_TYPE = `0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey`;
|
|
5118
|
+
const BORROW_LIMIT_TYPE = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey`;
|
|
5119
|
+
const ISOLATED_ASSET_KEY = `0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey`;
|
|
5120
|
+
const fetchDynamicObject = async (parentId, type, value) => {
|
|
5121
|
+
try {
|
|
5122
|
+
return (await query.cache.queryGetDynamicFieldObject({
|
|
5123
|
+
parentId,
|
|
5124
|
+
name: {
|
|
5125
|
+
type,
|
|
5126
|
+
value
|
|
5127
|
+
}
|
|
5128
|
+
}))?.data?.objectId;
|
|
5129
|
+
} catch (_e) {
|
|
5130
|
+
return void 0;
|
|
5131
|
+
}
|
|
5132
|
+
};
|
|
5133
|
+
await Promise.all(
|
|
5134
|
+
coinTypesPairs.map(async ([coinName, coinType]) => {
|
|
5135
|
+
const addresses = await Promise.all([
|
|
5136
|
+
fetchDynamicObject(balanceSheetParentId, ADDRESS_TYPE, {
|
|
5137
|
+
name: coinType
|
|
5138
|
+
}),
|
|
5139
|
+
fetchDynamicObject(collateralStatsParentId, ADDRESS_TYPE, {
|
|
5140
|
+
name: coinType
|
|
5141
|
+
}),
|
|
5142
|
+
fetchDynamicObject(borrowDynamicsParentid, ADDRESS_TYPE, {
|
|
5143
|
+
name: coinType
|
|
5144
|
+
}),
|
|
5145
|
+
fetchDynamicObject(interestModelParentId, ADDRESS_TYPE, {
|
|
5146
|
+
name: coinType
|
|
5147
|
+
}),
|
|
5148
|
+
fetchDynamicObject(riskModelParentId, ADDRESS_TYPE, {
|
|
5149
|
+
name: coinType
|
|
5150
|
+
}),
|
|
5151
|
+
fetchDynamicObject(marketId, BORROW_FEE_TYPE, coinType),
|
|
5152
|
+
fetchDynamicObject(marketId, SUPPLY_LIMIT_TYPE, coinType),
|
|
5153
|
+
fetchDynamicObject(marketId, BORROW_LIMIT_TYPE, coinType),
|
|
5154
|
+
fetchDynamicObject(marketId, ISOLATED_ASSET_KEY, coinType)
|
|
5155
|
+
]);
|
|
5156
|
+
const spool = query.address.get(
|
|
5157
|
+
// @ts-ignore
|
|
5158
|
+
`spool.pools.s${coinName}.id`
|
|
5159
|
+
);
|
|
5160
|
+
const rewardPool = query.address.get(
|
|
5161
|
+
// @ts-ignore
|
|
5162
|
+
`spool.pools.s${coinName}.rewardPoolId`
|
|
5163
|
+
);
|
|
5164
|
+
const sCoinTreasury = query.address.get(
|
|
5165
|
+
// @ts-ignore
|
|
5166
|
+
`scoin.coins.s${coinName}.treasury`
|
|
5167
|
+
);
|
|
5168
|
+
results[coinName] = {
|
|
5169
|
+
lendingPoolAddress: addresses[0],
|
|
5170
|
+
collateralPoolAddress: addresses[1],
|
|
5171
|
+
borrowDynamic: addresses[2],
|
|
5172
|
+
interestModel: addresses[3],
|
|
5173
|
+
riskModel: addresses[4],
|
|
5174
|
+
borrowFeeKey: addresses[5],
|
|
5175
|
+
supplyLimitKey: addresses[6],
|
|
5176
|
+
borrowLimitKey: addresses[7],
|
|
5177
|
+
isolatedAssetKey: addresses[8],
|
|
5178
|
+
spool,
|
|
5179
|
+
spoolReward: rewardPool,
|
|
5180
|
+
sCoinTreasury
|
|
5181
|
+
};
|
|
5182
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
5183
|
+
})
|
|
5184
|
+
);
|
|
5185
|
+
return results;
|
|
5186
|
+
};
|
|
5187
|
+
|
|
4733
5188
|
// src/models/suiKit.ts
|
|
4734
5189
|
import { SuiKit as SuiKit2 } from "@scallop-io/sui-kit";
|
|
4735
5190
|
var newSuiKit = (params) => {
|
|
@@ -7080,6 +7535,7 @@ var ScallopQuery = class {
|
|
|
7080
7535
|
}
|
|
7081
7536
|
/* ==================== Core Query Methods ==================== */
|
|
7082
7537
|
/**
|
|
7538
|
+
* @deprecated use getMarketPools
|
|
7083
7539
|
* Query market data.
|
|
7084
7540
|
* @param indexer - Whether to use indexer.
|
|
7085
7541
|
* @return Market data.
|
|
@@ -7098,7 +7554,7 @@ var ScallopQuery = class {
|
|
|
7098
7554
|
* @param indexer - Whether to use indexer.
|
|
7099
7555
|
* @return Market pools data.
|
|
7100
7556
|
*/
|
|
7101
|
-
async getMarketPools(poolCoinNames, args) {
|
|
7557
|
+
async getMarketPools(poolCoinNames = [...SUPPORT_POOLS], args) {
|
|
7102
7558
|
return await getMarketPools(
|
|
7103
7559
|
this,
|
|
7104
7560
|
poolCoinNames,
|
|
@@ -7114,13 +7570,8 @@ var ScallopQuery = class {
|
|
|
7114
7570
|
* @return Market pool data.
|
|
7115
7571
|
*/
|
|
7116
7572
|
async getMarketPool(poolCoinName, args) {
|
|
7117
|
-
|
|
7118
|
-
|
|
7119
|
-
poolCoinName,
|
|
7120
|
-
args?.indexer,
|
|
7121
|
-
args?.marketObject,
|
|
7122
|
-
args?.coinPrice
|
|
7123
|
-
);
|
|
7573
|
+
const marketPools = await this.getMarketPools(void 0, args);
|
|
7574
|
+
return marketPools.pools[poolCoinName];
|
|
7124
7575
|
}
|
|
7125
7576
|
/**
|
|
7126
7577
|
* Get market collaterals.
|
|
@@ -7247,13 +7698,8 @@ var ScallopQuery = class {
|
|
|
7247
7698
|
* @return Spool data.
|
|
7248
7699
|
*/
|
|
7249
7700
|
async getSpool(stakeMarketCoinName, args) {
|
|
7250
|
-
|
|
7251
|
-
|
|
7252
|
-
stakeMarketCoinName,
|
|
7253
|
-
args?.indexer,
|
|
7254
|
-
args?.marketPool,
|
|
7255
|
-
args?.coinPrices
|
|
7256
|
-
);
|
|
7701
|
+
const spools = await this.getSpools(void 0, args);
|
|
7702
|
+
return spools[stakeMarketCoinName];
|
|
7257
7703
|
}
|
|
7258
7704
|
/**
|
|
7259
7705
|
* Get stake accounts data for all stake pools (spools).
|
|
@@ -7558,7 +8004,7 @@ var ScallopQuery = class {
|
|
|
7558
8004
|
* Get list of isolated assets
|
|
7559
8005
|
*/
|
|
7560
8006
|
async getIsolatedAssets() {
|
|
7561
|
-
return await getIsolatedAssets(this
|
|
8007
|
+
return await getIsolatedAssets(this);
|
|
7562
8008
|
}
|
|
7563
8009
|
/**
|
|
7564
8010
|
* Check if asset is an isolated asset
|
|
@@ -7581,6 +8027,13 @@ var ScallopQuery = class {
|
|
|
7581
8027
|
async getAllCoinPrices(args) {
|
|
7582
8028
|
return getAllCoinPrices(this, args?.marketPools, args?.coinPrices);
|
|
7583
8029
|
}
|
|
8030
|
+
/**
|
|
8031
|
+
* Query all address (lending pool, collateral pool, borrow dynamics, interest models) of all pool
|
|
8032
|
+
* @returns
|
|
8033
|
+
*/
|
|
8034
|
+
async getPoolAddresses() {
|
|
8035
|
+
return getAllAddresses(this);
|
|
8036
|
+
}
|
|
7584
8037
|
};
|
|
7585
8038
|
|
|
7586
8039
|
// src/models/scallopBuilder.ts
|
|
@@ -8575,9 +9028,11 @@ export {
|
|
|
8575
9028
|
ScallopQuery,
|
|
8576
9029
|
ScallopUtils,
|
|
8577
9030
|
TEST_ADDRESSES,
|
|
9031
|
+
TokenBucket,
|
|
8578
9032
|
UNLOCK_ROUND_DURATION,
|
|
8579
9033
|
USE_TEST_ADDRESS,
|
|
8580
9034
|
assetCoins,
|
|
9035
|
+
callWithRateLimit,
|
|
8581
9036
|
coinDecimals,
|
|
8582
9037
|
coinIds,
|
|
8583
9038
|
marketCoins,
|