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 + ); + } +}