Skip to content

Commit db5790e

Browse files
feat: PendleUniversalOracle deployment script
1 parent 47a7703 commit db5790e

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

script/03_OracleAdapters.s.sol

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {UniswapV3Oracle} from "euler-price-oracle/adapter/uniswap/UniswapV3Oracl
1717
import {FixedRateOracle} from "euler-price-oracle/adapter/fixed/FixedRateOracle.sol";
1818
import {RateProviderOracle} from "euler-price-oracle/adapter/rate/RateProviderOracle.sol";
1919
import {PendleOracle} from "euler-price-oracle/adapter/pendle/PendleOracle.sol";
20+
import {PendleUniversalOracle} from "euler-price-oracle/adapter/pendle/PendleUniversalOracle.sol";
2021
import {IdleTranchesOracle} from "euler-price-oracle/adapter/idle/IdleTranchesOracle.sol";
2122

2223
contract ChainlinkAdapter is ScriptUtils {
@@ -533,6 +534,52 @@ contract PendleAdapter is ScriptUtils {
533534
}
534535
}
535536

537+
contract PendleUniversalAdapter is ScriptUtils {
538+
function run() public broadcast returns (address adapter) {
539+
string memory inputScriptFileName = "03_PendleUniversalAdapter_input.json";
540+
string memory outputScriptFileName = "03_PendleUniversalAdapter_output.json";
541+
string memory json = getScriptFile(inputScriptFileName);
542+
address adapterRegistry = vm.parseJsonAddress(json, ".adapterRegistry");
543+
bool addToAdapterRegistry = vm.parseJsonBool(json, ".addToAdapterRegistry");
544+
address pendleOracle = vm.parseJsonAddress(json, ".pendleOracle");
545+
address pendleMarket = vm.parseJsonAddress(json, ".pendleMarket");
546+
address base = vm.parseJsonAddress(json, ".base");
547+
address quote = vm.parseJsonAddress(json, ".quote");
548+
uint32 twapWindow = uint32(vm.parseJsonUint(json, ".twapWindow"));
549+
550+
adapter = execute(adapterRegistry, addToAdapterRegistry, pendleOracle, pendleMarket, base, quote, twapWindow);
551+
552+
string memory object;
553+
object = vm.serializeAddress("oracleAdapters", "adapter", adapter);
554+
vm.writeJson(object, string.concat(vm.projectRoot(), "/script/", outputScriptFileName));
555+
}
556+
557+
function deploy(
558+
address adapterRegistry,
559+
bool addToAdapterRegistry,
560+
address pendleOracle,
561+
address pendleMarket,
562+
address base,
563+
address quote,
564+
uint32 twapWindow
565+
) public broadcast returns (address adapter) {
566+
adapter = execute(adapterRegistry, addToAdapterRegistry, pendleOracle, pendleMarket, base, quote, twapWindow);
567+
}
568+
569+
function execute(
570+
address adapterRegistry,
571+
bool addToAdapterRegistry,
572+
address pendleOracle,
573+
address pendleMarket,
574+
address base,
575+
address quote,
576+
uint32 twapWindow
577+
) public returns (address adapter) {
578+
adapter = address(new PendleUniversalOracle(pendleOracle, pendleMarket, base, quote, twapWindow));
579+
if (addToAdapterRegistry) SnapshotRegistry(adapterRegistry).add(adapter, base, quote);
580+
}
581+
}
582+
536583
contract IdleTranchesAdapter is ScriptUtils {
537584
function run() public broadcast returns (address adapter) {
538585
string memory inputScriptFileName = "03_IdleTranchesAdapter_input.json";

0 commit comments

Comments
 (0)