{"version":3,"file":"unlockHxroCollateralByRecord.mjs","sources":["../../../../../src/plugins/hxroPrintTradeProviderModule/operations/unlockHxroCollateralByRecord.ts"],"sourcesContent":["import {\n  LockedCollateralRecord,\n  LockedCollateralRecordArgs,\n  createRemoveLockedCollateralRecordInstruction,\n} from '@convergence-rfq/hxro-print-trade-provider';\nimport dexterity from '@hxronetwork/dexterity-ts';\n\nimport BN from 'bn.js';\nimport { Transaction } from '@solana/web3.js';\nimport * as solana from '@solana/web3.js';\nimport { getHxroProgramFromIDL } from '../program';\nimport { fetchValidHxroMpg } from '../helpers';\nimport { hxroManifestCache } from '../cache';\nimport { WithPubkey } from '../types';\nimport { Convergence } from '@/Convergence';\nimport {\n  Operation,\n  OperationHandler,\n  OperationScope,\n  PublicKey,\n  useOperation,\n} from '@/types';\nimport { TransactionBuilder, TransactionBuilderOptions, sleep } from '@/utils';\nimport { isLocalEnv } from '@/utils/helpers';\n\nconst Key = 'unlockHxroCollateralByRecord' as const;\n\nexport const unlockHxroCollateralByRecordOperation =\n  useOperation<UnlockHxroCollateralByRecordOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type UnlockHxroCollateralByRecordOperation = Operation<\n  typeof Key,\n  UnlockHxroCollateralByRecordInput,\n  UnlockHxroCollateralByRecordOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type UnlockHxroCollateralByRecordInput = {\n  lockRecord: PublicKey | WithPubkey<LockedCollateralRecordArgs>;\n\n  // 'unlock-and-remove-record' is a default action\n  action?: 'unlock' | 'remove-record' | 'unlock-and-remove-record';\n};\n/**\n * @group Operations\n * @category Outputs\n */\nexport type UnlockHxroCollateralByRecordOutput =\n  solana.RpcResponseAndContext<solana.SignatureResult>;\n/**\n * @group Operations\n * @category Handlers\n */\nexport const unlockHxroCollateralByRecordOperationHandler: OperationHandler<UnlockHxroCollateralByRecordOperation> =\n  {\n    handle: async (\n      operation: UnlockHxroCollateralByRecordOperation,\n      cvg: Convergence,\n      scope: OperationScope\n    ): Promise<UnlockHxroCollateralByRecordOutput> => {\n      const {\n        input: { lockRecord, action = 'unlock-and-remove-record' },\n      } = operation;\n      const payer = cvg.rpc().getDefaultFeePayer();\n      let lockRecordData: WithPubkey<LockedCollateralRecordArgs>;\n      if ('publicKey' in lockRecord) {\n        lockRecordData = lockRecord;\n      } else {\n        const accountData = await LockedCollateralRecord.fromAccountAddress(\n          cvg.connection,\n          lockRecord\n        );\n        lockRecordData = { ...accountData, publicKey: lockRecord };\n      }\n\n      const unlockHxroCollateralTxBuilder =\n        TransactionBuilder.make().setFeePayer(cvg.identity());\n      const removeRecordCollateralTxBuilder =\n        TransactionBuilder.make().setFeePayer(cvg.identity());\n\n      if (action == 'unlock' || action == 'unlock-and-remove-record') {\n        unlockHxroCollateralTxBuilder.add(\n          await unlockHxroCollateralBuilder(\n            cvg,\n            {\n              lockRecord: lockRecordData,\n            },\n            scope\n          )\n        );\n      }\n\n      if (action == 'remove-record' || action == 'unlock-and-remove-record') {\n        removeRecordCollateralTxBuilder.add(\n          await removeLockCollateralRecordBuilder(\n            cvg,\n            {\n              lockRecord: lockRecordData,\n            },\n            scope\n          )\n        );\n      }\n\n      const slot = await cvg.connection.getSlot();\n\n      const [lookupTableInst, lookupTableAddress] =\n        solana.AddressLookupTableProgram.createLookupTable({\n          authority: payer.publicKey,\n          payer: payer.publicKey,\n          recentSlot: slot,\n        });\n      const lookUpTable = await cvg.connection.getAddressLookupTable(\n        lookupTableAddress\n      );\n      const lastValidBlockHeight = await cvg.rpc().getLatestBlockhash();\n      const addressLookupTableAcc = lookUpTable.value;\n      const lookUpTxs: Transaction[] = [];\n      const unlockHxroCollateralAccouts = unlockHxroCollateralTxBuilder\n        .getInstructions()\n        .map((ix) => ix.keys.map((k) => k.pubkey))\n        .flat();\n\n      if (addressLookupTableAcc && addressLookupTableAcc.isActive()) {\n        const remainingAddresses: PublicKey[] = [];\n        const addressesArray = addressLookupTableAcc.state.addresses.map((a) =>\n          a.toBase58()\n        );\n        for (const addr of unlockHxroCollateralAccouts) {\n          if (!addressesArray.includes(addr.toBase58())) {\n            remainingAddresses.push(addr);\n            break;\n          }\n        }\n        if (remainingAddresses.length > 0) {\n          const extendInstruction =\n            solana.AddressLookupTableProgram.extendLookupTable({\n              payer: payer.publicKey,\n              authority: payer.publicKey,\n              lookupTable: lookupTableAddress,\n              addresses: remainingAddresses,\n            });\n          const extendLookupTx = new Transaction().add(extendInstruction);\n          extendLookupTx.feePayer = payer.publicKey;\n          extendLookupTx.recentBlockhash = lastValidBlockHeight.blockhash;\n          extendLookupTx.lastValidBlockHeight =\n            lastValidBlockHeight.lastValidBlockHeight;\n          lookUpTxs.push(extendLookupTx);\n        }\n      } else {\n        const lookUpCreateTx = new Transaction().add(lookupTableInst);\n        lookUpCreateTx.feePayer = payer.publicKey;\n        lookUpCreateTx.recentBlockhash = lastValidBlockHeight.blockhash;\n        lookUpCreateTx.lastValidBlockHeight =\n          lastValidBlockHeight.lastValidBlockHeight;\n        lookUpTxs.push(lookUpCreateTx);\n\n        const extendInstruction =\n          solana.AddressLookupTableProgram.extendLookupTable({\n            payer: payer.publicKey,\n            authority: payer.publicKey,\n            lookupTable: lookupTableAddress,\n            addresses: unlockHxroCollateralAccouts,\n          });\n        const extendLookupTx = new Transaction().add(extendInstruction);\n        extendLookupTx.feePayer = payer.publicKey;\n        extendLookupTx.recentBlockhash = lastValidBlockHeight.blockhash;\n        extendLookupTx.lastValidBlockHeight =\n          lastValidBlockHeight.lastValidBlockHeight;\n        lookUpTxs.push(extendLookupTx);\n      }\n\n      if (lookUpTxs.length > 0) {\n        const signedLookUpTxs = await cvg\n          .identity()\n          .signAllTransactions(lookUpTxs);\n        for (const tx of signedLookUpTxs) {\n          await cvg.rpc().serializeAndSendTransaction(tx);\n        }\n      }\n\n      const txs: Transaction[] = [];\n\n      if (action == 'unlock' || action == 'unlock-and-remove-record') {\n        txs.push(\n          unlockHxroCollateralTxBuilder.toTransaction(lastValidBlockHeight)\n        );\n      }\n      if (action == 'remove-record' || action == 'unlock-and-remove-record') {\n        txs.push(\n          removeRecordCollateralTxBuilder.toTransaction(lastValidBlockHeight)\n        );\n      }\n\n      if (txs.length === 0) {\n        throw new Error('No transactions to send');\n      }\n      const signedTxs = await cvg.identity().signAllTransactions(txs);\n      let txResponse: solana.RpcResponseAndContext<solana.SignatureResult> | null =\n        null;\n\n      const newlookUpTable = await cvg.connection.getAddressLookupTable(\n        lookupTableAddress\n      );\n      const newAddressLookupTableAcc = newlookUpTable.value;\n      if (!newAddressLookupTableAcc) {\n        throw new Error('No lookup table');\n      }\n      const txMessages = signedTxs.map((tx) =>\n        new solana.TransactionMessage({\n          payerKey: payer.publicKey,\n          recentBlockhash: lastValidBlockHeight.blockhash,\n          instructions: tx.instructions.map((ix) => ix),\n        }).compileToV0Message([newAddressLookupTableAcc])\n      );\n\n      const versionedTxs = txMessages.map(\n        (msg) => new solana.VersionedTransaction(msg)\n      );\n      await sleep(1);\n      for (const tx of versionedTxs) {\n        tx.sign([cvg.identity() as solana.Signer]);\n        const sig = await cvg.connection.sendTransaction(tx);\n        txResponse = await cvg.connection.confirmTransaction(sig);\n      }\n      if (!txResponse) {\n        throw new Error('No transaction response');\n      }\n      return txResponse;\n    },\n  };\n\nexport const removeLockCollateralRecordBuilder = async (\n  cvg: Convergence,\n  params: { lockRecord: WithPubkey<LockedCollateralRecordArgs> },\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder> => {\n  const { programs, payer = cvg.rpc().getDefaultFeePayer() } = options;\n  const { lockRecord } = params;\n\n  return TransactionBuilder.make()\n    .setFeePayer(payer)\n    .add({\n      instruction: createRemoveLockedCollateralRecordInstruction(\n        {\n          user: cvg.identity().publicKey,\n          lockedCollateralRecord: lockRecord.publicKey,\n        },\n        cvg.programs().getHxroPrintTradeProvider(programs).address\n      ),\n      signers: [cvg.identity()],\n      key: 'removeLockCollateralRecord',\n    });\n};\n\nexport const unlockHxroCollateralBuilder = async (\n  cvg: Convergence,\n  params: { lockRecord: LockedCollateralRecordArgs },\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder<{}>> => {\n  const { lockRecord } = params;\n  const { payer = cvg.rpc().getDefaultFeePayer() } = options;\n\n  const manifest = await hxroManifestCache.get(cvg);\n  const mpg = await fetchValidHxroMpg(cvg, manifest);\n\n  const userTrg = await manifest.getTRG(lockRecord.trg);\n\n  const [covarianceAddress] = PublicKey.findProgramAddressSync(\n    [Buffer.from('s'), mpg.pubkey.toBuffer()],\n    mpg.riskEngineProgramId\n  );\n  const [correlationAddress] = PublicKey.findProgramAddressSync(\n    [Buffer.from('r'), mpg.pubkey.toBuffer()],\n    mpg.riskEngineProgramId\n  );\n  const [markPricesAddress] = PublicKey.findProgramAddressSync(\n    [Buffer.from('mark_prices'), mpg.pubkey.toBuffer()],\n    mpg.riskEngineProgramId\n  );\n\n  const idlProgram = await getHxroProgramFromIDL(cvg, manifest);\n  const instruction = await idlProgram.methods\n    .unlockCollateral({\n      numProducts: new BN(6),\n      products: lockRecord.locks,\n    })\n    .accounts({\n      user: payer.publicKey,\n      traderRiskGroup: lockRecord.trg,\n      marketProductGroup: mpg.pubkey,\n      feeModelProgram: mpg.feeModelProgramId,\n      feeModelConfigurationAcct: mpg.feeModelConfigurationAcct,\n      feeOutputRegister: mpg.feeOutputRegister,\n      riskEngineProgram: mpg.riskEngineProgramId,\n      riskModelConfigurationAcct: mpg.riskModelConfigurationAcct,\n      riskOutputRegister: mpg.riskOutputRegister,\n      riskAndFeeSigner: dexterity.Manifest.GetRiskAndFeeSigner(mpg.pubkey),\n      feeStateAcct: userTrg.feeStateAccount,\n      riskStateAcct: userTrg.riskStateAccount,\n    })\n    .remainingAccounts([\n      {\n        pubkey: covarianceAddress,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: correlationAddress,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: markPricesAddress,\n        isSigner: false,\n        isWritable: true,\n      },\n    ])\n    .instruction();\n\n  const txBuilder = TransactionBuilder.make<{}>()\n    .setFeePayer(payer)\n    .add({\n      instruction,\n      signers: [payer],\n      key: 'unlockHxroCollateral',\n    });\n\n  if (!isLocalEnv(cvg)) {\n    const trader = new dexterity.Trader(manifest, lockRecord.trg, true);\n\n    await trader.connect(null, null);\n    const updateMarkPriceIx = trader.getUpdateMarkPricesIx();\n    updateMarkPriceIx.keys[0].pubkey = payer.publicKey;\n\n    txBuilder.prepend({\n      instruction: updateMarkPriceIx,\n      signers: [payer],\n      key: 'updateMarkPrices',\n    });\n  }\n  return txBuilder;\n};\n"],"names":["Key","unlockHxroCollateralByRecordOperation","useOperation","unlockHxroCollateralByRecordOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","operation","cvg","scope","_operation$input","lockRecord","_operation$input$acti","action","payer","lockRecordData","accountData","unlockHxroCollateralTxBuilder","removeRecordCollateralTxBuilder","slot","_solana$AddressLookup","_solana$AddressLookup2","lookupTableInst","lookupTableAddress","lookUpTable","lastValidBlockHeight","addressLookupTableAcc","lookUpTxs","unlockHxroCollateralAccouts","remainingAddresses","addressesArray","_iterator","_step","addr","extendInstruction","extendLookupTx","lookUpCreateTx","_extendInstruction","_extendLookupTx","signedLookUpTxs","_iterator2","_step2","tx","txs","signedTxs","txResponse","newlookUpTable","newAddressLookupTableAcc","txMessages","versionedTxs","_iterator3","_step3","_tx","sig","wrap","_callee$","_context","prev","next","input","rpc","getDefaultFeePayer","LockedCollateralRecord","fromAccountAddress","connection","sent","_objectSpread","publicKey","TransactionBuilder","make","setFeePayer","identity","t0","unlockHxroCollateralBuilder","t1","add","call","t2","removeLockCollateralRecordBuilder","t3","getSlot","solana","AddressLookupTableProgram","createLookupTable","authority","recentSlot","_slicedToArray","getAddressLookupTable","getLatestBlockhash","value","getInstructions","map","ix","keys","k","pubkey","flat","isActive","state","addresses","a","toBase58","_createForOfIteratorHelper","s","n","done","includes","push","abrupt","t4","e","f","finish","length","extendLookupTable","lookupTable","Transaction","feePayer","recentBlockhash","blockhash","signAllTransactions","serializeAndSendTransaction","t5","toTransaction","Error","TransactionMessage","payerKey","instructions","compileToV0Message","msg","VersionedTransaction","sleep","sign","sendTransaction","confirmTransaction","t6","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","params","options","programs","_options$payer","_args2","_callee2$","_context2","undefined","instruction","createRemoveLockedCollateralRecordInstruction","user","lockedCollateralRecord","getHxroPrintTradeProvider","address","signers","key","_x4","_x5","_ref2","_callee3","_options$payer2","manifest","mpg","userTrg","_PublicKey$findProgra","_PublicKey$findProgra2","covarianceAddress","_PublicKey$findProgra3","_PublicKey$findProgra4","correlationAddress","_PublicKey$findProgra5","_PublicKey$findProgra6","markPricesAddress","idlProgram","txBuilder","trader","updateMarkPriceIx","_args3","_callee3$","_context3","hxroManifestCache","get","fetchValidHxroMpg","getTRG","trg","PublicKey","findProgramAddressSync","Buffer","from","toBuffer","riskEngineProgramId","getHxroProgramFromIDL","methods","unlockCollateral","numProducts","BN","products","locks","accounts","traderRiskGroup","marketProductGroup","feeModelProgram","feeModelProgramId","feeModelConfigurationAcct","feeOutputRegister","riskEngineProgram","riskModelConfigurationAcct","riskOutputRegister","riskAndFeeSigner","dexterity","Manifest","GetRiskAndFeeSigner","feeStateAcct","feeStateAccount","riskStateAcct","riskStateAccount","remainingAccounts","isSigner","isWritable","isLocalEnv","Trader","connect","getUpdateMarkPricesIx","prepend","_x6","_x7"],"mappings":"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"}