{"version":3,"file":"changeBaseAssetParameters.cjs","sources":["../../../../../src/plugins/protocolModule/operations/changeBaseAssetParameters.ts"],"sourcesContent":["import { createChangeBaseAssetParametersInstruction } from '@convergence-rfq/rfq';\nimport { PublicKey } from '@solana/web3.js';\n\nimport { SendAndConfirmTransactionResponse } from '../../rpcModule';\nimport {\n  RiskCategory,\n  toSolitaRiskCategory,\n  OracleSource,\n  toSolitaOracleSource,\n} from '../models/BaseAsset';\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 { baseAssetsCache } from '../cache';\n\nconst Key = 'changeBaseAssetParametersOperation' as const;\n\n/**\n * @group Operations\n * @category Constructors\n */\nexport const changeBaseAssetParametersOperation =\n  useOperation<ChangeBaseAssetParametersOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type ChangeBaseAssetParametersOperation = Operation<\n  typeof Key,\n  ChangeBaseAssetParametersInput,\n  ChangeBaseAssetParametersOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type ChangeBaseAssetParametersInput = {\n  index: number;\n\n  enabled?: boolean;\n\n  riskCategory?: RiskCategory;\n\n  /**\n   * If this parameter is missing, oracle source would be unchanged\n   * If a null value is passed, unset it\n   */\n  oracleSource?: OracleSource;\n\n  /**\n   * If this parameter is missing, switchboard oracle would be unchanged\n   * If a null value is passed, unset it\n   */\n  switchboardOracle?: PublicKey | null;\n\n  /**\n   * If this parameter is missing, pyth oracle would be unchanged\n   * If a null value is passed, unset it\n   */\n  pythOracle?: PublicKey | null;\n\n  /**\n   * If this parameter is missing, in place price would be unchanged\n   * If a null value is passed, unset it\n   */\n  inPlacePrice?: number | null;\n\n  strict?: boolean;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type ChangeBaseAssetParametersOutput = {\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 changeBaseAssetParametersOperationHandler: OperationHandler<ChangeBaseAssetParametersOperation> =\n  {\n    handle: async (\n      operation: ChangeBaseAssetParametersOperation,\n      convergence: Convergence,\n      scope: OperationScope\n    ): Promise<ChangeBaseAssetParametersOutput> => {\n      scope.throwIfCanceled();\n\n      const builder = changeBaseAssetParametersBuilder(\n        convergence,\n        operation.input,\n        scope\n      );\n      const { response } = await builder.sendAndConfirm(\n        convergence,\n        scope.confirmOptions\n      );\n      baseAssetsCache.clear();\n\n      return { response };\n    },\n  };\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type ChangeBaseAssetParametersBuilderParams =\n  ChangeBaseAssetParametersInput;\n\n/**\n * @group Transaction Builders\n * @category Constructors\n */\nexport const changeBaseAssetParametersBuilder = (\n  cvg: Convergence,\n  params: ChangeBaseAssetParametersBuilderParams,\n  options: TransactionBuilderOptions = {}\n): TransactionBuilder => {\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    index,\n    enabled = null,\n    riskCategory = null,\n    oracleSource = null,\n    switchboardOracle,\n    pythOracle,\n    inPlacePrice,\n    strict = null,\n  } = params;\n\n  const baseAsset = cvg.protocol().pdas().baseAsset({ index });\n\n  const wrapInCustomOption = <T>(value: T | undefined) =>\n    value !== undefined\n      ? { __kind: 'Some' as const, value }\n      : { __kind: 'None' as const };\n\n  return TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createChangeBaseAssetParametersInstruction(\n        {\n          authority: cvg.identity().publicKey,\n          protocol: protocolPda,\n          baseAsset,\n        },\n        {\n          riskCategory: riskCategory && toSolitaRiskCategory(riskCategory),\n          enabled,\n          oracleSource: oracleSource && toSolitaOracleSource(oracleSource),\n          switchboardOracle: wrapInCustomOption(switchboardOracle),\n          pythOracle: wrapInCustomOption(pythOracle),\n          inPlacePrice: wrapInCustomOption(inPlacePrice),\n          strict,\n        },\n        rfqProgram.address\n      ),\n      signers: [cvg.identity()],\n      key: 'changeBaseAssetParameters',\n    });\n};\n"],"names":["Key","changeBaseAssetParametersOperation","useOperation","changeBaseAssetParametersOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","convergence","scope","builder","_yield$builder$sendAn","response","wrap","_callee$","_context","prev","next","throwIfCanceled","changeBaseAssetParametersBuilder","input","sendAndConfirm","confirmOptions","sent","baseAssetsCache","clear","abrupt","stop","_x","_x2","_x3","apply","arguments","cvg","params","options","length","undefined","programs","_options$payer","payer","rpc","getDefaultFeePayer","rfqProgram","getRfq","protocolPda","protocol","pdas","index","_params$enabled","enabled","_params$riskCategory","riskCategory","_params$oracleSource","oracleSource","switchboardOracle","pythOracle","inPlacePrice","_params$strict","strict","baseAsset","wrapInCustomOption","value","__kind","TransactionBuilder","make","setFeePayer","add","instruction","createChangeBaseAssetParametersInstruction","authority","identity","publicKey","toSolitaRiskCategory","toSolitaOracleSource","address","signers","key"],"mappings":"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"}