Untitled

 avatar
unknown
plain_text
5 months ago
2.3 kB
4
Indexable
export const withdrawVaultLiquidity = async () => {
  console.log(process.env.ADMIN_KEY);
  const secretKeyArray = JSON.parse(process.env.ADMIN_KEY || "[]");
  const signerKeyPair = Keypair.fromSecretKey(Uint8Array.from(secretKeyArray));
  const publicKey = signerKeyPair.publicKey;

  const yesterdayDate = (() => {
    const currentDate = new Date();
    const dateOnly = new Date(
      Date.UTC(
        currentDate.getUTCFullYear(),
        currentDate.getUTCMonth(),
        currentDate.getUTCDate()
      )
    );
    dateOnly.setDate(dateOnly.getDate() - 1);
    const day = String(dateOnly.getDate()).padStart(2, "0");
    const month = String(dateOnly.getMonth() + 1).padStart(2, "0");
    const year = dateOnly.getFullYear();
    return `${day}/${month}/${year}`;
  })();

  const vaultPda = await getVaultPDA(yesterdayDate);

  try {
    console.log("Derived Vault PDA:", vaultPda.toString());
    console.log("Public Key:", publicKey);

    const tx = await program.methods
      .withdrawVaultLiquidity()
      .accounts({
        // @ts-ignore
        vault: vaultPda,
        user: publicKey,
        systemProgram: SystemProgram.programId,
      })
      .transaction();

    const { blockhash } = await connection.getLatestBlockhash();
    tx.recentBlockhash = blockhash;
    tx.feePayer = new PublicKey(publicKey);

    const legacyMessage = tx.compileMessage();
    const message = new TransactionMessage({
      payerKey: new PublicKey(publicKey),
      recentBlockhash: legacyMessage.recentBlockhash,
      instructions: tx.instructions,
    }).compileToV0Message();

    const versionedTx = new VersionedTransaction(message);
    // const signedTx = await wallet2[0].signTransaction(versionedTx);
    console.log("Not Signed transaction:", versionedTx);
    const signedTx = versionedTx.sign([signerKeyPair]);
    console.log("Signed transaction:", versionedTx);

    const txSignature = await connection.sendTransaction(versionedTx);
    console.log(
      "Transaction signature for withdrawing liquidity:",
      txSignature
    );

    const result = await connection.confirmTransaction(txSignature);
    return result;
  } catch (error) {
    console.error("Error withdrawing vault liquidity:", error);
    throw error;
  }
};
Editor is loading...
Leave a Comment