From 20ca079a876ea5049232d2b171d6dab694171c10 Mon Sep 17 00:00:00 2001 From: koteld Date: Mon, 18 Dec 2023 23:07:41 +0100 Subject: [PATCH] add initial example scripts for Automation, VRF and Functions --- script/CreateAndFundVRFSubscription.s.sol | 22 +++++++++++++++++ script/CreateAutomationSubscription.s.sol | 30 +++++++++++++++++++++++ script/CreateFunctionsSubscription.s.sol | 25 +++++++++++++++++++ script/FundAutomationSubscription.s.sol | 22 +++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 script/CreateAndFundVRFSubscription.s.sol create mode 100644 script/CreateAutomationSubscription.s.sol create mode 100644 script/CreateFunctionsSubscription.s.sol create mode 100644 script/FundAutomationSubscription.s.sol diff --git a/script/CreateAndFundVRFSubscription.s.sol b/script/CreateAndFundVRFSubscription.s.sol new file mode 100644 index 0000000..9fb1639 --- /dev/null +++ b/script/CreateAndFundVRFSubscription.s.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.7; + +import "forge-std/Script.sol"; +import "@chainlink-toolkit/vrf/VRF.s.sol"; + +contract CreateAndFundVRFSubscription is Script { + function run( + address vrfCoordinatorAddress, + uint96 amountInJuels + ) external returns (uint64 subId){ + VRFScript vrfScript = new VRFScript(vrfCoordinatorAddress); + + vm.broadcast(); + subId = vrfScript.createSubscription(); + + vm.broadcast(); + vrfScript.fundSubscription(amountInJuels, subId); + + return subId; + } +} diff --git a/script/CreateAutomationSubscription.s.sol b/script/CreateAutomationSubscription.s.sol new file mode 100644 index 0000000..24a6ac7 --- /dev/null +++ b/script/CreateAutomationSubscription.s.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.7; + +import "forge-std/Script.sol"; +import "@chainlink-toolkit/automation/Automation.s.sol"; + +contract CreateAutomationSubscription is Script { + function run( + address keeperRegistryAddress, + uint96 amountInJuels, + string calldata upkeepName, + string calldata email, + address upkeepAddress, + uint32 gasLimit, + bytes calldata checkData + ) external returns (bytes32 requestHash){ + + AutomationScript automationScript = new AutomationScript(keeperRegistryAddress); + + vm.broadcast(); + return automationScript.registerUpkeep( + amountInJuels, + upkeepName, + email, + upkeepAddress, + gasLimit, + checkData + ); + } +} diff --git a/script/CreateFunctionsSubscription.s.sol b/script/CreateFunctionsSubscription.s.sol new file mode 100644 index 0000000..86622b2 --- /dev/null +++ b/script/CreateFunctionsSubscription.s.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.7; + +import "forge-std/Script.sol"; +import "@chainlink-toolkit/functions/Functions.s.sol"; + +contract CreateFunctionsSubscriptionWithConsumer is Script { + function run( + address functionsRouterAddress, + address functionsConsumerAddress, + address linkTokenAddress, + uint256 amountInJuels + ) external returns (uint64 subId){ + + FunctionsScript functionsScript = new FunctionsScript(functionsRouterAddress); + + vm.broadcast(); + subId = functionsScript.createSubscriptionWithConsumer(functionsConsumerAddress); + + vm.broadcast(); + functionsScript.fundSubscription(linkTokenAddress, amountInJuels, subId); + + return subId; + } +} diff --git a/script/FundAutomationSubscription.s.sol b/script/FundAutomationSubscription.s.sol new file mode 100644 index 0000000..2c3c300 --- /dev/null +++ b/script/FundAutomationSubscription.s.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.7; + +import "forge-std/Script.sol"; +import "@chainlink-toolkit/automation/Automation.s.sol"; + +contract FundAutomationSubscription is Script { + function run( + address keeperRegistryAddress, + uint256 upkeepId, + uint96 amountInJuels + ) external returns (bytes32 requestHash){ + + AutomationScript automationScript = new AutomationScript(keeperRegistryAddress); + + vm.broadcast(); + return automationScript.addFunds( + upkeepId, + amountInJuels + ); + } +}