@@ -17,6 +17,7 @@ import {UniswapV3Oracle} from "euler-price-oracle/adapter/uniswap/UniswapV3Oracl
1717import {FixedRateOracle} from "euler-price-oracle/adapter/fixed/FixedRateOracle.sol " ;
1818import {RateProviderOracle} from "euler-price-oracle/adapter/rate/RateProviderOracle.sol " ;
1919import {PendleOracle} from "euler-price-oracle/adapter/pendle/PendleOracle.sol " ;
20+ import {PendleUniversalOracle} from "euler-price-oracle/adapter/pendle/PendleUniversalOracle.sol " ;
2021import {IdleTranchesOracle} from "euler-price-oracle/adapter/idle/IdleTranchesOracle.sol " ;
2122
2223contract 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+
536583contract IdleTranchesAdapter is ScriptUtils {
537584 function run () public broadcast returns (address adapter ) {
538585 string memory inputScriptFileName = "03_IdleTranchesAdapter_input.json " ;
0 commit comments