manifest/program/instruction_builders/
global_create_instruction.rs

1use 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}