{"version":3,"file":"closeProtocol.mjs","sources":["../../../../../src/plugins/protocolModule/operations/closeProtocol.ts"],"sourcesContent":["import { createCloseProtocolStateInstruction } 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  Signer,\n} from '../../../types';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '../../../utils/TransactionBuilder';\nimport { protocolCache } from '../cache';\n\nconst Key = 'CloseProtocolOperation' as const;\n\n/**\n * Add an BaseAsset\n *\n * ```ts\n * await convergence\n *   .rfqs()\n *   .addBaseAsset({ address };\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const closeProtocolOperation = useOperation<CloseProtocolOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type CloseProtocolOperation = Operation<\n  typeof Key,\n  CloseProtocolInput,\n  CloseProtocolOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type CloseProtocolInput =\n  | {\n      /**\n       * The owner of the protocol.\n       */\n      authority?: Signer;\n\n      /**\n       * The protocol to add the BaseAsset to.\n       */\n      protocol?: PublicKey;\n    }\n  | undefined;\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type CloseProtocolOutput = {\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 closeProtocolOperationHandler: OperationHandler<CloseProtocolOperation> =\n  {\n    handle: async (\n      operation: CloseProtocolOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<CloseProtocolOutput> => {\n      scope.throwIfCanceled();\n\n      protocolCache.clear();\n\n      const builder = closeProtocolBuilder(convergence, operation.input, scope);\n      const { response } = await builder.sendAndConfirm(\n        convergence,\n        scope.confirmOptions\n      );\n\n      return { response };\n    },\n  };\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type CloseProtocolBuilderParams = CloseProtocolInput;\n\n/**\n * Adds an BaseAsset\n *\n * ```ts\n * const transactionBuilder = convergence\n *   .rfqs()\n *   .builders()\n *   .addBaseAsset({ address });\n * ```\n *\n * @group Transaction Builders\n * @category Constructors\n */\nexport const closeProtocolBuilder = (\n  convergence: Convergence,\n  params: CloseProtocolBuilderParams,\n  options: TransactionBuilderOptions = {}\n): TransactionBuilder => {\n  const { programs, payer = convergence.rpc().getDefaultFeePayer() } = options;\n  const {\n    protocol = convergence.protocol().pdas().protocol(),\n    authority = payer,\n  } = params || {};\n\n  const rfqProgram = convergence.programs().getRfq(programs);\n\n  return TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createCloseProtocolStateInstruction(\n        {\n          authority: authority.publicKey,\n          protocol,\n        },\n        rfqProgram.address\n      ),\n      signers: [authority],\n      key: 'closeProtocolState',\n    });\n};\n"],"names":["Key","closeProtocolOperation","useOperation","closeProtocolOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","builder","_yield$builder$sendAn","response","wrap","_callee$","_context","prev","next","throwIfCanceled","protocolCache","clear","closeProtocolBuilder","input","sendAndConfirm","confirmOptions","sent","abrupt","stop","_x","_x2","_x3","apply","arguments","params","options","length","undefined","programs","_options$payer","payer","rpc","getDefaultFeePayer","_ref","_ref$protocol","protocol","pdas","_ref$authority","authority","rfqProgram","getRfq","TransactionBuilder","make","setFeePayer","add","instruction","createCloseProtocolStateInstruction","publicKey","address","signers","key"],"mappings":"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"}