From b5a4ccdc6f3ce7972eff5f6ce9944149dff21415 Mon Sep 17 00:00:00 2001 From: Chester Sim Date: Tue, 2 Jul 2024 18:19:46 +0800 Subject: [PATCH] refactor(sdk): abstract createDepositTxn --- ts/sdk/bun.lockb | Bin 74439 -> 100444 bytes ts/sdk/src/vaultClient.ts | 137 ++++++++++++++++++++++++++++---------- 2 files changed, 100 insertions(+), 37 deletions(-) diff --git a/ts/sdk/bun.lockb b/ts/sdk/bun.lockb index c74eba693cb89ad3dfdc8a6ac40bd6e880b6a2e0..6ec8d7dce93cb5f85e2e9be4bb38d893f8d0682c 100755 GIT binary patch literal 100444 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%0AKRK5(0>q$oJs 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 ZVqZoq`lejj15#`5>{P_(p)zLS{{hYd?co3b diff --git a/ts/sdk/src/vaultClient.ts b/ts/sdk/src/vaultClient.ts index a39342c4..d5d6f5ac 100644 --- a/ts/sdk/src/vaultClient.ts +++ b/ts/sdk/src/vaultClient.ts @@ -437,6 +437,7 @@ export class VaultClient { .rpc(); } else { const requestWithdrawIx = this.program.instruction.managerRequestWithdraw( + // @ts-ignore amount, withdrawUnit, { @@ -681,22 +682,14 @@ export class VaultClient { } } - /** - * Depositor funds into the specified vault. - * @param vaultDepositor - * @param amount - * @param initVaultDepositor If true, will initialize the vault depositor account - * @returns - */ - public async deposit( + public async prepDepositTx( vaultDepositor: PublicKey, amount: BN, initVaultDepositor?: { authority: PublicKey; vault: PublicKey; - }, - txParams?: TxParams - ): Promise { + } + ) { let vaultPubKey: PublicKey; if (initVaultDepositor) { vaultPubKey = initVaultDepositor.vault; @@ -747,7 +740,68 @@ export class VaultClient { tokenProgram: TOKEN_PROGRAM_ID, }; + return { + vaultAccount, accounts, remainingAccounts + }; + } + + public async createDepositTx( + vaultDepositor: PublicKey, + amount: BN, + initVaultDepositor?: { + authority: PublicKey; + vault: PublicKey; + }, + txParams?: TxParams + ): Promise { + const { vaultAccount, accounts, remainingAccounts } = await this.prepDepositTx( + vaultDepositor, + amount, + initVaultDepositor + ); + + const depositIx = this.program.instruction.deposit(amount, { + accounts: { + authority: this.driftClient.wallet.publicKey, + ...accounts, + }, + remainingAccounts, + }); + + if (initVaultDepositor) { + const initIx = this.createInitVaultDepositorIx( + vaultAccount.pubkey, + initVaultDepositor.authority + ); + return await this.createTxn([initIx, depositIx], txParams); + } else { + return await this.createTxn([depositIx], txParams); + } + } + + /** + * Depositor funds into the specified vault. + * @param vaultDepositor + * @param amount + * @param initVaultDepositor If true, will initialize the vault depositor account + * @returns + */ + public async deposit( + vaultDepositor: PublicKey, + amount: BN, + initVaultDepositor?: { + authority: PublicKey; + vault: PublicKey; + }, + txParams?: TxParams + ): Promise { if (this.cliMode) { + const { vaultAccount, accounts, remainingAccounts } = await this.prepDepositTx( + vaultDepositor, + amount, + initVaultDepositor + ); + if (initVaultDepositor) { await this.initializeVaultDepositor( vaultAccount.pubkey, @@ -760,23 +814,14 @@ export class VaultClient { .remainingAccounts(remainingAccounts) .rpc(); } else { - const depositIx = this.program.instruction.deposit(amount, { - accounts: { - authority: this.driftClient.wallet.publicKey, - ...accounts, - }, - remainingAccounts, - }); + const depositTxn = await this.createDepositTx( + vaultDepositor, + amount, + initVaultDepositor, + txParams + ); - if (initVaultDepositor) { - const initIx = this.createInitVaultDepositorIx( - vaultAccount.pubkey, - initVaultDepositor.authority - ); - return await this.createAndSendTxn([initIx, depositIx], txParams); - } else { - return await this.createAndSendTxn([depositIx], txParams); - } + return this.sendTxn(depositTxn, txParams?.simulateTransaction); } } @@ -821,6 +866,7 @@ export class VaultClient { .rpc(); } else { const requestWithdrawIx = this.program.instruction.requestWithdraw( + // @ts-ignore amount, withdrawUnit, { @@ -1111,13 +1157,10 @@ export class VaultClient { } } - /** - * Used for UI wallet adapters compatibility - */ - public async createAndSendTxn( + public async createTxn( vaultIxs: TransactionInstruction[], txParams?: TxParams - ): Promise { + ): Promise { const ixs = [ ComputeBudgetProgram.setComputeUnitLimit({ units: txParams?.cuLimit ?? 400_000, @@ -1128,7 +1171,7 @@ export class VaultClient { ...vaultIxs, ]; - const tx = (await this.driftClient.txHandler.buildTransaction({ + return (await this.driftClient.txHandler.buildTransaction({ connection: this.driftClient.connection, instructions: ixs, lookupTables: txParams?.lookupTables ?? [], @@ -1138,10 +1181,16 @@ export class VaultClient { fetchMarketLookupTableAccount: this.driftClient.fetchMarketLookupTableAccount.bind(this.driftClient), })) as VersionedTransaction; - let txSig = bs58.encode(tx.signatures[0]); - if (txParams?.simulateTransaction) { + } + + public async sendTxn( + transaction: VersionedTransaction, + simulateTransaction?: boolean, + ): Promise { + let txSig = bs58.encode(transaction.signatures[0]); + if (simulateTransaction) { try { - const resp = await this.driftClient.connection.simulateTransaction(tx, { + const resp = await this.driftClient.connection.simulateTransaction(transaction, { sigVerify: false, commitment: this.driftClient.connection.commitment, }); @@ -1154,7 +1203,7 @@ export class VaultClient { } } else { const resp = await this.driftClient.sendTransaction( - tx, + transaction, [], this.driftClient.opts ); @@ -1167,6 +1216,20 @@ export class VaultClient { } return txSig!; + + } + + /** + * Used for UI wallet adapters compatibility + */ + public async createAndSendTxn( + vaultIxs: TransactionInstruction[], + txParams?: TxParams + ): Promise { + const tx = await this.createTxn(vaultIxs, txParams); + const txSig = await this.sendTxn(tx, txParams?.simulateTransaction); + + return txSig; } /**