From d82b3cb06c10ea6e73459c0fd470b3687cbbee60 Mon Sep 17 00:00:00 2001 From: DaveVodrazka Date: Fri, 27 Sep 2024 15:57:28 +0200 Subject: [PATCH] feat: add arbitrary proposal to add options --- src/arbitrary_proposal_add_options.cairo | 49 ++++++++++++++++++++++++ src/lib.cairo | 1 + 2 files changed, 50 insertions(+) create mode 100644 src/arbitrary_proposal_add_options.cairo diff --git a/src/arbitrary_proposal_add_options.cairo b/src/arbitrary_proposal_add_options.cairo new file mode 100644 index 0000000..f15b6f4 --- /dev/null +++ b/src/arbitrary_proposal_add_options.cairo @@ -0,0 +1,49 @@ +use starknet::contract_address::{ContractAddress}; + +#[starknet::interface] +trait IArbitraryProposalAddOptions { + fn execute_arbitrary_proposal(ref self: TContractState); +} + +#[starknet::contract] +pub mod ArbitraryProposalAddOptions { + use amm_governance::proposals::proposals as proposals_component; + use amm_governance::proposals::proposals::InternalTrait; + use konoha::types::{CustomProposalConfig}; + use konoha::contract::IGovernanceDispatcher; + use konoha::contract::IGovernanceDispatcherTrait; + use starknet::{ContractAddress, ClassHash, get_contract_address}; + + component!(path: proposals_component, storage: proposals, event: ProposalsEvent); + + #[storage] + struct Storage { + #[substorage(v0)] + proposals: proposals_component::Storage, + } + + #[derive(starknet::Event, Drop)] + #[event] + enum Event { + ProposalsEvent: proposals_component::Event, + } + + #[constructor] + fn constructor(ref self: ContractState) {} + + #[abi(embed_v0)] + impl ArbitraryProposalAddOptions of super::IArbitraryProposalAddOptions { + fn execute_arbitrary_proposal(ref self: ContractState) { + let option_deployer_class_hash: felt252 = + 0x004e19b87b7777e6e7032ca325794cd793a4d6e9591a8c4e60e0d1b27e4da3d7; + + let add_options = CustomProposalConfig { + target: option_deployer_class_hash, + selector: selector!("add_options"), + library_call: true + }; + + self.proposals.add_custom_proposal_config(add_options); + } + } +} diff --git a/src/lib.cairo b/src/lib.cairo index 605cd6a..0770094 100644 --- a/src/lib.cairo +++ b/src/lib.cairo @@ -8,3 +8,4 @@ mod traits; mod types; mod upgrades; pub mod vecarm; +mod arbitrary_proposal_add_options;