@pendle/core-v2 6.1.3 → 6.1.4-sweedtest
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/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/v3/PendleMarketFactoryV3.sol/PendleMarketFactoryV3.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/v3/PendleMarketV3.sol/PendleMarketV3.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
- package/build/artifacts/contracts/cross-chain/FixedPricePTAMM.sol/FixedPricePTAMM.dbg.json +1 -1
- package/build/artifacts/contracts/cross-chain/FixedPricePTAMM.sol/FixedPricePTAMM.json +70 -2
- package/build/artifacts/contracts/interfaces/IMarketSweed.sol/IMarketSweed.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IMarketSweed.sol/IMarketSweed.json +141 -0
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionCallbackV3.sol/IPActionCallbackV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
- 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/IPAllEventsV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFixedPricePTAMM.sol/IPFixedPricePTAMM.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFixedPricePTAMM.sol/IPFixedPricePTAMM.json +68 -0
- package/build/artifacts/contracts/interfaces/IPFixedPricePTAMM.sol/IPFixedPricePTAMMSwapCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitOrderType.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouterCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactoryV3.sol/IPMarketFactoryV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketV3.sol/IPMarketV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPYLpOracle.sol/IPPYLpOracle.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BalanceReader.sol/BalanceReader.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/ExpiredLpPtRedeemer.sol/ExpiredLpPtRedeemer.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/ExpiredLpPtRedeemer.sol/ExpiredLpPtRedeemer.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/LimitBackendHelperV2.sol/LimitBackendHelperV2.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketSweed.sol/MarketSweed.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/MarketSweed.sol/MarketSweed.json +333 -0
- package/build/artifacts/contracts/offchain-helpers/PendleLPWrapper.sol/PendleLPWrapper.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/PendleLPWrapperFactory.sol/PendleLPWrapperFactory.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/deploy/PendleCommonPoolDeployHelperV2.sol/PendleCommonPoolDeployHelperV2.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelperV2.sol/PendlePoolDeployHelperV2.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
- 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/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
- 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/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
- 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/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtInLibV1.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/MarketApproxLibV1.sol/MarketApproxPtOutLibV1.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol/PendleChainlinkOracle.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringLpSeller.sol/BoringLpSeller.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracleFactory.sol/PendleSparkLinearDiscountOracleFactory.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 -13
- package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +2 -13
- package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.json +2 -13
- package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.json +2 -13
- package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.json +2 -13
- package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
- package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
- 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 +3 -15
- package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxEstimateLib.sol/MarketApproxEstimateLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtInLibV2.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibV2.sol/MarketApproxPtOutLibV2.dbg.json +1 -1
- package/contracts/cross-chain/FixedPricePTAMM.sol +45 -3
- package/contracts/interfaces/IMarketSweed.sol +23 -0
- package/contracts/interfaces/IPFixedPricePTAMM.sol +14 -0
- package/contracts/offchain-helpers/MarketSweed.sol +239 -0
- package/contracts/router/ActionAddRemoveLiqV3.sol +0 -2
- package/contracts/router/ActionMiscV3.sol +0 -2
- package/contracts/router/ActionSimple.sol +0 -2
- package/contracts/router/ActionSwapPTV3.sol +0 -2
- package/contracts/router/ActionSwapYTV3.sol +0 -2
- package/contracts/router/base/ActionBase.sol +8 -16
- package/contracts/router/base/ActionDelegateBase.sol +0 -2
- package/package.json +1 -1
- package/typechain-types/FixedPricePTAMM.ts +98 -0
- package/typechain-types/IPFixedPricePTAMM.ts +98 -0
- package/typechain-types/IPReentrancyGuardUpg.ts +89 -0
- package/typechain-types/MarketSweed.ts +39 -0
- package/typechain-types/PendleERC20Upg.ts +21 -0
- package/typechain-types/PendleMarket.ts +82 -32
- package/typechain-types/PendleMarketFactoryUpg.ts +773 -0
- package/typechain-types/PendleMarketFactoryV3Upg.ts +760 -0
- package/typechain-types/PendleReentrancyGuardUpg.ts +100 -0
- package/typechain-types/PendleYieldContractFactoryUpg.ts +820 -0
- package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +3 -19
- package/typechain-types/factories/ActionMiscV3__factory.ts +3 -19
- package/typechain-types/factories/ActionSimple__factory.ts +3 -19
- package/typechain-types/factories/ActionSwapPTV3__factory.ts +3 -19
- package/typechain-types/factories/ActionSwapYTV3__factory.ts +3 -19
- package/typechain-types/factories/ExpiredLpPtRedeemer__factory.ts +1 -1
- package/typechain-types/factories/FixedPricePTAMM__factory.ts +69 -1
- package/typechain-types/factories/IPFixedPricePTAMM__factory.ts +68 -0
- package/typechain-types/factories/IPReentrancyGuardUpg__factory.ts +43 -0
- package/typechain-types/factories/MarketSweed__factory.ts +76 -14
- package/typechain-types/factories/PendleERC20Upg__factory.ts +13 -0
- package/typechain-types/factories/PendleMarketFactoryUpg__factory.ts +732 -0
- package/typechain-types/factories/PendleMarketFactoryV3Upg__factory.ts +719 -0
- package/typechain-types/factories/PendleMarket__factory.ts +81 -27
- package/typechain-types/factories/PendleReentrancyGuardUpg__factory.ts +56 -0
- package/typechain-types/factories/PendleYieldContractFactoryUpg__factory.ts +692 -0
- package/typechain-types/hardhat.d.ts +18 -9
- package/typechain-types/index.ts +4 -2
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity ^0.8.17;
|
|
4
|
+
|
|
5
|
+
import "../interfaces/IPMarket.sol";
|
|
6
|
+
import "../router/math/MarketApproxLibOnchain.sol";
|
|
7
|
+
import "../router/base/ActionBase.sol";
|
|
8
|
+
import "../interfaces/IMarketSweed.sol";
|
|
9
|
+
|
|
10
|
+
contract MarketSweed is ActionBase, IMarketSweed {
|
|
11
|
+
using PMath for uint256;
|
|
12
|
+
using PMath for int256;
|
|
13
|
+
using PYIndexLib for PYIndex;
|
|
14
|
+
using MarketMathCore for MarketState;
|
|
15
|
+
using PYIndexLib for IPYieldToken;
|
|
16
|
+
|
|
17
|
+
address public immutable router;
|
|
18
|
+
|
|
19
|
+
struct MarketTokens {
|
|
20
|
+
IStandardizedYield SY;
|
|
21
|
+
IPPrincipalToken PT;
|
|
22
|
+
IPYieldToken YT;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
constructor(address _router) {
|
|
26
|
+
router = _router;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function seedAtImpliedRate(
|
|
30
|
+
address receiver,
|
|
31
|
+
address market,
|
|
32
|
+
uint256 minLpOut,
|
|
33
|
+
uint256 minYtOut,
|
|
34
|
+
TokenInput calldata input,
|
|
35
|
+
ApproxSweedParams calldata sweedParams
|
|
36
|
+
) external payable returns (uint256 netLpOut, uint256 netYtOut, int256 guessedAmountPtToSwap) {
|
|
37
|
+
MarketTokens memory tokens;
|
|
38
|
+
(tokens.SY, tokens.PT, tokens.YT) = IPMarket(market).readTokens();
|
|
39
|
+
|
|
40
|
+
_mintSyFromToken(address(this), address(tokens.SY), 1, input);
|
|
41
|
+
|
|
42
|
+
uint256 netPtOut;
|
|
43
|
+
(netPtOut, netYtOut, guessedAmountPtToSwap) = _swap(receiver, market, tokens, sweedParams);
|
|
44
|
+
|
|
45
|
+
uint256 netYtFromSeed;
|
|
46
|
+
(netLpOut, netYtFromSeed, ) = _seed(receiver, market, tokens.SY, tokens.YT, _selfBalance(tokens.SY), netPtOut);
|
|
47
|
+
netYtOut += netYtFromSeed;
|
|
48
|
+
|
|
49
|
+
if (netLpOut < minLpOut) revert("Slippage: INSUFFICIENT_LP_OUT");
|
|
50
|
+
if (netYtOut < minYtOut) revert("Slippage: INSUFFICIENT_YT_OUT");
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function mintPYFromToken__noCall(
|
|
54
|
+
address YT,
|
|
55
|
+
TokenInput calldata input
|
|
56
|
+
) external payable returns (uint256 netPYOut) {
|
|
57
|
+
address SY = IPYieldToken(YT).SY();
|
|
58
|
+
_mintSyFromToken(YT, SY, 1, input);
|
|
59
|
+
netPYOut = IPYieldToken(YT).mintPY(msg.sender, msg.sender);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _seed(
|
|
63
|
+
address receiver,
|
|
64
|
+
address market,
|
|
65
|
+
IStandardizedYield SY,
|
|
66
|
+
IPYieldToken YT,
|
|
67
|
+
uint256 netSyIn,
|
|
68
|
+
uint256 netPtIn
|
|
69
|
+
) internal returns (uint256 netLpOut, uint256 netYtOut, uint256 netSyMintPy) {
|
|
70
|
+
MarketState memory state = _readMarket(market);
|
|
71
|
+
|
|
72
|
+
uint256 netSyDual = 0;
|
|
73
|
+
if (netPtIn > 0) {
|
|
74
|
+
/** Add dual SY + PT */
|
|
75
|
+
uint256 netPtDual;
|
|
76
|
+
(, , netSyDual, netPtDual) = _readMarket(market).addLiquidity(netSyIn, netPtIn, block.timestamp);
|
|
77
|
+
if (netPtIn > netPtDual || netSyDual == netSyIn) {
|
|
78
|
+
revert("MS: Bought too much PT");
|
|
79
|
+
}
|
|
80
|
+
netSyIn -= netSyDual;
|
|
81
|
+
_transferOut(YT.PT(), market, netPtDual);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
PYIndex pyIndex = YT.newIndex();
|
|
85
|
+
netSyMintPy =
|
|
86
|
+
(netSyIn * state.totalPt.Uint()) /
|
|
87
|
+
(state.totalPt.Uint() + pyIndex.syToAsset(state.totalSy.Uint()));
|
|
88
|
+
|
|
89
|
+
uint256 netSyAddLiquidity = netSyIn - netSyMintPy;
|
|
90
|
+
|
|
91
|
+
// transfer SY to mint PY
|
|
92
|
+
_transferOut(address(SY), address(YT), netSyMintPy);
|
|
93
|
+
|
|
94
|
+
// PT goes to market, YT goes to receiver
|
|
95
|
+
netYtOut = YT.mintPY(market, receiver);
|
|
96
|
+
|
|
97
|
+
// the rest of SY goes to market
|
|
98
|
+
_transferOut(address(SY), market, netSyAddLiquidity + netSyDual);
|
|
99
|
+
|
|
100
|
+
(netLpOut, , ) = IPMarket(market).mint(receiver, netSyAddLiquidity, netYtOut);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function _swap(
|
|
104
|
+
address receiver,
|
|
105
|
+
address market,
|
|
106
|
+
MarketTokens memory tokens,
|
|
107
|
+
ApproxSweedParams memory sweedParams
|
|
108
|
+
) internal returns (uint256 amountPtToAccount, uint256 amountYTToAccount, int256 guessedSwap) {
|
|
109
|
+
PYIndex index = _getPYIndex(market);
|
|
110
|
+
MarketState memory state = _readMarket(market);
|
|
111
|
+
MarketPreCompute memory comp = state.getMarketPreCompute(index, block.timestamp);
|
|
112
|
+
|
|
113
|
+
if (state.lastLnImpliedRate > sweedParams.targetLnImpliedRate) {
|
|
114
|
+
// Normalize maxPtToSwap
|
|
115
|
+
sweedParams.maxPtToSwap = PMath.min(
|
|
116
|
+
sweedParams.maxPtToSwap,
|
|
117
|
+
MarketApproxPtOutLibOnchain.calcMaxPtOut(comp, state.totalPt)
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
int256 amountSyToAccount;
|
|
121
|
+
|
|
122
|
+
(guessedSwap, amountSyToAccount) = _calcAmountPtToBuy(state, index, sweedParams);
|
|
123
|
+
amountPtToAccount = guessedSwap.Uint();
|
|
124
|
+
|
|
125
|
+
_transferOut(address(tokens.SY), market, amountSyToAccount.abs());
|
|
126
|
+
IPMarket(market).swapSyForExactPt(address(this), guessedSwap.abs(), EMPTY_BYTES);
|
|
127
|
+
} else {
|
|
128
|
+
// Normalize maxPtToSwap
|
|
129
|
+
sweedParams.maxPtToSwap = PMath.min(
|
|
130
|
+
sweedParams.maxPtToSwap,
|
|
131
|
+
MarketApproxPtInLibOnchain.calcSoftMaxPtIn(state, comp)
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
guessedSwap = _calcAmountPtToSell(state, index, sweedParams);
|
|
135
|
+
|
|
136
|
+
uint256 amountPtToSell = guessedSwap.abs();
|
|
137
|
+
amountYTToAccount = amountPtToSell;
|
|
138
|
+
|
|
139
|
+
_transferOut(address(tokens.SY), address(tokens.YT), index.assetToSyUp(amountPtToSell));
|
|
140
|
+
uint256 amountPYOut = tokens.YT.mintPY(market, receiver);
|
|
141
|
+
|
|
142
|
+
assert(amountPYOut >= amountPtToSell);
|
|
143
|
+
|
|
144
|
+
// this amount of SY will be used to add liquidity in later step
|
|
145
|
+
IPMarket(market).swapExactPtForSy(address(this), amountPtToSell, EMPTY_BYTES);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function _calcAmountPtToBuy(
|
|
150
|
+
MarketState memory state,
|
|
151
|
+
PYIndex index,
|
|
152
|
+
ApproxSweedParams memory sweedParams
|
|
153
|
+
) internal view returns (int256 amountPtToSwapToAccount, int256 amountSyToAccount) {
|
|
154
|
+
int256 refAmt = sweedParams.maxPtToSwap.Int();
|
|
155
|
+
int256 accPtToAccount = 0;
|
|
156
|
+
|
|
157
|
+
for (uint256 iter = 0; iter < sweedParams.maxIteration; ++iter) {
|
|
158
|
+
int256 guess;
|
|
159
|
+
if (iter == 0 && _isValidGuessOffchain(sweedParams, true)) {
|
|
160
|
+
guess = sweedParams.guessOffchain;
|
|
161
|
+
} else {
|
|
162
|
+
refAmt /= 2;
|
|
163
|
+
guess = accPtToAccount + refAmt;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
MarketState memory localState = _deepCopy(state);
|
|
167
|
+
|
|
168
|
+
// // Will not revert. maxPtToBuy should already be normalized
|
|
169
|
+
(int256 localAmountSyToAccount, , ) = localState.executeTradeCore(index, guess, block.timestamp);
|
|
170
|
+
|
|
171
|
+
if (PMath.isAApproxB(localState.lastLnImpliedRate, sweedParams.targetLnImpliedRate, sweedParams.eps)) {
|
|
172
|
+
return (guess, localAmountSyToAccount);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (localState.lastLnImpliedRate > sweedParams.targetLnImpliedRate) {
|
|
176
|
+
accPtToAccount += refAmt;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
revert("_calcAmountPtToBuy: failed");
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function _calcAmountPtToSell(
|
|
183
|
+
MarketState memory state,
|
|
184
|
+
PYIndex index,
|
|
185
|
+
ApproxSweedParams memory sweedParams
|
|
186
|
+
) internal view returns (int256 amountPtToSwapToAccount) {
|
|
187
|
+
int256 refAmt = sweedParams.maxPtToSwap.Int();
|
|
188
|
+
int256 accPtToAccount = 0;
|
|
189
|
+
|
|
190
|
+
for (uint256 iter = 0; iter < sweedParams.maxIteration; ++iter) {
|
|
191
|
+
int256 guess;
|
|
192
|
+
if (iter == 0 && _isValidGuessOffchain(sweedParams, false)) {
|
|
193
|
+
guess = sweedParams.guessOffchain;
|
|
194
|
+
} else {
|
|
195
|
+
refAmt /= 2;
|
|
196
|
+
guess = accPtToAccount - refAmt;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
MarketState memory localState = _deepCopy(state);
|
|
200
|
+
|
|
201
|
+
// Will not revert. maxPtToSell should already be normalized
|
|
202
|
+
localState.executeTradeCore(index, guess, block.timestamp);
|
|
203
|
+
|
|
204
|
+
if (PMath.isAApproxB(localState.lastLnImpliedRate, sweedParams.targetLnImpliedRate, sweedParams.eps)) {
|
|
205
|
+
return guess;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
if (localState.lastLnImpliedRate < sweedParams.targetLnImpliedRate) {
|
|
209
|
+
accPtToAccount -= refAmt;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
revert("_calcAmountPtToSell: failed");
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function _getPYIndex(address market) internal returns (PYIndex) {
|
|
216
|
+
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
217
|
+
return PYIndex.wrap(YT.pyIndexCurrent());
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function _deepCopy(MarketState memory state) internal pure returns (MarketState memory copiedState) {
|
|
221
|
+
copiedState.totalPt = state.totalPt;
|
|
222
|
+
copiedState.totalSy = state.totalSy;
|
|
223
|
+
copiedState.totalLp = state.totalLp;
|
|
224
|
+
copiedState.treasury = state.treasury;
|
|
225
|
+
|
|
226
|
+
copiedState.scalarRoot = state.scalarRoot;
|
|
227
|
+
copiedState.expiry = state.expiry;
|
|
228
|
+
|
|
229
|
+
copiedState.lnFeeRateRoot = state.lnFeeRateRoot;
|
|
230
|
+
copiedState.reserveFeePercent = state.reserveFeePercent;
|
|
231
|
+
copiedState.lastLnImpliedRate = state.lastLnImpliedRate;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function _isValidGuessOffchain(ApproxSweedParams memory sweedParams, bool isBuyingPt) internal pure returns (bool) {
|
|
235
|
+
if (sweedParams.guessOffchain == 0) return false;
|
|
236
|
+
if (isBuyingPt != (sweedParams.guessOffchain > 0)) return false;
|
|
237
|
+
return sweedParams.guessOffchain.abs() <= sweedParams.maxPtToSwap;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
@@ -15,8 +15,6 @@ contract ActionAddRemoveLiqV3 is IPActionAddRemoveLiqV3, ActionBase, ActionDeleg
|
|
|
15
15
|
using PYIndexLib for IPYieldToken;
|
|
16
16
|
using PYIndexLib for PYIndex;
|
|
17
17
|
|
|
18
|
-
constructor(address _dustReceiver) ActionDelegateBase(_dustReceiver) {}
|
|
19
|
-
|
|
20
18
|
// ------------------ ADD LIQUIDITY DUAL ------------------
|
|
21
19
|
|
|
22
20
|
/// @notice For details on the parameters (input, guessPtSwapToSy, limit, etc.), please refer to IPAllActionTypeV3.
|
|
@@ -8,8 +8,6 @@ import "../interfaces/IPReflector.sol";
|
|
|
8
8
|
contract ActionMiscV3 is IPActionMiscV3, ActionBase {
|
|
9
9
|
uint256 private constant NOT_FOUND = type(uint256).max;
|
|
10
10
|
|
|
11
|
-
constructor(address _dustReceiver) ActionBase(_dustReceiver) {}
|
|
12
|
-
|
|
13
11
|
function mintSyFromToken(
|
|
14
12
|
address receiver,
|
|
15
13
|
address SY,
|
|
@@ -24,8 +24,6 @@ contract ActionSimple is ActionBase, IPActionSimple {
|
|
|
24
24
|
using PYIndexLib for PYIndex;
|
|
25
25
|
using PMath for uint256;
|
|
26
26
|
|
|
27
|
-
constructor(address _dustReceiver) ActionBase(_dustReceiver) {}
|
|
28
|
-
|
|
29
27
|
// ------------------ SWAP TOKEN FOR PT ------------------
|
|
30
28
|
/// @notice This function is for internal router use only and should not be called directly.
|
|
31
29
|
/// @dev Use swapExactTokenForPt from the main router instead.
|
|
@@ -8,8 +8,6 @@ import {ActionDelegateBase} from "./base/ActionDelegateBase.sol";
|
|
|
8
8
|
contract ActionSwapPTV3 is IPActionSwapPTV3, ActionBase, ActionDelegateBase {
|
|
9
9
|
using PMath for uint256;
|
|
10
10
|
|
|
11
|
-
constructor(address _dustReceiver) ActionDelegateBase(_dustReceiver) {}
|
|
12
|
-
|
|
13
11
|
// ------------------ SWAP TOKEN FOR PT ------------------
|
|
14
12
|
/// @notice For details on the parameters (input, guessPtSwapToSy, limit, etc.), please refer to IPAllActionTypeV3.
|
|
15
13
|
function swapExactTokenForPt(
|
|
@@ -12,8 +12,6 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase, ActionD
|
|
|
12
12
|
using MarketApproxPtOutLibV2 for MarketState;
|
|
13
13
|
using PYIndexLib for IPYieldToken;
|
|
14
14
|
|
|
15
|
-
constructor(address _dustReceiver) ActionDelegateBase(_dustReceiver) {}
|
|
16
|
-
|
|
17
15
|
// ------------------ SWAP TOKEN FOR YT ------------------
|
|
18
16
|
|
|
19
17
|
/// @notice For details on the parameters (input, guessPtSwapToSy, limit, etc.), please refer to IPAllActionTypeV3.
|
|
@@ -19,11 +19,6 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
19
19
|
using PYIndexLib for PYIndex;
|
|
20
20
|
|
|
21
21
|
bytes internal constant EMPTY_BYTES = abi.encode();
|
|
22
|
-
address internal immutable DUST_RECEIVER;
|
|
23
|
-
|
|
24
|
-
constructor(address _dustReceiver) {
|
|
25
|
-
DUST_RECEIVER = _dustReceiver;
|
|
26
|
-
}
|
|
27
22
|
|
|
28
23
|
// ----------------- MINT REDEEM SY PY -----------------
|
|
29
24
|
|
|
@@ -163,10 +158,6 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
163
158
|
return IPMarket(market).readState(address(this));
|
|
164
159
|
}
|
|
165
160
|
|
|
166
|
-
function _sweepDust(address token) internal {
|
|
167
|
-
_transferOut(token, DUST_RECEIVER, _selfBalance(token));
|
|
168
|
-
}
|
|
169
|
-
|
|
170
161
|
// ----------------- PT SWAP -----------------
|
|
171
162
|
|
|
172
163
|
function _entry_swapExactPtForSy(address market, LimitOrderData calldata limit) internal view returns (address) {
|
|
@@ -193,6 +184,8 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
193
184
|
(netPtLeft, netSyOut, netSyFee, doMarketOrder) = _fillLimit(receiver, PT, netPtLeft, limit);
|
|
194
185
|
if (doMarketOrder) {
|
|
195
186
|
_transferOut(address(PT), market, netPtLeft);
|
|
187
|
+
} else {
|
|
188
|
+
_transferOut(address(PT), receiver, netPtLeft);
|
|
196
189
|
}
|
|
197
190
|
}
|
|
198
191
|
|
|
@@ -207,8 +200,6 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
207
200
|
netSyFee += netSyFeeMarket;
|
|
208
201
|
}
|
|
209
202
|
|
|
210
|
-
_sweepDust(address(PT));
|
|
211
|
-
|
|
212
203
|
if (netSyOut < minSyOut) revert("Slippage: INSUFFICIENT_SY_OUT");
|
|
213
204
|
}
|
|
214
205
|
|
|
@@ -236,6 +227,8 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
236
227
|
(netSyLeft, netPtOut, netSyFee, doMarketOrder) = _fillLimit(receiver, SY, netSyLeft, limit);
|
|
237
228
|
if (doMarketOrder) {
|
|
238
229
|
_transferOut(address(SY), market, netSyLeft);
|
|
230
|
+
} else {
|
|
231
|
+
_transferOut(address(SY), receiver, netSyLeft);
|
|
239
232
|
}
|
|
240
233
|
}
|
|
241
234
|
|
|
@@ -253,8 +246,6 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
253
246
|
netSyFee += netSyFeeMarket;
|
|
254
247
|
}
|
|
255
248
|
|
|
256
|
-
_sweepDust(address(SY));
|
|
257
|
-
|
|
258
249
|
if (netPtOut < minPtOut) revert("Slippage: INSUFFICIENT_PT_OUT");
|
|
259
250
|
}
|
|
260
251
|
|
|
@@ -284,6 +275,8 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
284
275
|
(netYtLeft, netSyOut, netSyFee, doMarketOrder) = _fillLimit(receiver, YT, netYtLeft, limit);
|
|
285
276
|
if (doMarketOrder) {
|
|
286
277
|
_transferOut(address(YT), address(YT), netYtLeft);
|
|
278
|
+
} else {
|
|
279
|
+
_transferOut(address(YT), receiver, netYtLeft);
|
|
287
280
|
}
|
|
288
281
|
}
|
|
289
282
|
|
|
@@ -301,8 +294,6 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
301
294
|
netSyOut += SY.balanceOf(receiver) - preSyBalance;
|
|
302
295
|
}
|
|
303
296
|
|
|
304
|
-
_sweepDust(address(YT));
|
|
305
|
-
|
|
306
297
|
if (netSyOut < minSyOut) revert("Slippage: INSUFFICIENT_SY_OUT");
|
|
307
298
|
}
|
|
308
299
|
|
|
@@ -331,6 +322,8 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
331
322
|
(netSyLeft, netYtOut, netSyFee, doMarketOrder) = _fillLimit(receiver, SY, netSyLeft, limit);
|
|
332
323
|
if (doMarketOrder) {
|
|
333
324
|
_transferOut(address(SY), address(YT), netSyLeft);
|
|
325
|
+
} else {
|
|
326
|
+
_transferOut(address(SY), receiver, netSyLeft);
|
|
334
327
|
}
|
|
335
328
|
}
|
|
336
329
|
|
|
@@ -351,7 +344,6 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
351
344
|
netYtOut += netYtOutMarket;
|
|
352
345
|
netSyFee += netSyFeeMarket;
|
|
353
346
|
}
|
|
354
|
-
_sweepDust(address(SY));
|
|
355
347
|
|
|
356
348
|
if (netYtOut < minYtOut) revert("Slippage: INSUFFICIENT_YT_OUT");
|
|
357
349
|
}
|
|
@@ -6,8 +6,6 @@ import {IPActionSimple} from "../../interfaces/IPActionSimple.sol";
|
|
|
6
6
|
import {ApproxParams, TokenInput, LimitOrderData} from "../../interfaces/IPAllActionTypeV3.sol";
|
|
7
7
|
|
|
8
8
|
contract ActionDelegateBase is ActionBase {
|
|
9
|
-
constructor(address _dustReceiver) ActionBase(_dustReceiver) {}
|
|
10
|
-
|
|
11
9
|
function delegateToAddLiquiditySinglePtSimple(
|
|
12
10
|
address receiver,
|
|
13
11
|
address market,
|
package/package.json
CHANGED
|
@@ -39,6 +39,8 @@ export interface FixedPricePTAMMInterface extends utils.Interface {
|
|
|
39
39
|
"setPriceOracle(address,address,address,uint256)": FunctionFragment;
|
|
40
40
|
"swapExactPtForToken(address,address,uint256,address,bytes)": FunctionFragment;
|
|
41
41
|
"swapPtForExactToken(address,address,address,uint256,bytes)": FunctionFragment;
|
|
42
|
+
"transferInThenSwapExactPtForToken(address,address,uint256,address)": FunctionFragment;
|
|
43
|
+
"transferInThenSwapPtForExactToken(address,address,address,uint256)": FunctionFragment;
|
|
42
44
|
"transferOwnership(address,bool,bool)": FunctionFragment;
|
|
43
45
|
"upgradeTo(address)": FunctionFragment;
|
|
44
46
|
"upgradeToAndCall(address,bytes)": FunctionFragment;
|
|
@@ -90,6 +92,14 @@ export interface FixedPricePTAMMInterface extends utils.Interface {
|
|
|
90
92
|
functionFragment: "swapPtForExactToken",
|
|
91
93
|
values: [string, string, string, BigNumberish, BytesLike]
|
|
92
94
|
): string;
|
|
95
|
+
encodeFunctionData(
|
|
96
|
+
functionFragment: "transferInThenSwapExactPtForToken",
|
|
97
|
+
values: [string, string, BigNumberish, string]
|
|
98
|
+
): string;
|
|
99
|
+
encodeFunctionData(
|
|
100
|
+
functionFragment: "transferInThenSwapPtForExactToken",
|
|
101
|
+
values: [string, string, string, BigNumberish]
|
|
102
|
+
): string;
|
|
93
103
|
encodeFunctionData(
|
|
94
104
|
functionFragment: "transferOwnership",
|
|
95
105
|
values: [string, boolean, boolean]
|
|
@@ -140,6 +150,14 @@ export interface FixedPricePTAMMInterface extends utils.Interface {
|
|
|
140
150
|
functionFragment: "swapPtForExactToken",
|
|
141
151
|
data: BytesLike
|
|
142
152
|
): Result;
|
|
153
|
+
decodeFunctionResult(
|
|
154
|
+
functionFragment: "transferInThenSwapExactPtForToken",
|
|
155
|
+
data: BytesLike
|
|
156
|
+
): Result;
|
|
157
|
+
decodeFunctionResult(
|
|
158
|
+
functionFragment: "transferInThenSwapPtForExactToken",
|
|
159
|
+
data: BytesLike
|
|
160
|
+
): Result;
|
|
143
161
|
decodeFunctionResult(
|
|
144
162
|
functionFragment: "transferOwnership",
|
|
145
163
|
data: BytesLike
|
|
@@ -337,6 +355,22 @@ export interface FixedPricePTAMM extends BaseContract {
|
|
|
337
355
|
overrides?: Overrides & { from?: string | Promise<string> }
|
|
338
356
|
): Promise<ContractTransaction>;
|
|
339
357
|
|
|
358
|
+
transferInThenSwapExactPtForToken(
|
|
359
|
+
receiver: string,
|
|
360
|
+
PT: string,
|
|
361
|
+
exactPtIn: BigNumberish,
|
|
362
|
+
token: string,
|
|
363
|
+
overrides?: Overrides & { from?: string | Promise<string> }
|
|
364
|
+
): Promise<ContractTransaction>;
|
|
365
|
+
|
|
366
|
+
transferInThenSwapPtForExactToken(
|
|
367
|
+
receiver: string,
|
|
368
|
+
PT: string,
|
|
369
|
+
token: string,
|
|
370
|
+
exactTokenOut: BigNumberish,
|
|
371
|
+
overrides?: Overrides & { from?: string | Promise<string> }
|
|
372
|
+
): Promise<ContractTransaction>;
|
|
373
|
+
|
|
340
374
|
transferOwnership(
|
|
341
375
|
newOwner: string,
|
|
342
376
|
direct: boolean,
|
|
@@ -429,6 +463,22 @@ export interface FixedPricePTAMM extends BaseContract {
|
|
|
429
463
|
overrides?: Overrides & { from?: string | Promise<string> }
|
|
430
464
|
): Promise<ContractTransaction>;
|
|
431
465
|
|
|
466
|
+
transferInThenSwapExactPtForToken(
|
|
467
|
+
receiver: string,
|
|
468
|
+
PT: string,
|
|
469
|
+
exactPtIn: BigNumberish,
|
|
470
|
+
token: string,
|
|
471
|
+
overrides?: Overrides & { from?: string | Promise<string> }
|
|
472
|
+
): Promise<ContractTransaction>;
|
|
473
|
+
|
|
474
|
+
transferInThenSwapPtForExactToken(
|
|
475
|
+
receiver: string,
|
|
476
|
+
PT: string,
|
|
477
|
+
token: string,
|
|
478
|
+
exactTokenOut: BigNumberish,
|
|
479
|
+
overrides?: Overrides & { from?: string | Promise<string> }
|
|
480
|
+
): Promise<ContractTransaction>;
|
|
481
|
+
|
|
432
482
|
transferOwnership(
|
|
433
483
|
newOwner: string,
|
|
434
484
|
direct: boolean,
|
|
@@ -516,6 +566,22 @@ export interface FixedPricePTAMM extends BaseContract {
|
|
|
516
566
|
overrides?: CallOverrides
|
|
517
567
|
): Promise<BigNumber>;
|
|
518
568
|
|
|
569
|
+
transferInThenSwapExactPtForToken(
|
|
570
|
+
receiver: string,
|
|
571
|
+
PT: string,
|
|
572
|
+
exactPtIn: BigNumberish,
|
|
573
|
+
token: string,
|
|
574
|
+
overrides?: CallOverrides
|
|
575
|
+
): Promise<BigNumber>;
|
|
576
|
+
|
|
577
|
+
transferInThenSwapPtForExactToken(
|
|
578
|
+
receiver: string,
|
|
579
|
+
PT: string,
|
|
580
|
+
token: string,
|
|
581
|
+
exactTokenOut: BigNumberish,
|
|
582
|
+
overrides?: CallOverrides
|
|
583
|
+
): Promise<BigNumber>;
|
|
584
|
+
|
|
519
585
|
transferOwnership(
|
|
520
586
|
newOwner: string,
|
|
521
587
|
direct: boolean,
|
|
@@ -680,6 +746,22 @@ export interface FixedPricePTAMM extends BaseContract {
|
|
|
680
746
|
overrides?: Overrides & { from?: string | Promise<string> }
|
|
681
747
|
): Promise<BigNumber>;
|
|
682
748
|
|
|
749
|
+
transferInThenSwapExactPtForToken(
|
|
750
|
+
receiver: string,
|
|
751
|
+
PT: string,
|
|
752
|
+
exactPtIn: BigNumberish,
|
|
753
|
+
token: string,
|
|
754
|
+
overrides?: Overrides & { from?: string | Promise<string> }
|
|
755
|
+
): Promise<BigNumber>;
|
|
756
|
+
|
|
757
|
+
transferInThenSwapPtForExactToken(
|
|
758
|
+
receiver: string,
|
|
759
|
+
PT: string,
|
|
760
|
+
token: string,
|
|
761
|
+
exactTokenOut: BigNumberish,
|
|
762
|
+
overrides?: Overrides & { from?: string | Promise<string> }
|
|
763
|
+
): Promise<BigNumber>;
|
|
764
|
+
|
|
683
765
|
transferOwnership(
|
|
684
766
|
newOwner: string,
|
|
685
767
|
direct: boolean,
|
|
@@ -773,6 +855,22 @@ export interface FixedPricePTAMM extends BaseContract {
|
|
|
773
855
|
overrides?: Overrides & { from?: string | Promise<string> }
|
|
774
856
|
): Promise<PopulatedTransaction>;
|
|
775
857
|
|
|
858
|
+
transferInThenSwapExactPtForToken(
|
|
859
|
+
receiver: string,
|
|
860
|
+
PT: string,
|
|
861
|
+
exactPtIn: BigNumberish,
|
|
862
|
+
token: string,
|
|
863
|
+
overrides?: Overrides & { from?: string | Promise<string> }
|
|
864
|
+
): Promise<PopulatedTransaction>;
|
|
865
|
+
|
|
866
|
+
transferInThenSwapPtForExactToken(
|
|
867
|
+
receiver: string,
|
|
868
|
+
PT: string,
|
|
869
|
+
token: string,
|
|
870
|
+
exactTokenOut: BigNumberish,
|
|
871
|
+
overrides?: Overrides & { from?: string | Promise<string> }
|
|
872
|
+
): Promise<PopulatedTransaction>;
|
|
873
|
+
|
|
776
874
|
transferOwnership(
|
|
777
875
|
newOwner: string,
|
|
778
876
|
direct: boolean,
|