aftermath-ts-sdk 1.3.28 → 2.0.0
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.d.ts +16828 -5
- package/dist/index.js +22695 -19
- package/dist/index.js.map +1 -0
- package/package.json +69 -60
- package/dist/general/apiHelpers/dynamicFieldsApiHelpers.d.ts +0 -41
- package/dist/general/apiHelpers/dynamicFieldsApiHelpers.d.ts.map +0 -1
- package/dist/general/apiHelpers/dynamicFieldsApiHelpers.js +0 -110
- package/dist/general/apiHelpers/eventsApiHelpers.d.ts +0 -43
- package/dist/general/apiHelpers/eventsApiHelpers.d.ts.map +0 -1
- package/dist/general/apiHelpers/eventsApiHelpers.js +0 -170
- package/dist/general/apiHelpers/inspectionsApiHelpers.d.ts +0 -28
- package/dist/general/apiHelpers/inspectionsApiHelpers.d.ts.map +0 -1
- package/dist/general/apiHelpers/inspectionsApiHelpers.js +0 -58
- package/dist/general/apiHelpers/objectsApiHelpers.d.ts +0 -77
- package/dist/general/apiHelpers/objectsApiHelpers.d.ts.map +0 -1
- package/dist/general/apiHelpers/objectsApiHelpers.js +0 -197
- package/dist/general/apiHelpers/transactionsApiHelpers.d.ts +0 -50
- package/dist/general/apiHelpers/transactionsApiHelpers.d.ts.map +0 -1
- package/dist/general/apiHelpers/transactionsApiHelpers.js +0 -256
- package/dist/general/dynamicGas/dynamicGas.d.ts +0 -48
- package/dist/general/dynamicGas/dynamicGas.d.ts.map +0 -1
- package/dist/general/dynamicGas/dynamicGas.js +0 -69
- package/dist/general/dynamicGas/dynamicGasTypes.d.ts +0 -37
- package/dist/general/dynamicGas/dynamicGasTypes.d.ts.map +0 -1
- package/dist/general/dynamicGas/dynamicGasTypes.js +0 -2
- package/dist/general/nfts/nftsApi.d.ts +0 -35
- package/dist/general/nfts/nftsApi.d.ts.map +0 -1
- package/dist/general/nfts/nftsApi.js +0 -124
- package/dist/general/nfts/nftsApiCasting.d.ts +0 -11
- package/dist/general/nfts/nftsApiCasting.d.ts.map +0 -1
- package/dist/general/nfts/nftsApiCasting.js +0 -115
- package/dist/general/nfts/nftsTypes.d.ts +0 -31
- package/dist/general/nfts/nftsTypes.d.ts.map +0 -1
- package/dist/general/nfts/nftsTypes.js +0 -2
- package/dist/general/priceFeeds/priceFeeds.d.ts +0 -3
- package/dist/general/priceFeeds/priceFeeds.d.ts.map +0 -1
- package/dist/general/priceFeeds/priceFeeds.js +0 -26
- package/dist/general/priceFeeds/priceFeedsApi.d.ts +0 -3
- package/dist/general/priceFeeds/priceFeedsApi.d.ts.map +0 -1
- package/dist/general/priceFeeds/priceFeedsApi.js +0 -33
- package/dist/general/priceFeeds/priceFeedsTypes.d.ts +0 -3
- package/dist/general/priceFeeds/priceFeedsTypes.d.ts.map +0 -1
- package/dist/general/priceFeeds/priceFeedsTypes.js +0 -7
- package/dist/general/prices/coinGeckoTypes.d.ts +0 -16
- package/dist/general/prices/coinGeckoTypes.d.ts.map +0 -1
- package/dist/general/prices/coinGeckoTypes.js +0 -2
- package/dist/general/prices/prices.d.ts +0 -92
- package/dist/general/prices/prices.d.ts.map +0 -1
- package/dist/general/prices/prices.js +0 -124
- package/dist/general/providers/aftermath.d.ts +0 -200
- package/dist/general/providers/aftermath.d.ts.map +0 -1
- package/dist/general/providers/aftermath.js +0 -258
- package/dist/general/providers/aftermathApi.d.ts +0 -197
- package/dist/general/providers/aftermathApi.d.ts.map +0 -1
- package/dist/general/providers/aftermathApi.js +0 -255
- package/dist/general/providers/index.d.ts +0 -3
- package/dist/general/providers/index.d.ts.map +0 -1
- package/dist/general/providers/index.js +0 -18
- package/dist/general/types/castingTypes.d.ts +0 -51
- package/dist/general/types/castingTypes.d.ts.map +0 -1
- package/dist/general/types/castingTypes.js +0 -8
- package/dist/general/types/configTypes.d.ts +0 -187
- package/dist/general/types/configTypes.d.ts.map +0 -1
- package/dist/general/types/configTypes.js +0 -2
- package/dist/general/types/generalTypes.d.ts +0 -349
- package/dist/general/types/generalTypes.d.ts.map +0 -1
- package/dist/general/types/generalTypes.js +0 -2
- package/dist/general/types/index.d.ts +0 -7
- package/dist/general/types/index.d.ts.map +0 -1
- package/dist/general/types/index.js +0 -22
- package/dist/general/types/moveErrorsInterface.d.ts +0 -6
- package/dist/general/types/moveErrorsInterface.d.ts.map +0 -1
- package/dist/general/types/moveErrorsInterface.js +0 -2
- package/dist/general/types/suiTypes.d.ts +0 -2
- package/dist/general/types/suiTypes.d.ts.map +0 -1
- package/dist/general/types/suiTypes.js +0 -5
- package/dist/general/utils/caller.d.ts +0 -58
- package/dist/general/utils/caller.d.ts.map +0 -1
- package/dist/general/utils/caller.js +0 -231
- package/dist/general/utils/casting.d.ts +0 -212
- package/dist/general/utils/casting.d.ts.map +0 -1
- package/dist/general/utils/casting.js +0 -273
- package/dist/general/utils/fixedUtils.d.ts +0 -109
- package/dist/general/utils/fixedUtils.d.ts.map +0 -1
- package/dist/general/utils/fixedUtils.js +0 -100
- package/dist/general/utils/helpers.d.ts +0 -408
- package/dist/general/utils/helpers.d.ts.map +0 -1
- package/dist/general/utils/helpers.js +0 -725
- package/dist/general/utils/iFixedUtils.d.ts +0 -78
- package/dist/general/utils/iFixedUtils.d.ts.map +0 -1
- package/dist/general/utils/iFixedUtils.js +0 -109
- package/dist/general/utils/index.d.ts +0 -3
- package/dist/general/utils/index.d.ts.map +0 -1
- package/dist/general/utils/index.js +0 -18
- package/dist/general/wallet/wallet.d.ts +0 -89
- package/dist/general/wallet/wallet.d.ts.map +0 -1
- package/dist/general/wallet/wallet.js +0 -120
- package/dist/general/wallet/walletApi.d.ts +0 -20
- package/dist/general/wallet/walletApi.d.ts.map +0 -1
- package/dist/general/wallet/walletApi.js +0 -66
- package/dist/index.d.ts.map +0 -1
- package/dist/packages/auth/auth.d.ts +0 -135
- package/dist/packages/auth/auth.d.ts.map +0 -1
- package/dist/packages/auth/auth.js +0 -289
- package/dist/packages/auth/authTypes.d.ts +0 -102
- package/dist/packages/auth/authTypes.d.ts.map +0 -1
- package/dist/packages/auth/authTypes.js +0 -2
- package/dist/packages/auth/index.d.ts +0 -2
- package/dist/packages/auth/index.d.ts.map +0 -1
- package/dist/packages/auth/index.js +0 -17
- package/dist/packages/coin/api/coinApi.d.ts +0 -33
- package/dist/packages/coin/api/coinApi.d.ts.map +0 -1
- package/dist/packages/coin/api/coinApi.js +0 -167
- package/dist/packages/coin/coin.d.ts +0 -320
- package/dist/packages/coin/coin.d.ts.map +0 -1
- package/dist/packages/coin/coin.js +0 -467
- package/dist/packages/coin/coinTypes.d.ts +0 -139
- package/dist/packages/coin/coinTypes.d.ts.map +0 -1
- package/dist/packages/coin/coinTypes.js +0 -2
- package/dist/packages/coin/index.d.ts +0 -2
- package/dist/packages/coin/index.d.ts.map +0 -1
- package/dist/packages/coin/index.js +0 -17
- package/dist/packages/dca/api/dcaApi.d.ts +0 -26
- package/dist/packages/dca/api/dcaApi.d.ts.map +0 -1
- package/dist/packages/dca/api/dcaApi.js +0 -60
- package/dist/packages/dca/dca.d.ts +0 -174
- package/dist/packages/dca/dca.d.ts.map +0 -1
- package/dist/packages/dca/dca.js +0 -230
- package/dist/packages/dca/dcaTypes.d.ts +0 -319
- package/dist/packages/dca/dcaTypes.d.ts.map +0 -1
- package/dist/packages/dca/dcaTypes.js +0 -2
- package/dist/packages/dca/index.d.ts +0 -2
- package/dist/packages/dca/index.d.ts.map +0 -1
- package/dist/packages/dca/index.js +0 -17
- package/dist/packages/farms/api/farmsApi.d.ts +0 -996
- package/dist/packages/farms/api/farmsApi.d.ts.map +0 -1
- package/dist/packages/farms/api/farmsApi.js +0 -1826
- package/dist/packages/farms/api/farmsApiCasting.d.ts +0 -39
- package/dist/packages/farms/api/farmsApiCasting.d.ts.map +0 -1
- package/dist/packages/farms/api/farmsApiCasting.js +0 -427
- package/dist/packages/farms/api/farmsApiCastingTypes.d.ts +0 -235
- package/dist/packages/farms/api/farmsApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/farms/api/farmsApiCastingTypes.js +0 -2
- package/dist/packages/farms/farms.d.ts +0 -221
- package/dist/packages/farms/farms.d.ts.map +0 -1
- package/dist/packages/farms/farms.js +0 -302
- package/dist/packages/farms/farmsStakedPosition.d.ts +0 -229
- package/dist/packages/farms/farmsStakedPosition.d.ts.map +0 -1
- package/dist/packages/farms/farmsStakedPosition.js +0 -473
- package/dist/packages/farms/farmsStakingPool.d.ts +0 -285
- package/dist/packages/farms/farmsStakingPool.d.ts.map +0 -1
- package/dist/packages/farms/farmsStakingPool.js +0 -488
- package/dist/packages/farms/farmsTypes.d.ts +0 -571
- package/dist/packages/farms/farmsTypes.d.ts.map +0 -1
- package/dist/packages/farms/farmsTypes.js +0 -49
- package/dist/packages/farms/index.d.ts +0 -4
- package/dist/packages/farms/index.d.ts.map +0 -1
- package/dist/packages/farms/index.js +0 -19
- package/dist/packages/faucet/api/faucetApi.d.ts +0 -37
- package/dist/packages/faucet/api/faucetApi.d.ts.map +0 -1
- package/dist/packages/faucet/api/faucetApi.js +0 -145
- package/dist/packages/faucet/api/faucetApiCasting.d.ts +0 -7
- package/dist/packages/faucet/api/faucetApiCasting.d.ts.map +0 -1
- package/dist/packages/faucet/api/faucetApiCasting.js +0 -33
- package/dist/packages/faucet/api/faucetApiCastingTypes.d.ts +0 -10
- package/dist/packages/faucet/api/faucetApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/faucet/api/faucetApiCastingTypes.js +0 -2
- package/dist/packages/faucet/faucet.d.ts +0 -16
- package/dist/packages/faucet/faucet.d.ts.map +0 -1
- package/dist/packages/faucet/faucet.js +0 -64
- package/dist/packages/faucet/faucetTypes.d.ts +0 -20
- package/dist/packages/faucet/faucetTypes.d.ts.map +0 -1
- package/dist/packages/faucet/faucetTypes.js +0 -2
- package/dist/packages/faucet/index.d.ts +0 -2
- package/dist/packages/faucet/index.d.ts.map +0 -1
- package/dist/packages/faucet/index.js +0 -17
- package/dist/packages/index.d.ts +0 -14
- package/dist/packages/index.d.ts.map +0 -1
- package/dist/packages/index.js +0 -29
- package/dist/packages/leveragedStaking/api/leveragedStakingApi.d.ts +0 -202
- package/dist/packages/leveragedStaking/api/leveragedStakingApi.d.ts.map +0 -1
- package/dist/packages/leveragedStaking/api/leveragedStakingApi.js +0 -1104
- package/dist/packages/leveragedStaking/api/leveragedStakingApiCasting.d.ts +0 -12
- package/dist/packages/leveragedStaking/api/leveragedStakingApiCasting.d.ts.map +0 -1
- package/dist/packages/leveragedStaking/api/leveragedStakingApiCasting.js +0 -69
- package/dist/packages/leveragedStaking/api/leveragedStakingApiCastingTypes.d.ts +0 -39
- package/dist/packages/leveragedStaking/api/leveragedStakingApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/leveragedStaking/api/leveragedStakingApiCastingTypes.js +0 -2
- package/dist/packages/leveragedStaking/index.d.ts +0 -2
- package/dist/packages/leveragedStaking/index.d.ts.map +0 -1
- package/dist/packages/leveragedStaking/index.js +0 -17
- package/dist/packages/leveragedStaking/leveragedStaking.d.ts +0 -68
- package/dist/packages/leveragedStaking/leveragedStaking.d.ts.map +0 -1
- package/dist/packages/leveragedStaking/leveragedStaking.js +0 -154
- package/dist/packages/leveragedStaking/leveragedStakingTypes.d.ts +0 -48
- package/dist/packages/leveragedStaking/leveragedStakingTypes.d.ts.map +0 -1
- package/dist/packages/leveragedStaking/leveragedStakingTypes.js +0 -16
- package/dist/packages/limitOrders/api/limitOrdersApi.d.ts +0 -12
- package/dist/packages/limitOrders/api/limitOrdersApi.d.ts.map +0 -1
- package/dist/packages/limitOrders/api/limitOrdersApi.js +0 -25
- package/dist/packages/limitOrders/index.d.ts +0 -2
- package/dist/packages/limitOrders/index.d.ts.map +0 -1
- package/dist/packages/limitOrders/index.js +0 -17
- package/dist/packages/limitOrders/limitOrders.d.ts +0 -143
- package/dist/packages/limitOrders/limitOrders.d.ts.map +0 -1
- package/dist/packages/limitOrders/limitOrders.js +0 -190
- package/dist/packages/limitOrders/limitOrdersTypes.d.ts +0 -211
- package/dist/packages/limitOrders/limitOrdersTypes.d.ts.map +0 -1
- package/dist/packages/limitOrders/limitOrdersTypes.js +0 -2
- package/dist/packages/multisig/api/multisigApi.d.ts +0 -10
- package/dist/packages/multisig/api/multisigApi.d.ts.map +0 -1
- package/dist/packages/multisig/api/multisigApi.js +0 -39
- package/dist/packages/multisig/index.d.ts +0 -2
- package/dist/packages/multisig/index.d.ts.map +0 -1
- package/dist/packages/multisig/index.js +0 -17
- package/dist/packages/multisig/multisig.d.ts +0 -46
- package/dist/packages/multisig/multisig.d.ts.map +0 -1
- package/dist/packages/multisig/multisig.js +0 -65
- package/dist/packages/multisig/multisigTypes.d.ts +0 -26
- package/dist/packages/multisig/multisigTypes.d.ts.map +0 -1
- package/dist/packages/multisig/multisigTypes.js +0 -2
- package/dist/packages/nftAmm/api/nftAmmApi.d.ts +0 -93
- package/dist/packages/nftAmm/api/nftAmmApi.d.ts.map +0 -1
- package/dist/packages/nftAmm/api/nftAmmApi.js +0 -250
- package/dist/packages/nftAmm/api/nftAmmApiCasting.d.ts +0 -6
- package/dist/packages/nftAmm/api/nftAmmApiCasting.d.ts.map +0 -1
- package/dist/packages/nftAmm/api/nftAmmApiCasting.js +0 -43
- package/dist/packages/nftAmm/api/nftAmmApiCastingTypes.d.ts +0 -10
- package/dist/packages/nftAmm/api/nftAmmApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/nftAmm/api/nftAmmApiCastingTypes.js +0 -2
- package/dist/packages/nftAmm/index.d.ts +0 -2
- package/dist/packages/nftAmm/index.d.ts.map +0 -1
- package/dist/packages/nftAmm/index.js +0 -17
- package/dist/packages/nftAmm/nftAmm.d.ts +0 -18
- package/dist/packages/nftAmm/nftAmm.d.ts.map +0 -1
- package/dist/packages/nftAmm/nftAmm.js +0 -73
- package/dist/packages/nftAmm/nftAmmMarket.d.ts +0 -54
- package/dist/packages/nftAmm/nftAmmMarket.d.ts.map +0 -1
- package/dist/packages/nftAmm/nftAmmMarket.js +0 -154
- package/dist/packages/nftAmm/nftAmmTypes.d.ts +0 -51
- package/dist/packages/nftAmm/nftAmmTypes.d.ts.map +0 -1
- package/dist/packages/nftAmm/nftAmmTypes.js +0 -2
- package/dist/packages/perpetuals/api/perpetualsApi.d.ts +0 -44
- package/dist/packages/perpetuals/api/perpetualsApi.d.ts.map +0 -1
- package/dist/packages/perpetuals/api/perpetualsApi.js +0 -1420
- package/dist/packages/perpetuals/api/perpetualsApiCasting.d.ts +0 -27
- package/dist/packages/perpetuals/api/perpetualsApiCasting.d.ts.map +0 -1
- package/dist/packages/perpetuals/api/perpetualsApiCasting.js +0 -463
- package/dist/packages/perpetuals/index.d.ts +0 -5
- package/dist/packages/perpetuals/index.d.ts.map +0 -1
- package/dist/packages/perpetuals/index.js +0 -20
- package/dist/packages/perpetuals/perpetuals.d.ts +0 -860
- package/dist/packages/perpetuals/perpetuals.d.ts.map +0 -1
- package/dist/packages/perpetuals/perpetuals.js +0 -1102
- package/dist/packages/perpetuals/perpetualsAccount.d.ts +0 -780
- package/dist/packages/perpetuals/perpetualsAccount.d.ts.map +0 -1
- package/dist/packages/perpetuals/perpetualsAccount.js +0 -1406
- package/dist/packages/perpetuals/perpetualsCastingTypes.d.ts +0 -170
- package/dist/packages/perpetuals/perpetualsCastingTypes.d.ts.map +0 -1
- package/dist/packages/perpetuals/perpetualsCastingTypes.js +0 -2
- package/dist/packages/perpetuals/perpetualsMarket.d.ts +0 -360
- package/dist/packages/perpetuals/perpetualsMarket.d.ts.map +0 -1
- package/dist/packages/perpetuals/perpetualsMarket.js +0 -475
- package/dist/packages/perpetuals/perpetualsTypes.d.ts +0 -2968
- package/dist/packages/perpetuals/perpetualsTypes.d.ts.map +0 -1
- package/dist/packages/perpetuals/perpetualsTypes.js +0 -165
- package/dist/packages/perpetuals/perpetualsVault.d.ts +0 -438
- package/dist/packages/perpetuals/perpetualsVault.d.ts.map +0 -1
- package/dist/packages/perpetuals/perpetualsVault.js +0 -601
- package/dist/packages/perpetuals/utils/index.d.ts +0 -2
- package/dist/packages/perpetuals/utils/index.d.ts.map +0 -1
- package/dist/packages/perpetuals/utils/index.js +0 -17
- package/dist/packages/perpetuals/utils/perpetualsOrderUtils.d.ts +0 -12
- package/dist/packages/perpetuals/utils/perpetualsOrderUtils.d.ts.map +0 -1
- package/dist/packages/perpetuals/utils/perpetualsOrderUtils.js +0 -60
- package/dist/packages/pools/api/poolsApi.d.ts +0 -342
- package/dist/packages/pools/api/poolsApi.d.ts.map +0 -1
- package/dist/packages/pools/api/poolsApi.js +0 -857
- package/dist/packages/pools/api/poolsApiCasting.d.ts +0 -13
- package/dist/packages/pools/api/poolsApiCasting.d.ts.map +0 -1
- package/dist/packages/pools/api/poolsApiCasting.js +0 -91
- package/dist/packages/pools/api/poolsApiCastingTypes.d.ts +0 -64
- package/dist/packages/pools/api/poolsApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/pools/api/poolsApiCastingTypes.js +0 -2
- package/dist/packages/pools/index.d.ts +0 -3
- package/dist/packages/pools/index.d.ts.map +0 -1
- package/dist/packages/pools/index.js +0 -18
- package/dist/packages/pools/pool.d.ts +0 -459
- package/dist/packages/pools/pool.d.ts.map +0 -1
- package/dist/packages/pools/pool.js +0 -647
- package/dist/packages/pools/pools.d.ts +0 -405
- package/dist/packages/pools/pools.d.ts.map +0 -1
- package/dist/packages/pools/pools.js +0 -533
- package/dist/packages/pools/poolsTypes.d.ts +0 -469
- package/dist/packages/pools/poolsTypes.d.ts.map +0 -1
- package/dist/packages/pools/poolsTypes.js +0 -2
- package/dist/packages/pools/utils/cmmmCalculations.d.ts +0 -42
- package/dist/packages/pools/utils/cmmmCalculations.d.ts.map +0 -1
- package/dist/packages/pools/utils/cmmmCalculations.js +0 -1380
- package/dist/packages/referralVault/api/referralVaultApi.d.ts +0 -39
- package/dist/packages/referralVault/api/referralVaultApi.d.ts.map +0 -1
- package/dist/packages/referralVault/api/referralVaultApi.js +0 -125
- package/dist/packages/referralVault/index.d.ts +0 -2
- package/dist/packages/referralVault/index.d.ts.map +0 -1
- package/dist/packages/referralVault/index.js +0 -17
- package/dist/packages/referralVault/referralVault.d.ts +0 -47
- package/dist/packages/referralVault/referralVault.d.ts.map +0 -1
- package/dist/packages/referralVault/referralVault.js +0 -71
- package/dist/packages/referralVault/referralVaultTypes.d.ts +0 -2
- package/dist/packages/referralVault/referralVaultTypes.d.ts.map +0 -1
- package/dist/packages/referralVault/referralVaultTypes.js +0 -2
- package/dist/packages/referrals/index.d.ts +0 -2
- package/dist/packages/referrals/index.d.ts.map +0 -1
- package/dist/packages/referrals/index.js +0 -17
- package/dist/packages/referrals/referrals.d.ts +0 -27
- package/dist/packages/referrals/referrals.d.ts.map +0 -1
- package/dist/packages/referrals/referrals.js +0 -95
- package/dist/packages/referrals/referralsTypes.d.ts +0 -166
- package/dist/packages/referrals/referralsTypes.d.ts.map +0 -1
- package/dist/packages/referrals/referralsTypes.js +0 -2
- package/dist/packages/rewards/index.d.ts +0 -2
- package/dist/packages/rewards/index.d.ts.map +0 -1
- package/dist/packages/rewards/index.js +0 -17
- package/dist/packages/rewards/rewards.d.ts +0 -21
- package/dist/packages/rewards/rewards.d.ts.map +0 -1
- package/dist/packages/rewards/rewards.js +0 -65
- package/dist/packages/rewards/rewardsTypes.d.ts +0 -169
- package/dist/packages/rewards/rewardsTypes.d.ts.map +0 -1
- package/dist/packages/rewards/rewardsTypes.js +0 -2
- package/dist/packages/router/api/routerApi.d.ts +0 -35
- package/dist/packages/router/api/routerApi.d.ts.map +0 -1
- package/dist/packages/router/api/routerApi.js +0 -88
- package/dist/packages/router/api/routerApiCasting.d.ts +0 -6
- package/dist/packages/router/api/routerApiCasting.d.ts.map +0 -1
- package/dist/packages/router/api/routerApiCasting.js +0 -22
- package/dist/packages/router/api/routerApiCastingTypes.d.ts +0 -12
- package/dist/packages/router/api/routerApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/router/api/routerApiCastingTypes.js +0 -2
- package/dist/packages/router/index.d.ts +0 -2
- package/dist/packages/router/index.d.ts.map +0 -1
- package/dist/packages/router/index.js +0 -17
- package/dist/packages/router/router.d.ts +0 -224
- package/dist/packages/router/router.d.ts.map +0 -1
- package/dist/packages/router/router.js +0 -283
- package/dist/packages/router/routerTypes.d.ts +0 -300
- package/dist/packages/router/routerTypes.d.ts.map +0 -1
- package/dist/packages/router/routerTypes.js +0 -2
- package/dist/packages/staking/api/stakingApi.d.ts +0 -129
- package/dist/packages/staking/api/stakingApi.d.ts.map +0 -1
- package/dist/packages/staking/api/stakingApi.js +0 -487
- package/dist/packages/staking/api/stakingApiCasting.d.ts +0 -11
- package/dist/packages/staking/api/stakingApiCasting.d.ts.map +0 -1
- package/dist/packages/staking/api/stakingApiCasting.js +0 -87
- package/dist/packages/staking/api/stakingApiCastingTypes.d.ts +0 -97
- package/dist/packages/staking/api/stakingApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/staking/api/stakingApiCastingTypes.js +0 -2
- package/dist/packages/staking/index.d.ts +0 -2
- package/dist/packages/staking/index.d.ts.map +0 -1
- package/dist/packages/staking/index.js +0 -17
- package/dist/packages/staking/staking.d.ts +0 -385
- package/dist/packages/staking/staking.d.ts.map +0 -1
- package/dist/packages/staking/staking.js +0 -501
- package/dist/packages/staking/stakingTypes.d.ts +0 -575
- package/dist/packages/staking/stakingTypes.d.ts.map +0 -1
- package/dist/packages/staking/stakingTypes.js +0 -45
- package/dist/packages/sui/api/suiApi.d.ts +0 -21
- package/dist/packages/sui/api/suiApi.d.ts.map +0 -1
- package/dist/packages/sui/api/suiApi.js +0 -46
- package/dist/packages/sui/index.d.ts +0 -2
- package/dist/packages/sui/index.d.ts.map +0 -1
- package/dist/packages/sui/index.js +0 -17
- package/dist/packages/sui/sui.d.ts +0 -53
- package/dist/packages/sui/sui.d.ts.map +0 -1
- package/dist/packages/sui/sui.js +0 -77
- package/dist/packages/suiFrens/api/suiFrensApi.d.ts +0 -204
- package/dist/packages/suiFrens/api/suiFrensApi.d.ts.map +0 -1
- package/dist/packages/suiFrens/api/suiFrensApi.js +0 -756
- package/dist/packages/suiFrens/api/suiFrensApiCasting.d.ts +0 -21
- package/dist/packages/suiFrens/api/suiFrensApiCasting.d.ts.map +0 -1
- package/dist/packages/suiFrens/api/suiFrensApiCasting.js +0 -181
- package/dist/packages/suiFrens/api/suiFrensApiCastingTypes.d.ts +0 -77
- package/dist/packages/suiFrens/api/suiFrensApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/suiFrens/api/suiFrensApiCastingTypes.js +0 -2
- package/dist/packages/suiFrens/index.d.ts +0 -4
- package/dist/packages/suiFrens/index.d.ts.map +0 -1
- package/dist/packages/suiFrens/index.js +0 -19
- package/dist/packages/suiFrens/stakedSuiFren.d.ts +0 -31
- package/dist/packages/suiFrens/stakedSuiFren.d.ts.map +0 -1
- package/dist/packages/suiFrens/stakedSuiFren.js +0 -90
- package/dist/packages/suiFrens/suiFren.d.ts +0 -32
- package/dist/packages/suiFrens/suiFren.d.ts.map +0 -1
- package/dist/packages/suiFrens/suiFren.js +0 -150
- package/dist/packages/suiFrens/suiFrens.d.ts +0 -56
- package/dist/packages/suiFrens/suiFrens.d.ts.map +0 -1
- package/dist/packages/suiFrens/suiFrens.js +0 -218
- package/dist/packages/suiFrens/suiFrensTypes.d.ts +0 -148
- package/dist/packages/suiFrens/suiFrensTypes.d.ts.map +0 -1
- package/dist/packages/suiFrens/suiFrensTypes.js +0 -8
- package/dist/packages/userData/index.d.ts +0 -2
- package/dist/packages/userData/index.d.ts.map +0 -1
- package/dist/packages/userData/index.js +0 -17
- package/dist/packages/userData/userData.d.ts +0 -89
- package/dist/packages/userData/userData.d.ts.map +0 -1
- package/dist/packages/userData/userData.js +0 -119
- package/dist/packages/userData/userDataTypes.d.ts +0 -29
- package/dist/packages/userData/userDataTypes.d.ts.map +0 -1
- package/dist/packages/userData/userDataTypes.js +0 -2
- package/dist/types.d.ts +0 -15
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -31
|
@@ -1,1104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.LeveragedStakingApi = void 0;
|
|
16
|
-
const utils_1 = require("../../../general/utils");
|
|
17
|
-
const eventsApiHelpers_1 = require("../../../general/apiHelpers/eventsApiHelpers");
|
|
18
|
-
const coin_1 = require("../../coin");
|
|
19
|
-
const sui_1 = require("../../sui");
|
|
20
|
-
const dayjs_1 = __importDefault(require("dayjs"));
|
|
21
|
-
// import BigNumber from "bignumber.js";
|
|
22
|
-
// import {
|
|
23
|
-
// BalanceSheet,
|
|
24
|
-
// BorrowIndex,
|
|
25
|
-
// InterestModel,
|
|
26
|
-
// ScallopTxBlock,
|
|
27
|
-
// SupportPoolCoins,
|
|
28
|
-
// } from "@scallop-io/sui-scallop-sdk";
|
|
29
|
-
/**
|
|
30
|
-
* Represents the API for interacting with the Leveraged Staking module.
|
|
31
|
-
*/
|
|
32
|
-
class LeveragedStakingApi {
|
|
33
|
-
// =========================================================================
|
|
34
|
-
// Constructor
|
|
35
|
-
// =========================================================================
|
|
36
|
-
/**
|
|
37
|
-
* Creates an instance of the LeveragedStakingApi class.
|
|
38
|
-
* @param {AftermathApi} Provider - The AftermathApi instance.
|
|
39
|
-
* @param {ScallopProviders} ScallopProviders - The ScallopProviders instance.
|
|
40
|
-
* @throws {Error} If not all required addresses have been set in AfSdk
|
|
41
|
-
*/
|
|
42
|
-
constructor(Provider, ScallopProviders // ScallopProviders
|
|
43
|
-
) {
|
|
44
|
-
this.Provider = Provider;
|
|
45
|
-
this.ScallopProviders = ScallopProviders;
|
|
46
|
-
// =========================================================================
|
|
47
|
-
// Objects
|
|
48
|
-
// =========================================================================
|
|
49
|
-
/**
|
|
50
|
-
* Fetches the leveraged stake position for a given wallet address.
|
|
51
|
-
* @param inputs - The input parameters for fetching the leveraged stake position.
|
|
52
|
-
* @returns A promise that resolves to the leveraged stake position response.
|
|
53
|
-
*/
|
|
54
|
-
this.fetchLeveragedStakePosition = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
const { walletAddress } = inputs;
|
|
56
|
-
const leveragedAfSuiPositions = yield this.Provider.Objects().fetchCastObjectsOwnedByAddressOfType({
|
|
57
|
-
walletAddress,
|
|
58
|
-
objectType: this.objectTypes.leveragedAfSuiPosition,
|
|
59
|
-
objectFromSuiObjectResponse: utils_1.Casting.leveragedStaking
|
|
60
|
-
.leveragedAfSuiPositionFromSuiObjectResponse,
|
|
61
|
-
});
|
|
62
|
-
if (leveragedAfSuiPositions.length <= 0)
|
|
63
|
-
return "none";
|
|
64
|
-
return leveragedAfSuiPositions[0];
|
|
65
|
-
});
|
|
66
|
-
/**
|
|
67
|
-
* Fetches the SUI market pool.
|
|
68
|
-
* @returns A promise that resolves to the ScallopMarketPool object representing the SUI market pool.
|
|
69
|
-
* @throws An error if the SUI market pool is not found.
|
|
70
|
-
*/
|
|
71
|
-
this.fetchSuiMarketPool = () => __awaiter(this, void 0, void 0, function* () {
|
|
72
|
-
// ScallopMarketPool
|
|
73
|
-
if (!this.ScallopProviders)
|
|
74
|
-
throw new Error("Scallop providers not set");
|
|
75
|
-
const suiMarketPool = yield this.ScallopProviders.Query.getMarketPool("sui");
|
|
76
|
-
if (!suiMarketPool)
|
|
77
|
-
throw new Error("sui market pool not found");
|
|
78
|
-
return suiMarketPool;
|
|
79
|
-
});
|
|
80
|
-
/**
|
|
81
|
-
* Fetches the LeveragedAfSuiState.
|
|
82
|
-
* @returns A promise that resolves to the LeveragedAfSuiState.
|
|
83
|
-
*/
|
|
84
|
-
this.fetchLeveragedAfSuiState = () => __awaiter(this, void 0, void 0, function* () {
|
|
85
|
-
return this.Provider.Objects().fetchCastObject({
|
|
86
|
-
objectId: this.addresses.leveragedStaking.objects.leveragedAfSuiState,
|
|
87
|
-
objectFromSuiObjectResponse: utils_1.Casting.leveragedStaking
|
|
88
|
-
.leveragedAfSuiStateFromSuiObjectResponse,
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
/**
|
|
92
|
-
* Fetches the market collateral for the AfSui market.
|
|
93
|
-
* @returns A promise that resolves to the ScallopMarketCollateral object.
|
|
94
|
-
* @throws An error if the Sui market pool is not found.
|
|
95
|
-
*/
|
|
96
|
-
this.fetchAfSuiMarketCollateral = () => __awaiter(this, void 0, void 0, function* () {
|
|
97
|
-
// ScallopMarketCollateral
|
|
98
|
-
if (!this.ScallopProviders)
|
|
99
|
-
throw new Error("Scallop providers not set");
|
|
100
|
-
const afSuiMarketCollateral = yield this.ScallopProviders.Query.getMarketCollateral("afsui");
|
|
101
|
-
if (!afSuiMarketCollateral)
|
|
102
|
-
throw new Error("sui market pool not found");
|
|
103
|
-
return afSuiMarketCollateral;
|
|
104
|
-
});
|
|
105
|
-
this.fetchLeveragedAfSuiPosition = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
106
|
-
if (!this.ScallopProviders)
|
|
107
|
-
throw new Error("Scallop providers not set");
|
|
108
|
-
// ia. Obtain the owned `LeveragedAfSuiPosition` object.
|
|
109
|
-
const leveragedAfSuiPosition = yield this.Provider.Objects().fetchCastObject({
|
|
110
|
-
objectId: inputs.leveragedAfSuiPositionId,
|
|
111
|
-
objectFromSuiObjectResponse: utils_1.Casting.leveragedStaking
|
|
112
|
-
.leveragedAfSuiPositionFromSuiObjectResponse,
|
|
113
|
-
});
|
|
114
|
-
// ib. Obtain the shared `Obligation` object.
|
|
115
|
-
const obligation = yield this.ScallopProviders.Query.queryObligation(inputs.obligationId.toString());
|
|
116
|
-
// ic. Obtain Scallop's SUI Market.
|
|
117
|
-
const marketData = yield this.getMarketData(Object.assign(Object.assign({}, inputs), { poolCoinName: "sui" }));
|
|
118
|
-
const oldBorrowIndex = Math.ceil(Number(marketData.borrowIndex));
|
|
119
|
-
// ii. Update the position's Borrow Index to account for increase in the SUI Borrow Rate.
|
|
120
|
-
// new_borrow_index = old_borrow_index + (old_borrow_index * interest_rate * time_delta)
|
|
121
|
-
const currentTimestamp = Math.ceil((0, dayjs_1.default)().valueOf() / 1000);
|
|
122
|
-
const lastUpdated = Number(marketData.lastUpdated);
|
|
123
|
-
const timeDelta = currentTimestamp - lastUpdated;
|
|
124
|
-
const interestRate = Number(marketData.interestRate.value);
|
|
125
|
-
const interestRateScale = Number(marketData.interestRateScale) * 100;
|
|
126
|
-
const borrowIndexDelta = (oldBorrowIndex * interestRate * timeDelta) / interestRateScale;
|
|
127
|
-
const newBorrowIndex = oldBorrowIndex + borrowIndexDelta;
|
|
128
|
-
// iii. Increase the Position's debt.
|
|
129
|
-
const positionBorrowIndex = Number(obligation.debts[0].borrowIndex || 0);
|
|
130
|
-
const increasedRate = newBorrowIndex / positionBorrowIndex - 1;
|
|
131
|
-
// const positionSuiDebt = BigNumber(obligation.debts[0].amount || 0);
|
|
132
|
-
// const availableRepayAmount = positionSuiDebt
|
|
133
|
-
// .multipliedBy(increasedRate + 1)
|
|
134
|
-
// // .multipliedBy(1.01)
|
|
135
|
-
// .toNumber();
|
|
136
|
-
// const positionSuiDebtUpdated = BigInt(Math.ceil(availableRepayAmount));
|
|
137
|
-
const positionSuiDebtUpdated = BigInt(0);
|
|
138
|
-
return Object.assign(Object.assign({}, leveragedAfSuiPosition), { suiDebt: positionSuiDebtUpdated });
|
|
139
|
-
});
|
|
140
|
-
// =========================================================================
|
|
141
|
-
// Transaction Commands
|
|
142
|
-
// =========================================================================
|
|
143
|
-
this.newLeveragedAfSuiPositionTx = (inputs) => {
|
|
144
|
-
const { tx } = inputs;
|
|
145
|
-
return tx.moveCall({
|
|
146
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames
|
|
147
|
-
.leveragedAfSuiPosition, "new_leveraged_afsui_position"),
|
|
148
|
-
typeArguments: [],
|
|
149
|
-
arguments: [
|
|
150
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
151
|
-
utils_1.Helpers.addTxObject(tx, inputs.obligationKeyId), // ObligationKey
|
|
152
|
-
],
|
|
153
|
-
});
|
|
154
|
-
};
|
|
155
|
-
this.initiateLeverageStakeTx = (inputs) => {
|
|
156
|
-
const { tx } = inputs;
|
|
157
|
-
return tx.moveCall({
|
|
158
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames.interface, "initiate_leverage_stake"),
|
|
159
|
-
typeArguments: [],
|
|
160
|
-
arguments: [
|
|
161
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedAfSuiPositionId), // LeveragedAfSuiPosition
|
|
162
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
163
|
-
utils_1.Helpers.addTxObject(tx, inputs.afSuiCoinId), // Coin
|
|
164
|
-
],
|
|
165
|
-
});
|
|
166
|
-
};
|
|
167
|
-
this.initiateLeverageUnstakeTx = (inputs) => {
|
|
168
|
-
const { tx } = inputs;
|
|
169
|
-
return tx.moveCall({
|
|
170
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames.interface, "initiate_leverage_unstake"),
|
|
171
|
-
typeArguments: [],
|
|
172
|
-
arguments: [
|
|
173
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedAfSuiPositionId), // LeveragedAfSuiPosition
|
|
174
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
175
|
-
tx.pure.u64(inputs.unstakeAmount), // withdraw_amount
|
|
176
|
-
],
|
|
177
|
-
});
|
|
178
|
-
};
|
|
179
|
-
this.initiateChangeLeverageTx = (inputs) => {
|
|
180
|
-
const { tx } = inputs;
|
|
181
|
-
return tx.moveCall({
|
|
182
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames.interface, "initiate_change_leverage"),
|
|
183
|
-
typeArguments: [],
|
|
184
|
-
arguments: [
|
|
185
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedAfSuiPositionId), // LeveragedAfSuiPosition
|
|
186
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
187
|
-
],
|
|
188
|
-
});
|
|
189
|
-
};
|
|
190
|
-
this.completeActionTx = (inputs) => {
|
|
191
|
-
const { tx } = inputs;
|
|
192
|
-
return tx.moveCall({
|
|
193
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames.interface, "complete_action"),
|
|
194
|
-
typeArguments: [],
|
|
195
|
-
arguments: [
|
|
196
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedActionCapId), // LeveragedActionCap
|
|
197
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedAfSuiPositionId), // LeveragedAfSuiPosition
|
|
198
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
199
|
-
utils_1.Helpers.addTxObject(tx, inputs.obligationId), // Obligation,
|
|
200
|
-
tx.object(this.addresses.staking.objects.stakedSuiVault), // StakedSuiVault
|
|
201
|
-
tx.object(this.addresses.staking.objects.safe), // Safe<TreasuryCap<AFSUI>>
|
|
202
|
-
],
|
|
203
|
-
});
|
|
204
|
-
};
|
|
205
|
-
this.depositAfSuiCollateralTx = (inputs) => {
|
|
206
|
-
const { tx } = inputs;
|
|
207
|
-
return tx.moveCall({
|
|
208
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames.interface, "deposit_afsui_collateral"),
|
|
209
|
-
typeArguments: [],
|
|
210
|
-
arguments: [
|
|
211
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedActionCapId), // LeveragedActionCap
|
|
212
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedAfSuiPositionId), // LeveragedAfSuiPosition
|
|
213
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
214
|
-
tx.object(this.addresses.scallop.objects.version), // Version
|
|
215
|
-
utils_1.Helpers.addTxObject(tx, inputs.obligationId), // Obligation
|
|
216
|
-
tx.object(this.addresses.scallop.objects.afSuiMarket), // Market
|
|
217
|
-
utils_1.Helpers.addTxObject(tx, inputs.afSuiCoinId), // Coin
|
|
218
|
-
],
|
|
219
|
-
});
|
|
220
|
-
};
|
|
221
|
-
this.withdrawAfSuiCollateralTx = (inputs) => {
|
|
222
|
-
const { tx } = inputs;
|
|
223
|
-
return tx.moveCall({
|
|
224
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames.interface, "withdraw_afsui_collateral"),
|
|
225
|
-
typeArguments: [],
|
|
226
|
-
arguments: [
|
|
227
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedActionCapId), // LeveragedActionCap
|
|
228
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedAfSuiPositionId), // LeveragedAfSuiPosition
|
|
229
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
230
|
-
tx.object(this.addresses.scallop.objects.version), // Version
|
|
231
|
-
utils_1.Helpers.addTxObject(tx, inputs.obligationId), // Obligation
|
|
232
|
-
tx.object(this.addresses.scallop.objects.afSuiMarket), // Market
|
|
233
|
-
tx.object(this.addresses.scallop.objects.coinDecimalsRegistry), // CoinDecimalsRegistry
|
|
234
|
-
tx.pure.u64(inputs.withdrawAmount), // withdraw_amount
|
|
235
|
-
tx.object(this.addresses.scallop.objects.xOracle), // XOracle
|
|
236
|
-
tx.object(sui_1.Sui.constants.addresses.suiClockId), // Clock
|
|
237
|
-
],
|
|
238
|
-
});
|
|
239
|
-
};
|
|
240
|
-
this.borrowSuiTx = (inputs) => {
|
|
241
|
-
const { tx } = inputs;
|
|
242
|
-
return tx.moveCall({
|
|
243
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames.interface, "borrow_sui"),
|
|
244
|
-
typeArguments: [],
|
|
245
|
-
arguments: [
|
|
246
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedActionCapId), // LeveragedActionCap
|
|
247
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedAfSuiPositionId), // LeveragedAfSuiPosition
|
|
248
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
249
|
-
tx.object(this.addresses.scallop.objects.version), // Version
|
|
250
|
-
utils_1.Helpers.addTxObject(tx, inputs.obligationId), // Obligation
|
|
251
|
-
tx.object(this.addresses.scallop.objects.afSuiMarket), // Market
|
|
252
|
-
tx.object(this.addresses.scallop.objects.coinDecimalsRegistry), // CoinDecimalsRegistry
|
|
253
|
-
tx.pure.u64(inputs.borrowAmount), // borrow_amount
|
|
254
|
-
tx.object(this.addresses.scallop.objects.xOracle), // XOracle
|
|
255
|
-
tx.object(sui_1.Sui.constants.addresses.suiClockId), // Clock
|
|
256
|
-
],
|
|
257
|
-
});
|
|
258
|
-
};
|
|
259
|
-
this.repaySuiTx = (inputs) => {
|
|
260
|
-
const { tx } = inputs;
|
|
261
|
-
return tx.moveCall({
|
|
262
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.leveragedStaking.packages.leveragedAfSui, LeveragedStakingApi.constants.moduleNames.interface, "repay_sui"),
|
|
263
|
-
typeArguments: [],
|
|
264
|
-
arguments: [
|
|
265
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedActionCapId), // LeveragedActionCap
|
|
266
|
-
utils_1.Helpers.addTxObject(tx, inputs.leveragedAfSuiPositionId), // LeveragedAfSuiPosition
|
|
267
|
-
tx.object(this.addresses.leveragedStaking.objects.leveragedAfSuiState), // LeveragedAfSuiState
|
|
268
|
-
tx.object(this.addresses.scallop.objects.version), // Version
|
|
269
|
-
utils_1.Helpers.addTxObject(tx, inputs.obligationId), // Obligation
|
|
270
|
-
tx.object(this.addresses.scallop.objects.afSuiMarket), // Market
|
|
271
|
-
utils_1.Helpers.addTxObject(tx, inputs.suiCoinId), // Coin
|
|
272
|
-
tx.object(sui_1.Sui.constants.addresses.suiClockId), // Clock
|
|
273
|
-
],
|
|
274
|
-
});
|
|
275
|
-
};
|
|
276
|
-
// =========================================================================
|
|
277
|
-
// Transaction Builders
|
|
278
|
-
// =========================================================================
|
|
279
|
-
// ERROR Notes:
|
|
280
|
-
// > [ScallopLeveragedAfSui] [interface] 0: EInvalidLeveragedAfSuiPosition
|
|
281
|
-
// > [ScallopLeveragedAfSui] [leveraged_afsui_state] 0: EInvalidProtocolVersion
|
|
282
|
-
// > [Scallop] 513 -> 0x201: version_mismatch_error
|
|
283
|
-
// > [Scallop] 1025 -> 0x401: oracle_stale_price_error
|
|
284
|
-
// > [Scallop] [borrow] 1281 -> 0x501: borrow_too_much_error
|
|
285
|
-
// > [Scallop] [reserve] 1283 -> 0x503: flash_loan_repay_not_enough_error
|
|
286
|
-
// > [Scallop] [deposit_collateral] 1793 -> 0x701: max_collateral_reached_error
|
|
287
|
-
// > [Scallop] [withdraw_collateral] 1795 -> 0x703: withdraw_collateral_too_much_error
|
|
288
|
-
// > [afSUI] [actions] 3: ELessThanMinimumStakingThreshold
|
|
289
|
-
// > [Pyth] [pyth_adaptor] 70146: assert_price_not_stale
|
|
290
|
-
// { address: 910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a}}
|
|
291
|
-
// > [SUI] [dynamic_field] 1: EFieldDoesNotExist (The object does not have a dynamic field with
|
|
292
|
-
// this name (with the value and type specified))
|
|
293
|
-
this.fetchBuildWithdrawAfSuiCollateralTx = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
294
|
-
const { scallopTx } = inputs;
|
|
295
|
-
// i. Update Scallop's price feeds for SUI and afSUI.
|
|
296
|
-
yield scallopTx.updateAssetPricesQuick(["sui", "afsui"]);
|
|
297
|
-
// ii. Withdraw `withdrawAmount` worth of afSUI collateral.
|
|
298
|
-
return this.withdrawAfSuiCollateralTx(Object.assign(Object.assign({}, inputs), {
|
|
299
|
-
// @ts-ignore
|
|
300
|
-
tx: scallopTx.txBlock, leveragedActionCapId: inputs.leveragedActionCapId, withdrawAmount: inputs.withdrawAmount }));
|
|
301
|
-
});
|
|
302
|
-
// TODO(kevin): Documentation
|
|
303
|
-
this.fetchBuildOpenLeveragedStakeTx = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
304
|
-
if (!this.ScallopProviders)
|
|
305
|
-
throw new Error("Scallop providers not set");
|
|
306
|
-
const scallopTx = this.ScallopProviders.Builder.createTxBlock();
|
|
307
|
-
const tx = scallopTx.txBlock;
|
|
308
|
-
tx.setSender(inputs.walletAddress);
|
|
309
|
-
// i. Create an `Obligation` on Scallop.
|
|
310
|
-
const [obligationId, obligationKeyId, obligationHotPotatoId] = scallopTx.openObligation();
|
|
311
|
-
// ii. Open a new `LeveragedAfSuiPosition` position.
|
|
312
|
-
const [leveragedAfSuiPositionId] = this.newLeveragedAfSuiPositionTx({
|
|
313
|
-
// @ts-ignore
|
|
314
|
-
tx,
|
|
315
|
-
obligationKeyId,
|
|
316
|
-
});
|
|
317
|
-
// iii. Leverage stake.
|
|
318
|
-
yield this.buildLeveragedStakeTx(Object.assign(Object.assign({}, inputs), { scallopTx,
|
|
319
|
-
leveragedAfSuiPositionId,
|
|
320
|
-
obligationId, baseAfSuiCollateral: BigInt(0), totalAfSuiCollateral: BigInt(0), totalSuiDebt: BigInt(0) }));
|
|
321
|
-
// iv. Return the `LeveragedAfSuiPosition` to the sender.
|
|
322
|
-
tx.transferObjects([leveragedAfSuiPositionId], inputs.walletAddress);
|
|
323
|
-
// v. Share the associated `Obligation` object.
|
|
324
|
-
scallopTx.returnObligation(obligationId, obligationHotPotatoId);
|
|
325
|
-
// @ts-ignore
|
|
326
|
-
return tx;
|
|
327
|
-
});
|
|
328
|
-
// TODO(kevin): Documentation
|
|
329
|
-
this.fetchBuildLeveragedStakeTx = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
330
|
-
if (!this.ScallopProviders)
|
|
331
|
-
throw new Error("Scallop providers not set");
|
|
332
|
-
const scallopTx = this.ScallopProviders.Builder.createTxBlock();
|
|
333
|
-
const tx = scallopTx.txBlock;
|
|
334
|
-
tx.setSender(inputs.walletAddress);
|
|
335
|
-
// i. Leverage stake.
|
|
336
|
-
yield this.buildLeveragedStakeTx(Object.assign(Object.assign({}, inputs), { scallopTx }));
|
|
337
|
-
// @ts-ignore
|
|
338
|
-
return tx;
|
|
339
|
-
});
|
|
340
|
-
// TODO(kevin): Documentation
|
|
341
|
-
this.buildLeveragedStakeTx = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
342
|
-
const { scallopTx, referrer, walletAddress, leveragedAfSuiPositionId, obligationId, stakeAmount, isSponsoredTx, } = inputs;
|
|
343
|
-
const tx = scallopTx.txBlock;
|
|
344
|
-
// TODO(Collin/Kevin): assert that `leverage` is less than or equal to `1 / (1 - collateralWeight)`.
|
|
345
|
-
if (referrer)
|
|
346
|
-
this.Provider.ReferralVault().updateReferrerTx({
|
|
347
|
-
// @ts-ignore
|
|
348
|
-
tx,
|
|
349
|
-
referrer,
|
|
350
|
-
});
|
|
351
|
-
let newBaseAfSuiCollateral;
|
|
352
|
-
let afSuiCoinId;
|
|
353
|
-
// i. Obtain the amount and ID of the afSUI collateral to be deposited. The user can choose to
|
|
354
|
-
// leverage stake starting in SUI in which case their SUI needs to be staked to afSUI.
|
|
355
|
-
if (inputs.stakeCoinType === "sui") {
|
|
356
|
-
// ia. If the input was denominated in SUI, stake to afSUI.
|
|
357
|
-
const suiCoin = yield this.Provider.Coin().fetchCoinWithAmountTx({
|
|
358
|
-
// @ts-ignore
|
|
359
|
-
tx,
|
|
360
|
-
walletAddress,
|
|
361
|
-
isSponsoredTx,
|
|
362
|
-
coinType: coin_1.Coin.constants.suiCoinType,
|
|
363
|
-
coinAmount: stakeAmount,
|
|
364
|
-
});
|
|
365
|
-
const swapOrStakeResult = yield this.swapOrStakeSuiToAfSui({
|
|
366
|
-
// @ts-ignore
|
|
367
|
-
tx,
|
|
368
|
-
suiAmount: stakeAmount,
|
|
369
|
-
suiCoinId: suiCoin,
|
|
370
|
-
});
|
|
371
|
-
newBaseAfSuiCollateral = swapOrStakeResult.minAmountOut;
|
|
372
|
-
afSuiCoinId = swapOrStakeResult.afSuiCoinId;
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
// ib. Obtain afSUI coin with `stakeAmount` value.
|
|
376
|
-
newBaseAfSuiCollateral = stakeAmount;
|
|
377
|
-
afSuiCoinId = yield this.Provider.Coin().fetchCoinWithAmountTx({
|
|
378
|
-
// @ts-ignore
|
|
379
|
-
tx,
|
|
380
|
-
walletAddress,
|
|
381
|
-
isSponsoredTx,
|
|
382
|
-
coinType: this.Provider.Staking().coinTypes.afSui,
|
|
383
|
-
coinAmount: stakeAmount,
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
// ii. Initiate Stake tx.
|
|
387
|
-
const leveragedActionCapId = this.initiateLeverageStakeTx({
|
|
388
|
-
// @ts-ignore
|
|
389
|
-
tx,
|
|
390
|
-
leveragedAfSuiPositionId,
|
|
391
|
-
afSuiCoinId,
|
|
392
|
-
});
|
|
393
|
-
// iii. Deposit afSUI as collateral on Scallop.
|
|
394
|
-
this.depositAfSuiCollateralTx(Object.assign(Object.assign({}, inputs), {
|
|
395
|
-
// @ts-ignore
|
|
396
|
-
tx,
|
|
397
|
-
leveragedActionCapId,
|
|
398
|
-
afSuiCoinId, obligationId: inputs.obligationId }));
|
|
399
|
-
if (inputs.leverage > 1) {
|
|
400
|
-
// iv. Increase the leverage to the desired leverage ratio.
|
|
401
|
-
yield this.fetchBuildIncreaseLeverageTx(Object.assign(Object.assign({}, inputs), { baseAfSuiCollateral: inputs.baseAfSuiCollateral + newBaseAfSuiCollateral, totalAfSuiCollateral: inputs.totalAfSuiCollateral + newBaseAfSuiCollateral, totalSuiDebt: inputs.totalSuiDebt, newLeverage: inputs.leverage, leveragedActionCapId }));
|
|
402
|
-
}
|
|
403
|
-
// v. Complete the Stake transaction and emit an event.
|
|
404
|
-
this.completeActionTx({
|
|
405
|
-
// @ts-ignore
|
|
406
|
-
tx,
|
|
407
|
-
leveragedActionCapId,
|
|
408
|
-
leveragedAfSuiPositionId,
|
|
409
|
-
obligationId,
|
|
410
|
-
});
|
|
411
|
-
});
|
|
412
|
-
// TODO(Kevin): Documentation.
|
|
413
|
-
this.fetchBuildLeveragedUnstakeTx = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
414
|
-
throw new Error("TODO");
|
|
415
|
-
// if (!this.ScallopProviders)
|
|
416
|
-
// throw new Error("Scallop providers not set");
|
|
417
|
-
// const {
|
|
418
|
-
// referrer,
|
|
419
|
-
// walletAddress,
|
|
420
|
-
// leveragedAfSuiPositionId,
|
|
421
|
-
// obligationId,
|
|
422
|
-
// unstakeAmount,
|
|
423
|
-
// desiredUnstakeCoinType,
|
|
424
|
-
// slippage,
|
|
425
|
-
// } = inputs;
|
|
426
|
-
// const scallopTx = this.ScallopProviders.Builder.createTxBlock();
|
|
427
|
-
// const tx = scallopTx.txBlock;
|
|
428
|
-
// tx.setSender(walletAddress);
|
|
429
|
-
// // i. Set the users referrer address.
|
|
430
|
-
// if (referrer)
|
|
431
|
-
// this.Provider.ReferralVault().updateReferrerTx({
|
|
432
|
-
// // @ts-ignore
|
|
433
|
-
// tx,
|
|
434
|
-
// referrer,
|
|
435
|
-
// });
|
|
436
|
-
// // ii. Obtain the user's `LeveragedAfSuiPosition`.
|
|
437
|
-
// const leveragedAfSuiPosition = await this.fetchLeveragedAfSuiPosition({
|
|
438
|
-
// leveragedAfSuiPositionId,
|
|
439
|
-
// obligationId,
|
|
440
|
-
// });
|
|
441
|
-
// // iii. Initiate Unstake tx.
|
|
442
|
-
// const leveragedActionCapId = this.initiateLeverageUnstakeTx({
|
|
443
|
-
// // @ts-ignore
|
|
444
|
-
// tx,
|
|
445
|
-
// leveragedAfSuiPositionId,
|
|
446
|
-
// unstakeAmount,
|
|
447
|
-
// });
|
|
448
|
-
// const afSuiToSuiExchangeRate =
|
|
449
|
-
// await this.Provider.Staking().fetchAfSuiToSuiExchangeRate();
|
|
450
|
-
// // iv. Calculate current leverage ratio.
|
|
451
|
-
// const currentLeverageRatio = LeveragedStaking.calcLeverage({
|
|
452
|
-
// totalSuiDebt: leveragedAfSuiPosition.suiDebt,
|
|
453
|
-
// totalAfSuiCollateral: leveragedAfSuiPosition.afSuiCollateral,
|
|
454
|
-
// afSuiToSuiExchangeRate,
|
|
455
|
-
// });
|
|
456
|
-
// let unstakedCoinId;
|
|
457
|
-
// let unstakedCoinType;
|
|
458
|
-
// // [Edge Case] Position has no debt.
|
|
459
|
-
// if (leveragedAfSuiPosition.suiDebt === BigInt(0)) {
|
|
460
|
-
// // va. Withdraw `unstakeAmount` worth of afSUI collateral.
|
|
461
|
-
// const [unstakedAfSuiCollateral] =
|
|
462
|
-
// await this.fetchBuildWithdrawAfSuiCollateralTx({
|
|
463
|
-
// ...inputs,
|
|
464
|
-
// scallopTx,
|
|
465
|
-
// leveragedActionCapId,
|
|
466
|
-
// withdrawAmount: unstakeAmount,
|
|
467
|
-
// });
|
|
468
|
-
// unstakedCoinId = unstakedAfSuiCollateral;
|
|
469
|
-
// unstakedCoinType = "afsui";
|
|
470
|
-
// } /* (leveragedAfSuiPosition.suiDebt > BigInt(0)) */ else {
|
|
471
|
-
// // vb. Decrease the leverage to the desired leverage ratio.
|
|
472
|
-
// const remainingSuiCoinId = await this.fetchBuildDecreaseLeverageTx({
|
|
473
|
-
// scallopTx,
|
|
474
|
-
// leveragedActionCapId,
|
|
475
|
-
// leveragedAfSuiPositionId,
|
|
476
|
-
// obligationId,
|
|
477
|
-
// totalSuiDebt: leveragedAfSuiPosition.suiDebt,
|
|
478
|
-
// totalAfSuiCollateral: leveragedAfSuiPosition.afSuiCollateral,
|
|
479
|
-
// // REVIEW(Kevin): should we be subtracting from here too?
|
|
480
|
-
// //
|
|
481
|
-
// // totalAfSuiCollateral:
|
|
482
|
-
// // inputs.totalAfSuiCollateral - unstakeAmount,
|
|
483
|
-
// newLeverage: currentLeverageRatio,
|
|
484
|
-
// baseAfSuiCollateral: inputs.baseAfSuiCollateral - unstakeAmount,
|
|
485
|
-
// slippage,
|
|
486
|
-
// });
|
|
487
|
-
// unstakedCoinId = remainingSuiCoinId;
|
|
488
|
-
// unstakedCoinType = "sui";
|
|
489
|
-
// }
|
|
490
|
-
// // vi. Return the unstaked coin to the user in their desired coin (SUI or afSUI).
|
|
491
|
-
// if (unstakedCoinType === inputs.desiredUnstakeCoinType) {
|
|
492
|
-
// // via. Unstaked coin already in desired coin type; no extra work needed.
|
|
493
|
-
// tx.transferObjects([unstakedCoinId], walletAddress);
|
|
494
|
-
// } else if (desiredUnstakeCoinType === "sui") {
|
|
495
|
-
// // vib. Swap withdrawn afSUI into SUI and return to the user.
|
|
496
|
-
// const poolObject = await this.Provider.Pools().fetchPool({
|
|
497
|
-
// objectId:
|
|
498
|
-
// this.addresses.leveragedStaking.objects.afSuiSuiPoolId,
|
|
499
|
-
// });
|
|
500
|
-
// const pool = new Pool(poolObject);
|
|
501
|
-
// const swappedSuiCoinId =
|
|
502
|
-
// await this.Provider.Pools().fetchAddTradeTx({
|
|
503
|
-
// // @ts-ignore
|
|
504
|
-
// tx,
|
|
505
|
-
// pool,
|
|
506
|
-
// coinInAmount: unstakeAmount,
|
|
507
|
-
// coinInId: unstakedCoinId,
|
|
508
|
-
// coinInType: this.Provider.Staking().coinTypes.afSui,
|
|
509
|
-
// coinOutType: Coin.constants.suiCoinType,
|
|
510
|
-
// slippage,
|
|
511
|
-
// });
|
|
512
|
-
// tx.transferObjects([swappedSuiCoinId], walletAddress);
|
|
513
|
-
// } /* if (desiredUnstakeCoinType === "afsui") */ else {
|
|
514
|
-
// // vic. Stake the withdrawn SUI for afSUI and return to the user.
|
|
515
|
-
// let [unstakedAfSuiCollateral] = this.Provider.Staking().stakeTx({
|
|
516
|
-
// // @ts-ignore
|
|
517
|
-
// tx,
|
|
518
|
-
// validatorAddress:
|
|
519
|
-
// this.addresses.staking.objects.aftermathValidator,
|
|
520
|
-
// suiCoin: unstakedCoinId,
|
|
521
|
-
// });
|
|
522
|
-
// tx.transferObjects([unstakedAfSuiCollateral], walletAddress);
|
|
523
|
-
// }
|
|
524
|
-
// // vii. Complete Unstake tx.
|
|
525
|
-
// this.completeActionTx({
|
|
526
|
-
// // @ts-ignore
|
|
527
|
-
// tx,
|
|
528
|
-
// leveragedActionCapId,
|
|
529
|
-
// leveragedAfSuiPositionId,
|
|
530
|
-
// obligationId,
|
|
531
|
-
// });
|
|
532
|
-
// // @ts-ignore
|
|
533
|
-
// return tx;
|
|
534
|
-
});
|
|
535
|
-
// TODO(Kevin): Documentation.
|
|
536
|
-
this.fetchBuildChangeLeverageTx = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
537
|
-
if (!this.ScallopProviders)
|
|
538
|
-
throw new Error("Scallop providers not set");
|
|
539
|
-
const { referrer, walletAddress, leveragedAfSuiPositionId, obligationId, } = inputs;
|
|
540
|
-
// TODO(Collin/Kevin): assert that `leverage` is less than or equal to `1 / (1 - collateralWeight)`.
|
|
541
|
-
// If leverage is greater than this then the user's collateral will not be enough to support the amount
|
|
542
|
-
// of SUI that must be borrowed to reach that leverage ratio.
|
|
543
|
-
const scallopTx = this.ScallopProviders.Builder.createTxBlock();
|
|
544
|
-
const tx = scallopTx.txBlock;
|
|
545
|
-
tx.setSender(walletAddress);
|
|
546
|
-
if (referrer)
|
|
547
|
-
this.Provider.ReferralVault().updateReferrerTx({
|
|
548
|
-
// @ts-ignore
|
|
549
|
-
tx,
|
|
550
|
-
referrer,
|
|
551
|
-
});
|
|
552
|
-
// i. Initiate Change Leverage tx.
|
|
553
|
-
const leveragedActionCapId = this.initiateChangeLeverageTx({
|
|
554
|
-
// @ts-ignore
|
|
555
|
-
tx,
|
|
556
|
-
leveragedAfSuiPositionId,
|
|
557
|
-
});
|
|
558
|
-
// ii. Update the leverage in the desired direction.
|
|
559
|
-
if (inputs.newLeverage < inputs.currentLeverage) {
|
|
560
|
-
// iia. Remove afSUI Collateral and repay debt to reach desired leverage.
|
|
561
|
-
const remainingSuiCoinId = yield this.fetchBuildDecreaseLeverageTx(Object.assign(Object.assign({}, inputs), { scallopTx,
|
|
562
|
-
leveragedActionCapId }));
|
|
563
|
-
// iib. Use remaining SUI to pay off SUI debt on Scallop.
|
|
564
|
-
this.repaySuiTx(Object.assign(Object.assign({}, inputs), {
|
|
565
|
-
// @ts-ignore
|
|
566
|
-
tx,
|
|
567
|
-
leveragedActionCapId, suiCoinId: remainingSuiCoinId }));
|
|
568
|
-
}
|
|
569
|
-
else {
|
|
570
|
-
// iic. Borrow SUI and deposit more afSUI Collateral to reach desired leverage.
|
|
571
|
-
yield this.fetchBuildIncreaseLeverageTx(Object.assign(Object.assign({}, inputs), { scallopTx,
|
|
572
|
-
leveragedActionCapId }));
|
|
573
|
-
}
|
|
574
|
-
// iii. Complete Change Leverage tx.
|
|
575
|
-
this.completeActionTx({
|
|
576
|
-
// @ts-ignore
|
|
577
|
-
tx,
|
|
578
|
-
leveragedActionCapId,
|
|
579
|
-
leveragedAfSuiPositionId,
|
|
580
|
-
obligationId,
|
|
581
|
-
});
|
|
582
|
-
return tx;
|
|
583
|
-
});
|
|
584
|
-
// TODO(Kevin): Documentation.
|
|
585
|
-
this.fetchBuildIncreaseLeverageTx = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
586
|
-
throw new Error("TODO");
|
|
587
|
-
// const { scallopTx } = inputs;
|
|
588
|
-
// const tx = scallopTx.txBlock;
|
|
589
|
-
// const afSuiToSuiExchangeRate =
|
|
590
|
-
// await this.Provider.Staking().fetchAfSuiToSuiExchangeRate();
|
|
591
|
-
// const newTotalAfSuiCollateral = BigInt(
|
|
592
|
-
// Math.floor(Number(inputs.baseAfSuiCollateral) * inputs.newLeverage)
|
|
593
|
-
// );
|
|
594
|
-
// // ia. Calculate the extra amount of afSUI collateral that must be deposited to reach the new
|
|
595
|
-
// // desired leverage.
|
|
596
|
-
// const increaseInTotalAfSuiCollateral =
|
|
597
|
-
// newTotalAfSuiCollateral - inputs.totalAfSuiCollateral;
|
|
598
|
-
// // ib. Calculate amount of SUI that must be flash loaned to account for
|
|
599
|
-
// // `increaseInAfSuiCollateral`.
|
|
600
|
-
// const flashLoanAmount: Balance = BigInt(
|
|
601
|
-
// Math.floor(
|
|
602
|
-
// Number(increaseInTotalAfSuiCollateral) * afSuiToSuiExchangeRate
|
|
603
|
-
// )
|
|
604
|
-
// );
|
|
605
|
-
// // ii. Flash loan the required amount of SUI from Scallop to increase the position by
|
|
606
|
-
// // `increaseInAfSuiCollateral` afSUI.
|
|
607
|
-
// const [flashLoanedSuiCoinId, loan] = scallopTx.borrowFlashLoan(
|
|
608
|
-
// flashLoanAmount,
|
|
609
|
-
// "sui"
|
|
610
|
-
// );
|
|
611
|
-
// const { afSuiCoinId } = await this.swapOrStakeSuiToAfSui({
|
|
612
|
-
// // @ts-ignore
|
|
613
|
-
// tx,
|
|
614
|
-
// suiAmount: flashLoanAmount,
|
|
615
|
-
// suiCoinId: flashLoanedSuiCoinId,
|
|
616
|
-
// });
|
|
617
|
-
// // iv. Deposit the staked afSUI as collateral on Scallop.
|
|
618
|
-
// this.depositAfSuiCollateralTx({
|
|
619
|
-
// ...inputs,
|
|
620
|
-
// // @ts-ignore
|
|
621
|
-
// tx,
|
|
622
|
-
// afSuiCoinId,
|
|
623
|
-
// obligationId: inputs.obligationId,
|
|
624
|
-
// });
|
|
625
|
-
// // REVIEW(Kevin): check if both assets need to be updated.
|
|
626
|
-
// //
|
|
627
|
-
// await scallopTx.updateAssetPricesQuick(["sui", "afsui"]);
|
|
628
|
-
// // v. Borrow amount of SUI required to pay off flash loan.
|
|
629
|
-
// const [borrowedSuiCoinId] = this.borrowSuiTx({
|
|
630
|
-
// ...inputs,
|
|
631
|
-
// // @ts-ignore
|
|
632
|
-
// tx,
|
|
633
|
-
// borrowAmount: flashLoanAmount + BigInt(/*0__0*/ 50_000_000),
|
|
634
|
-
// // borrowAmount: flashLoanAmount,
|
|
635
|
-
// });
|
|
636
|
-
// const repayLoanSuiCoinId = tx.splitCoins(borrowedSuiCoinId, [
|
|
637
|
-
// flashLoanAmount,
|
|
638
|
-
// ]);
|
|
639
|
-
// // vi. Repay flash loan on Scallop.
|
|
640
|
-
// scallopTx.repayFlashLoan(
|
|
641
|
-
// // flashLoanedSuiCoinId,
|
|
642
|
-
// repayLoanSuiCoinId,
|
|
643
|
-
// // borrowedSuiCoinId,
|
|
644
|
-
// loan,
|
|
645
|
-
// "sui"
|
|
646
|
-
// );
|
|
647
|
-
// // Leftover SUI is used to repay SUI debt.
|
|
648
|
-
// this.repaySuiTx({
|
|
649
|
-
// ...inputs,
|
|
650
|
-
// // @ts-ignore
|
|
651
|
-
// tx,
|
|
652
|
-
// suiCoinId: borrowedSuiCoinId,
|
|
653
|
-
// });
|
|
654
|
-
// // REVIEW(kevin): will there even be any leftover SUI to repay?
|
|
655
|
-
// //
|
|
656
|
-
// // // vii. [Potentially] Use remaining SUI to repay debt.
|
|
657
|
-
// // this.repaySuiTx({
|
|
658
|
-
// // tx,
|
|
659
|
-
// // leveragedActionCapId,
|
|
660
|
-
// // obligationId,
|
|
661
|
-
// // suiCoinId: borrowedSuiCoinId,
|
|
662
|
-
// // });
|
|
663
|
-
});
|
|
664
|
-
// TODO(Kevin): Documentation.
|
|
665
|
-
//
|
|
666
|
-
// To decrease leverage, a user needs to withdraw afSUI collateral. To withdraw collateral, a user must first
|
|
667
|
-
// repay some or all of their SUI debt. The decrease leverage flow is as follows:
|
|
668
|
-
// 1. Calculate how much SUI debt must be repayed to allow withdrawing desired afSUI collateral.
|
|
669
|
-
// 2. Flash loan SUI.
|
|
670
|
-
// 3. Use SUI to repay debt on Scallop.
|
|
671
|
-
// 4. Withdraw afSUI collateral on Scallop.
|
|
672
|
-
// 5. Convert afSUI to SUI.
|
|
673
|
-
// 6. Repay flash loan.
|
|
674
|
-
this.fetchBuildDecreaseLeverageTx = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
675
|
-
throw new Error("TODO");
|
|
676
|
-
// const { scallopTx, slippage } = inputs;
|
|
677
|
-
// const tx = scallopTx.txBlock;
|
|
678
|
-
// const afSuiToSuiExchangeRate =
|
|
679
|
-
// await this.Provider.Staking().fetchAfSuiToSuiExchangeRate();
|
|
680
|
-
// let decreaseInAfSuiCollateral;
|
|
681
|
-
// let decreaseInSuiDebt;
|
|
682
|
-
// // [Edge Case] User wants to unstake their entire position.
|
|
683
|
-
// if (inputs.baseAfSuiCollateral === BigInt(0)) {
|
|
684
|
-
// // TODO: [edge case] handle closing of position.
|
|
685
|
-
// //
|
|
686
|
-
// decreaseInAfSuiCollateral = BigInt(inputs.totalAfSuiCollateral);
|
|
687
|
-
// // decreaseInAfSuiCollateral = inputs.totalAfSuiCollateral;
|
|
688
|
-
// decreaseInSuiDebt = inputs.totalSuiDebt;
|
|
689
|
-
// } else {
|
|
690
|
-
// // ia. Calculate the amount of afSUI collateral that must be withdrawn to reach
|
|
691
|
-
// // a leverage ratio of `newLeverage`.
|
|
692
|
-
// const newTotalAfSuiCollateral = BigInt(
|
|
693
|
-
// Math.floor(
|
|
694
|
-
// Number(inputs.baseAfSuiCollateral) * inputs.newLeverage
|
|
695
|
-
// )
|
|
696
|
-
// );
|
|
697
|
-
// decreaseInAfSuiCollateral =
|
|
698
|
-
// inputs.totalAfSuiCollateral - newTotalAfSuiCollateral;
|
|
699
|
-
// // ib. Calculate the amount of SUI debt that must be repayed to allow withdrawing
|
|
700
|
-
// // `decreaseInAfSuiCollateral` worth of afSUI collateral.
|
|
701
|
-
// const newSuiDebt = BigInt(
|
|
702
|
-
// Math.floor(
|
|
703
|
-
// Number(
|
|
704
|
-
// newTotalAfSuiCollateral - inputs.baseAfSuiCollateral
|
|
705
|
-
// ) * afSuiToSuiExchangeRate
|
|
706
|
-
// )
|
|
707
|
-
// );
|
|
708
|
-
// decreaseInSuiDebt = inputs.totalSuiDebt - newSuiDebt;
|
|
709
|
-
// }
|
|
710
|
-
// // ii. Flash loan `decreaseInSuiDebt` worth of SUI from Scallop.
|
|
711
|
-
// const [flashLoanedSuiCoinId, loan] = scallopTx.borrowFlashLoan(
|
|
712
|
-
// decreaseInSuiDebt,
|
|
713
|
-
// "sui"
|
|
714
|
-
// );
|
|
715
|
-
// // iii. Repay `decreaseInSuiDebt` of SUI debt.
|
|
716
|
-
// this.repaySuiTx({
|
|
717
|
-
// ...inputs,
|
|
718
|
-
// // @ts-ignore
|
|
719
|
-
// tx,
|
|
720
|
-
// suiCoinId: flashLoanedSuiCoinId,
|
|
721
|
-
// });
|
|
722
|
-
// // iv. Withdraw `decreaseInCollateralAmount` worth of afSUI collateral.
|
|
723
|
-
// const [afSuiId] = await this.fetchBuildWithdrawAfSuiCollateralTx({
|
|
724
|
-
// ...inputs,
|
|
725
|
-
// withdrawAmount: decreaseInAfSuiCollateral,
|
|
726
|
-
// });
|
|
727
|
-
// // v. Convert `decreaseInCollateralAmount` of withdrawn collateral into SUI.
|
|
728
|
-
// const poolObject = await this.Provider.Pools().fetchPool({
|
|
729
|
-
// objectId: this.addresses.leveragedStaking.objects.afSuiSuiPoolId,
|
|
730
|
-
// });
|
|
731
|
-
// const pool = new Pool(poolObject);
|
|
732
|
-
// const swappedSuiCoinId = await this.Provider.Pools().fetchAddTradeTx({
|
|
733
|
-
// // @ts-ignore
|
|
734
|
-
// tx,
|
|
735
|
-
// pool,
|
|
736
|
-
// coinInAmount: BigInt(
|
|
737
|
-
// Math.floor(Number(decreaseInSuiDebt) * afSuiToSuiExchangeRate)
|
|
738
|
-
// ),
|
|
739
|
-
// coinInId: afSuiId,
|
|
740
|
-
// coinInType: this.Provider.Staking().coinTypes.afSui,
|
|
741
|
-
// coinOutType: Coin.constants.suiCoinType,
|
|
742
|
-
// slippage,
|
|
743
|
-
// });
|
|
744
|
-
// const repayLoanSuiCoinId = tx.splitCoins(swappedSuiCoinId, [
|
|
745
|
-
// decreaseInSuiDebt,
|
|
746
|
-
// ]);
|
|
747
|
-
// // vi. Repay flash loan with converted SUI.
|
|
748
|
-
// scallopTx.repayFlashLoan(repayLoanSuiCoinId, loan, "sui");
|
|
749
|
-
// return swappedSuiCoinId;
|
|
750
|
-
});
|
|
751
|
-
// =========================================================================
|
|
752
|
-
// Helpers
|
|
753
|
-
// =========================================================================
|
|
754
|
-
this.swapOrStakeSuiToAfSui = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
755
|
-
throw new Error("TODO");
|
|
756
|
-
// const { tx, suiAmount, suiCoinId } = inputs;
|
|
757
|
-
// const estimatedSlippageLowerBound = 0.0001; // 0.01%
|
|
758
|
-
// let afSuiCoinId: TransactionObjectArgument;
|
|
759
|
-
// let minAmountOut: Balance;
|
|
760
|
-
// if (suiAmount >= Staking.constants.bounds.minStake) {
|
|
761
|
-
// // Stake SUI into afSUI.
|
|
762
|
-
// afSuiCoinId = this.Provider.Staking().stakeTx({
|
|
763
|
-
// tx,
|
|
764
|
-
// validatorAddress:
|
|
765
|
-
// this.addresses.staking.objects.aftermathValidator,
|
|
766
|
-
// suiCoin: suiCoinId,
|
|
767
|
-
// });
|
|
768
|
-
// const afSuiToSuiExchangeRate =
|
|
769
|
-
// await this.Provider.Staking().fetchAfSuiToSuiExchangeRate();
|
|
770
|
-
// minAmountOut = BigInt(
|
|
771
|
-
// Math.floor(Number(suiAmount) * afSuiToSuiExchangeRate)
|
|
772
|
-
// );
|
|
773
|
-
// } else {
|
|
774
|
-
// const poolObject = await this.Provider.Pools().fetchPool({
|
|
775
|
-
// objectId:
|
|
776
|
-
// this.addresses.leveragedStaking.objects.afSuiSuiPoolId,
|
|
777
|
-
// });
|
|
778
|
-
// const pool = new Pool(poolObject);
|
|
779
|
-
// minAmountOut = BigInt(
|
|
780
|
-
// Math.floor(
|
|
781
|
-
// Number(
|
|
782
|
-
// pool.getTradeAmountOut({
|
|
783
|
-
// coinInAmount: suiAmount,
|
|
784
|
-
// coinInType: Coin.constants.suiCoinType,
|
|
785
|
-
// coinOutType:
|
|
786
|
-
// this.Provider.Staking().coinTypes.afSui,
|
|
787
|
-
// })
|
|
788
|
-
// ) *
|
|
789
|
-
// (1 - estimatedSlippageLowerBound)
|
|
790
|
-
// )
|
|
791
|
-
// );
|
|
792
|
-
// afSuiCoinId = await this.Provider.Pools().fetchAddTradeTx({
|
|
793
|
-
// tx,
|
|
794
|
-
// pool,
|
|
795
|
-
// slippage: 1, // 100%
|
|
796
|
-
// coinInAmount: suiAmount,
|
|
797
|
-
// coinInId: suiCoinId,
|
|
798
|
-
// coinInType: Coin.constants.suiCoinType,
|
|
799
|
-
// coinOutType: this.Provider.Staking().coinTypes.afSui,
|
|
800
|
-
// });
|
|
801
|
-
// }
|
|
802
|
-
// return { afSuiCoinId, minAmountOut };
|
|
803
|
-
});
|
|
804
|
-
// REVIEW: this is only needed if a user's Obligation can have its debt increased by another address.
|
|
805
|
-
// If that isn't possible, then obligation's debt amount + borrow index will always be accurate after
|
|
806
|
-
// a call to `completeActionTx`. -- needed because `liquidate` and `repay` don't require `ObligationKey`
|
|
807
|
-
// to be called.
|
|
808
|
-
//
|
|
809
|
-
this.updateTotalSuiDebt = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
810
|
-
if (!this.ScallopProviders)
|
|
811
|
-
throw new Error("Scallop providers not set");
|
|
812
|
-
const suiMarket = yield this.ScallopProviders.Query.getMarketPool("sui");
|
|
813
|
-
const newBorrowIndex = suiMarket.borrowIndex;
|
|
814
|
-
const obligationAccount = yield this.ScallopProviders.Query.queryObligation(inputs.obligationId.toString());
|
|
815
|
-
const [positionSuiDebt, positionBorrowIndex] = obligationAccount.debts
|
|
816
|
-
? [
|
|
817
|
-
BigInt(obligationAccount.debts[0].amount),
|
|
818
|
-
Number(obligationAccount.debts[0].borrowIndex),
|
|
819
|
-
]
|
|
820
|
-
: [BigInt(0), 0];
|
|
821
|
-
if (positionBorrowIndex === newBorrowIndex)
|
|
822
|
-
return { totalSuiDebt: positionSuiDebt };
|
|
823
|
-
return {
|
|
824
|
-
// REVIEW: calc. (seems to be undershooting/off by a little)
|
|
825
|
-
totalSuiDebt: BigInt(Math.floor((Number(positionSuiDebt) * newBorrowIndex) /
|
|
826
|
-
positionBorrowIndex)),
|
|
827
|
-
};
|
|
828
|
-
});
|
|
829
|
-
// =========================================================================
|
|
830
|
-
// Event Types
|
|
831
|
-
// =========================================================================
|
|
832
|
-
this.leveragedStakedEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.staking.packages.events, LeveragedStakingApi.constants.moduleNames.events, LeveragedStakingApi.constants.eventNames.leveragedStaked);
|
|
833
|
-
this.leveragedUnstakedEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.staking.packages.events, LeveragedStakingApi.constants.moduleNames.events, LeveragedStakingApi.constants.eventNames.leveragedUnstaked);
|
|
834
|
-
this.leverageChangedEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.staking.packages.events, LeveragedStakingApi.constants.moduleNames.events, LeveragedStakingApi.constants.eventNames.leverageChanged);
|
|
835
|
-
const leveragedStaking = this.Provider.addresses.leveragedStaking;
|
|
836
|
-
const staking = this.Provider.addresses.staking;
|
|
837
|
-
const pools = this.Provider.addresses.pools;
|
|
838
|
-
const scallop = this.Provider.addresses.scallop;
|
|
839
|
-
if (!leveragedStaking || !staking || !pools || !scallop)
|
|
840
|
-
throw new Error("not all required addresses have been set in provider");
|
|
841
|
-
this.addresses = {
|
|
842
|
-
leveragedStaking,
|
|
843
|
-
staking,
|
|
844
|
-
pools,
|
|
845
|
-
scallop,
|
|
846
|
-
};
|
|
847
|
-
this.eventTypes = {
|
|
848
|
-
leveragedStaked: this.leveragedStakedEventType(),
|
|
849
|
-
leveragedUnstaked: this.leveragedUnstakedEventType(),
|
|
850
|
-
leverageChanged: this.leverageChangedEventType(),
|
|
851
|
-
};
|
|
852
|
-
this.objectTypes = {
|
|
853
|
-
leveragedAfSuiPosition: `${leveragedStaking.packages.leveragedAfSuiInitial}::leveraged_afsui_position::LeveragedAfSuiPosition`,
|
|
854
|
-
};
|
|
855
|
-
}
|
|
856
|
-
// =========================================================================
|
|
857
|
-
// Events
|
|
858
|
-
// =========================================================================
|
|
859
|
-
/**
|
|
860
|
-
* Fetches events for a specific user.
|
|
861
|
-
* @param inputs - The input parameters for fetching events.
|
|
862
|
-
* @returns A promise that resolves to an object containing the fetched events and a cursor for pagination.
|
|
863
|
-
*/
|
|
864
|
-
fetchEventsForUser(inputs) {
|
|
865
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
866
|
-
throw new Error("TODO");
|
|
867
|
-
// const { walletAddress, cursor, limit } = inputs;
|
|
868
|
-
// return this.Provider.indexerCaller.fetchIndexerEvents(
|
|
869
|
-
// `leveraged-staking/${walletAddress}/events`,
|
|
870
|
-
// {
|
|
871
|
-
// cursor,
|
|
872
|
-
// limit,
|
|
873
|
-
// },
|
|
874
|
-
// (event) => {
|
|
875
|
-
// const eventType = (event as EventOnChain<any>).type;
|
|
876
|
-
// return eventType.includes(this.eventTypes.leveragedStaked)
|
|
877
|
-
// ? Casting.leveragedStaking.leveragedStakedEventFromOnChain(
|
|
878
|
-
// event as LeveragedStakedEventOnChain
|
|
879
|
-
// )
|
|
880
|
-
// : eventType.includes(this.eventTypes.leveragedUnstaked)
|
|
881
|
-
// ? Casting.leveragedStaking.leveragedUnstakedEventFromOnChain(
|
|
882
|
-
// event as LeveragedUnstakedEventOnChain
|
|
883
|
-
// )
|
|
884
|
-
// : Casting.leveragedStaking.leveragedStakeChangedEventFromOnChain(
|
|
885
|
-
// event as LeveragedStakeChangedLeverageEventOnChain
|
|
886
|
-
// );
|
|
887
|
-
// }
|
|
888
|
-
// );
|
|
889
|
-
});
|
|
890
|
-
}
|
|
891
|
-
// =========================================================================
|
|
892
|
-
// Graph Data
|
|
893
|
-
// =========================================================================
|
|
894
|
-
/**
|
|
895
|
-
* Fetches the performance data for leveraged staking.
|
|
896
|
-
* @param inputs - The inputs for fetching performance data.
|
|
897
|
-
* @returns A promise that resolves to an array of LeveragedStakingPerformanceDataPoint objects.
|
|
898
|
-
*/
|
|
899
|
-
fetchPerformanceData(inputs) {
|
|
900
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
901
|
-
// const { timeframe, borrowRate, maxLeverage } = inputs;
|
|
902
|
-
// dayjs.extend(duration);
|
|
903
|
-
// const limit = // days ~ epochs
|
|
904
|
-
// dayjs
|
|
905
|
-
// .duration(
|
|
906
|
-
// LeveragedStakingApi.dataTimeframesToDays[timeframe],
|
|
907
|
-
// "days"
|
|
908
|
-
// )
|
|
909
|
-
// // + 2 to account for apy being calculated from events delta
|
|
910
|
-
// // (and possible initial 0 afsui supply)
|
|
911
|
-
// .asDays() + 2;
|
|
912
|
-
// // TODO: fetch borrow rate historically once scallop implements
|
|
913
|
-
// const [recentEpochChanges] = await Promise.all([
|
|
914
|
-
// this.Provider.Staking().fetchEpochWasChangedEvents({
|
|
915
|
-
// limit,
|
|
916
|
-
// }),
|
|
917
|
-
// ]);
|
|
918
|
-
// if (recentEpochChanges.events.length <= 2) return [];
|
|
919
|
-
// const daysInYear = 365;
|
|
920
|
-
// const timeData = recentEpochChanges.events
|
|
921
|
-
// .slice(2)
|
|
922
|
-
// .map((event, index) => {
|
|
923
|
-
// const currentRate = Number(event.totalAfSuiSupply)
|
|
924
|
-
// ? Number(event.totalSuiAmount) /
|
|
925
|
-
// Number(event.totalAfSuiSupply)
|
|
926
|
-
// : 1;
|
|
927
|
-
// const pastEvent = recentEpochChanges.events[index + 1];
|
|
928
|
-
// const pastRate = Number(pastEvent.totalAfSuiSupply)
|
|
929
|
-
// ? Number(pastEvent.totalSuiAmount) /
|
|
930
|
-
// Number(pastEvent.totalAfSuiSupply)
|
|
931
|
-
// : 1;
|
|
932
|
-
// const afSuiApy =
|
|
933
|
-
// ((currentRate - pastRate) / pastRate) * daysInYear;
|
|
934
|
-
// return {
|
|
935
|
-
// time: event.timestamp ?? 0,
|
|
936
|
-
// sui: 0,
|
|
937
|
-
// afSui: afSuiApy,
|
|
938
|
-
// leveragedAfSui:
|
|
939
|
-
// maxLeverage *
|
|
940
|
-
// (afSuiApy - borrowRate * (1 - 1 / maxLeverage)),
|
|
941
|
-
// };
|
|
942
|
-
// });
|
|
943
|
-
// return timeData;
|
|
944
|
-
throw new Error("not implemented");
|
|
945
|
-
});
|
|
946
|
-
}
|
|
947
|
-
// NOTE: ported from Scallop's SDK.
|
|
948
|
-
//
|
|
949
|
-
getMarketData(inputs) {
|
|
950
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
951
|
-
if (!this.ScallopProviders)
|
|
952
|
-
throw new Error("Scallop providers not set");
|
|
953
|
-
let { poolCoinName } = inputs;
|
|
954
|
-
const marketId = this.ScallopProviders.Query.address.get("core.market");
|
|
955
|
-
const marketObject = (yield this.ScallopProviders.Query.suiKit.client().getObject({
|
|
956
|
-
id: marketId,
|
|
957
|
-
options: {
|
|
958
|
-
showContent: true,
|
|
959
|
-
},
|
|
960
|
-
})).data;
|
|
961
|
-
let balanceSheet; // BalanceSheet | undefined;
|
|
962
|
-
let borrowIndex; // BorrowIndex | undefined;
|
|
963
|
-
let interestModel; // InterestModel | undefined;
|
|
964
|
-
let borrowFeeRate;
|
|
965
|
-
if (marketObject) {
|
|
966
|
-
if (marketObject.content && "fields" in marketObject.content) {
|
|
967
|
-
const fields = marketObject.content.fields;
|
|
968
|
-
const coinType = this.ScallopProviders.Query.utils.parseCoinType(poolCoinName);
|
|
969
|
-
// Get balance sheet.
|
|
970
|
-
const balanceSheetParentId = fields.vault.fields.balance_sheets.fields.table.fields.id
|
|
971
|
-
.id;
|
|
972
|
-
const balanceSheetDdynamicFieldObjectResponse = yield this.ScallopProviders.Query.suiKit
|
|
973
|
-
.client()
|
|
974
|
-
.getDynamicFieldObject({
|
|
975
|
-
parentId: balanceSheetParentId,
|
|
976
|
-
name: {
|
|
977
|
-
type: "0x1::type_name::TypeName",
|
|
978
|
-
value: {
|
|
979
|
-
name: coinType.substring(2),
|
|
980
|
-
},
|
|
981
|
-
},
|
|
982
|
-
});
|
|
983
|
-
const balanceSheetDdynamicFieldObject = balanceSheetDdynamicFieldObjectResponse.data;
|
|
984
|
-
if (balanceSheetDdynamicFieldObject &&
|
|
985
|
-
balanceSheetDdynamicFieldObject.content &&
|
|
986
|
-
"fields" in balanceSheetDdynamicFieldObject.content) {
|
|
987
|
-
const dynamicFields = balanceSheetDdynamicFieldObject
|
|
988
|
-
.content.fields;
|
|
989
|
-
balanceSheet = dynamicFields.value.fields;
|
|
990
|
-
}
|
|
991
|
-
// Get borrow index.
|
|
992
|
-
const borrowIndexParentId = fields.borrow_dynamics.fields.table.fields.id.id;
|
|
993
|
-
const borrowIndexDynamicFieldObjectResponse = yield this.ScallopProviders.Query.suiKit
|
|
994
|
-
.client()
|
|
995
|
-
.getDynamicFieldObject({
|
|
996
|
-
parentId: borrowIndexParentId,
|
|
997
|
-
name: {
|
|
998
|
-
type: "0x1::type_name::TypeName",
|
|
999
|
-
value: {
|
|
1000
|
-
name: coinType.substring(2),
|
|
1001
|
-
},
|
|
1002
|
-
},
|
|
1003
|
-
});
|
|
1004
|
-
const borrowIndexDynamicFieldObject = borrowIndexDynamicFieldObjectResponse.data;
|
|
1005
|
-
if (borrowIndexDynamicFieldObject &&
|
|
1006
|
-
borrowIndexDynamicFieldObject.content &&
|
|
1007
|
-
"fields" in borrowIndexDynamicFieldObject.content) {
|
|
1008
|
-
const dynamicFields = borrowIndexDynamicFieldObject.content
|
|
1009
|
-
.fields;
|
|
1010
|
-
borrowIndex = dynamicFields.value.fields;
|
|
1011
|
-
}
|
|
1012
|
-
// Get interest models.
|
|
1013
|
-
const interestModelParentId = fields.interest_models.fields.table.fields.id.id;
|
|
1014
|
-
const interestModelDynamicFieldObjectResponse = yield this.ScallopProviders.Query.suiKit
|
|
1015
|
-
.client()
|
|
1016
|
-
.getDynamicFieldObject({
|
|
1017
|
-
parentId: interestModelParentId,
|
|
1018
|
-
name: {
|
|
1019
|
-
type: "0x1::type_name::TypeName",
|
|
1020
|
-
value: {
|
|
1021
|
-
name: coinType.substring(2),
|
|
1022
|
-
},
|
|
1023
|
-
},
|
|
1024
|
-
});
|
|
1025
|
-
const interestModelDynamicFieldObject = interestModelDynamicFieldObjectResponse.data;
|
|
1026
|
-
if (interestModelDynamicFieldObject &&
|
|
1027
|
-
interestModelDynamicFieldObject.content &&
|
|
1028
|
-
"fields" in interestModelDynamicFieldObject.content) {
|
|
1029
|
-
const dynamicFields = interestModelDynamicFieldObject
|
|
1030
|
-
.content.fields;
|
|
1031
|
-
interestModel = dynamicFields.value.fields;
|
|
1032
|
-
}
|
|
1033
|
-
// Get borrow fee.
|
|
1034
|
-
const borrowFeeDynamicFieldObjectResponse = yield this.ScallopProviders.Query.suiKit
|
|
1035
|
-
.client()
|
|
1036
|
-
.getDynamicFieldObject({
|
|
1037
|
-
parentId: marketId,
|
|
1038
|
-
name: {
|
|
1039
|
-
// TODO: obtain through ScallopSDK
|
|
1040
|
-
//
|
|
1041
|
-
type: `0xc38f849e81cfe46d4e4320f508ea7dda42934a329d5a6571bb4c3cb6ea63f5da::market_dynamic_keys::BorrowFeeKey`,
|
|
1042
|
-
value: {
|
|
1043
|
-
type: {
|
|
1044
|
-
name: coinType.substring(2),
|
|
1045
|
-
},
|
|
1046
|
-
},
|
|
1047
|
-
},
|
|
1048
|
-
});
|
|
1049
|
-
const borrowFeeDynamicFieldObject = borrowFeeDynamicFieldObjectResponse.data;
|
|
1050
|
-
if (borrowFeeDynamicFieldObject &&
|
|
1051
|
-
borrowFeeDynamicFieldObject.content &&
|
|
1052
|
-
"fields" in borrowFeeDynamicFieldObject.content) {
|
|
1053
|
-
const dynamicFields = borrowFeeDynamicFieldObject.content
|
|
1054
|
-
.fields;
|
|
1055
|
-
borrowFeeRate = dynamicFields.value.fields;
|
|
1056
|
-
}
|
|
1057
|
-
}
|
|
1058
|
-
}
|
|
1059
|
-
if (!balanceSheet || !borrowIndex || !interestModel || !borrowFeeRate)
|
|
1060
|
-
throw Error("Could not load MarketData");
|
|
1061
|
-
return {
|
|
1062
|
-
type: interestModel.type.fields,
|
|
1063
|
-
maxBorrowRate: interestModel.max_borrow_rate.fields,
|
|
1064
|
-
interestRate: borrowIndex.interest_rate.fields,
|
|
1065
|
-
interestRateScale: borrowIndex.interest_rate_scale,
|
|
1066
|
-
borrowIndex: borrowIndex.borrow_index,
|
|
1067
|
-
lastUpdated: borrowIndex.last_updated,
|
|
1068
|
-
cash: balanceSheet.cash,
|
|
1069
|
-
debt: balanceSheet.debt,
|
|
1070
|
-
marketCoinSupply: balanceSheet.market_coin_supply,
|
|
1071
|
-
reserve: balanceSheet.revenue,
|
|
1072
|
-
reserveFactor: interestModel.revenue_factor.fields,
|
|
1073
|
-
borrowWeight: interestModel.borrow_weight.fields,
|
|
1074
|
-
borrowFeeRate: borrowFeeRate,
|
|
1075
|
-
baseBorrowRatePerSec: interestModel.base_borrow_rate_per_sec.fields,
|
|
1076
|
-
borrowRateOnHighKink: interestModel.borrow_rate_on_high_kink.fields,
|
|
1077
|
-
borrowRateOnMidKink: interestModel.borrow_rate_on_mid_kink.fields,
|
|
1078
|
-
highKink: interestModel.high_kink.fields,
|
|
1079
|
-
midKink: interestModel.mid_kink.fields,
|
|
1080
|
-
minBorrowAmount: interestModel.min_borrow_amount,
|
|
1081
|
-
};
|
|
1082
|
-
});
|
|
1083
|
-
}
|
|
1084
|
-
}
|
|
1085
|
-
exports.LeveragedStakingApi = LeveragedStakingApi;
|
|
1086
|
-
// =========================================================================
|
|
1087
|
-
// Constants
|
|
1088
|
-
// =========================================================================
|
|
1089
|
-
LeveragedStakingApi.constants = {
|
|
1090
|
-
moduleNames: {
|
|
1091
|
-
leveragedAfSuiPosition: "leveraged_afsui_position",
|
|
1092
|
-
leveragedAfSuiState: "leveraged_afsui_state",
|
|
1093
|
-
interface: "interface",
|
|
1094
|
-
events: "events",
|
|
1095
|
-
},
|
|
1096
|
-
eventNames: {
|
|
1097
|
-
leveragedStaked: "StakedEvent",
|
|
1098
|
-
leveragedUnstaked: "UnstakedEvent",
|
|
1099
|
-
leverageChanged: "ChangedLeverageEvent",
|
|
1100
|
-
},
|
|
1101
|
-
};
|
|
1102
|
-
LeveragedStakingApi.dataTimeframesToDays = {
|
|
1103
|
-
"1M": 30,
|
|
1104
|
-
};
|