import {AccountMeta} from 'solana';
contract SplToken {
address constant tokenProgramId = address"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
address constant SYSVAR_RENT_PUBKEY = address"SysvarRent111111111111111111111111111111111";
struct InitializeMintInstruction {
uint8 instruction;
uint8 decimals;
address mintAuthority;
uint8 freezeAuthorityOption;
address freezeAuthority;
}
function create_mint_with_freezeauthority(uint8 decimals, address mintAuthority, address freezeAuthority) public {
InitializeMintInstruction instr = InitializeMintInstruction({
instruction: 0,
decimals: decimals,
mintAuthority: mintAuthority,
freezeAuthorityOption: 1,
freezeAuthority: freezeAuthority
});
AccountMeta[2] metas = [
AccountMeta({pubkey: instr.mintAuthority, is_writable: true, is_signer: false}),
AccountMeta({pubkey: SYSVAR_RENT_PUBKEY, is_writable: false, is_signer: false})
];
tokenProgramId.call{accounts: metas}(instr);
}
}