{"version":3,"file":"addUserAsset.mjs","sources":["../../../../../src/plugins/protocolModule/operations/addUserAsset.ts"],"sourcesContent":["import { createAddUserAssetInstruction } 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 { baseAssetsCache, registeredMintsCache } from '../cache';\nimport { findVacantBaseAssetIndex } from '../helpers';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nconst Key = 'AddUserAssetOperation' as const;\n\nexport const addUserAssetOperation = useOperation<AddUserAssetOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type AddUserAssetOperation = Operation<\n  typeof Key,\n  AddUserAssetInput,\n  AddUserAssetOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type AddUserAssetInput = {\n  ticker: string;\n\n  mint: PublicKey;\n\n  baseAssetIndex?: number;\n};\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type AddUserAssetOutput = {\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 addUserAssetOperationHandler: OperationHandler<AddUserAssetOperation> =\n  {\n    handle: async (\n      operation: AddUserAssetOperation,\n      cvg: Convergence,\n      scope: OperationScope\n    ): Promise<AddUserAssetOutput> => {\n      scope.throwIfCanceled();\n\n      const { builder, baseAssetIndex } = await addUserAssetBuilder(\n        cvg,\n        operation.input,\n        scope\n      );\n      const { response } = await builder.sendAndConfirm(\n        cvg,\n        scope.confirmOptions\n      );\n      baseAssetsCache.clear();\n      registeredMintsCache.clear();\n\n      return { response, baseAssetIndex };\n    },\n  };\n\n/**\n * @group Transaction Builders\n * @category Inputs\n */\nexport type AddUserAssetBuilderParams = AddUserAssetInput;\n\nexport type AddUserAssetBuilderResult = {\n  builder: TransactionBuilder;\n  baseAssetIndex: number;\n};\n\n/**\n * Adds an UserAsset\n *\n * ```ts\n * const transactionBuilder = convergence\n *   .rfqs()\n *   .builders()\n *   .addUserAsset({ address });\n * ```\n *\n * @group Transaction Builders\n * @category Constructors\n */\nexport const addUserAssetBuilder = async (\n  cvg: Convergence,\n  params: AddUserAssetBuilderParams,\n  options: TransactionBuilderOptions = {}\n): Promise<AddUserAssetBuilderResult> => {\n  const { programs, payer = cvg.rpc().getDefaultFeePayer() } = options;\n  const rfqProgram = cvg.programs().getRfq(programs);\n  const protocolPda = cvg.protocol().pdas().protocol();\n  const protocol = await cvg.protocol().get();\n  const {\n    ticker,\n    mint,\n    baseAssetIndex = await findVacantBaseAssetIndex(cvg),\n  } = params;\n\n  const baseAsset = cvg.protocol().pdas().baseAsset({ index: baseAssetIndex });\n  const mintInfo = cvg.protocol().pdas().mintInfo({ mint });\n\n  let mintRegistered = false;\n  try {\n    await cvg.protocol().findRegisteredMintByAddress({ address: mintInfo });\n    mintRegistered = true;\n  } catch (e) {\n    //\n  }\n  if (mintRegistered) {\n    throw new Error(`Mint ${mint.toString()} had been already registered`);\n  }\n\n  const builder = TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createAddUserAssetInstruction(\n        {\n          creator: cvg.identity().publicKey,\n          authority: protocol.authority,\n          protocol: protocolPda,\n          baseAsset,\n          mintInfo,\n          mint,\n        },\n        {\n          index: { value: baseAssetIndex },\n          ticker,\n        },\n        rfqProgram.address\n      ),\n      signers: [cvg.identity()],\n      key: 'addUserAsset',\n    });\n  await addComputeBudgetIxsIfNeeded(builder, cvg);\n  return {\n    builder,\n    baseAssetIndex,\n  };\n};\n"],"names":["Key","addUserAssetOperation","useOperation","addUserAssetOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","cvg","scope","_yield$addUserAssetBu","builder","baseAssetIndex","_yield$builder$sendAn","response","wrap","_callee$","_context","prev","next","throwIfCanceled","addUserAssetBuilder","input","sent","sendAndConfirm","confirmOptions","baseAssetsCache","clear","registeredMintsCache","abrupt","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","programs","_options$payer","payer","rfqProgram","protocolPda","protocol","ticker","mint","_params$baseAssetInde","baseAsset","mintInfo","mintRegistered","_args2","_callee2$","_context2","length","undefined","rpc","getDefaultFeePayer","getRfq","pdas","get","findVacantBaseAssetIndex","t0","index","findRegisteredMintByAddress","address","t1","Error","concat","toString","TransactionBuilder","make","setFeePayer","add","instruction","createAddUserAssetInstruction","creator","identity","publicKey","authority","value","signers","key","addComputeBudgetIxsIfNeeded","_x4","_x5"],"mappings":";;;;;;;;AAmBA,IAAMA,GAAG,GAAG,uBAAgC,CAAA;IAE/BC,qBAAqB,GAAGC,YAAY,CAAwBF,GAAG,EAAC;;AAE7E;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACO,IAAMG,4BAAqE,GAChF;EACEC,MAAM,EAAA,YAAA;AAAA,IAAA,IAAAC,OAAA,GAAAC,iBAAA,eAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAE,SAAAC,OACNC,CAAAA,SAAgC,EAChCC,GAAgB,EAChBC,KAAqB,EAAA;MAAA,IAAAC,qBAAA,EAAAC,OAAA,EAAAC,cAAA,EAAAC,qBAAA,EAAAC,QAAA,CAAA;AAAA,MAAA,OAAAV,mBAAA,EAAA,CAAAW,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;YAErBV,KAAK,CAACW,eAAe,EAAE,CAAA;AAACH,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;YAAA,OAEkBE,mBAAmB,CAC3Db,GAAG,EACHD,SAAS,CAACe,KAAK,EACfb,KACF,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAAAC,qBAAA,GAAAO,QAAA,CAAAM,IAAA,CAAA;YAJOZ,OAAO,GAAAD,qBAAA,CAAPC,OAAO,CAAA;YAAEC,cAAc,GAAAF,qBAAA,CAAdE,cAAc,CAAA;AAAAK,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;YAAA,OAKJR,OAAO,CAACa,cAAc,CAC/ChB,GAAG,EACHC,KAAK,CAACgB,cACR,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAAAZ,qBAAA,GAAAI,QAAA,CAAAM,IAAA,CAAA;YAHOT,QAAQ,GAAAD,qBAAA,CAARC,QAAQ,CAAA;YAIhBY,eAAe,CAACC,KAAK,EAAE,CAAA;YACvBC,oBAAoB,CAACD,KAAK,EAAE,CAAA;YAAC,OAAAV,QAAA,CAAAY,MAAA,CAEtB,QAAA,EAAA;AAAEf,cAAAA,QAAQ,EAARA,QAAQ;AAAEF,cAAAA,cAAc,EAAdA,cAAAA;aAAgB,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAK,QAAA,CAAAa,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAxB,OAAA,CAAA,CAAA;KACpC,CAAA,CAAA,CAAA;AAAA,IAAA,SAAAL,MAAA8B,CAAAA,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,MAAA,OAAA/B,OAAA,CAAAgC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAAlC,MAAA,CAAA;AAAA,GAAA,EAAA;AACH,EAAC;;AAEH;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaoB,mBAAmB,gBAAA,YAAA;AAAA,EAAA,IAAAe,IAAA,GAAAjC,iBAAA,eAAAC,mBAAA,EAAA,CAAAC,IAAA,CAAG,SAAAgC,QAAAA,CACjC7B,GAAgB,EAChB8B,MAAiC,EAAA;AAAA,IAAA,IAAAC,OAAA;MAAAC,QAAA;MAAAC,cAAA;MAAAC,KAAA;MAAAC,UAAA;MAAAC,WAAA;MAAAC,QAAA;MAAAC,MAAA;MAAAC,IAAA;MAAAC,qBAAA;MAAApC,cAAA;MAAAqC,SAAA;MAAAC,QAAA;MAAAC,cAAA;MAAAxC,OAAA;AAAAyC,MAAAA,MAAA,GAAAjB,SAAA,CAAA;AAAA,IAAA,OAAA/B,mBAAA,EAAA,CAAAW,IAAA,CAAA,SAAAsC,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAApC,IAAA,GAAAoC,SAAA,CAAAnC,IAAA;AAAA,QAAA,KAAA,CAAA;AACjCoB,UAAAA,OAAkC,GAAAa,MAAA,CAAAG,MAAA,GAAAH,CAAAA,IAAAA,MAAA,CAAAI,CAAAA,CAAAA,KAAAA,SAAA,GAAAJ,MAAA,CAAG,CAAA,CAAA,GAAA,EAAE,CAAA;UAE/BZ,QAAQ,GAA6CD,OAAO,CAA5DC,QAAQ,EAAAC,cAAA,GAA6CF,OAAO,CAAlDG,KAAK,EAALA,KAAK,GAAAD,cAAA,KAAA,KAAA,CAAA,GAAGjC,GAAG,CAACiD,GAAG,EAAE,CAACC,kBAAkB,EAAE,GAAAjB,cAAA,CAAA;UAClDE,UAAU,GAAGnC,GAAG,CAACgC,QAAQ,EAAE,CAACmB,MAAM,CAACnB,QAAQ,CAAC,CAAA;AAC5CI,UAAAA,WAAW,GAAGpC,GAAG,CAACqC,QAAQ,EAAE,CAACe,IAAI,EAAE,CAACf,QAAQ,EAAE,CAAA;AAAAS,UAAAA,SAAA,CAAAnC,IAAA,GAAA,CAAA,CAAA;UAAA,OAC7BX,GAAG,CAACqC,QAAQ,EAAE,CAACgB,GAAG,EAAE,CAAA;AAAA,QAAA,KAAA,CAAA;UAArChB,QAAQ,GAAAS,SAAA,CAAA/B,IAAA,CAAA;UAEZuB,MAAM,GAGJR,MAAM,CAHRQ,MAAM,CAAA;UACNC,IAAI,GAEFT,MAAM,CAFRS,IAAI,CAAA;UAAAC,qBAAA,GAEFV,MAAM,CADR1B,cAAc,CAAA;AAAA,UAAA,IAAA,EAAAoC,qBAAA,KAAA,KAAA,CAAA,CAAA,EAAA;AAAAM,YAAAA,SAAA,CAAAnC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;AAAAmC,UAAAA,SAAA,CAAAnC,IAAA,GAAA,EAAA,CAAA;UAAA,OAAS2C,wBAAwB,CAACtD,GAAG,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA8C,UAAAA,SAAA,CAAAS,EAAA,GAAAT,SAAA,CAAA/B,IAAA,CAAA;AAAA+B,UAAAA,SAAA,CAAAnC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;UAAAmC,SAAA,CAAAS,EAAA,GAAAf,qBAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UAApDpC,cAAc,GAAA0C,SAAA,CAAAS,EAAA,CAAA;AAGVd,UAAAA,SAAS,GAAGzC,GAAG,CAACqC,QAAQ,EAAE,CAACe,IAAI,EAAE,CAACX,SAAS,CAAC;AAAEe,YAAAA,KAAK,EAAEpD,cAAAA;AAAe,WAAC,CAAC,CAAA;AACtEsC,UAAAA,QAAQ,GAAG1C,GAAG,CAACqC,QAAQ,EAAE,CAACe,IAAI,EAAE,CAACV,QAAQ,CAAC;AAAEH,YAAAA,IAAI,EAAJA,IAAAA;AAAK,WAAC,CAAC,CAAA;AAErDI,UAAAA,cAAc,GAAG,KAAK,CAAA;AAAAG,UAAAA,SAAA,CAAApC,IAAA,GAAA,EAAA,CAAA;AAAAoC,UAAAA,SAAA,CAAAnC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OAElBX,GAAG,CAACqC,QAAQ,EAAE,CAACoB,2BAA2B,CAAC;AAAEC,YAAAA,OAAO,EAAEhB,QAAAA;AAAS,WAAC,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AACvEC,UAAAA,cAAc,GAAG,IAAI,CAAA;AAACG,UAAAA,SAAA,CAAAnC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,MAAA;AAAA,QAAA,KAAA,EAAA;AAAAmC,UAAAA,SAAA,CAAApC,IAAA,GAAA,EAAA,CAAA;UAAAoC,SAAA,CAAAa,EAAA,GAAAb,SAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;AAAA,UAAA,IAAA,CAIpBH,cAAc,EAAA;AAAAG,YAAAA,SAAA,CAAAnC,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,WAAA;UAAA,MACV,IAAIiD,KAAK,CAAA,OAAA,CAAAC,MAAA,CAAStB,IAAI,CAACuB,QAAQ,EAAE,EAAA,8BAAA,CAA8B,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;AAGlE3D,UAAAA,OAAO,GAAG4D,kBAAkB,CAACC,IAAI,EAAE,CACtCC,WAAW,CAAC/B,KAAK,CAAC,CAClBgC,GAAG,CAAC;YACHC,WAAW,EAAEC,6BAA6B,CACxC;AACEC,cAAAA,OAAO,EAAErE,GAAG,CAACsE,QAAQ,EAAE,CAACC,SAAS;cACjCC,SAAS,EAAEnC,QAAQ,CAACmC,SAAS;AAC7BnC,cAAAA,QAAQ,EAAED,WAAW;AACrBK,cAAAA,SAAS,EAATA,SAAS;AACTC,cAAAA,QAAQ,EAARA,QAAQ;AACRH,cAAAA,IAAI,EAAJA,IAAAA;AACF,aAAC,EACD;AACEiB,cAAAA,KAAK,EAAE;AAAEiB,gBAAAA,KAAK,EAAErE,cAAAA;eAAgB;AAChCkC,cAAAA,MAAM,EAANA,MAAAA;AACF,aAAC,EACDH,UAAU,CAACuB,OACb,CAAC;AACDgB,YAAAA,OAAO,EAAE,CAAC1E,GAAG,CAACsE,QAAQ,EAAE,CAAC;AACzBK,YAAAA,GAAG,EAAE,cAAA;AACP,WAAC,CAAC,CAAA;AAAA7B,UAAAA,SAAA,CAAAnC,IAAA,GAAA,EAAA,CAAA;AAAA,UAAA,OACEiE,2BAA2B,CAACzE,OAAO,EAAEH,GAAG,CAAC,CAAA;AAAA,QAAA,KAAA,EAAA;UAAA,OAAA8C,SAAA,CAAAzB,MAAA,CACxC,QAAA,EAAA;AACLlB,YAAAA,OAAO,EAAPA,OAAO;AACPC,YAAAA,cAAc,EAAdA,cAAAA;WACD,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAA0C,SAAA,CAAAxB,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAO,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;GACF,CAAA,CAAA,CAAA;AAAA,EAAA,OAAA,SAvDYhB,mBAAmBA,CAAAgE,GAAA,EAAAC,GAAA,EAAA;AAAA,IAAA,OAAAlD,IAAA,CAAAF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA,CAuD/B;;;;"}