{"version":3,"file":"withdrawVaultTokens.mjs","sources":["../../../../../src/plugins/vaultOperatorModule/operations/withdrawVaultTokens.ts"],"sourcesContent":["import { createWithdrawTokensInstruction } from '@convergence-rfq/vault-operator';\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\n\nimport { Convergence } from '../../../Convergence';\nimport {\n  Operation,\n  OperationHandler,\n  OperationScope,\n  useOperation,\n} from '../../../types';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '../../../utils/TransactionBuilder';\nimport { VaultParameters } from '../models';\nimport { EscrowRfq } from '@/plugins/rfqModule';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'WithdrawVaultTokensOperation' as const;\n\nexport const withdrawVaultTokensOperation =\n  useOperation<WithdrawVaultTokensOperation>(Key);\n\nexport type WithdrawVaultTokensOperation = Operation<\n  typeof Key,\n  WithdrawVaultTokensInput,\n  WithdrawVaultTokensOutput\n>;\n\nexport type WithdrawVaultTokensInput = {\n  vault: VaultParameters;\n  rfq: EscrowRfq;\n};\n\nexport type WithdrawVaultTokensOutput = {\n  response: SendAndConfirmTransactionResponse;\n};\n\nexport const withdrawVaultTokensOperationHandler: OperationHandler<WithdrawVaultTokensOperation> =\n  {\n    handle: async (\n      operation: WithdrawVaultTokensOperation,\n      cvg: Convergence,\n      scope: OperationScope\n    ) => {\n      const builder = await withdrawVaultTokensBuilder(\n        cvg,\n        operation.input,\n        scope\n      );\n\n      const output = await builder.sendAndConfirm(cvg, scope.confirmOptions);\n\n      scope.throwIfCanceled();\n\n      return output;\n    },\n  };\n\nexport type WithdrawVaultTokensBuilderParams = WithdrawVaultTokensInput;\n\nexport const withdrawVaultTokensBuilder = async (\n  cvg: Convergence,\n  params: WithdrawVaultTokensBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder> => {\n  const { programs, payer = cvg.rpc().getDefaultFeePayer() } = options;\n  const { vault, rfq } = params;\n\n  if (!vault.rfq.equals(rfq.address)) {\n    throw new Error('RFQ does not match the provided vault');\n  }\n\n  const vaultProgram = cvg.programs().getVaultOperator(programs).address;\n  const operator = cvg.vaultOperator().pdas().operator(vault.address);\n\n  const legMint = rfq.legs[0].getAssetMint();\n  const { quoteMint } = rfq;\n\n  const ix = {\n    instruction: createWithdrawTokensInstruction(\n      {\n        creator: vault.creator,\n        vaultParams: vault.address,\n        operator,\n        legVault: cvg\n          .tokens()\n          .pdas()\n          .associatedTokenAccount({ mint: legMint, owner: operator }),\n        legTokens: cvg\n          .tokens()\n          .pdas()\n          .associatedTokenAccount({ mint: legMint, owner: vault.creator }),\n        legMint,\n        quoteVault: cvg\n          .tokens()\n          .pdas()\n          .associatedTokenAccount({ mint: quoteMint, owner: operator }),\n        quoteTokens: cvg\n          .tokens()\n          .pdas()\n          .associatedTokenAccount({ mint: quoteMint, owner: vault.creator }),\n        quoteMint,\n        response: vault.confirmedResponse,\n      },\n      vaultProgram\n    ),\n    signers: [],\n    key: 'withdrawVaultTokens',\n  };\n\n  const txBuilder = TransactionBuilder.make().setFeePayer(payer).add(ix);\n\n  await addComputeBudgetIxsIfNeeded(txBuilder, cvg);\n  return txBuilder;\n};\n"],"names":["Key","withdrawVaultTokensOperation","useOperation","withdrawVaultTokensOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","cvg","scope","builder","output","wrap","_callee$","_context","prev","next","withdrawVaultTokensBuilder","input","sent","sendAndConfirm","confirmOptions","throwIfCanceled","abrupt","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","programs","_options$payer","payer","vault","rfq","vaultProgram","operator","legMint","quoteMint","ix","txBuilder","_args2","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","equals","address","Error","getVaultOperator","vaultOperator","pdas","legs","getAssetMint","instruction","createWithdrawTokensInstruction","creator","vaultParams","legVault","tokens","associatedTokenAccount","mint","owner","legTokens","quoteVault","quoteTokens","response","confirmedResponse","signers","key","TransactionBuilder","make","setFeePayer","add","addComputeBudgetIxsIfNeeded","_x4","_x5"],"mappings":"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"}