{"version":3,"file":"addLegsToRfq.cjs","sources":["../../../../../src/plugins/rfqModule/operations/addLegsToRfq.ts"],"sourcesContent":["import { createAddLegsToRfqInstruction } from '@convergence-rfq/rfq';\nimport { PublicKey } from '@solana/web3.js';\n\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\nimport {\n  instrumentsToLegAccounts,\n  instrumentsToLegs,\n  legsToBaseAssetAccounts,\n} from '../helpers';\nimport { Convergence } from '../../../Convergence';\nimport {\n  Operation,\n  OperationHandler,\n  OperationScope,\n  useOperation,\n  Signer,\n} from '../../../types';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '../../../utils/TransactionBuilder';\nimport { LegInstrument } from '../../../plugins/instrumentModule';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'AddLegsToRfqOperation' as const;\n\n/**\n * Adds Legs to an existing Rfq.\n *\n * ```ts\n * await convergence\n *   .rfqs()\n *   .addLegsToRfq({\n *     rfq: <publicKey>,\n *     instruments: [\n *       await SpotLegInstrument.create(convergence, baseMint, amount, 'bid'),\n *     ],\n *   });\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const addLegsToRfqOperation = useOperation<AddLegsToRfqOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type AddLegsToRfqOperation = Operation<\n  typeof Key,\n  AddLegsToRfqInput,\n  AddLegsToRfqOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type AddLegsToRfqInput = {\n  /** The address of the Rfq account. */\n  rfq: PublicKey;\n\n  /**\n   * The owner of the Rfq as a Signer.\n   *\n   * @defaultValue `convergence.identity()`\n   */\n  taker?: Signer;\n\n  /** The instruments of the order, used to construct legs. */\n  instruments: LegInstrument[];\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type AddLegsToRfqOutput = {\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 addLegsToRfqOperationHandler: OperationHandler<AddLegsToRfqOperation> =\n  {\n    handle: async (\n      operation: AddLegsToRfqOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<AddLegsToRfqOutput> => {\n      const builder = await addLegsToRfqBuilder(\n        convergence,\n        {\n          ...operation.input,\n        },\n        scope\n      );\n      const output = await builder.sendAndConfirm(\n        convergence,\n        scope.confirmOptions\n      );\n      scope.throwIfCanceled();\n\n      return { ...output };\n    },\n  };\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type AddLegsToRfqBuilderParams = AddLegsToRfqInput;\n\n/**\n * Adds Legs to an existing Rfq.\n *\n * ```ts\n * const transactionBuilder = convergences\n *   .rfqs()\n *   .builders()\n *   .addLegsToRfq();\n * ```\n *\n * @group Transaction Builders\n * @category Constructors\n */\nexport const addLegsToRfqBuilder = async (\n  convergence: Convergence,\n  params: AddLegsToRfqBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder> => {\n  const { programs, payer = convergence.rpc().getDefaultFeePayer() } = options;\n  const protocolPdaClient = convergence.protocol().pdas();\n  const protocol = protocolPdaClient.protocol();\n  const { taker = convergence.identity(), instruments, rfq } = params;\n\n  const legs = instrumentsToLegs(instruments);\n  const legAccounts = await instrumentsToLegAccounts(instruments);\n\n  const baseAssetAccounts = legsToBaseAssetAccounts(convergence, legs);\n\n  const rfqProgram = convergence.programs().getRfq(programs);\n\n  const txBuilder = TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createAddLegsToRfqInstruction(\n        {\n          taker: taker.publicKey,\n          protocol,\n          rfq,\n          anchorRemainingAccounts: [...baseAssetAccounts, ...legAccounts],\n        },\n        {\n          legs,\n        },\n        rfqProgram.address\n      ),\n      signers: [taker],\n      key: 'addLegsToRfq',\n    });\n\n  await addComputeBudgetIxsIfNeeded(txBuilder, convergence, true);\n  return txBuilder;\n};\n"],"names":["Key","addLegsToRfqOperation","useOperation","addLegsToRfqOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","builder","output","wrap","_callee$","_context","prev","next","addLegsToRfqBuilder","_objectSpread","input","sent","sendAndConfirm","confirmOptions","throwIfCanceled","abrupt","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","programs","_options$payer","payer","protocolPdaClient","protocol","_params$taker","taker","instruments","rfq","legs","legAccounts","baseAssetAccounts","rfqProgram","txBuilder","_args2","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","pdas","identity","instrumentsToLegs","instrumentsToLegAccounts","legsToBaseAssetAccounts","getRfq","TransactionBuilder","make","setFeePayer","add","instruction","createAddLegsToRfqInstruction","publicKey","anchorRemainingAccounts","concat","_toConsumableArray","address","signers","key","addComputeBudgetIxsIfNeeded","_x4","_x5"],"mappings":"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"}