{"version":3,"file":"Quote.mjs","sources":["../../../../../src/plugins/rfqModule/models/Quote.ts"],"sourcesContent":["import { Quote as SolitaQuote } from '@convergence-rfq/rfq';\nimport { BN } from 'bn.js';\n\nimport { ABSOLUTE_PRICE_DECIMALS, LEG_MULTIPLIER_DECIMALS } from '../constants';\nimport { addDecimals, removeDecimals } from '@/utils';\n\nexport interface Quote {\n  readonly price: number;\n  readonly legsMultiplier?: number;\n}\n\nexport function fromSolitaQuote(\n  quote: SolitaQuote,\n  quoteDecimals: number\n): Quote {\n  const priceQuoteWithoutDecimals = removeDecimals(\n    quote.priceQuote.amountBps,\n    quoteDecimals\n  );\n\n  /**\n   * TODO: Investigate why we can't combine these operations together\n   *\n   * The following should work, but doesn't\n   * ```typescript\n   * const price = removeDecimals(quote.priceQuote.amountBps, quoteDecimals + ABSOLUTE_PRICE_DECIMALS);\n   * ```\n   */\n  const price = removeDecimals(\n    priceQuoteWithoutDecimals,\n    ABSOLUTE_PRICE_DECIMALS\n  );\n\n  if (quote.__kind === 'Standard') {\n    const legsMultiplier = removeDecimals(\n      quote.legsMultiplierBps,\n      LEG_MULTIPLIER_DECIMALS\n    );\n    return {\n      price,\n      legsMultiplier,\n    };\n  }\n  return {\n    price,\n  };\n}\n\nexport function toSolitaQuote(\n  quote: Quote,\n  quoteDecimals: number\n): SolitaQuote {\n  const priceQuoteWithDecimals = addDecimals(quote.price, quoteDecimals);\n\n  /**\n   * TODO: Investigate why we are truncating here, without it we get \"Error: Invalid character\" from BN.\n   *\n   * Examples that don't work but probably should\n   * ```typescript\n   * const amountBps = addDecimals(quote.price, quoteDecimals + ABSOLUTE_PRICE_DECIMALS)\n   * const amountBps = quote.price * Math.pow(10, quoteDecimals + ABSOLUTE_PRICE_DECIMALS);\n   * ```\n   */\n  const amountBps = priceQuoteWithDecimals.mul(\n    new BN(10).pow(new BN(ABSOLUTE_PRICE_DECIMALS))\n  );\n\n  if (quote.legsMultiplier) {\n    const legsMultiplierBps = addDecimals(\n      Number(quote.legsMultiplier),\n      LEG_MULTIPLIER_DECIMALS\n    );\n    return {\n      __kind: 'Standard',\n      legsMultiplierBps,\n      priceQuote: {\n        __kind: 'AbsolutePrice',\n        amountBps,\n      },\n    };\n  }\n  return {\n    __kind: 'FixedSize',\n    priceQuote: {\n      __kind: 'AbsolutePrice',\n      amountBps,\n    },\n  };\n}\n\nexport function isQuoteStandard(\n  value: Quote\n): value is Quote & { legsMultiplier: number } {\n  return typeof value.legsMultiplier !== 'undefined';\n}\n\nexport function isQuoteFixedSize(\n  value: Quote\n): value is Quote & { legsMultiplier: undefined } {\n  return typeof value.legsMultiplier === 'undefined';\n}\n"],"names":["fromSolitaQuote","quote","quoteDecimals","priceQuoteWithoutDecimals","removeDecimals","priceQuote","amountBps","price","ABSOLUTE_PRICE_DECIMALS","__kind","legsMultiplier","legsMultiplierBps","LEG_MULTIPLIER_DECIMALS","toSolitaQuote","priceQuoteWithDecimals","addDecimals","mul","BN","pow","Number","isQuoteStandard","value","isQuoteFixedSize"],"mappings":";;;;AAWO,SAASA,eAAeA,CAC7BC,KAAkB,EAClBC,aAAqB,EACd;EACP,IAAMC,yBAAyB,GAAGC,cAAc,CAC9CH,KAAK,CAACI,UAAU,CAACC,SAAS,EAC1BJ,aACF,CAAC,CAAA;;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,IAAMK,KAAK,GAAGH,cAAc,CAC1BD,yBAAyB,EACzBK,uBACF,CAAC,CAAA;AAED,EAAA,IAAIP,KAAK,CAACQ,MAAM,KAAK,UAAU,EAAE;IAC/B,IAAMC,cAAc,GAAGN,cAAc,CACnCH,KAAK,CAACU,iBAAiB,EACvBC,uBACF,CAAC,CAAA;IACD,OAAO;AACLL,MAAAA,KAAK,EAALA,KAAK;AACLG,MAAAA,cAAc,EAAdA,cAAAA;KACD,CAAA;AACH,GAAA;EACA,OAAO;AACLH,IAAAA,KAAK,EAALA,KAAAA;GACD,CAAA;AACH,CAAA;AAEO,SAASM,aAAaA,CAC3BZ,KAAY,EACZC,aAAqB,EACR;EACb,IAAMY,sBAAsB,GAAGC,WAAW,CAACd,KAAK,CAACM,KAAK,EAAEL,aAAa,CAAC,CAAA;;AAEtE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAMI,SAAS,GAAGQ,sBAAsB,CAACE,GAAG,CAC1C,IAAIC,EAAE,CAAC,EAAE,CAAC,CAACC,GAAG,CAAC,IAAID,EAAE,CAACT,uBAAuB,CAAC,CAChD,CAAC,CAAA;EAED,IAAIP,KAAK,CAACS,cAAc,EAAE;AACxB,IAAA,IAAMC,iBAAiB,GAAGI,WAAW,CACnCI,MAAM,CAAClB,KAAK,CAACS,cAAc,CAAC,EAC5BE,uBACF,CAAC,CAAA;IACD,OAAO;AACLH,MAAAA,MAAM,EAAE,UAAU;AAClBE,MAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBN,MAAAA,UAAU,EAAE;AACVI,QAAAA,MAAM,EAAE,eAAe;AACvBH,QAAAA,SAAS,EAATA,SAAAA;AACF,OAAA;KACD,CAAA;AACH,GAAA;EACA,OAAO;AACLG,IAAAA,MAAM,EAAE,WAAW;AACnBJ,IAAAA,UAAU,EAAE;AACVI,MAAAA,MAAM,EAAE,eAAe;AACvBH,MAAAA,SAAS,EAATA,SAAAA;AACF,KAAA;GACD,CAAA;AACH,CAAA;AAEO,SAASc,eAAeA,CAC7BC,KAAY,EACiC;AAC7C,EAAA,OAAO,OAAOA,KAAK,CAACX,cAAc,KAAK,WAAW,CAAA;AACpD,CAAA;AAEO,SAASY,gBAAgBA,CAC9BD,KAAY,EACoC;AAChD,EAAA,OAAO,OAAOA,KAAK,CAACX,cAAc,KAAK,WAAW,CAAA;AACpD;;;;"}