{"version":3,"file":"helpers.cjs","sources":["../../../../src/plugins/psyoptionsEuropeanInstrumentModule/helpers.ts"],"sourcesContent":["import * as psyoptionsEuropean from '@mithraic-labs/tokenized-euros';\nimport { PublicKey } from '@solana/web3.js';\nimport { getOrCreateATAtxBuilder } from '../../utils/ata';\nimport { addDecimals } from '../../utils/conversions';\nimport { TransactionBuilder } from '../../utils/TransactionBuilder';\nimport { Convergence } from '../../Convergence';\nimport { InstructionUniquenessTracker } from '../../utils/classes';\nimport {\n  PsyoptionsEuropeanInstrument,\n  createEuropeanProgram,\n} from './instrument';\nimport { addComputeBudgetIxsIfNeeded } from '@/utils/helpers';\n\nexport type PrepareEuropeanOptionsResult = {\n  ataTxBuilders: TransactionBuilder[];\n  mintTxBuilders: TransactionBuilder[];\n};\n// create European Option ATAs and mint options\nexport const prepareEuropeanOptions = async (\n  convergence: Convergence,\n  responseAddress: PublicKey,\n  caller: PublicKey\n) => {\n  const ixTracker = new InstructionUniquenessTracker([]);\n  const europeanProgram = await createEuropeanProgram(convergence, caller);\n  const response = await convergence\n    .rfqs()\n    .findResponseByAddress({ address: responseAddress });\n  const rfq = await convergence\n    .rfqs()\n    .findRfqByAddress({ address: response.rfq });\n\n  const callerSide = caller.equals(rfq.taker) ? 'taker' : 'maker';\n\n  const { legs: legExchangeResult } = convergence.rfqs().getSettlementResult({\n    response,\n    rfq,\n  });\n  const mintTxBuilderArray: TransactionBuilder[] = [];\n  const ataTxBuilderArray: TransactionBuilder[] = [];\n  for (const [index, leg] of rfq.legs.entries()) {\n    const { receiver, amount } = legExchangeResult[index];\n    if (\n      !(leg instanceof PsyoptionsEuropeanInstrument) ||\n      receiver === callerSide\n    ) {\n      continue;\n    }\n    const euroMeta = await leg.getOptionMeta();\n    const { stableMint, underlyingMint } = euroMeta;\n    const stableMintToken = convergence.tokens().pdas().associatedTokenAccount({\n      mint: stableMint,\n      owner: caller,\n    });\n    const underlyingMintToken = convergence\n      .tokens()\n      .pdas()\n      .associatedTokenAccount({\n        mint: underlyingMint,\n        owner: caller,\n      });\n    const minterCollateralKey =\n      leg.optionType == psyoptionsEuropean.OptionType.PUT\n        ? stableMintToken\n        : underlyingMintToken;\n\n    const optionToken = await getOrCreateATAtxBuilder(\n      convergence,\n      leg.optionType == psyoptionsEuropean.OptionType.PUT\n        ? euroMeta.putOptionMint\n        : euroMeta.callOptionMint,\n      caller\n    );\n\n    if (\n      optionToken.txBuilder &&\n      ixTracker.checkedAdd(optionToken.txBuilder, 'TransactionBuilder')\n    ) {\n      ataTxBuilderArray.push(optionToken.txBuilder);\n    }\n    const writerToken = await getOrCreateATAtxBuilder(\n      convergence,\n      leg.optionType == psyoptionsEuropean.OptionType.PUT\n        ? euroMeta.putWriterMint\n        : euroMeta.callWriterMint,\n      caller\n    );\n    if (\n      writerToken.txBuilder &&\n      ixTracker.checkedAdd(writerToken.txBuilder, 'TransactionBuilder')\n    ) {\n      ataTxBuilderArray.push(writerToken.txBuilder);\n    }\n\n    const { tokenBalance } = await convergence.tokens().getTokenBalance({\n      mintAddress:\n        leg.optionType == psyoptionsEuropean.OptionType.PUT\n          ? euroMeta.putOptionMint\n          : euroMeta.callOptionMint,\n      owner: caller,\n      mintDecimals: PsyoptionsEuropeanInstrument.decimals,\n    });\n\n    const tokensToMint = amount - tokenBalance;\n    if (tokensToMint! <= 0) continue;\n    const { instruction: ix } = psyoptionsEuropean.instructions.mintOptions(\n      europeanProgram,\n      leg.optionMetaPubKey,\n      euroMeta as psyoptionsEuropean.EuroMeta,\n      minterCollateralKey,\n      optionToken.ataPubKey,\n      writerToken.ataPubKey,\n      addDecimals(tokensToMint, PsyoptionsEuropeanInstrument.decimals),\n      leg.optionType\n    );\n\n    ix.keys[0] = {\n      pubkey: caller,\n      isSigner: true,\n      isWritable: false,\n    };\n\n    const mintTxBuilder = TransactionBuilder.make()\n      .setFeePayer(convergence.rpc().getDefaultFeePayer())\n      .add({\n        instruction: ix,\n        signers: [convergence.identity()],\n      });\n\n    await addComputeBudgetIxsIfNeeded(mintTxBuilder, convergence, true);\n    mintTxBuilderArray.push(mintTxBuilder);\n  }\n\n  return {\n    ataTxBuilders: ataTxBuilderArray,\n    mintTxBuilders: mintTxBuilderArray,\n  };\n};\n"],"names":["prepareEuropeanOptions","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","convergence","responseAddress","caller","ixTracker","europeanProgram","response","rfq","callerSide","_convergence$rfqs$get","legExchangeResult","mintTxBuilderArray","ataTxBuilderArray","_iterator","_step","_step$value","index","leg","_legExchangeResult$in","receiver","amount","euroMeta","stableMint","underlyingMint","stableMintToken","underlyingMintToken","minterCollateralKey","optionToken","writerToken","_yield$convergence$to","tokenBalance","tokensToMint","_psyoptionsEuropean$i","ix","mintTxBuilder","wrap","_callee$","_context","prev","next","InstructionUniquenessTracker","createEuropeanProgram","sent","rfqs","findResponseByAddress","address","findRfqByAddress","equals","taker","getSettlementResult","legs","_createForOfIteratorHelper","entries","s","n","done","_slicedToArray","value","PsyoptionsEuropeanInstrument","abrupt","getOptionMeta","tokens","pdas","associatedTokenAccount","mint","owner","optionType","psyoptionsEuropean","OptionType","PUT","getOrCreateATAtxBuilder","putOptionMint","callOptionMint","txBuilder","checkedAdd","push","putWriterMint","callWriterMint","getTokenBalance","mintAddress","mintDecimals","decimals","instructions","mintOptions","optionMetaPubKey","ataPubKey","addDecimals","instruction","keys","pubkey","isSigner","isWritable","TransactionBuilder","make","setFeePayer","rpc","getDefaultFeePayer","add","signers","identity","addComputeBudgetIxsIfNeeded","t0","e","f","finish","ataTxBuilders","mintTxBuilders","stop","_x","_x2","_x3","apply","arguments"],"mappings":"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"}