{"version":3,"file":"revertSettlementPreparation.mjs","sources":["../../../../../src/plugins/rfqModule/operations/revertSettlementPreparation.ts"],"sourcesContent":["import { PublicKey, AccountMeta } from '@solana/web3.js';\nimport {\n  createRevertEscrowSettlementPreparationInstruction,\n  createRevertPrintTradeSettlementPreparationPreparationInstruction,\n} from '@convergence-rfq/rfq';\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token';\n\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\nimport {\n  Operation,\n  OperationHandler,\n  OperationScope,\n  useOperation,\n  makeConfirmOptionsFinalizedOnMainnet,\n} from '../../../types';\nimport { Convergence } from '../../../Convergence';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '../../../utils/TransactionBuilder';\nimport { InstrumentPdasClient } from '../../instrumentModule';\nimport { AuthoritySide, toSolitaAuthoritySide } from '../models/AuthoritySide';\nimport {\n  EscrowResponse,\n  EscrowRfq,\n  PrintTradeResponse,\n  PrintTradeRfq,\n} from '../models';\nimport { legToBaseAssetMint } from '@/plugins/instrumentModule';\nimport { prependWithProviderProgram } from '@/plugins/printTradeModule';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'RevertSettlementPreparationOperation' as const;\n\n/**\n * Reverts settlement preparations.\n *\n * ```ts\n * const rfq = await convergence\n *   .rfqs()\n *   .revertSettlementPreparation({ address };\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const revertSettlementPreparationOperation =\n  useOperation<RevertSettlementPreparationOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type RevertSettlementPreparationOperation = Operation<\n  typeof Key,\n  RevertSettlementPreparationInput,\n  RevertSettlementPreparationOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type RevertSettlementPreparationInput = {\n  /** The Response address. */\n  response: PublicKey;\n\n  /**\n   * The side (Maker or Taker) that is reverting\n   * settlement preparation.\n   */\n  side: AuthoritySide;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type RevertSettlementPreparationOutput = {\n  /** The blockchain response from sending and confirming the transaction. */\n  response: SendAndConfirmTransactionResponse;\n};\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const revertSettlementPreparationOperationHandler: OperationHandler<RevertSettlementPreparationOperation> =\n  {\n    handle: async (\n      operation: RevertSettlementPreparationOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<RevertSettlementPreparationOutput> => {\n      const builder = await revertSettlementPreparationBuilder(\n        convergence,\n        {\n          ...operation.input,\n        },\n        scope\n      );\n      scope.throwIfCanceled();\n\n      const confirmOptions = makeConfirmOptionsFinalizedOnMainnet(\n        convergence,\n        scope.confirmOptions\n      );\n      if (builder.checkTransactionFits()) {\n        const output = await builder.sendAndConfirm(\n          convergence,\n          confirmOptions\n        );\n        scope.throwIfCanceled();\n\n        return output;\n      }\n      const builders = builder.divideToMultipleBuildersThatFit();\n      const latestBlockhash = await convergence.rpc().getLatestBlockhash();\n      const txs = builders.map((b) => b.toTransaction(latestBlockhash));\n      const signedTxs = await convergence.identity().signAllTransactions(txs);\n      let output: SendAndConfirmTransactionResponse | undefined;\n      for (const signedTx of signedTxs) {\n        output = await convergence\n          .rpc()\n          .serializeAndSendTransaction(signedTx, latestBlockhash);\n      }\n      if (!output) {\n        throw new Error('No transaction was sent');\n      }\n      return { response: output };\n    },\n  };\n\nexport type RevertSettlementPreparationBuilderParams =\n  RevertSettlementPreparationInput;\n\n/**\n * Partially reverts settlement preparations\n *\n * ```ts\n * const transactionBuilder = await convergence\n *   .rfqs()\n *   .builders()\n *   .partlyRevertSettlementPreparation();\n * ```\n *\n * @group Transaction Builders\n * @category Constructors\n */\nexport const revertSettlementPreparationBuilder = async (\n  convergence: Convergence,\n  params: RevertSettlementPreparationBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder> => {\n  const responseModel = await convergence\n    .rfqs()\n    .findResponseByAddress({ address: params.response });\n  const rfqModel = await convergence\n    .rfqs()\n    .findRfqByAddress({ address: responseModel.rfq });\n\n  if (\n    responseModel.model === 'escrowResponse' &&\n    rfqModel.model === 'escrowRfq'\n  ) {\n    return revertEscrowSettlementPreparationBuilder(\n      convergence,\n      {\n        response: responseModel,\n        rfq: rfqModel,\n        side: params.side,\n      },\n      options\n    );\n  } else if (\n    responseModel.model === 'printTradeResponse' &&\n    rfqModel.model === 'printTradeRfq'\n  ) {\n    return revertPrintTradeSettlementPreparationBuilder(\n      convergence,\n      {\n        response: responseModel,\n        rfq: rfqModel,\n        side: params.side,\n      },\n      options\n    );\n  }\n\n  throw new Error('Rfq type does not match with response type!');\n};\n\nexport type RevertEscrowSettlementPreparationBuilderParams = {\n  response: PublicKey | EscrowResponse;\n  rfq?: EscrowRfq;\n  side: AuthoritySide;\n};\n\nexport const revertEscrowSettlementPreparationBuilder = async (\n  cvg: Convergence,\n  params: RevertEscrowSettlementPreparationBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder> => {\n  const { programs, payer = cvg.rpc().getDefaultFeePayer() } = options;\n  const { response, rfq, side } = params;\n\n  const responseModel =\n    response instanceof PublicKey\n      ? await cvg.rfqs().findResponseByAddress({ address: response })\n      : response;\n  const rfqModel =\n    rfq ?? (await cvg.rfqs().findRfqByAddress({ address: responseModel.rfq }));\n\n  if (\n    responseModel.model !== 'escrowResponse' ||\n    rfqModel.model !== 'escrowRfq'\n  ) {\n    throw new Error('Response is not settled as an escrow!');\n  }\n\n  const rfqProgram = cvg.programs().getRfq(programs);\n  const anchorRemainingAccounts: AccountMeta[] = [];\n  const spotInstrumentProgram = cvg.programs().getSpotInstrument();\n\n  const sidePreparedLegs: number =\n    side === 'taker'\n      ? parseInt(responseModel.takerPreparedLegs.toString())\n      : parseInt(responseModel.makerPreparedLegs.toString());\n\n  for (let i = 0; i < sidePreparedLegs; i++) {\n    const instrumentEscrowPda = new InstrumentPdasClient(cvg).instrumentEscrow({\n      response: responseModel.address,\n      index: i,\n      rfqModel,\n    });\n\n    const instrumentProgramAccount: AccountMeta = {\n      pubkey: rfqModel.legs[i].getProgramId(),\n      isSigner: false,\n      isWritable: false,\n    };\n\n    const leg = rfqModel.legs[i];\n\n    const baseAssetMint = await legToBaseAssetMint(cvg, leg);\n\n    const legAccounts: AccountMeta[] = [\n      //`escrow`\n      {\n        pubkey: instrumentEscrowPda,\n        isSigner: false,\n        isWritable: true,\n      },\n      // `receiver_tokens`\n      {\n        pubkey: cvg\n          .tokens()\n          .pdas()\n          .associatedTokenAccount({\n            mint: baseAssetMint!.address,\n            owner: side === 'maker' ? responseModel.maker : rfqModel.taker,\n            programs,\n          }),\n        isSigner: false,\n        isWritable: true,\n      },\n      { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n    ];\n\n    anchorRemainingAccounts.push(instrumentProgramAccount, ...legAccounts);\n  }\n\n  const spotInstrumentProgramAccount: AccountMeta = {\n    pubkey: spotInstrumentProgram.address,\n    isSigner: false,\n    isWritable: false,\n  };\n\n  const quoteEscrowPda = new InstrumentPdasClient(cvg).quoteEscrow({\n    response: responseModel.address,\n    program: spotInstrumentProgram.address,\n  });\n\n  const quoteAccounts: AccountMeta[] = [\n    //`escrow`\n    {\n      pubkey: quoteEscrowPda,\n      isSigner: false,\n      isWritable: true,\n    },\n    // `receiver_tokens`\n    {\n      pubkey: cvg\n        .tokens()\n        .pdas()\n        .associatedTokenAccount({\n          mint: rfqModel.quoteMint,\n          owner: side === 'maker' ? responseModel.maker : rfqModel.taker,\n          programs,\n        }),\n      isSigner: false,\n      isWritable: true,\n    },\n    { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n  ];\n\n  anchorRemainingAccounts.push(spotInstrumentProgramAccount, ...quoteAccounts);\n\n  const txBuilder = TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createRevertEscrowSettlementPreparationInstruction(\n        {\n          protocol: cvg.protocol().pdas().protocol(),\n          rfq: rfqModel.address,\n          response: responseModel.address,\n          anchorRemainingAccounts,\n        },\n        {\n          side: toSolitaAuthoritySide(side),\n        },\n        rfqProgram.address\n      ),\n      signers: [],\n      key: 'revertSettlementPreparation',\n    });\n  await addComputeBudgetIxsIfNeeded(txBuilder, cvg);\n  return txBuilder;\n};\n\nexport type RevertPrintTradeSettlementPreparationBuilderParams = {\n  response: PublicKey | PrintTradeResponse;\n  rfq?: PrintTradeRfq;\n  side: AuthoritySide;\n};\n\nexport const revertPrintTradeSettlementPreparationBuilder = async (\n  cvg: Convergence,\n  params: RevertPrintTradeSettlementPreparationBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder> => {\n  const { programs, payer = cvg.rpc().getDefaultFeePayer() } = options;\n  const { response, rfq, side } = params;\n\n  const responseModel =\n    response instanceof PublicKey\n      ? await cvg.rfqs().findResponseByAddress({ address: response })\n      : response;\n  const rfqModel =\n    rfq ?? (await cvg.rfqs().findRfqByAddress({ address: responseModel.rfq }));\n\n  if (\n    responseModel.model !== 'printTradeResponse' ||\n    rfqModel.model !== 'printTradeRfq'\n  ) {\n    throw new Error('Response is not settled as a print trade!');\n  }\n\n  const { accounts: remainingAccounts, postBuilders } =\n    await rfqModel.printTrade.getRevertPreparations(\n      rfqModel,\n      responseModel,\n      side,\n      options\n    );\n\n  const fullRemainingAccounts = prependWithProviderProgram(\n    rfqModel.printTrade,\n    remainingAccounts\n  );\n\n  const rfqProgram = cvg.programs().getRfq(programs);\n\n  return TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add(\n      {\n        instruction:\n          createRevertPrintTradeSettlementPreparationPreparationInstruction(\n            {\n              protocol: cvg.protocol().pdas().protocol(),\n              rfq: rfqModel.address,\n              response: responseModel.address,\n              anchorRemainingAccounts: fullRemainingAccounts,\n            },\n            {\n              side: toSolitaAuthoritySide(side),\n            },\n            rfqProgram.address\n          ),\n        signers: [],\n        key: 'revertSettlementPreparation',\n      },\n      ...postBuilders\n    );\n};\n"],"names":["Key","revertSettlementPreparationOperation","useOperation","revertSettlementPreparationOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","builder","confirmOptions","_output","builders","latestBlockhash","txs","signedTxs","output","_iterator","_step","signedTx","wrap","_callee$","_context","prev","next","revertSettlementPreparationBuilder","_objectSpread","input","sent","throwIfCanceled","makeConfirmOptionsFinalizedOnMainnet","checkTransactionFits","sendAndConfirm","abrupt","divideToMultipleBuildersThatFit","rpc","getLatestBlockhash","map","b","toTransaction","identity","signAllTransactions","_createForOfIteratorHelper","s","n","done","value","serializeAndSendTransaction","t0","e","f","finish","Error","response","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","responseModel","rfqModel","_args2","_callee2$","_context2","length","undefined","rfqs","findResponseByAddress","address","findRfqByAddress","rfq","model","revertEscrowSettlementPreparationBuilder","side","revertPrintTradeSettlementPreparationBuilder","_x4","_x5","_ref2","_callee3","cvg","programs","_options$payer","payer","rfqProgram","anchorRemainingAccounts","spotInstrumentProgram","sidePreparedLegs","i","instrumentEscrowPda","instrumentProgramAccount","leg","baseAssetMint","legAccounts","spotInstrumentProgramAccount","quoteEscrowPda","quoteAccounts","txBuilder","_args3","_callee3$","_context3","getDefaultFeePayer","PublicKey","t1","getRfq","getSpotInstrument","parseInt","takerPreparedLegs","toString","makerPreparedLegs","InstrumentPdasClient","instrumentEscrow","index","pubkey","legs","getProgramId","isSigner","isWritable","legToBaseAssetMint","tokens","pdas","associatedTokenAccount","mint","owner","maker","taker","TOKEN_PROGRAM_ID","push","concat","quoteEscrow","program","quoteMint","TransactionBuilder","make","setFeePayer","add","instruction","createRevertEscrowSettlementPreparationInstruction","protocol","toSolitaAuthoritySide","signers","key","addComputeBudgetIxsIfNeeded","_x6","_x7","_ref3","_callee4","_TransactionBuilder$m","_options$payer2","_yield$rfqModel$print","remainingAccounts","postBuilders","fullRemainingAccounts","_args4","_callee4$","_context4","printTrade","getRevertPreparations","accounts","prependWithProviderProgram","createRevertPrintTradeSettlementPreparationPreparationInstruction","_toConsumableArray","_x8","_x9"],"mappings":"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"}