UNPKG

@symmetry-hq/agents-sdk

Version:

Symmetry Agents SDK

41 lines (34 loc) 1.37 kB
// Core dependencies import { BN, Program } from "@coral-xyz/anchor"; import { PublicKey, SystemProgram, TransactionInstruction } from "@solana/web3.js"; // Local imports import { AgentsProgram } from "../idl/types"; import { getAta, getEventAuthority, getFeesVault } from "../utils/programAccounts"; import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from "@solana/spl-token"; export async function topUpBalanceIx(params: { payer: PublicKey, program: Program<AgentsProgram>, amount: number, mint: PublicKey, }): Promise<TransactionInstruction> { const { program, amount, mint, payer } = params; let userDepositTokenAccount = getAta(payer, mint); let feesVault = getFeesVault(program); let vaultDepositTokenAccount = getAta(feesVault, mint); let eventAuthority = getEventAuthority(program); const ix = program.methods.topUpBalance(new BN(amount)) .accountsStrict({ user: payer, depositTokenMint: mint, userDepositTokenAccount, feesVault, vaultDepositTokenAccount, tokenProgram: TOKEN_PROGRAM_ID, associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID, systemProgram: SystemProgram.programId, program: program.programId, eventAuthority, }) .instruction(); return ix; }