@pendle/core-v2 5.3.0 → 5.4.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/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.json +0 -37
- package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.json +0 -115
- package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.json +0 -37
- package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.json +0 -37
- package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.json +0 -37
- package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.json +0 -37
- package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.json +0 -179
- package/build/artifacts/contracts/interfaces/IPActionVePendleStatic.sol/IPActionVePendleStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.json +0 -257
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionAddRemoveLiqV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionMiscV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionStorageEvents.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapPTV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.json +0 -37
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.json +0 -37
- package/build/artifacts/contracts/interfaces/IPPausingInterface.sol/IPPausingInterface.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPausingInterface.sol/IPPausingInterface.json +13 -0
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +0 -37
- package/build/artifacts/contracts/offchain-helpers/PendleGovernanceProxy.sol/PendleGovernanceProxy.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/PendleGovernanceProxy.sol/PendleGovernanceProxy.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -39
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.dbg.json +4 -0
- package/build/artifacts/contracts/{router/swap-aggregator/kyberswap/l1-contracts/ScalingDataLib.sol/ScalingDataLib.json → offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.json} +4 -4
- package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.dbg.json +4 -0
- package/build/artifacts/contracts/{router/swap-aggregator/kyberswap/l2-contracts/BytesHelper.sol/BytesHelper.json → offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.json} +4 -4
- package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.json +2 -39
- package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +2 -117
- package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.json +2 -39
- package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.json +2 -39
- package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.json +2 -39
- package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.json +2 -181
- package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.json +2 -2
- package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
- package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +2 -2
- package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.json +2 -2
- package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.dbg.json +4 -0
- package/build/artifacts/contracts/router/math/{MarketApproxLib.sol/MarketApproxPtInLib.json → MarketApproxLibV2.sol/MarketApproxPtInLibV2.json} +4 -4
- package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.dbg.json +4 -0
- package/build/artifacts/contracts/router/math/{MarketApproxLib.sol/MarketApproxPtOutLib.json → MarketApproxLibV2.sol/MarketApproxPtOutLibV2.json} +4 -4
- package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IKyberScalingHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +2 -2
- package/contracts/interfaces/IPActionAddRemoveLiqV3.sol +1 -1
- package/contracts/interfaces/IPActionMarketAuxStatic.sol +2 -1
- package/contracts/interfaces/IPActionMiscV3.sol +1 -7
- package/contracts/interfaces/IPActionStorageStatic.sol +1 -1
- package/contracts/interfaces/IPActionSwapPTV3.sol +1 -1
- package/contracts/interfaces/IPActionSwapYTV3.sol +1 -17
- package/contracts/interfaces/IPActionVePendleStatic.sol +1 -0
- package/contracts/interfaces/IPAllEventsV3.sol +0 -8
- package/contracts/interfaces/IPPausingInterface.sol +2 -0
- package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +2 -2
- package/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol +8 -7
- package/contracts/{router/math/MarketApproxLib.sol → offchain-helpers/router-static/base/MarketApproxLibV1.sol} +13 -13
- package/contracts/offchain-helpers/router-static/base/StorageLayout.sol +1 -1
- package/contracts/router/ActionAddRemoveLiqV3.sol +4 -4
- package/contracts/router/ActionMiscV3.sol +0 -14
- package/contracts/router/ActionSwapYTV3.sol +2 -65
- package/contracts/router/base/ActionBase.sol +5 -6
- package/contracts/router/math/MarketApproxLibV2.sol +479 -0
- package/contracts/router/swap-aggregator/IPSwapAggregator.sol +8 -1
- package/contracts/router/swap-aggregator/PendleSwap.sol +0 -2
- package/deployments/1-core.json +5 -5
- package/deployments/merkle-distribution/2024-10-31.json +23370 -0
- package/deployments/merkle-distribution/2024-11-28.json +24040 -0
- package/package.json +1 -1
- package/typechain-types/ActionAddRemoveLiqV3.ts +2000 -0
- package/typechain-types/ActionInfoStatic.ts +310 -0
- package/typechain-types/ActionMarketAuxStatic.ts +903 -0
- package/typechain-types/ActionMarketCoreStatic.ts +1974 -0
- package/typechain-types/ActionMintRedeemStatic.ts +435 -0
- package/typechain-types/ActionMiscV3.ts +2213 -0
- package/typechain-types/ActionSimple.ts +1544 -0
- package/typechain-types/ActionStorageStatic.ts +1345 -0
- package/typechain-types/ActionStorageV4.ts +1270 -0
- package/typechain-types/ActionSwapPTV3.ts +1507 -0
- package/typechain-types/ActionSwapYTV3.ts +1507 -0
- package/typechain-types/ActionVePendleStatic.ts +113 -0
- package/typechain-types/IKyberScalingHelper.ts +108 -0
- package/typechain-types/IOdosRouterV2.ts +147 -0
- package/typechain-types/IPActionAddRemoveLiqV3.ts +2000 -0
- package/typechain-types/IPActionAddRemoveLiqV3Events.ts +499 -0
- package/typechain-types/IPActionMarketAuxStatic.ts +859 -0
- package/typechain-types/IPActionMiscV3.ts +2213 -0
- package/typechain-types/IPActionMiscV3Events.ts +463 -0
- package/typechain-types/IPActionSimple.ts +1544 -0
- package/typechain-types/IPActionStorageEvents.ts +97 -0
- package/typechain-types/IPActionStorageStatic.ts +1268 -0
- package/typechain-types/IPActionStorageV4.ts +1270 -0
- package/typechain-types/IPActionSwapPTV3.ts +1507 -0
- package/typechain-types/IPActionSwapPTV3Events.ts +125 -0
- package/typechain-types/IPActionSwapYTV3.ts +1507 -0
- package/typechain-types/IPActionSwapYTV3Events.ts +125 -0
- package/typechain-types/IPActionVePendleStatic.ts +113 -0
- package/typechain-types/IPAllActionV3.ts +4210 -0
- package/typechain-types/IPAllEventsV3.ts +1080 -0
- package/typechain-types/IPPausingInterface.ts +125 -0
- package/typechain-types/IPRouterStatic.ts +4633 -0
- package/typechain-types/IPSwapAggregator.ts +187 -0
- package/typechain-types/PendleGovernanceProxy.ts +603 -0
- package/typechain-types/PendlePoolDeployHelper.ts +342 -0
- package/typechain-types/PendleRouterStatic.ts +57 -0
- package/typechain-types/PendleRouterV4.ts +57 -0
- package/typechain-types/PendleSwap.ts +208 -0
- package/typechain-types/Reflector.ts +95 -0
- package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +3533 -0
- package/typechain-types/factories/ActionInfoStatic__factory.ts +360 -0
- package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +780 -0
- package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1449 -0
- package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +304 -0
- package/typechain-types/factories/ActionMiscV3__factory.ts +3056 -0
- package/typechain-types/factories/ActionSimple__factory.ts +1939 -0
- package/typechain-types/factories/ActionStorageStatic__factory.ts +1576 -0
- package/typechain-types/factories/ActionStorageV4__factory.ts +1504 -0
- package/typechain-types/factories/ActionSwapPTV3__factory.ts +2556 -0
- package/typechain-types/factories/ActionSwapYTV3__factory.ts +2556 -0
- package/typechain-types/factories/ActionVePendleStatic__factory.ts +155 -0
- package/typechain-types/factories/IKyberScalingHelper__factory.ts +55 -0
- package/typechain-types/factories/IOdosRouterV2__factory.ts +94 -0
- package/typechain-types/factories/IPActionAddRemoveLiqV3Events__factory.ts +582 -0
- package/typechain-types/factories/IPActionAddRemoveLiqV3__factory.ts +3421 -0
- package/typechain-types/factories/IPActionMarketAuxStatic__factory.ts +622 -0
- package/typechain-types/factories/IPActionMiscV3Events__factory.ts +608 -0
- package/typechain-types/factories/IPActionMiscV3__factory.ts +3005 -0
- package/typechain-types/factories/IPActionSimple__factory.ts +1840 -0
- package/typechain-types/factories/IPActionStorageEvents__factory.ts +68 -0
- package/typechain-types/factories/IPActionStorageStatic__factory.ts +1498 -0
- package/typechain-types/factories/IPActionStorageV4__factory.ts +1466 -0
- package/typechain-types/factories/IPActionSwapPTV3Events__factory.ts +116 -0
- package/typechain-types/factories/IPActionSwapPTV3__factory.ts +2454 -0
- package/typechain-types/factories/IPActionSwapYTV3Events__factory.ts +116 -0
- package/typechain-types/factories/IPActionSwapYTV3__factory.ts +2454 -0
- package/typechain-types/factories/IPActionVePendleStatic__factory.ts +59 -0
- package/typechain-types/factories/IPAllActionV3__factory.ts +7860 -0
- package/typechain-types/factories/IPAllEventsV3__factory.ts +1363 -0
- package/typechain-types/factories/IPPausingInterface__factory.ts +53 -0
- package/typechain-types/factories/IPRouterStatic__factory.ts +3956 -0
- package/typechain-types/factories/IPSwapAggregator__factory.ts +136 -0
- package/typechain-types/factories/PendleGovernanceProxy__factory.ts +458 -0
- package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +345 -0
- package/typechain-types/factories/PendleRouterStatic__factory.ts +88 -0
- package/typechain-types/factories/PendleRouterV4__factory.ts +96 -0
- package/typechain-types/factories/PendleSwap__factory.ts +188 -0
- package/typechain-types/factories/Reflector__factory.ts +84 -0
- package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +0 -4
- package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +0 -65
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutorOptimistic.sol/IAggregationExecutorOptimistic.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutorOptimistic.sol/IAggregationExecutorOptimistic.json +0 -194
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelper.sol/IExecutorHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelper.sol/IExecutorHelper.json +0 -1787
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2.sol/IExecutorHelperL2.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2.sol/IExecutorHelperL2.json +0 -2873
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2Struct.sol/IExecutorHelperL2Struct.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2Struct.sol/IExecutorHelperL2Struct.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperStruct.sol/IExecutorHelperStruct.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperStruct.sol/IExecutorHelperStruct.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +0 -215
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IBebopV3.sol/IBebopV3.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IBebopV3.sol/IBebopV3.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IKyberDSLO.sol/IKyberDSLO.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IKyberDSLO.sol/IKyberDSLO.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IKyberLO.sol/IKyberLO.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IKyberLO.sol/IKyberLO.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l1-contracts/InputScalingHelper.sol/InputScalingHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l1-contracts/InputScalingHelper.sol/InputScalingHelper.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l1-contracts/ScalingDataLib.sol/ScalingDataLib.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/BytesHelper.sol/BytesHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataReader.sol/CalldataReader.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataReader.sol/CalldataReader.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataWriter.sol/CalldataWriter.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataWriter.sol/CalldataWriter.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/Common.sol/Common.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/Common.sol/Common.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/DexScaler.sol/DexScaler.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/DexScaler.sol/DexScaler.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/ExecutorReader.sol/ExecutorReader.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/ExecutorReader.sol/ExecutorReader.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/InputScalingHelperL2.sol/InputScalingHelperL2.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/InputScalingHelperL2.sol/InputScalingHelperL2.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/ScalingDataL2Lib.sol/ScalingDataL2Lib.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/l2-contracts/ScalingDataL2Lib.sol/ScalingDataL2Lib.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/libraries/BytesHelper.sol/BytesHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/libraries/BytesHelper.sol/BytesHelper.json +0 -10
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/libraries/RevertReasonParser.sol/RevertReasonParser.dbg.json +0 -4
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/libraries/RevertReasonParser.sol/RevertReasonParser.json +0 -10
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol +0 -31
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutorOptimistic.sol +0 -63
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelper.sol +0 -164
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2.sol +0 -483
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2Struct.sol +0 -412
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperStruct.sol +0 -459
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol +0 -47
- package/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IBebopV3.sol +0 -23
- package/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IKyberDSLO.sol +0 -36
- package/contracts/router/swap-aggregator/kyberswap/interfaces/pools/IKyberLO.sol +0 -32
- package/contracts/router/swap-aggregator/kyberswap/l1-contracts/InputScalingHelper.sol +0 -354
- package/contracts/router/swap-aggregator/kyberswap/l1-contracts/ScalingDataLib.sol +0 -521
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/BytesHelper.sol +0 -93
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataReader.sol +0 -404
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataWriter.sol +0 -118
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/Common.sol +0 -41
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/DexScaler.sol +0 -684
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/ExecutorReader.sol +0 -61
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/InputScalingHelperL2.sol +0 -373
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/ScalingDataL2Lib.sol +0 -273
- package/contracts/router/swap-aggregator/kyberswap/libraries/BytesHelper.sol +0 -32
- package/contracts/router/swap-aggregator/kyberswap/libraries/RevertReasonParser.sol +0 -75
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "../../core/libraries/math/PMath.sol";
|
|
5
|
+
import "../../core/Market/MarketMathCore.sol";
|
|
6
|
+
import {ApproxParams} from "../../interfaces/IPAllActionTypeV3.sol";
|
|
7
|
+
|
|
8
|
+
uint256 constant QUICK_CALC_MAX_ITER = 50;
|
|
9
|
+
uint256 constant CUT_OFF_SCALE_CLAMP = 2;
|
|
10
|
+
uint256 constant QUICK_CALC_TRIGGER_EPS = 1e17;
|
|
11
|
+
|
|
12
|
+
library MarketApproxPtInLibV2 {
|
|
13
|
+
using MarketMathCore for MarketState;
|
|
14
|
+
using PYIndexLib for PYIndex;
|
|
15
|
+
using PMath for uint256;
|
|
16
|
+
using PMath for int256;
|
|
17
|
+
using LogExpMath for int256;
|
|
18
|
+
|
|
19
|
+
function approxSwapExactSyForYtV2(
|
|
20
|
+
MarketState memory market,
|
|
21
|
+
PYIndex index,
|
|
22
|
+
uint256 exactSyIn,
|
|
23
|
+
uint256 blockTime,
|
|
24
|
+
ApproxParams memory approx
|
|
25
|
+
) internal pure returns (uint256, /*netYtOut*/ uint256 /*netSyFee*/) {
|
|
26
|
+
MarketPreCompute memory comp = market.getMarketPreCompute(index, blockTime);
|
|
27
|
+
if (approx.guessOffchain == 0) {
|
|
28
|
+
approx.guessMin = PMath.max(approx.guessMin, index.syToAsset(exactSyIn));
|
|
29
|
+
approx.guessMax = PMath.min(approx.guessMax, calcMaxPtIn(market, comp));
|
|
30
|
+
validateApprox(approx);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// at minimum we will flashswap exactSyIn since we have enough SY to payback the PT loan
|
|
34
|
+
|
|
35
|
+
uint256 guess = getFirstGuess(approx);
|
|
36
|
+
|
|
37
|
+
for (uint256 iter = 0; iter < approx.maxIteration; ++iter) {
|
|
38
|
+
(uint256 netSyOut, uint256 netSyFee, ) = calcSyOut(market, comp, index, guess);
|
|
39
|
+
|
|
40
|
+
uint256 netSyToTokenizePt = index.assetToSyUp(guess);
|
|
41
|
+
|
|
42
|
+
// for sure netSyToTokenizePt >= netSyOut since we are swapping PT to SY
|
|
43
|
+
uint256 netSyToPull = netSyToTokenizePt - netSyOut;
|
|
44
|
+
|
|
45
|
+
if (netSyToPull <= exactSyIn) {
|
|
46
|
+
if (PMath.isASmallerApproxB(netSyToPull, exactSyIn, approx.eps)) {
|
|
47
|
+
return (guess, netSyFee);
|
|
48
|
+
}
|
|
49
|
+
if (approx.guessMin == guess) {
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
approx.guessMin = guess;
|
|
53
|
+
} else {
|
|
54
|
+
approx.guessMax = guess - 1;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (iter <= CUT_OFF_SCALE_CLAMP) {
|
|
58
|
+
guess = scaleClamp(guess, exactSyIn, netSyToPull, approx);
|
|
59
|
+
} else {
|
|
60
|
+
guess = calcMidpoint(approx);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
revert("Slippage: APPROX_EXHAUSTED");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
struct Args5 {
|
|
68
|
+
MarketState market;
|
|
69
|
+
PYIndex index;
|
|
70
|
+
uint256 totalPtIn;
|
|
71
|
+
uint256 netSyHolding;
|
|
72
|
+
uint256 blockTime;
|
|
73
|
+
ApproxParams approx;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function approxSwapPtToAddLiquidityV2(
|
|
77
|
+
MarketState memory _market,
|
|
78
|
+
PYIndex _index,
|
|
79
|
+
uint256 _totalPtIn,
|
|
80
|
+
uint256 _netSyHolding,
|
|
81
|
+
uint256 _blockTime,
|
|
82
|
+
ApproxParams memory approx
|
|
83
|
+
) internal pure returns (uint256, /*netPtSwap*/ uint256, /*netSyFromSwap*/ uint256 /*netSyFee*/) {
|
|
84
|
+
Args5 memory a = Args5(_market, _index, _totalPtIn, _netSyHolding, _blockTime, approx);
|
|
85
|
+
MarketPreCompute memory comp = a.market.getMarketPreCompute(a.index, a.blockTime);
|
|
86
|
+
if (approx.guessOffchain == 0) {
|
|
87
|
+
// no limit on min
|
|
88
|
+
approx.guessMax = PMath.min(approx.guessMax, calcMaxPtIn(a.market, comp));
|
|
89
|
+
approx.guessMax = PMath.min(approx.guessMax, a.totalPtIn);
|
|
90
|
+
validateApprox(approx);
|
|
91
|
+
require(a.market.totalLp != 0, "no existing lp");
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
uint256 guess = getFirstGuess(approx);
|
|
95
|
+
|
|
96
|
+
bool quickCalcRan = false;
|
|
97
|
+
for (uint256 iter = 0; iter < approx.maxIteration; ++iter) {
|
|
98
|
+
(
|
|
99
|
+
uint256 syNumerator,
|
|
100
|
+
uint256 ptNumerator,
|
|
101
|
+
uint256 netSyOut,
|
|
102
|
+
uint256 netSyFee,
|
|
103
|
+
uint256 netSyToReserve
|
|
104
|
+
) = calcNumerators(a.market, a.index, a.totalPtIn, a.netSyHolding, comp, guess);
|
|
105
|
+
|
|
106
|
+
if (PMath.isAApproxB(syNumerator, ptNumerator, approx.eps)) {
|
|
107
|
+
return (guess, netSyOut, netSyFee);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (syNumerator <= ptNumerator) {
|
|
111
|
+
// needs more SY --> swap more PT
|
|
112
|
+
if (approx.guessMin == guess) {
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
approx.guessMin = guess;
|
|
116
|
+
} else {
|
|
117
|
+
// needs less SY --> swap less PT
|
|
118
|
+
approx.guessMax = guess - 1;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (!quickCalcRan && PMath.isAApproxB(syNumerator, ptNumerator, QUICK_CALC_TRIGGER_EPS)) {
|
|
122
|
+
quickCalcRan = true;
|
|
123
|
+
guess = quickCalc(a, guess, netSyOut, netSyToReserve);
|
|
124
|
+
if (guess <= a.approx.guessMin || guess >= a.approx.guessMax) guess = calcMidpoint(a.approx);
|
|
125
|
+
} else {
|
|
126
|
+
guess = calcMidpoint(a.approx);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
revert("Slippage: APPROX_EXHAUSTED");
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function quickCalc(
|
|
133
|
+
Args5 memory a,
|
|
134
|
+
uint256 _guess,
|
|
135
|
+
uint256 _netSyOut,
|
|
136
|
+
uint256 _netSyToReserve
|
|
137
|
+
) internal pure returns (uint256) {
|
|
138
|
+
unchecked {
|
|
139
|
+
uint256 low = a.approx.guessMin;
|
|
140
|
+
uint256 high = a.approx.guessMax;
|
|
141
|
+
|
|
142
|
+
for (uint256 i = 0; i < QUICK_CALC_MAX_ITER; i++) {
|
|
143
|
+
uint256 mid = (low + high) / 2;
|
|
144
|
+
|
|
145
|
+
uint256 thisNetSyOut = (_netSyOut * mid) / _guess;
|
|
146
|
+
uint256 thisNetSyToReserve = (_netSyToReserve * mid) / _guess;
|
|
147
|
+
|
|
148
|
+
uint256 newTotalPt = uint256(a.market.totalPt) + mid;
|
|
149
|
+
uint256 newTotalSy = (uint256(a.market.totalSy) - thisNetSyOut - thisNetSyToReserve);
|
|
150
|
+
|
|
151
|
+
uint256 syNumerator = (thisNetSyOut + a.netSyHolding) * newTotalPt;
|
|
152
|
+
uint256 ptNumerator = (a.totalPtIn - mid) * newTotalSy;
|
|
153
|
+
|
|
154
|
+
if (isAApproxBUnchecked(syNumerator, ptNumerator, a.approx.eps)) {
|
|
155
|
+
return mid;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (syNumerator <= ptNumerator) {
|
|
159
|
+
if (low == mid) {
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
low = mid;
|
|
163
|
+
} else {
|
|
164
|
+
high = mid - 1;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (low > high) return mid;
|
|
168
|
+
}
|
|
169
|
+
return (low + high) / 2;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function calcNumerators(
|
|
174
|
+
MarketState memory market,
|
|
175
|
+
PYIndex index,
|
|
176
|
+
uint256 totalPtIn,
|
|
177
|
+
uint256 netSyHolding,
|
|
178
|
+
MarketPreCompute memory comp,
|
|
179
|
+
uint256 guess
|
|
180
|
+
)
|
|
181
|
+
internal
|
|
182
|
+
pure
|
|
183
|
+
returns (uint256 syNumerator, uint256 ptNumerator, uint256 netSyOut, uint256 netSyFee, uint256 netSyToReserve)
|
|
184
|
+
{
|
|
185
|
+
(netSyOut, netSyFee, netSyToReserve) = calcSyOut(market, comp, index, guess);
|
|
186
|
+
|
|
187
|
+
uint256 newTotalPt = uint256(market.totalPt) + guess;
|
|
188
|
+
uint256 newTotalSy = (uint256(market.totalSy) - netSyOut - netSyToReserve);
|
|
189
|
+
|
|
190
|
+
// it is desired that
|
|
191
|
+
// (netSyOut + netSyHolding) / newTotalSy = netPtRemaining / newTotalPt
|
|
192
|
+
// which is equivalent to
|
|
193
|
+
// (netSyOut + netSyHolding) * newTotalPt = netPtRemaining * newTotalSy
|
|
194
|
+
|
|
195
|
+
syNumerator = (netSyOut + netSyHolding) * newTotalPt;
|
|
196
|
+
ptNumerator = (totalPtIn - guess) * newTotalSy;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
200
|
+
|
|
201
|
+
function calcSyOut(
|
|
202
|
+
MarketState memory market,
|
|
203
|
+
MarketPreCompute memory comp,
|
|
204
|
+
PYIndex index,
|
|
205
|
+
uint256 netPtIn
|
|
206
|
+
) internal pure returns (uint256 netSyOut, uint256 netSyFee, uint256 netSyToReserve) {
|
|
207
|
+
(int256 _netSyOut, int256 _netSyFee, int256 _netSyToReserve) = market.calcTrade(comp, index, -int256(netPtIn));
|
|
208
|
+
netSyOut = uint256(_netSyOut);
|
|
209
|
+
netSyFee = uint256(_netSyFee);
|
|
210
|
+
netSyToReserve = uint256(_netSyToReserve);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/// INTENDED TO BE CALLED BY WHEN GUESS.OFFCHAIN == 0 ONLY ///
|
|
214
|
+
|
|
215
|
+
function validateApprox(ApproxParams memory approx) internal pure {
|
|
216
|
+
if (approx.guessMin > approx.guessMax || approx.eps > PMath.ONE) revert("Internal: INVALID_APPROX_PARAMS");
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
function calcMaxPtIn(MarketState memory market, MarketPreCompute memory comp) internal pure returns (uint256) {
|
|
220
|
+
uint256 low = 0;
|
|
221
|
+
uint256 hi = uint256(comp.totalAsset) - 1;
|
|
222
|
+
|
|
223
|
+
while (low != hi) {
|
|
224
|
+
uint256 mid = (low + hi + 1) / 2;
|
|
225
|
+
if (calcSlope(comp, market.totalPt, int256(mid)) < 0) hi = mid - 1;
|
|
226
|
+
else low = mid;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
low = PMath.min(
|
|
230
|
+
low,
|
|
231
|
+
(MarketMathCore.MAX_MARKET_PROPORTION.mulDown(market.totalPt + comp.totalAsset) - market.totalPt).Uint()
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
return low;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function calcSlope(MarketPreCompute memory comp, int256 totalPt, int256 ptToMarket) internal pure returns (int256) {
|
|
238
|
+
int256 diffAssetPtToMarket = comp.totalAsset - ptToMarket;
|
|
239
|
+
int256 sumPt = ptToMarket + totalPt;
|
|
240
|
+
|
|
241
|
+
require(diffAssetPtToMarket > 0 && sumPt > 0, "invalid ptToMarket");
|
|
242
|
+
|
|
243
|
+
int256 part1 = (ptToMarket * (totalPt + comp.totalAsset)).divDown(sumPt * diffAssetPtToMarket);
|
|
244
|
+
|
|
245
|
+
int256 part2 = sumPt.divDown(diffAssetPtToMarket).ln();
|
|
246
|
+
int256 part3 = PMath.IONE.divDown(comp.rateScalar);
|
|
247
|
+
|
|
248
|
+
return comp.rateAnchor - (part1 - part2).mulDown(part3);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
library MarketApproxPtOutLibV2 {
|
|
253
|
+
using MarketMathCore for MarketState;
|
|
254
|
+
using PYIndexLib for PYIndex;
|
|
255
|
+
using PMath for uint256;
|
|
256
|
+
using PMath for int256;
|
|
257
|
+
using LogExpMath for int256;
|
|
258
|
+
|
|
259
|
+
function approxSwapExactSyForPtV2(
|
|
260
|
+
MarketState memory market,
|
|
261
|
+
PYIndex index,
|
|
262
|
+
uint256 exactSyIn,
|
|
263
|
+
uint256 blockTime,
|
|
264
|
+
ApproxParams memory approx
|
|
265
|
+
) internal pure returns (uint256, /*netPtOut*/ uint256 /*netSyFee*/) {
|
|
266
|
+
MarketPreCompute memory comp = market.getMarketPreCompute(index, blockTime);
|
|
267
|
+
if (approx.guessOffchain == 0) {
|
|
268
|
+
// no limit on min
|
|
269
|
+
approx.guessMax = PMath.min(approx.guessMax, calcMaxPtOut(comp, market.totalPt));
|
|
270
|
+
validateApprox(approx);
|
|
271
|
+
}
|
|
272
|
+
uint256 guess = getFirstGuess(approx);
|
|
273
|
+
|
|
274
|
+
for (uint256 iter = 0; iter < approx.maxIteration; ++iter) {
|
|
275
|
+
(uint256 netSyIn, uint256 netSyFee, ) = calcSyIn(market, comp, index, guess);
|
|
276
|
+
|
|
277
|
+
if (netSyIn <= exactSyIn) {
|
|
278
|
+
if (PMath.isASmallerApproxB(netSyIn, exactSyIn, approx.eps)) {
|
|
279
|
+
return (guess, netSyFee);
|
|
280
|
+
}
|
|
281
|
+
if (guess == approx.guessMin) {
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
approx.guessMin = guess;
|
|
285
|
+
} else {
|
|
286
|
+
approx.guessMax = guess - 1;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (iter <= CUT_OFF_SCALE_CLAMP) {
|
|
290
|
+
guess = scaleClamp(guess, exactSyIn, netSyIn, approx);
|
|
291
|
+
} else {
|
|
292
|
+
guess = calcMidpoint(approx);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
revert("Slippage: APPROX_EXHAUSTED");
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
struct Args6 {
|
|
300
|
+
MarketState market;
|
|
301
|
+
PYIndex index;
|
|
302
|
+
uint256 totalSyIn;
|
|
303
|
+
uint256 netPtHolding;
|
|
304
|
+
uint256 blockTime;
|
|
305
|
+
ApproxParams approx;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
function approxSwapSyToAddLiquidityV2(
|
|
309
|
+
MarketState memory _market,
|
|
310
|
+
PYIndex _index,
|
|
311
|
+
uint256 _totalSyIn,
|
|
312
|
+
uint256 _netPtHolding,
|
|
313
|
+
uint256 _blockTime,
|
|
314
|
+
ApproxParams memory _approx
|
|
315
|
+
) internal pure returns (uint256, /*netPtFromSwap*/ uint256, /*netSySwap*/ uint256 /*netSyFee*/) {
|
|
316
|
+
Args6 memory a = Args6(_market, _index, _totalSyIn, _netPtHolding, _blockTime, _approx);
|
|
317
|
+
|
|
318
|
+
MarketPreCompute memory comp = a.market.getMarketPreCompute(a.index, a.blockTime);
|
|
319
|
+
if (a.approx.guessOffchain == 0) {
|
|
320
|
+
// no limit on min
|
|
321
|
+
a.approx.guessMax = PMath.min(a.approx.guessMax, calcMaxPtOut(comp, a.market.totalPt));
|
|
322
|
+
validateApprox(a.approx);
|
|
323
|
+
require(a.market.totalLp != 0, "no existing lp");
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
uint256 guess = getFirstGuess(a.approx);
|
|
327
|
+
|
|
328
|
+
bool quickCalcRan = false;
|
|
329
|
+
for (uint256 iter = 0; iter < a.approx.maxIteration; ++iter) {
|
|
330
|
+
(uint256 netSyIn, uint256 netSyFee, uint256 netSyToReserve) = calcSyIn(a.market, comp, a.index, guess);
|
|
331
|
+
|
|
332
|
+
if (netSyIn > a.totalSyIn) {
|
|
333
|
+
a.approx.guessMax = guess - 1;
|
|
334
|
+
guess = calcMidpoint(a.approx);
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
uint256 syNumerator;
|
|
339
|
+
uint256 ptNumerator;
|
|
340
|
+
|
|
341
|
+
{
|
|
342
|
+
uint256 newTotalPt = uint256(a.market.totalPt) - guess;
|
|
343
|
+
uint256 netTotalSy = uint256(a.market.totalSy) + netSyIn - netSyToReserve;
|
|
344
|
+
|
|
345
|
+
// it is desired that
|
|
346
|
+
// (netPtFromSwap + netPtHolding) / newTotalPt = netSyRemaining / netTotalSy
|
|
347
|
+
// which is equivalent to
|
|
348
|
+
// (netPtFromSwap + netPtHolding) * netTotalSy = netSyRemaining * newTotalPt
|
|
349
|
+
|
|
350
|
+
ptNumerator = (guess + a.netPtHolding) * netTotalSy;
|
|
351
|
+
syNumerator = (a.totalSyIn - netSyIn) * newTotalPt;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if (PMath.isAApproxB(syNumerator, ptNumerator, a.approx.eps)) {
|
|
355
|
+
return (guess, netSyIn, netSyFee);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
if (ptNumerator <= syNumerator) {
|
|
359
|
+
if (a.approx.guessMin == guess) {
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
a.approx.guessMin = guess;
|
|
363
|
+
} else {
|
|
364
|
+
a.approx.guessMax = guess - 1;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if (!quickCalcRan && PMath.isAApproxB(syNumerator, ptNumerator, QUICK_CALC_TRIGGER_EPS)) {
|
|
368
|
+
quickCalcRan = true;
|
|
369
|
+
guess = quickCalc(a, guess, netSyIn, netSyToReserve);
|
|
370
|
+
if (guess <= a.approx.guessMin || guess >= a.approx.guessMax) guess = calcMidpoint(a.approx);
|
|
371
|
+
} else {
|
|
372
|
+
guess = calcMidpoint(a.approx);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
revert("Slippage: APPROX_EXHAUSTED");
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
function quickCalc(
|
|
379
|
+
Args6 memory a,
|
|
380
|
+
uint256 _guess,
|
|
381
|
+
uint256 _netSyIn,
|
|
382
|
+
uint256 _netSyToReserve
|
|
383
|
+
) internal pure returns (uint256) {
|
|
384
|
+
uint256 low = a.approx.guessMin;
|
|
385
|
+
uint256 high = a.approx.guessMax;
|
|
386
|
+
|
|
387
|
+
unchecked {
|
|
388
|
+
for (uint256 i = 0; i < QUICK_CALC_MAX_ITER; i++) {
|
|
389
|
+
uint256 mid = (low + high) / 2;
|
|
390
|
+
uint256 newTotalPt = uint256(a.market.totalPt) - mid;
|
|
391
|
+
|
|
392
|
+
uint256 thisNetSyIn = (_netSyIn * mid) / _guess;
|
|
393
|
+
uint256 thisNetSyToReserve = (_netSyToReserve * mid) / _guess;
|
|
394
|
+
|
|
395
|
+
if (thisNetSyIn > a.totalSyIn) {
|
|
396
|
+
high = mid - 1;
|
|
397
|
+
if (low > high) return mid;
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
uint256 netTotalSy = uint256(a.market.totalSy) + thisNetSyIn - thisNetSyToReserve;
|
|
402
|
+
|
|
403
|
+
uint256 ptNumerator = (mid + a.netPtHolding) * netTotalSy;
|
|
404
|
+
uint256 syNumerator = (a.totalSyIn - thisNetSyIn) * newTotalPt;
|
|
405
|
+
if (isAApproxBUnchecked(syNumerator, ptNumerator, a.approx.eps)) {
|
|
406
|
+
return mid;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
if (ptNumerator <= syNumerator) {
|
|
410
|
+
low = mid;
|
|
411
|
+
} else {
|
|
412
|
+
high = mid - 1;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
if (low > high) return mid;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
return (low + high) / 2;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
423
|
+
|
|
424
|
+
function calcSyIn(
|
|
425
|
+
MarketState memory market,
|
|
426
|
+
MarketPreCompute memory comp,
|
|
427
|
+
PYIndex index,
|
|
428
|
+
uint256 netPtOut
|
|
429
|
+
) internal pure returns (uint256 netSyIn, uint256 netSyFee, uint256 netSyToReserve) {
|
|
430
|
+
(int256 _netSyIn, int256 _netSyFee, int256 _netSyToReserve) = market.calcTrade(comp, index, int256(netPtOut));
|
|
431
|
+
|
|
432
|
+
// all safe since totalPt and totalSy is int128
|
|
433
|
+
netSyIn = uint256(-_netSyIn);
|
|
434
|
+
netSyFee = uint256(_netSyFee);
|
|
435
|
+
netSyToReserve = uint256(_netSyToReserve);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
function calcMaxPtOut(MarketPreCompute memory comp, int256 totalPt) internal pure returns (uint256) {
|
|
439
|
+
int256 logitP = (comp.feeRate - comp.rateAnchor).mulDown(comp.rateScalar).exp();
|
|
440
|
+
int256 proportion = logitP.divDown(logitP + PMath.IONE);
|
|
441
|
+
int256 numerator = proportion.mulDown(totalPt + comp.totalAsset);
|
|
442
|
+
int256 maxPtOut = totalPt - numerator;
|
|
443
|
+
// only get 99.9% of the theoretical max to accommodate some precision issues
|
|
444
|
+
return (uint256(maxPtOut) * 999) / 1000;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
function validateApprox(ApproxParams memory approx) internal pure {
|
|
448
|
+
if (approx.guessMin > approx.guessMax || approx.eps > PMath.ONE) revert("Internal: INVALID_APPROX_PARAMS");
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
function scaleClamp(
|
|
453
|
+
uint256 original,
|
|
454
|
+
uint256 target,
|
|
455
|
+
uint256 current,
|
|
456
|
+
ApproxParams memory approx
|
|
457
|
+
) pure returns (uint256) {
|
|
458
|
+
uint256 scaled = (original * target) / current;
|
|
459
|
+
if (scaled >= approx.guessMax) return calcMidpoint(approx);
|
|
460
|
+
if (scaled <= approx.guessMin) return calcMidpoint(approx);
|
|
461
|
+
|
|
462
|
+
return scaled;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
function getFirstGuess(ApproxParams memory approx) pure returns (uint256) {
|
|
466
|
+
return (approx.guessOffchain != 0) ? approx.guessOffchain : calcMidpoint(approx);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
function calcMidpoint(ApproxParams memory approx) pure returns (uint256) {
|
|
470
|
+
return (approx.guessMin + approx.guessMax + 1) / 2;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
function isAApproxBUnchecked(uint256 a, uint256 b, uint256 eps) pure returns (bool) {
|
|
474
|
+
unchecked {
|
|
475
|
+
uint256 bLow = (b * (1e18 - eps)) / 1e18;
|
|
476
|
+
uint256 bHigh = (b * (1e18 + eps)) / 1e18;
|
|
477
|
+
return bLow <= a && a <= bHigh;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
@@ -3,8 +3,6 @@ pragma solidity ^0.8.17;
|
|
|
3
3
|
|
|
4
4
|
import "../../core/libraries/TokenHelper.sol";
|
|
5
5
|
import "./IPSwapAggregator.sol";
|
|
6
|
-
import "./kyberswap/l1-contracts/InputScalingHelper.sol";
|
|
7
|
-
import "./kyberswap/l2-contracts/InputScalingHelperL2.sol";
|
|
8
6
|
|
|
9
7
|
contract PendleSwap is IPSwapAggregator, TokenHelper {
|
|
10
8
|
using Address for address;
|
package/deployments/1-core.json
CHANGED
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"marketFactory": "0x27b1dAcd74688aF24a64BD3C9C1B143118740784",
|
|
23
23
|
"router": "0x888888888889758F76e7103c6CbF23ABbF58F946",
|
|
24
24
|
"routerFacets": {
|
|
25
|
-
"ActionAddRemoveLiqV3": "
|
|
26
|
-
"ActionSwapPTV3": "
|
|
27
|
-
"ActionSwapYTV3": "
|
|
28
|
-
"ActionMiscV3": "
|
|
29
|
-
"ActionSimple": "
|
|
25
|
+
"ActionAddRemoveLiqV3": "0x663C21103915B68e9dA797CfdF3cAb01a037D5Ff",
|
|
26
|
+
"ActionSwapPTV3": "0xd8D200d9A713A1c71cF1e7F694B14E5F1D948b15",
|
|
27
|
+
"ActionSwapYTV3": "0x4a03Ce0a268951d04E187B1CF48075eE69266e27",
|
|
28
|
+
"ActionMiscV3": "0x373Dba2055Ad40cb4815148bC47cd1DC16e92E44",
|
|
29
|
+
"ActionSimple": "0x852e59252c94716F0df19B52b36512f6C9297a96",
|
|
30
30
|
"ActionCallbackV3": "0x997FBC511a8Ad11F84a400feACD66E2A3fa805d2",
|
|
31
31
|
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
32
32
|
},
|