From c77ca6ca71365054ba28519e0edf740d118e5764 Mon Sep 17 00:00:00 2001 From: Credence Date: Fri, 13 Dec 2024 01:20:08 +0100 Subject: [PATCH] burner: allow admin execute calls --- veLords/src/burner.cairo | 13 ++++++++++++- veLords/src/interfaces/IBurner.cairo | 6 ++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/veLords/src/burner.cairo b/veLords/src/burner.cairo index 215b67d..b151b69 100644 --- a/veLords/src/burner.cairo +++ b/veLords/src/burner.cairo @@ -5,12 +5,15 @@ #[starknet::contract] mod burner { - use lordship::interfaces::IBurner::IBurner; + use lordship::interfaces::IBurner::{IBurner, IBurnerAdmin}; use lordship::interfaces::IERC20::{IERC20Dispatcher, IERC20DispatcherTrait}; use lordship::interfaces::IRewardPool::{IRewardPoolDispatcher, IRewardPoolDispatcherTrait}; use openzeppelin::access::ownable::OwnableComponent; + use openzeppelin::account::utils::execute_calls; use openzeppelin::upgrades::UpgradeableComponent; use openzeppelin::upgrades::interface::IUpgradeable; + use starknet::account::Call; + use starknet::{ClassHash, ContractAddress, get_contract_address, contract_address_const}; component!(path: OwnableComponent, storage: ownable, event: OwnableEvent); @@ -76,4 +79,12 @@ mod burner { reward_pool.burn(lords_balance); } } + + #[abi(embed_v0)] + impl IBurnerAdminImpl of IBurnerAdmin { + fn execute_calls(ref self: ContractState, mut calls: Array) -> Array> { + self.ownable.assert_only_owner(); + execute_calls(calls) + } + } } diff --git a/veLords/src/interfaces/IBurner.cairo b/veLords/src/interfaces/IBurner.cairo index 2857547..306dda5 100644 --- a/veLords/src/interfaces/IBurner.cairo +++ b/veLords/src/interfaces/IBurner.cairo @@ -1,6 +1,12 @@ use starknet::ContractAddress; +use starknet::account::Call; #[starknet::interface] pub trait IBurner { fn burn_lords(ref self: TContractState); } + +#[starknet::interface] +pub trait IBurnerAdmin { + fn execute_calls(ref self: TContractState, calls: Array) -> Array>; +}