{"version":3,"file":"registerMint.cjs","sources":["../../../../../src/plugins/protocolModule/operations/registerMint.ts"],"sourcesContent":["import { createRegisterMintInstruction } from '@convergence-rfq/rfq';\nimport { PublicKey } from '@solana/web3.js';\n\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\nimport {\n  TransactionBuilder,\n  TransactionBuilderOptions,\n} from '../../../utils/TransactionBuilder';\nimport {\n  makeConfirmOptionsFinalizedOnMainnet,\n  Operation,\n  OperationHandler,\n  OperationScope,\n  useOperation,\n  Signer,\n} from '../../../types';\nimport { Convergence } from '../../../Convergence';\nimport { registeredMintsCache } from '../cache';\n\nconst Key = 'RegisterMintOperation' as const;\n\n/**\n * Registers a mint\n *\n * ```ts\n * const { protocol } = await convergence\n *   .protocol()\n *   .initialize();\n * ```\n *\n * @group Operations\n * @category Constructors\n */\nexport const registerMintOperation = useOperation<RegisterMintOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type RegisterMintOperation = Operation<\n  typeof Key,\n  RegisterMintInput,\n  RegisterMintOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type RegisterMintInput = {\n  /**\n   * The owner of the protocol.\n   */\n  authority?: Signer;\n\n  /**\n   * The protocol address.\n   *\n   * @defaultValue `convergence.protocol().pdas().get()`\n   */\n  protocol?: PublicKey;\n\n  /**\n   * The protocol token mint.\n   */\n  mint: PublicKey;\n\n  /**\n   * Optional base asset index only needs to be passed if the mint is a base asset.\n   *\n   * @defaultValue `-1`\n   */\n  baseAssetIndex?: number;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type RegisterMintOutput = {\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 registerMintOperationHandler: OperationHandler<RegisterMintOperation> =\n  {\n    handle: async (\n      operation: RegisterMintOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ) => {\n      const builder = await registerMintBuilder(\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      const output = await builder.sendAndConfirm(convergence, confirmOptions);\n      scope.throwIfCanceled();\n\n      registeredMintsCache.clear();\n\n      return { ...output };\n    },\n  };\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type RegisterMintBuilderParams = RegisterMintInput;\n\n/**\n * @group Transaction Builders\n * @category Contexts\n */\nexport type RegisterMintBuilderContext = RegisterMintOutput;\n\n/**\n * Registers a mint.\n *\n * ```ts\n * const transactionBuilder = await convergence\n *   .protocol()\n *   .builders()\n *   .create();\n * ```\n *\n * @group Transaction Builders\n * @category Constructors\n */\nexport const registerMintBuilder = async (\n  convergence: Convergence,\n  params: RegisterMintBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder<RegisterMintBuilderContext>> => {\n  const { programs, payer = convergence.rpc().getDefaultFeePayer() } = options;\n  const {\n    authority = convergence.identity(),\n    mint,\n    baseAssetIndex = -1,\n  } = params;\n\n  const systemProgram = convergence.programs().getSystem(programs);\n  const rfqProgram = convergence.programs().getRfq();\n\n  const protocol = convergence.protocol().pdas().protocol();\n  const mintInfo = convergence.protocol().pdas().mintInfo({ mint });\n\n  let baseAsset: PublicKey;\n  if (baseAssetIndex >= 0) {\n    baseAsset = convergence\n      .protocol()\n      .pdas()\n      .baseAsset({ index: baseAssetIndex });\n  } else {\n    baseAsset = PublicKey.default;\n  }\n\n  return TransactionBuilder.make<RegisterMintBuilderContext>()\n    .setFeePayer(payer)\n    .add({\n      instruction: createRegisterMintInstruction(\n        {\n          authority: authority.publicKey,\n          protocol,\n          mintInfo,\n          baseAsset: baseAssetIndex >= 0 ? baseAsset : PublicKey.default,\n          mint,\n          systemProgram: systemProgram.address,\n        },\n        rfqProgram.address\n      ),\n      signers: [payer],\n      key: 'registerMint',\n    });\n};\n"],"names":["Key","registerMintOperation","useOperation","registerMintOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","builder","confirmOptions","output","wrap","_callee$","_context","prev","next","registerMintBuilder","_objectSpread","input","sent","throwIfCanceled","makeConfirmOptionsFinalizedOnMainnet","sendAndConfirm","registeredMintsCache","clear","abrupt","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","programs","_options$payer","payer","_params$authority","authority","mint","_params$baseAssetInde","baseAssetIndex","systemProgram","rfqProgram","protocol","mintInfo","baseAsset","_args2","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","identity","getSystem","getRfq","pdas","index","PublicKey","TransactionBuilder","make","setFeePayer","add","instruction","createRegisterMintInstruction","publicKey","address","signers","key","_x4","_x5"],"mappings":"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"}