{"version":3,"file":"instruments.cjs","sources":["../../../../src/plugins/spotInstrumentModule/instruments.ts"],"sourcesContent":["import { PublicKey } from '@solana/web3.js';\nimport { Leg, BaseAssetIndex, QuoteAsset } from '@convergence-rfq/rfq';\nimport { FixableBeetArgsStruct } from '@convergence-rfq/beet';\nimport { publicKey } from '@convergence-rfq/beet-solana';\n\nimport { Mint } from '../tokenModule';\nimport {\n  LegInstrument,\n  QuoteInstrument,\n  getInstrumentProgramIndex,\n  CreateOptionInstrumentsResult,\n} from '../instrumentModule';\nimport { Convergence } from '../../Convergence';\nimport { createSerializerFromFixableBeetArgsStruct } from '../../types';\nimport { removeDecimals } from '../../utils/conversions';\nimport { LegSide, fromSolitaLegSide } from '../rfqModule/models/LegSide';\nimport { Protocol } from '../protocolModule';\nimport { SPOT_INSTRUMENT_PROGRAM_ID } from './types';\n\ntype InstrumentData = {\n  mintAddress: PublicKey;\n};\n\nexport const SpotInstrumentDataSerializer =\n  createSerializerFromFixableBeetArgsStruct(\n    new FixableBeetArgsStruct<InstrumentData>(\n      [['mintAddress', publicKey]],\n      'InstrumentData'\n    )\n  );\n/**\n * This model captures all the relevant information about a spot\n * instrument on the Solana blockchain.\n *\n * @group Models\n */\nexport class SpotLegInstrument implements LegInstrument {\n  legType: 'escrow';\n\n  constructor(\n    readonly convergence: Convergence,\n    readonly mintAddress: PublicKey,\n    readonly baseAssetIndex: BaseAssetIndex,\n    readonly instrumentIndex: number,\n    readonly amount: number,\n    readonly decimals: number,\n    readonly side: LegSide\n  ) {\n    this.legType = 'escrow';\n  }\n\n  getInstrumentIndex = () => this.instrumentIndex;\n  getProgramId = () => this.convergence.programs().getSpotInstrument().address;\n  getBaseAssetIndex = () => this.baseAssetIndex;\n  getAssetMint = () => this.mintAddress;\n  getSide = () => this.side;\n  getDecimals = () => this.decimals;\n  getAmount = () => this.amount;\n  async getPreparationsBeforeRfqCreation(): Promise<CreateOptionInstrumentsResult> {\n    return [];\n  }\n\n  static async create(\n    convergence: Convergence,\n    mint: Mint,\n    amount: number,\n    side: LegSide = 'long'\n  ): Promise<SpotLegInstrument> {\n    const mintInfoAddress = convergence\n      .protocol()\n      .pdas()\n      .mintInfo({ mint: mint.address });\n    const mintInfo = await convergence\n      .protocol()\n      .findRegisteredMintByAddress({ address: mintInfoAddress });\n\n    if (mintInfo.mintType.__kind === 'Stablecoin') {\n      throw Error('Stablecoin mint cannot be used in a leg!');\n    }\n\n    const instrumentIndex = getInstrumentProgramIndex(\n      await convergence.protocol().get(),\n      SPOT_INSTRUMENT_PROGRAM_ID\n    );\n\n    return new SpotLegInstrument(\n      convergence,\n      mint.address,\n      mintInfo.mintType.baseAssetIndex,\n      instrumentIndex,\n      amount,\n      mint.decimals,\n      side\n    );\n  }\n\n  static deserializeInstrumentData(buffer: Buffer): InstrumentData {\n    const [instrumentData] = SpotInstrumentDataSerializer.deserialize(buffer);\n    return instrumentData;\n  }\n\n  /** Helper method to get validation accounts for a spot instrument. */\n  getValidationAccounts() {\n    const mintInfo = this.convergence\n      .protocol()\n      .pdas()\n      .mintInfo({ mint: this.mintAddress });\n    return [{ pubkey: mintInfo, isSigner: false, isWritable: false }];\n  }\n\n  /** Helper method to serialize the instrument data for this instrument. */\n  serializeInstrumentData(): Buffer {\n    return Buffer.from(this.mintAddress.toBytes());\n  }\n}\n\nexport const spotLegInstrumentParser = {\n  parseFromLeg(\n    convergence: Convergence,\n    leg: Leg,\n    instrumentIndex: number\n  ): SpotLegInstrument {\n    const { side, amount, data, baseAssetIndex, amountDecimals } = leg;\n    const { mintAddress } = SpotLegInstrument.deserializeInstrumentData(\n      Buffer.from(data)\n    );\n\n    return new SpotLegInstrument(\n      convergence,\n      mintAddress,\n      baseAssetIndex,\n      instrumentIndex,\n      removeDecimals(amount, amountDecimals),\n      amountDecimals,\n      fromSolitaLegSide(side)\n    );\n  },\n};\n\nexport class SpotQuoteInstrument implements QuoteInstrument {\n  protected constructor(\n    readonly convergence: Convergence,\n    readonly instrumentIndex: number,\n    readonly mintAddress: PublicKey,\n    readonly decimals: number\n  ) {}\n\n  getInstrumentIndex = () => this.instrumentIndex;\n  getAssetMint = () => this.mintAddress;\n  getProgramId = () => this.convergence.programs().getSpotInstrument().address;\n  getDecimals = () => this.decimals;\n\n  static parseFromQuote(\n    convergence: Convergence,\n    protocol: Protocol,\n    quote: QuoteAsset\n  ): QuoteInstrument {\n    const { data, decimals } = quote;\n    const { mintAddress } = SpotLegInstrument.deserializeInstrumentData(\n      Buffer.from(data)\n    );\n\n    const instrumentIndex = getInstrumentProgramIndex(\n      protocol,\n      SPOT_INSTRUMENT_PROGRAM_ID\n    );\n\n    return new SpotQuoteInstrument(\n      convergence,\n      instrumentIndex,\n      mintAddress,\n      decimals\n    );\n  }\n\n  static async create(\n    convergence: Convergence,\n    mint: Mint\n  ): Promise<SpotQuoteInstrument> {\n    const mintInfoAddress = convergence\n      .protocol()\n      .pdas()\n      .mintInfo({ mint: mint.address });\n    const mintInfo = await convergence\n      .protocol()\n      .findRegisteredMintByAddress({ address: mintInfoAddress });\n\n    if (mintInfo.mintType.__kind === 'AssetWithRisk') {\n      throw Error('Quote only supports stablecoin mints!');\n    }\n\n    const instrumentIndex = getInstrumentProgramIndex(\n      await convergence.protocol().get(),\n      SPOT_INSTRUMENT_PROGRAM_ID\n    );\n\n    return new SpotQuoteInstrument(\n      convergence,\n      instrumentIndex,\n      mint.address,\n      mint.decimals\n    );\n  }\n\n  static deserializeInstrumentData(buffer: Buffer): InstrumentData {\n    const [instrumentData] = SpotInstrumentDataSerializer.deserialize(buffer);\n    return instrumentData;\n  }\n\n  /** Helper method to get validation accounts for a spot instrument. */\n  getValidationAccounts() {\n    const mintInfo = this.convergence\n      .protocol()\n      .pdas()\n      .mintInfo({ mint: this.mintAddress });\n    return [{ pubkey: mintInfo, isSigner: false, isWritable: false }];\n  }\n\n  /** Helper method to serialize the instrument data for this instrument. */\n  serializeInstrumentData(): Buffer {\n    return Buffer.from(this.mintAddress.toBytes());\n  }\n}\n"],"names":["SpotInstrumentDataSerializer","createSerializerFromFixableBeetArgsStruct","FixableBeetArgsStruct","publicKey","SpotLegInstrument","convergence","mintAddress","baseAssetIndex","instrumentIndex","amount","decimals","side","_this","_classCallCheck","_defineProperty","programs","getSpotInstrument","address","legType","_createClass","key","value","_getPreparationsBeforeRfqCreation","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","getPreparationsBeforeRfqCreation","apply","arguments","getValidationAccounts","mintInfo","protocol","pdas","mint","pubkey","isSigner","isWritable","serializeInstrumentData","Buffer","from","toBytes","_create","_callee2","mintInfoAddress","_args2","_callee2$","_context2","length","undefined","findRegisteredMintByAddress","sent","mintType","__kind","Error","t0","getInstrumentProgramIndex","get","t1","t2","SPOT_INSTRUMENT_PROGRAM_ID","create","_x","_x2","_x3","deserializeInstrumentData","buffer","_SpotInstrumentDataSe","deserialize","_SpotInstrumentDataSe2","_slicedToArray","instrumentData","spotLegInstrumentParser","parseFromLeg","leg","data","amountDecimals","_SpotLegInstrument$de","removeDecimals","fromSolitaLegSide","SpotQuoteInstrument","_this2","parseFromQuote","quote","_SpotLegInstrument$de2","_create2","_callee3","_callee3$","_context3","_x4","_x5","_SpotInstrumentDataSe3","_SpotInstrumentDataSe4"],"mappings":"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"}