{"version":3,"file":"addBaseAsset.mjs","sources":["../../../../../src/plugins/protocolModule/operations/addBaseAsset.ts"],"sourcesContent":["import { createAddBaseAssetInstruction } from '@convergence-rfq/rfq';\nimport { PublicKey } from '@solana/web3.js';\n\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\nimport {\n  OracleSource,\n  RiskCategory,\n  toSolitaOracleSource,\n  toSolitaRiskCategory,\n} from '../models/BaseAsset';\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 { baseAssetsCache } from '../cache';\nimport { findVacantBaseAssetIndex } from '../helpers';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'AddBaseAssetOperation' 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 addBaseAssetOperation = useOperation<AddBaseAssetOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type AddBaseAssetOperation = Operation<\n  typeof Key,\n  AddBaseAssetInput,\n  AddBaseAssetOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type AddBaseAssetInput = {\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  /**\n   * The index of the BaseAsset.\n   */\n  index?: number;\n\n  ticker: string;\n\n  riskCategory?: RiskCategory;\n\n  oracleSource?: OracleSource;\n\n  inPlacePrice?: number;\n\n  pythOracle?: PublicKey;\n\n  switchboardOracle?: PublicKey;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type AddBaseAssetOutput = {\n  /** The blockchain response from sending and confirming the transaction. */\n  response: SendAndConfirmTransactionResponse;\n\n  baseAssetIndex: number;\n};\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const addBaseAssetOperationHandler: OperationHandler<AddBaseAssetOperation> =\n  {\n    handle: async (\n      operation: AddBaseAssetOperation,\n      cvg: Convergence,\n      scope: OperationScope\n    ): Promise<AddBaseAssetOutput> => {\n      scope.throwIfCanceled();\n\n      const { builder, baseAssetIndex } = await addBaseAssetBuilder(\n        cvg,\n        operation.input,\n        scope\n      );\n      const { response } = await builder.sendAndConfirm(\n        cvg,\n        scope.confirmOptions\n      );\n      baseAssetsCache.clear();\n\n      return { response, baseAssetIndex };\n    },\n  };\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type AddBaseAssetBuilderParams = AddBaseAssetInput;\n\nexport type AddBaseAssetBuilderResult = {\n  builder: TransactionBuilder;\n  baseAssetIndex: number;\n};\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 addBaseAssetBuilder = async (\n  cvg: Convergence,\n  params: AddBaseAssetBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<AddBaseAssetBuilderResult> => {\n  const { programs, payer = cvg.rpc().getDefaultFeePayer() } = options;\n  const rfqProgram = cvg.programs().getRfq(programs);\n  const protocolPda = cvg.protocol().pdas().protocol();\n  const {\n    protocol = protocolPda,\n    authority,\n    index = await findVacantBaseAssetIndex(cvg),\n    ticker,\n    riskCategory = 'low',\n    oracleSource = 'in-place',\n    inPlacePrice = null,\n    pythOracle = null,\n    switchboardOracle = null,\n  } = params;\n\n  const baseAsset = cvg.protocol().pdas().baseAsset({ index });\n\n  const builder = TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createAddBaseAssetInstruction(\n        {\n          authority: authority.publicKey,\n          protocol,\n          baseAsset,\n        },\n        {\n          index: { value: index },\n          ticker,\n          riskCategory: toSolitaRiskCategory(riskCategory),\n          oracleSource: toSolitaOracleSource(oracleSource),\n          inPlacePrice,\n          pythOracle,\n          switchboardOracle,\n        },\n        rfqProgram.address\n      ),\n      signers: [authority],\n      key: 'addBaseAsset',\n    });\n  await addComputeBudgetIxsIfNeeded(builder, cvg);\n  return {\n    builder,\n    baseAssetIndex: index,\n  };\n};\n"],"names":["Key","addBaseAssetOperation","useOperation","addBaseAssetOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","cvg","scope","_yield$addBaseAssetBu","builder","baseAssetIndex","_yield$builder$sendAn","response","wrap","_callee$","_context","prev","next","throwIfCanceled","addBaseAssetBuilder","input","sent","sendAndConfirm","confirmOptions","baseAssetsCache","clear","abrupt","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","programs","_options$payer","payer","rfqProgram","protocolPda","_params$protocol","protocol","authority","_params$index","index","ticker","_params$riskCategory","riskCategory","_params$oracleSource","oracleSource","_params$inPlacePrice","inPlacePrice","_params$pythOracle","pythOracle","_params$switchboardOr","switchboardOracle","baseAsset","_args2","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","getRfq","pdas","findVacantBaseAssetIndex","t0","TransactionBuilder","make","setFeePayer","add","instruction","createAddBaseAssetInstruction","publicKey","value","toSolitaRiskCategory","toSolitaOracleSource","address","signers","key","addComputeBudgetIxsIfNeeded","_x4","_x5"],"mappings":"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"}