{"version":3,"file":"prepareMoreLegsSettlement.cjs","sources":["../../../../../src/plugins/rfqModule/operations/prepareMoreLegsSettlement.ts"],"sourcesContent":["import { PublicKey, AccountMeta, SYSVAR_RENT_PUBKEY } from '@solana/web3.js';\nimport {\n  createPrepareMoreEscrowLegsSettlementInstruction,\n  AuthoritySide,\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  Signer,\n  makeConfirmOptionsFinalizedOnMainnet,\n} from '../../../types';\nimport { Convergence } from '../../../Convergence';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '../../../utils/TransactionBuilder';\nimport { getOrCreateATA } from '../../../utils/ata';\nimport { InstrumentPdasClient } from '../../instrumentModule';\nimport { legToBaseAssetMint } from '@/plugins/instrumentModule';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'PrepareMoreLegsSettlementOperation' as const;\n\n/**\n * Prepares more legs settlement\n *\n * ```ts\n * const rfq = await convergence\n *   .rfqs()\n *   .prepareMoreLegsSettlement({\n *     rfq: rfq.address,\n *     response: rfqResponse.address,\n *     legAmountToPrepare: 2,\n *     sidePreparedLegs: 1\n *   });\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const prepareMoreLegsSettlementOperation =\n  useOperation<PrepareMoreLegsSettlementOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type PrepareMoreLegsSettlementOperation = Operation<\n  typeof Key,\n  PrepareMoreLegsSettlementInput,\n  PrepareMoreLegsSettlementOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type PrepareMoreLegsSettlementInput = {\n  /**\n   * The caller of the instruction as a Signer.\n   *\n   * @defaultValue `convergence.identity()`\n   */\n  caller?: Signer;\n\n  /**\n   * The protocol address.\n   * @defaultValue `convergence.protocol().pdas().protocol()`\n   */\n  protocol?: PublicKey;\n\n  /** The Rfq address. */\n  rfq: PublicKey;\n\n  /** The response address. */\n  response: PublicKey;\n\n  /*\n   * Args\n   */\n\n  /** The number of additional legs to prepare settlement for. */\n  legAmountToPrepare: number;\n\n  /** Optional number of legs already prepared by the caller of this instruction. */\n  sidePreparedLegs?: number;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type PrepareMoreLegsSettlementOutput = {\n  response: SendAndConfirmTransactionResponse;\n};\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const prepareMoreLegsSettlementOperationHandler: OperationHandler<PrepareMoreLegsSettlementOperation> =\n  {\n    handle: async (\n      operation: PrepareMoreLegsSettlementOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<PrepareMoreLegsSettlementOutput> => {\n      const builder = await prepareMoreLegsSettlementBuilder(\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\n      const output = await builder.sendAndConfirm(convergence, confirmOptions);\n      scope.throwIfCanceled();\n\n      return output;\n    },\n  };\n\nexport type PrepareMoreLegsSettlementBuilderParams =\n  PrepareMoreLegsSettlementInput;\n\n/**\n * Prepares more legs settlement\n *\n * ```ts\n * const transactionBuilder = await convergence\n *   .rfqs()\n *   .builders()\n *   .prepareMoreLegsSettlement();\n * ```\n *\n * @group Transaction Builders\n * @category Constructors\n */\nexport const prepareMoreLegsSettlementBuilder = async (\n  convergence: Convergence,\n  params: PrepareMoreLegsSettlementBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder> => {\n  const { programs, payer = convergence.rpc().getDefaultFeePayer() } = options;\n  const rfqProgram = convergence.programs().getRfq(programs);\n  const systemProgram = convergence.programs().getSystem(programs);\n\n  const {\n    caller = convergence.identity(),\n    rfq,\n    response,\n    legAmountToPrepare,\n  } = params;\n\n  let { sidePreparedLegs } = params;\n\n  const anchorRemainingAccounts: AccountMeta[] = [];\n\n  const rfqModel = await convergence.rfqs().findRfqByAddress({ address: rfq });\n  const responseModel = await convergence\n    .rfqs()\n    .findResponseByAddress({ address: response });\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 side =\n    caller.publicKey.toBase58() == responseModel.maker.toBase58()\n      ? AuthoritySide.Maker\n      : AuthoritySide.Taker;\n\n  if (!sidePreparedLegs) {\n    sidePreparedLegs =\n      side == AuthoritySide.Taker\n        ? parseInt(responseModel.takerPreparedLegs.toString())\n        : parseInt(responseModel.makerPreparedLegs.toString());\n  }\n\n  for (\n    let i = sidePreparedLegs;\n    i < sidePreparedLegs + legAmountToPrepare;\n    i++\n  ) {\n    const instrumentProgramAccount: AccountMeta = {\n      pubkey: rfqModel.legs[i].getProgramId(),\n      isSigner: false,\n      isWritable: false,\n    };\n\n    const instrumentEscrowPda = new InstrumentPdasClient(\n      convergence\n    ).instrumentEscrow({\n      response,\n      index: i,\n      rfqModel,\n    });\n\n    const leg = rfqModel.legs[i];\n    const baseAssetMint = await legToBaseAssetMint(convergence, leg);\n\n    const legAccounts: AccountMeta[] = [\n      // `caller\n      {\n        pubkey: caller.publicKey,\n        isSigner: true,\n        isWritable: true,\n      },\n      // `caller_token_account`\n      {\n        pubkey: await getOrCreateATA(\n          convergence,\n          baseAssetMint!.address,\n          caller.publicKey,\n          programs\n        ),\n        isSigner: false,\n        isWritable: true,\n      },\n      // `mint`\n      {\n        pubkey: baseAssetMint!.address,\n        isSigner: false,\n        isWritable: false,\n      },\n      // `escrow`\n      {\n        pubkey: instrumentEscrowPda,\n        isSigner: false,\n        isWritable: true,\n      },\n      { pubkey: systemProgram.address, isSigner: false, isWritable: false },\n      { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n      { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n    ];\n    anchorRemainingAccounts.push(instrumentProgramAccount, ...legAccounts);\n  }\n\n  const txBuilder = TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createPrepareMoreEscrowLegsSettlementInstruction(\n        {\n          caller: caller.publicKey,\n          protocol: convergence.protocol().pdas().protocol(),\n          rfq,\n          response,\n          anchorRemainingAccounts,\n        },\n        {\n          side,\n          legAmountToPrepare,\n        },\n        rfqProgram.address\n      ),\n      signers: [caller],\n      key: 'prepareMoreLegsSettlement',\n    });\n\n  await addComputeBudgetIxsIfNeeded(txBuilder, convergence);\n  return txBuilder;\n};\n"],"names":["Key","prepareMoreLegsSettlementOperation","useOperation","prepareMoreLegsSettlementOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","builder","confirmOptions","output","wrap","_callee$","_context","prev","next","prepareMoreLegsSettlementBuilder","_objectSpread","input","sent","throwIfCanceled","makeConfirmOptionsFinalizedOnMainnet","sendAndConfirm","abrupt","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","programs","_options$payer","payer","rfqProgram","systemProgram","_params$caller","caller","rfq","response","legAmountToPrepare","sidePreparedLegs","anchorRemainingAccounts","rfqModel","responseModel","side","i","instrumentProgramAccount","instrumentEscrowPda","leg","baseAssetMint","legAccounts","txBuilder","_args2","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","getRfq","getSystem","identity","rfqs","findRfqByAddress","address","findResponseByAddress","model","Error","publicKey","toBase58","maker","AuthoritySide","Maker","Taker","parseInt","takerPreparedLegs","toString","makerPreparedLegs","pubkey","legs","getProgramId","isSigner","isWritable","InstrumentPdasClient","instrumentEscrow","index","legToBaseAssetMint","t0","getOrCreateATA","t1","t2","t3","t4","t5","t6","TOKEN_PROGRAM_ID","t7","SYSVAR_RENT_PUBKEY","push","concat","TransactionBuilder","make","setFeePayer","add","instruction","createPrepareMoreEscrowLegsSettlementInstruction","protocol","pdas","signers","key","addComputeBudgetIxsIfNeeded","_x4","_x5"],"mappings":"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"}