import { getAssociatedTokenAddressSync } from "@solana/spl-token";
import { ExponentVaultsPDA } from "@exponent-labs/exponent-vaults-pda";
// Token account pairs: vault escrow → your wallet ATA
// One pair per token in the vault
const pda = new ExponentVaultsPDA();
const tokenAccountPairs = vault.state.tokenEntries.map((entry) => ({
tokenSrc: pda.tokenEntryEscrow({
vault: vaultAddress,
mint: entry.mint,
})[0],
tokenDst: getAssociatedTokenAddressSync(entry.mint, wallet.publicKey),
}));
const ix = vault.ixExecuteWithdrawal({
owner: wallet.publicKey,
withdrawalAccount: withdrawalAddress,
tokenAccountPairs,
});
const tx = new Transaction().add(ix);
await sendAndConfirmTransaction(connection, tx, [wallet]);