import { Connection } from "@solana/web3.js"; import { PermissionlessClient, SolanaChainEnum } from "../../src"; import { DepositMode } from "../../src/types/metadata"; import { BN } from "@coral-xyz/anchor"; import dotenv from "dotenv"; import { Keypair } from "@solana/web3.js"; dotenv.config(); async function main() { const connection = new Connection(process.env.RPC_URL!); const client = new PermissionlessClient( process.env.RPC_URL!, SolanaChainEnum.DEVNET ); const key = Keypair.fromSecretKey( new Uint8Array(JSON.parse(process.env.PRIVATE_KEY!)) ); const tokenATA = await client.getModeTokenATA( key.publicKey, DepositMode.CLASSIC ); const balance = await connection.getTokenAccountBalance(tokenATA); console.log("Submitting redemption for shares: ", balance.value.amount); // Note: 1 USDC is the minimum deposit amount const tx = await client.buildWithdrawTx( key.publicKey, new BN(balance.value.amount), DepositMode.CLASSIC ); console.log(tx); tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; await tx.sign(key); const txHash = await connection.sendRawTransaction(tx.serialize()); console.log(txHash); // Sync the redemption request to Huma's services const syncResponse = await client.syncRedemptionRequest( key.publicKey, txHash ); console.log("Sync response:", syncResponse); // Fetch the updated balances after syncing const balances = await client.getBalances(key.publicKey, DepositMode.CLASSIC); console.log("Balances after syncing:", balances); } main();