@@ -2,13 +2,15 @@ use jito_bytemuck::AccountDeserialize;
22use jito_restaking_core:: config:: Config ;
33use jito_tip_router_client:: {
44 instructions:: {
5- AdminUpdateWeightTableBuilder , InitializeNCNConfigBuilder , InitializeWeightTableBuilder ,
6- SetConfigFeesBuilder , SetNewAdminBuilder ,
5+ AdminUpdateWeightTableBuilder , InitializeNCNConfigBuilder , InitializeTrackedMintsBuilder ,
6+ InitializeWeightTableBuilder , RegisterMintBuilder , SetConfigFeesBuilder ,
7+ SetNewAdminBuilder ,
78 } ,
89 types:: ConfigAdminRole ,
910} ;
1011use jito_tip_router_core:: {
11- error:: TipRouterError , ncn_config:: NcnConfig , weight_table:: WeightTable ,
12+ error:: TipRouterError , ncn_config:: NcnConfig , tracked_mints:: TrackedMints ,
13+ weight_table:: WeightTable ,
1214} ;
1315use solana_program:: {
1416 instruction:: InstructionError , native_token:: sol_to_lamports, pubkey:: Pubkey ,
@@ -64,6 +66,14 @@ impl TipRouterClient {
6466 Ok ( ( ) )
6567 }
6668
69+ pub async fn setup_tip_router ( & mut self , ncn_root : & NcnRoot ) -> TestResult < ( ) > {
70+ self . do_initialize_config ( ncn_root. ncn_pubkey , & ncn_root. ncn_admin )
71+ . await ?;
72+ self . do_initialize_tracked_mints ( ncn_root. ncn_pubkey )
73+ . await ?;
74+ Ok ( ( ) )
75+ }
76+
6777 pub async fn get_restaking_config ( & mut self ) -> TestResult < Config > {
6878 let restaking_config = Config :: find_program_address ( & jito_restaking_program:: id ( ) ) . 0 ;
6979 let restaking_config_data = self
@@ -81,6 +91,17 @@ impl TipRouterClient {
8191 Ok ( * NcnConfig :: try_from_slice_unchecked ( config. data . as_slice ( ) ) . unwrap ( ) )
8292 }
8393
94+ pub async fn get_tracked_mints ( & mut self , ncn_pubkey : Pubkey ) -> TestResult < TrackedMints > {
95+ let tracked_mints_pda =
96+ TrackedMints :: find_program_address ( & jito_tip_router_program:: id ( ) , & ncn_pubkey) . 0 ;
97+ let tracked_mints = self
98+ . banks_client
99+ . get_account ( tracked_mints_pda)
100+ . await ?
101+ . unwrap ( ) ;
102+ Ok ( * TrackedMints :: try_from_slice_unchecked ( tracked_mints. data . as_slice ( ) ) . unwrap ( ) )
103+ }
104+
84105 pub async fn do_initialize_config (
85106 & mut self ,
86107 ncn : Pubkey ,
@@ -307,6 +328,91 @@ impl TipRouterClient {
307328 ) )
308329 . await
309330 }
331+
332+ pub async fn do_initialize_tracked_mints ( & mut self , ncn : Pubkey ) -> TestResult < ( ) > {
333+ let ncn_config = NcnConfig :: find_program_address ( & jito_tip_router_program:: id ( ) , & ncn) . 0 ;
334+ let tracked_mints =
335+ TrackedMints :: find_program_address ( & jito_tip_router_program:: id ( ) , & ncn) . 0 ;
336+
337+ self . initialize_tracked_mints ( & ncn_config, & tracked_mints, & ncn)
338+ . await
339+ }
340+
341+ pub async fn initialize_tracked_mints (
342+ & mut self ,
343+ ncn_config : & Pubkey ,
344+ tracked_mints : & Pubkey ,
345+ ncn : & Pubkey ,
346+ ) -> TestResult < ( ) > {
347+ let ix = InitializeTrackedMintsBuilder :: new ( )
348+ . ncn_config ( * ncn_config)
349+ . tracked_mints ( * tracked_mints)
350+ . ncn ( * ncn)
351+ . payer ( self . payer . pubkey ( ) )
352+ . system_program ( system_program:: id ( ) )
353+ . instruction ( ) ;
354+
355+ let blockhash = self . banks_client . get_latest_blockhash ( ) . await ?;
356+ self . process_transaction ( & Transaction :: new_signed_with_payer (
357+ & [ ix] ,
358+ Some ( & self . payer . pubkey ( ) ) ,
359+ & [ & self . payer ] ,
360+ blockhash,
361+ ) )
362+ . await
363+ }
364+
365+ pub async fn do_register_mint (
366+ & mut self ,
367+ ncn : Pubkey ,
368+ vault : Pubkey ,
369+ vault_ncn_ticket : Pubkey ,
370+ ncn_vault_ticket : Pubkey ,
371+ ) -> TestResult < ( ) > {
372+ let restaking_config = Config :: find_program_address ( & jito_restaking_program:: id ( ) ) . 0 ;
373+ let tracked_mints =
374+ TrackedMints :: find_program_address ( & jito_tip_router_program:: id ( ) , & ncn) . 0 ;
375+
376+ self . register_mint (
377+ restaking_config,
378+ tracked_mints,
379+ ncn,
380+ vault,
381+ vault_ncn_ticket,
382+ ncn_vault_ticket,
383+ )
384+ . await
385+ }
386+
387+ pub async fn register_mint (
388+ & mut self ,
389+ restaking_config : Pubkey ,
390+ tracked_mints : Pubkey ,
391+ ncn : Pubkey ,
392+ vault : Pubkey ,
393+ vault_ncn_ticket : Pubkey ,
394+ ncn_vault_ticket : Pubkey ,
395+ ) -> TestResult < ( ) > {
396+ let ix = RegisterMintBuilder :: new ( )
397+ . restaking_config ( restaking_config)
398+ . tracked_mints ( tracked_mints)
399+ . ncn ( ncn)
400+ . vault ( vault)
401+ . vault_ncn_ticket ( vault_ncn_ticket)
402+ . ncn_vault_ticket ( ncn_vault_ticket)
403+ . restaking_program_id ( jito_restaking_program:: id ( ) )
404+ . vault_program_id ( jito_vault_program:: id ( ) )
405+ . instruction ( ) ;
406+
407+ let blockhash = self . banks_client . get_latest_blockhash ( ) . await ?;
408+ self . process_transaction ( & Transaction :: new_signed_with_payer (
409+ & [ ix] ,
410+ Some ( & self . payer . pubkey ( ) ) ,
411+ & [ & self . payer ] ,
412+ blockhash,
413+ ) )
414+ . await
415+ }
310416}
311417
312418#[ inline( always) ]
0 commit comments