@@ -4,9 +4,17 @@ use pinocchio::{
44} ;
55
66use crate :: processor:: {
7+ approve:: process_approve,
8+ burn:: process_burn,
9+ close_account:: process_close_account,
10+ freeze_account:: process_freeze_account,
711 initialize_account:: process_initialize_account,
812 initialize_mint:: { process_initialize_mint, InitializeMint } ,
13+ initialize_multisig:: process_initialize_multisig,
914 mint_to:: process_mint_to,
15+ revoke:: process_revoke,
16+ set_authority:: { process_set_authority, SetAuthority } ,
17+ thaw_account:: process_thaw_account,
1018 transfer:: process_transfer,
1119} ;
1220
@@ -34,6 +42,15 @@ pub fn process_instruction(
3442
3543 process_initialize_account ( program_id, accounts, None , true )
3644 }
45+ // 2 - InitializeMultisig
46+ Some ( ( & 2 , data) ) => {
47+ #[ cfg( feature = "logging" ) ]
48+ pinocchio:: msg!( "Instruction: InitializeMultisig" ) ;
49+
50+ let m = data. first ( ) . ok_or ( ProgramError :: InvalidInstructionData ) ?;
51+
52+ process_initialize_multisig ( accounts, * m, true )
53+ }
3754 // 3 - Transfer
3855 Some ( ( & 3 , data) ) => {
3956 #[ cfg( feature = "logging" ) ]
@@ -46,6 +63,38 @@ pub fn process_instruction(
4663
4764 process_transfer ( program_id, accounts, amount, None )
4865 }
66+ // 4 - Approve
67+ Some ( ( & 4 , data) ) => {
68+ #[ cfg( feature = "logging" ) ]
69+ pinocchio:: msg!( "Instruction: Approve" ) ;
70+
71+ let amount = u64:: from_le_bytes (
72+ data. try_into ( )
73+ . map_err ( |_error| ProgramError :: InvalidInstructionData ) ?,
74+ ) ;
75+
76+ process_approve ( program_id, accounts, amount, None )
77+ }
78+ // 5 - Revoke
79+ Some ( ( & 5 , _) ) => {
80+ #[ cfg( feature = "logging" ) ]
81+ pinocchio:: msg!( "Instruction: Revoke" ) ;
82+
83+ process_revoke ( program_id, accounts)
84+ }
85+ // 6 - SetAuthority
86+ Some ( ( & 6 , data) ) => {
87+ #[ cfg( feature = "logging" ) ]
88+ pinocchio:: msg!( "Instruction: SetAuthority" ) ;
89+
90+ let instruction = SetAuthority :: try_from_bytes ( data) ?;
91+ process_set_authority (
92+ program_id,
93+ accounts,
94+ instruction. authority_type ,
95+ instruction. new_authority ,
96+ )
97+ }
4998 // 7 - InitializeMint
5099 Some ( ( & 7 , data) ) => {
51100 #[ cfg( feature = "logging" ) ]
@@ -58,6 +107,39 @@ pub fn process_instruction(
58107
59108 process_mint_to ( program_id, accounts, amount, None )
60109 }
110+ // 8 - Burn
111+ Some ( ( & 8 , data) ) => {
112+ #[ cfg( feature = "logging" ) ]
113+ pinocchio:: msg!( "Instruction: Burn" ) ;
114+
115+ let amount = u64:: from_le_bytes (
116+ data. try_into ( )
117+ . map_err ( |_error| ProgramError :: InvalidInstructionData ) ?,
118+ ) ;
119+
120+ process_burn ( program_id, accounts, amount, None )
121+ }
122+ // 9 - CloseAccount
123+ Some ( ( & 9 , _) ) => {
124+ #[ cfg( feature = "logging" ) ]
125+ pinocchio:: msg!( "Instruction: CloseAccount" ) ;
126+
127+ process_close_account ( program_id, accounts)
128+ }
129+ // 10 - FreezeAccount
130+ Some ( ( & 10 , _) ) => {
131+ #[ cfg( feature = "logging" ) ]
132+ pinocchio:: msg!( "Instruction: FreezeAccount" ) ;
133+
134+ process_freeze_account ( program_id, accounts)
135+ }
136+ // 10 - ThawAccount
137+ Some ( ( & 11 , _) ) => {
138+ #[ cfg( feature = "logging" ) ]
139+ pinocchio:: msg!( "Instruction: ThawAccount" ) ;
140+
141+ process_thaw_account ( program_id, accounts)
142+ }
61143 _ => Err ( ProgramError :: InvalidInstructionData ) ,
62144 }
63145}
0 commit comments