{"version":3,"file":"addPrintTradeProvider.cjs","sources":["../../../../../src/plugins/protocolModule/operations/addPrintTradeProvider.ts"],"sourcesContent":["import { createAddPrintTradeProviderInstruction } from '@convergence-rfq/rfq';\nimport { PublicKey } from '@solana/web3.js';\n\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\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 { protocolCache } from '../cache';\n\nconst Key = 'AddPrintTradeProviderOperation' as const;\n\n/**\n * @group Operations\n * @category Constructors\n */\nexport const addPrintTradeProviderOperation =\n  useOperation<AddPrintTradeProviderOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type AddPrintTradeProviderOperation = Operation<\n  typeof Key,\n  AddPrintTradeProviderInput,\n  AddPrintTradeProviderOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type AddPrintTradeProviderInput = {\n  /**\n   * The print trade provider program to add to the protocol.\n   */\n  printTradeProviderProgram: PublicKey;\n\n  /*\n   * If true, settlement could expire and be cancelled if both parties have prepared but haven't settled\n   */\n  settlementCanExpire: boolean;\n\n  validateResponseAccountAmount: number;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type AddPrintTradeProviderOutput = {\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 addPrintTradeProviderOperationHandler: OperationHandler<AddPrintTradeProviderOperation> =\n  {\n    handle: async (\n      operation: AddPrintTradeProviderOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<AddPrintTradeProviderOutput> => {\n      scope.throwIfCanceled();\n\n      protocolCache.clear();\n\n      return addPrintTradeProviderBuilder(\n        convergence,\n        operation.input,\n        scope\n      ).sendAndConfirm(convergence, scope.confirmOptions);\n    },\n  };\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type AddPrintTradeProviderBuilderParams = AddPrintTradeProviderInput;\n\n/**\n * @group Transaction Builders\n * @category Constructors\n */\nexport const addPrintTradeProviderBuilder = (\n  cvg: Convergence,\n  params: AddPrintTradeProviderBuilderParams,\n  options: TransactionBuilderOptions = {}\n): TransactionBuilder => {\n  const { programs, payer = cvg.rpc().getDefaultFeePayer() } = options;\n  const rfqProgram = cvg.programs().getRfq(programs);\n  const {\n    printTradeProviderProgram,\n    settlementCanExpire,\n    validateResponseAccountAmount,\n  } = params;\n  const authority = cvg.identity();\n\n  // Clear the protocol cache so that the protocol is reloaded\n  protocolCache.clear();\n\n  return TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createAddPrintTradeProviderInstruction(\n        {\n          authority: authority.publicKey,\n          protocol: cvg.protocol().pdas().protocol(),\n          printTradeProviderProgram,\n        },\n        {\n          settlementCanExpire,\n          validateResponseAccountAmount,\n        },\n        rfqProgram.address\n      ),\n      signers: [authority],\n      key: 'addPrintTradeProvider',\n    });\n};\n"],"names":["Key","addPrintTradeProviderOperation","useOperation","addPrintTradeProviderOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","wrap","_callee$","_context","prev","next","throwIfCanceled","protocolCache","clear","abrupt","addPrintTradeProviderBuilder","input","sendAndConfirm","confirmOptions","stop","_x","_x2","_x3","apply","arguments","cvg","params","options","length","undefined","programs","_options$payer","payer","rpc","getDefaultFeePayer","rfqProgram","getRfq","printTradeProviderProgram","settlementCanExpire","validateResponseAccountAmount","authority","identity","TransactionBuilder","make","setFeePayer","add","instruction","createAddPrintTradeProviderInstruction","publicKey","protocol","pdas","address","signers","key"],"mappings":"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"}