77 GovernanceController ,
88 ProposalInfo ,
99 ProxyNetworkProvider ,
10- TransactionsFactoryConfig ,
10+ Transaction ,
11+ VoteType ,
1112)
1213
1314from multiversx_sdk_cli import cli_shared , utils
1819)
1920from multiversx_sdk_cli .cli_output import CLIOutputBuilder
2021from multiversx_sdk_cli .config import get_config_for_network_providers
21- from multiversx_sdk_cli .governance import GovernanceWrapper
22+ from multiversx_sdk_cli .config_env import get_address_hrp
23+ from multiversx_sdk_cli .guardian_relayer_data import GuardianRelayerData
24+ from multiversx_sdk_cli .interfaces import IAccount
25+ from multiversx_sdk_cli .signing_wrapper import SigningWrapper
2226
2327
2428def setup_parser (args : list [str ], subparsers : Any ) -> Any :
@@ -196,6 +200,31 @@ def _ensure_args(args: Any):
196200 validate_chain_id_args (args )
197201
198202
203+ def _initialize_controller (args : Any ) -> GovernanceController :
204+ chain = args .chain if hasattr (args , "chain" ) else None
205+ chain_id = cli_shared .get_chain_id (args .proxy , chain )
206+ config = get_config_for_network_providers ()
207+ proxy_url = args .proxy if args .proxy else ""
208+ proxy = ProxyNetworkProvider (url = proxy_url , config = config )
209+ gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
210+
211+ return GovernanceController (
212+ chain_id = chain_id ,
213+ network_provider = proxy ,
214+ address_hrp = get_address_hrp (),
215+ gas_limit_estimator = gas_estimator ,
216+ )
217+
218+
219+ def _sign_transaction (transaction : Transaction , sender : IAccount , guardian_and_relayer_data : GuardianRelayerData ):
220+ signer = SigningWrapper ()
221+ signer .sign_transaction (
222+ transaction = transaction ,
223+ sender = sender ,
224+ guardian_and_relayer = guardian_and_relayer_data ,
225+ )
226+
227+
199228def create_proposal (args : Any ):
200229 _ensure_args (args )
201230
@@ -204,24 +233,22 @@ def create_proposal(args: Any):
204233 sender = sender .address .to_bech32 (),
205234 args = args ,
206235 )
207- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
208- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
209- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
210236
237+ controller = _initialize_controller (args )
211238 transaction = controller .create_transaction_for_new_proposal (
212239 sender = sender ,
213240 nonce = sender .nonce ,
214241 commit_hash = args .commit_hash ,
215242 start_vote_epoch = args .start_vote_epoch ,
216243 end_vote_epoch = args .end_vote_epoch ,
217244 native_token_amount = args .value ,
245+ guardian = guardian_and_relayer_data .guardian .address if guardian_and_relayer_data .guardian else None ,
246+ relayer = guardian_and_relayer_data .relayer .address if guardian_and_relayer_data .relayer else None ,
218247 gas_limit = args .gas_limit ,
219248 gas_price = args .gas_price ,
220- version = args .version ,
221- options = args .options ,
222- guardian_and_relayer_data = guardian_and_relayer_data ,
223249 )
224250
251+ _sign_transaction (transaction , sender , guardian_and_relayer_data )
225252 cli_shared .send_or_simulate (transaction , args )
226253
227254
@@ -233,22 +260,22 @@ def vote(args: Any):
233260 sender = sender .address .to_bech32 (),
234261 args = args ,
235262 )
236- chain_id = cli_shared . get_chain_id ( args . proxy , args . chain )
237- gas_estimator = cli_shared . initialize_gas_limit_estimator ( args )
238- controller = GovernanceWrapper ( config = TransactionsFactoryConfig ( chain_id ), gas_limit_estimator = gas_estimator )
263+
264+ [ vote_value ] = [ v for v in VoteType if v . value == args . vote ]
265+ controller = _initialize_controller ( args )
239266
240267 transaction = controller .create_transaction_for_voting (
241268 sender = sender ,
242269 nonce = sender .nonce ,
243270 proposal_nonce = args .proposal_nonce ,
244- vote = args .vote ,
271+ vote = vote_value ,
272+ guardian = guardian_and_relayer_data .guardian .address if guardian_and_relayer_data .guardian else None ,
273+ relayer = guardian_and_relayer_data .relayer .address if guardian_and_relayer_data .relayer else None ,
245274 gas_limit = args .gas_limit ,
246275 gas_price = args .gas_price ,
247- version = args .version ,
248- options = args .options ,
249- guardian_and_relayer_data = guardian_and_relayer_data ,
250276 )
251277
278+ _sign_transaction (transaction , sender , guardian_and_relayer_data )
252279 cli_shared .send_or_simulate (transaction , args )
253280
254281
@@ -260,21 +287,19 @@ def close_proposal(args: Any):
260287 sender = sender .address .to_bech32 (),
261288 args = args ,
262289 )
263- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
264- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
265- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
266290
291+ controller = _initialize_controller (args )
267292 transaction = controller .create_transaction_for_closing_proposal (
268293 sender = sender ,
269294 nonce = sender .nonce ,
270295 proposal_nonce = args .proposal_nonce ,
296+ guardian = guardian_and_relayer_data .guardian .address if guardian_and_relayer_data .guardian else None ,
297+ relayer = guardian_and_relayer_data .relayer .address if guardian_and_relayer_data .relayer else None ,
271298 gas_limit = args .gas_limit ,
272299 gas_price = args .gas_price ,
273- version = args .version ,
274- options = args .options ,
275- guardian_and_relayer_data = guardian_and_relayer_data ,
276300 )
277301
302+ _sign_transaction (transaction , sender , guardian_and_relayer_data )
278303 cli_shared .send_or_simulate (transaction , args )
279304
280305
@@ -286,22 +311,21 @@ def clear_ended_proposals(args: Any):
286311 sender = sender .address .to_bech32 (),
287312 args = args ,
288313 )
289- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
290- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
291- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
292314
293315 proposers = [Address .new_from_bech32 (proposer ) for proposer in args .proposers ]
316+ controller = _initialize_controller (args )
317+
294318 transaction = controller .create_transaction_for_clearing_ended_proposals (
295319 sender = sender ,
296320 nonce = sender .nonce ,
297321 proposers = proposers ,
322+ guardian = guardian_and_relayer_data .guardian .address if guardian_and_relayer_data .guardian else None ,
323+ relayer = guardian_and_relayer_data .relayer .address if guardian_and_relayer_data .relayer else None ,
298324 gas_limit = args .gas_limit ,
299325 gas_price = args .gas_price ,
300- version = args .version ,
301- options = args .options ,
302- guardian_and_relayer_data = guardian_and_relayer_data ,
303326 )
304327
328+ _sign_transaction (transaction , sender , guardian_and_relayer_data )
305329 cli_shared .send_or_simulate (transaction , args )
306330
307331
@@ -313,20 +337,18 @@ def claim_accumulated_fees(args: Any):
313337 sender = sender .address .to_bech32 (),
314338 args = args ,
315339 )
316- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
317- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
318- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
319340
341+ controller = _initialize_controller (args )
320342 transaction = controller .create_transaction_for_claiming_accumulated_fees (
321343 sender = sender ,
322344 nonce = sender .nonce ,
345+ guardian = guardian_and_relayer_data .guardian .address if guardian_and_relayer_data .guardian else None ,
346+ relayer = guardian_and_relayer_data .relayer .address if guardian_and_relayer_data .relayer else None ,
323347 gas_limit = args .gas_limit ,
324348 gas_price = args .gas_price ,
325- version = args .version ,
326- options = args .options ,
327- guardian_and_relayer_data = guardian_and_relayer_data ,
328349 )
329350
351+ _sign_transaction (transaction , sender , guardian_and_relayer_data )
330352 cli_shared .send_or_simulate (transaction , args )
331353
332354
@@ -338,10 +360,8 @@ def change_config(args: Any):
338360 sender = sender .address .to_bech32 (),
339361 args = args ,
340362 )
341- chain_id = cli_shared .get_chain_id (args .proxy , args .chain )
342- gas_estimator = cli_shared .initialize_gas_limit_estimator (args )
343- controller = GovernanceWrapper (config = TransactionsFactoryConfig (chain_id ), gas_limit_estimator = gas_estimator )
344363
364+ controller = _initialize_controller (args )
345365 transaction = controller .create_transaction_for_changing_config (
346366 sender = sender ,
347367 nonce = sender .nonce ,
@@ -350,24 +370,20 @@ def change_config(args: Any):
350370 min_quorum = args .min_quorum ,
351371 min_veto_threshold = args .min_veto_threshold ,
352372 min_pass_threshold = args .min_pass_threshold ,
373+ guardian = guardian_and_relayer_data .guardian .address if guardian_and_relayer_data .guardian else None ,
374+ relayer = guardian_and_relayer_data .relayer .address if guardian_and_relayer_data .relayer else None ,
353375 gas_limit = args .gas_limit ,
354376 gas_price = args .gas_price ,
355- version = args .version ,
356- options = args .options ,
357- guardian_and_relayer_data = guardian_and_relayer_data ,
358377 )
359378
379+ _sign_transaction (transaction , sender , guardian_and_relayer_data )
360380 cli_shared .send_or_simulate (transaction , args )
361381
362382
363383def get_voting_power (args : Any ):
364384 validate_proxy_argument (args )
365385
366- config = get_config_for_network_providers ()
367- proxy = ProxyNetworkProvider (url = args .proxy , config = config )
368- chain_id = proxy .get_network_config ().chain_id
369- controller = GovernanceController (chain_id , proxy )
370-
386+ controller = _initialize_controller (args )
371387 user = Address .new_from_bech32 (args .user )
372388
373389 voting_power = controller .get_voting_power (user )
@@ -377,10 +393,7 @@ def get_voting_power(args: Any):
377393def get_config (args : Any ):
378394 validate_proxy_argument (args )
379395
380- config = get_config_for_network_providers ()
381- proxy = ProxyNetworkProvider (url = args .proxy , config = config )
382- chain_id = proxy .get_network_config ().chain_id
383- controller = GovernanceController (chain_id , proxy )
396+ controller = _initialize_controller (args )
384397
385398 contract_config = controller .get_config ()
386399 utils .dump_out_json (_config_to_dict (contract_config ))
@@ -389,10 +402,7 @@ def get_config(args: Any):
389402def get_proposal (args : Any ):
390403 validate_proxy_argument (args )
391404
392- config = get_config_for_network_providers ()
393- proxy = ProxyNetworkProvider (url = args .proxy , config = config )
394- chain_id = proxy .get_network_config ().chain_id
395- controller = GovernanceController (chain_id , proxy )
405+ controller = _initialize_controller (args )
396406
397407 info = controller .get_proposal (args .proposal_nonce )
398408 utils .dump_out_json (_proposal_to_dict (info ))
@@ -401,10 +411,7 @@ def get_proposal(args: Any):
401411def get_delegated_vote_info (args : Any ):
402412 validate_proxy_argument (args )
403413
404- config = get_config_for_network_providers ()
405- proxy = ProxyNetworkProvider (url = args .proxy , config = config )
406- chain_id = proxy .get_network_config ().chain_id
407- controller = GovernanceController (chain_id , proxy )
414+ controller = _initialize_controller (args )
408415
409416 contract = Address .new_from_bech32 (args .contract )
410417 user = Address .new_from_bech32 (args .user )
0 commit comments