@symmetry-hq/agents-sdk
Version:
Symmetry Agents SDK
41 lines (34 loc) • 1.37 kB
text/typescript
// 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;
}