@scallop-io/sui-scallop-sdk 1.4.26-alpha.1 → 1.4.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -18,27 +18,27 @@ var bo__default = /*#__PURE__*/_interopDefault(bo);
18
18
  var h__default = /*#__PURE__*/_interopDefault(h);
19
19
  var Mo__default = /*#__PURE__*/_interopDefault(Mo);
20
20
 
21
- var jt={defaultOptions:{queries:{staleTime:5e3,gcTime:5e3}}};var Dt={sbeth:"ethereum",sbusdt:"tether",sbwbtc:"bitcoin",weth:"ethereum",wbtc:"bitcoin",wusdc:"usdc",wusdt:"tether",wapt:"aptos",wsol:"solana",usdc:"usdc",sui:"sui",afsui:"sui",hasui:"sui",vsui:"sui",fdusd:"first-digital-usd",cetus:"cetus-protocol",sca:"scallop-2",deep:"deepbook",fud:"fud-the-pug",blub:"blub",musd:"meta-usd",ns:"suins-token",usdy:"ondo-us-dollar-yield"};var Nt="https://sui.apis.scallop.io",Bt="https://sdk.api.scallop.io",Lt=!1,it=!1,ee="675c65cd301dd817ea262e76",Ke="0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",As="0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da",Ee="0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",nt="0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",M=["usdc","sbeth","sbusdt","sbwbtc","weth","wbtc","wusdc","wusdt","sui","wapt","wsol","cetus","afsui","hasui","vsui","sca","fud","deep","fdusd","blub","musd","ns","usdy"],V=["usdc","sbeth","sbusdt","sbwbtc","weth","wbtc","wusdc","wusdt","sui","wapt","wsol","cetus","afsui","hasui","vsui","sca","fdusd","usdy"],G=["susdc","sweth","ssui","swusdc","swusdt","scetus","safsui","shasui","svsui"],q=["susdc","ssbeth","ssbusdt","ssbwbtc","ssui","swusdc","swusdt","safsui","shasui","svsui","sweth","ssca","scetus","swsol","swbtc","sdeep","sfud","sfdusd","sblub","smusd","sns","susdy"],Ft=["sbeth","sbusdt","sbwbtc"],Kt=["wusdc","wusdt","weth","wbtc","wapt","wsol"],Et=["sui"],ye=[...M],Ue=[...M,...q],Os=["supra","switchboard","pyth"],Is=["coinDecimalsRegistry","math","whitelist","x","protocol","protocolWhitelist","query","supra","pyth","switchboard","xOracle","testCoin"];var dt={usdc:6,sbeth:8,sbusdt:6,sbwbtc:8,weth:8,wbtc:8,wusdc:6,wusdt:6,sui:9,wapt:8,wsol:8,cetus:9,afsui:9,hasui:9,vsui:9,sca:9,fdusd:6,deep:6,fud:5,blub:2,musd:9,ns:6,usdy:6,susdc:6,sweth:8,ssbeth:8,ssbusdt:6,ssbwbtc:8,swbtc:8,swusdc:6,swusdt:6,ssui:9,swapt:8,swsol:8,scetus:9,safsui:9,shasui:9,svsui:9,ssca:9,sfdusd:6,sdeep:6,sfud:5,sblub:2,smusd:9,sns:6,susdy:6},vs={usdc:"usdc",sbeth:"sbeth",sbusdt:"sbusdt",sbwbtc:"sbwbtc",weth:"weth",wbtc:"wbtc",wusdc:"wusdc",wusdt:"wusdt",sui:"sui",wapt:"wapt",wsol:"wsol",cetus:"cetus",afsui:"afsui",hasui:"hasui",vsui:"vsui",sca:"sca",fdusd:"fdusd",deep:"deep",fud:"fud",blub:"blub",musd:"musd",ns:"ns",usdy:"usdy"},Ms={susdc:"susdc",ssbeth:"ssbeth",ssbusdt:"ssbusdt",ssbwbtc:"ssbwbtc",sweth:"sweth",swbtc:"swbtc",swusdc:"swusdc",swusdt:"swusdt",ssui:"ssui",swapt:"swapt",swsol:"swsol",scetus:"scetus",safsui:"safsui",shasui:"shasui",svsui:"svsui",ssca:"ssca",sfdusd:"sfdusd",sdeep:"sdeep",sfud:"sfud",sblub:"sblub",smusd:"smusd",sns:"sns",susdy:"susdy"},js={susdc:"susdc",ssbeth:"ssbeth",ssbusdt:"ssbusdt",sweth:"sweth",swusdc:"swusdc",swusdt:"swusdt",ssbwbtc:"ssbwbtc",ssui:"ssui",scetus:"scetus",safsui:"safsui",shasui:"shasui",svsui:"svsui",ssca:"ssca",swsol:"swsol",swbtc:"swbtc",sfdusd:"sfdusd",sfud:"sfud",sdeep:"sdeep",sblub:"sblub",smusd:"smusd",sns:"sns",susdy:"susdy"},Ds={susdc:"susdc",sweth:"sweth",ssui:"ssui",swusdc:"swusdc",swusdt:"swusdt",scetus:"scetus",safsui:"safsui",shasui:"shasui",svsui:"svsui"},Ve={sweth:"sui",ssui:"sui",swusdc:"sui",swusdt:"sui",scetus:"sui",safsui:"sui",shasui:"sui",svsui:"sui",susdc:"sui"},lt={sbeth:"sbeth",sbusdt:"sbusdt",sbwbtc:"sbwbtc"},Te={sui:"0x0000000000000000000000000000000000000000000000000000000000000002",cetus:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",sca:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",musd:"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722",ns:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178",weth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",wbtc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",wapt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",wsol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",afsui:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",hasui:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",usdc:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",wusdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",wusdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",fdusd:"0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a",usdy:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb",deep:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",fud:"0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1",blub:"0xfa7ac3951fdca92c5200d468d31a365eb03b2be9936fde615e69f0c1274ad3a0",sbeth:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",sbusdt:"0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068",sbwbtc:"0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b"},$={weth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",wbtc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",wusdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",wusdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",wapt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",wsol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8"},bt={vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"},ue={ssui:"0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",ssca:"0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",scetus:"0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",smusd:"0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD",sns:"0x6511052d2f1404934e0d877709949bcda7c1d451d1218a4b2643ca2f3fa93991::scallop_ns::SCALLOP_NS",sweth:"0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",swsol:"0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",swbtc:"0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",safsui:"0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",shasui:"0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",svsui:"0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",susdc:"0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",swusdc:"0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",swusdt:"0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",sfdusd:"0x6711551c1e7652a270d9fbf0eee25d99594c157cde3cb5fbb49035eb59b1b001::scallop_fdusd::SCALLOP_FDUSD",susdy:"0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY",sdeep:"0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",sfud:"0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",sblub:"0xe72f65446eabfad2103037af2d49d24599106fb44bf4c046c1e7e9acf6844dd0::scallop_blub::SCALLOP_BLUB",ssbeth:"0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",ssbusdt:"0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT",ssbwbtc:"0x08c0fe357d3a138f4552bee393ce3a28a45bebcca43373d6a90bc44ab76f82e2::scallop_sb_wbtc::SCALLOP_SB_WBTC"},We=Object.entries(ue).reduce((t,[e,a])=>(t[a]=e,t),{}),Ut=Object.entries(ue).reduce((t,[e,a])=>(t[a.split("::")[2].toLowerCase()]=e,t),{});var ft={vsui:"0x0069cddee7a5c0b1d34beb5ef0620f978096525f1830b055f38b110f40d73fbb",wbtc:"0x2078490aa37d8fb42b511e5c95e217cb957d141267e16980bc802d76b42719f7",sui:"0x27614284a8f0a699ffd35aae8f2572c937ec76771cb21b0d7930ec4491a76ed4",wusdt:"0x5b61983a19b5159ca348d291e4b595f42db70ccda32852a2ed85528aa65171e4",wapt:"0x9d5898edcd1e4abcb044273242293a9d036f6a977bf3fe57ab71f5a87c505ee6",afsui:"0xac87fde83d434554ec300c1334c9a622aa5b59e82a04334dc99e1cc1f75d4eae",hasui:"0xb9f505d532de1d6c9f3a8522a2d16f2958b75c0ed939d4f80b96f584a2a8ed5e",wusdc:"0xd241d6a7e44ac11a6689370ed9a98eec389b98b8a6695c61fddede9fa7567b90",weth:"0xd252acb058e77877810c1290564e290a8f9fcab5bc9aca2884ede8a38810cf34",sca:"0xe04e46471754b6f48d81c549ecfec09de02733715a63bec02364c6ac7c4dd2dc",cetus:"0xe65a73d11c31b2d323ad2b9f6b4bb0a3c0df9c1b212eef66c854941186a5ddc7",wsol:"0xe84bdb35b790fc7bdd1645122ac6ac0fc904531d6772c9e25904fece322c5f34"};var N={sbeth:{coinName:"sbeth",symbol:"sbETH",lendingPoolAddress:"0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",collateralPoolAddress:"0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",borrowDynamic:"0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",interestModel:"0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",riskModel:"0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",borrowFeeKey:"0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",supplyLimitKey:"0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",borrowLimitKey:"0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",sCoinTreasury:"0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed",sCoinType:"0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",sCoinName:"ssbeth",sCoinSymbol:"ssbETH",coinMetadataId:"0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",coinType:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",sCoinMetadataId:"0xdfdd14d53ed8c7ace7cac8a0eecdfa4c2345e15d9efcbd4e1828f81a107cbe2d",decimals:8,pythFeed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",pythFeedObjectId:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"},sbusdt:{coinName:"sbusdt",symbol:"sbUSDT",lendingPoolAddress:"0x958ca02058a7dd8b00e26ed6988f45d7c2834ae2a47ee4c4a8fdedea155f18ca",collateralPoolAddress:"0x63c861f97192ceab2dabb1e74649ae87a9e36c33aaedcc43e40a811d3a39e653",borrowDynamic:"0xf1ef9a19881ed6ddeb88f361c83f37c592ec5b9c64fe715383f63ccc094be205",interestModel:"0x62c46e4667c4fa69a29030ecbc0f661c61365d02adc3810b08b11cfd8f42ca1c",riskModel:"0x59d5f3dbcd14a0aab6ee6e2879803e10b0a752119d19c4ac0bd389d71dc8c2bf",borrowFeeKey:"0xa418990ad042e97cca61830476483933b9e026970fc33451072b2627ccb31da2",supplyLimitKey:"0x93641bfb62ea40760f0c15911b4ec0eb866f8725e36b0ca9a786775d93629139",borrowLimitKey:"0x953a9b8d5353abb38db21a2cbbc5c54f8f23348895acb26cbe2c0ab61b54635d",sCoinTreasury:"0x58bdf6a9752e3a60144d0b70e8608d630dfd971513e2b2bfa7282f5eaa7d04d8",sCoinType:"0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT",sCoinName:"ssbusdt",sCoinSymbol:"ssbUSDT",coinMetadataId:"0xda61b33ac61ed4c084bbda65a2229459ed4eb2185729e70498538f0688bec3cc",coinType:"0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068::usdt::USDT",sCoinMetadataId:"0x1ce77b036043c8fdcc5cd050ed06433ae60296b194c2abf7ade8b7b7c8386d36",decimals:6,pythFeed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",pythFeedObjectId:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"},sbwbtc:{coinName:"sbwbtc",symbol:"sbwBTC",lendingPoolAddress:"0x5c4fc366c39e0969ddb8912da221cbf298656466f3b58039ff82c5ce64071ad8",collateralPoolAddress:"0x85fb30d16d66f08e8bc8013665b786d5ca04652015c5ac7461cee51c54d7d507",borrowDynamic:"0x1e25ebd25b6e1d4c765ff3172472ae21903e7f237b3efe1f6f011c93fef9f634",interestModel:"0x5f7bff8aa04cc6790a88c51014d5b6feadf6441e4c40a496d67705c2856183b3",riskModel:"0xb62fb27d5f1305ed94092ff4fd7015a71420bd2b47542599d361a1e8b88c46ad",borrowFeeKey:"0x4ede8076a8d83315c49df8db9e6774d55ba149fcfb4a7a38845cd76c34f590d1",supplyLimitKey:"0x4f5dfd04f32cc7ba8fba665486838fd3a291324980460d31bf79918a6b68a112",sCoinTreasury:"0x21db1d3b310d32b5fb1383591103bfea57c6aed62ef6d3b6d469bab752b8681f",borrowLimitKey:"0xc32b0a82ae08248912c39da03c1b347bcfbc7b63da0385e24306c4b97777da56",sCoinType:"0x08c0fe357d3a138f4552bee393ce3a28a45bebcca43373d6a90bc44ab76f82e2::scallop_sb_wbtc::SCALLOP_SB_WBTC",sCoinName:"ssbwbtc",sCoinSymbol:"ssbwBTC",coinMetadataId:"0x53e1cae1ad70a778d0b450d36c7c2553314ca029919005aad26945d65a8fb784",coinType:"0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC",sCoinMetadataId:"0x83d3d44ca57f9b1657065865caa497188d6fc1429f0ca846a51a9058f066f591",decimals:8,pythFeed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",pythFeedObjectId:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"},usdc:{coinName:"usdc",symbol:"USDC",lendingPoolAddress:"0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",collateralPoolAddress:"0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",borrowDynamic:"0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",interestModel:"0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",riskModel:"0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",borrowFeeKey:"0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",supplyLimitKey:"0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",borrowLimitKey:"0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",spool:"0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",spoolReward:"0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166",sCoinTreasury:"0xbe6b63021f3d82e0e7e977cdd718ed7c019cf2eba374b7b546220402452f938e",sCoinType:"0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",sCoinName:"susdc",sCoinSymbol:"sUSDC",coinMetadataId:"0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",coinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",sCoinMetadataId:"0x763a21eba338e00bc684aaad80491c89eea5f247b59c47df45b17610c9ad58f2",spoolName:"susdc",decimals:6,pythFeed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",pythFeedObjectId:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"},weth:{coinName:"weth",symbol:"wETH",lendingPoolAddress:"0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",collateralPoolAddress:"0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",borrowDynamic:"0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",interestModel:"0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",riskModel:"0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",borrowFeeKey:"0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",supplyLimitKey:"0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",borrowLimitKey:"0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",spool:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",spoolReward:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077",sCoinTreasury:"0x4b7f5da0e306c9d52490a0c1d4091e653d6b89778b9b4f23c877e534e4d9cd21",sCoinType:"0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",sCoinName:"sweth",sCoinSymbol:"swETH",coinMetadataId:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",coinType:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",sCoinMetadataId:"0x077d0fd835b559e5b4bb52641f7627ddbf8b200f9b2cf4e28b3514da2a32a4dd",spoolName:"sweth",decimals:8,pythFeed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",pythFeedObjectId:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"},wbtc:{coinName:"wbtc",symbol:"wBTC",lendingPoolAddress:"0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",collateralPoolAddress:"0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",borrowDynamic:"0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",interestModel:"0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",riskModel:"0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",borrowFeeKey:"0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",supplyLimitKey:"0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",borrowLimitKey:"0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",sCoinTreasury:"0xe2883934ea42c99bc998bbe0f01dd6d27aa0e27a56455707b1b34e6a41c20baa",sCoinType:"0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",sCoinName:"swbtc",sCoinSymbol:"swBTC",coinMetadataId:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",coinType:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",sCoinMetadataId:"0x1ba5904dae41699683da767c7a97785a55c51ec1253498c8fe1980169a96523d",decimals:8,pythFeed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",pythFeedObjectId:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"},wusdc:{coinName:"wusdc",symbol:"wUSDC",lendingPoolAddress:"0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",collateralPoolAddress:"0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",borrowDynamic:"0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",interestModel:"0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",riskModel:"0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",borrowFeeKey:"0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",supplyLimitKey:"0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",borrowLimitKey:"0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",spool:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",spoolReward:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8",sCoinTreasury:"0x50c5cfcbcca3aaacab0984e4d7ad9a6ad034265bebb440f0d1cd688ec20b2548",sCoinType:"0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",sCoinName:"swusdc",sCoinSymbol:"swUSDC",coinMetadataId:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",coinType:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",sCoinMetadataId:"0xdc0595d068621d630f3c7c364dd257f7e3f8079e00c31c8d18755a033c15ae93",spoolName:"swusdc",decimals:6,pythFeed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",pythFeedObjectId:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"},wusdt:{coinName:"wusdt",symbol:"wUSDT",lendingPoolAddress:"0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",collateralPoolAddress:"0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",borrowDynamic:"0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",interestModel:"0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",riskModel:"0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",borrowFeeKey:"0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",supplyLimitKey:"0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",borrowLimitKey:"0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",spool:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",spoolReward:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080",sCoinTreasury:"0x1f02e2fed702b477732d4ad6044aaed04f2e8e586a169153694861a901379df0",sCoinType:"0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",sCoinName:"swusdt",sCoinSymbol:"swUSDT",coinMetadataId:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",coinType:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",sCoinMetadataId:"0x171d0f1ca99d5fefb8b2e40b89899bacdc5417a783906ae119b9cb1c113d59ae",spoolName:"swusdt",decimals:6,pythFeed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",pythFeedObjectId:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"},sui:{coinName:"sui",symbol:"SUI",lendingPoolAddress:"0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",collateralPoolAddress:"0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",borrowDynamic:"0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",interestModel:"0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",riskModel:"0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",borrowFeeKey:"0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",supplyLimitKey:"0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",borrowLimitKey:"0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",spool:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",spoolReward:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9",sCoinTreasury:"0x5c1678c8261ac9eec024d4d630006a9f55c80dc0b1aa38a003fcb1d425818c6b",sCoinType:"0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",sCoinName:"ssui",sCoinSymbol:"sSUI",coinMetadataId:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",coinType:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",sCoinMetadataId:"0xac724644f481f4870ecdc29b9549aa8ea5180f10827c0d97b493f9f65a91455d",spoolName:"ssui",decimals:9,pythFeed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythFeedObjectId:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"},wapt:{coinName:"wapt",symbol:"wAPT",lendingPoolAddress:"0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",collateralPoolAddress:"0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",borrowDynamic:"0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",interestModel:"0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",riskModel:"0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",borrowFeeKey:"0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",coinMetadataId:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",coinType:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37::coin::COIN",decimals:8,pythFeed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",pythFeedObjectId:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"},wsol:{coinName:"wsol",symbol:"wSOL",lendingPoolAddress:"0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",collateralPoolAddress:"0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",borrowDynamic:"0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",interestModel:"0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",riskModel:"0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",borrowFeeKey:"0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",supplyLimitKey:"0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",borrowLimitKey:"0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",sCoinTreasury:"0x760fd66f5be869af4382fa32b812b3c67f0eca1bb1ed7a5578b21d56e1848819",sCoinType:"0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",sCoinName:"swsol",sCoinSymbol:"swSOL",coinMetadataId:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",coinType:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN",sCoinMetadataId:"0xee202d2013fc09453d695c640088ee08f14afc8f1ae26284b4ebbc4712ff1ba5",decimals:8,pythFeed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",pythFeedObjectId:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"},cetus:{coinName:"cetus",symbol:"CETUS",lendingPoolAddress:"0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",collateralPoolAddress:"0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",borrowDynamic:"0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",interestModel:"0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",riskModel:"0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",borrowFeeKey:"0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",supplyLimitKey:"0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",borrowLimitKey:"0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",spool:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",spoolReward:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f",sCoinTreasury:"0xa283c63488773c916cb3d6c64109536160d5eb496caddc721eb39aad2977d735",sCoinType:"0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",sCoinName:"scetus",sCoinSymbol:"sCETUS",coinMetadataId:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",coinType:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",sCoinMetadataId:"0xf022d041455a038d762a091f7a9e9521211f20501bcf8b6913ef5493a023218f",spoolName:"scetus",decimals:9,pythFeed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",pythFeedObjectId:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"},afsui:{coinName:"afsui",symbol:"afSUI",lendingPoolAddress:"0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",collateralPoolAddress:"0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",borrowDynamic:"0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",interestModel:"0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",riskModel:"0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",borrowFeeKey:"0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",supplyLimitKey:"0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",borrowLimitKey:"0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",spool:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",spoolReward:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e",sCoinTreasury:"0x55f4dfe9e40bc4cc11c70fcb1f3daefa2bdc330567c58d4f0792fbd9f9175a62",sCoinType:"0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",sCoinName:"safsui",sCoinSymbol:"safSUI",coinMetadataId:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",coinType:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI",sCoinMetadataId:"0xfd81c4d1b4d9d1b8c522e91121d22e94759386b29eafe1cc3888ca0ebe369b9e",spoolName:"safsui",decimals:9,pythFeed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythFeedObjectId:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"},hasui:{coinName:"hasui",symbol:"haSUI",lendingPoolAddress:"0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",collateralPoolAddress:"0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",borrowDynamic:"0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",interestModel:"0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",riskModel:"0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",borrowFeeKey:"0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",supplyLimitKey:"0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",borrowLimitKey:"0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",spool:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",spoolReward:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66",sCoinTreasury:"0x404ccc1404d74a90eb6f9c9d4b6cda6d417fb03189f80d9070a35e5dab1df0f5",sCoinType:"0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",sCoinName:"shasui",sCoinSymbol:"shaSUI",coinMetadataId:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",coinType:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",sCoinMetadataId:"0x0a2a4a25aac50ac79210d710f93cb22db58bc6ee22f213364dda9a709cab2189",spoolName:"shasui",decimals:9,pythFeed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythFeedObjectId:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"},vsui:{coinName:"vsui",symbol:"vSUI",lendingPoolAddress:"0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",collateralPoolAddress:"0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",borrowDynamic:"0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",interestModel:"0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",riskModel:"0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",borrowFeeKey:"0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",supplyLimitKey:"0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",borrowLimitKey:"0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",spool:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",spoolReward:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a",sCoinTreasury:"0xc06688ee1af25abc286ffb1d18ce273d1d5907cd1064c25f4e8ca61ea989c1d1",sCoinType:"0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",sCoinName:"svsui",sCoinSymbol:"svSUI",coinMetadataId:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",coinType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",sCoinMetadataId:"0xa96cc21ddfb6486be4a96cda0c58734e4ddea2a8c04984f9e6121d8fae997ddf",spoolName:"svsui",decimals:9,pythFeed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythFeedObjectId:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"},sca:{coinName:"sca",symbol:"SCA",lendingPoolAddress:"0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",collateralPoolAddress:"0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",borrowDynamic:"0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",interestModel:"0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",riskModel:"0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",borrowFeeKey:"0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",supplyLimitKey:"0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",borrowLimitKey:"0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",sCoinTreasury:"0xe04bfc95e00252bd654ee13c08edef9ac5e4b6ae4074e8390db39e9a0109c529",sCoinType:"0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",sCoinName:"ssca",sCoinSymbol:"sSCA",coinMetadataId:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",coinType:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",sCoinMetadataId:"0x27e3877491b308dfac46fb3d9f7dfa6a1e8b7dc3c374e92ecda7976055746964",decimals:9,pythFeed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",pythFeedObjectId:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"},fud:{coinName:"fud",symbol:"FUD",lendingPoolAddress:"0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",borrowDynamic:"0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",interestModel:"0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",borrowFeeKey:"0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",supplyLimitKey:"0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",borrowLimitKey:"0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",isolatedAssetKey:"0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",sCoinTreasury:"0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867",sCoinType:"0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",sCoinName:"sfud",sCoinSymbol:"sFUD",coinMetadataId:"0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e",coinType:"0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD",sCoinMetadataId:"0x4e03390de36b8c84e0a8297d3d0d08a8a34bed93787e37fcb26bfc26df33226c",decimals:5,pythFeed:"6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",pythFeedObjectId:"0x4531c3ed0d22f21f5fce882905372006c9aafa30f01db03b789e95a6c50de7b2"},blub:{coinName:"blub",symbol:"BLUB",lendingPoolAddress:"0x4dede1d8eda98647c3fc9838e94a890b73ca37a20764087eb78ba0473edea1a5",borrowDynamic:"0xb2e9df6917ff3cb93fc4361102504c2d225913b3860458ef40f83b370601bec2",interestModel:"0xec07bfcf93df52d1c0dabecc88b1ee66445a2fda6b98378c19d8e029022f2012",borrowFeeKey:"0x59b820845932c1f151793b1c6e605ad993535784ccfaa83e709207d6aed3ab99",supplyLimitKey:"0xc25e930484a10498a53562cfb87da47280e842564d455f25e5b80a913002d5a0",borrowLimitKey:"0xaf4560140b2c6906befd546cc556f7c459964e7c31e20a6e1ab992bbc6d12b7f",isolatedAssetKey:"0x30a8f1dbf9dc05dae26c25fac6dfa80fa2d886e05e61cefc697b94959dd75007",sCoinTreasury:"0x87d34361dfd0e2accc946684d10b176484f348892f6cc51a829418040c4700e1",sCoinType:"0xe72f65446eabfad2103037af2d49d24599106fb44bf4c046c1e7e9acf6844dd0::scallop_blub::SCALLOP_BLUB",coinMetadataId:"0xac32b519790cae96c3317457d903d61d04f1bc8f7710096d80fcba72c7a53703",coinType:"0xfa7ac3951fdca92c5200d468d31a365eb03b2be9936fde615e69f0c1274ad3a0::BLUB::BLUB",sCoinMetadataId:"0xfa11263cb39de80b9e224d7e0391866a7e779d3d62451de82a91ba601bfb1ce3",decimals:2,pythFeed:"5fc11ffe4975b624be495be038da30e30bee2004d8ae6282b5364577ef4ca92c",pythFeedObjectId:"0x246658c3324f2477568c78cca622518fbc6969a004b841d81409d24a7ec39b18"},deep:{coinName:"deep",symbol:"DEEP",lendingPoolAddress:"0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",borrowDynamic:"0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",interestModel:"0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",borrowFeeKey:"0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",supplyLimitKey:"0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",borrowLimitKey:"0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",isolatedAssetKey:"0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",sCoinTreasury:"0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",sCoinType:"0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",sCoinName:"sdeep",sCoinSymbol:"sDEEP",coinMetadataId:"0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",sCoinMetadataId:"0x2443014594a500a9119e11c6c6a86e865834f496c4614280ce8cace33c0b072e",decimals:6,pythFeed:"29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",pythFeedObjectId:"0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed"},fdusd:{coinName:"fdusd",symbol:"FDUSD",lendingPoolAddress:"0x4f46051a01f05c3ad9aecf29a771aad5c884e1a1888e08d7709085e3a095bc9c",collateralPoolAddress:"0x4f6647a9afcfdb62bb9b27e4d1cb7bd7130aca1b4f13fa7164453c869c1681ae",borrowDynamic:"0x4ddcf19b6290a8b048ecb314b14ef7f52c1c5b9ddc9259a2a242cd91d681a085",interestModel:"0xb57a33706b29d2d253c74c1c0869e6e20da99036338d2b0b7235ab41621ee9dd",riskModel:"0xd65fb21758dc1e6184940a1a27efb13228d7cf5e19f6dcca06cc2d996af4a6b9",borrowFeeKey:"0xafe673a27747b063fa918d2dfe47794e44af553737ac562c2a63186539a07f45",supplyLimitKey:"0x730e0785ba056a7a95f4a6959371a598d7fe782e81c40785c79982ced4cf4e35",borrowLimitKey:"0x1630c6954918a06fe56312afb8958366c5ed7af653dae0e32c09d088da38577e",sCoinTreasury:"0xdad9bc6293e694f67a5274ea51b596e0bdabfafc585ae6d7e82888e65f1a03e0",sCoinType:"0x6711551c1e7652a270d9fbf0eee25d99594c157cde3cb5fbb49035eb59b1b001::scallop_fdusd::SCALLOP_FDUSD",sCoinName:"sfdusd",sCoinSymbol:"sFDUSD",coinMetadataId:"0xdebee5265a67c186ed87fe93303d33dfe1de53e3b4fd7d9329c2852860acd3e7",coinType:"0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a::fdusd::FDUSD",sCoinMetadataId:"0xb1529a3b5e5831d19a722493eec19785f613945d3dc984602d44a418f990d73f",decimals:6,pythFeed:"ccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",pythFeedObjectId:"0x5f6583b2b0fe1ecf94aaffeaab8a838794693960cea48c0da282d5f4a24be027"},musd:{coinName:"musd",symbol:"mUSD",lendingPoolAddress:"0x0565254220e7ca857a87341898bdebeb9e5d6f8f8fe68eb25dd3e257d41a0b0c",collateralPoolAddress:void 0,borrowDynamic:"0x9448dc2ae8054d5b735fd617fb4ca57046ddc98bfff91ce31de1df452f3bf695",interestModel:"0xc3b57c57814e22ac42c7062922a0437ebf40495e37aee32cbb94cba0693970ed",riskModel:void 0,borrowFeeKey:"0xfdb02d76dc67553fd15f42f1de49ca79cd2812bdaf8bcd079cfe17ce23ed9fc4",supplyLimitKey:"0x340aaae070f9489b59c4257610babf6f170abf43fbe51cf7de1e2e04492f6823",borrowLimitKey:"0x2af09dd392e5fa0bb1895b021d871f42dd1bdf4843173836d9611c8c6484031a",isolatedAssetKey:"0xe10f03b13d2cdb46543130bafaf1884c9a5a7712b5932aae15b2f8d4fc31a774",sCoinTreasury:"0xadfd554635ccc87e992f23ca838f0f16c14874e324a1b79b77f6bfe118edea9f",sCoinType:"0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD",sCoinName:"smusd",sCoinSymbol:"smUSD",coinMetadataId:"0xc154abd271b24032a2c80d96c1b82109490bb600ed189ef881d8c9467ed44a4f",coinType:"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",sCoinMetadataId:"0xb924f8c3d4b993172d4fc553c1ea242e8ca539e83edc3edaf5512ae44dfa6863",decimals:9,pythFeed:"2ee09cdb656959379b9262f89de5ff3d4dfed0dd34c072b3e22518496a65249c",pythFeedObjectId:"0x72fbf053d6009a40cff74d9708592bd7b86673a0e7b252077e1aa53390976584"},ns:{coinName:"ns",symbol:"NS",lendingPoolAddress:"0x98491693e99905ce243655f1d2dc86b62d7c9c330985ee71d16760b63601708c",borrowDynamic:"0x320035fc3bdba3106f550531523b5eab623fc3b42639e6b27623838d121ef64a",interestModel:"0x6e3c7426f922c6e8538331d36918dc092a53e46d4bb478c36d09b40d0fddc3bf",borrowFeeKey:"0x9d99ae707899e1034401e8fb8524573a2603ac71a6d367f65d06fbb0ca586950",supplyLimitKey:"0xe6e87903708cbc09c8d5b005ddbec036efde2c58de4b52d4d8b9f10cb5c9a92b",borrowLimitKey:"0x3e958a562c6062e39559bb72feb2e4fa5595d629fcafe36a3a40546e0934bd8a",isolatedAssetKey:"0x73ebd841fdbe2a4b4f87fd58a729cba0a7a5871962dc04f5123339d1e0e64de8",sCoinTreasury:"0xa178587907006828839f312e6b5afa69e8aa9c66bdf06b2a5918bd8d913488e3",sCoinType:"0x6511052d2f1404934e0d877709949bcda7c1d451d1218a4b2643ca2f3fa93991::scallop_ns::SCALLOP_NS",sCoinName:"sns",sCoinSymbol:"sNS",coinMetadataId:"0x279adec041f8ec5c2d419abf2c32713ae7930a9a3a1ff244c88e5ceced40db6e",coinType:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178::ns::NS",sCoinMetadataId:"0x898320fe66409bdcf580e2a5764217aa51a6fb26890645efff7011b54117e6df",decimals:6,pythFeed:"bb5ff26e47a3a6cc7ec2fce1db996c2a145300edc5acaabe43bf9ff7c5dd5d32",pythFeedObjectId:"0xc6352e1ea55d7b5acc3ed690cc3cdf8007978071d7bfd6a189445018cfb366e0"},usdy:{coinName:"usdy",symbol:"USDY",lendingPoolAddress:"0xd7a8b75ffcd9f22a0108c95ae735b864e117a28d0bf6d596eb4ccd9d6213210d",collateralPoolAddress:"0x518a921e61aa11a0252bf70d5b2e378e886163a558e07b32424f3930ee0a464a",borrowDynamic:"0xaddf0b9b382f1ace39916383d24e91b5fd6ff49c5ae0c9400c173fd448e173c8",interestModel:"0x85781ba1b952743fbc7ba436e165721a189bd724d65cf4abb78b9fe924e6e2eb",riskModel:"0x96923670c98ec791fefd8074b87cd0087da60e4dbfca9423049fc805e703ec50",borrowFeeKey:"0x1904f3f2b76bbfa6ba6184cace93ee605691333a35525f1d6648a1509411e4d2",supplyLimitKey:"0x2f3a58bcf68426cc998b7a9782dccf87351c44efbe655b13a0ac753d6f34a034",borrowLimitKey:"0xe8ade192f71fbe30d2ed1d246241c370d2882ff78ad312a3382ca8e2c73c386d",sCoinTreasury:"0xc8c5339fb10d9ad96f235fb312bda54df351549a3302e7fa7fd5d1725481604f",sCoinType:"0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY",sCoinName:"susdy",sCoinSymbol:"sUSDY",coinMetadataId:"0xd8dd6cf839e2367de6e6107da4b4361f44798dd6cf26d094058d94e4cee25e36",coinType:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY",sCoinMetadataId:"0x098c4c77bd29ec803a11fa2b2d684577c6a09e75b77e0a7ab59b8b785fb492df",decimals:6,pythFeed:"e3d1723999820435ebab53003a542ff26847720692af92523eea613a9a28d500",pythFeedObjectId:"0x773cb390165e227cbd5bd924edaeff7d33b1b78aac045c4903ed9be7e711741a"}};var Pe={testnet:["https://hermes-beta.pyth.network"],mainnet:["https://hermes.pyth.network","https://scallop.rpc.p2p.world"]},Ae={usdc:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",sbeth:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",sbusdt:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",sbwbtc:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",weth:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",wbtc:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",wusdc:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",wusdt:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",sui:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",wapt:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",wsol:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",cetus:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",afsui:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",hasui:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",vsui:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",sca:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",fdusd:"ccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",deep:"29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",fud:"6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",blub:"5fc11ffe4975b624be495be038da30e30bee2004d8ae6282b5364577ef4ca92c",musd:"2ee09cdb656959379b9262f89de5ff3d4dfed0dd34c072b3e22518496a65249c",ns:"bb5ff26e47a3a6cc7ec2fce1db996c2a145300edc5acaabe43bf9ff7c5dd5d32",usdy:"e3d1723999820435ebab53003a542ff26847720692af92523eea613a9a28d500"};var B={api:{getAddresses:t=>["api","getAddresses",{addressesId:t}],getMarket:()=>["api","getMarket"],getSpools:()=>["api","getSpools"],getBorrowIncentivePool:()=>["api","getBorrowIncentivePools"],getTotalValueLocked:()=>["api","getTotalValueLocked"]},rpc:{getInspectTxn:(t,e,a)=>["rpc","getInspectTxn",{queryTarget:t,args:JSON.stringify(e),typeArgs:a?JSON.stringify(a):void 0}],getObject:(t,e)=>["rpc","getObject",{objectId:t,options:e}],getObjects:t=>["rpc","getObjects",{objectIds:JSON.stringify(t??void 0)}],getOwnedObjects:t=>["rpc","getOwnedObjects",{walletAddress:t?.owner,cursor:t?.cursor??void 0,options:t?.options??void 0,filter:JSON.stringify(t?.filter??void 0),limit:t?.limit??void 0}],getDynamicFields:t=>["rpc","getDynamicFields",{parentId:t?.parentId,cursor:t?.cursor??void 0,limit:t?.limit??void 0}],getDynamicFieldObject:t=>["rpc","getDynamicFieldObject",{parentId:t?.parentId,name:JSON.stringify(t?.name??void 0)}],getTotalVeScaTreasuryAmount:(t,e)=>["rpc","getTotalVeScaTreasuryAmount",{refreshArgs:JSON.stringify(t),vescaAmountArgs:JSON.stringify(e)}],getAllCoinBalances:t=>["rpc","getAllCoinBalances",{owner:t}],getNormalizedMoveFunction:t=>["rpc","getNormalizedMoveCall",t]},oracle:{getPythLatestPriceFeeds:()=>["oracle","getPythPriceIds"]}};var Vt=[client.getFullnodeUrl("mainnet"),"https://sui-mainnet.public.blastapi.io","https://sui-mainnet-ca-2.cosmostation.io","https://sui-mainnet-eu-4.cosmostation.io","https://sui-mainnet-endpoint.blockvision.org","https://sui-rpc.publicnode.com","https://sui-mainnet-rpc.allthatnode.com","https://mainnet.suiet.app","https://mainnet.sui.rpcpool.com","https://sui1mainnet-rpc.chainode.tech","https://fullnode.mainnet.apis.scallop.io","https://sui-mainnet-us-2.cosmostation.io"];var ut={core:{version:"0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",versionCap:"0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",object:"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",market:"0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",adminCap:"0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",coinDecimalsRegistry:"0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",obligationAccessStore:"0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9",coins:{usdc:{id:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",metaData:"0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},cetus:{id:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",metaData:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",feedObject:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"}}},wapt:{id:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",metaData:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",feedObject:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"}}},wsol:{id:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",metaData:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",feedObject:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"}}},wbtc:{id:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",metaData:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},weth:{id:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",metaData:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},wusdc:{id:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",metaData:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},wusdt:{id:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",metaData:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},sui:{id:"0x0000000000000000000000000000000000000000000000000000000000000002",metaData:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",treasury:"",oracle:{supra:"",switchboard:"0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},afsui:{id:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",metaData:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},hasui:{id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",metaData:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},vsui:{id:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",metaData:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},sca:{id:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",metaData:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",feedObject:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"}}},sbeth:{id:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",metaData:"0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},fdusd:{id:"0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a",metaData:"0xdebee5265a67c186ed87fe93303d33dfe1de53e3b4fd7d9329c2852860acd3e7",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",feedObject:"0x5f6583b2b0fe1ecf94aaffeaab8a838794693960cea48c0da282d5f4a24be027"}}},deep:{id:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",metaData:"0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",feedObject:"0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed"}}},fud:{id:"0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1",metaData:"0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",feedObject:"0x4531c3ed0d22f21f5fce882905372006c9aafa30f01db03b789e95a6c50de7b2"}}},sbusdt:{id:"0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068",metaData:"0xda61b33ac61ed4c084bbda65a2229459ed4eb2185729e70498538f0688bec3cc",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},blub:{id:"0xfa7ac3951fdca92c5200d468d31a365eb03b2be9936fde615e69f0c1274ad3a0",metaData:"0xac32b519790cae96c3317457d903d61d04f1bc8f7710096d80fcba72c7a53703",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"5fc11ffe4975b624be495be038da30e30bee2004d8ae6282b5364577ef4ca92c",feedObject:"0x246658c3324f2477568c78cca622518fbc6969a004b841d81409d24a7ec39b18"}}},sbwbtc:{id:"0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b",metaData:"0x53e1cae1ad70a778d0b450d36c7c2553314ca029919005aad26945d65a8fb784",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},musd:{id:"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722",metaData:"0xc154abd271b24032a2c80d96c1b82109490bb600ed189ef881d8c9467ed44a4f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2ee09cdb656959379b9262f89de5ff3d4dfed0dd34c072b3e22518496a65249c",feedObject:"0x72fbf053d6009a40cff74d9708592bd7b86673a0e7b252077e1aa53390976584"}}},ns:{id:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178",metaData:"0x279adec041f8ec5c2d419abf2c32713ae7930a9a3a1ff244c88e5ceced40db6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"bb5ff26e47a3a6cc7ec2fce1db996c2a145300edc5acaabe43bf9ff7c5dd5d32",feedObject:"0xc6352e1ea55d7b5acc3ed690cc3cdf8007978071d7bfd6a189445018cfb366e0"}}},usdy:{id:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb",metaData:"0xd8dd6cf839e2367de6e6107da4b4361f44798dd6cf26d094058d94e4cee25e36",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e3d1723999820435ebab53003a542ff26847720692af92523eea613a9a28d500",feedObject:"0x773cb390165e227cbd5bd924edaeff7d33b1b78aac045c4903ed9be7e711741a"}}}},oracles:{xOracle:"0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",xOracleCap:"0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",registryCap:"0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",state:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole:"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",wormholeState:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"}},packages:{coinDecimalsRegistry:{id:"0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",upgradeCap:"0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"},math:{id:"0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",upgradeCap:"0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"},whitelist:{id:"0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",upgradeCap:"0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"},x:{id:"0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",upgradeCap:"0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"},protocol:{id:"0x578374a1f5182013268bbe9b2b080c5d14cbed1a48f9990c5f8a1c33bf100e69",upgradeCap:"0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"},protocolWhitelist:{id:"0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",upgradeCap:"0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"},query:{id:"0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f",upgradeCap:"0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"},supra:{id:"",upgradeCap:""},pyth:{id:"0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",upgradeCap:"0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"},switchboard:{id:"",upgradeCap:""},xOracle:{id:"0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",upgradeCap:"0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"},testCoin:{id:"",upgradeCap:""}}},spool:{id:"0x472fc7d4c3534a8ec8c2f5d7a557a43050eab057aaab853e8910968ddc84fc9f",adminCap:"0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",object:"0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a",pools:{sweth:{id:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",rewardPoolId:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"},ssui:{id:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",rewardPoolId:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"},susdc:{id:"0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",rewardPoolId:"0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"},swusdc:{id:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",rewardPoolId:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"},swusdt:{id:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",rewardPoolId:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"},scetus:{id:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",rewardPoolId:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"},safsui:{id:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",rewardPoolId:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"},shasui:{id:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",rewardPoolId:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"},svsui:{id:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",rewardPoolId:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"}},config:""},borrowIncentive:{id:"0x53f1141eb37ba5d0234b2a5054c7c886124fc1279ef50c307665363c8dd2bd29",adminCap:"0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",object:"0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",query:"0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",incentivePools:"0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",incentiveAccounts:"0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",config:"0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7"},vesca:{id:"0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",object:"0xcfe2d87aa5712b67cad2732edb6a2201bfdf592377e5c0968b7cb02099bd8e21",adminCap:"0x4d105b16467acca81d18c132cdd1a3cee159920a86c1ef4bdbf2e8d7878500c5",tableId:"0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",table:"0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",treasury:"0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",config:"0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"},referral:{id:"0x54334af0681d89ce4d2396f4367015d8ee3a7ce5634f2a0c77c0fb0f36b23dc0",object:"0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",adminCap:"0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",referralBindings:"0xf63299d58789d99de94092b9011323466e55ca0c1ea1a7a3786a589af46e1c09",bindingTableId:"0x1c8202b17267ec8d6cf97ca013615354181a04f179570e42601ff2dae19294b1",referralRevenuePool:"0x6abd852caf90769c1b185cdf636d841673fa95528f0550f018b8a138bd283c07",revenueTableId:"0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",referralTiers:"0x962cb903d8d7346190c5204785ccbb91b61086aa764f674c8145df82335cf83e",tiersTableId:"0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",authorizedWitnessList:"0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e",version:"0x1bd4b7285f72e11c316b828c7c47b3f4da18dcec9f9b3dba6d8629cbb6f93e5e"},loyaltyProgram:{id:"0xab7c4e6d53ef862a1115d0c381fd33e05f9c206b79f322a54990b1e8c2fe3446",object:"0xab7c4e6d53ef862a1115d0c381fd33e05f9c206b79f322a54990b1e8c2fe3446",rewardPool:"0x215e1022037052407e69a5c5938f888078013c924cae97132492719ac2c53ec6",userRewardTableId:"0x574a11f8a0fbaa05b8f559cb65634e8eb20f26b1ec29e7d58de9167f3cedd0f7"},scoin:{id:"0x80ca577876dec91ae6d22090e56c39bc60dce9086ab0729930c6900bc4162b4c",coins:{ssui:{coinType:"0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",treasury:"0x5c1678c8261ac9eec024d4d630006a9f55c80dc0b1aa38a003fcb1d425818c6b",metaData:"0xac724644f481f4870ecdc29b9549aa8ea5180f10827c0d97b493f9f65a91455d"},scetus:{coinType:"0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",treasury:"0xa283c63488773c916cb3d6c64109536160d5eb496caddc721eb39aad2977d735",metaData:"0xf022d041455a038d762a091f7a9e9521211f20501bcf8b6913ef5493a023218f"},ssca:{coinType:"0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",treasury:"0xe04bfc95e00252bd654ee13c08edef9ac5e4b6ae4074e8390db39e9a0109c529",metaData:"0x27e3877491b308dfac46fb3d9f7dfa6a1e8b7dc3c374e92ecda7976055746964"},swusdc:{coinType:"0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",treasury:"0x50c5cfcbcca3aaacab0984e4d7ad9a6ad034265bebb440f0d1cd688ec20b2548",metaData:"0xdc0595d068621d630f3c7c364dd257f7e3f8079e00c31c8d18755a033c15ae93"},swusdt:{coinType:"0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",treasury:"0x1f02e2fed702b477732d4ad6044aaed04f2e8e586a169153694861a901379df0",metaData:"0x171d0f1ca99d5fefb8b2e40b89899bacdc5417a783906ae119b9cb1c113d59ae"},sweth:{coinType:"0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",treasury:"0x4b7f5da0e306c9d52490a0c1d4091e653d6b89778b9b4f23c877e534e4d9cd21",metaData:"0x077d0fd835b559e5b4bb52641f7627ddbf8b200f9b2cf4e28b3514da2a32a4dd"},safsui:{coinType:"0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",treasury:"0x55f4dfe9e40bc4cc11c70fcb1f3daefa2bdc330567c58d4f0792fbd9f9175a62",metaData:"0xfd81c4d1b4d9d1b8c522e91121d22e94759386b29eafe1cc3888ca0ebe369b9e"},shasui:{coinType:"0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",treasury:"0x404ccc1404d74a90eb6f9c9d4b6cda6d417fb03189f80d9070a35e5dab1df0f5",metaData:"0x0a2a4a25aac50ac79210d710f93cb22db58bc6ee22f213364dda9a709cab2189"},svsui:{coinType:"0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",treasury:"0xc06688ee1af25abc286ffb1d18ce273d1d5907cd1064c25f4e8ca61ea989c1d1",metaData:"0xa96cc21ddfb6486be4a96cda0c58734e4ddea2a8c04984f9e6121d8fae997ddf"},swsol:{coinType:"0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",treasury:"0x760fd66f5be869af4382fa32b812b3c67f0eca1bb1ed7a5578b21d56e1848819",metaData:"0xee202d2013fc09453d695c640088ee08f14afc8f1ae26284b4ebbc4712ff1ba5"},swbtc:{coinType:"0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",treasury:"0xe2883934ea42c99bc998bbe0f01dd6d27aa0e27a56455707b1b34e6a41c20baa",metaData:"0x1ba5904dae41699683da767c7a97785a55c51ec1253498c8fe1980169a96523d"},susdc:{coinType:"0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",treasury:"0xbe6b63021f3d82e0e7e977cdd718ed7c019cf2eba374b7b546220402452f938e",metaData:"0x763a21eba338e00bc684aaad80491c89eea5f247b59c47df45b17610c9ad58f2"},ssbeth:{coinType:"0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",treasury:"0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed",metaData:"0xdfdd14d53ed8c7ace7cac8a0eecdfa4c2345e15d9efcbd4e1828f81a107cbe2d"},sfdusd:{coinType:"0x6711551c1e7652a270d9fbf0eee25d99594c157cde3cb5fbb49035eb59b1b001::scallop_fdusd::SCALLOP_FDUSD",treasury:"0xdad9bc6293e694f67a5274ea51b596e0bdabfafc585ae6d7e82888e65f1a03e0",metaData:"0xb1529a3b5e5831d19a722493eec19785f613945d3dc984602d44a418f990d73f"},sdeep:{coinType:"0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",treasury:"0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",metaData:"0x2443014594a500a9119e11c6c6a86e865834f496c4614280ce8cace33c0b072e"},sfud:{coinType:"0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",treasury:"0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867",metaData:"0x4e03390de36b8c84e0a8297d3d0d08a8a34bed93787e37fcb26bfc26df33226c"},ssbusdt:{coinType:"0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT",treasury:"0x58bdf6a9752e3a60144d0b70e8608d630dfd971513e2b2bfa7282f5eaa7d04d8",metaData:"0x1ce77b036043c8fdcc5cd050ed06433ae60296b194c2abf7ade8b7b7c8386d36"},sblub:{coinType:"0xe72f65446eabfad2103037af2d49d24599106fb44bf4c046c1e7e9acf6844dd0::scallop_blub::SCALLOP_BLUB",treasury:"0x87d34361dfd0e2accc946684d10b176484f348892f6cc51a829418040c4700e1",metaData:"0xfa11263cb39de80b9e224d7e0391866a7e779d3d62451de82a91ba601bfb1ce3"},ssbwbtc:{coinType:"0x08c0fe357d3a138f4552bee393ce3a28a45bebcca43373d6a90bc44ab76f82e2::scallop_sb_wbtc::SCALLOP_SB_WBTC",treasury:"0x21db1d3b310d32b5fb1383591103bfea57c6aed62ef6d3b6d469bab752b8681f",metaData:"0x83d3d44ca57f9b1657065865caa497188d6fc1429f0ca846a51a9058f066f591"},smusd:{coinType:"0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD",treasury:"0xadfd554635ccc87e992f23ca838f0f16c14874e324a1b79b77f6bfe118edea9f",metaData:"0xb924f8c3d4b993172d4fc553c1ea242e8ca539e83edc3edaf5512ae44dfa6863"},sns:{coinType:"0x6511052d2f1404934e0d877709949bcda7c1d451d1218a4b2643ca2f3fa93991::scallop_ns::SCALLOP_NS",treasury:"0xa178587907006828839f312e6b5afa69e8aa9c66bdf06b2a5918bd8d913488e3",metaData:"0x898320fe66409bdcf580e2a5764217aa51a6fb26890645efff7011b54117e6df"},susdy:{coinType:"0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY",treasury:"0xc8c5339fb10d9ad96f235fb312bda54df351549a3302e7fa7fd5d1725481604f",metaData:"0x098c4c77bd29ec803a11fa2b2d684577c6a09e75b77e0a7ab59b8b785fb492df"}}}};var be=86400,Oe=1460,te=126144e3,pt=1e10,mt=1e9;var H=t=>new suiKit.SuiKit({...t,fullnodeUrls:Array.from(new Set([...t.fullnodeUrls??[],...Vt]))});var no=10,lo=250,Qe=(t,e)=>{let a={...t};for(let o in e)e[o]&&typeof e[o]=="object"&&!Array.isArray(e[o])?a[o]=Qe(t[o]||{},e[o]):a[o]=e[o];return a},K=class{params;queryClient;suiKit;walletAddress;tokensPerInterval=no;interval=lo;tokens;lastRefill;constructor(e={},a){this.params=e,this.suiKit=a?.suiKit??H(e),this.queryClient=a?.queryClient??new queryCore.QueryClient(e?.cacheOptions??jt),this.tokens=this.tokensPerInterval,this.lastRefill=Date.now(),this.walletAddress=e.walletAddress??this.suiKit.currentAddress();}get client(){return this.suiKit.client()}refill(){let a=Date.now()-this.lastRefill;if(a>=this.interval){let o=Math.floor(a/this.interval)*this.tokensPerInterval;this.tokens=Math.min(this.tokens+o,this.tokensPerInterval),this.lastRefill+=Math.floor(a/this.interval)*this.interval;}}removeTokens(e){return this.refill(),this.tokens>=e?(this.tokens-=e,!0):!1}async callWithRateLimit(e,a=15,o=1.25){let r=0,s=async()=>{if(this.removeTokens(1))return await e();if(r<a){r++;let c=this.interval*Math.pow(o,r);return await new Promise(i=>setTimeout(i,c)),s()}else return console.error("Maximum retries reached"),null};return s()}retryFn(e,a){return e===5?!1:a.status===429}async queryInspectTxn({queryTarget:e,args:a,typeArgs:o}){let r=new suiKit.SuiTxBlock,s=await this.queryGetNormalizedMoveFunction(e);if(!s)throw new Error("Invalid query target");let{parameters:c}=s,i=await Promise.all((a??[]).map(async(l,d)=>{if(typeof l!="string")return l;let b=(await this.queryGetObject(l))?.data;if(!b)return l;let u=b.owner;if(!u||typeof u!="object"||!("Shared"in u))return {objectId:b.objectId,version:b.version,digest:b.digest};let p=c[d];return typeof p!="object"||!("MutableReference"in p||"Reference"in p)?l:{objectId:b.objectId,initialSharedVersion:u.Shared.initial_shared_version,mutable:"MutableReference"in p}}));return r.moveCall(e,i,o),await this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:B.rpc.getInspectTxn(e,a,o),queryFn:async()=>await this.callWithRateLimit(async()=>await this.suiKit.inspectTxn(r))})}async queryGetNormalizedMoveFunction(e){let{address:a,module:o,name:r}=suiKit.parseStructTag(e);return this.queryClient.fetchQuery({queryKey:B.rpc.getNormalizedMoveFunction(e),queryFn:async()=>await this.callWithRateLimit(async()=>await this.suiKit.client().getNormalizedMoveFunction({package:a,module:o,function:r}))})}async queryGetObject(e,a){return a={...a,showOwner:!0,showContent:!0,showType:!0},this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:B.rpc.getObject(e,a),queryFn:async()=>await this.callWithRateLimit(async()=>await this.client.getObject({id:e,options:a}))})}async queryGetObjects(e){if(e.length===0)return [];let a={showContent:!0,showOwner:!0,showType:!0};return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:B.rpc.getObjects(e),queryFn:async()=>{let o=await this.callWithRateLimit(async()=>await this.suiKit.getObjects(e,a));return o&&o.forEach(r=>{let s=B.rpc.getObject(r.objectId);this.queryClient.getQueriesData({exact:!1,queryKey:s}).forEach(([i,n])=>{this.queryClient.setQueryData(i,Qe(n,{data:r,error:null}),{updatedAt:Date.now()});});}),o}})}async queryGetOwnedObjects(e){return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:B.rpc.getOwnedObjects(e),queryFn:async()=>{let a=await this.callWithRateLimit(async()=>await this.client.getOwnedObjects(e));return a&&a.data.length>0&&a.data.filter(o=>!!o.data).forEach(o=>{let r=B.rpc.getObject(o.data.objectId);this.queryClient.getQueriesData({exact:!1,queryKey:r}).forEach(([c,i])=>{this.queryClient.setQueryData(c,Qe(i,{data:o.data,error:null}),{updatedAt:Date.now()});});}),a}})}async queryGetDynamicFields(e){return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:B.rpc.getDynamicFields(e),queryFn:async()=>await this.callWithRateLimit(async()=>await this.client.getDynamicFields(e))})}async queryGetDynamicFieldObject(e){return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:a=>Math.min(1e3*a,8e3),queryKey:B.rpc.getDynamicFieldObject(e),queryFn:async()=>{let a=await this.callWithRateLimit(()=>this.client.getDynamicFieldObject(e));if(a?.data){let o=B.rpc.getObject(a.data.objectId);this.queryClient.getQueriesData({exact:!1,queryKey:o}).forEach(([s,c])=>{this.queryClient.setQueryData(s,Qe(c,{data:a.data,error:null}),{updatedAt:Date.now()});});}return a}})}async queryGetAllCoinBalances(e){return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:B.rpc.getAllCoinBalances(e),queryFn:async()=>{let a=await this.callWithRateLimit(async()=>await this.client.getAllBalances({owner:e}));return a?a.reduce((r,s)=>(s.totalBalance!=="0"&&(r[suiKit.normalizeStructTag(s.coinType)]=s),r),{}):{}}})}async queryGetCoinBalance(e){return e.coinType?(await this.queryGetAllCoinBalances(e.owner)??{})[suiKit.normalizeStructTag(e.coinType)]??"0":null}};var Qt={core:{version:"",versionCap:"",object:"",market:"",adminCap:"",coinDecimalsRegistry:"",obligationAccessStore:"",coins:{cetus:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wapt:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wsol:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wbtc:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},weth:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wusdc:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wusdt:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},sui:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},afsui:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},hasui:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},vsui:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},sca:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}}},oracles:{xOracle:"",xOracleCap:"",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"",registryCap:"",state:"",wormhole:"",wormholeState:""}},packages:{coinDecimalsRegistry:{id:"",upgradeCap:""},math:{id:"",upgradeCap:""},whitelist:{id:"",upgradeCap:""},x:{id:"",upgradeCap:""},protocol:{id:"",upgradeCap:""},protocolWhitelist:{id:"",upgradeCap:""},query:{id:"",upgradeCap:""},supra:{id:"",upgradeCap:""},pyth:{id:"",upgradeCap:""},switchboard:{id:"",upgradeCap:""},xOracle:{id:"",upgradeCap:""},testCoin:{id:"",upgradeCap:""}}},spool:{id:"",adminCap:"",object:"",pools:{sweth:{id:"",rewardPoolId:""},ssui:{id:"",rewardPoolId:""},swusdc:{id:"",rewardPoolId:""},swusdt:{id:"",rewardPoolId:""},scetus:{id:"",rewardPoolId:""},safsui:{id:"",rewardPoolId:""},shasui:{id:"",rewardPoolId:""},svsui:{id:"",rewardPoolId:""}},config:""},borrowIncentive:{id:"",adminCap:"",object:"",query:"",incentivePools:"",incentiveAccounts:"",config:""},vesca:{id:"",object:"",adminCap:"",tableId:"",table:"",treasury:"",config:""},referral:{id:"",version:"",object:"",adminCap:"",referralBindings:"",bindingTableId:"",referralRevenuePool:"",revenueTableId:"",referralTiers:"",tiersTableId:"",authorizedWitnessList:""},loyaltyProgram:{id:"",object:"",rewardPool:"",userRewardTableId:""},scoin:{id:"",coins:{ssui:{coinType:"",treasury:"",metaData:""},scetus:{coinType:"",treasury:"",metaData:""},ssca:{coinType:"",treasury:"",metaData:""},swusdc:{coinType:"",treasury:"",metaData:""},swusdt:{coinType:"",treasury:"",metaData:""},sweth:{coinType:"",treasury:"",metaData:""},safsui:{coinType:"",treasury:"",metaData:""},shasui:{coinType:"",treasury:"",metaData:""},svsui:{coinType:"",treasury:"",metaData:""}}}},z=class{_auth;_requestClient;_id;_network;_currentAddresses;_addressesMap;cache;constructor(e,a){let{id:o,auth:r,network:s,forceInterface:c}=e;if(this.cache=a?.cache??new K({}),this._requestClient=bo__default.default.create({baseURL:Nt,headers:{"Content-Type":"application/json",Accept:"application/json"},timeout:8e3}),r&&(this._auth=r),this._id=o,this._network=s??"mainnet",this._addressesMap=new Map,c)for(let[i,n]of Object.entries(c))["localnet","devnet","testnet","mainnet"].includes(i)&&(i===this._network&&(this._currentAddresses=n),this._addressesMap.set(i,n));}getId(){return this._id||void 0}get(e){if(this._currentAddresses)return e.split(".").reduce((o,r)=>typeof o=="object"?o[r]:o,this._currentAddresses)||void 0}set(e,a){if(this._currentAddresses){let o=e.split(".");o.reduce((r,s,c)=>{if(c===o.length-1)r[s]=a;else return r[s]},this._currentAddresses);}return this._currentAddresses}switchCurrentAddresses(e){return this._addressesMap.has(e)&&(this._currentAddresses=this._addressesMap.get(e),this._network=e),this._currentAddresses}getAddresses(e){return e?this._addressesMap.get(e):this._currentAddresses??this._addressesMap.get(this._network)}setAddresses(e,a){let o=a||this._network;o===this._network&&(this._currentAddresses=e),this._addressesMap.set(o,e);}getAllAddresses(){return Object.fromEntries(this._addressesMap)}async create(e){let{addresses:a,network:o,auth:r,memo:s}=e??{},c=r||this._auth||void 0,i=o||this._network,n=a||this._currentAddresses||this._addressesMap.get(i)||Qt;if(c!==void 0){this._addressesMap.clear(),this.setAddresses(n,i);let l=await this._requestClient.post("/addresses",JSON.stringify({...Object.fromEntries(this._addressesMap),memo:s}),{headers:{"Content-Type":"application/json","api-key":r||this._auth}});if(l.status===201){for(let[d,b]of Object.entries(l.data))["localnet","devnet","testnet","mainnet"].includes(d)&&(d===this._network&&(this._currentAddresses=b),this._addressesMap.set(d,b));return this._id=l.data.id,this.getAllAddresses()}else throw Error("Failed to create addresses.")}else throw Error("You don't have permission to access this request.")}async read(e){let a=e||this._id||void 0;if(a!==void 0){let o=await this.cache.queryClient.fetchQuery({queryKey:B.api.getAddresses(a),queryFn:async()=>await this._requestClient.get(`/addresses/${a}`,{headers:{"Content-Type":"application/json"}})});if(o.status===200){for(let[r,s]of Object.entries(o.data))["localnet","devnet","testnet","mainnet"].includes(r)&&(r===this._network&&(this._currentAddresses=s),this._addressesMap.set(r,s));return this._id=o.data.id,this.getAllAddresses()}else throw Error("Failed to create addresses.")}else throw Error("Please provide API addresses id.")}async update(e){let{id:a,addresses:o,network:r,auth:s,memo:c}=e??{},i=s||this._auth||void 0,n=a||this._id||void 0,l=r||this._network,d=o||this._currentAddresses||this._addressesMap.get(l)||Qt;if(n===void 0)throw Error("Require specific addresses id to be updated.");if(i!==void 0){a!==this._id&&this._addressesMap.clear(),this.setAddresses(d,l);let b=await this._requestClient.put(`/addresses/${n}`,JSON.stringify({...Object.fromEntries(this._addressesMap),memo:c}),{headers:{"Content-Type":"application/json","api-key":s||this._auth}});if(b.status===200){for(let[u,p]of Object.entries(b.data))["localnet","devnet","testnet","mainnet"].includes(u)&&(u===this._network&&(this._currentAddresses=p),this._addressesMap.set(u,p));return this._id=b.data.id,this.getAllAddresses()}else throw Error("Failed to update addresses.")}else throw Error("You don't have permission to access this request.")}async delete(e,a){let o=a||this._auth||void 0,r=e||this._id||void 0;if(r===void 0)throw Error("Require specific addresses id to be deleted.");if(o!==void 0)if((await this._requestClient.delete(`/addresses/${r}`,{headers:{"Content-Type":"application/json","api-key":a||this._auth}})).status===200)this._id=void 0,this._currentAddresses=void 0,this._addressesMap.clear();else throw Error("Failed to delete addresses.");else throw Error("You don't have permission to access this request.")}};var _=t=>{let e=t.blockData.sender;if(!e)throw new Error("Sender is required");return e},Ie=t=>{if(t===void 0)throw new Error("veSca not found")},yt=t=>{if(t<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead")},St=(t,e,a)=>{Ie(a),yt(a);let o=Math.floor(a/1e3);if(t<1)throw new Error("Minimum lock period is 1 day");let r=Math.floor((e-o)/86400);if(t>r)throw new Error(`Cannot extend lock period by ${t} days, maximum lock period is ~4 years (${1460} days), remaining lock period is ${1460-r}`)},qt=(t,e,a,o)=>{let r=o?Math.floor(o/1e3):void 0,s=!r,c=!s&&r*1e3<=new Date().getTime();if(s||c)if(t!==void 0&&e!==void 0){if(e<=0)throw new Error("Lock period must be greater than 0");if(typeof t=="number"&&t<1e10)throw new Error(`Minimum lock amount for ${c?"renewing expired veSca":"initial lock"} is 10 SCA`);if(e*86400>126144e3)throw new Error(`Maximum lock period is ~4 years (${1460} days)`)}else throw new Error(`SCA amount and lock period is required for ${c?"renewing expired veSca":"initial lock"}`);else {if(Ie(o),yt(o),typeof t=="number"&&t<1e9)throw new Error("Minimum top up amount is 1 SCA");a&&e&&St(e,a,o);}},$t=(t,e)=>{if(Ie(e),yt(e),t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(!!e&&e<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead")},Gt=(t,e,a)=>{if(!a||a>new Date().getTime())throw new Error("Renew method can only be used for expired veSca");if(t<1e10)throw new Error("Minimum lock amount for renewing expired vesca 10 SCA");if(e*86400>=126057600)throw new Error(`Maximum lock period is ~4 years (${1459} days)`)};var wt=t=>({coinType:utils.normalizeStructTag(t.type.name),maxBorrowRate:Number(t.maxBorrowRate.value)/2**32,borrowRate:Number(t.interestRate.value)/2**32,borrowRateScale:Number(t.interestRateScale),borrowIndex:Number(t.borrowIndex),lastUpdated:Number(t.lastUpdated),cashAmount:Number(t.cash),debtAmount:Number(t.debt),marketCoinSupplyAmount:Number(t.marketCoinSupply),reserveAmount:Number(t.reserve),reserveFactor:Number(t.reserveFactor.value)/2**32,borrowWeight:Number(t.borrowWeight.value)/2**32,borrowFee:Number(t.borrowFeeRate.value)/2**32,baseBorrowRate:Number(t.baseBorrowRatePerSec.value)/2**32,borrowRateOnHighKink:Number(t.borrowRateOnHighKink.value)/2**32,borrowRateOnMidKink:Number(t.borrowRateOnMidKink.value)/2**32,highKink:Number(t.highKink.value)/2**32,midKink:Number(t.midKink.value)/2**32,minBorrowAmount:Number(t.minBorrowAmount),isIsolated:t.isIsolated,supplyLimit:Number(t.supplyLimit),borrowLimit:Number(t.borrowLimit)}),gt=(t,e)=>{let a=t.parseCoinNameFromType(e.coinType),o=t.getCoinDecimal(a),r=24*365*3600,s=e.baseBorrowRate*r/e.borrowRateScale,c=e.borrowRateOnHighKink*r/e.borrowRateScale,i=e.borrowRateOnMidKink*r/e.borrowRateScale,n=e.maxBorrowRate*r/e.borrowRateScale,l=e.borrowRate*r/e.borrowRateScale,d=Math.floor(new Date().getTime()/1e3)-e.lastUpdated,b=h__default.default(e.borrowIndex).multipliedBy(h__default.default(d).multipliedBy(e.borrowRate)).dividedBy(e.borrowRateScale),u=h__default.default(e.borrowIndex).plus(b),p=h__default.default(u).dividedBy(e.borrowIndex).minus(1),f=h__default.default(e.debtAmount).multipliedBy(p),m=f.plus(e.debtAmount),y=m.shiftedBy(-1*o),w=h__default.default(e.reserveAmount).plus(f.multipliedBy(e.reserveFactor)),g=w.shiftedBy(-1*o),k=h__default.default(m).plus(Math.max(e.cashAmount-w.toNumber(),0)),T=k.shiftedBy(-1*o),j=h__default.default(m).dividedBy(k);j=j.isFinite()?j:h__default.default(0);let A=h__default.default(l).multipliedBy(j).multipliedBy(1-e.reserveFactor);A=A.isFinite()?A:h__default.default(0);let S=k.dividedBy(e.marketCoinSupplyAmount);return S=S.isFinite()&&!S.isNaN()?S:h__default.default(1),{baseBorrowApr:s,baseBorrowApy:t.parseAprToApy(s),borrowAprOnHighKink:c,borrowApyOnHighKink:t.parseAprToApy(c),borrowAprOnMidKink:i,borrowApyOnMidKink:t.parseAprToApy(i),coinDecimal:o,maxBorrowApr:n,maxBorrowApy:t.parseAprToApy(n),borrowApr:Math.min(l,n),borrowApy:Math.min(t.parseAprToApy(l),t.parseAprToApy(n)),borrowIndex:u.toNumber(),growthInterest:p.toNumber(),supplyAmount:k.toNumber(),supplyCoin:T.toNumber(),borrowAmount:m.toNumber(),borrowCoin:y.toNumber(),reserveAmount:w.toNumber(),reserveCoin:g.toNumber(),utilizationRate:j.toNumber(),supplyApr:A.toNumber(),supplyApy:t.parseAprToApy(A.toNumber()),conversionRate:S.toNumber(),isIsolated:e.isIsolated,maxSupplyCoin:h__default.default(e.supplyLimit).shiftedBy(-o).toNumber(),maxBorrowCoin:h__default.default(e.borrowLimit).shiftedBy(-o).toNumber()}},qe=t=>({coinType:utils.normalizeStructTag(t.type.name),isIsolated:t.isIsolated,collateralFactor:Number(t.collateralFactor.value)/4294967296,liquidationFactor:Number(t.liquidationFactor.value)/4294967296,liquidationDiscount:Number(t.liquidationDiscount.value)/4294967296,liquidationPenalty:Number(t.liquidationPenalty.value)/4294967296,liquidationReserveFactor:Number(t.liquidationReserveFactor.value)/4294967296,maxCollateralAmount:Number(t.maxCollateralAmount),totalCollateralAmount:Number(t.totalCollateralAmount)}),$e=(t,e)=>{let a=t.parseCoinNameFromType(e.coinType),o=t.getCoinDecimal(a),r=h__default.default(e.maxCollateralAmount).shiftedBy(-1*o),s=h__default.default(e.totalCollateralAmount).shiftedBy(-1*o);return {coinDecimal:o,isIsolated:e.isIsolated,maxDepositAmount:e.maxCollateralAmount,maxDepositCoin:r.toNumber(),depositAmount:e.totalCollateralAmount,depositCoin:s.toNumber()}},zt=t=>({stakeType:utils.normalizeStructTag(t.stakeType.fields.name),maxPoint:Number(t.maxDistributedPoint),distributedPoint:Number(t.distributedPoint),pointPerPeriod:Number(t.distributedPointPerPeriod),period:Number(t.pointDistributionTime),maxStake:Number(t.maxStake),staked:Number(t.stakes),index:Number(t.index),createdAt:Number(t.createdAt),lastUpdate:Number(t.lastUpdate)}),Yt=(t,e,a)=>{let r=h__default.default(t.pointPerPeriod).dividedBy(t.period),s=h__default.default(t.pointPerPeriod).dividedBy(t.period),c=s.gt(0)?h__default.default(t.maxPoint).minus(t.distributedPoint).dividedBy(s):h__default.default(0),i=t.createdAt,n=c.plus(t.lastUpdate).integerValue().toNumber(),l=h__default.default(Math.floor(new Date().getTime()/1e3)-t.lastUpdate).dividedBy(t.period).toFixed(0),d=h__default.default(t.maxPoint).minus(t.distributedPoint),b=h__default.default.minimum(h__default.default(l).multipliedBy(t.pointPerPeriod),d),u=h__default.default(t.index).plus(b.dividedBy(t.staked).isFinite()?h__default.default(1e9).multipliedBy(b).dividedBy(t.staked):0),p=h__default.default(t.distributedPoint).plus(b),f=h__default.default(t.staked),m=f.shiftedBy(-1*a),y=m.multipliedBy(e);return {distributedPointPerSec:r.toNumber(),accumulatedPoints:b.toNumber(),currentPointIndex:u.toNumber(),currentTotalDistributedPoint:p.toNumber(),startDate:new Date(i*1e3),endDate:new Date(n*1e3),stakedAmount:f.toNumber(),stakedCoin:m.toNumber(),stakedValue:y.toNumber()}},Jt=t=>({claimedRewards:Number(t.claimed_rewards),exchangeRateDenominator:Number(t.exchange_rate_denominator),exchangeRateNumerator:Number(t.exchange_rate_numerator),rewards:Number(t.rewards),spoolId:String(t.spool_id)}),Xt=(t,e,a,o,r)=>{let c=h__default.default(a.distributedPointPerSec).multipliedBy(e.exchangeRateNumerator).dividedBy(e.exchangeRateDenominator),i=h__default.default(t.maxPoint).multipliedBy(e.exchangeRateNumerator).dividedBy(e.exchangeRateDenominator),n=i.shiftedBy(-1*r),l=n.multipliedBy(o),d=h__default.default(e.rewards),b=d.shiftedBy(-1*r),u=b.multipliedBy(o),p=h__default.default(e.claimedRewards),f=p.shiftedBy(-1*r),m=f.multipliedBy(o),y=h__default.default(c).shiftedBy(-1*r).multipliedBy(31536e3).multipliedBy(o),w=y.dividedBy(a.stakedValue).isFinite()?y.dividedBy(a.stakedValue).toNumber():1/0;return (t.maxPoint<=t.distributedPoint||t.pointPerPeriod===0)&&(w=1/0),{rewardApr:w,totalRewardAmount:i.toNumber(),totalRewardCoin:n.toNumber(),totalRewardValue:l.toNumber(),remaindRewardAmount:d.toNumber(),remaindRewardCoin:b.toNumber(),remaindRewardValue:u.toNumber(),claimedRewardAmount:p.toNumber(),claimedRewardCoin:f.toNumber(),claimedRewardValue:m.toNumber(),rewardPerSec:c.toNumber()}},fo=t=>({pointType:utils.normalizeStructTag(t.point_type.name),distributedPointPerPeriod:Number(t.distributed_point_per_period),period:Number(t.point_distribution_time),distributedPoint:Number(t.distributed_point),points:Number(t.points),index:Number(t.index),baseWeight:Number(t.base_weight),weightedAmount:Number(t.weighted_amount),lastUpdate:Number(t.last_update),createdAt:Number(t.created_at)}),Zt=(t,e)=>({poolType:utils.normalizeStructTag(e.pool_type.name),minStakes:Number(e.min_stakes),maxStakes:Number(e.max_stakes),staked:Number(e.stakes),poolPoints:e.points.reduce((a,o)=>{let r=fo(o),s=t.parseSCoinTypeNameToMarketCoinName(utils.parseStructTag(r.pointType).name.toLowerCase());return a[s]=r,a},{})}),ea=(t,e,a,o,r)=>{let c=h__default.default(t.distributedPointPerPeriod).dividedBy(t.period),i=h__default.default(Math.floor(new Date().getTime()/1e3)-t.lastUpdate).dividedBy(t.period).toFixed(0),n=h__default.default.minimum(h__default.default(i).multipliedBy(t.distributedPointPerPeriod),h__default.default(t.points)),l=h__default.default(t.index).plus(n.dividedBy(t.weightedAmount).isFinite()?h__default.default(1e9).multipliedBy(n).dividedBy(t.weightedAmount):0),d=h__default.default(t.distributedPoint).plus(n),b=h__default.default(t.baseWeight),u=h__default.default(t.weightedAmount),p=u.shiftedBy(-1*r),f=p.multipliedBy(o),m=365*24*60*60,y=h__default.default(c).shiftedBy(-1*a),w=h__default.default(y).multipliedBy(m).multipliedBy(e),g=h__default.default(1e12),k=w.multipliedBy(h__default.default(t.baseWeight).dividedBy(g)).dividedBy(f).isFinite()&&t.points>0?w.multipliedBy(h__default.default(t.baseWeight).dividedBy(g)).dividedBy(f).toNumber():1/0;return {distributedPointPerSec:c.toNumber(),accumulatedPoints:n.toNumber(),currentPointIndex:l.toNumber(),currentTotalDistributedPoint:d.toNumber(),baseWeight:b.toNumber(),weightedStakedAmount:u.toNumber(),weightedStakedCoin:p.toNumber(),weightedStakedValue:f.toNumber(),rewardApr:k,rewardPerSec:y.toNumber()}},uo=t=>({pointType:utils.normalizeStructTag(t.point_type.name),weightedAmount:Number(t.weighted_amount),points:Number(t.points),totalPoints:Number(t.total_points),index:Number(t.index)}),ta=t=>({poolType:utils.normalizeStructTag(t.pool_type.name),debtAmount:Number(t.debt_amount),pointList:t.points_list.reduce((e,a)=>{let o=uo(a),r=utils.parseStructTag(o.pointType).name.toLowerCase();return e[r]=o,e},{})}),Se=(...t)=>h__default.default(t.reduce((e,a)=>new h__default.default(a).lt(e)?a:e));var Ge=(t,e,a)=>{let o=Math.max(1,Math.floor(Math.log10(Math.abs(t))+1)),r=Math.max(Math.floor((o-1)/e),1)+1,s=Math.pow(10,-r);return s=a==="increase"?1-s:1+s,s};var aa=Array.from(new Set([...M,...V,...Et,...Ue,...q])),we=t=>{let e=t.slice(1).toLowerCase();return t.charAt(0).toLowerCase()==="s"&&aa.includes(e)},ht=t=>Ft.includes(t),Ct=t=>Kt.includes(t),kt=t=>{if(Ct(t))return `w${t.slice(1).toUpperCase()}`;if(ht(t))switch(t){case"sbwbtc":return "sbwBTC";default:return `sb${t.slice(2).toUpperCase()}`}if(we(t)){let e=t.slice(1).toLowerCase();return t.slice(0,1).toLowerCase()+kt(e)}switch(t){case"afsui":return "afSUI";case"hasui":return "haSUI";case"vsui":return "vSUI";case"musd":return "mUSD";default:return t.toUpperCase()}},oa=(t,e)=>{let o=aa.find(r=>e.get(`core.coins.${r}.oracle.pyth.feed`)===t.id);if(o){let r=t.price.price*10**t.price.expo;return {coinName:o,price:r,publishTime:Number(t.price.publishTime)*10**3}}else throw new Error("Invalid feed id")},sa=t=>{let e=new Date(t*1e3),a=new Date(t*1e3);a.setUTCHours(0,0,0,0),e.getUTCHours()>=0&&a.setUTCDate(a.getUTCDate()+1);let o=new Date().getTime();return a.getTime()-o>126144e3*1e3&&a.setUTCDate(a.getUTCDate()-1),Math.floor(a.getTime()/1e3)},ra=(t,e)=>{let a=[];for(let o=0;o<t.length;o+=e)a.push(t.slice(o,o+e));return a};async function po(t,e,...a){let o=a[a.length-1];if(typeof o=="object"&&o.indexer)try{return await t.apply(e,a)}catch(r){return console.warn(`Indexer requests failed: ${r.message}. Retrying without indexer..`),await t.apply(e,[...a.slice(0,-1),{...o,indexer:!1}])}return await t.apply(e,a)}function W(t){return (...e)=>po(t,this,...e)}var Y=t=>{if(!(t&&t.content&&"fields"in t.content))throw new Error("Failed to parse object");let e=t.content.fields;if(typeof e=="object"&&"value"in e){let a=e.value;return typeof a=="object"&&"fields"in a?a.fields:a}else if(typeof e=="object")return e;return e};var So=async t=>{let e=t.get("borrowIncentive.query"),a=t.get("borrowIncentive.incentivePools"),o=`${e}::incentive_pools_query::incentive_pools_data`,r=[a];return (await t.cache.queryInspectTxn({queryTarget:o,args:r}))?.events[0].parsedJson},ca=async(t,e=[...ye],a=!1,o,r)=>{let s={};if(o=o??(await t.getMarketPools(void 0,{coinPrices:r,indexer:a})).pools,r=r??await t.getAllCoinPrices({marketPools:o}),a){let i=await t.indexer.getBorrowIncentivePools(),n=l=>{if(e.includes(l.coinName)){l.coinPrice=r[l.coinName]||l.coinPrice;for(let d of Ue)l.points[d]&&(l.points[d].coinPrice=r[d]??l.points[d].coinPrice);s[l.coinName]=l;}};return Object.values(i).forEach(n),s}let c=await So(t.address);for(let i of c?.incentive_pools??[]){let n={},l=Zt(t.utils,i),d=utils.normalizeStructTag(i.pool_type.name),b=t.utils.parseCoinNameFromType(d),u=r?.[b]??0,p=t.utils.getCoinDecimal(b);if(!e.includes(b))continue;for(let[w,g]of Object.entries(l.poolPoints)){let k=g.pointType,T=t.utils.parseCoinNameFromType(k),j=t.utils.getCoinDecimal(T),A=r?.[T]??0,S=t.utils.parseSymbol(T),R=t.utils.getCoinDecimal(T),J=ea(g,A,j,u,p);n[w]={symbol:S,coinName:T,coinType:k,coinDecimal:R,coinPrice:A,points:g.points,distributedPoint:g.distributedPoint,weightedAmount:g.weightedAmount,...J};}let f=h__default.default(l.staked),m=f.shiftedBy(-1*p),y=m.multipliedBy(u);s[b]={coinName:b,symbol:t.utils.parseSymbol(b),coinType:d,coinDecimal:p,coinPrice:u,stakedAmount:f.toNumber(),stakedCoin:m.toNumber(),stakedValue:y.toNumber(),points:n};}return s},ia=async({utils:t},e,a=[...ye])=>{let o=t.address.get("borrowIncentive.query"),r=t.address.get("borrowIncentive.incentiveAccounts"),s=`${o}::incentive_account_query::incentive_account_data`,c=[r,e],n=(await t.cache.queryInspectTxn({queryTarget:s,args:c}))?.events[0]?.parsedJson;return Object.values(n?.pool_records??[]).reduce((d,b)=>{let u=ta(b),p=u.poolType,f=t.parseCoinNameFromType(p);return a&&a.includes(f)&&(d[f]=u),d},{})},na=async({address:t},e)=>{let a=t.get("borrowIncentive.object"),o=t.get("borrowIncentive.incentivePools"),r=t.get("vesca.object"),s=await t.cache.queryGetObject(o);if(s?.data?.content?.dataType!=="moveObject")return null;let i=s.data.content.fields.ve_sca_bind.fields.id.id,n=`${a}::typed_id::TypedID<${r}::ve_sca::VeScaKey>`,l=await t.cache.queryGetDynamicFieldObject({parentId:i,name:{type:n,value:e}});return l?.data?.content?.dataType!=="moveObject"?null:l.data.content.fields.value.fields.id},da=async({address:t},e)=>{let a=t.get("borrowIncentive.object"),o=t.get("borrowIncentive.incentiveAccounts"),r=t.get("core.object"),s=await t.cache.queryGetObject(o);if(s?.data?.content?.dataType!=="moveObject")return null;let c=s.data.content.fields.accounts.fields.id.id,i=await t.cache.queryGetDynamicFieldObject({parentId:c,name:{type:`${a}::typed_id::TypedID<${r}::obligation::Obligation>`,value:e}});return i?.data?.content?.dataType!=="moveObject"?null:i.data.content.fields.value.fields.binded_ve_sca_key?.fields.id??null};var wo=zod.z.object({dataType:zod.z.string(),type:zod.z.string(),hasPublicTransfer:zod.z.boolean(),fields:zod.z.object({id:zod.z.object({id:zod.z.string()}),name:zod.z.object({type:zod.z.string()}),value:zod.z.string()})}),go="0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey",He=async(t,e)=>{try{let a=t.parseCoinType(e).slice(2),o=t.address.get("core.market");if(!o)return null;let r=await t.cache.queryGetDynamicFieldObject({parentId:o,name:{type:go,value:a}}),s=wo.safeParse(r?.data?.content);return s.success?s.data.fields.value:null}catch(a){return console.error(`Error in getSupplyLimit for ${e}: ${a.message}`),"0"}};var ho=zod.z.object({dataType:zod.z.string(),type:zod.z.string(),hasPublicTransfer:zod.z.boolean(),fields:zod.z.object({id:zod.z.object({id:zod.z.string()}),name:zod.z.object({type:zod.z.string()}),value:zod.z.boolean()})}),la="0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey",ba=async t=>{if(M.every(e=>!!N[e]))return M.filter(e=>!!N[e]?.isolatedAssetKey&&!!N[e]?.coinType).map(e=>N[e]?.coinType);try{let e=t.address.get("core.market"),a=[];if(!e)return a;let o=!1,r=null,s=c=>c.name.type===la;do{let c=await t.cache.queryGetDynamicFields({parentId:e,cursor:r,limit:10});if(!c)break;let i=c.data.filter(s).map(({name:n})=>`0x${n.value.type.name}`);a.push(...i),c&&c.hasNextPage&&c.nextCursor?(o=!0,r=c.nextCursor):o=!1;}while(o);return a}catch(e){return console.error(e),[]}},ge=async(t,e)=>{if(N[e])return !!N[e].isolatedAssetKey;let a=t.address.get("core.market"),o=t.address.cache.queryClient.getQueryData(["getDynamicFields",a]);if(o){let i=t.parseCoinType(e);return o.includes(i)}let r=t.parseCoinType(e).slice(2),s=await t.cache.queryGetDynamicFieldObject({parentId:a,name:{type:la,value:r}}),c=ho.safeParse(s?.data?.content);return c.success?c.data.fields.value:!1};var Co=zod.z.object({dataType:zod.z.string(),type:zod.z.string(),hasPublicTransfer:zod.z.boolean(),fields:zod.z.object({id:zod.z.object({id:zod.z.string()}),name:zod.z.object({type:zod.z.string()}),value:zod.z.string()})}),ko="0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey",ze=async(t,e)=>{try{let a=t.parseCoinType(e).slice(2),o=t.address.get("core.market");if(!o)return null;let r=await t.cache.queryGetDynamicFieldObject({parentId:o,name:{type:ko,value:a}}),s=Co.safeParse(r?.data?.content);return s.success?s.data.fields.value:null}catch(a){return console.error(`Error in getBorrowLimit for ${e}: ${a.message}`),"0"}};var F=async(t,e,a=50)=>{let o=ra(e,a),r=[];for(let s of o){let c=await t.queryGetObjects(s);r.push(...c);}return r};var pa=async(t,e=!1,a)=>{a=a??await t.utils.getCoinPrices()??{};let o={},r={};if(e){let b=await t.indexer.getMarket(),u=f=>{f.coinPrice=a[f.coinName]??f.coinPrice,f.coinWrappedType=t.utils.getCoinWrappedType(f.coinName),o[f.coinName]=f;},p=f=>{f.coinPrice=a[f.coinName]??f.coinPrice,f.coinWrappedType=t.utils.getCoinWrappedType(f.coinName),r[f.coinName]=f;};return Object.values(b.pools).forEach(u),Object.values(b.collaterals).forEach(p),{pools:o,collaterals:r}}let s=t.address.get("core.packages.query.id"),c=t.address.get("core.market"),i=`${s}::market_query::market_data`,n=[c],d=(await t.cache.queryInspectTxn({queryTarget:i,args:n}))?.events[0]?.parsedJson;for(let b of d?.pools??[]){let u=utils.normalizeStructTag(b.type.name),p=t.utils.parseCoinNameFromType(u),f=a[p]??0;if(!M.includes(p))continue;let m=wt({type:b.type,maxBorrowRate:b.maxBorrowRate,interestRate:b.interestRate,interestRateScale:b.interestRateScale,borrowIndex:b.borrowIndex,lastUpdated:b.lastUpdated,cash:b.cash,debt:b.debt,marketCoinSupply:b.marketCoinSupply,reserve:b.reserve,reserveFactor:b.reserveFactor,borrowWeight:b.borrowWeight,borrowFeeRate:b.borrowFeeRate,baseBorrowRatePerSec:b.baseBorrowRatePerSec,borrowRateOnHighKink:b.borrowRateOnHighKink,borrowRateOnMidKink:b.borrowRateOnMidKink,highKink:b.highKink,midKink:b.midKink,minBorrowAmount:b.minBorrowAmount,isIsolated:await ge(t.utils,p),supplyLimit:await He(t.utils,p)??"0",borrowLimit:await ze(t.utils,p)??"0"}),y=gt(t.utils,m);o[p]={coinName:p,symbol:t.utils.parseSymbol(p),coinType:u,marketCoinType:t.utils.parseMarketCoinType(p),sCoinType:t.utils.parseSCoinType(t.utils.parseMarketCoinName(p)),coinWrappedType:t.utils.getCoinWrappedType(p),coinPrice:f,highKink:m.highKink,midKink:m.midKink,reserveFactor:m.reserveFactor,borrowWeight:m.borrowWeight,borrowFee:m.borrowFee,marketCoinSupplyAmount:m.marketCoinSupplyAmount,minBorrowAmount:m.minBorrowAmount,...y};}for(let b of d?.collaterals??[]){let u=utils.normalizeStructTag(b.type.name),p=t.utils.parseCoinNameFromType(u),f=a[p]??0;if(!V.includes(p))continue;let m=qe({type:b.type,collateralFactor:b.collateralFactor,liquidationFactor:b.liquidationFactor,liquidationDiscount:b.liquidationDiscount,liquidationPenalty:b.liquidationPanelty,liquidationReserveFactor:b.liquidationReserveFactor,maxCollateralAmount:b.maxCollateralAmount,totalCollateralAmount:b.totalCollateralAmount,isIsolated:await ge(t.utils,p)}),y=$e(t.utils,m);r[p]={coinName:p,symbol:t.utils.parseSymbol(p),coinType:u,marketCoinType:t.utils.parseMarketCoinType(p),coinWrappedType:t.utils.getCoinWrappedType(p),coinPrice:f,collateralFactor:m.collateralFactor,liquidationFactor:m.liquidationFactor,liquidationDiscount:m.liquidationDiscount,liquidationPenalty:m.liquidationPenalty,liquidationReserveFactor:m.liquidationReserveFactor,...y};}return {pools:o,collaterals:r}},ma=async(t,e)=>{let a=e.map(S=>({poolCoinName:S,balanceSheet:N[S]?.lendingPoolAddress,collateralStat:N[S]?.collateralPoolAddress,borrowDynamic:N[S]?.borrowDynamic,interestModel:N[S]?.interestModel,riskModel:N[S]?.riskModel,borrowFeeKey:N[S]?.borrowFeeKey,supplyLimitKey:N[S]?.supplyLimitKey,borrowLimitKey:N[S]?.borrowLimitKey,isolatedAssetKey:N[S]?.isolatedAssetKey})),[o,r,s,c,i,n,l,d,b]=await Promise.all([F(t.cache,a.map(S=>S.balanceSheet).filter(S=>!!S)),F(t.cache,a.map(S=>S.collateralStat).filter(S=>!!S)),F(t.cache,a.map(S=>S.borrowDynamic).filter(S=>!!S)),F(t.cache,a.map(S=>S.interestModel).filter(S=>!!S)),F(t.cache,a.map(S=>S.riskModel).filter(S=>!!S)),F(t.cache,a.map(S=>S.borrowFeeKey).filter(S=>!!S)),F(t.cache,a.map(S=>S.supplyLimitKey).filter(S=>!!S)),F(t.cache,a.map(S=>S.borrowLimitKey).filter(S=>!!S)),F(t.cache,a.map(S=>S.isolatedAssetKey).filter(S=>!!S))]),u=(S,R,J)=>{let X={},Z=R.reduce((Q,E)=>(Q[E.objectId]=E,Q),{});for(let Q of S)Q[J]&&(X[Q.poolCoinName]=Z[Q[J]]);return X},p=u(a,o,"balanceSheet"),f=u(a,r,"collateralStat"),m=u(a,s,"borrowDynamic"),y=u(a,c,"interestModel"),w=u(a,i,"riskModel"),g=u(a,n,"borrowFeeKey"),k=u(a,l,"supplyLimitKey"),T=u(a,d,"borrowLimitKey"),j=u(a,b,"isolatedAssetKey");return e.reduce((S,R)=>(S[R]={balanceSheet:p[R],collateralStat:f[R],borrowDynamic:m[R],interestModel:y[R],riskModel:w[R],borrowFeeKey:g[R],supplyLimitKey:k[R],borrowLimitKey:T[R],isolatedAssetKey:j[R]},S),{})},ya=async(t,e,a=!1,o)=>{o=o??await t.utils.getCoinPrices();let r={},s={};if(a){let i=await t.indexer.getMarket(),n=d=>{d.coinPrice=o[d.coinName]??d.coinPrice,d.coinWrappedType=t.utils.getCoinWrappedType(d.coinName),r[d.coinName]=d;},l=d=>{d.coinPrice=o[d.coinName]??d.coinPrice,d.coinWrappedType=t.utils.getCoinWrappedType(d.coinName),s[d.coinName]=d;};return Object.values(i.pools).forEach(n),Object.values(i.collaterals).forEach(l),{pools:r,collaterals:s}}let c=await ma(t,e);return await Promise.allSettled(e.map(async i=>{try{let n=await To(t,i,a,o?.[i]??0,c[i]);n?.marketPool&&(r[i]=n?.marketPool),n?.collateral&&(s[i]=n.collateral);}catch(n){console.error(n);}})),{pools:r,collaterals:s}},xo=({balanceSheet:t,borrowDynamic:e,collateralStat:a,interestModel:o,riskModel:r,borrowFeeKey:s,supplyLimitKey:c,borrowLimitKey:i,isolatedAssetKey:n})=>{let l=Y(t),d=Y(o),b=Y(e),u=Y(s),p=c?Y(c):"0",f=i?Y(i):"0",m=r?Y(r):void 0,y=a?Y(a):void 0,w=m&&y?{type:d.type.fields,isIsolated:!!n,collateralFactor:m.collateral_factor.fields,liquidationFactor:m.liquidation_factor.fields,liquidationPenalty:m.liquidation_penalty.fields,liquidationDiscount:m.liquidation_discount.fields,liquidationReserveFactor:m.liquidation_revenue_factor.fields,maxCollateralAmount:m.max_collateral_amount,totalCollateralAmount:y.amount}:void 0;return {type:d.type.fields,maxBorrowRate:d.max_borrow_rate.fields,interestRate:b.interest_rate.fields,interestRateScale:b.interest_rate_scale,borrowIndex:b.borrow_index,lastUpdated:b.last_updated,cash:l.cash,debt:l.debt,marketCoinSupply:l.market_coin_supply,reserve:l.revenue,reserveFactor:d.revenue_factor.fields,borrowWeight:d.borrow_weight.fields,borrowFeeRate:u,baseBorrowRatePerSec:d.base_borrow_rate_per_sec.fields,borrowRateOnHighKink:d.borrow_rate_on_high_kink.fields,borrowRateOnMidKink:d.borrow_rate_on_mid_kink.fields,highKink:d.high_kink.fields,midKink:d.mid_kink.fields,minBorrowAmount:d.min_borrow_amount,isIsolated:!!n,supplyLimit:p,borrowLimit:f,parsedOriginMarketCollateral:w}},To=async(t,e,a=!1,o,r)=>{if(o=o??(await t.utils.getCoinPrices())?.[e],a){let d=await t.indexer.getMarketPool(e);if(!d)return;d.coinPrice=o??d.coinPrice,d.coinWrappedType=t.utils.getCoinWrappedType(d.coinName);let b;return V.includes(e)&&(b=await t.indexer.getMarketCollateral(e),b.coinPrice=o??b.coinPrice,b.coinWrappedType=t.utils.getCoinWrappedType(b.coinName)),{marketPool:d,collateral:b}}r??=(await ma(t,[e]))[e];let s=xo(r),c=wt(s),i=gt(t.utils,c),n=s.parsedOriginMarketCollateral?qe(s.parsedOriginMarketCollateral):void 0,l=()=>({coinName:e,symbol:t.utils.parseSymbol(e),marketCoinType:t.utils.parseMarketCoinType(e),coinType:t.utils.parseCoinType(e)});return {marketPool:{...l(),sCoinType:t.utils.parseSCoinType(t.utils.parseMarketCoinName(e)),coinWrappedType:t.utils.getCoinWrappedType(e),coinPrice:o??0,highKink:c.highKink,midKink:c.midKink,reserveFactor:c.reserveFactor,borrowWeight:c.borrowWeight,borrowFee:c.borrowFee,marketCoinSupplyAmount:c.marketCoinSupplyAmount,minBorrowAmount:c.minBorrowAmount,...i},collateral:n?{...l(),coinWrappedType:t.utils.getCoinWrappedType(e),coinPrice:o,collateralFactor:n.collateralFactor,liquidationFactor:n.liquidationFactor,liquidationDiscount:n.liquidationDiscount,liquidationPenalty:n.liquidationPenalty,liquidationReserveFactor:n.liquidationReserveFactor,...$e(t.utils,n)}:void 0}},Sa=async(t,e=[...V],a=!1)=>{let o=t.address.get("core.market"),r=await t.utils.getCoinPrices()??{},s={};if(a){let i=await t.indexer.getMarketCollaterals(),n=l=>{e.includes(l.coinName)&&(l.coinPrice=r[l.coinName]??l.coinPrice,l.coinWrappedType=t.utils.getCoinWrappedType(l.coinName),s[l.coinName]=l);};return Object.values(i).forEach(n),s}let c=await t.cache.queryGetObject(o);return await Promise.allSettled(e.map(async i=>{let n=await xt(t,i,a,c?.data,r?.[i]);n&&(s[i]=n);})),s},xt=async(t,e,a=!1,o,r)=>{if(r=r??(await t.utils.getCoinPrices())?.[e],a){let g=await t.indexer.getMarketCollateral(e);return g.coinPrice=r??g.coinPrice,g.coinWrappedType=t.utils.getCoinWrappedType(g.coinName),g}let s=t.address.get("core.market");if(o=o||(await t.cache.queryGetObject(s))?.data,!(o&&o.content?.dataType==="moveObject"))throw new Error("Failed to fetch marketObject");let c=o.content.fields,i=t.utils.parseCoinType(e),n=c.risk_models.fields.table.fields.id.id,l=await t.cache.queryGetDynamicFieldObject({parentId:n,name:{type:"0x1::type_name::TypeName",value:{name:i.substring(2)}}}),d=l?.data;if(!(d&&d.content&&"fields"in d.content))throw new Error(`Failed to fetch riskModelDynamicFieldObject for ${l?.error?.code.toString()}: `);let b=d.content.fields.value.fields,u=c.collateral_stats.fields.table.fields.id.id,p=await t.cache.queryGetDynamicFieldObject({parentId:u,name:{type:"0x1::type_name::TypeName",value:{name:i.substring(2)}}}),f=p?.data;if(!(f&&f.content&&"fields"in f.content))throw new Error(`Failed to fetch collateralStatDynamicFieldObject for ${e}: ${p?.error?.code.toString()}`);let m=f.content.fields.value.fields,y=qe({type:b.type.fields,collateralFactor:b.collateral_factor.fields,liquidationFactor:b.liquidation_factor.fields,liquidationDiscount:b.liquidation_discount.fields,liquidationPenalty:b.liquidation_penalty.fields,liquidationReserveFactor:b.liquidation_revenue_factor.fields,maxCollateralAmount:b.max_collateral_amount,totalCollateralAmount:m.amount,isIsolated:await ge(t.utils,e)}),w=$e(t.utils,y);return {coinName:e,symbol:t.utils.parseSymbol(e),coinType:t.utils.parseCoinType(e),marketCoinType:t.utils.parseMarketCoinType(e),coinWrappedType:t.utils.getCoinWrappedType(e),coinPrice:r??0,collateralFactor:y.collateralFactor,liquidationFactor:y.liquidationFactor,liquidationDiscount:y.liquidationDiscount,liquidationPenalty:y.liquidationPenalty,liquidationReserveFactor:y.liquidationReserveFactor,...w}},he=async({address:t},e)=>{let a=e,o=t.get("core.object")??Ke,r=[],s=!1,c=null;do{let d=await t.cache.queryGetOwnedObjects({owner:a,filter:{StructType:`${o}::obligation::ObligationKey`},options:{showContent:!0},cursor:c,limit:10});if(!d)break;r.push(...d.data),d.hasNextPage&&d.nextCursor?(s=!0,c=d.nextCursor):s=!1;}while(s);let i=r.filter(d=>!!d.data),n=[],l=await F(t.cache,i.map(d=>d.data?.content).filter(d=>d?.dataType==="moveObject").map(d=>d.fields.ownership.fields.of));return await Promise.allSettled(i.map(async({data:d},b)=>{let u=d?.objectId,p=d?.content;if(u&&p&&"fields"in p){let f=p.fields,m=String(f.ownership.fields.of),y=await Tt(t.cache,l[b]);n.push({id:m,keyId:u,locked:y});}})),n},Tt=async(t,e)=>{let a=typeof e=="string"?(await t.queryGetObject(e))?.data:e,o=!1;return a&&a?.content?.dataType==="moveObject"&&"lock_key"in a.content.fields&&(o=!!a.content.fields.lock_key),o},Ye=async({address:t},e)=>{let o=`${t.get("core.packages.query.id")}::obligation_query::obligation_data`,r=[e];return (await t.cache.queryInspectTxn({queryTarget:o,args:r}))?.events[0]?.parsedJson},wa=async(t,e=[...M],a)=>{let o=a??t.suiKit.currentAddress(),r={};return await Promise.allSettled(e.map(async s=>{let c=await Pt(t,s,o);r[s]=c;})),r},Pt=async(t,e,a)=>{let o=a??t.suiKit.currentAddress(),r=t.utils.parseCoinType(e),s=await t.cache.queryGetCoinBalance({owner:o,coinType:r});return h__default.default(s?.totalBalance??"0").toNumber()},ga=async(t,e,a)=>{e=e||[...M].map(s=>t.utils.parseMarketCoinName(s));let o=a??t.suiKit.currentAddress(),r={};return await Promise.allSettled(e.map(async s=>{let c=await At(t,s,o);r[s]=c;})),r},At=async(t,e,a)=>{let o=a??t.suiKit.currentAddress(),r=t.utils.parseMarketCoinType(e),s=await t.cache.queryGetCoinBalance({owner:o,coinType:r});return h__default.default(s?.totalBalance??"0").toNumber()},ha=async(t,e)=>{let o=[],r=e.reduce((i,n)=>{let l=t.utils.parseCoinType(n).slice(2);return i[l]=n,i},{}),s=e.map(i=>ft[i]?ft[i]:(o.push(i),null)).filter(i=>!!i),c=await t.cache.queryGetObjects(s);if(o.length>0){let i=t.address.get("core.market"),n=await t.cache.queryGetObject(i);if(n?.data?.content?.dataType!=="moveObject")throw new Error("Failed to get market object");let d=n.data.content.fields.vault.fields.flash_loan_fees.fields.table.fields.id.id,u=(await t.cache.queryGetDynamicFields({parentId:d,limit:10}))?.data.filter(p=>{let f=p.name.value.name;return !!r[f]}).map(p=>p.objectId)??[];c.push(...await t.cache.queryGetObjects(u));}return c.reduce((i,n)=>{if(n.content?.dataType==="moveObject"){let l=n.content.fields,d=n.content.fields.name.fields.name,b=+l.value;i[r[d]]=b/1e4;}return i},{})};var Po=zod.z.object({balance:zod.z.string(),enable_claim:zod.z.boolean()}).transform(t=>({totalPoolReward:h__default.default(t.balance).shiftedBy(-9).toNumber(),isClaimEnabled:t.enable_claim})),Ao=zod.z.object({value:zod.z.string()}).transform(t=>h__default.default(t.value).shiftedBy(-9).toNumber()),ka=async(t,e)=>{let a=t.address.get("loyaltyProgram.rewardPool"),o=await t.cache.queryGetObject(a);if(o?.data?.content?.dataType!=="moveObject")return null;let r=o.data.content.fields,{isClaimEnabled:s,totalPoolReward:c}=Po.parse(r),i={pendingReward:0,totalPoolReward:c,isClaimEnabled:s};if(e=e??(await t.getVeScas())[0]?.keyObject,!e)return i;let n=t.address.get("loyaltyProgram.userRewardTableId"),l=await t.cache.queryGetDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:typeof e=="string"?e:e.objectId}});if(l?.data?.content?.dataType!=="moveObject")return i;let d=l.data.content.fields;return i.pendingReward=Ao.parse(d),i};var xa=async(t,e=[...M],a,o,r,s=!1)=>{let c=e.map(p=>t.utils.parseMarketCoinName(p)),i=c.filter(p=>G.includes(p));r=r??await t.utils.getCoinPrices(),o=o??(await t.getMarketPools(e,{indexer:s,coinPrices:r})).pools;let n=await t.getSpools(i,{indexer:s,marketPools:o,coinPrices:r}),[l,d,b]=await Promise.all([t.getCoinAmounts(e,a),t.getMarketCoinAmounts(c,a),t.getAllStakeAccounts(a)]),u={};return await Promise.allSettled(e.map(async p=>{let f=i.find(y=>y===t.utils.parseMarketCoinName(p)),m=t.utils.parseMarketCoinName(p);u[p]=await Ot(t,p,a,s,o?.[p],f?n[f]:void 0,f?b[f]:[],l?.[p],d?.[m],r?.[p]??0);})),u},Ot=async(t,e,a,o=!1,r,s,c,i,n,l,d)=>{let b=t.utils.parseMarketCoinName(e);if(l=l??(await t.utils.getCoinPrices())?.[e]??0,r=r??await t.getMarketPool(e,{indexer:o,coinPrice:l}),!r)throw new Error(`Failed to fetch marketPool for ${e}`);s=s??G.includes(b)?await t.getSpool(b,{indexer:o,marketPool:r,coinPrices:{[e]:l}}):void 0,c=c||G.includes(b)?await t.getStakeAccounts(b,a):[],i=i||await t.getCoinAmount(e,a),n=n||await t.getMarketCoinAmount(b,a),d=d||await t.getSCoinAmount(b,a);let u=t.utils.getCoinDecimal(e),p=h__default.default(0),f=h__default.default(0),m=h__default.default(0),y=h__default.default(0),w=h__default.default(0),g=h__default.default(0),k=h__default.default(0),T=h__default.default(0),j=h__default.default(0);if(s)for(let x of c){let L=h__default.default(x.staked),ce=L.shiftedBy(-1*s.coinDecimal),D=L.multipliedBy(r?.conversionRate??1),v=D.shiftedBy(-1*s.coinDecimal),U=v.multipliedBy(s.coinPrice);p=p.plus(L),f=f.plus(ce),m=m.plus(D),y=y.plus(v),w=w.plus(U),g=g.plus(L),k=g.shiftedBy(-1*s.coinDecimal);let ne=s.currentPointIndex?h__default.default(s.currentPointIndex-x.index).dividedBy(1e9):1;T=T.plus(L.multipliedBy(ne).plus(x.points).multipliedBy(s.exchangeRateNumerator).dividedBy(s.exchangeRateDenominator)),j=T.shiftedBy(-1*s.rewardCoinDecimal);}let A=h__default.default(n).plus(h__default.default(d)).multipliedBy(r?.conversionRate??1),S=A.shiftedBy(-1*u),R=S.multipliedBy(l??0),J=h__default.default(l??0).multipliedBy(r?.conversionRate??1),X=h__default.default(n).plus(h__default.default(d)),Z=X.shiftedBy(-1*u),Q=h__default.default(i),E=Q.shiftedBy(-1*u),P=Se(A,r?.supplyAmount??1/0).plus(m),O=Se(S,r?.supplyCoin??1/0).plus(y);return {coinName:e,symbol:t.utils.parseSymbol(e),coinType:t.utils.parseCoinType(e),marketCoinType:t.utils.parseMarketCoinType(e),sCoinType:r?.sCoinType??"",coinDecimal:u,coinPrice:l??0,conversionRate:r?.conversionRate??1,marketCoinPrice:J.toNumber(),supplyApr:r?.supplyApr??0,supplyApy:r?.supplyApy??0,rewardApr:s?.rewardApr??0,suppliedAmount:A.plus(m).toNumber(),suppliedCoin:S.plus(y).toNumber(),suppliedValue:R.plus(w).toNumber(),stakedMarketAmount:p.toNumber(),stakedMarketCoin:f.toNumber(),stakedAmount:m.toNumber(),stakedCoin:y.toNumber(),stakedValue:w.toNumber(),unstakedMarketAmount:X.toNumber(),unstakedMarketCoin:Z.toNumber(),unstakedAmount:A.toNumber(),unstakedCoin:S.toNumber(),unstakedValue:R.toNumber(),availableSupplyAmount:Q.toNumber(),availableSupplyCoin:E.toNumber(),availableWithdrawAmount:P.toNumber(),availableWithdrawCoin:O.toNumber(),availableStakeAmount:X.toNumber(),availableStakeCoin:Z.toNumber(),availableUnstakeAmount:g.toNumber(),availableUnstakeCoin:k.toNumber(),availableClaimAmount:T.toNumber(),availableClaimCoin:j.toNumber(),isIsolated:r?r.isIsolated:!1}},Ta=async(t,e,a,o,r=!1)=>{a=a??await t.getMarketPools(void 0,{indexer:r}),o=o??await t.getAllCoinPrices({marketPools:a.pools});let[s,c]=await Promise.all([t.getCoinAmounts(void 0,e),t.getObligations(e)]),i=await F(t.cache,c.map(l=>l.id)),n={};return await Promise.allSettled(c.map(async(l,d)=>{n[l.keyId]=await _o(t,i[d]??l.id,e,r,a,o,s);})),n},_o=async(t,e,a,o=!1,r,s,c)=>{let i=Array.from(new Set([...M,...V])),n=[...V];r=r??await t.getMarketPools(void 0,{indexer:o}),s=s??await t.getAllCoinPrices({marketPools:r.pools}),c=c??await t.getCoinAmounts(i,a);let[l,d,b]=await Promise.all([t.queryObligation(e),t.getBorrowIncentivePools(void 0,{coinPrices:s,marketPools:r.pools}),t.getBorrowIncentiveAccounts(e)]),u={},p={},f={},m=0,y=h__default.default(0),w=h__default.default(0),g=h__default.default(0),k=0,T=0,j=h__default.default(0),A=h__default.default(0);for(let P of n){let O=l?.collaterals.find(D=>{let v=t.utils.parseCoinNameFromType(D.type.name);return P===v}),I=r.collaterals[P],x=t.utils.getCoinDecimal(P),L=s?.[P],ce=c?.[P]??0;if(I&&L){let D=h__default.default(O?.amount??0),v=D.shiftedBy(-1*x),U=v.multipliedBy(L),ie=U.multipliedBy(I.collateralFactor),ne=U.multipliedBy(I.liquidationFactor),xe=h__default.default(I.maxDepositAmount).minus(I.depositAmount),me=Se(h__default.default(ce),xe),le=me.shiftedBy(-1*x);y=y.plus(U),w=w.plus(ie),g=g.plus(ne),D.isGreaterThan(0)&&m++,u[P]={coinName:P,coinType:t.utils.parseCoinType(P),symbol:t.utils.parseSymbol(P),coinDecimal:x,coinPrice:L,depositedAmount:D.toNumber(),depositedCoin:v.toNumber(),depositedValue:U.toNumber(),borrowCapacityValue:ie.toNumber(),requiredCollateralValue:ne.toNumber(),availableDepositAmount:me.toNumber(),availableDepositCoin:le.toNumber(),availableWithdrawAmount:0,availableWithdrawCoin:0};}}let S=[...new Set([...Object.values(r.pools).map(P=>P.coinName)])];for(let P of S){let O=l?.debts.find(D=>{let v=t.utils.parseCoinNameFromType(D.type.name);return P===v}),I=r.pools[P],x=t.utils.getCoinDecimal(P),L=s?.[P],ce=c?.[P]??0;if(I&&L){let D=O?.borrowIndex?I.borrowIndex/Number(O.borrowIndex)-1:0,v=h__default.default(O?.amount??0).multipliedBy(D+1),U=v.shiftedBy(-1*x),ie=v,ne=ie.shiftedBy(-1*x),xe=h__default.default(ce),me=xe.shiftedBy(-1*x),le=ne.multipliedBy(L),Fe=le.multipliedBy(I.borrowWeight);j=j.plus(le),A=A.plus(Fe),v.isGreaterThan(0)&&k++,p[P]={coinName:P,coinType:t.utils.parseCoinType(P),symbol:t.utils.parseSymbol(P),coinDecimal:x,coinPrice:L,borrowedAmount:v.toNumber(),borrowedCoin:U.toNumber(),borrowedValue:le.toNumber(),borrowedValueWithWeight:Fe.toNumber(),borrowIndex:Number(O?.borrowIndex??0),requiredRepayAmount:ie.toNumber(),requiredRepayCoin:ne.toNumber(),availableBorrowAmount:0,availableBorrowCoin:0,availableRepayAmount:xe.toNumber(),availableRepayCoin:me.toNumber()};}}for(let[P,O]of Object.entries(b)){let I=P,x=d[I];if(x){let L=[];Object.entries(O.pointList).forEach(([ce,D])=>{let v=x.points[t.utils.parseSCoinTypeNameToMarketCoinName(ce)];if(D&&v){let U=h__default.default(0),ie=h__default.default(0),ne=h__default.default(D.weightedAmount),me=v.currentPointIndex?Math.max(h__default.default(v.currentPointIndex-D.index).dividedBy(1e9).toNumber(),0):1;U=U.plus(ne.multipliedBy(me).plus(D.points)),ie=U.shiftedBy(-1*v.coinDecimal);let le=h__default.default(1e12),Fe=h__default.default(D.weightedAmount).div(h__default.default(O.debtAmount).multipliedBy(v.baseWeight).dividedBy(le)).isFinite()?h__default.default(D.weightedAmount).div(h__default.default(O.debtAmount).multipliedBy(v.baseWeight).dividedBy(le)).toNumber():1;U.isGreaterThanOrEqualTo(0)&&L.push({coinName:v.coinName,coinType:v.coinType,symbol:v.symbol,coinDecimal:v.coinDecimal,coinPrice:v.coinPrice,availableClaimAmount:U.toNumber(),availableClaimCoin:ie.toNumber(),boostValue:Fe});}}),Object.keys(x.points).some(ce=>{let D=x.points[ce]?.rewardApr;return D!==1/0&&typeof D=="number"&&D>0})&&O.debtAmount>0&&T++,f[I]={coinName:x.coinName,coinType:x.coinType,symbol:x.symbol,coinDecimal:x.coinDecimal,coinPrice:x.coinPrice,rewards:L};}}let R=g.isZero()?A.isGreaterThan(0)?h__default.default(100):h__default.default(0):A.dividedBy(g);R=R.isLessThan(1)?R:h__default.default(1);let J=y.minus(j).isGreaterThan(0)?y.minus(j):h__default.default(0),X=w.minus(A).isGreaterThan(0)?w.minus(A):h__default.default(0),Z=A.isGreaterThan(0)?g:h__default.default(0),Q=A.minus(Z).isGreaterThan(0)?A.minus(Z):h__default.default(0),E={obligationId:typeof e=="string"?e:e.objectId,totalDepositedValue:y.toNumber(),totalBorrowedValue:j.toNumber(),totalBalanceValue:J.toNumber(),totalBorrowCapacityValue:w.toNumber(),totalAvailableCollateralValue:X.toNumber(),totalBorrowedValueWithWeight:A.toNumber(),totalRequiredCollateralValue:Z.toNumber(),totalUnhealthyCollateralValue:Q.toNumber(),totalRiskLevel:R.toNumber(),totalDepositedPools:m,totalBorrowedPools:k,totalRewardedPools:T,collaterals:u,debts:p,borrowIncentives:f};for(let[P,O]of Object.entries(E.collaterals)){let I=r.collaterals[P];if(I){let x=h__default.default(E.totalAvailableCollateralValue).dividedBy(I.collateralFactor).dividedBy(I.coinPrice).shiftedBy(I.coinDecimal);x=E.totalBorrowedValueWithWeight===0?h__default.default(O.depositedAmount):Se(x.multipliedBy(Ge(h__default.default(E.totalAvailableCollateralValue).dividedBy(I.collateralFactor).toNumber(),3,"increase")).toNumber(),O.depositedAmount,I.depositAmount),O.availableWithdrawAmount=x.toNumber(),O.availableWithdrawCoin=x.shiftedBy(-1*O.coinDecimal).toNumber();}}for(let[P,O]of Object.entries(E.debts)){let I=r.pools[P];if(I){let x=h__default.default(O.requiredRepayAmount).multipliedBy(Ge(O.borrowedValue,3,"decrease")),L=h__default.default(E.totalAvailableCollateralValue).dividedBy(I.borrowWeight).shiftedBy(I.coinDecimal).dividedBy(I.coinPrice);L=E.totalAvailableCollateralValue!==0?Se(L.multipliedBy(Ge(L.shiftedBy(-1*I.coinDecimal).multipliedBy(I.coinPrice).toNumber(),3,"increase")).toNumber(),I.supplyAmount):h__default.default(0),O.availableBorrowAmount=L.toNumber(),O.availableBorrowCoin=L.shiftedBy(-1*O.coinDecimal).toNumber(),O.requiredRepayAmount=x.toNumber(),O.requiredRepayCoin=x.shiftedBy(-1*O.coinDecimal).toNumber();}}return E},Pa=async(t,e=!1)=>{let a=await t.getMarketPools(void 0,{indexer:e}),o=h__default.default(0),r=h__default.default(0),s=h__default.default(0);if(e){let i=await t.indexer.getTotalValueLocked();return {supplyValue:i.supplyValue,supplyValueChangeRatio:i.supplyValueChangeRatio,borrowValue:i.borrowValue,borrowValueChangeRatio:i.borrowValueChangeRatio,totalValue:i.totalValue,totalValueChangeRatio:i.totalValueChangeRatio,supplyLendingValue:i.supplyLendingValue,supplyLendingValueChangeRatio:i.supplyLendingValueChangeRatio,supplyCollateralValue:i.supplyCollateralValue,supplyCollateralValueChangeRatio:i.supplyCollateralValueChangeRatio}}for(let i of Object.values(a.pools))o=o.plus(h__default.default(i.supplyCoin).multipliedBy(i.coinPrice)),s=s.plus(h__default.default(i.borrowCoin).multipliedBy(i.coinPrice));for(let i of Object.values(a.collaterals))r=r.plus(h__default.default(i.depositCoin).multipliedBy(i.coinPrice));return {supplyValue:o.plus(r).toNumber(),supplyLendingValue:o.toNumber(),supplyCollateralValue:r.toNumber(),borrowValue:s.toNumber(),totalValue:o.plus(r).minus(s).toNumber()}},Aa=async(t,e,a=!1)=>{let o=await t.utils.getCoinPrices(),r=await t.getMarketPools(void 0,{indexer:a,coinPrices:o}),[s,c,i,n]=await Promise.all([t.getLendings(void 0,e,{indexer:a,marketPools:r.pools,coinPrices:o}),t.getObligationAccounts(e,{indexer:a,market:r,coinPrices:o}),t.getBorrowIncentivePools(void 0,{marketPools:r.pools,coinPrices:o}),t.getVeScas({walletAddress:e,excludeEmpty:!0})]),l=Object.values(s).filter(f=>f.availableWithdrawCoin>0).map(f=>({suppliedCoin:f.availableWithdrawCoin,suppliedValue:f.suppliedValue,stakedCoin:f.availableUnstakeCoin,coinName:f.coinName,symbol:f.symbol,coinType:f.coinType,coinPrice:f.coinPrice,coinDecimals:f.coinDecimal,supplyApr:f.supplyApr,supplyApy:f.supplyApy,incentiveApr:isFinite(f.rewardApr)?f.rewardApr:0})),d=Object.values(c).filter(f=>!!f&&f.totalBorrowedValueWithWeight>0).map(f=>({obligationId:f.obligationId,totalDebtsInUsd:f.totalBorrowedValueWithWeight,totalCollateralInUsd:f.totalDepositedValue,riskLevel:f.totalRiskLevel,availableCollateralInUsd:f.totalAvailableCollateralValue,totalUnhealthyCollateralInUsd:f.totalUnhealthyCollateralValue,borrowedPools:Object.values(f.debts).filter(m=>m.borrowedCoin>0).map(m=>({coinName:m.coinName,symbol:m.symbol,coinDecimals:m.coinDecimal,coinType:m.coinType,coinPrice:m.coinPrice,borrowedCoin:m.borrowedCoin,borrowedValueInUsd:m.borrowedValueWithWeight,borrowApr:r.pools[m.coinName]?.borrowApr,borrowApy:r.pools[m.coinName]?.borrowApy,incentiveInfos:Object.values(i[m.coinName]?.points??{}).filter(y=>isFinite(y.rewardApr)).map(y=>({coinName:y.coinName,symbol:y.symbol,coinType:y.coinType,incentiveApr:y.rewardApr}))}))})),b=Object.values(s).reduce((f,m)=>(m.availableClaimCoin===0||(f[m.symbol]?f[m.symbol].pendingRewardInCoin+=m.availableClaimCoin:f[m.symbol]={symbol:m.symbol,coinType:suiKit.normalizeStructTag(suiKit.SUI_TYPE_ARG),coinPrice:m.coinPrice,pendingRewardInCoin:m.availableClaimCoin}),f),{}),u=Object.values(c).filter(f=>!!f).reduce((f,m)=>(Object.values(m.borrowIncentives).forEach(y=>{y.rewards.forEach(w=>{if(w.availableClaimCoin===0)return f;f[w.coinName]?f[w.coinName].pendingRewardInCoin+=w.availableClaimCoin:f[w.coinName]={symbol:w.symbol,coinType:w.coinType,coinPrice:w.coinPrice,pendingRewardInCoin:w.availableClaimCoin};});}),f),{}),p=n.map(({keyId:f,lockedScaCoin:m,currentVeScaBalance:y,unlockAt:w})=>({veScaKey:f,coinPrice:o.sca??0,lockedScaInCoin:m,lockedScaInUsd:m*(o.sca??0),currentVeScaBalance:y,remainingLockPeriodInDays:w-Date.now()>0?(w-Date.now())/864e5:0,unlockAt:w}));return {totalSupplyValue:l.reduce((f,m)=>(f+=m.suppliedValue,f),0),...d.reduce((f,m)=>(f.totalDebtValue+=m.totalDebtsInUsd,f.totalCollateralValue+=m.totalCollateralInUsd,f),{totalDebtValue:0,totalCollateralValue:0}),totalLockedScaValue:p.reduce((f,m)=>(f+=m.lockedScaInUsd,f),0),lendings:l,borrowings:d,pendingRewards:{lendings:Object.entries(b).reduce((f,[m,y])=>(f.push({...y,coinName:m,pendingRewardInUsd:y.coinPrice*y.pendingRewardInCoin}),f),[]),borrowIncentives:Object.entries(u).reduce((f,[m,y])=>(f.push({coinName:m,...y,pendingRewardInUsd:y.coinPrice*y.pendingRewardInCoin}),f),[])},veScas:p}};var It=async({address:t},e,a)=>{let o=t.get(`core.coins.${e}.oracle.pyth.feedObject`);if(a=a||(await t.cache.queryGetObject(o))?.data,a){let r=a;if(r.content&&"fields"in r.content){let s=r.content.fields,c=Number(s.price_info.fields.price_feed.fields.price.fields.expo.fields.magnitude),i=Number(s.price_info.fields.price_feed.fields.price.fields.expo.fields.negative),n=Number(s.price_info.fields.price_feed.fields.price.fields.price.fields.magnitude),l=Number(s.price_info.fields.price_feed.fields.price.fields.price.fields.negative);return n*10**((i?-1:1)*c)*(l?-1:1)}}return 0},Je=async({address:t},e)=>{let a=e.reduce((s,c)=>{let i=t.get(`core.coins.${c}.oracle.pyth.feedObject`);return i&&(s[i]?s[i].push(c):s[i]=[c]),s},{}),r=(await t.cache.queryGetObjects(Object.keys(a))).reduce((s,c)=>(a[c.objectId].forEach(i=>{s[i]=c;}),s),{});return (await Promise.all(Object.entries(r).map(async([s,c])=>({coinName:s,price:await It({address:t},s,c)})))).reduce((s,c)=>(s[c.coinName]=c.price,s),{})},Oa=async(t,e,a,o=!1)=>{if(a=a??(o?await t.getCoinPricesByIndexer():await t.utils.getCoinPrices()),e=e??(await t.getMarketPools(void 0,{coinPrices:a,indexer:o})).pools,!e)throw new Error("Failed to fetch market pool for getAllCoinPrices");let r={};return q.forEach(s=>{let c=t.utils.parseCoinName(s);r[s]=h__default.default(a[c]??0).multipliedBy(e[c]?.conversionRate??1).toNumber();}),{...a,...r}};var Ia=async(t,e)=>{let a=t.get("referral.bindingTableId"),o=await t.cache.queryGetDynamicFieldObject({parentId:a,name:{type:"address",value:e}});return o?.data?.content?.dataType!=="moveObject"?null:o.data.content.fields.value};var Ra=async({utils:t},e)=>{let a=t.address.get("scoin.id"),o=[t.getSCoinTreasury(e)],r=[t.parseSCoinType(e),t.parseUnderlyingSCoinType(e)],s=`${a}::s_coin_converter::total_supply`,i=(await t.cache.queryInspectTxn({queryTarget:s,args:o,typeArgs:r}))?.results;if(i&&i[0]?.returnValues){let n=Uint8Array.from(i[0].returnValues[0][0]),l=i[0].returnValues[0][1];return Mo__default.default(l==="u64","Result type is not u64"),h__default.default(bcs.bcs.u64().parse(n)).shiftedBy(t.getCoinDecimal(t.parseCoinName(e))).toNumber()}return 0},va=async({utils:t},e=[...q],a)=>{let o=a||t.suiKit.currentAddress(),r={};return await Promise.allSettled(e.map(async s=>{let c=await Rt({utils:t},s,o);r[s]=c;})),r},Rt=async({utils:t},e,a)=>{let o=a||t.suiKit.currentAddress(),r=t.parseSCoinType(e),s=await t.cache.queryGetCoinBalance({owner:o,coinType:r});return h__default.default(s?.totalBalance??"0").toNumber()},_a=t=>q.includes(t),jo=(t,e)=>{if(t===e)throw new Error("fromAsset and toAsset must be different");if(!_a(t))throw new Error("fromAsset is not supported");if(!_a(e))throw new Error("toAsset is not supported")},Ma=async(t,e,a,o)=>{jo(e,a);let r=t.utils.parseCoinName(e),s=t.utils.parseCoinName(a),c=await Promise.all([t.getMarketPool(r),t.getMarketPool(s)]);if(c.some(b=>!b))throw new Error("Failed to fetch the lendings data");if(c.some(b=>b?.conversionRate===0))throw new Error("Conversion rate cannot be zero");let i=c[0].conversionRate,n=1/c[1].conversionRate,d=await(async()=>{let b=await t.utils.getCoinPrices();if(!b[r]||!b[s])throw new Error("Failed to fetch the coin prices");if(b[s]===0)throw new Error("Price of toCoin cannot be zero");return b[r]/b[s]})();return h__default.default(i).multipliedBy(d).multipliedBy(n).toNumber()};var ja=async(t,e)=>{let a=e.map((d,b)=>({poolCoinName:e[b],spool:N[d]?.spool,spoolReward:N[d]?.spoolReward,sCoinTreasury:N[d]?.sCoinTreasury})),[o,r,s]=await Promise.all([F(t.cache,a.map(d=>d.spool).filter(d=>!!d)),F(t.cache,a.map(d=>d.spoolReward).filter(d=>!!d)),F(t.cache,a.map(d=>d.sCoinTreasury).filter(d=>!!d))]),c=(d,b,u)=>{let p={},f=b.reduce((m,y)=>(m[y.objectId]=y,m),{});for(let m of d)m[u]&&(p[m.poolCoinName]=f[m[u]]);return p},i=c(a,o,"spool"),n=c(a,r,"spoolReward"),l=c(a,s,"sCoinTreasury");return e.reduce((d,b)=>(d[b]={spool:i[b],spoolReward:n[b],sCoinTreasury:l[b]},d),{})},Do=({spool:t,spoolReward:e})=>{let a=Y(t),o=Y(e);return {stakeType:a.stake_type,maxDistributedPoint:a.max_distributed_point,distributedPoint:a.distributed_point,distributedPointPerPeriod:a.distributed_point_per_period,pointDistributionTime:a.point_distribution_time,maxStake:a.max_stakes,stakes:a.stakes,index:a.index,createdAt:a.created_at,lastUpdate:a.last_update,...o}},Da=async(t,e=[...G],a=!1,o,r)=>{let s=e.map(n=>t.utils.parseCoinName(n));if(o=o??(await t.getMarketPools(s,{indexer:a})).pools,r=r??await t.getAllCoinPrices({marketPools:o})??{},!o)throw new Error(`Fail to fetch marketPools for ${s}`);let c={};if(a){let n=await t.indexer.getSpools(),l=d=>{if(!e.includes(d.marketCoinName))return;let b=t.utils.parseCoinName(d.marketCoinName),u=t.utils.getSpoolRewardCoinName(d.marketCoinName);d.coinPrice=r[b]??d.coinPrice,d.marketCoinPrice=r[d.marketCoinName]??d.marketCoinPrice,d.rewardCoinPrice=r[u]??d.rewardCoinPrice,c[d.marketCoinName]=d;};return Object.values(n).forEach(l),c}let i=await ja(t,s);return await Promise.allSettled(e.map(async(n,l)=>{try{let d=s[l],b=await No(t,n,a,r,i[d]);b&&(c[n]=b);}catch(d){console.error(d);}})),c},No=async(t,e,a=!1,o,r)=>{let s=t.utils.parseCoinName(e);if(o=o||await t.getAllCoinPrices(),a){let y=await t.indexer.getSpool(e),w=t.utils.parseCoinName(e),g=t.utils.getSpoolRewardCoinName(e);return y.coinPrice=o?.[w]??y.coinPrice,y.marketCoinPrice=o?.[e]??y.marketCoinPrice,y.rewardCoinPrice=o?.[g]??y.rewardCoinPrice,y}r??=(await ja(t,[s]))[s];let c=t.utils.getSpoolRewardCoinName(e);o=o||await t.utils.getCoinPrices();let i=Do(r),n=zt(i),l=o?.[e]??0,d=t.utils.getCoinDecimal(e),b=Yt(n,l,d),u=Jt(i),p=o?.[c]??0,f=t.utils.getCoinDecimal(c),m=Xt(n,u,b,p,f);return {marketCoinName:e,symbol:t.utils.parseSymbol(e),coinType:t.utils.parseCoinType(s),marketCoinType:t.utils.parseMarketCoinType(s),rewardCoinType:we(c)?t.utils.parseMarketCoinType(c):t.utils.parseCoinType(c),sCoinType:t.utils.parseSCoinType(e),coinDecimal:t.utils.getCoinDecimal(s),rewardCoinDecimal:t.utils.getCoinDecimal(c),coinPrice:o?.[s]??0,marketCoinPrice:l,rewardCoinPrice:p,maxPoint:n.maxPoint,distributedPoint:n.distributedPoint,maxStake:n.maxStake,...b,exchangeRateNumerator:u.exchangeRateNumerator,exchangeRateDenominator:u.exchangeRateDenominator,...m}},ve=async({utils:t},e)=>{let a=e||t.suiKit.currentAddress(),o=t.address.get("spool.object"),r=`${o}::spool_account::SpoolAccount`,s=[],c=!1,i=null;do{let b=await t.cache.queryGetOwnedObjects({owner:a,filter:{StructType:r},options:{showContent:!0,showType:!0},cursor:i,limit:10});b&&(s.push(...b.data),b.hasNextPage&&b.nextCursor?(c=!0,i=b.nextCursor):c=!1);}while(c);let n=G.reduce((b,u)=>(b[u]=[],b),{}),l=Object.keys(n).reduce((b,u)=>{let p=t.parseCoinName(u),f=t.parseMarketCoinType(p);return b[u]=`${o}::spool_account::SpoolAccount<${f}>`,b},{}),d=Object.entries(l).reduce((b,[u,p])=>(b[p]=u,b),{});for(let b of s.map(u=>u.data)){let u=b?.objectId,p=b?.type;if(u&&b?.content&&"fields"in b.content){let f=b.content.fields,m=String(f.spool_id),y=String(f.stake_type.fields.name),w=Number(f.stakes),g=Number(f.index),k=Number(f.points),T=Number(f.total_points),j={sweth:n.sweth,ssui:n.ssui,swusdc:n.swusdc,swusdt:n.swusdt,scetus:n.scetus,safsui:n.safsui,shasui:n.shasui,svsui:n.svsui,susdc:n.susdc},A=utils.normalizeStructTag(p),S=j[d[A]];S&&S.push({id:u,type:A,stakePoolId:m,stakeType:utils.normalizeStructTag(y),staked:w,index:g,points:k,totalPoints:T});}}return n},vt=async({utils:t},e)=>{let a=t.address.get(`spool.pools.${e}.id`),o,r=await t.cache.queryGetObject(a);if(r?.data){let s=r.data,c=s.objectId,i=s.type;if(s.content&&"fields"in s.content){let n=s.content.fields,l=Number(n.max_distributed_point),d=Number(n.distributed_point),b=Number(n.distributed_point_per_period),u=Number(n.point_distribution_time),p=Number(n.max_stakes),f=String(n.stake_type.fields.name),m=Number(n.stakes),y=Number(n.index),w=Number(n.created_at),g=Number(n.last_update);o={id:c,type:utils.normalizeStructTag(i),maxPoint:l,distributedPoint:d,pointPerPeriod:b,period:u,maxStake:p,stakeType:utils.normalizeStructTag(f),totalStaked:m,index:y,createdAt:w,lastUpdate:g};}}return o},Mt=async({utils:t},e)=>{let a=t.address.get(`spool.pools.${e}.rewardPoolId`),o,r=await t.cache.queryGetObject(a);if(r?.data){let s=r.data,c=s.objectId,i=s.type;if(s.content&&"fields"in s.content){let n=s.content.fields,l=String(n.spool_id),d=Number(n.exchange_rate_numerator),b=Number(n.exchange_rate_denominator),u=Number(n.rewards),p=Number(n.claimed_rewards);o={id:c,type:utils.normalizeStructTag(i),stakePoolId:l,ratioNumerator:d,ratioDenominator:b,rewards:u,claimedRewards:p};}}return o};var Ko=async(t,e)=>{let a=e||t.suiKit.currentAddress(),r=`${t.address.get("vesca.object")}::ve_sca::VeScaKey`,s=[],c=!1,i=null;do{let l=await t.cache.queryGetOwnedObjects({owner:a,filter:{StructType:r},cursor:i,limit:10});l&&(s.push(...l.data),l&&l.hasNextPage&&l.nextCursor?(c=!0,i=l.nextCursor):c=!1);}while(c);return s.map(l=>l.data).filter(l=>!!l)},et=async({utils:t},e,a)=>{let o=await Ko(t,e),r=Array(o.length).fill(null),s=o.map(async(i,n)=>{let l=await Me(t,i);l&&(r[n]=l);});await Promise.allSettled(s);let c=r.filter(Boolean).sort((i,n)=>n.currentVeScaBalance-i.currentVeScaBalance);return a?c.filter(i=>i.lockedScaAmount!=="0"):c},Ba=zod.z.object({objectId:zod.z.string(),digest:zod.z.string(),version:zod.z.string()}),Me=async(t,e)=>{let a=t.address.get("vesca.tableId");if(!e)return;typeof e=="object"&&(e=Ba.parse(e));let o,r=await t.cache.queryGetDynamicFieldObject({parentId:a,name:{type:"0x2::object::ID",value:typeof e=="string"?e:e.objectId}});if(!r)return;let s=r.data;if(s&&s.content&&s.content.dataType==="moveObject"&&"fields"in s.content){let c=s.content.fields.value.fields,i=Math.max(+c.unlock_at*1e3-Date.now(),0),n=String(c.locked_sca_amount),l=h__default.default(c.locked_sca_amount).shiftedBy(-9).toNumber(),d=l*(Math.floor(i/1e3)/126144e3);o={id:s.objectId,keyId:typeof e=="string"?e:e.objectId,keyObject:typeof e=="string"?void 0:e,object:Ba.parse(r.data),lockedScaAmount:n,lockedScaCoin:l,currentVeScaBalance:d,unlockAt:h__default.default(c.unlock_at*1e3).toNumber()};}return o},Eo=async(t,e)=>{let a=t.address.get("vesca.id"),o=t.address.get("vesca.config");e=e??t.address.get("vesca.treasury");let r=new suiKit.SuiTxBlock,s=`${a}::treasury::refresh`,c=[o,e,r.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],i=`${a}::treasury::total_ve_sca_amount`,n=[e,r.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],l=await Promise.all(c.map(async f=>typeof f=="string"?(await t.cache.queryGetObject(f))?.data:f)),d=await Promise.all(n.map(async f=>typeof f=="string"?(await t.cache.queryGetObject(f))?.data:f));r.moveCall(s,l),r.moveCall(i,d);let b=await r.txBlock.build({client:t.suiKit.client(),onlyTransactionKind:!0}),p=(await t.cache.queryClient.fetchQuery({queryKey:B.rpc.getTotalVeScaTreasuryAmount(c,n),queryFn:async()=>await t.suiKit.inspectTxn(b)})).results;if(p&&p[1]?.returnValues){let f=Uint8Array.from(p[1].returnValues[0][0]),m=p[1].returnValues[0][1];return Mo__default.default(m==="u64","Result type is not u64"),bcs.bcs.u64().parse(f)}return "0"},La=async t=>{let e=t.address.get("vesca.treasury"),a=await t.cache.queryGetObject(e);if(!a||a.data?.content?.dataType!=="moveObject")return null;let o=a.data.content.fields,r=h__default.default(o.unlock_schedule.fields.locked_sca_amount).shiftedBy(-9).toNumber(),s=h__default.default(await Eo(t,a.data)??0).shiftedBy(-9).toNumber(),c=r>0?s/r*4:0;return {totalLockedSca:r,totalVeSca:s,averageLockingPeriod:c,averageLockingPeriodUnit:"year"}};var Fa=async(t,e)=>{let a={},o=t.address.get("core.market"),r=(await t.cache.queryGetObject(o))?.data;if(!(r&&r.content?.dataType==="moveObject"))throw new Error("Failed to fetch marketObject");let s=r.content.fields,c=e.reduce((g,k)=>(g.push([k,t.utils.parseCoinType(k).substring(2)]),g),[]),i=s.vault.fields.balance_sheets.fields.table.fields.id.id,n=s.collateral_stats.fields.table.fields.id.id,l=s.borrow_dynamics.fields.table.fields.id.id,d=s.interest_models.fields.table.fields.id.id,b=s.risk_models.fields.table.fields.id.id,u="0x1::type_name::TypeName",p="0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey",f="0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey",m="0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey",y="0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey",w=async(g,k,T)=>{try{return (await t.cache.queryGetDynamicFieldObject({parentId:g,name:{type:k,value:T}}))?.data?.objectId}catch(j){console.error(j.message);return}};return await Promise.all(c.map(async([g,k])=>{let T=await Promise.all([w(i,u,{name:k}),w(n,u,{name:k}),w(l,u,{name:k}),w(d,u,{name:k}),w(b,u,{name:k}),w(o,p,k),w(o,f,k),w(o,m,k),w(o,y,k)]),j=t.address.get(`spool.pools.s${g}.id`),A=t.address.get(`spool.pools.s${g}.rewardPoolId`),S=t.address.get(`scoin.coins.s${g}.coinType`),R=S?t.utils.parseSCoinName(g):void 0,J=R?t.utils.parseSymbol(R):void 0,X=t.address.get(`scoin.coins.s${g}.treasury`),Z=t.address.get(`core.coins.${g}.metaData`),Q=t.address.get(`scoin.coins.s${g}.metaData`),E=Ae[g],P=t.address.get(`core.coins.${g}.oracle.pyth.feedObject`),O=t.utils.getCoinDecimal(g),I=j?`s${g}`:void 0;a[g]={coinName:g,symbol:t.utils.parseSymbol(g),lendingPoolAddress:T[0],collateralPoolAddress:T[1],borrowDynamic:T[2],interestModel:T[3],riskModel:T[4],borrowFeeKey:T[5],supplyLimitKey:T[6],borrowLimitKey:T[7],isolatedAssetKey:T[8],spool:j,spoolReward:A,sCoinTreasury:X,sCoinType:S,sCoinName:R,sCoinSymbol:J,coinMetadataId:Z,coinType:`0x${k}`,sCoinMetadataId:Q,spoolName:I,decimals:O,pythFeed:E,pythFeedObjectId:P},await new Promise(x=>setTimeout(x,500));})),a};var re=class{params;isTestnet;suiKit;address;cache;walletAddress;constructor(e,a){this.params={pythEndpoints:e.pythEndpoints??Pe.mainnet,...e},this.walletAddress=e.walletAddress??a?.suiKit?.currentAddress()??"",this.suiKit=a?.suiKit??a?.address?.cache.suiKit??H(e),a?.address?(this.address=a.address,this.cache=this.address.cache):(this.cache=new K(this.params,{suiKit:this.suiKit}),this.address=a?.address??new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache})),this.isTestnet=e.networkType?e.networkType==="testnet":!1;}isSuiBridgeAsset(e){return ht(e)}isWormholeAsset(e){return Ct(e)}async init(e=!1,a){a&&!this.address&&(this.address=a),(e||!this.address.getAddresses())&&await this.address.read();}parseSymbol(e){return kt(e)}parseCoinType(e,a=!1){if(ue[e]&&!a)return ue[e];e=we(e)?this.parseCoinName(e):e;let o=this.address.get(`core.coins.${e}.id`)||Te[e]||void 0;if(!o)throw Error(`Coin ${e} is not supported`);if(e==="sui")return utils.normalizeStructTag(`${o}::sui::SUI`);if(e==="blub")return utils.normalizeStructTag(`${o}::BLUB::BLUB`);if(e==="sbwbtc")return utils.normalizeStructTag(`${o}::btc::BTC`);let r=[this.address.get("core.coins.wusdc.id")??$.wusdc,this.address.get("core.coins.wusdt.id")??$.wusdt,this.address.get("core.coins.weth.id")??$.weth,this.address.get("core.coins.wbtc.id")??$.wbtc,this.address.get("core.coins.wsol.id")??$.wsol,this.address.get("core.coins.wapt.id")??$.wapt],s=[this.address.get("core.coins.vsui.id")??bt.vsui],c=Object.values(lt).reduce((i,n)=>(i.push(this.address.get(`core.coins.${n}.id`)??Te[n]),i),[]);if(r.includes(o))return `${o}::coin::COIN`;if(s.includes(o))return `${o}::cert::CERT`;if(c.includes(o)){let i=e.slice(2);return `${o}::${i}::${i.toUpperCase()}`}else return `${o}::${e}::${e.toUpperCase()}`}parseSCoinName(e){if(we(e)&&q.includes(e))return e;{let a=`s${e}`;return q.includes(a)?a:void 0}}parseSCoinTypeNameToMarketCoinName(e){return Ut[e]??e}parseSCoinType(e){return ue[e]}parseSCoinNameFromType(e){return We[e]}parseUnderlyingSCoinType(e){let a=this.parseCoinName(e);return this.parseCoinType(a)}getSCoinTreasury(e){return this.address.get(`scoin.coins.${e}.treasury`)}parseMarketCoinType(e){let a=this.address.get("core.object")??Ke,o=this.parseCoinType(e,!0);return `${a}::reserve::MarketCoin<${o}>`}parseCoinNameFromType(e){if(e=utils.normalizeStructTag(e),We[e])return We[e];let a=new RegExp("((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)"),o=e.match(a),r=e.includes("reserve::MarketCoin");e=o?.[1]??e;let s={[`${this.address.get("core.coins.wusdc.id")??$.wusdc}::coin::COIN`]:"wusdc",[`${this.address.get("core.coins.wusdt.id")??$.wusdt}::coin::COIN`]:"wusdt",[`${this.address.get("core.coins.weth.id")??$.weth}::coin::COIN`]:"weth",[`${this.address.get("core.coins.wbtc.id")??$.wbtc}::coin::COIN`]:"wbtc",[`${this.address.get("core.coins.wsol.id")??$.wsol}::coin::COIN`]:"wsol",[`${this.address.get("core.coins.wapt.id")??$.wapt}::coin::COIN`]:"wapt"},c={[`${this.address.get("core.coins.vsui.id")??bt.vsui}::cert::CERT`]:"vsui"},i=Object.values(lt).reduce((l,d)=>(l[this.parseCoinType(d)]=d,l),{}),n=s[e]||c[e]||i[e]||e.split("::")[2].toLowerCase();return r?this.parseMarketCoinName(n):n}parseCoinName(e){return e.slice(1)}parseMarketCoinName(e){return `s${e}`}getSpoolRewardCoinName=e=>Ve[e];getCoinDecimal(e){return dt[e]}getCoinWrappedType(e){if(this.isSuiBridgeAsset(e))return {from:"Sui Bridge",type:"Asset from Sui Bridge"};if(this.isWormholeAsset(e))return {from:"Wormhole",type:"Portal from Ethereum"}}async selectCoins(e,a=utils.SUI_TYPE_ARG,o){return o=o??this.walletAddress,await this.suiKit.suiInteractor.selectCoins(o,e,a)}async mergeSimilarCoins(e,a,o,r=this.walletAddress){try{let s=await this.selectCoins(Number.MAX_SAFE_INTEGER,o,r);s.length>0&&e.mergeCoins(a,s.slice(0,500));}catch{}}async getObligationCoinNames(e){let a=await Ye(this,e);if(!a)return;let o=a.collaterals.map(i=>`0x${i.type.name}`),r=a.debts.map(i=>`0x${i.type.name}`);return [...new Set([...o,...r])].map(i=>this.parseCoinNameFromType(i))}async getCoinPrices(e=[...new Set([...M,...V])]){let a={},o=this.params.pythEndpoints??Pe[this.isTestnet?"testnet":"mainnet"],r=new Set([...M,...V]);for(let s of o){let c=Array.from(r.values()).reduce((l,d)=>{let b=this.address.get(`core.coins.${d}.oracle.pyth.feed`)??Ae[d];return l.push([d,b]),l},[]),i=c.map(([l,d])=>d),n=new pythSuiJs.SuiPriceServiceConnection(s,{timeout:4e3});try{let l=await this.cache.queryClient.fetchQuery({queryKey:B.oracle.getPythLatestPriceFeeds(),queryFn:async()=>await n.getLatestPriceFeeds(i),staleTime:3e4,gcTime:3e4});l&&l.forEach((d,b)=>{let u=c[b][0],p=oa(d,this.address);a[u]=p.price,r.delete(u);});}catch(l){console.error(l.message);}if(r.size===0)break}return r.size>0&&(a={...a,...await Je(this,Array.from(r.values()))},r.clear()),a}parseAprToApy(e,a=365){return (1+e/a)**a-1}parseApyToApr(e,a=365){return ((1+e)**(1/a)-1)*a}getUnlockAt(e,a){let o=Math.floor(new Date().getTime()/1e3),r=a?Math.max(Math.floor(a/1e3)-o,0):0,s=0;if(r===0){let c=(e??1)*86400;s=Math.min(o+c,o+126144e3);}else {let c=Math.min(e?e*86400+r:r,126144e3);s=o+c;}return sa(s)}getSupportedPoolAddresses(){return M.map(e=>{let a=this.parseSCoinName(e);return {name:this.parseSymbol(e),coingeckoId:Dt[e],decimal:dt[e],pythFeedId:Ae[e],...N[e],sCoinAddress:ue[a],marketCoinAddress:this.parseMarketCoinType(e),coinAddress:this.parseCoinType(e),sCoinName:a?this.parseSymbol(a):void 0}})}};var je=async(t,e,a,o={usePythPullModel:!0})=>{let r=t.params.usePythPullModel??o.usePythPullModel;a=a??[...new Set([...M,...V])];let s=t.isTestnet?["pyth"]:["pyth"];if(r&&s.includes("pyth")){let i=new pythSuiJs.SuiPythClient(t.suiKit.client(),t.address.get("core.oracles.pyth.state"),t.address.get("core.oracles.pyth.wormholeState")),n=a.map(d=>t.address.get(`core.coins.${d}.oracle.pyth.feed`)),l=t.params.pythEndpoints??Pe[t.isTestnet?"testnet":"mainnet"];for(let d of l)try{let u=await new pythSuiJs.SuiPriceServiceConnection(d).getPriceFeedsUpdateData(n);await i.updatePriceFeeds(e.txBlock,u,n);break}catch(b){console.warn(`Failed to update price feeds with endpoint ${d}: ${b}`);}}let c=[...new Set(a)];for(let i of c)await qo(t,e,i,s);},qo=async(t,e,a,o)=>{let r=t.utils.parseCoinType(a);$o(e,o,t.address.get("core.packages.xOracle.id"),t.address.get("core.oracles.xOracle"),t.address.get("core.packages.pyth.id"),t.address.get("core.oracles.pyth.registry"),t.address.get("core.oracles.pyth.state"),t.address.get(`core.coins.${a}.oracle.pyth.feedObject`),t.address.get("core.packages.switchboard.id"),t.address.get("core.oracles.switchboard.registry"),t.address.get(`core.coins.${a}.oracle.switchboard`),t.address.get("core.packages.supra.id"),t.address.get("core.oracles.supra.registry"),t.address.get("core.oracles.supra.holder"),r);},$o=(t,e,a,o,r,s,c,i,n,l,d,b,u,p,f)=>{let m=Go(t,a,o,f);return e.includes("pyth")&&Jo(t,r,m,c,i,s,f),e.includes("switchboard")&&Yo(t,n,m,d,l,f),e.includes("supra")&&zo(t,b,m,p,u,f),Ho(t,a,o,m,f),t},Go=(t,e,a,o)=>{let r=`${e}::x_oracle::price_update_request`,s=[o];return t.moveCall(r,[a],s)},Ho=(t,e,a,o,r)=>{let s=`${e}::x_oracle::confirm_price_update_request`,c=[r];return t.moveCall(s,[a,o,t.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],c),t},zo=(t,e,a,o,r,s)=>{t.moveCall(`${e}::rule::set_price`,[a,o,r,t.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[s]);},Yo=(t,e,a,o,r,s)=>{t.moveCall(`${e}::rule::set_price`,[a,o,r,t.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[s]);},Jo=(t,e,a,o,r,s,c)=>{t.moveCall(`${e}::rule::set_price`,[a,o,r,s,t.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c]);};var De=async(...t)=>{let[e,a,o,r]=t;if(t.length===3&&o)return {obligationId:o};if(t.length===4&&o&&r)return {obligationId:o,obligationKey:r};let s=_(a),c=await he(e,s);if(c.length===0)throw new Error(`No obligation found for sender ${s}`);return {obligationId:c[0].id,obligationKey:c[0].keyId}},Zo=({builder:t,txBlock:e})=>{let a={protocolPkg:t.address.get("core.packages.protocol.id"),market:t.address.get("core.market"),version:t.address.get("core.version"),coinDecimalsRegistry:t.address.get("core.coinDecimalsRegistry"),xOracle:t.address.get("core.oracles.xOracle")},r=`${t.address.get("referral.id")}::scallop_referral_program::REFERRAL_WITNESS`;return {openObligation:()=>{let[s,c,i]=t.moveCall(e,`${a.protocolPkg}::open_obligation::open_obligation`,[a.version]);return [s,c,i]},returnObligation:(s,c)=>{t.moveCall(e,`${a.protocolPkg}::open_obligation::return_obligation`,[a.version,s,c]);},openObligationEntry:()=>{t.moveCall(e,`${a.protocolPkg}::open_obligation::open_obligation_entry`,[a.version]);},addCollateral:(s,c,i)=>{let n=t.utils.parseCoinType(i);t.moveCall(e,`${a.protocolPkg}::deposit_collateral::deposit_collateral`,[a.version,s,a.market,c],[n]);},takeCollateral:(s,c,i,n)=>{let l=t.utils.parseCoinType(n);return t.moveCall(e,`${a.protocolPkg}::withdraw_collateral::withdraw_collateral`,[a.version,s,c,a.market,a.coinDecimalsRegistry,e.pure.u64(i),a.xOracle,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[l])},deposit:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::mint::mint`,[a.version,a.market,s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},depositEntry:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::mint::mint_entry`,[a.version,a.market,s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},withdraw:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::redeem::redeem`,[a.version,a.market,s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},withdrawEntry:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::redeem::redeem_entry`,[a.version,a.market,s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},borrow:(s,c,i,n)=>{let l=t.utils.parseCoinType(n);return t.moveCall(e,`${a.protocolPkg}::borrow::borrow`,[a.version,s,c,a.market,a.coinDecimalsRegistry,i,a.xOracle,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[l])},borrowWithReferral:(s,c,i,n,l)=>{let d=t.utils.parseCoinType(l);return t.moveCall(e,`${a.protocolPkg}::borrow::borrow_with_referral`,[a.version,s,c,a.market,a.coinDecimalsRegistry,i,typeof n=="number"?e.pure.u64(n):n,a.xOracle,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[d,r])},borrowEntry:(s,c,i,n)=>{let l=t.utils.parseCoinType(n);return t.moveCall(e,`${a.protocolPkg}::borrow::borrow_entry`,[a.version,s,c,a.market,a.coinDecimalsRegistry,e.pure.u64(i),a.xOracle,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[l])},repay:(s,c,i)=>{let n=t.utils.parseCoinType(i);t.moveCall(e,`${a.protocolPkg}::repay::repay`,[a.version,s,a.market,c,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[n]);},borrowFlashLoan:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::flash_loan::borrow_flash_loan`,[a.version,a.market,s],[i])},repayFlashLoan:(s,c,i)=>{let n=t.utils.parseCoinType(i);t.moveCall(e,`${a.protocolPkg}::flash_loan::repay_flash_loan`,[a.version,a.market,s,c],[n]);}}},es=({builder:t,txBlock:e})=>({addCollateralQuick:async(a,o,r)=>{let s=_(e),{obligationId:c}=await De(t,e,r);if(o==="sui"){let[i]=e.splitSUIFromGas([a]);await e.addCollateral(c,i,o);}else {let{leftCoin:i,takeCoin:n}=await t.selectCoin(e,o,a,s);await e.addCollateral(c,n,o),e.transferObjects([i],s);}},takeCollateralQuick:async(a,o,r,s)=>{let c=await De(t,e,r,s),i=await t.utils.getObligationCoinNames(c.obligationId);return await je(t,e,i),await e.takeCollateral(c.obligationId,c.obligationKey,a,o)},depositQuick:async(a,o,r=!0)=>{let s=_(e),c;if(o==="sui"){let[i]=e.splitSUIFromGas([a]);c=await e.deposit(i,o);}else {let{leftCoin:i,takeCoin:n}=await t.selectCoin(e,o,a,s);e.transferObjects([i],s),c=await e.deposit(n,o);}return r?await e.mintSCoin(t.utils.parseMarketCoinName(o),c):c},withdrawQuick:async(a,o)=>{let r=_(e),s=t.utils.parseMarketCoinName(o);try{let c=t.utils.parseSCoinName(o);if(!c)throw new Error(`No sCoin for ${o}`);let{leftCoin:i,takeCoin:n,totalAmount:l}=await t.selectSCoin(e,c,a,r);e.transferObjects([i],r);let d=await e.burnSCoin(c,n);a-=l;try{if(a>0){let{leftCoin:b,takeCoin:u}=await t.selectMarketCoin(e,s,a,r);e.transferObjects([b],r),e.mergeCoins(d,[u]);}}catch{}return e.withdraw(d,o)}catch{let{leftCoin:i,takeCoin:n}=await t.selectMarketCoin(e,s,a,r);return e.transferObjects([i],r),await e.withdraw(n,o)}},borrowQuick:async(a,o,r,s)=>{let c=await De(t,e,r,s),n=[...await t.utils.getObligationCoinNames(c.obligationId)??[],o];return await je(t,e,n),await e.borrow(c.obligationId,c.obligationKey,a,o)},borrowWithReferralQuick:async(a,o,r,s,c)=>{let i=await De(t,e,s,c),l=[...await t.utils.getObligationCoinNames(i.obligationId)??[],o];return await je(t,e,l),e.borrowWithReferral(i.obligationId,i.obligationKey,r,a,o)},repayQuick:async(a,o,r)=>{let s=_(e),c=await De(t,e,r);if(o==="sui"){let[i]=e.splitSUIFromGas([a]);return await e.repay(c.obligationId,i,o)}else {let{leftCoin:i,takeCoin:n}=await t.selectCoin(e,o,a,s);return e.transferObjects([i],s),await e.repay(c.obligationId,n,o)}},updateAssetPricesQuick:async a=>await je(t,e,a)}),Ea=(t,e)=>{let a=e instanceof transactions.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=Zo({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=es({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var Va=async(...t)=>{let[e,a,o,r]=t;if(t.length===4&&r)return [r];let s=_(a),c=await ve(e,s);if(c[o].length===0)throw new Error(`No stake account id found for sender ${s}`);return c[o].map(i=>i.id)},as=async(...t)=>{let[e,a,o,r]=t,s=_(a),c=await ve(e,s);if(c[o].length===0)throw new Error(`No stake account found for sender ${s}`);return r?c[o].filter(n=>n.id===r):c[o]},Wa=async(t,e,a,o,r,s,c=!1)=>{try{let{takeCoin:i,leftCoin:n,totalAmount:l}=c?await t.selectSCoin(e,o,r,s):await t.selectMarketCoin(e,o,r,s);if(c){let d=e.burnSCoin(o,i);e.stake(a,d,o);}else e.stake(a,i,o);return e.transferObjects([n],s),l}catch{return 0}},os=({builder:t,txBlock:e})=>{let a={spoolPkg:t.address.get("spool.id")};return {createStakeAccount:o=>{let r=t.utils.parseMarketCoinType(o),s=t.address.get(`spool.pools.${o}.id`);return t.moveCall(e,`${a.spoolPkg}::user::new_spool_account`,[s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[r])},stake:(o,r,s)=>{let c=t.utils.parseMarketCoinType(s),i=t.address.get(`spool.pools.${s}.id`);t.moveCall(e,`${a.spoolPkg}::user::stake`,[i,o,r,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c]);},unstake:(o,r,s)=>{let c=t.utils.parseMarketCoinType(s),i=t.address.get(`spool.pools.${s}.id`);return t.moveCall(e,`${a.spoolPkg}::user::unstake`,[i,o,r,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c])},claim:(o,r)=>{let s=t.address.get(`spool.pools.${r}.id`),c=t.address.get(`spool.pools.${r}.rewardPoolId`),i=t.utils.parseMarketCoinType(r),n=Ve[r],l=t.utils.parseCoinType(n);return t.moveCall(e,`${a.spoolPkg}::user::redeem_rewards`,[s,c,o,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i,l])}}},ss=({builder:t,txBlock:e})=>({stakeQuick:async(a,o,r)=>{let s=_(e),c=await Va(t,e,o,r);if(c.length===0)throw new Error(`No stakeAccountIds found for user ${s}`);if(typeof a=="number"){let i=await Wa(t,e,c[0],o,a,s);a-=i,a>0&&await Wa(t,e,c[0],o,a,s,!0);}else e.stake(c[0],a,o);},unstakeQuick:async(a,o,r,s=!0)=>{let c=await as(t,e,o,r),i=[];for(let n of c){if(n.staked===0)continue;let l=Math.min(a,n.staked),d=await e.unstake(n.id,l,o);if(s){let b=await e.mintSCoin(o,d);i.push(b);}else i.push(d);if(a-=l,a<=0)break}if(i.length>0){let n=i[0];return i.length>1&&e.mergeCoins(n,i.slice(1)),n}},claimQuick:async(a,o)=>{let r=await Va(t,e,a,o),s=[];for(let c of r){let i=await e.claim(c,a);s.push(i);}return s}}),Qa=(t,e)=>{let a=e instanceof transactions.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=os({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=ss({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var st=async(...t)=>{let[e,a,o,r]=t;if(t.length===4&&o&&r&&typeof o=="string"){let n=await Tt(e.cache,o);return {obligationId:o,obligationKey:r,obligationLocked:n}}let s=_(a),c=await he(e,s);if(c.length===0)throw new Error(`No obligation found for sender ${s}`);let i=c.find(n=>n.id===o||n.keyId===r)??c[0];return {obligationId:i.id,obligationKey:i.keyId,obligationLocked:i.locked}},cs=({builder:t,txBlock:e})=>{let a={borrowIncentivePkg:t.address.get("borrowIncentive.id"),query:t.address.get("borrowIncentive.query"),config:t.address.get("borrowIncentive.config"),incentivePools:t.address.get("borrowIncentive.incentivePools"),incentiveAccounts:t.address.get("borrowIncentive.incentiveAccounts"),obligationAccessStore:t.address.get("core.obligationAccessStore")},o={table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return {stakeObligation:(r,s)=>{t.moveCall(e,`${a.borrowIncentivePkg}::user::stake`,[a.config,a.incentivePools,a.incentiveAccounts,s,r,a.obligationAccessStore,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})]);},stakeObligationWithVesca:(r,s,c)=>{t.moveCall(e,`${a.borrowIncentivePkg}::user::stake_with_ve_sca`,[a.config,a.incentivePools,a.incentiveAccounts,s,r,a.obligationAccessStore,o.config,o.treasury,o.table,c,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},unstakeObligation:(r,s)=>{t.moveCall(e,`${a.borrowIncentivePkg}::user::unstake`,[a.config,a.incentivePools,a.incentiveAccounts,s,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})]);},claimBorrowIncentive:(r,s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.borrowIncentivePkg}::user::redeem_rewards`,[a.config,a.incentivePools,a.incentiveAccounts,s,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},deactivateBoost:(r,s)=>{t.moveCall(e,`${a.borrowIncentivePkg}::user::deactivate_boost`,[a.config,a.incentivePools,a.incentiveAccounts,r,s,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})]);}}},is=({builder:t,txBlock:e})=>({stakeObligationQuick:async(a,o)=>{let{obligationId:r,obligationKey:s,obligationLocked:c}=await st(t,e,a,o),i=!!e.txBlock.blockData.transactions.find(n=>n.kind==="MoveCall"&&(n.target===`${nt}::user::unstake`||n.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));(!c||i)&&e.stakeObligation(r,s);},stakeObligationWithVeScaQuick:async(a,o,r)=>{let{obligationId:s,obligationKey:c,obligationLocked:i}=await st(t,e,a,o),n=!!e.txBlock.blockData.transactions.find(l=>l.kind==="MoveCall"&&(l.target===`${nt}::user::unstake`||l.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));if(!i||n){let d=await t.query.getBindedVeScaKey(s)??r;d?e.stakeObligationWithVesca(s,c,d):e.stakeObligation(s,c);}},unstakeObligationQuick:async(a,o)=>{let{obligationId:r,obligationKey:s,obligationLocked:c}=await st(t,e,a,o);c&&e.unstakeObligation(r,s);},claimBorrowIncentiveQuick:async(a,o,r)=>{let{obligationId:s,obligationKey:c}=await st(t,e,o,r);return e.claimBorrowIncentive(s,c,a)}}),$a=(t,e)=>{let a=e instanceof transactions.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=cs({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=is({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var Le=async(...t)=>{let[e,a,o]=t;if(t.length===3&&o&&typeof o=="string"){let c=await Me(e.utils,o);return c||void 0}let r=_(a),s=await et(e,r);if(s.length!==0)return o?s.find(({keyId:c})=>o===c):s[0]},ds=({builder:t,txBlock:e})=>{let a={pkgId:t.address.get("vesca.id"),table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return {lockSca:(o,r)=>t.moveCall(e,`${a.pkgId}::ve_sca::mint_ve_sca_key`,[a.config,a.table,a.treasury,o,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]),extendLockPeriod:(o,r)=>{t.moveCall(e,`${a.pkgId}::ve_sca::extend_lock_period`,[a.config,o,a.table,a.treasury,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},extendLockAmount:(o,r)=>{t.moveCall(e,`${a.pkgId}::ve_sca::lock_more_sca`,[a.config,o,a.table,a.treasury,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},renewExpiredVeSca:(o,r,s)=>{t.moveCall(e,`${a.pkgId}::ve_sca::renew_expired_ve_sca`,[a.config,o,a.table,a.treasury,r,s,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},redeemSca:o=>t.moveCall(e,`${a.pkgId}::ve_sca::redeem`,[a.config,o,a.table,a.treasury,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]),mintEmptyVeSca:()=>t.moveCall(e,`${a.pkgId}::ve_sca::mint_ve_sca_placeholder_key`,[a.config,a.table],[])}},ls=({builder:t,txBlock:e})=>({lockScaQuick:async(a,o,r=!0)=>{let s=_(e),c=await Le(t,e),i,n=[];if(a!==void 0&&typeof a=="number"){let u=await t.utils.selectCoins(a,Ee,s),[p,f]=e.takeAmountFromCoins(u,a);i=p,n.push(f);}else i=a;let l=t.utils.getUnlockAt(o,c?.unlockAt);r&&qt(a,o,l,c?.unlockAt);let d=!c?.unlockAt,b=!d&&c.unlockAt*1e3<=new Date().getTime();if(d||b){if(i)if(d){let u=e.lockSca(i,l);n.push(u);}else {if(c.lockedScaCoin!==0){let u=e.redeemSca(c.keyId);n.push(u);}e.renewExpiredVeSca(c.keyId,i,l);}}else i&&o?(e.extendLockPeriod(c.keyId,l),e.extendLockAmount(c.keyId,i)):o?e.extendLockPeriod(c.keyId,l):i&&e.extendLockAmount(c.keyId,i);n.length>0&&e.transferObjects(n,s);},extendLockPeriodQuick:async(a,o,r=!0)=>{let s=await Le(t,e,o),c=t.utils.getUnlockAt(a,s?.unlockAt);r&&St(a,c,s?.unlockAt),s&&e.extendLockPeriod(s.keyId,c);},extendLockAmountQuick:async(a,o,r=!0)=>{let s=_(e),c=await Le(t,e,o);if(r&&$t(a,c?.unlockAt),c){let i=await t.utils.selectCoins(a,Ee,s),[n,l]=e.takeAmountFromCoins(i,a);e.extendLockAmount(c.keyId,n),e.transferObjects([l],s);}},renewExpiredVeScaQuick:async(a,o,r,s=!0)=>{let c=_(e),i=await Le(t,e,r),n=t.utils.getUnlockAt(o,i?.unlockAt);if(s&&Gt(a,o,i?.unlockAt),i){let l=[];if(i.lockedScaCoin!==0){let p=e.redeemSca(i.keyId);l.push(p);}let d=await t.utils.selectCoins(a,Ee,c),[b,u]=e.takeAmountFromCoins(d,a);l.push(u),e.renewExpiredVeSca(i.keyId,b,n),e.transferObjects(l,c);}},redeemScaQuick:async(a,o=!0)=>{let r=_(e),s=await Le(t,e,a);if(Ie(s?.unlockAt),s){let c=await e.redeemSca(s.keyId);if(o){e.transferObjects([c],r);return}return c}}}),Ha=(t,e)=>{let a=e instanceof suiKit.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=ds({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=ls({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var fs=({builder:t,txBlock:e})=>{let a={referralPgkId:t.address.get("referral.id"),referralBindings:t.address.get("referral.referralBindings"),referralRevenuePool:t.address.get("referral.referralRevenuePool"),authorizedWitnessList:t.address.get("referral.authorizedWitnessList"),referralTiers:t.address.get("referral.referralTiers"),version:t.address.get("referral.version")},o=t.address.get("vesca.table");return {bindToReferral:r=>{t.moveCall(e,`${a.referralPgkId}::referral_bindings::bind_ve_sca_referrer`,[a.referralBindings,e.pure.id(r),o,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},claimReferralTicket:r=>{let s=t.utils.parseCoinType(r);return t.moveCall(e,`${a.referralPgkId}::scallop_referral_program::claim_ve_sca_referral_ticket`,[a.version,o,a.referralBindings,a.authorizedWitnessList,a.referralTiers,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[s])},burnReferralTicket:(r,s)=>{let c=t.utils.parseCoinType(s);t.moveCall(e,`${a.referralPgkId}::scallop_referral_program::burn_ve_sca_referral_ticket`,[a.version,r,a.referralRevenuePool,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c]);},claimReferralRevenue:(r,s)=>{let c=t.utils.parseCoinType(s);return t.moveCall(e,`${a.referralPgkId}::referral_revenue_pool::claim_revenue_with_ve_sca_key`,[a.version,a.referralRevenuePool,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c])}}},us=({builder:t,txBlock:e})=>({claimReferralRevenueQuick:async(a,o=[...M])=>{let r=_(e),s=[];for(let c of o)if(c==="sui"){let i=await e.claimReferralRevenue(a,c);s.push(i);}else {let i=await e.claimReferralRevenue(a,c);try{let n=await t.suiKit.suiInteractor.selectCoins(r,1/0,t.utils.parseCoinType(c));e.mergeCoins(i,n.slice(0,500));}catch{}finally{s.push(i);}}s.length>0&&e.transferObjects(s,r);}}),Ya=(t,e)=>{let a=e instanceof suiKit.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=fs({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=us({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var ms=({builder:t,txBlock:e})=>{let a={loyaltyProgramPkgId:t.address.get("loyaltyProgram.id"),rewardPool:t.address.get("loyaltyProgram.rewardPool"),userRewardTableId:t.address.get("loyaltyProgram.userRewardTableId")};return {claimLoyaltyRevenue:o=>t.moveCall(e,`${a.loyaltyProgramPkgId}::reward_pool::redeem_reward`,[a.rewardPool,o])}},ys=({builder:t,txBlock:e})=>({claimLoyaltyRevenueQuick:async a=>{a=a??(await t.query.getVeScas())[0]?.keyObject;let o=_(e);if(!a)throw new Error(`No veScaKey found for user ${o}`);let r=await e.claimLoyaltyRevenue(a);await t.utils.mergeSimilarCoins(e,r,Te.sca,_(e)),e.transferObjects([r],o);}}),Xa=(t,e)=>{let a=e instanceof transactions.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=ms({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=ys({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var ws=({builder:t,txBlock:e})=>{let a={pkgId:t.address.get("scoin.id")};return {mintSCoin:(o,r)=>t.moveCall(e,`${a.pkgId}::s_coin_converter::mint_s_coin`,[t.utils.getSCoinTreasury(o),r],[t.utils.parseSCoinType(o),t.utils.parseUnderlyingSCoinType(o)]),burnSCoin:(o,r)=>t.moveCall(e,`${a.pkgId}::s_coin_converter::burn_s_coin`,[t.utils.getSCoinTreasury(o),r],[t.utils.parseSCoinType(o),t.utils.parseUnderlyingSCoinType(o)])}},gs=({builder:t,txBlock:e})=>({mintSCoinQuick:async(a,o)=>{let r=_(e),{leftCoin:s,takeCoin:c}=await t.selectMarketCoin(e,a,o,r);return e.transferObjects([s],r),await e.mintSCoin(a,c)},burnSCoinQuick:async(a,o)=>{let r=_(e),{leftCoin:s,takeCoin:c}=await t.selectSCoin(e,a,o,r);return e.transferObjects([s],r),await e.burnSCoin(a,c)}}),eo=(t,e)=>{let a=e instanceof suiKit.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=ws({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=gs({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var to=(t,e)=>{let a=Ha(t,e),o=Xa(t,a),r=$a(t,o),s=Ya(t,r),c=eo(t,s),i=Qa(t,c),n=Ea(t,i);return new Proxy(n,{get:(l,d)=>d in a?Reflect.get(a,d):d in r?Reflect.get(r,d):d in s?Reflect.get(s,d):d in i?Reflect.get(i,d):d in o?Reflect.get(o,d):d in c?Reflect.get(c,d):Reflect.get(l,d)})};var Ce=class{cache;params;_requestClient;constructor(e={},a){this.params=e,this.cache=a?.cache??new K(this.params),this._requestClient=bo__default.default.create({baseURL:Bt,headers:{"Content-Type":"application/json",Accept:"application/json"},timeout:3e4});}async getMarket(){let e=await this.cache.queryClient.fetchQuery({queryKey:B.api.getMarket(),queryFn:async()=>await this._requestClient.get("/api/market/migrate")});if(e.status===200)return {pools:e.data.pools.reduce((a,o)=>(a[o.coinName]=o,a),{}),collaterals:e.data.collaterals.reduce((a,o)=>(a[o.coinName]=o,a),{})};throw Error("Failed to getMarket.")}async getMarketPools(){return (await this.getMarket()).pools}async getMarketPool(e){return (await this.getMarketPools())[e]}async getMarketCollaterals(){return (await this.getMarket()).collaterals}async getMarketCollateral(e){return (await this.getMarketCollaterals())[e]}async getSpools(){let e=await this.cache.queryClient.fetchQuery({queryKey:B.api.getSpools(),queryFn:async()=>await this._requestClient.get("/api/spools/migrate")});if(e.status===200)return e.data.spools.reduce((a,o)=>(a[o.marketCoinName]=o,a),{});throw Error("Failed to getSpools.")}async getSpool(e){return (await this.getSpools())[e]}async getBorrowIncentivePools(){let e=await this.cache.queryClient.fetchQuery({queryKey:B.api.getBorrowIncentivePool(),queryFn:async()=>await this._requestClient.get("/api/borrowIncentivePools/migrate")});if(e.status===200)return e.data.borrowIncentivePools.reduce((a,o)=>(Array.isArray(o.points)&&(o.points=o.points.reduce((r,s)=>(r[s.coinName]=s,r),{})),a[o.coinName]=o,a),{});throw Error("Failed to getBorrowIncentivePools.")}async getBorrowIncentivePool(e){return (await this.getBorrowIncentivePools())[e]}async getTotalValueLocked(){let e=await this.cache.queryClient.fetchQuery({queryKey:B.api.getTotalValueLocked(),queryFn:async()=>await this._requestClient.get("/api/market/tvl")});if(e.status===200)return e.data;throw Error("Failed to getTotalValueLocked.")}async getCoinPrice(e){return (await this.getMarketPool(e))?.coinPrice??0}async getCoinPrices(){let e=await this.getMarketPools();return Object.entries(e).reduce((a,[o,r])=>(a[o]=r.coinPrice,a),{})}};var fe=class{params;suiKit;address;utils;indexer;cache;walletAddress;constructor(e={},a){this.params=e,this.suiKit=a?.suiKit??a?.utils?.suiKit??H(e),this.walletAddress=utils.normalizeSuiAddress(e.walletAddress??this.suiKit.currentAddress()),a?.utils?(this.utils=a.utils,this.address=a.utils.address,this.cache=this.address.cache):(this.cache=new K(this.params,{suiKit:this.suiKit}),this.address=new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache}),this.utils=new re(this.params,{address:this.address})),this.indexer=a?.indexer??new Ce(this.params,{cache:this.cache}),this.queryMarket=W.call(this,this.queryMarket),this.getMarketPools=W.call(this,this.getMarketPools),this.getMarketPool=W.call(this,this.getMarketPool),this.getMarketCollaterals=W.call(this,this.getMarketCollaterals),this.getMarketCollateral=W.call(this,this.getMarketCollateral),this.getSpools=W.call(this,this.getSpools),this.getSpool=W.call(this,this.getSpool),this.getBorrowIncentivePools=W.call(this,this.getBorrowIncentivePools),this.getLendings=W.call(this,this.getLendings),this.getLending=W.call(this,this.getLending),this.getObligationAccounts=W.call(this,this.getObligationAccounts),this.getObligationAccount=W.call(this,this.getObligationAccount),this.getTvl=W.call(this,this.getTvl);}async init(e=!1,a){a&&!this.address&&(this.address=a),(e||!this.address.getAddresses())&&await this.address.read(),await this.utils.init(e,this.address);}async queryMarket(e){return await pa(this,e?.indexer,e?.coinPrices)}async getMarketPools(e=[...M],a){return await ya(this,e,a?.indexer,a?.coinPrices)}async getMarketPool(e,a){return (await this.getMarketPools(void 0,a)).pools[e]}async getMarketCollaterals(e,a){return await Sa(this,e,a?.indexer)}async getMarketCollateral(e,a){return await xt(this,e,a?.indexer)}async getObligations(e=this.walletAddress){return await he(this,e)}async queryObligation(e){return Ye(this,e)}async getCoinAmounts(e,a=this.walletAddress){return await wa(this,e,a)}async getCoinAmount(e,a=this.walletAddress){return await Pt(this,e,a)}async getMarketCoinAmounts(e,a=this.walletAddress){return await ga(this,e,a)}async getMarketCoinAmount(e,a=this.walletAddress){return await At(this,e,a)}async getPriceFromPyth(e){return await It(this,e)}async getPricesFromPyth(e){return await Je(this,e)}async getSpools(e,a){return await Da(this,e,a?.indexer,a?.marketPools,a?.coinPrices)}async getSpool(e,a){return (await this.getSpools(void 0,a))[e]}async getAllStakeAccounts(e=this.walletAddress){return await ve(this,e)}async getStakeAccounts(e,a=this.walletAddress){return (await this.getAllStakeAccounts(a))[e]??[]}async getStakePools(e=[...G]){let a={};for(let o of e){let r=await vt(this,o);r&&(a[o]=r);}return a}async getStakePool(e){return await vt(this,e)}async getStakeRewardPools(e=[...G]){let a={};return await Promise.allSettled(e.map(async o=>{let r=await Mt(this,o);r&&(a[o]=r);})),a}async getStakeRewardPool(e){return await Mt(this,e)}async getBorrowIncentivePools(e,a){return await ca(this,e,a?.indexer,a?.marketPools,a?.coinPrices)}async getBorrowIncentiveAccounts(e,a){return await ia(this,e,a)}async getLendings(e,a=this.walletAddress,o){return await xa(this,e,a,o?.marketPools,o?.coinPrices,o?.indexer)}async getLending(e,a=this.walletAddress,o){return await Ot(this,e,a,o?.indexer)}async getObligationAccounts(e=this.walletAddress,a){return await Ta(this,e,a?.market,a?.coinPrices,a?.indexer)}async getObligationAccount(e,a=this.walletAddress,o){let r=await this.getObligationAccounts(a,o);return Object.values(r).find(s=>s?.obligationId===e)}async getTvl(e){return await Pa(this,e?.indexer)}async getVeSca(e){return await Me(this.utils,e)}async getVeScas({walletAddress:e=this.walletAddress,excludeEmpty:a=!1}={}){return await et(this,e,a)}async getVeScaTreasuryInfo(){return await La(this.utils)}async getVeScaKeyIdFromReferralBindings(e=this.walletAddress){return await Ia(this.address,e)}async getBindedObligationId(e){return await na(this,e)}async getBindedVeScaKey(e){return await da(this,e)}async getLoyaltyProgramInfos(e){return await ka(this,e)}async getSCoinTotalSupply(e){return await Ra(this,e)}async getSCoinAmounts(e,a=this.walletAddress){return await va(this,e,a)}async getSCoinAmount(e,a=this.walletAddress){let o=this.utils.parseSCoinName(e);return o?await Rt(this,o,a):0}async getSCoinSwapRate(e,a){return await Ma(this,e,a)}async getFlashLoanFees(e=[...M]){return await ha(this,e)}async getPoolSupplyLimit(e){return await He(this.utils,e)}async getPoolBorrowLimit(e){return await ze(this.utils,e)}async getIsolatedAssets(){return await ba(this)}async isIsolatedAsset(e){return ge(this.utils,e)}async getCoinPriceByIndexer(e){return this.indexer.getCoinPrice(e)}async getCoinPricesByIndexer(){return this.indexer.getCoinPrices()}async getAllCoinPrices(e){return Oa(this,e?.marketPools,e?.coinPrices,e?.indexer)}async getPoolAddresses(e=[...M]){return Fa(this,e)}async getUserPortfolio(e){return Aa(this,e?.walletAddress??this.walletAddress,e?.indexer??!1)}};var ke=class{params;isTestnet;suiKit;address;query;utils;walletAddress;cache;constructor(e={},a){this.suiKit=a?.suiKit??H(e),this.params=e,this.walletAddress=utils.normalizeSuiAddress(e?.walletAddress??this.suiKit.currentAddress()),a?.query?(this.query=a.query,this.utils=this.query.utils,this.address=this.utils.address,this.cache=this.address.cache):(this.cache=new K(this.params,{suiKit:this.suiKit}),this.address=new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache}),this.utils=new re(this.params,{address:this.address}),this.query=new fe({walletAddress:this.walletAddress},{utils:this.utils})),this.isTestnet=e.networkType?e.networkType==="testnet":!1;}async init(e=!1,a){a&&!this.address&&(this.address=a),(e||!this.address.getAddresses())&&await this.address.read(),await this.query.init(e,this.address);}createTxBlock(e){return to(this,e)}async selectCoin(e,a,o,r=this.walletAddress){if(a==="sui"){let[s]=e.splitSUIFromGas([o]);return {takeCoin:s}}else {let s=this.utils.parseCoinType(a),c=await this.utils.selectCoins(o,s,r),[i,n]=e.takeAmountFromCoins(c,o);return {takeCoin:i,leftCoin:n}}}async selectMarketCoin(e,a,o,r=this.walletAddress){let s=this.utils.parseMarketCoinType(a),c=await this.utils.selectCoins(o,s,r),i=c.reduce((d,b)=>(d+=Number(b.balance),d),0),[n,l]=e.takeAmountFromCoins(c,Math.min(o,i));return {takeCoin:n,leftCoin:l,totalAmount:i}}async selectSCoin(e,a,o,r=this.walletAddress){let s=this.utils.parseSCoinType(a),c=await this.utils.selectCoins(o,s,r),i=c.reduce((d,b)=>(d+=Number(b.balance),d),0),[n,l]=e.takeAmountFromCoins(c,Math.min(i,o));return {takeCoin:n,leftCoin:l,totalAmount:i}}async signAndSendTxBlock(e){return await this.suiKit.signAndSendTxn(e)}moveCall(e,a,o,r){return e.moveCall(a,o,r)}};var ct=class{params;suiKit;address;builder;query;utils;cache;walletAddress;constructor(e={},a){this.params=e,this.suiKit=a?.suiKit??a?.builder?.suiKit??H(e),this.walletAddress=utils.normalizeSuiAddress(e?.walletAddress??this.suiKit.currentAddress()),a?.builder?(this.builder=a.builder,this.query=this.builder.query,this.utils=this.query.utils,this.address=this.utils.address,this.cache=this.address.cache):(this.cache=new K(this.params,{suiKit:this.suiKit}),this.address=new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache}),this.utils=new re(this.params,{address:this.address}),this.query=new fe(this.params,{utils:this.utils}),this.builder=new ke(this.params,{query:this.query}));}async init(e=!1){(e||!this.address.getAddresses())&&await this.address.read(),await this.builder.init(e,this.address),await this.query.init(e,this.address),await this.utils.init(e,this.address);}async queryMarket(){return await this.query.queryMarket()}async getObligations(e){let a=e??this.walletAddress;return await this.query.getObligations(a)}async queryObligation(e){return await this.query.queryObligation(e)}async getAllStakeAccounts(e){let a=e??this.walletAddress;return await this.query.getAllStakeAccounts(a)}async getStakeAccounts(e,a){let o=a??this.walletAddress;return await this.query.getStakeAccounts(e,o)}async getStakePool(e){return await this.query.getStakePool(e)}async getStakeRewardPool(e){return await this.query.getStakeRewardPool(e)}async openObligation(e=!0){let a=this.builder.createTxBlock();return a.openObligationEntry(),e?await this.suiKit.signAndSendTxn(a):a.txBlock}async depositCollateral(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=await this.query.getObligations(i),l=r??n[0]?.id;if(l)await c.addCollateralQuick(a,e,l);else {let[d,b,u]=c.openObligation();await c.addCollateralQuick(a,e,d),c.returnObligation(d,u),c.transferObjects([b],i);}return o?await this.suiKit.signAndSendTxn(c):c.txBlock}async withdrawCollateral(e,a,o=!0,r,s,c){let i=this.builder.createTxBlock(),n=c??this.walletAddress;i.setSender(n);let l=await i.takeCollateralQuick(a,e,r,s);return i.transferObjects([l],n),o?await this.suiKit.signAndSendTxn(i):i.txBlock}async deposit(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;s.setSender(c);let i=await s.depositQuick(a,e);return s.transferObjects([i],c),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async depositAndStake(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=this.utils.parseMarketCoinName(e),l=await this.query.getStakeAccounts(n),d=r??l[0]?.id,b=await c.depositQuick(a,e,!1);if(d)await c.stakeQuick(b,n,d);else {let u=c.createStakeAccount(n);await c.stakeQuick(b,n,u),c.transferObjects([u],i);}return o?await this.suiKit.signAndSendTxn(c):c.txBlock}async withdraw(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;s.setSender(c);let i=await s.withdrawQuick(a,e);return s.transferObjects([i],c),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async borrow(e,a,o=!0,r,s,c){let i=this.builder.createTxBlock(),n=c??this.walletAddress;i.setSender(n);let l=ye.includes(e);o&&l&&await i.unstakeObligationQuick(r,s);let d=await i.borrowQuick(a,e,r,s);return i.transferObjects([d],n),o&&l&&await i.stakeObligationWithVeScaQuick(r,s),o?await this.suiKit.signAndSendTxn(i):i.txBlock}async repay(e,a,o=!0,r,s,c){let i=this.builder.createTxBlock(),n=c??this.walletAddress;i.setSender(n);let l=ye.includes(e);return o&&l&&await i.unstakeObligationQuick(r,s),await i.repayQuick(a,e,r),o&&l&&await i.stakeObligationWithVeScaQuick(r,s),o?await this.suiKit.signAndSendTxn(i):i.txBlock}async flashLoan(e,a,o,r=!0,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let[n,l]=c.borrowFlashLoan(a,e);return c.repayFlashLoan(await o(c,n),l,e),r?await this.suiKit.signAndSendTxn(c):c.txBlock}async createStakeAccount(e,a=!0,o){let r=this.builder.createTxBlock(),s=o??this.walletAddress;r.setSender(s);let c=r.createStakeAccount(e);return r.transferObjects([c],s),a?await this.suiKit.signAndSendTxn(r):r.txBlock}async stake(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=await this.query.getStakeAccounts(e),l=r??n[0]?.id;if(l)await c.stakeQuick(a,e,l);else {let d=c.createStakeAccount(e);await c.stakeQuick(a,e,d),c.transferObjects([d],i);}return o?await this.suiKit.signAndSendTxn(c):c.txBlock}async unstake(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=await c.unstakeQuick(a,e,r);return n&&await this.utils.mergeSimilarCoins(c,n,this.utils.parseSCoinType(e),_(c)),c.transferObjects([n],i),o?await this.suiKit.signAndSendTxn(c):c.txBlock}async unstakeAndWithdraw(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=await c.unstakeQuick(a,e,r,!1),l=this.utils.parseCoinName(e);if(n){let d=c.withdraw(n,l);await this.utils.mergeSimilarCoins(c,d,this.utils.parseCoinType(l),_(c)),c.transferObjects([d],i);}else throw new Error(`No stake found for ${e}`);return o?await this.suiKit.signAndSendTxn(c):c.txBlock}async claim(e,a=!0,o,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;s.setSender(c);let i=await s.claimQuick(e,o);return s.transferObjects(i,c),a?await this.suiKit.signAndSendTxn(s):s.txBlock}async stakeObligation(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;return s.setSender(c),await s.stakeObligationWithVeScaQuick(e,a),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async unstakeObligation(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;return s.setSender(c),await s.unstakeObligationQuick(e,a),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async claimBorrowIncentive(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;s.setSender(c);let i={},n=await this.query.getObligationAccount(e);if(!n)throw new Error("Obligation not found");let l=Object.values(n.borrowIncentives).flatMap(({rewards:d})=>d.filter(({availableClaimAmount:b})=>b>0)).flatMap(({coinName:d})=>d);for(let d of l){let b=await s.claimBorrowIncentiveQuick(d,e,a);i[d]?i[d].push(b):i[d]=[b];}return s.transferObjects(Object.values(i).map(d=>{let b=d[0];return d.length>1&&s.mergeCoins(b,d.slice(1)),b}),c),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async migrateAllMarketCoin(e=!0,a=!0){let o=this.builder.createTxBlock();o.setSender(this.walletAddress);let r=[];return await Promise.all(q.map(async s=>{let c=[],i;try{let n=await this.utils.selectCoins(Number.MAX_SAFE_INTEGER,this.utils.parseMarketCoinType(s),this.walletAddress);i=n[0],n.length>1&&o.mergeCoins(i,n.slice(1));}catch(n){if(!n.toString().includes("No valid coins found for the transaction"))throw n}if(i){let n=o.mintSCoin(s,i);await this.utils.mergeSimilarCoins(o,n,this.utils.parseSCoinType(s),_(o)),c.push(n);}if(e&&G.includes(s))try{let n=await o.unstakeQuick(Number.MAX_SAFE_INTEGER,s);n&&c.push(n);}catch{}if(c.length>0){let n=c[0];c.length>1&&o.mergeCoins(n,c.slice(1)),r.push(n);}})),r.length>0&&o.transferObjects(r,this.walletAddress),a?await this.suiKit.signAndSendTxn(o):o.txBlock}async claimAllUnlockedSca(e=!0){let a=(await this.query.getVeScas({walletAddress:this.walletAddress})??[]).map(({keyObject:s})=>s);if(a.length===0)throw new Error("No veSCA found in the wallet");let o=[],r=this.builder.createTxBlock();if(r.setSender(this.walletAddress),await Promise.all(a.map(async s=>{try{let c=await r.redeemScaQuick(s,!1);if(!c)return;o.push(c);}catch{}})),o.length===0)throw new Error("No unlocked SCA found in the veSCA accounts");return o.length>1&&r.mergeCoins(o[0],o.slice(1)),await this.utils.mergeSimilarCoins(r,o[0],"sca",this.walletAddress),e?await this.suiKit.signAndSendTxn(r):{tx:r.txBlock,scaCoin:o[0]}}async mintTestCoin(e,a,o=!0,r){if(!(this.params.networkType?this.params.networkType==="testnet":!1))throw new Error("Only be used on the test network.");let c=this.builder.createTxBlock(),i=r??this.walletAddress,n=this.address.get("core.packages.testCoin.id"),l=this.address.get(`core.coins.${e}.treasury`),d=`${n}::${e}::mint`,b=c.moveCall(d,[l,a]);return c.transferObjects([b],i),o?await this.suiKit.signAndSendTxn(c):c.txBlock}};var ao=class{params;suiKit;cache;address;constructor(e,a,o){this.params=e,this.suiKit=H(e),this.cache=new K({...this.params,cacheOptions:a},{suiKit:this.suiKit,queryClient:o}),this.address=new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache});}async getScallopAddress(e){return await this.address.read(e),this.address}async createScallopBuilder(e){this.address.getAddresses()||await this.address.read();let a={...this.params,...e};return new ke(a,{query:await this.createScallopQuery(a)})}async createScallopClient(e){this.address.getAddresses()||await this.address.read();let a={...this.params,...e};return new ct(a,{builder:await this.createScallopBuilder(a)})}async createScallopQuery(e){this.address.getAddresses()||await this.address.read();let a={...this.params,...e};return new fe(a,{utils:await this.createScallopUtils(a)})}async createScallopIndexer(){return new Ce(this.params,{cache:this.cache})}async createScallopUtils(e){return this.address.getAddresses()||await this.address.read(),new re({...this.params,...e},{address:this.address,suiKit:this.suiKit})}};
21
+ var jt={defaultOptions:{queries:{staleTime:5e3,gcTime:5e3}}};var Dt={sbeth:"ethereum",sbusdt:"tether",sbwbtc:"bitcoin",weth:"ethereum",wbtc:"bitcoin",wusdc:"usdc",wusdt:"tether",wapt:"aptos",wsol:"solana",usdc:"usdc",sui:"sui",afsui:"sui",hasui:"sui",vsui:"sui",fdusd:"first-digital-usd",cetus:"cetus-protocol",sca:"scallop-2",deep:"deepbook",fud:"fud-the-pug",blub:"blub",musd:"meta-usd",ns:"suins-token",usdy:"ondo-us-dollar-yield"};var Bt="https://sui.apis.scallop.io",Nt="https://sdk.api.scallop.io",Lt=!1,it=!1,ee="675c65cd301dd817ea262e76",Ke="0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",As="0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da",Ee="0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",nt="0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",M=["usdc","sbeth","sbusdt","sbwbtc","weth","wbtc","wusdc","wusdt","sui","wapt","wsol","cetus","afsui","hasui","vsui","sca","fud","deep","fdusd","blub","musd","ns","usdy"],V=["usdc","sbeth","sbusdt","sbwbtc","weth","wbtc","wusdc","wusdt","sui","wapt","wsol","cetus","afsui","hasui","vsui","sca","fdusd","usdy"],G=["susdc","sweth","ssui","swusdc","swusdt","scetus","safsui","shasui","svsui"],q=["susdc","ssbeth","ssbusdt","ssbwbtc","ssui","swusdc","swusdt","safsui","shasui","svsui","sweth","ssca","scetus","swsol","swbtc","sdeep","sfud","sfdusd","sblub","smusd","sns","susdy"],Ft=["sbeth","sbusdt","sbwbtc"],Kt=["wusdc","wusdt","weth","wbtc","wapt","wsol"],Et=["sui"],ye=[...M],Ue=[...M,...q],Os=["supra","switchboard","pyth"],Is=["coinDecimalsRegistry","math","whitelist","x","protocol","protocolWhitelist","query","supra","pyth","switchboard","xOracle","testCoin"];var dt={usdc:6,sbeth:8,sbusdt:6,sbwbtc:8,weth:8,wbtc:8,wusdc:6,wusdt:6,sui:9,wapt:8,wsol:8,cetus:9,afsui:9,hasui:9,vsui:9,sca:9,fdusd:6,deep:6,fud:5,blub:2,musd:9,ns:6,usdy:6,susdc:6,sweth:8,ssbeth:8,ssbusdt:6,ssbwbtc:8,swbtc:8,swusdc:6,swusdt:6,ssui:9,swapt:8,swsol:8,scetus:9,safsui:9,shasui:9,svsui:9,ssca:9,sfdusd:6,sdeep:6,sfud:5,sblub:2,smusd:9,sns:6,susdy:6},vs={usdc:"usdc",sbeth:"sbeth",sbusdt:"sbusdt",sbwbtc:"sbwbtc",weth:"weth",wbtc:"wbtc",wusdc:"wusdc",wusdt:"wusdt",sui:"sui",wapt:"wapt",wsol:"wsol",cetus:"cetus",afsui:"afsui",hasui:"hasui",vsui:"vsui",sca:"sca",fdusd:"fdusd",deep:"deep",fud:"fud",blub:"blub",musd:"musd",ns:"ns",usdy:"usdy"},Ms={susdc:"susdc",ssbeth:"ssbeth",ssbusdt:"ssbusdt",ssbwbtc:"ssbwbtc",sweth:"sweth",swbtc:"swbtc",swusdc:"swusdc",swusdt:"swusdt",ssui:"ssui",swapt:"swapt",swsol:"swsol",scetus:"scetus",safsui:"safsui",shasui:"shasui",svsui:"svsui",ssca:"ssca",sfdusd:"sfdusd",sdeep:"sdeep",sfud:"sfud",sblub:"sblub",smusd:"smusd",sns:"sns",susdy:"susdy"},js={susdc:"susdc",ssbeth:"ssbeth",ssbusdt:"ssbusdt",sweth:"sweth",swusdc:"swusdc",swusdt:"swusdt",ssbwbtc:"ssbwbtc",ssui:"ssui",scetus:"scetus",safsui:"safsui",shasui:"shasui",svsui:"svsui",ssca:"ssca",swsol:"swsol",swbtc:"swbtc",sfdusd:"sfdusd",sfud:"sfud",sdeep:"sdeep",sblub:"sblub",smusd:"smusd",sns:"sns",susdy:"susdy"},Ds={susdc:"susdc",sweth:"sweth",ssui:"ssui",swusdc:"swusdc",swusdt:"swusdt",scetus:"scetus",safsui:"safsui",shasui:"shasui",svsui:"svsui"},Ve={sweth:"sui",ssui:"sui",swusdc:"sui",swusdt:"sui",scetus:"sui",safsui:"sui",shasui:"sui",svsui:"sui",susdc:"sui"},lt={sbeth:"sbeth",sbusdt:"sbusdt",sbwbtc:"sbwbtc"},xe={sui:"0x0000000000000000000000000000000000000000000000000000000000000002",cetus:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",sca:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",musd:"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722",ns:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178",weth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",wbtc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",wapt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",wsol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",afsui:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",hasui:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",usdc:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",wusdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",wusdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",fdusd:"0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a",usdy:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb",deep:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",fud:"0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1",blub:"0xfa7ac3951fdca92c5200d468d31a365eb03b2be9936fde615e69f0c1274ad3a0",sbeth:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",sbusdt:"0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068",sbwbtc:"0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b"},$={weth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",wbtc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",wusdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",wusdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",wapt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",wsol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8"},bt={vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"},fe={ssui:"0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",ssca:"0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",scetus:"0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",smusd:"0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD",sns:"0x6511052d2f1404934e0d877709949bcda7c1d451d1218a4b2643ca2f3fa93991::scallop_ns::SCALLOP_NS",sweth:"0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",swsol:"0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",swbtc:"0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",safsui:"0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",shasui:"0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",svsui:"0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",susdc:"0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",swusdc:"0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",swusdt:"0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",sfdusd:"0x6711551c1e7652a270d9fbf0eee25d99594c157cde3cb5fbb49035eb59b1b001::scallop_fdusd::SCALLOP_FDUSD",susdy:"0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY",sdeep:"0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",sfud:"0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",sblub:"0xe72f65446eabfad2103037af2d49d24599106fb44bf4c046c1e7e9acf6844dd0::scallop_blub::SCALLOP_BLUB",ssbeth:"0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",ssbusdt:"0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT",ssbwbtc:"0x08c0fe357d3a138f4552bee393ce3a28a45bebcca43373d6a90bc44ab76f82e2::scallop_sb_wbtc::SCALLOP_SB_WBTC"},We=Object.entries(fe).reduce((t,[e,a])=>(t[a]=e,t),{}),Ut=Object.entries(fe).reduce((t,[e,a])=>(t[a.split("::")[2].toLowerCase()]=e,t),{});var ft={vsui:"0x0069cddee7a5c0b1d34beb5ef0620f978096525f1830b055f38b110f40d73fbb",wbtc:"0x2078490aa37d8fb42b511e5c95e217cb957d141267e16980bc802d76b42719f7",sui:"0x27614284a8f0a699ffd35aae8f2572c937ec76771cb21b0d7930ec4491a76ed4",wusdt:"0x5b61983a19b5159ca348d291e4b595f42db70ccda32852a2ed85528aa65171e4",wapt:"0x9d5898edcd1e4abcb044273242293a9d036f6a977bf3fe57ab71f5a87c505ee6",afsui:"0xac87fde83d434554ec300c1334c9a622aa5b59e82a04334dc99e1cc1f75d4eae",hasui:"0xb9f505d532de1d6c9f3a8522a2d16f2958b75c0ed939d4f80b96f584a2a8ed5e",wusdc:"0xd241d6a7e44ac11a6689370ed9a98eec389b98b8a6695c61fddede9fa7567b90",weth:"0xd252acb058e77877810c1290564e290a8f9fcab5bc9aca2884ede8a38810cf34",sca:"0xe04e46471754b6f48d81c549ecfec09de02733715a63bec02364c6ac7c4dd2dc",cetus:"0xe65a73d11c31b2d323ad2b9f6b4bb0a3c0df9c1b212eef66c854941186a5ddc7",wsol:"0xe84bdb35b790fc7bdd1645122ac6ac0fc904531d6772c9e25904fece322c5f34"};var B={sbeth:{coinName:"sbeth",symbol:"sbETH",lendingPoolAddress:"0xaa34c938e0394e5186c7dc626ad69be96af2194b23fdc6ac1c63090e399f5ba4",collateralPoolAddress:"0xce0549a1cbe952e734f56646988e6b02bbae14667889a60e24d0d03540a6119f",borrowDynamic:"0x7bbe75e8b924229f2f2110838ff612ea66e670fa3766759515dee78f617b1ea3",interestModel:"0x9e6cae260d05155785a1904d24e6abc98368509c5752c8a9cec15a35aabc1512",riskModel:"0xcf10334cfee675ecea2d2fee37b0f7cd2835c84b8b5692a853021debe6af80ab",borrowFeeKey:"0x4298c8b6afe7a42a8e3ff93773fb9769529fe6d37e085ab411acf2ba2a44a931",supplyLimitKey:"0x812fe508b78d3e0817149c0b39976221ddb267b5cc9514e81679f9b9a2f3624c",borrowLimitKey:"0x165c274c67eda2b0d13563124741fffd0ce7d643f4c1c4b59d7e53a83796ae25",sCoinTreasury:"0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed",sCoinType:"0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",sCoinName:"ssbeth",sCoinSymbol:"ssbETH",coinMetadataId:"0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",coinType:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",sCoinMetadataId:"0xdfdd14d53ed8c7ace7cac8a0eecdfa4c2345e15d9efcbd4e1828f81a107cbe2d",decimals:8,pythFeed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",pythFeedObjectId:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"},sbusdt:{coinName:"sbusdt",symbol:"sbUSDT",lendingPoolAddress:"0x958ca02058a7dd8b00e26ed6988f45d7c2834ae2a47ee4c4a8fdedea155f18ca",collateralPoolAddress:"0x63c861f97192ceab2dabb1e74649ae87a9e36c33aaedcc43e40a811d3a39e653",borrowDynamic:"0xf1ef9a19881ed6ddeb88f361c83f37c592ec5b9c64fe715383f63ccc094be205",interestModel:"0x62c46e4667c4fa69a29030ecbc0f661c61365d02adc3810b08b11cfd8f42ca1c",riskModel:"0x59d5f3dbcd14a0aab6ee6e2879803e10b0a752119d19c4ac0bd389d71dc8c2bf",borrowFeeKey:"0xa418990ad042e97cca61830476483933b9e026970fc33451072b2627ccb31da2",supplyLimitKey:"0x93641bfb62ea40760f0c15911b4ec0eb866f8725e36b0ca9a786775d93629139",borrowLimitKey:"0x953a9b8d5353abb38db21a2cbbc5c54f8f23348895acb26cbe2c0ab61b54635d",sCoinTreasury:"0x58bdf6a9752e3a60144d0b70e8608d630dfd971513e2b2bfa7282f5eaa7d04d8",sCoinType:"0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT",sCoinName:"ssbusdt",sCoinSymbol:"ssbUSDT",coinMetadataId:"0xda61b33ac61ed4c084bbda65a2229459ed4eb2185729e70498538f0688bec3cc",coinType:"0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068::usdt::USDT",sCoinMetadataId:"0x1ce77b036043c8fdcc5cd050ed06433ae60296b194c2abf7ade8b7b7c8386d36",decimals:6,pythFeed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",pythFeedObjectId:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"},sbwbtc:{coinName:"sbwbtc",symbol:"sbwBTC",lendingPoolAddress:"0x5c4fc366c39e0969ddb8912da221cbf298656466f3b58039ff82c5ce64071ad8",collateralPoolAddress:"0x85fb30d16d66f08e8bc8013665b786d5ca04652015c5ac7461cee51c54d7d507",borrowDynamic:"0x1e25ebd25b6e1d4c765ff3172472ae21903e7f237b3efe1f6f011c93fef9f634",interestModel:"0x5f7bff8aa04cc6790a88c51014d5b6feadf6441e4c40a496d67705c2856183b3",riskModel:"0xb62fb27d5f1305ed94092ff4fd7015a71420bd2b47542599d361a1e8b88c46ad",borrowFeeKey:"0x4ede8076a8d83315c49df8db9e6774d55ba149fcfb4a7a38845cd76c34f590d1",supplyLimitKey:"0x4f5dfd04f32cc7ba8fba665486838fd3a291324980460d31bf79918a6b68a112",sCoinTreasury:"0x21db1d3b310d32b5fb1383591103bfea57c6aed62ef6d3b6d469bab752b8681f",borrowLimitKey:"0xc32b0a82ae08248912c39da03c1b347bcfbc7b63da0385e24306c4b97777da56",sCoinType:"0x08c0fe357d3a138f4552bee393ce3a28a45bebcca43373d6a90bc44ab76f82e2::scallop_sb_wbtc::SCALLOP_SB_WBTC",sCoinName:"ssbwbtc",sCoinSymbol:"ssbwBTC",coinMetadataId:"0x53e1cae1ad70a778d0b450d36c7c2553314ca029919005aad26945d65a8fb784",coinType:"0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC",sCoinMetadataId:"0x83d3d44ca57f9b1657065865caa497188d6fc1429f0ca846a51a9058f066f591",decimals:8,pythFeed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",pythFeedObjectId:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"},usdc:{coinName:"usdc",symbol:"USDC",lendingPoolAddress:"0xd3be98bf540f7603eeb550c0c0a19dbfc78822f25158b5fa84ebd9609def415f",collateralPoolAddress:"0x8f0d529ba179c5b3d508213003eab813aaae31f78226099639b9a69d1aec17af",borrowDynamic:"0x77837ecd4f26fac9a410fff594f2c0bd3288904a15492ca77cb8a52684dbb866",interestModel:"0xaae3f179d63009380cbdcb9acb12907afc9c3cb79cc3460be296a9c6d28f3ff3",riskModel:"0x198b24db213bfeb8b3c80ae63dde92e32fd24984d25da8233ff777b851edd574",borrowFeeKey:"0xd37c5316cfe0a5967d14264fa6b423f880518b294a1ee6581ccbb49ccc401fb8",supplyLimitKey:"0x4be9ae54ac4d320f4f9c14cae78cb85c8e0e67791dd9bdba6d2db20614a28a24",borrowLimitKey:"0x6b01093cba95b835181f00e3a2c31ed8dfc8d64fe3db0fb80933a09f66e1ccf1",spool:"0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",spoolReward:"0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166",sCoinTreasury:"0xbe6b63021f3d82e0e7e977cdd718ed7c019cf2eba374b7b546220402452f938e",sCoinType:"0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",sCoinName:"susdc",sCoinSymbol:"sUSDC",coinMetadataId:"0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",coinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",sCoinMetadataId:"0x763a21eba338e00bc684aaad80491c89eea5f247b59c47df45b17610c9ad58f2",spoolName:"susdc",decimals:6,pythFeed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",pythFeedObjectId:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"},weth:{coinName:"weth",symbol:"wETH",lendingPoolAddress:"0xc8fcdff48efc265740ae0b74aae3faccae9ec00034039a113f3339798035108c",collateralPoolAddress:"0xad7ced91ed6e7f2b81805561eee27fa6f3e72fdae561077334c7248583db4dbf",borrowDynamic:"0xd1578e1d1c9c82eb4c5bf14beece8142a67a683b2647d7276e92984119fc1445",interestModel:"0xa1dc08541cd2cb7cfb4e56272292d5c6a4780e80fd210c58abffae98268b5ed9",riskModel:"0x9f05a25fd33a9e8cf33962126b175d038e184f0ee1b87dc41d4cedbe6abebbe5",borrowFeeKey:"0x29672ba8ab4625b8181d8ed739e5344de22a97d417748c4d1276c7379283d7a3",supplyLimitKey:"0x2b957941bdc9432bbc83ab74dc194b6ebb7c927bc4c6926a5492b5503499e509",borrowLimitKey:"0x51f256d87e51a7ca2b1c482923096f4b6dac6beac89d8ecf4c65b7d5764115d6",spool:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",spoolReward:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077",sCoinTreasury:"0x4b7f5da0e306c9d52490a0c1d4091e653d6b89778b9b4f23c877e534e4d9cd21",sCoinType:"0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",sCoinName:"sweth",sCoinSymbol:"swETH",coinMetadataId:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",coinType:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",sCoinMetadataId:"0x077d0fd835b559e5b4bb52641f7627ddbf8b200f9b2cf4e28b3514da2a32a4dd",spoolName:"sweth",decimals:8,pythFeed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",pythFeedObjectId:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"},wbtc:{coinName:"wbtc",symbol:"wBTC",lendingPoolAddress:"0x65cc08a5aca0a0b8d72e1993ded8d145f06dd102fd0d8f285b92934faed564ab",collateralPoolAddress:"0x1aa4e5cf743cd797b4eb8bf1e614f80ae2cf556ced426cddaaf190ffcd0e59c3",borrowDynamic:"0x6f97dcf54158a5d08f359a213a41e347bc1e6316414288dc1e1b674dc008742e",interestModel:"0x582b915cca0ffca9576a7cedd505d0fd7cb146e9521ccf10e7453ed93705684d",riskModel:"0x1d0a242bf1682e259112239720da19d3155dd99d70b1f4b3b973eecbab858911",borrowFeeKey:"0x654ab7e8ff6d9ef04da697e1f12ca21eaf72ebb495daf877e0776e65187dcb92",supplyLimitKey:"0xac3b0d17df9f98aa2798c54405cf1d8d5356ef22f76f02d150cbe5195e9f3a36",borrowLimitKey:"0x231e13ba6b1eb26c562f4a125778d3152f9a77e31f124bd6012e234a73012169",sCoinTreasury:"0xe2883934ea42c99bc998bbe0f01dd6d27aa0e27a56455707b1b34e6a41c20baa",sCoinType:"0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",sCoinName:"swbtc",sCoinSymbol:"swBTC",coinMetadataId:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",coinType:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",sCoinMetadataId:"0x1ba5904dae41699683da767c7a97785a55c51ec1253498c8fe1980169a96523d",decimals:8,pythFeed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",pythFeedObjectId:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"},wusdc:{coinName:"wusdc",symbol:"wUSDC",lendingPoolAddress:"0x2f4df5e1368fbbdaa5c712d28b837b3d41c2d3872979ccededcdfdac55ff8a93",collateralPoolAddress:"0x94cf69158114c5b242d2ee5d0149a335bddf3b9c9a6ba919cca58097a4814980",borrowDynamic:"0x0464d117908b52fc75f7f85322a47caa078ef56f48681bcfdcb630a66f2591e6",interestModel:"0xd72e2b5ba486752939d6dfb86a67b86ce9a60c83cb8fb893caac54a0f112577f",riskModel:"0xb74035de8f70c1531ceb8e2e8c152d6b8db24c8a9fe7bbf6f75dbf7c6700a0a3",borrowFeeKey:"0x76dcf1acbd9951fe3d1a3fe28403fec089ffe53a7c7d6c77e3ea97033a63581a",supplyLimitKey:"0x7b302196907e87c5d5872f2e6f40628d110170f994e0e08bc607bded001958c3",borrowLimitKey:"0x97f1502ce994db0bcb15aac1760d174def9e88e97cd2262eed54521ee2c19f81",spool:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",spoolReward:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8",sCoinTreasury:"0x50c5cfcbcca3aaacab0984e4d7ad9a6ad034265bebb440f0d1cd688ec20b2548",sCoinType:"0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",sCoinName:"swusdc",sCoinSymbol:"swUSDC",coinMetadataId:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",coinType:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",sCoinMetadataId:"0xdc0595d068621d630f3c7c364dd257f7e3f8079e00c31c8d18755a033c15ae93",spoolName:"swusdc",decimals:6,pythFeed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",pythFeedObjectId:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"},wusdt:{coinName:"wusdt",symbol:"wUSDT",lendingPoolAddress:"0xfbc056f126dd35adc1f8fe985e2cedc8010e687e8e851e1c5b99fdf63cd1c879",collateralPoolAddress:"0x2260cb5b24929dd20a1742f37a61ff3ce4fde5cdb023e2d3ce2e0ce2d90719e3",borrowDynamic:"0xb524030cc8f7cdbf13f1925a0a2b5e77cc52bab73b070f42c5e510f6083da1ba",interestModel:"0x92f93c4431b4c51774d6d964da516af2def18b78f49dbbf519e58449a8ba4659",riskModel:"0xdf89d66988cb506ddeff46f5dfd1d11aaece345e9a05a0c6a18a0788647de2a7",borrowFeeKey:"0xda8f8b3522fc4086eae4ae7ce8844d60aa0dc3eab8ffc91fe93e922a72639b2d",supplyLimitKey:"0xa9cb5ebb90ca6e808a2bd7728cca4a6fa8b565d4deeda96eb23c8322c477c24e",borrowLimitKey:"0xa3278564fc613680a69c10972a0299965bf6e12e9ac171388842fc958de0f90e",spool:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",spoolReward:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080",sCoinTreasury:"0x1f02e2fed702b477732d4ad6044aaed04f2e8e586a169153694861a901379df0",sCoinType:"0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",sCoinName:"swusdt",sCoinSymbol:"swUSDT",coinMetadataId:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",coinType:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",sCoinMetadataId:"0x171d0f1ca99d5fefb8b2e40b89899bacdc5417a783906ae119b9cb1c113d59ae",spoolName:"swusdt",decimals:6,pythFeed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",pythFeedObjectId:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"},sui:{coinName:"sui",symbol:"SUI",lendingPoolAddress:"0x9c9077abf7a29eebce41e33addbcd6f5246a5221dd733e56ea0f00ae1b25c9e8",collateralPoolAddress:"0x75aacfb7dcbf92ee0111fc1bf975b12569e4ba632e81ed7ae5ac090d40cd3acb",borrowDynamic:"0xbf68e6159c99dcaf87717385f1143d2891c2d19663bd51f0bc9b6909e4bb7c27",interestModel:"0x0dad9baa89b863c15a0487575de7cc428b01f1aa3998ad7a9e9752d96e83ffa9",riskModel:"0xcd6675864690b5648a6e309f2f02a66914b2b2bd9c31936f4e0f7fc0f792bc86",borrowFeeKey:"0xda5ede87a05c0677b17511c859b22d0a2b0229ee374d5d7a1274cb836b9fe5f8",supplyLimitKey:"0x0602418e66fb7a73fa997077bd66f248ad5b090d43344a14b9f1db598ecc1d47",borrowLimitKey:"0x2b33a7efdcf6a6df24f4d8a356dd52f58d75bc023c3f171d99502d4d008b53f0",spool:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",spoolReward:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9",sCoinTreasury:"0x5c1678c8261ac9eec024d4d630006a9f55c80dc0b1aa38a003fcb1d425818c6b",sCoinType:"0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",sCoinName:"ssui",sCoinSymbol:"sSUI",coinMetadataId:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",coinType:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",sCoinMetadataId:"0xac724644f481f4870ecdc29b9549aa8ea5180f10827c0d97b493f9f65a91455d",spoolName:"ssui",decimals:9,pythFeed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythFeedObjectId:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"},wapt:{coinName:"wapt",symbol:"wAPT",lendingPoolAddress:"0xca8c14a24e0c32b198eaf479a3317461e3cc339097ce88eaf296a15df8dcfdf5",collateralPoolAddress:"0xde33f9ac5bb0ed34598da4e64b4983832716ced65f172fbf267bcfe859c4ad9c",borrowDynamic:"0xadda873fb6bf68e1ba3f2dfaa51cf75d4a1bef73d9627bd36e77d2baecb1f2dc",interestModel:"0xa4a29d07beecea5eb0c59745bb89d7a1380c6f206a7f1ca37046e05db6025c43",riskModel:"0x7ada83b473af30aed50d187de82a0912878b53ade7ac30e11ce23953cf739d84",borrowFeeKey:"0x768735df587c7e0f141dcd035fbbcbf9d2149a7b23888baed4e2baa160fa2eeb",coinMetadataId:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",coinType:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37::coin::COIN",decimals:8,pythFeed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",pythFeedObjectId:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"},wsol:{coinName:"wsol",symbol:"wSOL",lendingPoolAddress:"0x985682c42984cdfb03f9ff7d8923344c2fe096b1ae4b82ea17721af19d22a21f",collateralPoolAddress:"0xdc1cc2c371a043ae8e3c3fe2d013c35f1346960b7dbb4c072982c5b794ed144f",borrowDynamic:"0xe3f301e16d4f1273ea659dd82c5c3f124ca5a5883a5726c7ec0f77bf43b70895",interestModel:"0xd95affaee077006b8dbb4b108c1b087e95fc6e5143ef0682da345d5b35bc6356",riskModel:"0x8e0da6358073144ec3557400c87f04991ba3a13ca7e0d0a19daed45260b32f16",borrowFeeKey:"0x604bffbc817e8e12db15f2373a9e15b2c7adbc510649cdf2cc62a594af90671c",supplyLimitKey:"0xbd419b536b3f9c9d4adfc20372ca6feedc53cc31798ac860dbfc847bcf05f54b",borrowLimitKey:"0x77d453c51948f32564c810bc73f9ba7abde880657b7f89e1c8a3bc28fa36ee87",sCoinTreasury:"0x760fd66f5be869af4382fa32b812b3c67f0eca1bb1ed7a5578b21d56e1848819",sCoinType:"0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",sCoinName:"swsol",sCoinSymbol:"swSOL",coinMetadataId:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",coinType:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN",sCoinMetadataId:"0xee202d2013fc09453d695c640088ee08f14afc8f1ae26284b4ebbc4712ff1ba5",decimals:8,pythFeed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",pythFeedObjectId:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"},cetus:{coinName:"cetus",symbol:"CETUS",lendingPoolAddress:"0xc09858f60e74a1b671635bec4e8a2c84a0ff313eb87f525fba3258e88c6b6282",collateralPoolAddress:"0xe363967e29b7b9c1245d6d46d63e719de8f90b37e3358c545b55d945ea0b676a",borrowDynamic:"0xcc725fd5d71990cdccc7e16c88a2abde6dbcd0bf6e805ccc1c0cb83a106bbf4e",interestModel:"0x2f1258aab89d04d11834121599ab1317dfecb582b4246f106df399911125845a",riskModel:"0x03fed312dbba624dff5edaf4736891a1c7d864445fd268e7572b42ec7381132e",borrowFeeKey:"0xdf5fb0cc4ebbf5eebfae23dfa5b266f6a58c18a894a13054ae60c0eb6e79c382",supplyLimitKey:"0xa5ea3d4bf663d7bc667e82b40a98923590ff3851b9ea8e7afbc26c588c7007d3",borrowLimitKey:"0xf44218a5f0feb128e6fbe74b91d1e7e9ef859bd23a576ff0de151829e015a157",spool:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",spoolReward:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f",sCoinTreasury:"0xa283c63488773c916cb3d6c64109536160d5eb496caddc721eb39aad2977d735",sCoinType:"0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",sCoinName:"scetus",sCoinSymbol:"sCETUS",coinMetadataId:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",coinType:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",sCoinMetadataId:"0xf022d041455a038d762a091f7a9e9521211f20501bcf8b6913ef5493a023218f",spoolName:"scetus",decimals:9,pythFeed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",pythFeedObjectId:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"},afsui:{coinName:"afsui",symbol:"afSUI",lendingPoolAddress:"0x9b942a24ce390b7f5016d34a0217057bf9487b92aa6d7cc9894271dbbe62471a",collateralPoolAddress:"0xe5e56f5c0e3072760b21f9d49a5cc793f37d736c412a9065c16e1265c74e6341",borrowDynamic:"0x1c76d4df9506154a117bbac0f5e005d8a9c0d9ca60e3fe0c9d080006f6f54e81",interestModel:"0xb155c536b37c9601baaa734ad1dd0ef335b2b597aceb8d3ecee41a43f94dcd70",riskModel:"0x75371b1d04b5bebc0738af548ba64ea658e74f78228ec8014336d8eebb992312",borrowFeeKey:"0xabc6422db2d4ee01635ddaeaa44ba68370eebd785d2c4632515f841ae9bc47d9",supplyLimitKey:"0x61a2054eb37f543c0d774da57f2c9542aad8d79a197f748ac08ef5df6cc47028",borrowLimitKey:"0x4459498a043872cd107ea917493fee0baf2d37a273c7538e1d6581cc61b92af8",spool:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",spoolReward:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e",sCoinTreasury:"0x55f4dfe9e40bc4cc11c70fcb1f3daefa2bdc330567c58d4f0792fbd9f9175a62",sCoinType:"0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",sCoinName:"safsui",sCoinSymbol:"safSUI",coinMetadataId:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",coinType:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc::afsui::AFSUI",sCoinMetadataId:"0xfd81c4d1b4d9d1b8c522e91121d22e94759386b29eafe1cc3888ca0ebe369b9e",spoolName:"safsui",decimals:9,pythFeed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythFeedObjectId:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"},hasui:{coinName:"hasui",symbol:"haSUI",lendingPoolAddress:"0x7ebc607f6bdeb659fb6506cb91c5cc1d47bb365cfd5d2e637ea765346ec84ed4",collateralPoolAddress:"0xad9ed40d6486e4c26cec7370dffce8dc4821eb79178250b5938a34ccafd61e6d",borrowDynamic:"0x13ec1220b41c6e0f11dd6113199a2aff8e4cf2223047b5bd06d7a3ed5d23e1d2",interestModel:"0x987c58cbe48096618f4d9d83e0bde2ff638ce4753aba40dab7c302ac3e4b4519",riskModel:"0xe42d8497d423eca0d8df89850c2d77d3644e7f54a2d28f59c315903ea5ec8dec",borrowFeeKey:"0xef885c382d461c4fb14d1f3b3758c380c78a1a4b2a3d2fafe6e8649a60fdd7ab",supplyLimitKey:"0xc7385b1703693cbbc9c97227fe3fd5c91d7afda00e0da69d942c3260d78e45e0",borrowLimitKey:"0x65333e606eead786a999c8267bc9886b0fdbc298a8a8635a48a9c9b8838d9395",spool:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",spoolReward:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66",sCoinTreasury:"0x404ccc1404d74a90eb6f9c9d4b6cda6d417fb03189f80d9070a35e5dab1df0f5",sCoinType:"0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",sCoinName:"shasui",sCoinSymbol:"shaSUI",coinMetadataId:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",coinType:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",sCoinMetadataId:"0x0a2a4a25aac50ac79210d710f93cb22db58bc6ee22f213364dda9a709cab2189",spoolName:"shasui",decimals:9,pythFeed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythFeedObjectId:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"},vsui:{coinName:"vsui",symbol:"vSUI",lendingPoolAddress:"0xda9257c0731d8822e8a438ebced13415850d705b779c79958dcf2aeb21fcb43d",collateralPoolAddress:"0x4435e8b8ec2a04094d863aa52deb6ab6f8f47ed8778f4d9f1b27afc4a6e85f1e",borrowDynamic:"0x8eae703505246f975e83f5af24780e5f1b89ef403d5a80ea15534624d6f1a503",interestModel:"0xaf6a52b5eaaa5af4d9e49d83de0d504c295ae21f3a37560c3f48e0e15a1d4625",riskModel:"0x1e862f27a6bd47c3041159a5cf392f549485c6605ed9aa937f16ecc951e82e65",borrowFeeKey:"0x5230de0f41a5e4c05b3d1187a90a9eeab491cec97b08b71512d9785e8af36aa6",supplyLimitKey:"0x1d40e34d1f365ec431fff020bd75c16b14b340b3ed6c139803cc15c2384621b2",borrowLimitKey:"0x4eb206b4417642cfc1b02f80bb5f5e366af2af2f9fb4ea4f4e898ae82367f8a0",spool:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",spoolReward:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a",sCoinTreasury:"0xc06688ee1af25abc286ffb1d18ce273d1d5907cd1064c25f4e8ca61ea989c1d1",sCoinType:"0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",sCoinName:"svsui",sCoinSymbol:"svSUI",coinMetadataId:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",coinType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",sCoinMetadataId:"0xa96cc21ddfb6486be4a96cda0c58734e4ddea2a8c04984f9e6121d8fae997ddf",spoolName:"svsui",decimals:9,pythFeed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",pythFeedObjectId:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"},sca:{coinName:"sca",symbol:"SCA",lendingPoolAddress:"0x6fc7d4211fc7018b6c75e7b908b88f2e0536443239804a3d32af547637bd28d7",collateralPoolAddress:"0xff677a5d9e9dc8f08f0a8681ebfc7481d1c7d57bc441f2881974adcdd7b13c31",borrowDynamic:"0x4e24f52edd739dab59ca4c6353ca430b7ce57e7f333abd0957958570a7cd09ca",interestModel:"0xbdcd48cf5b1a814911dc2d5c72d393a980c87820199fe5d799289ce94f4c47df",riskModel:"0xc437c24b67b8e2676907700fa395af337ad6463d2c0b4f4fa2e9276414026089",borrowFeeKey:"0xee55ba0f9800a62d9e7aef667f87e658258f41814d2c9fa02e25590671b4e5ad",supplyLimitKey:"0x8dd938856b972a10ea27ecab2af7ed78e48fc5f6ccedaf2b2119959f747dc2e3",borrowLimitKey:"0x04c7de61c5b42972f9bf6a8b1848e5fea2d037ee8deba81741ecd4a70aa80d30",sCoinTreasury:"0xe04bfc95e00252bd654ee13c08edef9ac5e4b6ae4074e8390db39e9a0109c529",sCoinType:"0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",sCoinName:"ssca",sCoinSymbol:"sSCA",coinMetadataId:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",coinType:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",sCoinMetadataId:"0x27e3877491b308dfac46fb3d9f7dfa6a1e8b7dc3c374e92ecda7976055746964",decimals:9,pythFeed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",pythFeedObjectId:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"},fud:{coinName:"fud",symbol:"FUD",lendingPoolAddress:"0xefed2cbe76b344792ac724523c8b2236740d1cea2100d46a0ed0dc760c7f4231",borrowDynamic:"0x14367ddca30e2860cb89ed4eaca20c7ece260c5d59dd9990d2c85a8321326acb",interestModel:"0x2600ac100ef154eb2329ffd3aad47aca308ff9f9348de3e8e94aaeb906ec2303",borrowFeeKey:"0xa87e8b26e07ff35ac9fb57adcc779be2883080fc7d12de2d9e7e16d8d8d5e529",supplyLimitKey:"0xf98419aecc37a3c5de716f8ec590f8991a5be34da72ce1a2da09531ff45adf7d",borrowLimitKey:"0x3d928a001c453c50004baa54e14b0a0e1b0907d9c613dfd76064fd7ed4e8beb8",isolatedAssetKey:"0xfcb533e9e4e31f9c9f32d6cbf7fbb3425f1d60474e229a363a2dc7f835d587e2",sCoinTreasury:"0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867",sCoinType:"0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",sCoinName:"sfud",sCoinSymbol:"sFUD",coinMetadataId:"0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e",coinType:"0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1::fud::FUD",sCoinMetadataId:"0x4e03390de36b8c84e0a8297d3d0d08a8a34bed93787e37fcb26bfc26df33226c",decimals:5,pythFeed:"6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",pythFeedObjectId:"0x4531c3ed0d22f21f5fce882905372006c9aafa30f01db03b789e95a6c50de7b2"},blub:{coinName:"blub",symbol:"BLUB",lendingPoolAddress:"0x4dede1d8eda98647c3fc9838e94a890b73ca37a20764087eb78ba0473edea1a5",borrowDynamic:"0xb2e9df6917ff3cb93fc4361102504c2d225913b3860458ef40f83b370601bec2",interestModel:"0xec07bfcf93df52d1c0dabecc88b1ee66445a2fda6b98378c19d8e029022f2012",borrowFeeKey:"0x59b820845932c1f151793b1c6e605ad993535784ccfaa83e709207d6aed3ab99",supplyLimitKey:"0xc25e930484a10498a53562cfb87da47280e842564d455f25e5b80a913002d5a0",borrowLimitKey:"0xaf4560140b2c6906befd546cc556f7c459964e7c31e20a6e1ab992bbc6d12b7f",isolatedAssetKey:"0x30a8f1dbf9dc05dae26c25fac6dfa80fa2d886e05e61cefc697b94959dd75007",sCoinTreasury:"0x87d34361dfd0e2accc946684d10b176484f348892f6cc51a829418040c4700e1",sCoinType:"0xe72f65446eabfad2103037af2d49d24599106fb44bf4c046c1e7e9acf6844dd0::scallop_blub::SCALLOP_BLUB",coinMetadataId:"0xac32b519790cae96c3317457d903d61d04f1bc8f7710096d80fcba72c7a53703",coinType:"0xfa7ac3951fdca92c5200d468d31a365eb03b2be9936fde615e69f0c1274ad3a0::BLUB::BLUB",sCoinMetadataId:"0xfa11263cb39de80b9e224d7e0391866a7e779d3d62451de82a91ba601bfb1ce3",decimals:2,pythFeed:"5fc11ffe4975b624be495be038da30e30bee2004d8ae6282b5364577ef4ca92c",pythFeedObjectId:"0x246658c3324f2477568c78cca622518fbc6969a004b841d81409d24a7ec39b18"},deep:{coinName:"deep",symbol:"DEEP",lendingPoolAddress:"0xf4a67ffb43da1e1c61c049f188f19463ea8dbbf2d5ef4722d6df854ff1b1cc03",borrowDynamic:"0x95e00d7466f97a100e70f08bd37788dc49335796f6f49fab996d40dd0681c6d3",interestModel:"0x4143c298506a332d92ea8a995e6f3991ee3215f58f6fc6441752835d275b9a69",borrowFeeKey:"0xb14ee43f4ad2a2c40bac8c4406a401690e93c982e289cf3802fedf74a159cab2",supplyLimitKey:"0x599528fdfdc253e90dfd0acf4f4a166b391e2aac1ca6528abbff63225b548fee",borrowLimitKey:"0xf4217e8ef9d9c32e8992092e910a77535a8124c19b8a762a673f227f5f765a4e",isolatedAssetKey:"0x208d3a24ba369dcfc8f0387333d1512b98199eb150d2f2a69359ff708cf761e3",sCoinTreasury:"0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",sCoinType:"0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",sCoinName:"sdeep",sCoinSymbol:"sDEEP",coinMetadataId:"0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",sCoinMetadataId:"0x2443014594a500a9119e11c6c6a86e865834f496c4614280ce8cace33c0b072e",decimals:6,pythFeed:"29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",pythFeedObjectId:"0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed"},fdusd:{coinName:"fdusd",symbol:"FDUSD",lendingPoolAddress:"0x4f46051a01f05c3ad9aecf29a771aad5c884e1a1888e08d7709085e3a095bc9c",collateralPoolAddress:"0x4f6647a9afcfdb62bb9b27e4d1cb7bd7130aca1b4f13fa7164453c869c1681ae",borrowDynamic:"0x4ddcf19b6290a8b048ecb314b14ef7f52c1c5b9ddc9259a2a242cd91d681a085",interestModel:"0xb57a33706b29d2d253c74c1c0869e6e20da99036338d2b0b7235ab41621ee9dd",riskModel:"0xd65fb21758dc1e6184940a1a27efb13228d7cf5e19f6dcca06cc2d996af4a6b9",borrowFeeKey:"0xafe673a27747b063fa918d2dfe47794e44af553737ac562c2a63186539a07f45",supplyLimitKey:"0x730e0785ba056a7a95f4a6959371a598d7fe782e81c40785c79982ced4cf4e35",borrowLimitKey:"0x1630c6954918a06fe56312afb8958366c5ed7af653dae0e32c09d088da38577e",sCoinTreasury:"0xdad9bc6293e694f67a5274ea51b596e0bdabfafc585ae6d7e82888e65f1a03e0",sCoinType:"0x6711551c1e7652a270d9fbf0eee25d99594c157cde3cb5fbb49035eb59b1b001::scallop_fdusd::SCALLOP_FDUSD",sCoinName:"sfdusd",sCoinSymbol:"sFDUSD",coinMetadataId:"0xdebee5265a67c186ed87fe93303d33dfe1de53e3b4fd7d9329c2852860acd3e7",coinType:"0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a::fdusd::FDUSD",sCoinMetadataId:"0xb1529a3b5e5831d19a722493eec19785f613945d3dc984602d44a418f990d73f",decimals:6,pythFeed:"ccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",pythFeedObjectId:"0x5f6583b2b0fe1ecf94aaffeaab8a838794693960cea48c0da282d5f4a24be027"},musd:{coinName:"musd",symbol:"mUSD",lendingPoolAddress:"0x0565254220e7ca857a87341898bdebeb9e5d6f8f8fe68eb25dd3e257d41a0b0c",collateralPoolAddress:void 0,borrowDynamic:"0x9448dc2ae8054d5b735fd617fb4ca57046ddc98bfff91ce31de1df452f3bf695",interestModel:"0xc3b57c57814e22ac42c7062922a0437ebf40495e37aee32cbb94cba0693970ed",riskModel:void 0,borrowFeeKey:"0xfdb02d76dc67553fd15f42f1de49ca79cd2812bdaf8bcd079cfe17ce23ed9fc4",supplyLimitKey:"0x340aaae070f9489b59c4257610babf6f170abf43fbe51cf7de1e2e04492f6823",borrowLimitKey:"0x2af09dd392e5fa0bb1895b021d871f42dd1bdf4843173836d9611c8c6484031a",isolatedAssetKey:"0xe10f03b13d2cdb46543130bafaf1884c9a5a7712b5932aae15b2f8d4fc31a774",sCoinTreasury:"0xadfd554635ccc87e992f23ca838f0f16c14874e324a1b79b77f6bfe118edea9f",sCoinType:"0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD",sCoinName:"smusd",sCoinSymbol:"smUSD",coinMetadataId:"0xc154abd271b24032a2c80d96c1b82109490bb600ed189ef881d8c9467ed44a4f",coinType:"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",sCoinMetadataId:"0xb924f8c3d4b993172d4fc553c1ea242e8ca539e83edc3edaf5512ae44dfa6863",decimals:9,pythFeed:"2ee09cdb656959379b9262f89de5ff3d4dfed0dd34c072b3e22518496a65249c",pythFeedObjectId:"0x72fbf053d6009a40cff74d9708592bd7b86673a0e7b252077e1aa53390976584"},ns:{coinName:"ns",symbol:"NS",lendingPoolAddress:"0x98491693e99905ce243655f1d2dc86b62d7c9c330985ee71d16760b63601708c",borrowDynamic:"0x320035fc3bdba3106f550531523b5eab623fc3b42639e6b27623838d121ef64a",interestModel:"0x6e3c7426f922c6e8538331d36918dc092a53e46d4bb478c36d09b40d0fddc3bf",borrowFeeKey:"0x9d99ae707899e1034401e8fb8524573a2603ac71a6d367f65d06fbb0ca586950",supplyLimitKey:"0xe6e87903708cbc09c8d5b005ddbec036efde2c58de4b52d4d8b9f10cb5c9a92b",borrowLimitKey:"0x3e958a562c6062e39559bb72feb2e4fa5595d629fcafe36a3a40546e0934bd8a",isolatedAssetKey:"0x73ebd841fdbe2a4b4f87fd58a729cba0a7a5871962dc04f5123339d1e0e64de8",sCoinTreasury:"0xa178587907006828839f312e6b5afa69e8aa9c66bdf06b2a5918bd8d913488e3",sCoinType:"0x6511052d2f1404934e0d877709949bcda7c1d451d1218a4b2643ca2f3fa93991::scallop_ns::SCALLOP_NS",sCoinName:"sns",sCoinSymbol:"sNS",coinMetadataId:"0x279adec041f8ec5c2d419abf2c32713ae7930a9a3a1ff244c88e5ceced40db6e",coinType:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178::ns::NS",sCoinMetadataId:"0x898320fe66409bdcf580e2a5764217aa51a6fb26890645efff7011b54117e6df",decimals:6,pythFeed:"bb5ff26e47a3a6cc7ec2fce1db996c2a145300edc5acaabe43bf9ff7c5dd5d32",pythFeedObjectId:"0xc6352e1ea55d7b5acc3ed690cc3cdf8007978071d7bfd6a189445018cfb366e0"},usdy:{coinName:"usdy",symbol:"USDY",lendingPoolAddress:"0xd7a8b75ffcd9f22a0108c95ae735b864e117a28d0bf6d596eb4ccd9d6213210d",collateralPoolAddress:"0x518a921e61aa11a0252bf70d5b2e378e886163a558e07b32424f3930ee0a464a",borrowDynamic:"0xaddf0b9b382f1ace39916383d24e91b5fd6ff49c5ae0c9400c173fd448e173c8",interestModel:"0x85781ba1b952743fbc7ba436e165721a189bd724d65cf4abb78b9fe924e6e2eb",riskModel:"0x96923670c98ec791fefd8074b87cd0087da60e4dbfca9423049fc805e703ec50",borrowFeeKey:"0x1904f3f2b76bbfa6ba6184cace93ee605691333a35525f1d6648a1509411e4d2",supplyLimitKey:"0x2f3a58bcf68426cc998b7a9782dccf87351c44efbe655b13a0ac753d6f34a034",borrowLimitKey:"0xe8ade192f71fbe30d2ed1d246241c370d2882ff78ad312a3382ca8e2c73c386d",sCoinTreasury:"0xc8c5339fb10d9ad96f235fb312bda54df351549a3302e7fa7fd5d1725481604f",sCoinType:"0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY",sCoinName:"susdy",sCoinSymbol:"sUSDY",coinMetadataId:"0xd8dd6cf839e2367de6e6107da4b4361f44798dd6cf26d094058d94e4cee25e36",coinType:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY",sCoinMetadataId:"0x098c4c77bd29ec803a11fa2b2d684577c6a09e75b77e0a7ab59b8b785fb492df",decimals:6,pythFeed:"e3d1723999820435ebab53003a542ff26847720692af92523eea613a9a28d500",pythFeedObjectId:"0x773cb390165e227cbd5bd924edaeff7d33b1b78aac045c4903ed9be7e711741a"}};var Te={testnet:["https://hermes-beta.pyth.network"],mainnet:["https://hermes.pyth.network","https://scallop.rpc.p2p.world"]},Pe={usdc:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",sbeth:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",sbusdt:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",sbwbtc:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",weth:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",wbtc:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",wusdc:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",wusdt:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",sui:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",wapt:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",wsol:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",cetus:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",afsui:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",hasui:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",vsui:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",sca:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",fdusd:"ccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",deep:"29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",fud:"6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",blub:"5fc11ffe4975b624be495be038da30e30bee2004d8ae6282b5364577ef4ca92c",musd:"2ee09cdb656959379b9262f89de5ff3d4dfed0dd34c072b3e22518496a65249c",ns:"bb5ff26e47a3a6cc7ec2fce1db996c2a145300edc5acaabe43bf9ff7c5dd5d32",usdy:"e3d1723999820435ebab53003a542ff26847720692af92523eea613a9a28d500"};var N={api:{getAddresses:t=>["api","getAddresses",{addressesId:t}],getMarket:()=>["api","getMarket"],getSpools:()=>["api","getSpools"],getBorrowIncentivePool:()=>["api","getBorrowIncentivePools"],getTotalValueLocked:()=>["api","getTotalValueLocked"]},rpc:{getInspectTxn:(t,e,a)=>["rpc","getInspectTxn",{queryTarget:t,args:JSON.stringify(e),typeArgs:a?JSON.stringify(a):void 0}],getObject:(t,e)=>["rpc","getObject",{objectId:t,options:e}],getObjects:t=>["rpc","getObjects",{objectIds:JSON.stringify(t??void 0)}],getOwnedObjects:t=>["rpc","getOwnedObjects",{walletAddress:t?.owner,cursor:t?.cursor??void 0,options:t?.options??void 0,filter:JSON.stringify(t?.filter??void 0),limit:t?.limit??void 0}],getDynamicFields:t=>["rpc","getDynamicFields",{parentId:t?.parentId,cursor:t?.cursor??void 0,limit:t?.limit??void 0}],getDynamicFieldObject:t=>["rpc","getDynamicFieldObject",{parentId:t?.parentId,name:JSON.stringify(t?.name??void 0)}],getTotalVeScaTreasuryAmount:(t,e)=>["rpc","getTotalVeScaTreasuryAmount",{refreshArgs:JSON.stringify(t),vescaAmountArgs:JSON.stringify(e)}],getAllCoinBalances:t=>["rpc","getAllCoinBalances",{owner:t}],getNormalizedMoveFunction:t=>["rpc","getNormalizedMoveCall",t]},oracle:{getPythLatestPriceFeeds:()=>["oracle","getPythPriceIds"]}};var Vt=[client.getFullnodeUrl("mainnet"),"https://sui-mainnet.public.blastapi.io","https://sui-mainnet-ca-2.cosmostation.io","https://sui-mainnet-eu-4.cosmostation.io","https://sui-mainnet-endpoint.blockvision.org","https://sui-rpc.publicnode.com","https://sui-mainnet-rpc.allthatnode.com","https://mainnet.suiet.app","https://mainnet.sui.rpcpool.com","https://sui1mainnet-rpc.chainode.tech","https://fullnode.mainnet.apis.scallop.io","https://sui-mainnet-us-2.cosmostation.io"];var ut={core:{version:"0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",versionCap:"0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",object:"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",market:"0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",adminCap:"0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",coinDecimalsRegistry:"0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",obligationAccessStore:"0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9",coins:{usdc:{id:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",metaData:"0x69b7a7c3c200439c1b5f3b19d7d495d5966d5f08de66c69276152f8db3992ec6",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},cetus:{id:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",metaData:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",feedObject:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"}}},wapt:{id:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",metaData:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",feedObject:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"}}},wsol:{id:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",metaData:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",feedObject:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"}}},wbtc:{id:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",metaData:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},weth:{id:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",metaData:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},wusdc:{id:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",metaData:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},wusdt:{id:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",metaData:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},sui:{id:"0x0000000000000000000000000000000000000000000000000000000000000002",metaData:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",treasury:"",oracle:{supra:"",switchboard:"0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},afsui:{id:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",metaData:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},hasui:{id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",metaData:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},vsui:{id:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",metaData:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},sca:{id:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",metaData:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",feedObject:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"}}},sbeth:{id:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",metaData:"0x89b04ba87f8832d4d76e17a1c9dce72eb3e64d372cf02012b8d2de5384faeef0",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},fdusd:{id:"0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a",metaData:"0xdebee5265a67c186ed87fe93303d33dfe1de53e3b4fd7d9329c2852860acd3e7",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",feedObject:"0x5f6583b2b0fe1ecf94aaffeaab8a838794693960cea48c0da282d5f4a24be027"}}},deep:{id:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",metaData:"0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",feedObject:"0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed"}}},fud:{id:"0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1",metaData:"0x01087411ef48aaac1eb6e24803213e3a60a03b147dac930e5e341f17a85e524e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75",feedObject:"0x4531c3ed0d22f21f5fce882905372006c9aafa30f01db03b789e95a6c50de7b2"}}},sbusdt:{id:"0x375f70cf2ae4c00bf37117d0c85a2c71545e6ee05c4a5c7d282cd66a4504b068",metaData:"0xda61b33ac61ed4c084bbda65a2229459ed4eb2185729e70498538f0688bec3cc",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},blub:{id:"0xfa7ac3951fdca92c5200d468d31a365eb03b2be9936fde615e69f0c1274ad3a0",metaData:"0xac32b519790cae96c3317457d903d61d04f1bc8f7710096d80fcba72c7a53703",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"5fc11ffe4975b624be495be038da30e30bee2004d8ae6282b5364577ef4ca92c",feedObject:"0x246658c3324f2477568c78cca622518fbc6969a004b841d81409d24a7ec39b18"}}},sbwbtc:{id:"0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b",metaData:"0x53e1cae1ad70a778d0b450d36c7c2553314ca029919005aad26945d65a8fb784",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},musd:{id:"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722",metaData:"0xc154abd271b24032a2c80d96c1b82109490bb600ed189ef881d8c9467ed44a4f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2ee09cdb656959379b9262f89de5ff3d4dfed0dd34c072b3e22518496a65249c",feedObject:"0x72fbf053d6009a40cff74d9708592bd7b86673a0e7b252077e1aa53390976584"}}},ns:{id:"0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178",metaData:"0x279adec041f8ec5c2d419abf2c32713ae7930a9a3a1ff244c88e5ceced40db6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"bb5ff26e47a3a6cc7ec2fce1db996c2a145300edc5acaabe43bf9ff7c5dd5d32",feedObject:"0xc6352e1ea55d7b5acc3ed690cc3cdf8007978071d7bfd6a189445018cfb366e0"}}},usdy:{id:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb",metaData:"0xd8dd6cf839e2367de6e6107da4b4361f44798dd6cf26d094058d94e4cee25e36",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e3d1723999820435ebab53003a542ff26847720692af92523eea613a9a28d500",feedObject:"0x773cb390165e227cbd5bd924edaeff7d33b1b78aac045c4903ed9be7e711741a"}}}},oracles:{xOracle:"0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",xOracleCap:"0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",registryCap:"0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",state:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole:"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",wormholeState:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"}},packages:{coinDecimalsRegistry:{id:"0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",upgradeCap:"0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"},math:{id:"0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",upgradeCap:"0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"},whitelist:{id:"0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",upgradeCap:"0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"},x:{id:"0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",upgradeCap:"0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"},protocol:{id:"0x578374a1f5182013268bbe9b2b080c5d14cbed1a48f9990c5f8a1c33bf100e69",upgradeCap:"0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"},protocolWhitelist:{id:"0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",upgradeCap:"0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"},query:{id:"0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f",upgradeCap:"0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"},supra:{id:"",upgradeCap:""},pyth:{id:"0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",upgradeCap:"0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"},switchboard:{id:"",upgradeCap:""},xOracle:{id:"0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",upgradeCap:"0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"},testCoin:{id:"",upgradeCap:""}}},spool:{id:"0x472fc7d4c3534a8ec8c2f5d7a557a43050eab057aaab853e8910968ddc84fc9f",adminCap:"0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",object:"0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a",pools:{sweth:{id:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",rewardPoolId:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"},ssui:{id:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",rewardPoolId:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"},susdc:{id:"0x0b5f5f413bd3799e4052c37311966c77f3a4545eb125d2e93e67a68478021918",rewardPoolId:"0x85ed6ed72ea97c35dbf0cdc7ed6fbc48d8ec15de9b17c74bf4512df8a6d7f166"},swusdc:{id:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",rewardPoolId:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"},swusdt:{id:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",rewardPoolId:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"},scetus:{id:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",rewardPoolId:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"},safsui:{id:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",rewardPoolId:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"},shasui:{id:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",rewardPoolId:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"},svsui:{id:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",rewardPoolId:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"}},config:""},borrowIncentive:{id:"0x53f1141eb37ba5d0234b2a5054c7c886124fc1279ef50c307665363c8dd2bd29",adminCap:"0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",object:"0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",query:"0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",incentivePools:"0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",incentiveAccounts:"0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",config:"0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7"},vesca:{id:"0x1158813b32962c2d22888fae257d5f2365b03631f0cd5d5b912ccdf51ff4e2f2",object:"0xcfe2d87aa5712b67cad2732edb6a2201bfdf592377e5c0968b7cb02099bd8e21",adminCap:"0x4d105b16467acca81d18c132cdd1a3cee159920a86c1ef4bdbf2e8d7878500c5",tableId:"0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",table:"0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",treasury:"0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",config:"0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"},referral:{id:"0x54334af0681d89ce4d2396f4367015d8ee3a7ce5634f2a0c77c0fb0f36b23dc0",object:"0x5658d4bf5ddcba27e4337b4262108b3ad1716643cac8c2054ac341538adc72ec",adminCap:"0xc5dc06b9074291259f2cac460c940012c781c4430e42125c541cc43101c3bcbd",referralBindings:"0xf63299d58789d99de94092b9011323466e55ca0c1ea1a7a3786a589af46e1c09",bindingTableId:"0x1c8202b17267ec8d6cf97ca013615354181a04f179570e42601ff2dae19294b1",referralRevenuePool:"0x6abd852caf90769c1b185cdf636d841673fa95528f0550f018b8a138bd283c07",revenueTableId:"0x595baa3654c297bff84ab7786a2d250f019cefc66e8df8e89fd9d41e02bd30dd",referralTiers:"0x962cb903d8d7346190c5204785ccbb91b61086aa764f674c8145df82335cf83e",tiersTableId:"0xeac755a7a8b7798530905ac79e8c114f19d0f130f6eab012954f08faac29c75d",authorizedWitnessList:"0xf21b0ed043c9bb70842c0129159f4943dbcc3c9ef2f2f808af65f8be25cfd20e",version:"0x1bd4b7285f72e11c316b828c7c47b3f4da18dcec9f9b3dba6d8629cbb6f93e5e"},loyaltyProgram:{id:"0xab7c4e6d53ef862a1115d0c381fd33e05f9c206b79f322a54990b1e8c2fe3446",object:"0xab7c4e6d53ef862a1115d0c381fd33e05f9c206b79f322a54990b1e8c2fe3446",rewardPool:"0x215e1022037052407e69a5c5938f888078013c924cae97132492719ac2c53ec6",userRewardTableId:"0x574a11f8a0fbaa05b8f559cb65634e8eb20f26b1ec29e7d58de9167f3cedd0f7"},scoin:{id:"0x80ca577876dec91ae6d22090e56c39bc60dce9086ab0729930c6900bc4162b4c",coins:{ssui:{coinType:"0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",treasury:"0x5c1678c8261ac9eec024d4d630006a9f55c80dc0b1aa38a003fcb1d425818c6b",metaData:"0xac724644f481f4870ecdc29b9549aa8ea5180f10827c0d97b493f9f65a91455d"},scetus:{coinType:"0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",treasury:"0xa283c63488773c916cb3d6c64109536160d5eb496caddc721eb39aad2977d735",metaData:"0xf022d041455a038d762a091f7a9e9521211f20501bcf8b6913ef5493a023218f"},ssca:{coinType:"0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",treasury:"0xe04bfc95e00252bd654ee13c08edef9ac5e4b6ae4074e8390db39e9a0109c529",metaData:"0x27e3877491b308dfac46fb3d9f7dfa6a1e8b7dc3c374e92ecda7976055746964"},swusdc:{coinType:"0xad4d71551d31092230db1fd482008ea42867dbf27b286e9c70a79d2a6191d58d::scallop_wormhole_usdc::SCALLOP_WORMHOLE_USDC",treasury:"0x50c5cfcbcca3aaacab0984e4d7ad9a6ad034265bebb440f0d1cd688ec20b2548",metaData:"0xdc0595d068621d630f3c7c364dd257f7e3f8079e00c31c8d18755a033c15ae93"},swusdt:{coinType:"0xe6e5a012ec20a49a3d1d57bd2b67140b96cd4d3400b9d79e541f7bdbab661f95::scallop_wormhole_usdt::SCALLOP_WORMHOLE_USDT",treasury:"0x1f02e2fed702b477732d4ad6044aaed04f2e8e586a169153694861a901379df0",metaData:"0x171d0f1ca99d5fefb8b2e40b89899bacdc5417a783906ae119b9cb1c113d59ae"},sweth:{coinType:"0x67540ceb850d418679e69f1fb6b2093d6df78a2a699ffc733f7646096d552e9b::scallop_wormhole_eth::SCALLOP_WORMHOLE_ETH",treasury:"0x4b7f5da0e306c9d52490a0c1d4091e653d6b89778b9b4f23c877e534e4d9cd21",metaData:"0x077d0fd835b559e5b4bb52641f7627ddbf8b200f9b2cf4e28b3514da2a32a4dd"},safsui:{coinType:"0x00671b1fa2a124f5be8bdae8b91ee711462c5d9e31bda232e70fd9607b523c88::scallop_af_sui::SCALLOP_AF_SUI",treasury:"0x55f4dfe9e40bc4cc11c70fcb1f3daefa2bdc330567c58d4f0792fbd9f9175a62",metaData:"0xfd81c4d1b4d9d1b8c522e91121d22e94759386b29eafe1cc3888ca0ebe369b9e"},shasui:{coinType:"0x9a2376943f7d22f88087c259c5889925f332ca4347e669dc37d54c2bf651af3c::scallop_ha_sui::SCALLOP_HA_SUI",treasury:"0x404ccc1404d74a90eb6f9c9d4b6cda6d417fb03189f80d9070a35e5dab1df0f5",metaData:"0x0a2a4a25aac50ac79210d710f93cb22db58bc6ee22f213364dda9a709cab2189"},svsui:{coinType:"0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",treasury:"0xc06688ee1af25abc286ffb1d18ce273d1d5907cd1064c25f4e8ca61ea989c1d1",metaData:"0xa96cc21ddfb6486be4a96cda0c58734e4ddea2a8c04984f9e6121d8fae997ddf"},swsol:{coinType:"0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",treasury:"0x760fd66f5be869af4382fa32b812b3c67f0eca1bb1ed7a5578b21d56e1848819",metaData:"0xee202d2013fc09453d695c640088ee08f14afc8f1ae26284b4ebbc4712ff1ba5"},swbtc:{coinType:"0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",treasury:"0xe2883934ea42c99bc998bbe0f01dd6d27aa0e27a56455707b1b34e6a41c20baa",metaData:"0x1ba5904dae41699683da767c7a97785a55c51ec1253498c8fe1980169a96523d"},susdc:{coinType:"0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",treasury:"0xbe6b63021f3d82e0e7e977cdd718ed7c019cf2eba374b7b546220402452f938e",metaData:"0x763a21eba338e00bc684aaad80491c89eea5f247b59c47df45b17610c9ad58f2"},ssbeth:{coinType:"0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",treasury:"0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed",metaData:"0xdfdd14d53ed8c7ace7cac8a0eecdfa4c2345e15d9efcbd4e1828f81a107cbe2d"},sfdusd:{coinType:"0x6711551c1e7652a270d9fbf0eee25d99594c157cde3cb5fbb49035eb59b1b001::scallop_fdusd::SCALLOP_FDUSD",treasury:"0xdad9bc6293e694f67a5274ea51b596e0bdabfafc585ae6d7e82888e65f1a03e0",metaData:"0xb1529a3b5e5831d19a722493eec19785f613945d3dc984602d44a418f990d73f"},sdeep:{coinType:"0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",treasury:"0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",metaData:"0x2443014594a500a9119e11c6c6a86e865834f496c4614280ce8cace33c0b072e"},sfud:{coinType:"0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD",treasury:"0xf25212f11d182decff7a86165699a73e3d5787aced203ca539f43cfbc10db867",metaData:"0x4e03390de36b8c84e0a8297d3d0d08a8a34bed93787e37fcb26bfc26df33226c"},ssbusdt:{coinType:"0xb1d7df34829d1513b73ba17cb7ad90c88d1e104bb65ab8f62f13e0cc103783d3::scallop_sb_usdt::SCALLOP_SB_USDT",treasury:"0x58bdf6a9752e3a60144d0b70e8608d630dfd971513e2b2bfa7282f5eaa7d04d8",metaData:"0x1ce77b036043c8fdcc5cd050ed06433ae60296b194c2abf7ade8b7b7c8386d36"},sblub:{coinType:"0xe72f65446eabfad2103037af2d49d24599106fb44bf4c046c1e7e9acf6844dd0::scallop_blub::SCALLOP_BLUB",treasury:"0x87d34361dfd0e2accc946684d10b176484f348892f6cc51a829418040c4700e1",metaData:"0xfa11263cb39de80b9e224d7e0391866a7e779d3d62451de82a91ba601bfb1ce3"},ssbwbtc:{coinType:"0x08c0fe357d3a138f4552bee393ce3a28a45bebcca43373d6a90bc44ab76f82e2::scallop_sb_wbtc::SCALLOP_SB_WBTC",treasury:"0x21db1d3b310d32b5fb1383591103bfea57c6aed62ef6d3b6d469bab752b8681f",metaData:"0x83d3d44ca57f9b1657065865caa497188d6fc1429f0ca846a51a9058f066f591"},smusd:{coinType:"0x0a228d1c59071eccf3716076a1f71216846ee256d9fb07ea11fb7c1eb56435a5::scallop_musd::SCALLOP_MUSD",treasury:"0xadfd554635ccc87e992f23ca838f0f16c14874e324a1b79b77f6bfe118edea9f",metaData:"0xb924f8c3d4b993172d4fc553c1ea242e8ca539e83edc3edaf5512ae44dfa6863"},sns:{coinType:"0x6511052d2f1404934e0d877709949bcda7c1d451d1218a4b2643ca2f3fa93991::scallop_ns::SCALLOP_NS",treasury:"0xa178587907006828839f312e6b5afa69e8aa9c66bdf06b2a5918bd8d913488e3",metaData:"0x898320fe66409bdcf580e2a5764217aa51a6fb26890645efff7011b54117e6df"},susdy:{coinType:"0xd285cbbf54c87fd93cd15227547467bb3e405da8bbf2ab99f83f323f88ac9a65::scallop_usdy::SCALLOP_USDY",treasury:"0xc8c5339fb10d9ad96f235fb312bda54df351549a3302e7fa7fd5d1725481604f",metaData:"0x098c4c77bd29ec803a11fa2b2d684577c6a09e75b77e0a7ab59b8b785fb492df"}}}};var le=86400,Ae=1460,te=126144e3,pt=1e10,mt=1e9;var H=t=>new suiKit.SuiKit({...t,fullnodeUrls:Array.from(new Set([...t.fullnodeUrls??[],...Vt]))});var no=10,lo=250,Qe=(t,e)=>{let a={...t};for(let o in e)e[o]&&typeof e[o]=="object"&&!Array.isArray(e[o])?a[o]=Qe(t[o]||{},e[o]):a[o]=e[o];return a},K=class{params;queryClient;suiKit;walletAddress;tokensPerInterval=no;interval=lo;tokens;lastRefill;constructor(e={},a){this.params=e,this.suiKit=a?.suiKit??H(e),this.queryClient=a?.queryClient??new queryCore.QueryClient(e?.cacheOptions??jt),this.tokens=this.tokensPerInterval,this.lastRefill=Date.now(),this.walletAddress=e.walletAddress??this.suiKit.currentAddress();}get client(){return this.suiKit.client()}refill(){let a=Date.now()-this.lastRefill;if(a>=this.interval){let o=Math.floor(a/this.interval)*this.tokensPerInterval;this.tokens=Math.min(this.tokens+o,this.tokensPerInterval),this.lastRefill+=Math.floor(a/this.interval)*this.interval;}}removeTokens(e){return this.refill(),this.tokens>=e?(this.tokens-=e,!0):!1}async callWithRateLimit(e,a=15,o=1.25){let r=0,s=async()=>{if(this.removeTokens(1))return await e();if(r<a){r++;let c=this.interval*Math.pow(o,r);return await new Promise(i=>setTimeout(i,c)),s()}else return console.error("Maximum retries reached"),null};return s()}retryFn(e,a){return e===5?!1:a.status===429}async queryInspectTxn({queryTarget:e,args:a,typeArgs:o}){let r=new suiKit.SuiTxBlock,s=await this.queryGetNormalizedMoveFunction(e);if(!s)throw new Error("Invalid query target");let{parameters:c}=s,i=await Promise.all((a??[]).map(async(l,d)=>{if(typeof l!="string")return l;let b=(await this.queryGetObject(l))?.data;if(!b)return l;let u=b.owner;if(!u||typeof u!="object"||!("Shared"in u))return {objectId:b.objectId,version:b.version,digest:b.digest};let p=c[d];return typeof p!="object"||!("MutableReference"in p||"Reference"in p)?l:{objectId:b.objectId,initialSharedVersion:u.Shared.initial_shared_version,mutable:"MutableReference"in p}}));return r.moveCall(e,i,o),await this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:N.rpc.getInspectTxn(e,a,o),queryFn:async()=>await this.callWithRateLimit(async()=>await this.suiKit.inspectTxn(r))})}async queryGetNormalizedMoveFunction(e){let{address:a,module:o,name:r}=suiKit.parseStructTag(e);return this.queryClient.fetchQuery({queryKey:N.rpc.getNormalizedMoveFunction(e),queryFn:async()=>await this.callWithRateLimit(async()=>await this.suiKit.client().getNormalizedMoveFunction({package:a,module:o,function:r}))})}async queryGetObject(e,a){return a={...a,showOwner:!0,showContent:!0,showType:!0},this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:N.rpc.getObject(e,a),queryFn:async()=>await this.callWithRateLimit(async()=>await this.client.getObject({id:e,options:a}))})}async queryGetObjects(e){if(e.length===0)return [];let a={showContent:!0,showOwner:!0,showType:!0};return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:N.rpc.getObjects(e),queryFn:async()=>{let o=await this.callWithRateLimit(async()=>await this.suiKit.getObjects(e,a));return o&&o.forEach(r=>{let s=N.rpc.getObject(r.objectId);this.queryClient.getQueriesData({exact:!1,queryKey:s}).forEach(([i,n])=>{this.queryClient.setQueryData(i,Qe(n,{data:r,error:null}),{updatedAt:Date.now()});});}),o}})}async queryGetOwnedObjects(e){return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:N.rpc.getOwnedObjects(e),queryFn:async()=>{let a=await this.callWithRateLimit(async()=>await this.client.getOwnedObjects(e));return a&&a.data.length>0&&a.data.filter(o=>!!o.data).forEach(o=>{let r=N.rpc.getObject(o.data.objectId);this.queryClient.getQueriesData({exact:!1,queryKey:r}).forEach(([c,i])=>{this.queryClient.setQueryData(c,Qe(i,{data:o.data,error:null}),{updatedAt:Date.now()});});}),a}})}async queryGetDynamicFields(e){return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:N.rpc.getDynamicFields(e),queryFn:async()=>await this.callWithRateLimit(async()=>await this.client.getDynamicFields(e))})}async queryGetDynamicFieldObject(e){return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:a=>Math.min(1e3*a,8e3),queryKey:N.rpc.getDynamicFieldObject(e),queryFn:async()=>{let a=await this.callWithRateLimit(()=>this.client.getDynamicFieldObject(e));if(a?.data){let o=N.rpc.getObject(a.data.objectId);this.queryClient.getQueriesData({exact:!1,queryKey:o}).forEach(([s,c])=>{this.queryClient.setQueryData(s,Qe(c,{data:a.data,error:null}),{updatedAt:Date.now()});});}return a}})}async queryGetAllCoinBalances(e){return this.queryClient.fetchQuery({retry:this.retryFn,retryDelay:1e3,queryKey:N.rpc.getAllCoinBalances(e),queryFn:async()=>{let a=await this.callWithRateLimit(async()=>await this.client.getAllBalances({owner:e}));return a?a.reduce((r,s)=>(s.totalBalance!=="0"&&(r[suiKit.normalizeStructTag(s.coinType)]=s),r),{}):{}}})}async queryGetCoinBalance(e){return e.coinType?(await this.queryGetAllCoinBalances(e.owner)??{})[suiKit.normalizeStructTag(e.coinType)]??"0":null}};var Qt={core:{version:"",versionCap:"",object:"",market:"",adminCap:"",coinDecimalsRegistry:"",obligationAccessStore:"",coins:{cetus:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wapt:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wsol:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wbtc:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},weth:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wusdc:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},wusdt:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},sui:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},afsui:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},hasui:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},vsui:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}},sca:{id:"",metaData:"",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"",feedObject:""}}}},oracles:{xOracle:"",xOracleCap:"",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"",registryCap:"",state:"",wormhole:"",wormholeState:""}},packages:{coinDecimalsRegistry:{id:"",upgradeCap:""},math:{id:"",upgradeCap:""},whitelist:{id:"",upgradeCap:""},x:{id:"",upgradeCap:""},protocol:{id:"",upgradeCap:""},protocolWhitelist:{id:"",upgradeCap:""},query:{id:"",upgradeCap:""},supra:{id:"",upgradeCap:""},pyth:{id:"",upgradeCap:""},switchboard:{id:"",upgradeCap:""},xOracle:{id:"",upgradeCap:""},testCoin:{id:"",upgradeCap:""}}},spool:{id:"",adminCap:"",object:"",pools:{sweth:{id:"",rewardPoolId:""},ssui:{id:"",rewardPoolId:""},swusdc:{id:"",rewardPoolId:""},swusdt:{id:"",rewardPoolId:""},scetus:{id:"",rewardPoolId:""},safsui:{id:"",rewardPoolId:""},shasui:{id:"",rewardPoolId:""},svsui:{id:"",rewardPoolId:""}},config:""},borrowIncentive:{id:"",adminCap:"",object:"",query:"",incentivePools:"",incentiveAccounts:"",config:""},vesca:{id:"",object:"",adminCap:"",tableId:"",table:"",treasury:"",config:""},referral:{id:"",version:"",object:"",adminCap:"",referralBindings:"",bindingTableId:"",referralRevenuePool:"",revenueTableId:"",referralTiers:"",tiersTableId:"",authorizedWitnessList:""},loyaltyProgram:{id:"",object:"",rewardPool:"",userRewardTableId:""},scoin:{id:"",coins:{ssui:{coinType:"",treasury:"",metaData:""},scetus:{coinType:"",treasury:"",metaData:""},ssca:{coinType:"",treasury:"",metaData:""},swusdc:{coinType:"",treasury:"",metaData:""},swusdt:{coinType:"",treasury:"",metaData:""},sweth:{coinType:"",treasury:"",metaData:""},safsui:{coinType:"",treasury:"",metaData:""},shasui:{coinType:"",treasury:"",metaData:""},svsui:{coinType:"",treasury:"",metaData:""}}}},z=class{_auth;_requestClient;_id;_network;_currentAddresses;_addressesMap;cache;constructor(e,a){let{id:o,auth:r,network:s,forceInterface:c}=e;if(this.cache=a?.cache??new K({}),this._requestClient=bo__default.default.create({baseURL:Bt,headers:{"Content-Type":"application/json",Accept:"application/json"},timeout:8e3}),r&&(this._auth=r),this._id=o,this._network=s??"mainnet",this._addressesMap=new Map,c)for(let[i,n]of Object.entries(c))["localnet","devnet","testnet","mainnet"].includes(i)&&(i===this._network&&(this._currentAddresses=n),this._addressesMap.set(i,n));}getId(){return this._id||void 0}get(e){if(this._currentAddresses)return e.split(".").reduce((o,r)=>typeof o=="object"?o[r]:o,this._currentAddresses)||void 0}set(e,a){if(this._currentAddresses){let o=e.split(".");o.reduce((r,s,c)=>{if(c===o.length-1)r[s]=a;else return r[s]},this._currentAddresses);}return this._currentAddresses}switchCurrentAddresses(e){return this._addressesMap.has(e)&&(this._currentAddresses=this._addressesMap.get(e),this._network=e),this._currentAddresses}getAddresses(e){return e?this._addressesMap.get(e):this._currentAddresses??this._addressesMap.get(this._network)}setAddresses(e,a){let o=a||this._network;o===this._network&&(this._currentAddresses=e),this._addressesMap.set(o,e);}getAllAddresses(){return Object.fromEntries(this._addressesMap)}async create(e){let{addresses:a,network:o,auth:r,memo:s}=e??{},c=r||this._auth||void 0,i=o||this._network,n=a||this._currentAddresses||this._addressesMap.get(i)||Qt;if(c!==void 0){this._addressesMap.clear(),this.setAddresses(n,i);let l=await this._requestClient.post("/addresses",JSON.stringify({...Object.fromEntries(this._addressesMap),memo:s}),{headers:{"Content-Type":"application/json","api-key":r||this._auth}});if(l.status===201){for(let[d,b]of Object.entries(l.data))["localnet","devnet","testnet","mainnet"].includes(d)&&(d===this._network&&(this._currentAddresses=b),this._addressesMap.set(d,b));return this._id=l.data.id,this.getAllAddresses()}else throw Error("Failed to create addresses.")}else throw Error("You don't have permission to access this request.")}async read(e){let a=e||this._id||void 0;if(a!==void 0){let o=await this.cache.queryClient.fetchQuery({queryKey:N.api.getAddresses(a),queryFn:async()=>await this._requestClient.get(`/addresses/${a}`,{headers:{"Content-Type":"application/json"}})});if(o.status===200){for(let[r,s]of Object.entries(o.data))["localnet","devnet","testnet","mainnet"].includes(r)&&(r===this._network&&(this._currentAddresses=s),this._addressesMap.set(r,s));return this._id=o.data.id,this.getAllAddresses()}else throw Error("Failed to create addresses.")}else throw Error("Please provide API addresses id.")}async update(e){let{id:a,addresses:o,network:r,auth:s,memo:c}=e??{},i=s||this._auth||void 0,n=a||this._id||void 0,l=r||this._network,d=o||this._currentAddresses||this._addressesMap.get(l)||Qt;if(n===void 0)throw Error("Require specific addresses id to be updated.");if(i!==void 0){a!==this._id&&this._addressesMap.clear(),this.setAddresses(d,l);let b=await this._requestClient.put(`/addresses/${n}`,JSON.stringify({...Object.fromEntries(this._addressesMap),memo:c}),{headers:{"Content-Type":"application/json","api-key":s||this._auth}});if(b.status===200){for(let[u,p]of Object.entries(b.data))["localnet","devnet","testnet","mainnet"].includes(u)&&(u===this._network&&(this._currentAddresses=p),this._addressesMap.set(u,p));return this._id=b.data.id,this.getAllAddresses()}else throw Error("Failed to update addresses.")}else throw Error("You don't have permission to access this request.")}async delete(e,a){let o=a||this._auth||void 0,r=e||this._id||void 0;if(r===void 0)throw Error("Require specific addresses id to be deleted.");if(o!==void 0)if((await this._requestClient.delete(`/addresses/${r}`,{headers:{"Content-Type":"application/json","api-key":a||this._auth}})).status===200)this._id=void 0,this._currentAddresses=void 0,this._addressesMap.clear();else throw Error("Failed to delete addresses.");else throw Error("You don't have permission to access this request.")}};var _=t=>{let e=t.blockData.sender;if(!e)throw new Error("Sender is required");return e},Oe=t=>{if(t===void 0)throw new Error("veSca not found")},yt=t=>{if(t<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead")},St=(t,e,a)=>{Oe(a),yt(a);let o=Math.floor(a/1e3);if(t<1)throw new Error("Minimum lock period is 1 day");let r=Math.floor((e-o)/86400);if(t>r)throw new Error(`Cannot extend lock period by ${t} days, maximum lock period is ~4 years (${1460} days), remaining lock period is ${1460-r}`)},qt=(t,e,a,o)=>{let r=o?Math.floor(o/1e3):void 0,s=!r,c=!s&&r*1e3<=new Date().getTime();if(s||c)if(t!==void 0&&e!==void 0){if(e<=0)throw new Error("Lock period must be greater than 0");if(typeof t=="number"&&t<1e10)throw new Error(`Minimum lock amount for ${c?"renewing expired veSca":"initial lock"} is 10 SCA`);if(e*86400>126144e3)throw new Error(`Maximum lock period is ~4 years (${1460} days)`)}else throw new Error(`SCA amount and lock period is required for ${c?"renewing expired veSca":"initial lock"}`);else {if(Oe(o),yt(o),typeof t=="number"&&t<1e9)throw new Error("Minimum top up amount is 1 SCA");a&&e&&St(e,a,o);}},$t=(t,e)=>{if(Oe(e),yt(e),t<1e9)throw new Error("Minimum top up amount is 1 SCA");if(!!e&&e<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead")},Gt=(t,e,a)=>{if(!a||a>new Date().getTime())throw new Error("Renew method can only be used for expired veSca");if(t<1e10)throw new Error("Minimum lock amount for renewing expired vesca 10 SCA");if(e*86400>=126057600)throw new Error(`Maximum lock period is ~4 years (${1459} days)`)};var wt=t=>({coinType:utils.normalizeStructTag(t.type.name),maxBorrowRate:Number(t.maxBorrowRate.value)/2**32,borrowRate:Number(t.interestRate.value)/2**32,borrowRateScale:Number(t.interestRateScale),borrowIndex:Number(t.borrowIndex),lastUpdated:Number(t.lastUpdated),cashAmount:Number(t.cash),debtAmount:Number(t.debt),marketCoinSupplyAmount:Number(t.marketCoinSupply),reserveAmount:Number(t.reserve),reserveFactor:Number(t.reserveFactor.value)/2**32,borrowWeight:Number(t.borrowWeight.value)/2**32,borrowFee:Number(t.borrowFeeRate.value)/2**32,baseBorrowRate:Number(t.baseBorrowRatePerSec.value)/2**32,borrowRateOnHighKink:Number(t.borrowRateOnHighKink.value)/2**32,borrowRateOnMidKink:Number(t.borrowRateOnMidKink.value)/2**32,highKink:Number(t.highKink.value)/2**32,midKink:Number(t.midKink.value)/2**32,minBorrowAmount:Number(t.minBorrowAmount),isIsolated:t.isIsolated,supplyLimit:Number(t.supplyLimit),borrowLimit:Number(t.borrowLimit)}),gt=(t,e)=>{let a=t.parseCoinNameFromType(e.coinType),o=t.getCoinDecimal(a),r=24*365*3600,s=e.baseBorrowRate*r/e.borrowRateScale,c=e.borrowRateOnHighKink*r/e.borrowRateScale,i=e.borrowRateOnMidKink*r/e.borrowRateScale,n=e.maxBorrowRate*r/e.borrowRateScale,l=e.borrowRate*r/e.borrowRateScale,d=Math.floor(new Date().getTime()/1e3)-e.lastUpdated,b=h__default.default(e.borrowIndex).multipliedBy(h__default.default(d).multipliedBy(e.borrowRate)).dividedBy(e.borrowRateScale),u=h__default.default(e.borrowIndex).plus(b),p=h__default.default(u).dividedBy(e.borrowIndex).minus(1),f=h__default.default(e.debtAmount).multipliedBy(p),m=f.plus(e.debtAmount),y=m.shiftedBy(-1*o),w=h__default.default(e.reserveAmount).plus(f.multipliedBy(e.reserveFactor)),g=w.shiftedBy(-1*o),k=h__default.default(m).plus(Math.max(e.cashAmount-w.toNumber(),0)),T=k.shiftedBy(-1*o),j=h__default.default(m).dividedBy(k);j=j.isFinite()?j:h__default.default(0);let A=h__default.default(l).multipliedBy(j).multipliedBy(1-e.reserveFactor);A=A.isFinite()?A:h__default.default(0);let S=k.dividedBy(e.marketCoinSupplyAmount);return S=S.isFinite()&&!S.isNaN()?S:h__default.default(1),{baseBorrowApr:s,baseBorrowApy:t.parseAprToApy(s),borrowAprOnHighKink:c,borrowApyOnHighKink:t.parseAprToApy(c),borrowAprOnMidKink:i,borrowApyOnMidKink:t.parseAprToApy(i),coinDecimal:o,maxBorrowApr:n,maxBorrowApy:t.parseAprToApy(n),borrowApr:Math.min(l,n),borrowApy:Math.min(t.parseAprToApy(l),t.parseAprToApy(n)),borrowIndex:u.toNumber(),growthInterest:p.toNumber(),supplyAmount:k.toNumber(),supplyCoin:T.toNumber(),borrowAmount:m.toNumber(),borrowCoin:y.toNumber(),reserveAmount:w.toNumber(),reserveCoin:g.toNumber(),utilizationRate:j.toNumber(),supplyApr:A.toNumber(),supplyApy:t.parseAprToApy(A.toNumber()),conversionRate:S.toNumber(),isIsolated:e.isIsolated,maxSupplyCoin:h__default.default(e.supplyLimit).shiftedBy(-o).toNumber(),maxBorrowCoin:h__default.default(e.borrowLimit).shiftedBy(-o).toNumber()}},qe=t=>({coinType:utils.normalizeStructTag(t.type.name),isIsolated:t.isIsolated,collateralFactor:Number(t.collateralFactor.value)/4294967296,liquidationFactor:Number(t.liquidationFactor.value)/4294967296,liquidationDiscount:Number(t.liquidationDiscount.value)/4294967296,liquidationPenalty:Number(t.liquidationPenalty.value)/4294967296,liquidationReserveFactor:Number(t.liquidationReserveFactor.value)/4294967296,maxCollateralAmount:Number(t.maxCollateralAmount),totalCollateralAmount:Number(t.totalCollateralAmount)}),$e=(t,e)=>{let a=t.parseCoinNameFromType(e.coinType),o=t.getCoinDecimal(a),r=h__default.default(e.maxCollateralAmount).shiftedBy(-1*o),s=h__default.default(e.totalCollateralAmount).shiftedBy(-1*o);return {coinDecimal:o,isIsolated:e.isIsolated,maxDepositAmount:e.maxCollateralAmount,maxDepositCoin:r.toNumber(),depositAmount:e.totalCollateralAmount,depositCoin:s.toNumber()}},zt=t=>({stakeType:utils.normalizeStructTag(t.stakeType.fields.name),maxPoint:Number(t.maxDistributedPoint),distributedPoint:Number(t.distributedPoint),pointPerPeriod:Number(t.distributedPointPerPeriod),period:Number(t.pointDistributionTime),maxStake:Number(t.maxStake),staked:Number(t.stakes),index:Number(t.index),createdAt:Number(t.createdAt),lastUpdate:Number(t.lastUpdate)}),Yt=(t,e,a)=>{let r=h__default.default(t.pointPerPeriod).dividedBy(t.period),s=h__default.default(t.pointPerPeriod).dividedBy(t.period),c=s.gt(0)?h__default.default(t.maxPoint).minus(t.distributedPoint).dividedBy(s):h__default.default(0),i=t.createdAt,n=c.plus(t.lastUpdate).integerValue().toNumber(),l=h__default.default(Math.floor(new Date().getTime()/1e3)-t.lastUpdate).dividedBy(t.period).toFixed(0),d=h__default.default(t.maxPoint).minus(t.distributedPoint),b=h__default.default.minimum(h__default.default(l).multipliedBy(t.pointPerPeriod),d),u=h__default.default(t.index).plus(b.dividedBy(t.staked).isFinite()?h__default.default(1e9).multipliedBy(b).dividedBy(t.staked):0),p=h__default.default(t.distributedPoint).plus(b),f=h__default.default(t.staked),m=f.shiftedBy(-1*a),y=m.multipliedBy(e);return {distributedPointPerSec:r.toNumber(),accumulatedPoints:b.toNumber(),currentPointIndex:u.toNumber(),currentTotalDistributedPoint:p.toNumber(),startDate:new Date(i*1e3),endDate:new Date(n*1e3),stakedAmount:f.toNumber(),stakedCoin:m.toNumber(),stakedValue:y.toNumber()}},Jt=t=>({claimedRewards:Number(t.claimed_rewards),exchangeRateDenominator:Number(t.exchange_rate_denominator),exchangeRateNumerator:Number(t.exchange_rate_numerator),rewards:Number(t.rewards),spoolId:String(t.spool_id)}),Xt=(t,e,a,o,r)=>{let c=h__default.default(a.distributedPointPerSec).multipliedBy(e.exchangeRateNumerator).dividedBy(e.exchangeRateDenominator),i=h__default.default(t.maxPoint).multipliedBy(e.exchangeRateNumerator).dividedBy(e.exchangeRateDenominator),n=i.shiftedBy(-1*r),l=n.multipliedBy(o),d=h__default.default(e.rewards),b=d.shiftedBy(-1*r),u=b.multipliedBy(o),p=h__default.default(e.claimedRewards),f=p.shiftedBy(-1*r),m=f.multipliedBy(o),y=h__default.default(c).shiftedBy(-1*r).multipliedBy(31536e3).multipliedBy(o),w=y.dividedBy(a.stakedValue).isFinite()?y.dividedBy(a.stakedValue).toNumber():1/0;return (t.maxPoint<=t.distributedPoint||t.pointPerPeriod===0)&&(w=1/0),{rewardApr:w,totalRewardAmount:i.toNumber(),totalRewardCoin:n.toNumber(),totalRewardValue:l.toNumber(),remaindRewardAmount:d.toNumber(),remaindRewardCoin:b.toNumber(),remaindRewardValue:u.toNumber(),claimedRewardAmount:p.toNumber(),claimedRewardCoin:f.toNumber(),claimedRewardValue:m.toNumber(),rewardPerSec:c.toNumber()}},fo=t=>({pointType:utils.normalizeStructTag(t.point_type.name),distributedPointPerPeriod:Number(t.distributed_point_per_period),period:Number(t.point_distribution_time),distributedPoint:Number(t.distributed_point),points:Number(t.points),index:Number(t.index),baseWeight:Number(t.base_weight),weightedAmount:Number(t.weighted_amount),lastUpdate:Number(t.last_update),createdAt:Number(t.created_at)}),Zt=(t,e)=>({poolType:utils.normalizeStructTag(e.pool_type.name),minStakes:Number(e.min_stakes),maxStakes:Number(e.max_stakes),staked:Number(e.stakes),poolPoints:e.points.reduce((a,o)=>{let r=fo(o),s=t.parseSCoinTypeNameToMarketCoinName(utils.parseStructTag(r.pointType).name.toLowerCase());return a[s]=r,a},{})}),ea=(t,e,a,o,r)=>{let c=h__default.default(t.distributedPointPerPeriod).dividedBy(t.period),i=h__default.default(Math.floor(new Date().getTime()/1e3)-t.lastUpdate).dividedBy(t.period).toFixed(0),n=h__default.default.minimum(h__default.default(i).multipliedBy(t.distributedPointPerPeriod),h__default.default(t.points)),l=h__default.default(t.index).plus(n.dividedBy(t.weightedAmount).isFinite()?h__default.default(1e9).multipliedBy(n).dividedBy(t.weightedAmount):0),d=h__default.default(t.distributedPoint).plus(n),b=h__default.default(t.baseWeight),u=h__default.default(t.weightedAmount),p=u.shiftedBy(-1*r),f=p.multipliedBy(o),m=365*24*60*60,y=h__default.default(c).shiftedBy(-1*a),w=h__default.default(y).multipliedBy(m).multipliedBy(e),g=h__default.default(1e12),k=w.multipliedBy(h__default.default(t.baseWeight).dividedBy(g)).dividedBy(f).isFinite()&&t.points>0?w.multipliedBy(h__default.default(t.baseWeight).dividedBy(g)).dividedBy(f).toNumber():1/0;return {distributedPointPerSec:c.toNumber(),accumulatedPoints:n.toNumber(),currentPointIndex:l.toNumber(),currentTotalDistributedPoint:d.toNumber(),baseWeight:b.toNumber(),weightedStakedAmount:u.toNumber(),weightedStakedCoin:p.toNumber(),weightedStakedValue:f.toNumber(),rewardApr:k,rewardPerSec:y.toNumber()}},uo=t=>({pointType:utils.normalizeStructTag(t.point_type.name),weightedAmount:Number(t.weighted_amount),points:Number(t.points),totalPoints:Number(t.total_points),index:Number(t.index)}),ta=t=>({poolType:utils.normalizeStructTag(t.pool_type.name),debtAmount:Number(t.debt_amount),pointList:t.points_list.reduce((e,a)=>{let o=uo(a),r=utils.parseStructTag(o.pointType).name.toLowerCase();return e[r]=o,e},{})}),Ie=(...t)=>h__default.default(t.reduce((e,a)=>new h__default.default(a).lt(e)?a:e));var Ge=(t,e,a)=>{let o=Math.max(1,Math.floor(Math.log10(Math.abs(t))+1)),r=Math.max(Math.floor((o-1)/e),1)+1,s=Math.pow(10,-r);return s=a==="increase"?1-s:1+s,s};var aa=Array.from(new Set([...M,...V,...Et,...Ue,...q])),Se=t=>{let e=t.slice(1).toLowerCase();return t.charAt(0).toLowerCase()==="s"&&aa.includes(e)},ht=t=>Ft.includes(t),Ct=t=>Kt.includes(t),kt=t=>{if(Ct(t))return `w${t.slice(1).toUpperCase()}`;if(ht(t))switch(t){case"sbwbtc":return "sbwBTC";default:return `sb${t.slice(2).toUpperCase()}`}if(Se(t)){let e=t.slice(1).toLowerCase();return t.slice(0,1).toLowerCase()+kt(e)}switch(t){case"afsui":return "afSUI";case"hasui":return "haSUI";case"vsui":return "vSUI";case"musd":return "mUSD";default:return t.toUpperCase()}},oa=(t,e)=>{let o=aa.find(r=>e.get(`core.coins.${r}.oracle.pyth.feed`)===t.id);if(o){let r=t.price.price*10**t.price.expo;return {coinName:o,price:r,publishTime:Number(t.price.publishTime)*10**3}}else throw new Error("Invalid feed id")},sa=t=>{let e=new Date(t*1e3),a=new Date(t*1e3);a.setUTCHours(0,0,0,0),e.getUTCHours()>=0&&a.setUTCDate(a.getUTCDate()+1);let o=new Date().getTime();return a.getTime()-o>126144e3*1e3&&a.setUTCDate(a.getUTCDate()-1),Math.floor(a.getTime()/1e3)},ra=(t,e)=>{let a=[];for(let o=0;o<t.length;o+=e)a.push(t.slice(o,o+e));return a};async function po(t,e,...a){let o=a[a.length-1];if(typeof o=="object"&&o.indexer)try{return await t.apply(e,a)}catch(r){return console.warn(`Indexer requests failed: ${r.message}. Retrying without indexer..`),await t.apply(e,[...a.slice(0,-1),{...o,indexer:!1}])}return await t.apply(e,a)}function W(t){return (...e)=>po(t,this,...e)}var Y=t=>{if(!(t&&t.content&&"fields"in t.content))throw new Error("Failed to parse object");let e=t.content.fields;if(typeof e=="object"&&"value"in e){let a=e.value;return typeof a=="object"&&"fields"in a?a.fields:a}else if(typeof e=="object")return e;return e};var So=async t=>{let e=t.get("borrowIncentive.query"),a=t.get("borrowIncentive.incentivePools"),o=`${e}::incentive_pools_query::incentive_pools_data`,r=[a];return (await t.cache.queryInspectTxn({queryTarget:o,args:r}))?.events[0].parsedJson},ca=async(t,e=[...ye],a=!1,o,r)=>{let s={};if(o=o??(await t.getMarketPools(void 0,{coinPrices:r,indexer:a})).pools,r=r??await t.getAllCoinPrices({marketPools:o}),a){let i=await t.indexer.getBorrowIncentivePools(),n=l=>{if(e.includes(l.coinName)){l.coinPrice=r[l.coinName]||l.coinPrice;for(let d of Ue)l.points[d]&&(l.points[d].coinPrice=r[d]??l.points[d].coinPrice);s[l.coinName]=l;}};return Object.values(i).forEach(n),s}let c=await So(t.address);for(let i of c?.incentive_pools??[]){let n={},l=Zt(t.utils,i),d=utils.normalizeStructTag(i.pool_type.name),b=t.utils.parseCoinNameFromType(d),u=r?.[b]??0,p=t.utils.getCoinDecimal(b);if(!e.includes(b))continue;for(let[w,g]of Object.entries(l.poolPoints)){let k=g.pointType,T=t.utils.parseCoinNameFromType(k),j=t.utils.getCoinDecimal(T),A=r?.[T]??0,S=t.utils.parseSymbol(T),R=t.utils.getCoinDecimal(T),J=ea(g,A,j,u,p);n[w]={symbol:S,coinName:T,coinType:k,coinDecimal:R,coinPrice:A,points:g.points,distributedPoint:g.distributedPoint,weightedAmount:g.weightedAmount,...J};}let f=h__default.default(l.staked),m=f.shiftedBy(-1*p),y=m.multipliedBy(u);s[b]={coinName:b,symbol:t.utils.parseSymbol(b),coinType:d,coinDecimal:p,coinPrice:u,stakedAmount:f.toNumber(),stakedCoin:m.toNumber(),stakedValue:y.toNumber(),points:n};}return s},ia=async({utils:t},e,a=[...ye])=>{let o=t.address.get("borrowIncentive.query"),r=t.address.get("borrowIncentive.incentiveAccounts"),s=`${o}::incentive_account_query::incentive_account_data`,c=[r,e],n=(await t.cache.queryInspectTxn({queryTarget:s,args:c}))?.events[0]?.parsedJson;return Object.values(n?.pool_records??[]).reduce((d,b)=>{let u=ta(b),p=u.poolType,f=t.parseCoinNameFromType(p);return a&&a.includes(f)&&(d[f]=u),d},{})},na=async({address:t},e)=>{let a=t.get("borrowIncentive.object"),o=t.get("borrowIncentive.incentivePools"),r=t.get("vesca.object"),s=await t.cache.queryGetObject(o);if(s?.data?.content?.dataType!=="moveObject")return null;let i=s.data.content.fields.ve_sca_bind.fields.id.id,n=`${a}::typed_id::TypedID<${r}::ve_sca::VeScaKey>`,l=await t.cache.queryGetDynamicFieldObject({parentId:i,name:{type:n,value:e}});return l?.data?.content?.dataType!=="moveObject"?null:l.data.content.fields.value.fields.id},da=async({address:t},e)=>{let a=t.get("borrowIncentive.object"),o=t.get("borrowIncentive.incentiveAccounts"),r=t.get("core.object"),s=await t.cache.queryGetObject(o);if(s?.data?.content?.dataType!=="moveObject")return null;let c=s.data.content.fields.accounts.fields.id.id,i=await t.cache.queryGetDynamicFieldObject({parentId:c,name:{type:`${a}::typed_id::TypedID<${r}::obligation::Obligation>`,value:e}});return i?.data?.content?.dataType!=="moveObject"?null:i.data.content.fields.value.fields.binded_ve_sca_key?.fields.id??null};var wo=zod.z.object({dataType:zod.z.string(),type:zod.z.string(),hasPublicTransfer:zod.z.boolean(),fields:zod.z.object({id:zod.z.object({id:zod.z.string()}),name:zod.z.object({type:zod.z.string()}),value:zod.z.string()})}),go="0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey",He=async(t,e)=>{try{let a=t.parseCoinType(e).slice(2),o=t.address.get("core.market");if(!o)return null;let r=await t.cache.queryGetDynamicFieldObject({parentId:o,name:{type:go,value:a}}),s=wo.safeParse(r?.data?.content);return s.success?s.data.fields.value:null}catch(a){return console.error(`Error in getSupplyLimit for ${e}: ${a.message}`),"0"}};var ho=zod.z.object({dataType:zod.z.string(),type:zod.z.string(),hasPublicTransfer:zod.z.boolean(),fields:zod.z.object({id:zod.z.object({id:zod.z.string()}),name:zod.z.object({type:zod.z.string()}),value:zod.z.boolean()})}),la="0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey",ba=async t=>{if(M.every(e=>!!B[e]))return M.filter(e=>!!B[e]?.isolatedAssetKey&&!!B[e]?.coinType).map(e=>B[e]?.coinType);try{let e=t.address.get("core.market"),a=[];if(!e)return a;let o=!1,r=null,s=c=>c.name.type===la;do{let c=await t.cache.queryGetDynamicFields({parentId:e,cursor:r,limit:10});if(!c)break;let i=c.data.filter(s).map(({name:n})=>`0x${n.value.type.name}`);a.push(...i),c&&c.hasNextPage&&c.nextCursor?(o=!0,r=c.nextCursor):o=!1;}while(o);return a}catch(e){return console.error(e),[]}},we=async(t,e)=>{if(B[e])return !!B[e].isolatedAssetKey;let a=t.address.get("core.market"),o=t.address.cache.queryClient.getQueryData(["getDynamicFields",a]);if(o){let i=t.parseCoinType(e);return o.includes(i)}let r=t.parseCoinType(e).slice(2),s=await t.cache.queryGetDynamicFieldObject({parentId:a,name:{type:la,value:r}}),c=ho.safeParse(s?.data?.content);return c.success?c.data.fields.value:!1};var Co=zod.z.object({dataType:zod.z.string(),type:zod.z.string(),hasPublicTransfer:zod.z.boolean(),fields:zod.z.object({id:zod.z.object({id:zod.z.string()}),name:zod.z.object({type:zod.z.string()}),value:zod.z.string()})}),ko="0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey",ze=async(t,e)=>{try{let a=t.parseCoinType(e).slice(2),o=t.address.get("core.market");if(!o)return null;let r=await t.cache.queryGetDynamicFieldObject({parentId:o,name:{type:ko,value:a}}),s=Co.safeParse(r?.data?.content);return s.success?s.data.fields.value:null}catch(a){return console.error(`Error in getBorrowLimit for ${e}: ${a.message}`),"0"}};var F=async(t,e,a=50)=>{let o=ra(e,a),r=[];for(let s of o){let c=await t.queryGetObjects(s);r.push(...c);}return r};var pa=async(t,e=!1,a)=>{a=a??await t.utils.getCoinPrices()??{};let o={},r={};if(e){let b=await t.indexer.getMarket(),u=f=>{f.coinPrice=a[f.coinName]??f.coinPrice,f.coinWrappedType=t.utils.getCoinWrappedType(f.coinName),o[f.coinName]=f;},p=f=>{f.coinPrice=a[f.coinName]??f.coinPrice,f.coinWrappedType=t.utils.getCoinWrappedType(f.coinName),r[f.coinName]=f;};return Object.values(b.pools).forEach(u),Object.values(b.collaterals).forEach(p),{pools:o,collaterals:r}}let s=t.address.get("core.packages.query.id"),c=t.address.get("core.market"),i=`${s}::market_query::market_data`,n=[c],d=(await t.cache.queryInspectTxn({queryTarget:i,args:n}))?.events[0]?.parsedJson;for(let b of d?.pools??[]){let u=utils.normalizeStructTag(b.type.name),p=t.utils.parseCoinNameFromType(u),f=a[p]??0;if(!M.includes(p))continue;let m=wt({type:b.type,maxBorrowRate:b.maxBorrowRate,interestRate:b.interestRate,interestRateScale:b.interestRateScale,borrowIndex:b.borrowIndex,lastUpdated:b.lastUpdated,cash:b.cash,debt:b.debt,marketCoinSupply:b.marketCoinSupply,reserve:b.reserve,reserveFactor:b.reserveFactor,borrowWeight:b.borrowWeight,borrowFeeRate:b.borrowFeeRate,baseBorrowRatePerSec:b.baseBorrowRatePerSec,borrowRateOnHighKink:b.borrowRateOnHighKink,borrowRateOnMidKink:b.borrowRateOnMidKink,highKink:b.highKink,midKink:b.midKink,minBorrowAmount:b.minBorrowAmount,isIsolated:await we(t.utils,p),supplyLimit:await He(t.utils,p)??"0",borrowLimit:await ze(t.utils,p)??"0"}),y=gt(t.utils,m);o[p]={coinName:p,symbol:t.utils.parseSymbol(p),coinType:u,marketCoinType:t.utils.parseMarketCoinType(p),sCoinType:t.utils.parseSCoinType(t.utils.parseMarketCoinName(p)),coinWrappedType:t.utils.getCoinWrappedType(p),coinPrice:f,highKink:m.highKink,midKink:m.midKink,reserveFactor:m.reserveFactor,borrowWeight:m.borrowWeight,borrowFee:m.borrowFee,marketCoinSupplyAmount:m.marketCoinSupplyAmount,minBorrowAmount:m.minBorrowAmount,...y};}for(let b of d?.collaterals??[]){let u=utils.normalizeStructTag(b.type.name),p=t.utils.parseCoinNameFromType(u),f=a[p]??0;if(!V.includes(p))continue;let m=qe({type:b.type,collateralFactor:b.collateralFactor,liquidationFactor:b.liquidationFactor,liquidationDiscount:b.liquidationDiscount,liquidationPenalty:b.liquidationPanelty,liquidationReserveFactor:b.liquidationReserveFactor,maxCollateralAmount:b.maxCollateralAmount,totalCollateralAmount:b.totalCollateralAmount,isIsolated:await we(t.utils,p)}),y=$e(t.utils,m);r[p]={coinName:p,symbol:t.utils.parseSymbol(p),coinType:u,marketCoinType:t.utils.parseMarketCoinType(p),coinWrappedType:t.utils.getCoinWrappedType(p),coinPrice:f,collateralFactor:m.collateralFactor,liquidationFactor:m.liquidationFactor,liquidationDiscount:m.liquidationDiscount,liquidationPenalty:m.liquidationPenalty,liquidationReserveFactor:m.liquidationReserveFactor,...y};}return {pools:o,collaterals:r}},ma=async(t,e)=>{let a=e.map(S=>({poolCoinName:S,balanceSheet:B[S]?.lendingPoolAddress,collateralStat:B[S]?.collateralPoolAddress,borrowDynamic:B[S]?.borrowDynamic,interestModel:B[S]?.interestModel,riskModel:B[S]?.riskModel,borrowFeeKey:B[S]?.borrowFeeKey,supplyLimitKey:B[S]?.supplyLimitKey,borrowLimitKey:B[S]?.borrowLimitKey,isolatedAssetKey:B[S]?.isolatedAssetKey})),[o,r,s,c,i,n,l,d,b]=await Promise.all([F(t.cache,a.map(S=>S.balanceSheet).filter(S=>!!S)),F(t.cache,a.map(S=>S.collateralStat).filter(S=>!!S)),F(t.cache,a.map(S=>S.borrowDynamic).filter(S=>!!S)),F(t.cache,a.map(S=>S.interestModel).filter(S=>!!S)),F(t.cache,a.map(S=>S.riskModel).filter(S=>!!S)),F(t.cache,a.map(S=>S.borrowFeeKey).filter(S=>!!S)),F(t.cache,a.map(S=>S.supplyLimitKey).filter(S=>!!S)),F(t.cache,a.map(S=>S.borrowLimitKey).filter(S=>!!S)),F(t.cache,a.map(S=>S.isolatedAssetKey).filter(S=>!!S))]),u=(S,R,J)=>{let X={},Z=R.reduce((Q,E)=>(Q[E.objectId]=E,Q),{});for(let Q of S)Q[J]&&(X[Q.poolCoinName]=Z[Q[J]]);return X},p=u(a,o,"balanceSheet"),f=u(a,r,"collateralStat"),m=u(a,s,"borrowDynamic"),y=u(a,c,"interestModel"),w=u(a,i,"riskModel"),g=u(a,n,"borrowFeeKey"),k=u(a,l,"supplyLimitKey"),T=u(a,d,"borrowLimitKey"),j=u(a,b,"isolatedAssetKey");return e.reduce((S,R)=>(S[R]={balanceSheet:p[R],collateralStat:f[R],borrowDynamic:m[R],interestModel:y[R],riskModel:w[R],borrowFeeKey:g[R],supplyLimitKey:k[R],borrowLimitKey:T[R],isolatedAssetKey:j[R]},S),{})},ya=async(t,e,a=!1,o)=>{o=o??await t.utils.getCoinPrices();let r={},s={};if(a){let i=await t.indexer.getMarket(),n=d=>{d.coinPrice=o[d.coinName]??d.coinPrice,d.coinWrappedType=t.utils.getCoinWrappedType(d.coinName),r[d.coinName]=d;},l=d=>{d.coinPrice=o[d.coinName]??d.coinPrice,d.coinWrappedType=t.utils.getCoinWrappedType(d.coinName),s[d.coinName]=d;};return Object.values(i.pools).forEach(n),Object.values(i.collaterals).forEach(l),{pools:r,collaterals:s}}let c=await ma(t,e);return await Promise.allSettled(e.map(async i=>{try{let n=await To(t,i,a,o?.[i]??0,c[i]);n?.marketPool&&(r[i]=n?.marketPool),n?.collateral&&(s[i]=n.collateral);}catch(n){console.error(n);}})),{pools:r,collaterals:s}},xo=({balanceSheet:t,borrowDynamic:e,collateralStat:a,interestModel:o,riskModel:r,borrowFeeKey:s,supplyLimitKey:c,borrowLimitKey:i,isolatedAssetKey:n})=>{let l=Y(t),d=Y(o),b=Y(e),u=Y(s),p=c?Y(c):"0",f=i?Y(i):"0",m=r?Y(r):void 0,y=a?Y(a):void 0,w=m&&y?{type:d.type.fields,isIsolated:!!n,collateralFactor:m.collateral_factor.fields,liquidationFactor:m.liquidation_factor.fields,liquidationPenalty:m.liquidation_penalty.fields,liquidationDiscount:m.liquidation_discount.fields,liquidationReserveFactor:m.liquidation_revenue_factor.fields,maxCollateralAmount:m.max_collateral_amount,totalCollateralAmount:y.amount}:void 0;return {type:d.type.fields,maxBorrowRate:d.max_borrow_rate.fields,interestRate:b.interest_rate.fields,interestRateScale:b.interest_rate_scale,borrowIndex:b.borrow_index,lastUpdated:b.last_updated,cash:l.cash,debt:l.debt,marketCoinSupply:l.market_coin_supply,reserve:l.revenue,reserveFactor:d.revenue_factor.fields,borrowWeight:d.borrow_weight.fields,borrowFeeRate:u,baseBorrowRatePerSec:d.base_borrow_rate_per_sec.fields,borrowRateOnHighKink:d.borrow_rate_on_high_kink.fields,borrowRateOnMidKink:d.borrow_rate_on_mid_kink.fields,highKink:d.high_kink.fields,midKink:d.mid_kink.fields,minBorrowAmount:d.min_borrow_amount,isIsolated:!!n,supplyLimit:p,borrowLimit:f,parsedOriginMarketCollateral:w}},To=async(t,e,a=!1,o,r)=>{if(o=o??(await t.utils.getCoinPrices())?.[e],a){let d=await t.indexer.getMarketPool(e);if(!d)return;d.coinPrice=o??d.coinPrice,d.coinWrappedType=t.utils.getCoinWrappedType(d.coinName);let b;return V.includes(e)&&(b=await t.indexer.getMarketCollateral(e),b.coinPrice=o??b.coinPrice,b.coinWrappedType=t.utils.getCoinWrappedType(b.coinName)),{marketPool:d,collateral:b}}r??=(await ma(t,[e]))[e];let s=xo(r),c=wt(s),i=gt(t.utils,c),n=s.parsedOriginMarketCollateral?qe(s.parsedOriginMarketCollateral):void 0,l=()=>({coinName:e,symbol:t.utils.parseSymbol(e),marketCoinType:t.utils.parseMarketCoinType(e),coinType:t.utils.parseCoinType(e)});return {marketPool:{...l(),sCoinType:t.utils.parseSCoinType(t.utils.parseMarketCoinName(e)),coinWrappedType:t.utils.getCoinWrappedType(e),coinPrice:o??0,highKink:c.highKink,midKink:c.midKink,reserveFactor:c.reserveFactor,borrowWeight:c.borrowWeight,borrowFee:c.borrowFee,marketCoinSupplyAmount:c.marketCoinSupplyAmount,minBorrowAmount:c.minBorrowAmount,...i},collateral:n?{...l(),coinWrappedType:t.utils.getCoinWrappedType(e),coinPrice:o,collateralFactor:n.collateralFactor,liquidationFactor:n.liquidationFactor,liquidationDiscount:n.liquidationDiscount,liquidationPenalty:n.liquidationPenalty,liquidationReserveFactor:n.liquidationReserveFactor,...$e(t.utils,n)}:void 0}},Sa=async(t,e=[...V],a=!1)=>{let o=t.address.get("core.market"),r=await t.utils.getCoinPrices()??{},s={};if(a){let i=await t.indexer.getMarketCollaterals(),n=l=>{e.includes(l.coinName)&&(l.coinPrice=r[l.coinName]??l.coinPrice,l.coinWrappedType=t.utils.getCoinWrappedType(l.coinName),s[l.coinName]=l);};return Object.values(i).forEach(n),s}let c=await t.cache.queryGetObject(o);return await Promise.allSettled(e.map(async i=>{let n=await xt(t,i,a,c?.data,r?.[i]);n&&(s[i]=n);})),s},xt=async(t,e,a=!1,o,r)=>{if(r=r??(await t.utils.getCoinPrices())?.[e],a){let g=await t.indexer.getMarketCollateral(e);return g.coinPrice=r??g.coinPrice,g.coinWrappedType=t.utils.getCoinWrappedType(g.coinName),g}let s=t.address.get("core.market");if(o=o||(await t.cache.queryGetObject(s))?.data,!(o&&o.content?.dataType==="moveObject"))throw new Error("Failed to fetch marketObject");let c=o.content.fields,i=t.utils.parseCoinType(e),n=c.risk_models.fields.table.fields.id.id,l=await t.cache.queryGetDynamicFieldObject({parentId:n,name:{type:"0x1::type_name::TypeName",value:{name:i.substring(2)}}}),d=l?.data;if(!(d&&d.content&&"fields"in d.content))throw new Error(`Failed to fetch riskModelDynamicFieldObject for ${l?.error?.code.toString()}: `);let b=d.content.fields.value.fields,u=c.collateral_stats.fields.table.fields.id.id,p=await t.cache.queryGetDynamicFieldObject({parentId:u,name:{type:"0x1::type_name::TypeName",value:{name:i.substring(2)}}}),f=p?.data;if(!(f&&f.content&&"fields"in f.content))throw new Error(`Failed to fetch collateralStatDynamicFieldObject for ${e}: ${p?.error?.code.toString()}`);let m=f.content.fields.value.fields,y=qe({type:b.type.fields,collateralFactor:b.collateral_factor.fields,liquidationFactor:b.liquidation_factor.fields,liquidationDiscount:b.liquidation_discount.fields,liquidationPenalty:b.liquidation_penalty.fields,liquidationReserveFactor:b.liquidation_revenue_factor.fields,maxCollateralAmount:b.max_collateral_amount,totalCollateralAmount:m.amount,isIsolated:await we(t.utils,e)}),w=$e(t.utils,y);return {coinName:e,symbol:t.utils.parseSymbol(e),coinType:t.utils.parseCoinType(e),marketCoinType:t.utils.parseMarketCoinType(e),coinWrappedType:t.utils.getCoinWrappedType(e),coinPrice:r??0,collateralFactor:y.collateralFactor,liquidationFactor:y.liquidationFactor,liquidationDiscount:y.liquidationDiscount,liquidationPenalty:y.liquidationPenalty,liquidationReserveFactor:y.liquidationReserveFactor,...w}},ge=async({address:t},e)=>{let a=e,o=t.get("core.object")??Ke,r=[],s=!1,c=null;do{let d=await t.cache.queryGetOwnedObjects({owner:a,filter:{StructType:`${o}::obligation::ObligationKey`},options:{showContent:!0},cursor:c,limit:10});if(!d)break;r.push(...d.data),d.hasNextPage&&d.nextCursor?(s=!0,c=d.nextCursor):s=!1;}while(s);let i=r.filter(d=>!!d.data),n=[],l=await F(t.cache,i.map(d=>d.data?.content).filter(d=>d?.dataType==="moveObject").map(d=>d.fields.ownership.fields.of));return await Promise.allSettled(i.map(async({data:d},b)=>{let u=d?.objectId,p=d?.content;if(u&&p&&"fields"in p){let f=p.fields,m=String(f.ownership.fields.of),y=await Tt(t.cache,l[b]);n.push({id:m,keyId:u,locked:y});}})),n},Tt=async(t,e)=>{let a=typeof e=="string"?(await t.queryGetObject(e))?.data:e,o=!1;return a&&a?.content?.dataType==="moveObject"&&"lock_key"in a.content.fields&&(o=!!a.content.fields.lock_key),o},Ye=async({address:t},e)=>{let o=`${t.get("core.packages.query.id")}::obligation_query::obligation_data`,r=[e];return (await t.cache.queryInspectTxn({queryTarget:o,args:r}))?.events[0]?.parsedJson},wa=async(t,e=[...M],a)=>{let o=a??t.suiKit.currentAddress(),r={};return await Promise.allSettled(e.map(async s=>{let c=await Pt(t,s,o);r[s]=c;})),r},Pt=async(t,e,a)=>{let o=a??t.suiKit.currentAddress(),r=t.utils.parseCoinType(e),s=await t.cache.queryGetCoinBalance({owner:o,coinType:r});return h__default.default(s?.totalBalance??"0").toNumber()},ga=async(t,e,a)=>{e=e||[...M].map(s=>t.utils.parseMarketCoinName(s));let o=a??t.suiKit.currentAddress(),r={};return await Promise.allSettled(e.map(async s=>{let c=await At(t,s,o);r[s]=c;})),r},At=async(t,e,a)=>{let o=a??t.suiKit.currentAddress(),r=t.utils.parseMarketCoinType(e),s=await t.cache.queryGetCoinBalance({owner:o,coinType:r});return h__default.default(s?.totalBalance??"0").toNumber()},ha=async(t,e)=>{let o=[],r=e.reduce((i,n)=>{let l=t.utils.parseCoinType(n).slice(2);return i[l]=n,i},{}),s=e.map(i=>ft[i]?ft[i]:(o.push(i),null)).filter(i=>!!i),c=await t.cache.queryGetObjects(s);if(o.length>0){let i=t.address.get("core.market"),n=await t.cache.queryGetObject(i);if(n?.data?.content?.dataType!=="moveObject")throw new Error("Failed to get market object");let d=n.data.content.fields.vault.fields.flash_loan_fees.fields.table.fields.id.id,u=(await t.cache.queryGetDynamicFields({parentId:d,limit:10}))?.data.filter(p=>{let f=p.name.value.name;return !!r[f]}).map(p=>p.objectId)??[];c.push(...await t.cache.queryGetObjects(u));}return c.reduce((i,n)=>{if(n.content?.dataType==="moveObject"){let l=n.content.fields,d=n.content.fields.name.fields.name,b=+l.value;i[r[d]]=b/1e4;}return i},{})};var Po=zod.z.object({balance:zod.z.string(),enable_claim:zod.z.boolean()}).transform(t=>({totalPoolReward:h__default.default(t.balance).shiftedBy(-9).toNumber(),isClaimEnabled:t.enable_claim})),Ao=zod.z.object({value:zod.z.string()}).transform(t=>h__default.default(t.value).shiftedBy(-9).toNumber()),ka=async(t,e)=>{let a=t.address.get("loyaltyProgram.rewardPool"),o=await t.cache.queryGetObject(a);if(o?.data?.content?.dataType!=="moveObject")return null;let r=o.data.content.fields,{isClaimEnabled:s,totalPoolReward:c}=Po.parse(r),i={pendingReward:0,totalPoolReward:c,isClaimEnabled:s};if(e=e??(await t.getVeScas())[0]?.keyObject,!e)return i;let n=t.address.get("loyaltyProgram.userRewardTableId"),l=await t.cache.queryGetDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:typeof e=="string"?e:e.objectId}});if(l?.data?.content?.dataType!=="moveObject")return i;let d=l.data.content.fields;return i.pendingReward=Ao.parse(d),i};var xa=async(t,e=[...M],a,o,r,s=!1)=>{let c=e.map(p=>t.utils.parseMarketCoinName(p)),i=c.filter(p=>G.includes(p));r=r??await t.utils.getCoinPrices(),o=o??(await t.getMarketPools(e,{indexer:s,coinPrices:r})).pools;let n=await t.getSpools(i,{indexer:s,marketPools:o,coinPrices:r}),[l,d,b]=await Promise.all([t.getCoinAmounts(e,a),t.getMarketCoinAmounts(c,a),t.getAllStakeAccounts(a)]),u={};return await Promise.allSettled(e.map(async p=>{let f=i.find(y=>y===t.utils.parseMarketCoinName(p)),m=t.utils.parseMarketCoinName(p);u[p]=await Ot(t,p,a,s,o?.[p],f?n[f]:void 0,f?b[f]:[],l?.[p],d?.[m],r?.[p]??0);})),u},Ot=async(t,e,a,o=!1,r,s,c,i,n,l,d)=>{let b=t.utils.parseMarketCoinName(e);if(l=l??(await t.utils.getCoinPrices())?.[e]??0,r=r??await t.getMarketPool(e,{indexer:o,coinPrice:l}),!r)throw new Error(`Failed to fetch marketPool for ${e}`);s=s??G.includes(b)?await t.getSpool(b,{indexer:o,marketPool:r,coinPrices:{[e]:l}}):void 0,c=c||G.includes(b)?await t.getStakeAccounts(b,a):[],i=i||await t.getCoinAmount(e,a),n=n||await t.getMarketCoinAmount(b,a),d=d||await t.getSCoinAmount(b,a);let u=t.utils.getCoinDecimal(e),p=h__default.default(0),f=h__default.default(0),m=h__default.default(0),y=h__default.default(0),w=h__default.default(0),g=h__default.default(0),k=h__default.default(0),T=h__default.default(0),j=h__default.default(0);if(s)for(let x of c){let L=h__default.default(x.staked),ce=L.shiftedBy(-1*s.coinDecimal),D=L.multipliedBy(r?.conversionRate??1),v=D.shiftedBy(-1*s.coinDecimal),U=v.multipliedBy(s.coinPrice);p=p.plus(L),f=f.plus(ce),m=m.plus(D),y=y.plus(v),w=w.plus(U),g=g.plus(L),k=g.shiftedBy(-1*s.coinDecimal);let ne=s.currentPointIndex?h__default.default(s.currentPointIndex-x.index).dividedBy(1e9):1;T=T.plus(L.multipliedBy(ne).plus(x.points).multipliedBy(s.exchangeRateNumerator).dividedBy(s.exchangeRateDenominator)),j=T.shiftedBy(-1*s.rewardCoinDecimal);}let A=h__default.default(n).plus(h__default.default(d)).multipliedBy(r?.conversionRate??1),S=A.shiftedBy(-1*u),R=S.multipliedBy(l??0),J=h__default.default(l??0).multipliedBy(r?.conversionRate??1),X=h__default.default(n).plus(h__default.default(d)),Z=X.shiftedBy(-1*u),Q=h__default.default(i),E=Q.shiftedBy(-1*u),P=Ie(A,r?.supplyAmount??1/0).plus(m),O=Ie(S,r?.supplyCoin??1/0).plus(y);return {coinName:e,symbol:t.utils.parseSymbol(e),coinType:t.utils.parseCoinType(e),marketCoinType:t.utils.parseMarketCoinType(e),sCoinType:r?.sCoinType??"",coinDecimal:u,coinPrice:l??0,conversionRate:r?.conversionRate??1,marketCoinPrice:J.toNumber(),supplyApr:r?.supplyApr??0,supplyApy:r?.supplyApy??0,rewardApr:s?.rewardApr??0,suppliedAmount:A.plus(m).toNumber(),suppliedCoin:S.plus(y).toNumber(),suppliedValue:R.plus(w).toNumber(),stakedMarketAmount:p.toNumber(),stakedMarketCoin:f.toNumber(),stakedAmount:m.toNumber(),stakedCoin:y.toNumber(),stakedValue:w.toNumber(),unstakedMarketAmount:X.toNumber(),unstakedMarketCoin:Z.toNumber(),unstakedAmount:A.toNumber(),unstakedCoin:S.toNumber(),unstakedValue:R.toNumber(),availableSupplyAmount:Q.toNumber(),availableSupplyCoin:E.toNumber(),availableWithdrawAmount:P.toNumber(),availableWithdrawCoin:O.toNumber(),availableStakeAmount:X.toNumber(),availableStakeCoin:Z.toNumber(),availableUnstakeAmount:g.toNumber(),availableUnstakeCoin:k.toNumber(),availableClaimAmount:T.toNumber(),availableClaimCoin:j.toNumber(),isIsolated:r?r.isIsolated:!1}},Ta=async(t,e,a,o,r=!1)=>{a=a??await t.getMarketPools(void 0,{indexer:r}),o=o??await t.getAllCoinPrices({marketPools:a.pools});let[s,c]=await Promise.all([t.getCoinAmounts(void 0,e),t.getObligations(e)]),i=await F(t.cache,c.map(l=>l.id)),n={};return await Promise.allSettled(c.map(async(l,d)=>{n[l.keyId]=await _o(t,i[d]??l.id,e,r,a,o,s);})),n},_o=async(t,e,a,o=!1,r,s,c)=>{let i=Array.from(new Set([...M,...V])),n=[...V];r=r??await t.getMarketPools(void 0,{indexer:o}),s=s??await t.getAllCoinPrices({marketPools:r.pools}),c=c??await t.getCoinAmounts(i,a);let[l,d,b]=await Promise.all([t.queryObligation(e),t.getBorrowIncentivePools(void 0,{coinPrices:s,marketPools:r.pools}),t.getBorrowIncentiveAccounts(e)]),u={},p={},f={},m=0,y=h__default.default(0),w=h__default.default(0),g=h__default.default(0),k=0,T=0,j=h__default.default(0),A=h__default.default(0);for(let P of n){let O=l?.collaterals.find(D=>{let v=t.utils.parseCoinNameFromType(D.type.name);return P===v}),I=r.collaterals[P],x=t.utils.getCoinDecimal(P),L=s?.[P],ce=c?.[P]??0;if(I&&L){let D=h__default.default(O?.amount??0),v=D.shiftedBy(-1*x),U=v.multipliedBy(L),ie=U.multipliedBy(I.collateralFactor),ne=U.multipliedBy(I.liquidationFactor),pe=h__default.default(ce),ke=pe.shiftedBy(-1*x);y=y.plus(U),w=w.plus(ie),g=g.plus(ne),D.isGreaterThan(0)&&m++,u[P]={coinName:P,coinType:t.utils.parseCoinType(P),symbol:t.utils.parseSymbol(P),coinDecimal:x,coinPrice:L,depositedAmount:D.toNumber(),depositedCoin:v.toNumber(),depositedValue:U.toNumber(),borrowCapacityValue:ie.toNumber(),requiredCollateralValue:ne.toNumber(),availableDepositAmount:pe.toNumber(),availableDepositCoin:ke.toNumber(),availableWithdrawAmount:0,availableWithdrawCoin:0};}}let S=[...new Set([...Object.values(r.pools).map(P=>P.coinName)])];for(let P of S){let O=l?.debts.find(D=>{let v=t.utils.parseCoinNameFromType(D.type.name);return P===v}),I=r.pools[P],x=t.utils.getCoinDecimal(P),L=s?.[P],ce=c?.[P]??0;if(I&&L){let D=O?.borrowIndex?I.borrowIndex/Number(O.borrowIndex)-1:0,v=h__default.default(O?.amount??0).multipliedBy(D+1),U=v.shiftedBy(-1*x),ie=v,ne=ie.shiftedBy(-1*x),pe=h__default.default(ce),ke=pe.shiftedBy(-1*x),me=ne.multipliedBy(L),Fe=me.multipliedBy(I.borrowWeight);j=j.plus(me),A=A.plus(Fe),v.isGreaterThan(0)&&k++,p[P]={coinName:P,coinType:t.utils.parseCoinType(P),symbol:t.utils.parseSymbol(P),coinDecimal:x,coinPrice:L,borrowedAmount:v.toNumber(),borrowedCoin:U.toNumber(),borrowedValue:me.toNumber(),borrowedValueWithWeight:Fe.toNumber(),borrowIndex:Number(O?.borrowIndex??0),requiredRepayAmount:ie.toNumber(),requiredRepayCoin:ne.toNumber(),availableBorrowAmount:0,availableBorrowCoin:0,availableRepayAmount:pe.toNumber(),availableRepayCoin:ke.toNumber()};}}for(let[P,O]of Object.entries(b)){let I=P,x=d[I];if(x){let L=[];Object.entries(O.pointList).forEach(([ce,D])=>{let v=x.points[t.utils.parseSCoinTypeNameToMarketCoinName(ce)];if(D&&v){let U=h__default.default(0),ie=h__default.default(0),ne=h__default.default(D.weightedAmount),ke=v.currentPointIndex?Math.max(h__default.default(v.currentPointIndex-D.index).dividedBy(1e9).toNumber(),0):1;U=U.plus(ne.multipliedBy(ke).plus(D.points)),ie=U.shiftedBy(-1*v.coinDecimal);let me=h__default.default(1e12),Fe=h__default.default(D.weightedAmount).div(h__default.default(O.debtAmount).multipliedBy(v.baseWeight).dividedBy(me)).isFinite()?h__default.default(D.weightedAmount).div(h__default.default(O.debtAmount).multipliedBy(v.baseWeight).dividedBy(me)).toNumber():1;U.isGreaterThanOrEqualTo(0)&&L.push({coinName:v.coinName,coinType:v.coinType,symbol:v.symbol,coinDecimal:v.coinDecimal,coinPrice:v.coinPrice,availableClaimAmount:U.toNumber(),availableClaimCoin:ie.toNumber(),boostValue:Fe});}}),Object.keys(x.points).some(ce=>{let D=x.points[ce]?.rewardApr;return D!==1/0&&typeof D=="number"&&D>0})&&O.debtAmount>0&&T++,f[I]={coinName:x.coinName,coinType:x.coinType,symbol:x.symbol,coinDecimal:x.coinDecimal,coinPrice:x.coinPrice,rewards:L};}}let R=g.isZero()?A.isGreaterThan(0)?h__default.default(100):h__default.default(0):A.dividedBy(g);R=R.isLessThan(1)?R:h__default.default(1);let J=y.minus(j).isGreaterThan(0)?y.minus(j):h__default.default(0),X=w.minus(A).isGreaterThan(0)?w.minus(A):h__default.default(0),Z=A.isGreaterThan(0)?g:h__default.default(0),Q=A.minus(Z).isGreaterThan(0)?A.minus(Z):h__default.default(0),E={obligationId:typeof e=="string"?e:e.objectId,totalDepositedValue:y.toNumber(),totalBorrowedValue:j.toNumber(),totalBalanceValue:J.toNumber(),totalBorrowCapacityValue:w.toNumber(),totalAvailableCollateralValue:X.toNumber(),totalBorrowedValueWithWeight:A.toNumber(),totalRequiredCollateralValue:Z.toNumber(),totalUnhealthyCollateralValue:Q.toNumber(),totalRiskLevel:R.toNumber(),totalDepositedPools:m,totalBorrowedPools:k,totalRewardedPools:T,collaterals:u,debts:p,borrowIncentives:f};for(let[P,O]of Object.entries(E.collaterals)){let I=r.collaterals[P];if(I){let x=h__default.default(E.totalAvailableCollateralValue).dividedBy(I.collateralFactor).dividedBy(I.coinPrice).shiftedBy(I.coinDecimal);x=E.totalBorrowedValueWithWeight===0?h__default.default(O.depositedAmount):Ie(x.multipliedBy(Ge(h__default.default(E.totalAvailableCollateralValue).dividedBy(I.collateralFactor).toNumber(),3,"increase")).toNumber(),O.depositedAmount,I.depositAmount),O.availableWithdrawAmount=x.toNumber(),O.availableWithdrawCoin=x.shiftedBy(-1*O.coinDecimal).toNumber();}}for(let[P,O]of Object.entries(E.debts)){let I=r.pools[P];if(I){let x=h__default.default(O.requiredRepayAmount).multipliedBy(Ge(O.borrowedValue,3,"decrease")),L=h__default.default(E.totalAvailableCollateralValue).dividedBy(I.borrowWeight).shiftedBy(I.coinDecimal).dividedBy(I.coinPrice);L=E.totalAvailableCollateralValue!==0&&h__default.default(I.maxBorrowCoin).isGreaterThan(I.borrowCoin)?Ie(L.multipliedBy(Ge(L.shiftedBy(-1*I.coinDecimal).multipliedBy(I.coinPrice).toNumber(),3,"increase")).toNumber(),I.supplyAmount):h__default.default(0),O.availableBorrowAmount=L.toNumber(),O.availableBorrowCoin=L.shiftedBy(-1*O.coinDecimal).toNumber(),O.requiredRepayAmount=x.toNumber(),O.requiredRepayCoin=x.shiftedBy(-1*O.coinDecimal).toNumber();}}return E},Pa=async(t,e=!1)=>{let a=await t.getMarketPools(void 0,{indexer:e}),o=h__default.default(0),r=h__default.default(0),s=h__default.default(0);if(e){let i=await t.indexer.getTotalValueLocked();return {supplyValue:i.supplyValue,supplyValueChangeRatio:i.supplyValueChangeRatio,borrowValue:i.borrowValue,borrowValueChangeRatio:i.borrowValueChangeRatio,totalValue:i.totalValue,totalValueChangeRatio:i.totalValueChangeRatio,supplyLendingValue:i.supplyLendingValue,supplyLendingValueChangeRatio:i.supplyLendingValueChangeRatio,supplyCollateralValue:i.supplyCollateralValue,supplyCollateralValueChangeRatio:i.supplyCollateralValueChangeRatio}}for(let i of Object.values(a.pools))o=o.plus(h__default.default(i.supplyCoin).multipliedBy(i.coinPrice)),s=s.plus(h__default.default(i.borrowCoin).multipliedBy(i.coinPrice));for(let i of Object.values(a.collaterals))r=r.plus(h__default.default(i.depositCoin).multipliedBy(i.coinPrice));return {supplyValue:o.plus(r).toNumber(),supplyLendingValue:o.toNumber(),supplyCollateralValue:r.toNumber(),borrowValue:s.toNumber(),totalValue:o.plus(r).minus(s).toNumber()}},Aa=async(t,e,a=!1)=>{let o=await t.utils.getCoinPrices(),r=await t.getMarketPools(void 0,{indexer:a,coinPrices:o}),[s,c,i,n]=await Promise.all([t.getLendings(void 0,e,{indexer:a,marketPools:r.pools,coinPrices:o}),t.getObligationAccounts(e,{indexer:a,market:r,coinPrices:o}),t.getBorrowIncentivePools(void 0,{marketPools:r.pools,coinPrices:o}),t.getVeScas({walletAddress:e,excludeEmpty:!0})]),l=Object.values(s).filter(f=>f.availableWithdrawCoin>0).map(f=>({suppliedCoin:f.availableWithdrawCoin,suppliedValue:f.suppliedValue,stakedCoin:f.availableUnstakeCoin,coinName:f.coinName,symbol:f.symbol,coinType:f.coinType,coinPrice:f.coinPrice,coinDecimals:f.coinDecimal,supplyApr:f.supplyApr,supplyApy:f.supplyApy,incentiveApr:isFinite(f.rewardApr)?f.rewardApr:0})),d=Object.values(c).filter(f=>!!f&&f.totalBorrowedValueWithWeight>0).map(f=>({obligationId:f.obligationId,totalDebtsInUsd:f.totalBorrowedValueWithWeight,totalCollateralInUsd:f.totalDepositedValue,riskLevel:f.totalRiskLevel,availableCollateralInUsd:f.totalAvailableCollateralValue,totalUnhealthyCollateralInUsd:f.totalUnhealthyCollateralValue,borrowedPools:Object.values(f.debts).filter(m=>m.borrowedCoin>0).map(m=>({coinName:m.coinName,symbol:m.symbol,coinDecimals:m.coinDecimal,coinType:m.coinType,coinPrice:m.coinPrice,borrowedCoin:m.borrowedCoin,borrowedValueInUsd:m.borrowedValueWithWeight,borrowApr:r.pools[m.coinName]?.borrowApr,borrowApy:r.pools[m.coinName]?.borrowApy,incentiveInfos:Object.values(i[m.coinName]?.points??{}).filter(y=>isFinite(y.rewardApr)).map(y=>({coinName:y.coinName,symbol:y.symbol,coinType:y.coinType,incentiveApr:y.rewardApr}))}))})),b=Object.values(s).reduce((f,m)=>(m.availableClaimCoin===0||(f[m.symbol]?f[m.symbol].pendingRewardInCoin+=m.availableClaimCoin:f[m.symbol]={symbol:m.symbol,coinType:suiKit.normalizeStructTag(suiKit.SUI_TYPE_ARG),coinPrice:m.coinPrice,pendingRewardInCoin:m.availableClaimCoin}),f),{}),u=Object.values(c).filter(f=>!!f).reduce((f,m)=>(Object.values(m.borrowIncentives).forEach(y=>{y.rewards.forEach(w=>{if(w.availableClaimCoin===0)return f;f[w.coinName]?f[w.coinName].pendingRewardInCoin+=w.availableClaimCoin:f[w.coinName]={symbol:w.symbol,coinType:w.coinType,coinPrice:w.coinPrice,pendingRewardInCoin:w.availableClaimCoin};});}),f),{}),p=n.map(({keyId:f,lockedScaCoin:m,currentVeScaBalance:y,unlockAt:w})=>({veScaKey:f,coinPrice:o.sca??0,lockedScaInCoin:m,lockedScaInUsd:m*(o.sca??0),currentVeScaBalance:y,remainingLockPeriodInDays:w-Date.now()>0?(w-Date.now())/864e5:0,unlockAt:w}));return {totalSupplyValue:l.reduce((f,m)=>(f+=m.suppliedValue,f),0),...d.reduce((f,m)=>(f.totalDebtValue+=m.totalDebtsInUsd,f.totalCollateralValue+=m.totalCollateralInUsd,f),{totalDebtValue:0,totalCollateralValue:0}),totalLockedScaValue:p.reduce((f,m)=>(f+=m.lockedScaInUsd,f),0),lendings:l,borrowings:d,pendingRewards:{lendings:Object.entries(b).reduce((f,[m,y])=>(f.push({...y,coinName:m,pendingRewardInUsd:y.coinPrice*y.pendingRewardInCoin}),f),[]),borrowIncentives:Object.entries(u).reduce((f,[m,y])=>(f.push({coinName:m,...y,pendingRewardInUsd:y.coinPrice*y.pendingRewardInCoin}),f),[])},veScas:p}};var It=async({address:t},e,a)=>{let o=t.get(`core.coins.${e}.oracle.pyth.feedObject`);if(a=a||(await t.cache.queryGetObject(o))?.data,a){let r=a;if(r.content&&"fields"in r.content){let s=r.content.fields,c=Number(s.price_info.fields.price_feed.fields.price.fields.expo.fields.magnitude),i=Number(s.price_info.fields.price_feed.fields.price.fields.expo.fields.negative),n=Number(s.price_info.fields.price_feed.fields.price.fields.price.fields.magnitude),l=Number(s.price_info.fields.price_feed.fields.price.fields.price.fields.negative);return n*10**((i?-1:1)*c)*(l?-1:1)}}return 0},Je=async({address:t},e)=>{let a=e.reduce((s,c)=>{let i=t.get(`core.coins.${c}.oracle.pyth.feedObject`);return i&&(s[i]?s[i].push(c):s[i]=[c]),s},{}),r=(await t.cache.queryGetObjects(Object.keys(a))).reduce((s,c)=>(a[c.objectId].forEach(i=>{s[i]=c;}),s),{});return (await Promise.all(Object.entries(r).map(async([s,c])=>({coinName:s,price:await It({address:t},s,c)})))).reduce((s,c)=>(s[c.coinName]=c.price,s),{})},Oa=async(t,e,a,o=!1)=>{if(a=a??(o?await t.getCoinPricesByIndexer():await t.utils.getCoinPrices()),e=e??(await t.getMarketPools(void 0,{coinPrices:a,indexer:o})).pools,!e)throw new Error("Failed to fetch market pool for getAllCoinPrices");let r={};return q.forEach(s=>{let c=t.utils.parseCoinName(s);r[s]=h__default.default(a[c]??0).multipliedBy(e[c]?.conversionRate??1).toNumber();}),{...a,...r}};var Ia=async(t,e)=>{let a=t.get("referral.bindingTableId"),o=await t.cache.queryGetDynamicFieldObject({parentId:a,name:{type:"address",value:e}});return o?.data?.content?.dataType!=="moveObject"?null:o.data.content.fields.value};var Ra=async({utils:t},e)=>{let a=t.address.get("scoin.id"),o=[t.getSCoinTreasury(e)],r=[t.parseSCoinType(e),t.parseUnderlyingSCoinType(e)],s=`${a}::s_coin_converter::total_supply`,i=(await t.cache.queryInspectTxn({queryTarget:s,args:o,typeArgs:r}))?.results;if(i&&i[0]?.returnValues){let n=Uint8Array.from(i[0].returnValues[0][0]),l=i[0].returnValues[0][1];return Mo__default.default(l==="u64","Result type is not u64"),h__default.default(bcs.bcs.u64().parse(n)).shiftedBy(t.getCoinDecimal(t.parseCoinName(e))).toNumber()}return 0},va=async({utils:t},e=[...q],a)=>{let o=a||t.suiKit.currentAddress(),r={};return await Promise.allSettled(e.map(async s=>{let c=await Rt({utils:t},s,o);r[s]=c;})),r},Rt=async({utils:t},e,a)=>{let o=a||t.suiKit.currentAddress(),r=t.parseSCoinType(e),s=await t.cache.queryGetCoinBalance({owner:o,coinType:r});return h__default.default(s?.totalBalance??"0").toNumber()},_a=t=>q.includes(t),jo=(t,e)=>{if(t===e)throw new Error("fromAsset and toAsset must be different");if(!_a(t))throw new Error("fromAsset is not supported");if(!_a(e))throw new Error("toAsset is not supported")},Ma=async(t,e,a,o)=>{jo(e,a);let r=t.utils.parseCoinName(e),s=t.utils.parseCoinName(a),c=await Promise.all([t.getMarketPool(r),t.getMarketPool(s)]);if(c.some(b=>!b))throw new Error("Failed to fetch the lendings data");if(c.some(b=>b?.conversionRate===0))throw new Error("Conversion rate cannot be zero");let i=c[0].conversionRate,n=1/c[1].conversionRate,d=await(async()=>{let b=await t.utils.getCoinPrices();if(!b[r]||!b[s])throw new Error("Failed to fetch the coin prices");if(b[s]===0)throw new Error("Price of toCoin cannot be zero");return b[r]/b[s]})();return h__default.default(i).multipliedBy(d).multipliedBy(n).toNumber()};var ja=async(t,e)=>{let a=e.map((d,b)=>({poolCoinName:e[b],spool:B[d]?.spool,spoolReward:B[d]?.spoolReward,sCoinTreasury:B[d]?.sCoinTreasury})),[o,r,s]=await Promise.all([F(t.cache,a.map(d=>d.spool).filter(d=>!!d)),F(t.cache,a.map(d=>d.spoolReward).filter(d=>!!d)),F(t.cache,a.map(d=>d.sCoinTreasury).filter(d=>!!d))]),c=(d,b,u)=>{let p={},f=b.reduce((m,y)=>(m[y.objectId]=y,m),{});for(let m of d)m[u]&&(p[m.poolCoinName]=f[m[u]]);return p},i=c(a,o,"spool"),n=c(a,r,"spoolReward"),l=c(a,s,"sCoinTreasury");return e.reduce((d,b)=>(d[b]={spool:i[b],spoolReward:n[b],sCoinTreasury:l[b]},d),{})},Do=({spool:t,spoolReward:e})=>{let a=Y(t),o=Y(e);return {stakeType:a.stake_type,maxDistributedPoint:a.max_distributed_point,distributedPoint:a.distributed_point,distributedPointPerPeriod:a.distributed_point_per_period,pointDistributionTime:a.point_distribution_time,maxStake:a.max_stakes,stakes:a.stakes,index:a.index,createdAt:a.created_at,lastUpdate:a.last_update,...o}},Da=async(t,e=[...G],a=!1,o,r)=>{let s=e.map(n=>t.utils.parseCoinName(n));if(o=o??(await t.getMarketPools(s,{indexer:a})).pools,r=r??await t.getAllCoinPrices({marketPools:o})??{},!o)throw new Error(`Fail to fetch marketPools for ${s}`);let c={};if(a){let n=await t.indexer.getSpools(),l=d=>{if(!e.includes(d.marketCoinName))return;let b=t.utils.parseCoinName(d.marketCoinName),u=t.utils.getSpoolRewardCoinName(d.marketCoinName);d.coinPrice=r[b]??d.coinPrice,d.marketCoinPrice=r[d.marketCoinName]??d.marketCoinPrice,d.rewardCoinPrice=r[u]??d.rewardCoinPrice,c[d.marketCoinName]=d;};return Object.values(n).forEach(l),c}let i=await ja(t,s);return await Promise.allSettled(e.map(async(n,l)=>{try{let d=s[l],b=await Bo(t,n,a,r,i[d]);b&&(c[n]=b);}catch(d){console.error(d);}})),c},Bo=async(t,e,a=!1,o,r)=>{let s=t.utils.parseCoinName(e);if(o=o||await t.getAllCoinPrices(),a){let y=await t.indexer.getSpool(e),w=t.utils.parseCoinName(e),g=t.utils.getSpoolRewardCoinName(e);return y.coinPrice=o?.[w]??y.coinPrice,y.marketCoinPrice=o?.[e]??y.marketCoinPrice,y.rewardCoinPrice=o?.[g]??y.rewardCoinPrice,y}r??=(await ja(t,[s]))[s];let c=t.utils.getSpoolRewardCoinName(e);o=o||await t.utils.getCoinPrices();let i=Do(r),n=zt(i),l=o?.[e]??0,d=t.utils.getCoinDecimal(e),b=Yt(n,l,d),u=Jt(i),p=o?.[c]??0,f=t.utils.getCoinDecimal(c),m=Xt(n,u,b,p,f);return {marketCoinName:e,symbol:t.utils.parseSymbol(e),coinType:t.utils.parseCoinType(s),marketCoinType:t.utils.parseMarketCoinType(s),rewardCoinType:Se(c)?t.utils.parseMarketCoinType(c):t.utils.parseCoinType(c),sCoinType:t.utils.parseSCoinType(e),coinDecimal:t.utils.getCoinDecimal(s),rewardCoinDecimal:t.utils.getCoinDecimal(c),coinPrice:o?.[s]??0,marketCoinPrice:l,rewardCoinPrice:p,maxPoint:n.maxPoint,distributedPoint:n.distributedPoint,maxStake:n.maxStake,...b,exchangeRateNumerator:u.exchangeRateNumerator,exchangeRateDenominator:u.exchangeRateDenominator,...m}},ve=async({utils:t},e)=>{let a=e||t.suiKit.currentAddress(),o=t.address.get("spool.object"),r=`${o}::spool_account::SpoolAccount`,s=[],c=!1,i=null;do{let b=await t.cache.queryGetOwnedObjects({owner:a,filter:{StructType:r},options:{showContent:!0,showType:!0},cursor:i,limit:10});b&&(s.push(...b.data),b.hasNextPage&&b.nextCursor?(c=!0,i=b.nextCursor):c=!1);}while(c);let n=G.reduce((b,u)=>(b[u]=[],b),{}),l=Object.keys(n).reduce((b,u)=>{let p=t.parseCoinName(u),f=t.parseMarketCoinType(p);return b[u]=`${o}::spool_account::SpoolAccount<${f}>`,b},{}),d=Object.entries(l).reduce((b,[u,p])=>(b[p]=u,b),{});for(let b of s.map(u=>u.data)){let u=b?.objectId,p=b?.type;if(u&&b?.content&&"fields"in b.content){let f=b.content.fields,m=String(f.spool_id),y=String(f.stake_type.fields.name),w=Number(f.stakes),g=Number(f.index),k=Number(f.points),T=Number(f.total_points),j={sweth:n.sweth,ssui:n.ssui,swusdc:n.swusdc,swusdt:n.swusdt,scetus:n.scetus,safsui:n.safsui,shasui:n.shasui,svsui:n.svsui,susdc:n.susdc},A=utils.normalizeStructTag(p),S=j[d[A]];S&&S.push({id:u,type:A,stakePoolId:m,stakeType:utils.normalizeStructTag(y),staked:w,index:g,points:k,totalPoints:T});}}return n},vt=async({utils:t},e)=>{let a=t.address.get(`spool.pools.${e}.id`),o,r=await t.cache.queryGetObject(a);if(r?.data){let s=r.data,c=s.objectId,i=s.type;if(s.content&&"fields"in s.content){let n=s.content.fields,l=Number(n.max_distributed_point),d=Number(n.distributed_point),b=Number(n.distributed_point_per_period),u=Number(n.point_distribution_time),p=Number(n.max_stakes),f=String(n.stake_type.fields.name),m=Number(n.stakes),y=Number(n.index),w=Number(n.created_at),g=Number(n.last_update);o={id:c,type:utils.normalizeStructTag(i),maxPoint:l,distributedPoint:d,pointPerPeriod:b,period:u,maxStake:p,stakeType:utils.normalizeStructTag(f),totalStaked:m,index:y,createdAt:w,lastUpdate:g};}}return o},Mt=async({utils:t},e)=>{let a=t.address.get(`spool.pools.${e}.rewardPoolId`),o,r=await t.cache.queryGetObject(a);if(r?.data){let s=r.data,c=s.objectId,i=s.type;if(s.content&&"fields"in s.content){let n=s.content.fields,l=String(n.spool_id),d=Number(n.exchange_rate_numerator),b=Number(n.exchange_rate_denominator),u=Number(n.rewards),p=Number(n.claimed_rewards);o={id:c,type:utils.normalizeStructTag(i),stakePoolId:l,ratioNumerator:d,ratioDenominator:b,rewards:u,claimedRewards:p};}}return o};var Ko=async(t,e)=>{let a=e||t.suiKit.currentAddress(),r=`${t.address.get("vesca.object")}::ve_sca::VeScaKey`,s=[],c=!1,i=null;do{let l=await t.cache.queryGetOwnedObjects({owner:a,filter:{StructType:r},cursor:i,limit:10});l&&(s.push(...l.data),l&&l.hasNextPage&&l.nextCursor?(c=!0,i=l.nextCursor):c=!1);}while(c);return s.map(l=>l.data).filter(l=>!!l)},et=async({utils:t},e,a)=>{let o=await Ko(t,e),r=Array(o.length).fill(null),s=o.map(async(i,n)=>{let l=await Me(t,i);l&&(r[n]=l);});await Promise.allSettled(s);let c=r.filter(Boolean).sort((i,n)=>n.currentVeScaBalance-i.currentVeScaBalance);return a?c.filter(i=>i.lockedScaAmount!=="0"):c},Na=zod.z.object({objectId:zod.z.string(),digest:zod.z.string(),version:zod.z.string()}),Me=async(t,e)=>{let a=t.address.get("vesca.tableId");if(!e)return;typeof e=="object"&&(e=Na.parse(e));let o,r=await t.cache.queryGetDynamicFieldObject({parentId:a,name:{type:"0x2::object::ID",value:typeof e=="string"?e:e.objectId}});if(!r)return;let s=r.data;if(s&&s.content&&s.content.dataType==="moveObject"&&"fields"in s.content){let c=s.content.fields.value.fields,i=Math.max(+c.unlock_at*1e3-Date.now(),0),n=String(c.locked_sca_amount),l=h__default.default(c.locked_sca_amount).shiftedBy(-9).toNumber(),d=l*(Math.floor(i/1e3)/126144e3);o={id:s.objectId,keyId:typeof e=="string"?e:e.objectId,keyObject:typeof e=="string"?void 0:e,object:Na.parse(r.data),lockedScaAmount:n,lockedScaCoin:l,currentVeScaBalance:d,unlockAt:h__default.default(c.unlock_at*1e3).toNumber()};}return o},Eo=async(t,e)=>{let a=t.address.get("vesca.id"),o=t.address.get("vesca.config");e=e??t.address.get("vesca.treasury");let r=new suiKit.SuiTxBlock,s=`${a}::treasury::refresh`,c=[o,e,r.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],i=`${a}::treasury::total_ve_sca_amount`,n=[e,r.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],l=await Promise.all(c.map(async f=>typeof f=="string"?(await t.cache.queryGetObject(f))?.data:f)),d=await Promise.all(n.map(async f=>typeof f=="string"?(await t.cache.queryGetObject(f))?.data:f));r.moveCall(s,l),r.moveCall(i,d);let b=await r.txBlock.build({client:t.suiKit.client(),onlyTransactionKind:!0}),p=(await t.cache.queryClient.fetchQuery({queryKey:N.rpc.getTotalVeScaTreasuryAmount(c,n),queryFn:async()=>await t.suiKit.inspectTxn(b)})).results;if(p&&p[1]?.returnValues){let f=Uint8Array.from(p[1].returnValues[0][0]),m=p[1].returnValues[0][1];return Mo__default.default(m==="u64","Result type is not u64"),bcs.bcs.u64().parse(f)}return "0"},La=async t=>{let e=t.address.get("vesca.treasury"),a=await t.cache.queryGetObject(e);if(!a||a.data?.content?.dataType!=="moveObject")return null;let o=a.data.content.fields,r=h__default.default(o.unlock_schedule.fields.locked_sca_amount).shiftedBy(-9).toNumber(),s=h__default.default(await Eo(t,a.data)??0).shiftedBy(-9).toNumber(),c=r>0?s/r*4:0;return {totalLockedSca:r,totalVeSca:s,averageLockingPeriod:c,averageLockingPeriodUnit:"year"}};var Fa=async(t,e)=>{let a={},o=t.address.get("core.market"),r=(await t.cache.queryGetObject(o))?.data;if(!(r&&r.content?.dataType==="moveObject"))throw new Error("Failed to fetch marketObject");let s=r.content.fields,c=e.reduce((g,k)=>(g.push([k,t.utils.parseCoinType(k).substring(2)]),g),[]),i=s.vault.fields.balance_sheets.fields.table.fields.id.id,n=s.collateral_stats.fields.table.fields.id.id,l=s.borrow_dynamics.fields.table.fields.id.id,d=s.interest_models.fields.table.fields.id.id,b=s.risk_models.fields.table.fields.id.id,u="0x1::type_name::TypeName",p="0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey",f="0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey",m="0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::BorrowLimitKey",y="0xe7dbb371a9595631f7964b7ece42255ad0e738cc85fe6da26c7221b220f01af6::market_dynamic_keys::IsolatedAssetKey",w=async(g,k,T)=>{try{return (await t.cache.queryGetDynamicFieldObject({parentId:g,name:{type:k,value:T}}))?.data?.objectId}catch(j){console.error(j.message);return}};return await Promise.all(c.map(async([g,k])=>{let T=await Promise.all([w(i,u,{name:k}),w(n,u,{name:k}),w(l,u,{name:k}),w(d,u,{name:k}),w(b,u,{name:k}),w(o,p,k),w(o,f,k),w(o,m,k),w(o,y,k)]),j=t.address.get(`spool.pools.s${g}.id`),A=t.address.get(`spool.pools.s${g}.rewardPoolId`),S=t.address.get(`scoin.coins.s${g}.coinType`),R=S?t.utils.parseSCoinName(g):void 0,J=R?t.utils.parseSymbol(R):void 0,X=t.address.get(`scoin.coins.s${g}.treasury`),Z=t.address.get(`core.coins.${g}.metaData`),Q=t.address.get(`scoin.coins.s${g}.metaData`),E=Pe[g],P=t.address.get(`core.coins.${g}.oracle.pyth.feedObject`),O=t.utils.getCoinDecimal(g),I=j?`s${g}`:void 0;a[g]={coinName:g,symbol:t.utils.parseSymbol(g),lendingPoolAddress:T[0],collateralPoolAddress:T[1],borrowDynamic:T[2],interestModel:T[3],riskModel:T[4],borrowFeeKey:T[5],supplyLimitKey:T[6],borrowLimitKey:T[7],isolatedAssetKey:T[8],spool:j,spoolReward:A,sCoinTreasury:X,sCoinType:S,sCoinName:R,sCoinSymbol:J,coinMetadataId:Z,coinType:`0x${k}`,sCoinMetadataId:Q,spoolName:I,decimals:O,pythFeed:E,pythFeedObjectId:P},await new Promise(x=>setTimeout(x,500));})),a};var re=class{params;isTestnet;suiKit;address;cache;walletAddress;constructor(e,a){this.params={pythEndpoints:e.pythEndpoints??Te.mainnet,...e},this.walletAddress=e.walletAddress??a?.suiKit?.currentAddress()??"",this.suiKit=a?.suiKit??a?.address?.cache.suiKit??H(e),a?.address?(this.address=a.address,this.cache=this.address.cache):(this.cache=new K(this.params,{suiKit:this.suiKit}),this.address=a?.address??new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache})),this.isTestnet=e.networkType?e.networkType==="testnet":!1;}isSuiBridgeAsset(e){return ht(e)}isWormholeAsset(e){return Ct(e)}async init(e=!1,a){a&&!this.address&&(this.address=a),(e||!this.address.getAddresses())&&await this.address.read();}parseSymbol(e){return kt(e)}parseCoinType(e,a=!1){if(fe[e]&&!a)return fe[e];e=Se(e)?this.parseCoinName(e):e;let o=this.address.get(`core.coins.${e}.id`)||xe[e]||void 0;if(!o)throw Error(`Coin ${e} is not supported`);if(e==="sui")return utils.normalizeStructTag(`${o}::sui::SUI`);if(e==="blub")return utils.normalizeStructTag(`${o}::BLUB::BLUB`);if(e==="sbwbtc")return utils.normalizeStructTag(`${o}::btc::BTC`);let r=[this.address.get("core.coins.wusdc.id")??$.wusdc,this.address.get("core.coins.wusdt.id")??$.wusdt,this.address.get("core.coins.weth.id")??$.weth,this.address.get("core.coins.wbtc.id")??$.wbtc,this.address.get("core.coins.wsol.id")??$.wsol,this.address.get("core.coins.wapt.id")??$.wapt],s=[this.address.get("core.coins.vsui.id")??bt.vsui],c=Object.values(lt).reduce((i,n)=>(i.push(this.address.get(`core.coins.${n}.id`)??xe[n]),i),[]);if(r.includes(o))return `${o}::coin::COIN`;if(s.includes(o))return `${o}::cert::CERT`;if(c.includes(o)){let i=e.slice(2);return `${o}::${i}::${i.toUpperCase()}`}else return `${o}::${e}::${e.toUpperCase()}`}parseSCoinName(e){if(Se(e)&&q.includes(e))return e;{let a=`s${e}`;return q.includes(a)?a:void 0}}parseSCoinTypeNameToMarketCoinName(e){return Ut[e]??e}parseSCoinType(e){return fe[e]}parseSCoinNameFromType(e){return We[e]}parseUnderlyingSCoinType(e){let a=this.parseCoinName(e);return this.parseCoinType(a)}getSCoinTreasury(e){return this.address.get(`scoin.coins.${e}.treasury`)}parseMarketCoinType(e){let a=this.address.get("core.object")??Ke,o=this.parseCoinType(e,!0);return `${a}::reserve::MarketCoin<${o}>`}parseCoinNameFromType(e){if(e=utils.normalizeStructTag(e),We[e])return We[e];let a=new RegExp("((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)"),o=e.match(a),r=e.includes("reserve::MarketCoin");e=o?.[1]??e;let s={[`${this.address.get("core.coins.wusdc.id")??$.wusdc}::coin::COIN`]:"wusdc",[`${this.address.get("core.coins.wusdt.id")??$.wusdt}::coin::COIN`]:"wusdt",[`${this.address.get("core.coins.weth.id")??$.weth}::coin::COIN`]:"weth",[`${this.address.get("core.coins.wbtc.id")??$.wbtc}::coin::COIN`]:"wbtc",[`${this.address.get("core.coins.wsol.id")??$.wsol}::coin::COIN`]:"wsol",[`${this.address.get("core.coins.wapt.id")??$.wapt}::coin::COIN`]:"wapt"},c={[`${this.address.get("core.coins.vsui.id")??bt.vsui}::cert::CERT`]:"vsui"},i=Object.values(lt).reduce((l,d)=>(l[this.parseCoinType(d)]=d,l),{}),n=s[e]||c[e]||i[e]||e.split("::")[2].toLowerCase();return r?this.parseMarketCoinName(n):n}parseCoinName(e){return e.slice(1)}parseMarketCoinName(e){return `s${e}`}getSpoolRewardCoinName=e=>Ve[e];getCoinDecimal(e){return dt[e]}getCoinWrappedType(e){if(this.isSuiBridgeAsset(e))return {from:"Sui Bridge",type:"Asset from Sui Bridge"};if(this.isWormholeAsset(e))return {from:"Wormhole",type:"Portal from Ethereum"}}async selectCoins(e,a=utils.SUI_TYPE_ARG,o){return o=o??this.walletAddress,await this.suiKit.suiInteractor.selectCoins(o,e,a)}async mergeSimilarCoins(e,a,o,r=this.walletAddress){try{let s=await this.selectCoins(Number.MAX_SAFE_INTEGER,o,r);s.length>0&&e.mergeCoins(a,s.slice(0,500));}catch{}}async getObligationCoinNames(e){let a=await Ye(this,e);if(!a)return;let o=a.collaterals.map(i=>`0x${i.type.name}`),r=a.debts.map(i=>`0x${i.type.name}`);return [...new Set([...o,...r])].map(i=>this.parseCoinNameFromType(i))}async getCoinPrices(e=[...new Set([...M,...V])]){let a={},o=this.params.pythEndpoints??Te[this.isTestnet?"testnet":"mainnet"],r=new Set([...M,...V]);for(let s of o){let c=Array.from(r.values()).reduce((l,d)=>{let b=this.address.get(`core.coins.${d}.oracle.pyth.feed`)??Pe[d];return l.push([d,b]),l},[]),i=c.map(([l,d])=>d),n=new pythSuiJs.SuiPriceServiceConnection(s,{timeout:4e3});try{let l=await this.cache.queryClient.fetchQuery({queryKey:N.oracle.getPythLatestPriceFeeds(),queryFn:async()=>await n.getLatestPriceFeeds(i),staleTime:3e4,gcTime:3e4});l&&l.forEach((d,b)=>{let u=c[b][0],p=oa(d,this.address);a[u]=p.price,r.delete(u);});}catch(l){console.error(l.message);}if(r.size===0)break}return r.size>0&&(a={...a,...await Je(this,Array.from(r.values()))},r.clear()),a}parseAprToApy(e,a=365){return (1+e/a)**a-1}parseApyToApr(e,a=365){return ((1+e)**(1/a)-1)*a}getUnlockAt(e,a){let o=Math.floor(new Date().getTime()/1e3),r=a?Math.max(Math.floor(a/1e3)-o,0):0,s=0;if(r===0){let c=(e??1)*86400;s=Math.min(o+c,o+126144e3);}else {let c=Math.min(e?e*86400+r:r,126144e3);s=o+c;}return sa(s)}getSupportedPoolAddresses(){return M.map(e=>{let a=this.parseSCoinName(e);return {name:this.parseSymbol(e),coingeckoId:Dt[e],decimal:dt[e],pythFeedId:Pe[e],...B[e],sCoinAddress:fe[a],marketCoinAddress:this.parseMarketCoinType(e),coinAddress:this.parseCoinType(e),sCoinName:a?this.parseSymbol(a):void 0}})}};var je=async(t,e,a,o={usePythPullModel:!0})=>{let r=t.params.usePythPullModel??o.usePythPullModel;a=a??[...new Set([...M,...V])];let s=t.isTestnet?["pyth"]:["pyth"];if(r&&s.includes("pyth")){let i=new pythSuiJs.SuiPythClient(t.suiKit.client(),t.address.get("core.oracles.pyth.state"),t.address.get("core.oracles.pyth.wormholeState")),n=a.map(d=>t.address.get(`core.coins.${d}.oracle.pyth.feed`)),l=t.params.pythEndpoints??Te[t.isTestnet?"testnet":"mainnet"];for(let d of l)try{let u=await new pythSuiJs.SuiPriceServiceConnection(d).getPriceFeedsUpdateData(n);await i.updatePriceFeeds(e.txBlock,u,n);break}catch(b){console.warn(`Failed to update price feeds with endpoint ${d}: ${b}`);}}let c=[...new Set(a)];for(let i of c)await qo(t,e,i,s);},qo=async(t,e,a,o)=>{let r=t.utils.parseCoinType(a);$o(e,o,t.address.get("core.packages.xOracle.id"),t.address.get("core.oracles.xOracle"),t.address.get("core.packages.pyth.id"),t.address.get("core.oracles.pyth.registry"),t.address.get("core.oracles.pyth.state"),t.address.get(`core.coins.${a}.oracle.pyth.feedObject`),t.address.get("core.packages.switchboard.id"),t.address.get("core.oracles.switchboard.registry"),t.address.get(`core.coins.${a}.oracle.switchboard`),t.address.get("core.packages.supra.id"),t.address.get("core.oracles.supra.registry"),t.address.get("core.oracles.supra.holder"),r);},$o=(t,e,a,o,r,s,c,i,n,l,d,b,u,p,f)=>{let m=Go(t,a,o,f);return e.includes("pyth")&&Jo(t,r,m,c,i,s,f),e.includes("switchboard")&&Yo(t,n,m,d,l,f),e.includes("supra")&&zo(t,b,m,p,u,f),Ho(t,a,o,m,f),t},Go=(t,e,a,o)=>{let r=`${e}::x_oracle::price_update_request`,s=[o];return t.moveCall(r,[a],s)},Ho=(t,e,a,o,r)=>{let s=`${e}::x_oracle::confirm_price_update_request`,c=[r];return t.moveCall(s,[a,o,t.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],c),t},zo=(t,e,a,o,r,s)=>{t.moveCall(`${e}::rule::set_price`,[a,o,r,t.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[s]);},Yo=(t,e,a,o,r,s)=>{t.moveCall(`${e}::rule::set_price`,[a,o,r,t.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[s]);},Jo=(t,e,a,o,r,s,c)=>{t.moveCall(`${e}::rule::set_price`,[a,o,r,s,t.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c]);};var De=async(...t)=>{let[e,a,o,r]=t;if(t.length===3&&o)return {obligationId:o};if(t.length===4&&o&&r)return {obligationId:o,obligationKey:r};let s=_(a),c=await ge(e,s);if(c.length===0)throw new Error(`No obligation found for sender ${s}`);return {obligationId:c[0].id,obligationKey:c[0].keyId}},Zo=({builder:t,txBlock:e})=>{let a={protocolPkg:t.address.get("core.packages.protocol.id"),market:t.address.get("core.market"),version:t.address.get("core.version"),coinDecimalsRegistry:t.address.get("core.coinDecimalsRegistry"),xOracle:t.address.get("core.oracles.xOracle")},r=`${t.address.get("referral.id")}::scallop_referral_program::REFERRAL_WITNESS`;return {openObligation:()=>{let[s,c,i]=t.moveCall(e,`${a.protocolPkg}::open_obligation::open_obligation`,[a.version]);return [s,c,i]},returnObligation:(s,c)=>{t.moveCall(e,`${a.protocolPkg}::open_obligation::return_obligation`,[a.version,s,c]);},openObligationEntry:()=>{t.moveCall(e,`${a.protocolPkg}::open_obligation::open_obligation_entry`,[a.version]);},addCollateral:(s,c,i)=>{let n=t.utils.parseCoinType(i);t.moveCall(e,`${a.protocolPkg}::deposit_collateral::deposit_collateral`,[a.version,s,a.market,c],[n]);},takeCollateral:(s,c,i,n)=>{let l=t.utils.parseCoinType(n);return t.moveCall(e,`${a.protocolPkg}::withdraw_collateral::withdraw_collateral`,[a.version,s,c,a.market,a.coinDecimalsRegistry,e.pure.u64(i),a.xOracle,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[l])},deposit:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::mint::mint`,[a.version,a.market,s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},depositEntry:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::mint::mint_entry`,[a.version,a.market,s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},withdraw:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::redeem::redeem`,[a.version,a.market,s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},withdrawEntry:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::redeem::redeem_entry`,[a.version,a.market,s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},borrow:(s,c,i,n)=>{let l=t.utils.parseCoinType(n);return t.moveCall(e,`${a.protocolPkg}::borrow::borrow`,[a.version,s,c,a.market,a.coinDecimalsRegistry,i,a.xOracle,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[l])},borrowWithReferral:(s,c,i,n,l)=>{let d=t.utils.parseCoinType(l);return t.moveCall(e,`${a.protocolPkg}::borrow::borrow_with_referral`,[a.version,s,c,a.market,a.coinDecimalsRegistry,i,typeof n=="number"?e.pure.u64(n):n,a.xOracle,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[d,r])},borrowEntry:(s,c,i,n)=>{let l=t.utils.parseCoinType(n);return t.moveCall(e,`${a.protocolPkg}::borrow::borrow_entry`,[a.version,s,c,a.market,a.coinDecimalsRegistry,e.pure.u64(i),a.xOracle,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[l])},repay:(s,c,i)=>{let n=t.utils.parseCoinType(i);t.moveCall(e,`${a.protocolPkg}::repay::repay`,[a.version,s,a.market,c,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[n]);},borrowFlashLoan:(s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.protocolPkg}::flash_loan::borrow_flash_loan`,[a.version,a.market,s],[i])},repayFlashLoan:(s,c,i)=>{let n=t.utils.parseCoinType(i);t.moveCall(e,`${a.protocolPkg}::flash_loan::repay_flash_loan`,[a.version,a.market,s,c],[n]);}}},es=({builder:t,txBlock:e})=>({addCollateralQuick:async(a,o,r)=>{let s=_(e),{obligationId:c}=await De(t,e,r);if(o==="sui"){let[i]=e.splitSUIFromGas([a]);await e.addCollateral(c,i,o);}else {let{leftCoin:i,takeCoin:n}=await t.selectCoin(e,o,a,s);await e.addCollateral(c,n,o),e.transferObjects([i],s);}},takeCollateralQuick:async(a,o,r,s)=>{let c=await De(t,e,r,s),i=await t.utils.getObligationCoinNames(c.obligationId);return await je(t,e,i),await e.takeCollateral(c.obligationId,c.obligationKey,a,o)},depositQuick:async(a,o,r=!0)=>{let s=_(e),c;if(o==="sui"){let[i]=e.splitSUIFromGas([a]);c=await e.deposit(i,o);}else {let{leftCoin:i,takeCoin:n}=await t.selectCoin(e,o,a,s);e.transferObjects([i],s),c=await e.deposit(n,o);}return r?await e.mintSCoin(t.utils.parseMarketCoinName(o),c):c},withdrawQuick:async(a,o)=>{let r=_(e),s=t.utils.parseMarketCoinName(o);try{let c=t.utils.parseSCoinName(o);if(!c)throw new Error(`No sCoin for ${o}`);let{leftCoin:i,takeCoin:n,totalAmount:l}=await t.selectSCoin(e,c,a,r);e.transferObjects([i],r);let d=await e.burnSCoin(c,n);a-=l;try{if(a>0){let{leftCoin:b,takeCoin:u}=await t.selectMarketCoin(e,s,a,r);e.transferObjects([b],r),e.mergeCoins(d,[u]);}}catch{}return e.withdraw(d,o)}catch{let{leftCoin:i,takeCoin:n}=await t.selectMarketCoin(e,s,a,r);return e.transferObjects([i],r),await e.withdraw(n,o)}},borrowQuick:async(a,o,r,s)=>{let c=await De(t,e,r,s),n=[...await t.utils.getObligationCoinNames(c.obligationId)??[],o];return await je(t,e,n),await e.borrow(c.obligationId,c.obligationKey,a,o)},borrowWithReferralQuick:async(a,o,r,s,c)=>{let i=await De(t,e,s,c),l=[...await t.utils.getObligationCoinNames(i.obligationId)??[],o];return await je(t,e,l),e.borrowWithReferral(i.obligationId,i.obligationKey,r,a,o)},repayQuick:async(a,o,r)=>{let s=_(e),c=await De(t,e,r);if(o==="sui"){let[i]=e.splitSUIFromGas([a]);return await e.repay(c.obligationId,i,o)}else {let{leftCoin:i,takeCoin:n}=await t.selectCoin(e,o,a,s);return e.transferObjects([i],s),await e.repay(c.obligationId,n,o)}},updateAssetPricesQuick:async a=>await je(t,e,a)}),Ea=(t,e)=>{let a=e instanceof transactions.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=Zo({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=es({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var Va=async(...t)=>{let[e,a,o,r]=t;if(t.length===4&&r)return [r];let s=_(a),c=await ve(e,s);if(c[o].length===0)throw new Error(`No stake account id found for sender ${s}`);return c[o].map(i=>i.id)},as=async(...t)=>{let[e,a,o,r]=t,s=_(a),c=await ve(e,s);if(c[o].length===0)throw new Error(`No stake account found for sender ${s}`);return r?c[o].filter(n=>n.id===r):c[o]},Wa=async(t,e,a,o,r,s,c=!1)=>{try{let{takeCoin:i,leftCoin:n,totalAmount:l}=c?await t.selectSCoin(e,o,r,s):await t.selectMarketCoin(e,o,r,s);if(c){let d=e.burnSCoin(o,i);e.stake(a,d,o);}else e.stake(a,i,o);return e.transferObjects([n],s),l}catch{return 0}},os=({builder:t,txBlock:e})=>{let a={spoolPkg:t.address.get("spool.id")};return {createStakeAccount:o=>{let r=t.utils.parseMarketCoinType(o),s=t.address.get(`spool.pools.${o}.id`);return t.moveCall(e,`${a.spoolPkg}::user::new_spool_account`,[s,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[r])},stake:(o,r,s)=>{let c=t.utils.parseMarketCoinType(s),i=t.address.get(`spool.pools.${s}.id`);t.moveCall(e,`${a.spoolPkg}::user::stake`,[i,o,r,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c]);},unstake:(o,r,s)=>{let c=t.utils.parseMarketCoinType(s),i=t.address.get(`spool.pools.${s}.id`);return t.moveCall(e,`${a.spoolPkg}::user::unstake`,[i,o,r,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c])},claim:(o,r)=>{let s=t.address.get(`spool.pools.${r}.id`),c=t.address.get(`spool.pools.${r}.rewardPoolId`),i=t.utils.parseMarketCoinType(r),n=Ve[r],l=t.utils.parseCoinType(n);return t.moveCall(e,`${a.spoolPkg}::user::redeem_rewards`,[s,c,o,e.sharedObjectRef({objectId:utils.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i,l])}}},ss=({builder:t,txBlock:e})=>({stakeQuick:async(a,o,r)=>{let s=_(e),c=await Va(t,e,o,r);if(c.length===0)throw new Error(`No stakeAccountIds found for user ${s}`);if(typeof a=="number"){let i=await Wa(t,e,c[0],o,a,s);a-=i,a>0&&await Wa(t,e,c[0],o,a,s,!0);}else e.stake(c[0],a,o);},unstakeQuick:async(a,o,r,s=!0)=>{let c=await as(t,e,o,r),i=[];for(let n of c){if(n.staked===0)continue;let l=Math.min(a,n.staked),d=await e.unstake(n.id,l,o);if(s){let b=await e.mintSCoin(o,d);i.push(b);}else i.push(d);if(a-=l,a<=0)break}if(i.length>0){let n=i[0];return i.length>1&&e.mergeCoins(n,i.slice(1)),n}},claimQuick:async(a,o)=>{let r=await Va(t,e,a,o),s=[];for(let c of r){let i=await e.claim(c,a);s.push(i);}return s}}),Qa=(t,e)=>{let a=e instanceof transactions.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=os({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=ss({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var st=async(...t)=>{let[e,a,o,r]=t;if(t.length===4&&o&&r&&typeof o=="string"){let n=await Tt(e.cache,o);return {obligationId:o,obligationKey:r,obligationLocked:n}}let s=_(a),c=await ge(e,s);if(c.length===0)throw new Error(`No obligation found for sender ${s}`);let i=c.find(n=>n.id===o||n.keyId===r)??c[0];return {obligationId:i.id,obligationKey:i.keyId,obligationLocked:i.locked}},cs=({builder:t,txBlock:e})=>{let a={borrowIncentivePkg:t.address.get("borrowIncentive.id"),query:t.address.get("borrowIncentive.query"),config:t.address.get("borrowIncentive.config"),incentivePools:t.address.get("borrowIncentive.incentivePools"),incentiveAccounts:t.address.get("borrowIncentive.incentiveAccounts"),obligationAccessStore:t.address.get("core.obligationAccessStore")},o={table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return {stakeObligation:(r,s)=>{t.moveCall(e,`${a.borrowIncentivePkg}::user::stake`,[a.config,a.incentivePools,a.incentiveAccounts,s,r,a.obligationAccessStore,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})]);},stakeObligationWithVesca:(r,s,c)=>{t.moveCall(e,`${a.borrowIncentivePkg}::user::stake_with_ve_sca`,[a.config,a.incentivePools,a.incentiveAccounts,s,r,a.obligationAccessStore,o.config,o.treasury,o.table,c,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},unstakeObligation:(r,s)=>{t.moveCall(e,`${a.borrowIncentivePkg}::user::unstake`,[a.config,a.incentivePools,a.incentiveAccounts,s,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})]);},claimBorrowIncentive:(r,s,c)=>{let i=t.utils.parseCoinType(c);return t.moveCall(e,`${a.borrowIncentivePkg}::user::redeem_rewards`,[a.config,a.incentivePools,a.incentiveAccounts,s,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[i])},deactivateBoost:(r,s)=>{t.moveCall(e,`${a.borrowIncentivePkg}::user::deactivate_boost`,[a.config,a.incentivePools,a.incentiveAccounts,r,s,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})]);}}},is=({builder:t,txBlock:e})=>({stakeObligationQuick:async(a,o)=>{let{obligationId:r,obligationKey:s,obligationLocked:c}=await st(t,e,a,o),i=!!e.txBlock.blockData.transactions.find(n=>n.kind==="MoveCall"&&(n.target===`${nt}::user::unstake`||n.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));(!c||i)&&e.stakeObligation(r,s);},stakeObligationWithVeScaQuick:async(a,o,r)=>{let{obligationId:s,obligationKey:c,obligationLocked:i}=await st(t,e,a,o),n=!!e.txBlock.blockData.transactions.find(l=>l.kind==="MoveCall"&&(l.target===`${nt}::user::unstake`||l.target===`${t.address.get("borrowIncentive.id")}::user::unstake`));if(!i||n){let d=await t.query.getBindedVeScaKey(s)??r;d?e.stakeObligationWithVesca(s,c,d):e.stakeObligation(s,c);}},unstakeObligationQuick:async(a,o)=>{let{obligationId:r,obligationKey:s,obligationLocked:c}=await st(t,e,a,o);c&&e.unstakeObligation(r,s);},claimBorrowIncentiveQuick:async(a,o,r)=>{let{obligationId:s,obligationKey:c}=await st(t,e,o,r);return e.claimBorrowIncentive(s,c,a)}}),$a=(t,e)=>{let a=e instanceof transactions.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=cs({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=is({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var Le=async(...t)=>{let[e,a,o]=t;if(t.length===3&&o&&typeof o=="string"){let c=await Me(e.utils,o);return c||void 0}let r=_(a),s=await et(e,r);if(s.length!==0)return o?s.find(({keyId:c})=>o===c):s[0]},ds=({builder:t,txBlock:e})=>{let a={pkgId:t.address.get("vesca.id"),table:t.address.get("vesca.table"),treasury:t.address.get("vesca.treasury"),config:t.address.get("vesca.config")};return {lockSca:(o,r)=>t.moveCall(e,`${a.pkgId}::ve_sca::mint_ve_sca_key`,[a.config,a.table,a.treasury,o,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]),extendLockPeriod:(o,r)=>{t.moveCall(e,`${a.pkgId}::ve_sca::extend_lock_period`,[a.config,o,a.table,a.treasury,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},extendLockAmount:(o,r)=>{t.moveCall(e,`${a.pkgId}::ve_sca::lock_more_sca`,[a.config,o,a.table,a.treasury,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},renewExpiredVeSca:(o,r,s)=>{t.moveCall(e,`${a.pkgId}::ve_sca::renew_expired_ve_sca`,[a.config,o,a.table,a.treasury,r,s,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},redeemSca:o=>t.moveCall(e,`${a.pkgId}::ve_sca::redeem`,[a.config,o,a.table,a.treasury,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]),mintEmptyVeSca:()=>t.moveCall(e,`${a.pkgId}::ve_sca::mint_ve_sca_placeholder_key`,[a.config,a.table],[])}},ls=({builder:t,txBlock:e})=>({lockScaQuick:async(a,o,r=!0)=>{let s=_(e),c=await Le(t,e),i,n=[];if(a!==void 0&&typeof a=="number"){let u=await t.utils.selectCoins(a,Ee,s),[p,f]=e.takeAmountFromCoins(u,a);i=p,n.push(f);}else i=a;let l=t.utils.getUnlockAt(o,c?.unlockAt);r&&qt(a,o,l,c?.unlockAt);let d=!c?.unlockAt,b=!d&&c.unlockAt*1e3<=new Date().getTime();if(d||b){if(i)if(d){let u=e.lockSca(i,l);n.push(u);}else {if(c.lockedScaCoin!==0){let u=e.redeemSca(c.keyId);n.push(u);}e.renewExpiredVeSca(c.keyId,i,l);}}else i&&o?(e.extendLockPeriod(c.keyId,l),e.extendLockAmount(c.keyId,i)):o?e.extendLockPeriod(c.keyId,l):i&&e.extendLockAmount(c.keyId,i);n.length>0&&e.transferObjects(n,s);},extendLockPeriodQuick:async(a,o,r=!0)=>{let s=await Le(t,e,o),c=t.utils.getUnlockAt(a,s?.unlockAt);r&&St(a,c,s?.unlockAt),s&&e.extendLockPeriod(s.keyId,c);},extendLockAmountQuick:async(a,o,r=!0)=>{let s=_(e),c=await Le(t,e,o);if(r&&$t(a,c?.unlockAt),c){let i=await t.utils.selectCoins(a,Ee,s),[n,l]=e.takeAmountFromCoins(i,a);e.extendLockAmount(c.keyId,n),e.transferObjects([l],s);}},renewExpiredVeScaQuick:async(a,o,r,s=!0)=>{let c=_(e),i=await Le(t,e,r),n=t.utils.getUnlockAt(o,i?.unlockAt);if(s&&Gt(a,o,i?.unlockAt),i){let l=[];if(i.lockedScaCoin!==0){let p=e.redeemSca(i.keyId);l.push(p);}let d=await t.utils.selectCoins(a,Ee,c),[b,u]=e.takeAmountFromCoins(d,a);l.push(u),e.renewExpiredVeSca(i.keyId,b,n),e.transferObjects(l,c);}},redeemScaQuick:async(a,o=!0)=>{let r=_(e),s=await Le(t,e,a);if(Oe(s?.unlockAt),s){let c=await e.redeemSca(s.keyId);if(o){e.transferObjects([c],r);return}return c}}}),Ha=(t,e)=>{let a=e instanceof suiKit.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=ds({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=ls({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var fs=({builder:t,txBlock:e})=>{let a={referralPgkId:t.address.get("referral.id"),referralBindings:t.address.get("referral.referralBindings"),referralRevenuePool:t.address.get("referral.referralRevenuePool"),authorizedWitnessList:t.address.get("referral.authorizedWitnessList"),referralTiers:t.address.get("referral.referralTiers"),version:t.address.get("referral.version")},o=t.address.get("vesca.table");return {bindToReferral:r=>{t.moveCall(e,`${a.referralPgkId}::referral_bindings::bind_ve_sca_referrer`,[a.referralBindings,e.pure.id(r),o,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[]);},claimReferralTicket:r=>{let s=t.utils.parseCoinType(r);return t.moveCall(e,`${a.referralPgkId}::scallop_referral_program::claim_ve_sca_referral_ticket`,[a.version,o,a.referralBindings,a.authorizedWitnessList,a.referralTiers,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[s])},burnReferralTicket:(r,s)=>{let c=t.utils.parseCoinType(s);t.moveCall(e,`${a.referralPgkId}::scallop_referral_program::burn_ve_sca_referral_ticket`,[a.version,r,a.referralRevenuePool,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c]);},claimReferralRevenue:(r,s)=>{let c=t.utils.parseCoinType(s);return t.moveCall(e,`${a.referralPgkId}::referral_revenue_pool::claim_revenue_with_ve_sca_key`,[a.version,a.referralRevenuePool,r,e.sharedObjectRef({objectId:suiKit.SUI_CLOCK_OBJECT_ID,mutable:!1,initialSharedVersion:"1"})],[c])}}},us=({builder:t,txBlock:e})=>({claimReferralRevenueQuick:async(a,o=[...M])=>{let r=_(e),s=[];for(let c of o)if(c==="sui"){let i=await e.claimReferralRevenue(a,c);s.push(i);}else {let i=await e.claimReferralRevenue(a,c);try{let n=await t.suiKit.suiInteractor.selectCoins(r,1/0,t.utils.parseCoinType(c));e.mergeCoins(i,n.slice(0,500));}catch{}finally{s.push(i);}}s.length>0&&e.transferObjects(s,r);}}),Ya=(t,e)=>{let a=e instanceof suiKit.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=fs({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=us({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var ms=({builder:t,txBlock:e})=>{let a={loyaltyProgramPkgId:t.address.get("loyaltyProgram.id"),rewardPool:t.address.get("loyaltyProgram.rewardPool"),userRewardTableId:t.address.get("loyaltyProgram.userRewardTableId")};return {claimLoyaltyRevenue:o=>t.moveCall(e,`${a.loyaltyProgramPkgId}::reward_pool::redeem_reward`,[a.rewardPool,o])}},ys=({builder:t,txBlock:e})=>({claimLoyaltyRevenueQuick:async a=>{a=a??(await t.query.getVeScas())[0]?.keyObject;let o=_(e);if(!a)throw new Error(`No veScaKey found for user ${o}`);let r=await e.claimLoyaltyRevenue(a);await t.utils.mergeSimilarCoins(e,r,xe.sca,_(e)),e.transferObjects([r],o);}}),Xa=(t,e)=>{let a=e instanceof transactions.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=ms({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=ys({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var ws=({builder:t,txBlock:e})=>{let a={pkgId:t.address.get("scoin.id")};return {mintSCoin:(o,r)=>t.moveCall(e,`${a.pkgId}::s_coin_converter::mint_s_coin`,[t.utils.getSCoinTreasury(o),r],[t.utils.parseSCoinType(o),t.utils.parseUnderlyingSCoinType(o)]),burnSCoin:(o,r)=>t.moveCall(e,`${a.pkgId}::s_coin_converter::burn_s_coin`,[t.utils.getSCoinTreasury(o),r],[t.utils.parseSCoinType(o),t.utils.parseUnderlyingSCoinType(o)])}},gs=({builder:t,txBlock:e})=>({mintSCoinQuick:async(a,o)=>{let r=_(e),{leftCoin:s,takeCoin:c}=await t.selectMarketCoin(e,a,o,r);return e.transferObjects([s],r),await e.mintSCoin(a,c)},burnSCoinQuick:async(a,o)=>{let r=_(e),{leftCoin:s,takeCoin:c}=await t.selectSCoin(e,a,o,r);return e.transferObjects([s],r),await e.burnSCoin(a,c)}}),eo=(t,e)=>{let a=e instanceof suiKit.Transaction?new suiKit.SuiTxBlock(e):e||new suiKit.SuiTxBlock,o=ws({builder:t,txBlock:a}),r=new Proxy(a,{get:(c,i)=>i in o?Reflect.get(o,i):Reflect.get(c,i)}),s=gs({builder:t,txBlock:r});return new Proxy(r,{get:(c,i)=>i in s?Reflect.get(s,i):Reflect.get(c,i)})};var to=(t,e)=>{let a=Ha(t,e),o=Xa(t,a),r=$a(t,o),s=Ya(t,r),c=eo(t,s),i=Qa(t,c),n=Ea(t,i);return new Proxy(n,{get:(l,d)=>d in a?Reflect.get(a,d):d in r?Reflect.get(r,d):d in s?Reflect.get(s,d):d in i?Reflect.get(i,d):d in o?Reflect.get(o,d):d in c?Reflect.get(c,d):Reflect.get(l,d)})};var he=class{cache;params;_requestClient;constructor(e={},a){this.params=e,this.cache=a?.cache??new K(this.params),this._requestClient=bo__default.default.create({baseURL:Nt,headers:{"Content-Type":"application/json",Accept:"application/json"},timeout:3e4});}async getMarket(){let e=await this.cache.queryClient.fetchQuery({queryKey:N.api.getMarket(),queryFn:async()=>await this._requestClient.get("/api/market/migrate")});if(e.status===200)return {pools:e.data.pools.reduce((a,o)=>(a[o.coinName]=o,a),{}),collaterals:e.data.collaterals.reduce((a,o)=>(a[o.coinName]=o,a),{})};throw Error("Failed to getMarket.")}async getMarketPools(){return (await this.getMarket()).pools}async getMarketPool(e){return (await this.getMarketPools())[e]}async getMarketCollaterals(){return (await this.getMarket()).collaterals}async getMarketCollateral(e){return (await this.getMarketCollaterals())[e]}async getSpools(){let e=await this.cache.queryClient.fetchQuery({queryKey:N.api.getSpools(),queryFn:async()=>await this._requestClient.get("/api/spools/migrate")});if(e.status===200)return e.data.spools.reduce((a,o)=>(a[o.marketCoinName]=o,a),{});throw Error("Failed to getSpools.")}async getSpool(e){return (await this.getSpools())[e]}async getBorrowIncentivePools(){let e=await this.cache.queryClient.fetchQuery({queryKey:N.api.getBorrowIncentivePool(),queryFn:async()=>await this._requestClient.get("/api/borrowIncentivePools/migrate")});if(e.status===200)return e.data.borrowIncentivePools.reduce((a,o)=>(Array.isArray(o.points)&&(o.points=o.points.reduce((r,s)=>(r[s.coinName]=s,r),{})),a[o.coinName]=o,a),{});throw Error("Failed to getBorrowIncentivePools.")}async getBorrowIncentivePool(e){return (await this.getBorrowIncentivePools())[e]}async getTotalValueLocked(){let e=await this.cache.queryClient.fetchQuery({queryKey:N.api.getTotalValueLocked(),queryFn:async()=>await this._requestClient.get("/api/market/tvl")});if(e.status===200)return e.data;throw Error("Failed to getTotalValueLocked.")}async getCoinPrice(e){return (await this.getMarketPool(e))?.coinPrice??0}async getCoinPrices(){let e=await this.getMarketPools();return Object.entries(e).reduce((a,[o,r])=>(a[o]=r.coinPrice,a),{})}};var be=class{params;suiKit;address;utils;indexer;cache;walletAddress;constructor(e={},a){this.params=e,this.suiKit=a?.suiKit??a?.utils?.suiKit??H(e),this.walletAddress=utils.normalizeSuiAddress(e.walletAddress??this.suiKit.currentAddress()),a?.utils?(this.utils=a.utils,this.address=a.utils.address,this.cache=this.address.cache):(this.cache=new K(this.params,{suiKit:this.suiKit}),this.address=new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache}),this.utils=new re(this.params,{address:this.address})),this.indexer=a?.indexer??new he(this.params,{cache:this.cache}),this.queryMarket=W.call(this,this.queryMarket),this.getMarketPools=W.call(this,this.getMarketPools),this.getMarketPool=W.call(this,this.getMarketPool),this.getMarketCollaterals=W.call(this,this.getMarketCollaterals),this.getMarketCollateral=W.call(this,this.getMarketCollateral),this.getSpools=W.call(this,this.getSpools),this.getSpool=W.call(this,this.getSpool),this.getBorrowIncentivePools=W.call(this,this.getBorrowIncentivePools),this.getLendings=W.call(this,this.getLendings),this.getLending=W.call(this,this.getLending),this.getObligationAccounts=W.call(this,this.getObligationAccounts),this.getObligationAccount=W.call(this,this.getObligationAccount),this.getTvl=W.call(this,this.getTvl);}async init(e=!1,a){a&&!this.address&&(this.address=a),(e||!this.address.getAddresses())&&await this.address.read(),await this.utils.init(e,this.address);}async queryMarket(e){return await pa(this,e?.indexer,e?.coinPrices)}async getMarketPools(e=[...M],a){return await ya(this,e,a?.indexer,a?.coinPrices)}async getMarketPool(e,a){return (await this.getMarketPools(void 0,a)).pools[e]}async getMarketCollaterals(e,a){return await Sa(this,e,a?.indexer)}async getMarketCollateral(e,a){return await xt(this,e,a?.indexer)}async getObligations(e=this.walletAddress){return await ge(this,e)}async queryObligation(e){return Ye(this,e)}async getCoinAmounts(e,a=this.walletAddress){return await wa(this,e,a)}async getCoinAmount(e,a=this.walletAddress){return await Pt(this,e,a)}async getMarketCoinAmounts(e,a=this.walletAddress){return await ga(this,e,a)}async getMarketCoinAmount(e,a=this.walletAddress){return await At(this,e,a)}async getPriceFromPyth(e){return await It(this,e)}async getPricesFromPyth(e){return await Je(this,e)}async getSpools(e,a){return await Da(this,e,a?.indexer,a?.marketPools,a?.coinPrices)}async getSpool(e,a){return (await this.getSpools(void 0,a))[e]}async getAllStakeAccounts(e=this.walletAddress){return await ve(this,e)}async getStakeAccounts(e,a=this.walletAddress){return (await this.getAllStakeAccounts(a))[e]??[]}async getStakePools(e=[...G]){let a={};for(let o of e){let r=await vt(this,o);r&&(a[o]=r);}return a}async getStakePool(e){return await vt(this,e)}async getStakeRewardPools(e=[...G]){let a={};return await Promise.allSettled(e.map(async o=>{let r=await Mt(this,o);r&&(a[o]=r);})),a}async getStakeRewardPool(e){return await Mt(this,e)}async getBorrowIncentivePools(e,a){return await ca(this,e,a?.indexer,a?.marketPools,a?.coinPrices)}async getBorrowIncentiveAccounts(e,a){return await ia(this,e,a)}async getLendings(e,a=this.walletAddress,o){return await xa(this,e,a,o?.marketPools,o?.coinPrices,o?.indexer)}async getLending(e,a=this.walletAddress,o){return await Ot(this,e,a,o?.indexer)}async getObligationAccounts(e=this.walletAddress,a){return await Ta(this,e,a?.market,a?.coinPrices,a?.indexer)}async getObligationAccount(e,a=this.walletAddress,o){let r=await this.getObligationAccounts(a,o);return Object.values(r).find(s=>s?.obligationId===e)}async getTvl(e){return await Pa(this,e?.indexer)}async getVeSca(e){return await Me(this.utils,e)}async getVeScas({walletAddress:e=this.walletAddress,excludeEmpty:a=!1}={}){return await et(this,e,a)}async getVeScaTreasuryInfo(){return await La(this.utils)}async getVeScaKeyIdFromReferralBindings(e=this.walletAddress){return await Ia(this.address,e)}async getBindedObligationId(e){return await na(this,e)}async getBindedVeScaKey(e){return await da(this,e)}async getLoyaltyProgramInfos(e){return await ka(this,e)}async getSCoinTotalSupply(e){return await Ra(this,e)}async getSCoinAmounts(e,a=this.walletAddress){return await va(this,e,a)}async getSCoinAmount(e,a=this.walletAddress){let o=this.utils.parseSCoinName(e);return o?await Rt(this,o,a):0}async getSCoinSwapRate(e,a){return await Ma(this,e,a)}async getFlashLoanFees(e=[...M]){return await ha(this,e)}async getPoolSupplyLimit(e){return await He(this.utils,e)}async getPoolBorrowLimit(e){return await ze(this.utils,e)}async getIsolatedAssets(){return await ba(this)}async isIsolatedAsset(e){return we(this.utils,e)}async getCoinPriceByIndexer(e){return this.indexer.getCoinPrice(e)}async getCoinPricesByIndexer(){return this.indexer.getCoinPrices()}async getAllCoinPrices(e){return Oa(this,e?.marketPools,e?.coinPrices,e?.indexer)}async getPoolAddresses(e=[...M]){return Fa(this,e)}async getUserPortfolio(e){return Aa(this,e?.walletAddress??this.walletAddress,e?.indexer??!1)}};var Ce=class{params;isTestnet;suiKit;address;query;utils;walletAddress;cache;constructor(e={},a){this.suiKit=a?.suiKit??H(e),this.params=e,this.walletAddress=utils.normalizeSuiAddress(e?.walletAddress??this.suiKit.currentAddress()),a?.query?(this.query=a.query,this.utils=this.query.utils,this.address=this.utils.address,this.cache=this.address.cache):(this.cache=new K(this.params,{suiKit:this.suiKit}),this.address=new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache}),this.utils=new re(this.params,{address:this.address}),this.query=new be({walletAddress:this.walletAddress},{utils:this.utils})),this.isTestnet=e.networkType?e.networkType==="testnet":!1;}async init(e=!1,a){a&&!this.address&&(this.address=a),(e||!this.address.getAddresses())&&await this.address.read(),await this.query.init(e,this.address);}createTxBlock(e){return to(this,e)}async selectCoin(e,a,o,r=this.walletAddress){if(a==="sui"){let[s]=e.splitSUIFromGas([o]);return {takeCoin:s}}else {let s=this.utils.parseCoinType(a),c=await this.utils.selectCoins(o,s,r),[i,n]=e.takeAmountFromCoins(c,o);return {takeCoin:i,leftCoin:n}}}async selectMarketCoin(e,a,o,r=this.walletAddress){let s=this.utils.parseMarketCoinType(a),c=await this.utils.selectCoins(o,s,r),i=c.reduce((d,b)=>(d+=Number(b.balance),d),0),[n,l]=e.takeAmountFromCoins(c,Math.min(o,i));return {takeCoin:n,leftCoin:l,totalAmount:i}}async selectSCoin(e,a,o,r=this.walletAddress){let s=this.utils.parseSCoinType(a),c=await this.utils.selectCoins(o,s,r),i=c.reduce((d,b)=>(d+=Number(b.balance),d),0),[n,l]=e.takeAmountFromCoins(c,Math.min(i,o));return {takeCoin:n,leftCoin:l,totalAmount:i}}async signAndSendTxBlock(e){return await this.suiKit.signAndSendTxn(e)}moveCall(e,a,o,r){return e.moveCall(a,o,r)}};var ct=class{params;suiKit;address;builder;query;utils;cache;walletAddress;constructor(e={},a){this.params=e,this.suiKit=a?.suiKit??a?.builder?.suiKit??H(e),this.walletAddress=utils.normalizeSuiAddress(e?.walletAddress??this.suiKit.currentAddress()),a?.builder?(this.builder=a.builder,this.query=this.builder.query,this.utils=this.query.utils,this.address=this.utils.address,this.cache=this.address.cache):(this.cache=new K(this.params,{suiKit:this.suiKit}),this.address=new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache}),this.utils=new re(this.params,{address:this.address}),this.query=new be(this.params,{utils:this.utils}),this.builder=new Ce(this.params,{query:this.query}));}async init(e=!1){(e||!this.address.getAddresses())&&await this.address.read(),await this.builder.init(e,this.address),await this.query.init(e,this.address),await this.utils.init(e,this.address);}async queryMarket(){return await this.query.queryMarket()}async getObligations(e){let a=e??this.walletAddress;return await this.query.getObligations(a)}async queryObligation(e){return await this.query.queryObligation(e)}async getAllStakeAccounts(e){let a=e??this.walletAddress;return await this.query.getAllStakeAccounts(a)}async getStakeAccounts(e,a){let o=a??this.walletAddress;return await this.query.getStakeAccounts(e,o)}async getStakePool(e){return await this.query.getStakePool(e)}async getStakeRewardPool(e){return await this.query.getStakeRewardPool(e)}async openObligation(e=!0){let a=this.builder.createTxBlock();return a.openObligationEntry(),e?await this.suiKit.signAndSendTxn(a):a.txBlock}async depositCollateral(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=await this.query.getObligations(i),l=r??n[0]?.id;if(l)await c.addCollateralQuick(a,e,l);else {let[d,b,u]=c.openObligation();await c.addCollateralQuick(a,e,d),c.returnObligation(d,u),c.transferObjects([b],i);}return o?await this.suiKit.signAndSendTxn(c):c.txBlock}async withdrawCollateral(e,a,o=!0,r,s,c){let i=this.builder.createTxBlock(),n=c??this.walletAddress;i.setSender(n);let l=await i.takeCollateralQuick(a,e,r,s);return i.transferObjects([l],n),o?await this.suiKit.signAndSendTxn(i):i.txBlock}async deposit(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;s.setSender(c);let i=await s.depositQuick(a,e);return s.transferObjects([i],c),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async depositAndStake(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=this.utils.parseMarketCoinName(e),l=await this.query.getStakeAccounts(n),d=r??l[0]?.id,b=await c.depositQuick(a,e,!1);if(d)await c.stakeQuick(b,n,d);else {let u=c.createStakeAccount(n);await c.stakeQuick(b,n,u),c.transferObjects([u],i);}return o?await this.suiKit.signAndSendTxn(c):c.txBlock}async withdraw(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;s.setSender(c);let i=await s.withdrawQuick(a,e);return s.transferObjects([i],c),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async borrow(e,a,o=!0,r,s,c){let i=this.builder.createTxBlock(),n=c??this.walletAddress;i.setSender(n);let l=ye.includes(e);o&&l&&await i.unstakeObligationQuick(r,s);let d=await i.borrowQuick(a,e,r,s);return i.transferObjects([d],n),o&&l&&await i.stakeObligationWithVeScaQuick(r,s),o?await this.suiKit.signAndSendTxn(i):i.txBlock}async repay(e,a,o=!0,r,s,c){let i=this.builder.createTxBlock(),n=c??this.walletAddress;i.setSender(n);let l=ye.includes(e);return o&&l&&await i.unstakeObligationQuick(r,s),await i.repayQuick(a,e,r),o&&l&&await i.stakeObligationWithVeScaQuick(r,s),o?await this.suiKit.signAndSendTxn(i):i.txBlock}async flashLoan(e,a,o,r=!0,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let[n,l]=c.borrowFlashLoan(a,e);return c.repayFlashLoan(await o(c,n),l,e),r?await this.suiKit.signAndSendTxn(c):c.txBlock}async createStakeAccount(e,a=!0,o){let r=this.builder.createTxBlock(),s=o??this.walletAddress;r.setSender(s);let c=r.createStakeAccount(e);return r.transferObjects([c],s),a?await this.suiKit.signAndSendTxn(r):r.txBlock}async stake(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=await this.query.getStakeAccounts(e),l=r??n[0]?.id;if(l)await c.stakeQuick(a,e,l);else {let d=c.createStakeAccount(e);await c.stakeQuick(a,e,d),c.transferObjects([d],i);}return o?await this.suiKit.signAndSendTxn(c):c.txBlock}async unstake(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=await c.unstakeQuick(a,e,r);return n&&await this.utils.mergeSimilarCoins(c,n,this.utils.parseSCoinType(e),_(c)),c.transferObjects([n],i),o?await this.suiKit.signAndSendTxn(c):c.txBlock}async unstakeAndWithdraw(e,a,o=!0,r,s){let c=this.builder.createTxBlock(),i=s??this.walletAddress;c.setSender(i);let n=await c.unstakeQuick(a,e,r,!1),l=this.utils.parseCoinName(e);if(n){let d=c.withdraw(n,l);await this.utils.mergeSimilarCoins(c,d,this.utils.parseCoinType(l),_(c)),c.transferObjects([d],i);}else throw new Error(`No stake found for ${e}`);return o?await this.suiKit.signAndSendTxn(c):c.txBlock}async claim(e,a=!0,o,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;s.setSender(c);let i=await s.claimQuick(e,o);return s.transferObjects(i,c),a?await this.suiKit.signAndSendTxn(s):s.txBlock}async stakeObligation(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;return s.setSender(c),await s.stakeObligationWithVeScaQuick(e,a),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async unstakeObligation(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;return s.setSender(c),await s.unstakeObligationQuick(e,a),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async claimBorrowIncentive(e,a,o=!0,r){let s=this.builder.createTxBlock(),c=r??this.walletAddress;s.setSender(c);let i={},n=await this.query.getObligationAccount(e);if(!n)throw new Error("Obligation not found");let l=Object.values(n.borrowIncentives).flatMap(({rewards:d})=>d.filter(({availableClaimAmount:b})=>b>0)).flatMap(({coinName:d})=>d);for(let d of l){let b=await s.claimBorrowIncentiveQuick(d,e,a);i[d]?i[d].push(b):i[d]=[b];}return s.transferObjects(Object.values(i).map(d=>{let b=d[0];return d.length>1&&s.mergeCoins(b,d.slice(1)),b}),c),o?await this.suiKit.signAndSendTxn(s):s.txBlock}async migrateAllMarketCoin(e=!0,a=!0){let o=this.builder.createTxBlock();o.setSender(this.walletAddress);let r=[];return await Promise.all(q.map(async s=>{let c=[],i;try{let n=await this.utils.selectCoins(Number.MAX_SAFE_INTEGER,this.utils.parseMarketCoinType(s),this.walletAddress);i=n[0],n.length>1&&o.mergeCoins(i,n.slice(1));}catch(n){if(!n.toString().includes("No valid coins found for the transaction"))throw n}if(i){let n=o.mintSCoin(s,i);await this.utils.mergeSimilarCoins(o,n,this.utils.parseSCoinType(s),_(o)),c.push(n);}if(e&&G.includes(s))try{let n=await o.unstakeQuick(Number.MAX_SAFE_INTEGER,s);n&&c.push(n);}catch{}if(c.length>0){let n=c[0];c.length>1&&o.mergeCoins(n,c.slice(1)),r.push(n);}})),r.length>0&&o.transferObjects(r,this.walletAddress),a?await this.suiKit.signAndSendTxn(o):o.txBlock}async claimAllUnlockedSca(e=!0){let a=(await this.query.getVeScas({walletAddress:this.walletAddress})??[]).map(({keyObject:s})=>s);if(a.length===0)throw new Error("No veSCA found in the wallet");let o=[],r=this.builder.createTxBlock();if(r.setSender(this.walletAddress),await Promise.all(a.map(async s=>{try{let c=await r.redeemScaQuick(s,!1);if(!c)return;o.push(c);}catch{}})),o.length===0)throw new Error("No unlocked SCA found in the veSCA accounts");return o.length>1&&r.mergeCoins(o[0],o.slice(1)),await this.utils.mergeSimilarCoins(r,o[0],"sca",this.walletAddress),e?await this.suiKit.signAndSendTxn(r):{tx:r.txBlock,scaCoin:o[0]}}async mintTestCoin(e,a,o=!0,r){if(!(this.params.networkType?this.params.networkType==="testnet":!1))throw new Error("Only be used on the test network.");let c=this.builder.createTxBlock(),i=r??this.walletAddress,n=this.address.get("core.packages.testCoin.id"),l=this.address.get(`core.coins.${e}.treasury`),d=`${n}::${e}::mint`,b=c.moveCall(d,[l,a]);return c.transferObjects([b],i),o?await this.suiKit.signAndSendTxn(c):c.txBlock}};var ao=class{params;suiKit;cache;address;constructor(e,a,o){this.params=e,this.suiKit=H(e),this.cache=new K({...this.params,cacheOptions:a},{suiKit:this.suiKit,queryClient:o}),this.address=new z({id:e?.addressesId??ee,network:e?.networkType,forceInterface:e?.forceAddressesInterface},{cache:this.cache});}async getScallopAddress(e){return await this.address.read(e),this.address}async createScallopBuilder(e){this.address.getAddresses()||await this.address.read();let a={...this.params,...e};return new Ce(a,{query:await this.createScallopQuery(a)})}async createScallopClient(e){this.address.getAddresses()||await this.address.read();let a={...this.params,...e};return new ct(a,{builder:await this.createScallopBuilder(a)})}async createScallopQuery(e){this.address.getAddresses()||await this.address.read();let a={...this.params,...e};return new be(a,{utils:await this.createScallopUtils(a)})}async createScallopIndexer(){return new he(this.params,{cache:this.cache})}async createScallopUtils(e){return this.address.getAddresses()||await this.address.read(),new re({...this.params,...e},{address:this.address,suiKit:this.suiKit})}};
22
22
 
23
23
  exports.ADDRESSES_ID = ee;
24
- exports.API_BASE_URL = Nt;
24
+ exports.API_BASE_URL = Bt;
25
25
  exports.BORROW_FEE_PROTOCOL_ID = As;
26
26
  exports.COIN_GECKGO_IDS = Dt;
27
27
  exports.DEFAULT_CACHE_OPTIONS = jt;
28
28
  exports.FlashLoanFeeObjectMap = ft;
29
29
  exports.IS_VE_SCA_TEST = Lt;
30
30
  exports.MAX_LOCK_DURATION = te;
31
- exports.MAX_LOCK_ROUNDS = Oe;
31
+ exports.MAX_LOCK_ROUNDS = Ae;
32
32
  exports.MIN_INITIAL_LOCK_AMOUNT = pt;
33
33
  exports.MIN_TOP_UP_AMOUNT = mt;
34
34
  exports.OLD_BORROW_INCENTIVE_PROTOCOL_ID = nt;
35
- exports.POOL_ADDRESSES = N;
35
+ exports.POOL_ADDRESSES = B;
36
36
  exports.PROTOCOL_OBJECT_ID = Ke;
37
- exports.PYTH_ENDPOINTS = Pe;
38
- exports.PYTH_FEED_IDS = Ae;
37
+ exports.PYTH_ENDPOINTS = Te;
38
+ exports.PYTH_FEED_IDS = Pe;
39
39
  exports.RPC_PROVIDERS = Vt;
40
40
  exports.SCA_COIN_TYPE = Ee;
41
- exports.SDK_API_BASE_URL = Bt;
41
+ exports.SDK_API_BASE_URL = Nt;
42
42
  exports.SUPPORT_BORROW_INCENTIVE_POOLS = ye;
43
43
  exports.SUPPORT_BORROW_INCENTIVE_REWARDS = Ue;
44
44
  exports.SUPPORT_COLLATERALS = V;
@@ -52,21 +52,21 @@ exports.SUPPORT_SUI_BRIDGE = Ft;
52
52
  exports.SUPPORT_WORMHOLE = Kt;
53
53
  exports.Scallop = ao;
54
54
  exports.ScallopAddress = z;
55
- exports.ScallopBuilder = ke;
55
+ exports.ScallopBuilder = Ce;
56
56
  exports.ScallopCache = K;
57
57
  exports.ScallopClient = ct;
58
- exports.ScallopIndexer = Ce;
59
- exports.ScallopQuery = fe;
58
+ exports.ScallopIndexer = he;
59
+ exports.ScallopQuery = be;
60
60
  exports.ScallopUtils = re;
61
61
  exports.TEST_ADDRESSES = ut;
62
- exports.UNLOCK_ROUND_DURATION = be;
62
+ exports.UNLOCK_ROUND_DURATION = le;
63
63
  exports.USE_TEST_ADDRESS = it;
64
64
  exports.assetCoins = vs;
65
65
  exports.coinDecimals = dt;
66
- exports.coinIds = Te;
66
+ exports.coinIds = xe;
67
67
  exports.marketCoins = Ms;
68
- exports.queryKeys = B;
69
- exports.sCoinIds = ue;
68
+ exports.queryKeys = N;
69
+ exports.sCoinIds = fe;
70
70
  exports.sCoinRawNameToName = Ut;
71
71
  exports.sCoinTypeToName = We;
72
72
  exports.sCoins = js;