manifest/program/instruction_builders/
global_create_instruction.rs1use crate::{
2 program::ManifestInstruction,
3 validation::{get_global_address, get_global_vault_address},
4};
5use solana_program::{
6 instruction::{AccountMeta, Instruction},
7 pubkey::Pubkey,
8 system_program,
9};
10
11pub fn create_global_instruction(
12 mint: &Pubkey,
13 payer: &Pubkey,
14 token_program: &Pubkey,
15) -> Instruction {
16 let (global, _) = get_global_address(mint);
17 let (global_vault, _) = get_global_vault_address(mint);
18 Instruction {
19 program_id: crate::id(),
20 accounts: vec![
21 AccountMeta::new(*payer, true),
22 AccountMeta::new(global, false),
23 AccountMeta::new_readonly(system_program::id(), false),
24 AccountMeta::new_readonly(*mint, false),
25 AccountMeta::new(global_vault, false),
26 AccountMeta::new_readonly(*token_program, false),
27 ],
28 data: [ManifestInstruction::GlobalCreate.to_vec()].concat(),
29 }
30}