@metamask-previews/bridge-controller 79.0.1-preview-4c8a5dfcb → 79.0.1-preview-d74e69d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +1 -7
  2. package/dist/coercers/quote-response-v1-to-v2.cjs +4 -4
  3. package/dist/coercers/quote-response-v1-to-v2.cjs.map +1 -1
  4. package/dist/coercers/quote-response-v1-to-v2.mjs +4 -4
  5. package/dist/coercers/quote-response-v1-to-v2.mjs.map +1 -1
  6. package/dist/index.cjs +9 -11
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.cts +1 -2
  9. package/dist/index.d.cts.map +1 -1
  10. package/dist/index.d.mts +1 -2
  11. package/dist/index.d.mts.map +1 -1
  12. package/dist/index.mjs +0 -1
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/selectors.cjs +4 -40
  15. package/dist/selectors.cjs.map +1 -1
  16. package/dist/selectors.d.cts +114 -1208
  17. package/dist/selectors.d.cts.map +1 -1
  18. package/dist/selectors.d.mts +114 -1208
  19. package/dist/selectors.d.mts.map +1 -1
  20. package/dist/selectors.mjs +4 -40
  21. package/dist/selectors.mjs.map +1 -1
  22. package/dist/utils/quote-metadata/calculators.cjs +11 -6
  23. package/dist/utils/quote-metadata/calculators.cjs.map +1 -1
  24. package/dist/utils/quote-metadata/calculators.d.cts.map +1 -1
  25. package/dist/utils/quote-metadata/calculators.d.mts.map +1 -1
  26. package/dist/utils/quote-metadata/calculators.mjs +11 -6
  27. package/dist/utils/quote-metadata/calculators.mjs.map +1 -1
  28. package/dist/utils/quote-metadata/merge.cjs +10 -12
  29. package/dist/utils/quote-metadata/merge.cjs.map +1 -1
  30. package/dist/utils/quote-metadata/merge.d.cts +3 -6
  31. package/dist/utils/quote-metadata/merge.d.cts.map +1 -1
  32. package/dist/utils/quote-metadata/merge.d.mts +3 -6
  33. package/dist/utils/quote-metadata/merge.d.mts.map +1 -1
  34. package/dist/utils/quote-metadata/merge.mjs +10 -12
  35. package/dist/utils/quote-metadata/merge.mjs.map +1 -1
  36. package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs +16 -66
  37. package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs.map +1 -1
  38. package/dist/utils/quote-metadata/to-quote-metadata-v1.d.cts +1 -3
  39. package/dist/utils/quote-metadata/to-quote-metadata-v1.d.cts.map +1 -1
  40. package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts +1 -3
  41. package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts.map +1 -1
  42. package/dist/utils/quote-metadata/to-quote-metadata-v1.mjs +16 -66
  43. package/dist/utils/quote-metadata/to-quote-metadata-v1.mjs.map +1 -1
  44. package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs +42 -21
  45. package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs.map +1 -1
  46. package/dist/utils/quote-metadata/to-quote-metadata-v2.d.cts.map +1 -1
  47. package/dist/utils/quote-metadata/to-quote-metadata-v2.d.mts.map +1 -1
  48. package/dist/utils/quote-metadata/to-quote-metadata-v2.mjs +42 -21
  49. package/dist/utils/quote-metadata/to-quote-metadata-v2.mjs.map +1 -1
  50. package/dist/utils/quote-metadata/types.cjs +0 -16
  51. package/dist/utils/quote-metadata/types.cjs.map +1 -1
  52. package/dist/utils/quote-metadata/types.d.cts +0 -21
  53. package/dist/utils/quote-metadata/types.d.cts.map +1 -1
  54. package/dist/utils/quote-metadata/types.d.mts +0 -21
  55. package/dist/utils/quote-metadata/types.d.mts.map +1 -1
  56. package/dist/utils/quote-metadata/types.mjs +1 -15
  57. package/dist/utils/quote-metadata/types.mjs.map +1 -1
  58. package/package.json +2 -2
  59. package/dist/utils/quote-metadata/include-if-truthy.cjs +0 -14
  60. package/dist/utils/quote-metadata/include-if-truthy.cjs.map +0 -1
  61. package/dist/utils/quote-metadata/include-if-truthy.d.cts +0 -2
  62. package/dist/utils/quote-metadata/include-if-truthy.d.cts.map +0 -1
  63. package/dist/utils/quote-metadata/include-if-truthy.d.mts +0 -2
  64. package/dist/utils/quote-metadata/include-if-truthy.d.mts.map +0 -1
  65. package/dist/utils/quote-metadata/include-if-truthy.mjs +0 -10
  66. package/dist/utils/quote-metadata/include-if-truthy.mjs.map +0 -1
  67. package/dist/utils/quote-metadata/to-currency-values.cjs +0 -58
  68. package/dist/utils/quote-metadata/to-currency-values.cjs.map +0 -1
  69. package/dist/utils/quote-metadata/to-currency-values.d.cts +0 -12
  70. package/dist/utils/quote-metadata/to-currency-values.d.cts.map +0 -1
  71. package/dist/utils/quote-metadata/to-currency-values.d.mts +0 -12
  72. package/dist/utils/quote-metadata/to-currency-values.d.mts.map +0 -1
  73. package/dist/utils/quote-metadata/to-currency-values.mjs +0 -54
  74. package/dist/utils/quote-metadata/to-currency-values.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"to-quote-metadata-v1.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,8BAA8B;;;AAM3C,OAAO,EAAE,qBAAqB,EAAE,4CAA2C;AAE3E,OAAO,EAAE,UAAU,EAAE,iCAAgC;AACrD,OAAO,EAAE,eAAe,EAAE,gCAA+B;AAEzD,OAAO,EAAE,2BAA2B,EAAE,oBAAmB;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAEQ,EACR,iBAA8C,2BAA2B,CAAC,MAAM,EACjE,EAAE;IACjB,wBAAwB;IACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EACJ,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,cAAc,EACd,UAAU,EACV,eAAe,EACf,MAAM,EACN,WAAW,GACZ,GAAG,aAAa,CAAC;IAElB,MAAM,cAAc,GAAG;QACrB,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,QAAQ;QACR,MAAM;QACN,eAAe;QACf,GAAG,eAAe,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,CAAC;QACtD,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;QAClC,GAAG,eAAe,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC;QAChD,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC;QAC9C,GAAG,eAAe,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,CAAC;KACvD,CAAC;IAEF,IACE,cAAc,KAAK,2BAA2B,CAAC,MAAM;QACrD,CAAC,EAAE,CAAC,aAAa,EAAE,qBAAqB,CAAC,EACzC,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,EACJ,KAAK,EAAE,EACL,GAAG,EACH,IAAI,EACJ,SAAS,EACT,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GACrC,GACF,GAAG,aAAa,CAAC;IAElB,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEvD,MAAM,mBAAmB,GAAG,CAC1B,IAGC,EAC2B,EAAE;QAC9B,OAAO;YACL,MAAM,EAAE,IAAI,EAAE,gBAAgB;YAC9B,GAAG,EAAE,IAAI,EAAE,GAAG;YACd,eAAe,EAAE,IAAI,EAAE,eAAe;SACvC,CAAC;IACJ,CAAC,CAAC;IAEF,yBAAyB;IACzB,MAAM,UAAU,GAAkB;QAChC,GAAG,eAAe,CAAC,GAAG,EAAE;YACtB,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC;SACrC,CAAC;QACF,GAAG,eAAe,CAAC,IAAI,EAAE;YACvB,aAAa,EAAE,mBAAmB,CAAC,IAAI,CAAC;YACxC,gBAAgB,EAAE;gBAChB,MAAM,EAAE,IAAI,CAAC,mBAAmB;gBAChC,eAAe,EAAE,IAAI,CAAC,wBAAwB;gBAC9C,GAAG,EAAE,IAAI,CAAC,YAAY;aACvB;SACF,CAAC;QACF,GAAG,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC5D,GAAG,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE;YAC5C,cAAc,EAAE,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC;SAC/D,CAAC;QACF,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;YAC/B,MAAM,EAAE;gBACN,KAAK,EAAE,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;aACzC;SACF,CAAC;QACF,GAAG,eAAe,CAAC,iBAAiB,EAAE;YACpC,eAAe,EAAE,mBAAmB,CAAC,iBAAiB,CAAC;SACxD,CAAC;QACF,GAAG,CAAC,SAAS,EAAE,WAAW,IAAI;YAC5B,WAAW,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC;YACxD,0BAA0B;YAC1B,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC;SAClD,CAAC;QACF,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;YAC/B,UAAU,EAAE,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9C,CAAC;QACF,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;YAC7B,cAAc,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;SAChD,CAAC;KACH,CAAC;IAEF,IAAI,cAAc,KAAK,2BAA2B,CAAC,gBAAgB,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC","sourcesContent":["import { is } from '@metamask/superstruct';\nimport { merge } from 'lodash';\n\nimport type { DeepPartial } from '../../types.js';\nimport type { AmountsAndAsset } from '../../validators/amount-and-asset.js';\nimport type { QuoteResponseV1 } from '../../validators/quote-response-v1.js';\nimport { QuoteResponseSchemaV2 } from '../../validators/quote-response.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { sumAmounts } from '../number-formatters.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport type { QuoteMetadata, TokenAmountValues } from './types.js';\nimport { QuoteMetadataMigrationPhase } from './types.js';\n\n/**\n * Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.\n * If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.\n *\n * @param quoteResponse - The quote to extract the metadata from\n * @param migrationPhase - The migration phase to use\n * @returns A partial {@link QuoteMetadata} object\n */\nexport const toQuoteMetadataV1 = (\n quoteResponse:\n | (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata)\n | null,\n migrationPhase: QuoteMetadataMigrationPhase = QuoteMetadataMigrationPhase.V1Data,\n): QuoteMetadata => {\n /* istanbul ignore if */\n if (!quoteResponse) {\n return {};\n }\n\n const {\n toTokenAmount,\n minToTokenAmount,\n sentAmount,\n swapRate,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n totalNetworkFee,\n gasFee,\n priceImpact,\n } = quoteResponse;\n\n const legacyMetadata = {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n gasFee,\n totalNetworkFee,\n ...includeIfTruthy(adjustedReturn, { adjustedReturn }),\n ...includeIfTruthy(cost, { cost }),\n ...includeIfTruthy(priceImpact, { priceImpact }),\n ...includeIfTruthy(relayerFee, { relayerFee }),\n ...includeIfTruthy(includedTxFees, { includedTxFees }),\n };\n\n if (\n migrationPhase === QuoteMetadataMigrationPhase.V1Data ||\n !is(quoteResponse, QuoteResponseSchemaV2)\n ) {\n return legacyMetadata;\n }\n\n const {\n quote: {\n src,\n dest,\n priceData,\n feeData: { network, relayer, txFee },\n },\n } = quoteResponse;\n\n const totalNetworkFeeV2 = sumAmounts(network, relayer);\n\n const toTokenAmountValues = (\n data?: Pick<\n AmountsAndAsset,\n 'normalizedAmount' | 'usd' | 'valueInCurrency'\n >,\n ): Partial<TokenAmountValues> => {\n return {\n amount: data?.normalizedAmount,\n usd: data?.usd,\n valueInCurrency: data?.valueInCurrency,\n };\n };\n\n // Build V1 from V2 quote\n const v2Metadata: QuoteMetadata = {\n ...includeIfTruthy(src, {\n sentAmount: toTokenAmountValues(src),\n }),\n ...includeIfTruthy(dest, {\n toTokenAmount: toTokenAmountValues(dest),\n minToTokenAmount: {\n amount: dest.minAmountNormalized,\n valueInCurrency: dest.minAmountValueInCurrency,\n usd: dest.minAmountUsd,\n },\n }),\n ...(priceData?.swapRate && { swapRate: priceData.swapRate }),\n ...includeIfTruthy(priceData?.adjustedReturn, {\n adjustedReturn: toTokenAmountValues(priceData?.adjustedReturn),\n }),\n ...includeIfTruthy(network?.[0], {\n gasFee: {\n total: toTokenAmountValues(network?.[0]),\n },\n }),\n ...includeIfTruthy(totalNetworkFeeV2, {\n totalNetworkFee: toTokenAmountValues(totalNetworkFeeV2),\n }),\n ...(priceData?.priceImpact && {\n priceImpact: toTokenAmountValues(priceData?.priceImpact),\n // Use priceImpact as cost\n cost: toTokenAmountValues(priceData?.priceImpact),\n }),\n ...includeIfTruthy(relayer?.[0], {\n relayerFee: toTokenAmountValues(relayer?.[0]),\n }),\n ...includeIfTruthy(txFee?.[0], {\n includedTxFees: toTokenAmountValues(txFee?.[0]),\n }),\n };\n\n if (migrationPhase === QuoteMetadataMigrationPhase.V2WithV1Fallback) {\n return merge({}, legacyMetadata, v2Metadata);\n }\n\n return v2Metadata;\n};\n"]}
1
+ {"version":3,"file":"to-quote-metadata-v1.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":";;AAOA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAEQ,EACO,EAAE;IACjB,wBAAwB;IACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EACJ,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,cAAc,EACd,UAAU,EACV,eAAe,EACf,MAAM,EACN,WAAW,GACZ,GAAG,aAAa,CAAC;IAElB,MAAM,cAAc,GAAG;QACrB,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,QAAQ;QACR,MAAM;QACN,eAAe;QACf,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAC/D,CAAC,CAAC,EAAE,cAAc,EAAE;YACpB,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YACzD,CAAC,CAAC,EAAE,WAAW,EAAE;YACjB,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YACvD,CAAC,CAAC,EAAE,UAAU,EAAE;YAChB,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAC/D,CAAC,CAAC,EAAE,cAAc,EAAE;YACpB,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,mCAAmC;IACnC,OAAO,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;AACnC,CAAC,CAAC","sourcesContent":["import { merge } from 'lodash';\n\nimport type { DeepPartial } from '../../types.js';\nimport type { QuoteResponseV1 } from '../../validators/quote-response-v1.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport type { QuoteMetadata } from './types.js';\n\n/**\n * Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.\n * If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.\n *\n * @param quoteResponse - The quote to extract the metadata from\n * @returns A partial {@link QuoteMetadata} object\n */\nexport const toQuoteMetadataV1 = (\n quoteResponse:\n | (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata)\n | null,\n): QuoteMetadata => {\n /* istanbul ignore if */\n if (!quoteResponse) {\n return {};\n }\n\n const {\n toTokenAmount,\n minToTokenAmount,\n sentAmount,\n swapRate,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n totalNetworkFee,\n gasFee,\n priceImpact,\n } = quoteResponse;\n\n const legacyMetadata = {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n gasFee,\n totalNetworkFee,\n ...(adjustedReturn && Object.values(adjustedReturn).some(Boolean)\n ? { adjustedReturn }\n : {}),\n ...(cost && Object.values(cost).some(Boolean) ? { cost } : {}),\n ...(priceImpact && Object.values(priceImpact).some(Boolean)\n ? { priceImpact }\n : {}),\n ...(relayerFee && Object.values(relayerFee).some(Boolean)\n ? { relayerFee }\n : {}),\n ...(includedTxFees && Object.values(includedTxFees).some(Boolean)\n ? { includedTxFees }\n : {}),\n };\n\n // Phase 1 only uses legacyMetadata\n return merge({}, legacyMetadata);\n};\n"]}
@@ -5,7 +5,6 @@ const utils_1 = require("@metamask/utils");
5
5
  const quote_response_v1_to_v2_js_1 = require("../../coercers/quote-response-v1-to-v2.cjs");
6
6
  const bridge_js_1 = require("../bridge.cjs");
7
7
  const number_formatters_js_1 = require("../number-formatters.cjs");
8
- const include_if_truthy_js_1 = require("./include-if-truthy.cjs");
9
8
  /**
10
9
  * Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata
11
10
  *
@@ -29,21 +28,20 @@ const toQuoteMetadataV2 = (quoteMetadata, quoteResponseV2) => {
29
28
  valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,
30
29
  };
31
30
  const networkFeeToUse = gasFee?.total ?? totalNetworkFee;
32
- const toAmountAndAsset = (asset, metadata, extraFields) => {
33
- return {
34
- amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(metadata?.amount, asset?.decimals),
35
- normalizedAmount: metadata?.amount,
36
- valueInCurrency: metadata?.valueInCurrency,
37
- usd: metadata?.usd,
38
- ...extraFields,
39
- };
40
- };
41
31
  return {
42
32
  ...rest,
43
33
  quote: {
44
- src: toAmountAndAsset(srcAsset, sentAmount),
34
+ src: {
35
+ amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(sentAmount?.amount, srcAsset?.decimals),
36
+ normalizedAmount: sentAmount?.amount,
37
+ valueInCurrency: sentAmount?.valueInCurrency,
38
+ usd: sentAmount?.usd,
39
+ },
45
40
  dest: {
46
- ...toAmountAndAsset(destAsset, toTokenAmount),
41
+ amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(toTokenAmount?.amount, destAsset?.decimals),
42
+ normalizedAmount: toTokenAmount?.amount,
43
+ valueInCurrency: toTokenAmount?.valueInCurrency,
44
+ usd: toTokenAmount?.usd,
47
45
  minAmount: (0, number_formatters_js_1.calcAtomicTokenAmount)(minToTokenAmount?.amount, destAsset?.decimals),
48
46
  minAmountNormalized: minToTokenAmount?.amount,
49
47
  minAmountUsd: minToTokenAmount?.usd,
@@ -51,27 +49,50 @@ const toQuoteMetadataV2 = (quoteMetadata, quoteResponseV2) => {
51
49
  },
52
50
  feeData: {
53
51
  network: [
54
- toAmountAndAsset(nativeAsset, networkFeeToUse, {
52
+ {
53
+ amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(networkFeeToUse?.amount, nativeAsset?.decimals),
54
+ normalizedAmount: networkFeeToUse?.amount,
55
+ valueInCurrency: networkFeeToUse?.valueInCurrency,
56
+ usd: networkFeeToUse?.usd,
55
57
  asset: nativeAsset,
56
- }),
58
+ },
57
59
  ],
58
- ...(0, include_if_truthy_js_1.includeIfTruthy)(relayerFee, {
60
+ ...(relayerFee &&
61
+ Object.values(relayerFee).some(Boolean) && {
59
62
  relayer: [
60
- toAmountAndAsset(nativeAsset, relayerFee, { asset: nativeAsset }),
63
+ {
64
+ amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(relayerFee?.amount, nativeAsset?.decimals),
65
+ normalizedAmount: relayerFee.amount,
66
+ valueInCurrency: relayerFee.valueInCurrency,
67
+ usd: relayerFee.usd,
68
+ asset: nativeAsset,
69
+ },
61
70
  ],
62
71
  }),
63
- ...(0, include_if_truthy_js_1.includeIfTruthy)(includedTxFees, {
72
+ ...(includedTxFees &&
73
+ Object.values(includedTxFees).some(Boolean) && {
64
74
  txFee: [
65
- toAmountAndAsset(txFeeAsset, includedTxFees, { asset: txFeeAsset }),
75
+ {
76
+ amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(includedTxFees?.amount, txFeeAsset?.decimals),
77
+ normalizedAmount: includedTxFees?.amount,
78
+ valueInCurrency: includedTxFees?.valueInCurrency,
79
+ usd: includedTxFees?.usd,
80
+ asset: txFeeAsset,
81
+ },
66
82
  ],
67
83
  }),
68
84
  },
69
85
  priceData: {
70
- ...(0, include_if_truthy_js_1.includeIfTruthy)(priceImpactToUse, {
86
+ ...(priceImpactToUse &&
87
+ Object.values(priceImpactToUse).some(Boolean) && {
71
88
  priceImpact: priceImpactToUse,
72
89
  }),
73
- ...(0, include_if_truthy_js_1.includeIfTruthy)(adjustedReturn, {
74
- adjustedReturn,
90
+ ...(adjustedReturn &&
91
+ Object.values(adjustedReturn).some(Boolean) && {
92
+ adjustedReturn: {
93
+ valueInCurrency: adjustedReturn?.valueInCurrency,
94
+ usd: adjustedReturn?.usd,
95
+ },
75
96
  }),
76
97
  swapRate,
77
98
  },
@@ -1 +1 @@
1
- {"version":3,"file":"to-quote-metadata-v2.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseCaipAssetType } from '@metamask/utils';\n\nimport { toBridgeAssetV2 } from '../../coercers/quote-response-v1-to-v2.js';\nimport type { DeepPartial } from '../../types.js';\nimport type { AmountsAndAsset } from '../../validators/amount-and-asset.js';\nimport type { BridgeAssetV2 } from '../../validators/bridge-asset.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId } from '../bridge.js';\nimport { calcAtomicTokenAmount } from '../number-formatters.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport type { QuoteMetadata, TokenAmountValues } from './types.js';\n\n/**\n * Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata\n *\n * @param quoteMetadata - The {@link QuoteMetadata} to convert\n * @param quoteResponseV2 - The {@link QuoteResponse} to use for token data\n * @returns The {@link DeepPartial<QuoteResponse>}\n */\nexport const toQuoteMetadataV2 = (\n quoteMetadata: QuoteMetadata,\n quoteResponseV2?: DeepPartial<QuoteResponse>,\n): DeepPartial<QuoteResponse> => {\n const {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n totalNetworkFee,\n gasFee,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n priceImpact,\n ...rest\n } = quoteMetadata;\n\n const srcAsset = quoteResponseV2?.quote?.src?.asset;\n const destAsset = quoteResponseV2?.quote?.dest?.asset;\n\n const chainId = srcAsset?.assetId\n ? parseCaipAssetType(srcAsset.assetId)?.chainId\n : undefined;\n const nativeAsset = chainId\n ? toBridgeAssetV2(getNativeAssetForChainId(chainId))\n : undefined;\n const txFeeAsset = quoteResponseV2?.quote?.feeData?.txFee?.[0]?.asset;\n\n const priceImpactToUse = {\n usd: priceImpact?.usd ?? cost?.usd,\n valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,\n };\n const networkFeeToUse = gasFee?.total ?? totalNetworkFee;\n\n const toAmountAndAsset = (\n asset?: DeepPartial<BridgeAssetV2>,\n metadata?: Partial<TokenAmountValues>,\n extraFields?: DeepPartial<AmountsAndAsset>,\n ): DeepPartial<AmountsAndAsset> => {\n return {\n amount: calcAtomicTokenAmount(metadata?.amount, asset?.decimals),\n normalizedAmount: metadata?.amount,\n valueInCurrency: metadata?.valueInCurrency,\n usd: metadata?.usd,\n ...extraFields,\n };\n };\n\n return {\n ...rest,\n quote: {\n src: toAmountAndAsset(srcAsset, sentAmount),\n dest: {\n ...toAmountAndAsset(destAsset, toTokenAmount),\n minAmount: calcAtomicTokenAmount(\n minToTokenAmount?.amount,\n destAsset?.decimals,\n ),\n minAmountNormalized: minToTokenAmount?.amount,\n minAmountUsd: minToTokenAmount?.usd,\n minAmountValueInCurrency: minToTokenAmount?.valueInCurrency,\n },\n feeData: {\n network: [\n toAmountAndAsset(nativeAsset, networkFeeToUse, {\n asset: nativeAsset,\n }),\n ],\n ...includeIfTruthy(relayerFee, {\n relayer: [\n toAmountAndAsset(nativeAsset, relayerFee, { asset: nativeAsset }),\n ],\n }),\n ...includeIfTruthy(includedTxFees, {\n txFee: [\n toAmountAndAsset(txFeeAsset, includedTxFees, { asset: txFeeAsset }),\n ],\n }),\n },\n priceData: {\n ...includeIfTruthy(priceImpactToUse, {\n priceImpact: priceImpactToUse,\n }),\n ...includeIfTruthy(adjustedReturn, {\n adjustedReturn,\n }),\n swapRate,\n },\n },\n };\n};\n"]}
1
+ {"version":3,"file":"to-quote-metadata-v2.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseCaipAssetType } from '@metamask/utils';\n\nimport { toBridgeAssetV2 } from '../../coercers/quote-response-v1-to-v2.js';\nimport type { DeepPartial } from '../../types.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId } from '../bridge.js';\nimport { calcAtomicTokenAmount } from '../number-formatters.js';\nimport type { QuoteMetadata } from './types.js';\n\n/**\n * Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata\n *\n * @param quoteMetadata - The {@link QuoteMetadata} to convert\n * @param quoteResponseV2 - The {@link QuoteResponse} to use for token data\n * @returns The {@link DeepPartial<QuoteResponse>}\n */\nexport const toQuoteMetadataV2 = (\n quoteMetadata: QuoteMetadata,\n quoteResponseV2?: DeepPartial<QuoteResponse>,\n): DeepPartial<QuoteResponse> => {\n const {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n totalNetworkFee,\n gasFee,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n priceImpact,\n ...rest\n } = quoteMetadata;\n\n const srcAsset = quoteResponseV2?.quote?.src?.asset;\n const destAsset = quoteResponseV2?.quote?.dest?.asset;\n\n const chainId = srcAsset?.assetId\n ? parseCaipAssetType(srcAsset.assetId)?.chainId\n : undefined;\n const nativeAsset = chainId\n ? toBridgeAssetV2(getNativeAssetForChainId(chainId))\n : undefined;\n const txFeeAsset = quoteResponseV2?.quote?.feeData?.txFee?.[0]?.asset;\n\n const priceImpactToUse = {\n usd: priceImpact?.usd ?? cost?.usd,\n valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,\n };\n const networkFeeToUse = gasFee?.total ?? totalNetworkFee;\n\n return {\n ...rest,\n quote: {\n src: {\n amount: calcAtomicTokenAmount(sentAmount?.amount, srcAsset?.decimals),\n normalizedAmount: sentAmount?.amount,\n valueInCurrency: sentAmount?.valueInCurrency,\n usd: sentAmount?.usd,\n },\n dest: {\n amount: calcAtomicTokenAmount(\n toTokenAmount?.amount,\n destAsset?.decimals,\n ),\n normalizedAmount: toTokenAmount?.amount,\n valueInCurrency: toTokenAmount?.valueInCurrency,\n usd: toTokenAmount?.usd,\n minAmount: calcAtomicTokenAmount(\n minToTokenAmount?.amount,\n destAsset?.decimals,\n ),\n minAmountNormalized: minToTokenAmount?.amount,\n minAmountUsd: minToTokenAmount?.usd,\n minAmountValueInCurrency: minToTokenAmount?.valueInCurrency,\n },\n feeData: {\n network: [\n {\n amount: calcAtomicTokenAmount(\n networkFeeToUse?.amount,\n nativeAsset?.decimals,\n ),\n normalizedAmount: networkFeeToUse?.amount,\n valueInCurrency: networkFeeToUse?.valueInCurrency,\n usd: networkFeeToUse?.usd,\n asset: nativeAsset,\n },\n ],\n ...(relayerFee &&\n Object.values(relayerFee).some(Boolean) && {\n relayer: [\n {\n amount: calcAtomicTokenAmount(\n relayerFee?.amount,\n nativeAsset?.decimals,\n ),\n normalizedAmount: relayerFee.amount,\n valueInCurrency: relayerFee.valueInCurrency,\n usd: relayerFee.usd,\n asset: nativeAsset,\n },\n ],\n }),\n ...(includedTxFees &&\n Object.values(includedTxFees).some(Boolean) && {\n txFee: [\n {\n amount: calcAtomicTokenAmount(\n includedTxFees?.amount,\n txFeeAsset?.decimals,\n ),\n normalizedAmount: includedTxFees?.amount,\n valueInCurrency: includedTxFees?.valueInCurrency,\n usd: includedTxFees?.usd,\n asset: txFeeAsset,\n },\n ],\n }),\n },\n priceData: {\n ...(priceImpactToUse &&\n Object.values(priceImpactToUse).some(Boolean) && {\n priceImpact: priceImpactToUse,\n }),\n ...(adjustedReturn &&\n Object.values(adjustedReturn).some(Boolean) && {\n adjustedReturn: {\n valueInCurrency: adjustedReturn?.valueInCurrency,\n usd: adjustedReturn?.usd,\n },\n }),\n swapRate,\n },\n },\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"to-quote-metadata-v2.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAIxE,OAAO,KAAK,EAAE,aAAa,EAAqB,oBAAmB;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,kBACb,aAAa,oBACV,YAAY,aAAa,CAAC,KAC3C,YAAY,aAAa,CAyF3B,CAAC"}
1
+ {"version":3,"file":"to-quote-metadata-v2.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAmB;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,kBACb,aAAa,oBACV,YAAY,aAAa,CAAC,KAC3C,YAAY,aAAa,CAsH3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"to-quote-metadata-v2.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAIxE,OAAO,KAAK,EAAE,aAAa,EAAqB,oBAAmB;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,kBACb,aAAa,oBACV,YAAY,aAAa,CAAC,KAC3C,YAAY,aAAa,CAyF3B,CAAC"}
1
+ {"version":3,"file":"to-quote-metadata-v2.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAmB;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,kBACb,aAAa,oBACV,YAAY,aAAa,CAAC,KAC3C,YAAY,aAAa,CAsH3B,CAAC"}
@@ -2,7 +2,6 @@ import { parseCaipAssetType } from "@metamask/utils";
2
2
  import { toBridgeAssetV2 } from "../../coercers/quote-response-v1-to-v2.mjs";
3
3
  import { getNativeAssetForChainId } from "../bridge.mjs";
4
4
  import { calcAtomicTokenAmount } from "../number-formatters.mjs";
5
- import { includeIfTruthy } from "./include-if-truthy.mjs";
6
5
  /**
7
6
  * Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata
8
7
  *
@@ -26,21 +25,20 @@ export const toQuoteMetadataV2 = (quoteMetadata, quoteResponseV2) => {
26
25
  valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,
27
26
  };
28
27
  const networkFeeToUse = gasFee?.total ?? totalNetworkFee;
29
- const toAmountAndAsset = (asset, metadata, extraFields) => {
30
- return {
31
- amount: calcAtomicTokenAmount(metadata?.amount, asset?.decimals),
32
- normalizedAmount: metadata?.amount,
33
- valueInCurrency: metadata?.valueInCurrency,
34
- usd: metadata?.usd,
35
- ...extraFields,
36
- };
37
- };
38
28
  return {
39
29
  ...rest,
40
30
  quote: {
41
- src: toAmountAndAsset(srcAsset, sentAmount),
31
+ src: {
32
+ amount: calcAtomicTokenAmount(sentAmount?.amount, srcAsset?.decimals),
33
+ normalizedAmount: sentAmount?.amount,
34
+ valueInCurrency: sentAmount?.valueInCurrency,
35
+ usd: sentAmount?.usd,
36
+ },
42
37
  dest: {
43
- ...toAmountAndAsset(destAsset, toTokenAmount),
38
+ amount: calcAtomicTokenAmount(toTokenAmount?.amount, destAsset?.decimals),
39
+ normalizedAmount: toTokenAmount?.amount,
40
+ valueInCurrency: toTokenAmount?.valueInCurrency,
41
+ usd: toTokenAmount?.usd,
44
42
  minAmount: calcAtomicTokenAmount(minToTokenAmount?.amount, destAsset?.decimals),
45
43
  minAmountNormalized: minToTokenAmount?.amount,
46
44
  minAmountUsd: minToTokenAmount?.usd,
@@ -48,27 +46,50 @@ export const toQuoteMetadataV2 = (quoteMetadata, quoteResponseV2) => {
48
46
  },
49
47
  feeData: {
50
48
  network: [
51
- toAmountAndAsset(nativeAsset, networkFeeToUse, {
49
+ {
50
+ amount: calcAtomicTokenAmount(networkFeeToUse?.amount, nativeAsset?.decimals),
51
+ normalizedAmount: networkFeeToUse?.amount,
52
+ valueInCurrency: networkFeeToUse?.valueInCurrency,
53
+ usd: networkFeeToUse?.usd,
52
54
  asset: nativeAsset,
53
- }),
55
+ },
54
56
  ],
55
- ...includeIfTruthy(relayerFee, {
57
+ ...(relayerFee &&
58
+ Object.values(relayerFee).some(Boolean) && {
56
59
  relayer: [
57
- toAmountAndAsset(nativeAsset, relayerFee, { asset: nativeAsset }),
60
+ {
61
+ amount: calcAtomicTokenAmount(relayerFee?.amount, nativeAsset?.decimals),
62
+ normalizedAmount: relayerFee.amount,
63
+ valueInCurrency: relayerFee.valueInCurrency,
64
+ usd: relayerFee.usd,
65
+ asset: nativeAsset,
66
+ },
58
67
  ],
59
68
  }),
60
- ...includeIfTruthy(includedTxFees, {
69
+ ...(includedTxFees &&
70
+ Object.values(includedTxFees).some(Boolean) && {
61
71
  txFee: [
62
- toAmountAndAsset(txFeeAsset, includedTxFees, { asset: txFeeAsset }),
72
+ {
73
+ amount: calcAtomicTokenAmount(includedTxFees?.amount, txFeeAsset?.decimals),
74
+ normalizedAmount: includedTxFees?.amount,
75
+ valueInCurrency: includedTxFees?.valueInCurrency,
76
+ usd: includedTxFees?.usd,
77
+ asset: txFeeAsset,
78
+ },
63
79
  ],
64
80
  }),
65
81
  },
66
82
  priceData: {
67
- ...includeIfTruthy(priceImpactToUse, {
83
+ ...(priceImpactToUse &&
84
+ Object.values(priceImpactToUse).some(Boolean) && {
68
85
  priceImpact: priceImpactToUse,
69
86
  }),
70
- ...includeIfTruthy(adjustedReturn, {
71
- adjustedReturn,
87
+ ...(adjustedReturn &&
88
+ Object.values(adjustedReturn).some(Boolean) && {
89
+ adjustedReturn: {
90
+ valueInCurrency: adjustedReturn?.valueInCurrency,
91
+ usd: adjustedReturn?.usd,
92
+ },
72
93
  }),
73
94
  swapRate,
74
95
  },
@@ -1 +1 @@
1
- {"version":3,"file":"to-quote-metadata-v2.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseCaipAssetType } from '@metamask/utils';\n\nimport { toBridgeAssetV2 } from '../../coercers/quote-response-v1-to-v2.js';\nimport type { DeepPartial } from '../../types.js';\nimport type { AmountsAndAsset } from '../../validators/amount-and-asset.js';\nimport type { BridgeAssetV2 } from '../../validators/bridge-asset.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId } from '../bridge.js';\nimport { calcAtomicTokenAmount } from '../number-formatters.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport type { QuoteMetadata, TokenAmountValues } from './types.js';\n\n/**\n * Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata\n *\n * @param quoteMetadata - The {@link QuoteMetadata} to convert\n * @param quoteResponseV2 - The {@link QuoteResponse} to use for token data\n * @returns The {@link DeepPartial<QuoteResponse>}\n */\nexport const toQuoteMetadataV2 = (\n quoteMetadata: QuoteMetadata,\n quoteResponseV2?: DeepPartial<QuoteResponse>,\n): DeepPartial<QuoteResponse> => {\n const {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n totalNetworkFee,\n gasFee,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n priceImpact,\n ...rest\n } = quoteMetadata;\n\n const srcAsset = quoteResponseV2?.quote?.src?.asset;\n const destAsset = quoteResponseV2?.quote?.dest?.asset;\n\n const chainId = srcAsset?.assetId\n ? parseCaipAssetType(srcAsset.assetId)?.chainId\n : undefined;\n const nativeAsset = chainId\n ? toBridgeAssetV2(getNativeAssetForChainId(chainId))\n : undefined;\n const txFeeAsset = quoteResponseV2?.quote?.feeData?.txFee?.[0]?.asset;\n\n const priceImpactToUse = {\n usd: priceImpact?.usd ?? cost?.usd,\n valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,\n };\n const networkFeeToUse = gasFee?.total ?? totalNetworkFee;\n\n const toAmountAndAsset = (\n asset?: DeepPartial<BridgeAssetV2>,\n metadata?: Partial<TokenAmountValues>,\n extraFields?: DeepPartial<AmountsAndAsset>,\n ): DeepPartial<AmountsAndAsset> => {\n return {\n amount: calcAtomicTokenAmount(metadata?.amount, asset?.decimals),\n normalizedAmount: metadata?.amount,\n valueInCurrency: metadata?.valueInCurrency,\n usd: metadata?.usd,\n ...extraFields,\n };\n };\n\n return {\n ...rest,\n quote: {\n src: toAmountAndAsset(srcAsset, sentAmount),\n dest: {\n ...toAmountAndAsset(destAsset, toTokenAmount),\n minAmount: calcAtomicTokenAmount(\n minToTokenAmount?.amount,\n destAsset?.decimals,\n ),\n minAmountNormalized: minToTokenAmount?.amount,\n minAmountUsd: minToTokenAmount?.usd,\n minAmountValueInCurrency: minToTokenAmount?.valueInCurrency,\n },\n feeData: {\n network: [\n toAmountAndAsset(nativeAsset, networkFeeToUse, {\n asset: nativeAsset,\n }),\n ],\n ...includeIfTruthy(relayerFee, {\n relayer: [\n toAmountAndAsset(nativeAsset, relayerFee, { asset: nativeAsset }),\n ],\n }),\n ...includeIfTruthy(includedTxFees, {\n txFee: [\n toAmountAndAsset(txFeeAsset, includedTxFees, { asset: txFeeAsset }),\n ],\n }),\n },\n priceData: {\n ...includeIfTruthy(priceImpactToUse, {\n priceImpact: priceImpactToUse,\n }),\n ...includeIfTruthy(adjustedReturn, {\n adjustedReturn,\n }),\n swapRate,\n },\n },\n };\n};\n"]}
1
+ {"version":3,"file":"to-quote-metadata-v2.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseCaipAssetType } from '@metamask/utils';\n\nimport { toBridgeAssetV2 } from '../../coercers/quote-response-v1-to-v2.js';\nimport type { DeepPartial } from '../../types.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId } from '../bridge.js';\nimport { calcAtomicTokenAmount } from '../number-formatters.js';\nimport type { QuoteMetadata } from './types.js';\n\n/**\n * Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata\n *\n * @param quoteMetadata - The {@link QuoteMetadata} to convert\n * @param quoteResponseV2 - The {@link QuoteResponse} to use for token data\n * @returns The {@link DeepPartial<QuoteResponse>}\n */\nexport const toQuoteMetadataV2 = (\n quoteMetadata: QuoteMetadata,\n quoteResponseV2?: DeepPartial<QuoteResponse>,\n): DeepPartial<QuoteResponse> => {\n const {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n totalNetworkFee,\n gasFee,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n priceImpact,\n ...rest\n } = quoteMetadata;\n\n const srcAsset = quoteResponseV2?.quote?.src?.asset;\n const destAsset = quoteResponseV2?.quote?.dest?.asset;\n\n const chainId = srcAsset?.assetId\n ? parseCaipAssetType(srcAsset.assetId)?.chainId\n : undefined;\n const nativeAsset = chainId\n ? toBridgeAssetV2(getNativeAssetForChainId(chainId))\n : undefined;\n const txFeeAsset = quoteResponseV2?.quote?.feeData?.txFee?.[0]?.asset;\n\n const priceImpactToUse = {\n usd: priceImpact?.usd ?? cost?.usd,\n valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,\n };\n const networkFeeToUse = gasFee?.total ?? totalNetworkFee;\n\n return {\n ...rest,\n quote: {\n src: {\n amount: calcAtomicTokenAmount(sentAmount?.amount, srcAsset?.decimals),\n normalizedAmount: sentAmount?.amount,\n valueInCurrency: sentAmount?.valueInCurrency,\n usd: sentAmount?.usd,\n },\n dest: {\n amount: calcAtomicTokenAmount(\n toTokenAmount?.amount,\n destAsset?.decimals,\n ),\n normalizedAmount: toTokenAmount?.amount,\n valueInCurrency: toTokenAmount?.valueInCurrency,\n usd: toTokenAmount?.usd,\n minAmount: calcAtomicTokenAmount(\n minToTokenAmount?.amount,\n destAsset?.decimals,\n ),\n minAmountNormalized: minToTokenAmount?.amount,\n minAmountUsd: minToTokenAmount?.usd,\n minAmountValueInCurrency: minToTokenAmount?.valueInCurrency,\n },\n feeData: {\n network: [\n {\n amount: calcAtomicTokenAmount(\n networkFeeToUse?.amount,\n nativeAsset?.decimals,\n ),\n normalizedAmount: networkFeeToUse?.amount,\n valueInCurrency: networkFeeToUse?.valueInCurrency,\n usd: networkFeeToUse?.usd,\n asset: nativeAsset,\n },\n ],\n ...(relayerFee &&\n Object.values(relayerFee).some(Boolean) && {\n relayer: [\n {\n amount: calcAtomicTokenAmount(\n relayerFee?.amount,\n nativeAsset?.decimals,\n ),\n normalizedAmount: relayerFee.amount,\n valueInCurrency: relayerFee.valueInCurrency,\n usd: relayerFee.usd,\n asset: nativeAsset,\n },\n ],\n }),\n ...(includedTxFees &&\n Object.values(includedTxFees).some(Boolean) && {\n txFee: [\n {\n amount: calcAtomicTokenAmount(\n includedTxFees?.amount,\n txFeeAsset?.decimals,\n ),\n normalizedAmount: includedTxFees?.amount,\n valueInCurrency: includedTxFees?.valueInCurrency,\n usd: includedTxFees?.usd,\n asset: txFeeAsset,\n },\n ],\n }),\n },\n priceData: {\n ...(priceImpactToUse &&\n Object.values(priceImpactToUse).some(Boolean) && {\n priceImpact: priceImpactToUse,\n }),\n ...(adjustedReturn &&\n Object.values(adjustedReturn).some(Boolean) && {\n adjustedReturn: {\n valueInCurrency: adjustedReturn?.valueInCurrency,\n usd: adjustedReturn?.usd,\n },\n }),\n swapRate,\n },\n },\n };\n};\n"]}
@@ -1,19 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QuoteMetadataMigrationPhase = void 0;
4
- exports.QuoteMetadataMigrationPhase = {
5
- /**
6
- * Phase 1: omit API V2 currency metadata; serve legacy calcQuoteMetadata
7
- * into V2 nested shape
8
- */
9
- V1Data: '1',
10
- /**
11
- * Phase 1.5: prefer API V2 metadata (+ fiat from usd); fall back to legacy.
12
- */
13
- V2WithV1Fallback: '1.5',
14
- /**
15
- * Phase 2: API V2 metadata only; legacy metadata utils can be removed.
16
- */
17
- V2Only: '2',
18
- };
19
3
  //# sourceMappingURL=types.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/types.ts"],"names":[],"mappings":";;;AA+Fa,QAAA,2BAA2B,GAAG;IACzC;;;OAGG;IACH,MAAM,EAAE,GAAG;IACX;;OAEG;IACH,gBAAgB,EAAE,KAAK;IACvB;;OAEG;IACH,MAAM,EAAE,GAAG;CACH,CAAC","sourcesContent":["import type { DeepPartial } from '../../types.js';\n\n/**\n * The types of values for the token amount and its values when converted to the user's selected currency and USD\n */\nexport type TokenAmountValues = {\n /**\n * The amount of the token\n *\n * @example \"1.005\"\n */\n amount: string;\n /**\n * The amount of the token in the user's selected currency\n *\n * @example \"4.55\"\n */\n valueInCurrency: string;\n /**\n * The amount of the token in USD\n *\n * @example \"1.234\"\n */\n usd: string;\n};\n\n/**\n * Values derived from the quote response\n *\n * @deprecated Avoid introducing new usages and use the QuoteResponse V2 type instead\n */\ntype QuoteMetadataV1 = {\n /**\n * If gas is included, this is the value of the src or dest token that was used to pay for the gas.\n * Show this value to indicate transaction fees for gasless quotes.\n */\n includedTxFees?: Partial<TokenAmountValues>;\n /**\n * The gas fee for the bridge transaction.\n * effective is the gas fee that is shown to the user. If this value is not\n * included in the trade, the calculation falls back to the gasLimit (total)\n * total is the gas fee that is spent by the user, including refunds.\n * max is the max gas fee that will be used by the transaction.\n */\n gasFee: Record<'total', TokenAmountValues>;\n relayerFee?: Partial<TokenAmountValues>; // relayer/provider fee in native units\n /**\n * The total network fee required to submit the trade and any approvals. This includes\n * the relayer fee or other native fees. Should be used for balance checks and tx submission.\n * Note: This is only accurate for non-gasless transactions. Use {@link QuoteMetadata.includedTxFees} to\n * get the total network fee for gasless transactions.\n */\n totalNetworkFee: TokenAmountValues; // gasFee.total + relayerFee\n /**\n * The amount that the user will receive (destTokenAmount)\n */\n toTokenAmount: TokenAmountValues;\n /**\n * The minimum amount that the user will receive (minDestTokenAmount)\n */\n minToTokenAmount: TokenAmountValues;\n /**\n * If gas is included: {@link QuoteMetadata.toTokenAmount} - {@link QuoteMetadata.includedTxFees}.\n * Otherwise: {@link QuoteMetadata.toTokenAmount} - {@link QuoteMetadata.totalNetworkFee}.\n */\n adjustedReturn: Omit<TokenAmountValues, 'amount'>;\n /**\n * The amount that the user will send, including fees that are paid in the src token\n * {@link Quote.srcTokenAmount} + {@link Quote.feeData[FeeType.METABRIDGE].amount} + {@link Quote.feeData[FeeType.TX_FEE].amount}\n */\n sentAmount: TokenAmountValues;\n /**\n * The swap rate is the amount that the user will receive per amount sent. Accounts for fees paid in the src or dest token.\n * This is calculated as {@link QuoteMetadata.toTokenAmount} / {@link QuoteMetadata.sentAmount}.\n */\n swapRate: string;\n /**\n * The cost of the trade, which is the difference between the amount sent and the adjusted return.\n * This is calculated as {@link QuoteMetadata.sentAmount} - {@link QuoteMetadata.adjustedReturn}.\n */\n cost: Omit<TokenAmountValues, 'amount'>; // sentAmount - adjustedReturn\n\n /**\n * The price impact for the quote.\n */\n priceImpact: Omit<TokenAmountValues, 'amount'>; // abs(sentAmount - toTokenAmount);\n};\n\n/**\n * The partial legacy quote metadata\n *\n * @deprecated Avoid introducing new usages and use the nested QuoteResponse metadata instead\n */\nexport type QuoteMetadata = DeepPartial<QuoteMetadataV1>;\n\nexport const QuoteMetadataMigrationPhase = {\n /**\n * Phase 1: omit API V2 currency metadata; serve legacy calcQuoteMetadata\n * into V2 nested shape\n */\n V1Data: '1',\n /**\n * Phase 1.5: prefer API V2 metadata (+ fiat from usd); fall back to legacy.\n */\n V2WithV1Fallback: '1.5',\n /**\n * Phase 2: API V2 metadata only; legacy metadata utils can be removed.\n */\n V2Only: '2',\n} as const;\n\nexport type QuoteMetadataMigrationPhase =\n (typeof QuoteMetadataMigrationPhase)[keyof typeof QuoteMetadataMigrationPhase];\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { DeepPartial } from '../../types.js';\n\n/**\n * The types of values for the token amount and its values when converted to the user's selected currency and USD\n */\nexport type TokenAmountValues = {\n /**\n * The amount of the token\n *\n * @example \"1.005\"\n */\n amount: string;\n /**\n * The amount of the token in the user's selected currency\n *\n * @example \"4.55\"\n */\n valueInCurrency: string;\n /**\n * The amount of the token in USD\n *\n * @example \"1.234\"\n */\n usd: string;\n};\n\n/**\n * Values derived from the quote response\n *\n * @deprecated Avoid introducing new usages and use the QuoteResponse V2 type instead\n */\ntype QuoteMetadataV1 = {\n /**\n * If gas is included, this is the value of the src or dest token that was used to pay for the gas.\n * Show this value to indicate transaction fees for gasless quotes.\n */\n includedTxFees?: Partial<TokenAmountValues>;\n /**\n * The gas fee for the bridge transaction.\n * effective is the gas fee that is shown to the user. If this value is not\n * included in the trade, the calculation falls back to the gasLimit (total)\n * total is the gas fee that is spent by the user, including refunds.\n * max is the max gas fee that will be used by the transaction.\n */\n gasFee: Record<'total', TokenAmountValues>;\n relayerFee?: Partial<TokenAmountValues>; // relayer/provider fee in native units\n /**\n * The total network fee required to submit the trade and any approvals. This includes\n * the relayer fee or other native fees. Should be used for balance checks and tx submission.\n * Note: This is only accurate for non-gasless transactions. Use {@link QuoteMetadata.includedTxFees} to\n * get the total network fee for gasless transactions.\n */\n totalNetworkFee: TokenAmountValues; // gasFee.total + relayerFee\n /**\n * The amount that the user will receive (destTokenAmount)\n */\n toTokenAmount: TokenAmountValues;\n /**\n * The minimum amount that the user will receive (minDestTokenAmount)\n */\n minToTokenAmount: TokenAmountValues;\n /**\n * If gas is included: {@link QuoteMetadata.toTokenAmount} - {@link QuoteMetadata.includedTxFees}.\n * Otherwise: {@link QuoteMetadata.toTokenAmount} - {@link QuoteMetadata.totalNetworkFee}.\n */\n adjustedReturn: Omit<TokenAmountValues, 'amount'>;\n /**\n * The amount that the user will send, including fees that are paid in the src token\n * {@link Quote.srcTokenAmount} + {@link Quote.feeData[FeeType.METABRIDGE].amount} + {@link Quote.feeData[FeeType.TX_FEE].amount}\n */\n sentAmount: TokenAmountValues;\n /**\n * The swap rate is the amount that the user will receive per amount sent. Accounts for fees paid in the src or dest token.\n * This is calculated as {@link QuoteMetadata.toTokenAmount} / {@link QuoteMetadata.sentAmount}.\n */\n swapRate: string;\n /**\n * The cost of the trade, which is the difference between the amount sent and the adjusted return.\n * This is calculated as {@link QuoteMetadata.sentAmount} - {@link QuoteMetadata.adjustedReturn}.\n */\n cost: Omit<TokenAmountValues, 'amount'>; // sentAmount - adjustedReturn\n\n /**\n * The price impact for the quote.\n */\n priceImpact: Omit<TokenAmountValues, 'amount'>; // abs(sentAmount - toTokenAmount);\n};\n\nexport type QuoteMetadata = DeepPartial<QuoteMetadataV1>;\n"]}
@@ -82,27 +82,6 @@ type QuoteMetadataV1 = {
82
82
  */
83
83
  priceImpact: Omit<TokenAmountValues, 'amount'>;
84
84
  };
85
- /**
86
- * The partial legacy quote metadata
87
- *
88
- * @deprecated Avoid introducing new usages and use the nested QuoteResponse metadata instead
89
- */
90
85
  export type QuoteMetadata = DeepPartial<QuoteMetadataV1>;
91
- export declare const QuoteMetadataMigrationPhase: {
92
- /**
93
- * Phase 1: omit API V2 currency metadata; serve legacy calcQuoteMetadata
94
- * into V2 nested shape
95
- */
96
- readonly V1Data: "1";
97
- /**
98
- * Phase 1.5: prefer API V2 metadata (+ fiat from usd); fall back to legacy.
99
- */
100
- readonly V2WithV1Fallback: "1.5";
101
- /**
102
- * Phase 2: API V2 metadata only; legacy metadata utils can be removed.
103
- */
104
- readonly V2Only: "2";
105
- };
106
- export type QuoteMetadataMigrationPhase = (typeof QuoteMetadataMigrationPhase)[keyof typeof QuoteMetadataMigrationPhase];
107
86
  export {};
108
87
  //# sourceMappingURL=types.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAElD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;GAIG;AACH,KAAK,eAAe,GAAG;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxC;;;;;OAKG;IACH,eAAe,EAAE,iBAAiB,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,iBAAiB,CAAC;IACjC;;OAEG;IACH,gBAAgB,EAAE,iBAAiB,CAAC;IACpC;;;OAGG;IACH,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAClD;;;OAGG;IACH,UAAU,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAExC;;OAEG;IACH,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;CAChD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;AAEzD,eAAO,MAAM,2BAA2B;IACtC;;;OAGG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAElD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;GAIG;AACH,KAAK,eAAe,GAAG;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxC;;;;;OAKG;IACH,eAAe,EAAE,iBAAiB,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,iBAAiB,CAAC;IACjC;;OAEG;IACH,gBAAgB,EAAE,iBAAiB,CAAC;IACpC;;;OAGG;IACH,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAClD;;;OAGG;IACH,UAAU,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAExC;;OAEG;IACH,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC"}
@@ -82,27 +82,6 @@ type QuoteMetadataV1 = {
82
82
  */
83
83
  priceImpact: Omit<TokenAmountValues, 'amount'>;
84
84
  };
85
- /**
86
- * The partial legacy quote metadata
87
- *
88
- * @deprecated Avoid introducing new usages and use the nested QuoteResponse metadata instead
89
- */
90
85
  export type QuoteMetadata = DeepPartial<QuoteMetadataV1>;
91
- export declare const QuoteMetadataMigrationPhase: {
92
- /**
93
- * Phase 1: omit API V2 currency metadata; serve legacy calcQuoteMetadata
94
- * into V2 nested shape
95
- */
96
- readonly V1Data: "1";
97
- /**
98
- * Phase 1.5: prefer API V2 metadata (+ fiat from usd); fall back to legacy.
99
- */
100
- readonly V2WithV1Fallback: "1.5";
101
- /**
102
- * Phase 2: API V2 metadata only; legacy metadata utils can be removed.
103
- */
104
- readonly V2Only: "2";
105
- };
106
- export type QuoteMetadataMigrationPhase = (typeof QuoteMetadataMigrationPhase)[keyof typeof QuoteMetadataMigrationPhase];
107
86
  export {};
108
87
  //# sourceMappingURL=types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAElD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;GAIG;AACH,KAAK,eAAe,GAAG;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxC;;;;;OAKG;IACH,eAAe,EAAE,iBAAiB,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,iBAAiB,CAAC;IACjC;;OAEG;IACH,gBAAgB,EAAE,iBAAiB,CAAC;IACpC;;;OAGG;IACH,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAClD;;;OAGG;IACH,UAAU,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAExC;;OAEG;IACH,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;CAChD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;AAEzD,eAAO,MAAM,2BAA2B;IACtC;;;OAGG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAElD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;GAIG;AACH,KAAK,eAAe,GAAG;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxC;;;;;OAKG;IACH,eAAe,EAAE,iBAAiB,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,iBAAiB,CAAC;IACjC;;OAEG;IACH,gBAAgB,EAAE,iBAAiB,CAAC;IACpC;;;OAGG;IACH,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAClD;;;OAGG;IACH,UAAU,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAExC;;OAEG;IACH,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC"}
@@ -1,16 +1,2 @@
1
- export const QuoteMetadataMigrationPhase = {
2
- /**
3
- * Phase 1: omit API V2 currency metadata; serve legacy calcQuoteMetadata
4
- * into V2 nested shape
5
- */
6
- V1Data: '1',
7
- /**
8
- * Phase 1.5: prefer API V2 metadata (+ fiat from usd); fall back to legacy.
9
- */
10
- V2WithV1Fallback: '1.5',
11
- /**
12
- * Phase 2: API V2 metadata only; legacy metadata utils can be removed.
13
- */
14
- V2Only: '2',
15
- };
1
+ export {};
16
2
  //# sourceMappingURL=types.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/types.ts"],"names":[],"mappings":"AA+FA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC;;;OAGG;IACH,MAAM,EAAE,GAAG;IACX;;OAEG;IACH,gBAAgB,EAAE,KAAK;IACvB;;OAEG;IACH,MAAM,EAAE,GAAG;CACH,CAAC","sourcesContent":["import type { DeepPartial } from '../../types.js';\n\n/**\n * The types of values for the token amount and its values when converted to the user's selected currency and USD\n */\nexport type TokenAmountValues = {\n /**\n * The amount of the token\n *\n * @example \"1.005\"\n */\n amount: string;\n /**\n * The amount of the token in the user's selected currency\n *\n * @example \"4.55\"\n */\n valueInCurrency: string;\n /**\n * The amount of the token in USD\n *\n * @example \"1.234\"\n */\n usd: string;\n};\n\n/**\n * Values derived from the quote response\n *\n * @deprecated Avoid introducing new usages and use the QuoteResponse V2 type instead\n */\ntype QuoteMetadataV1 = {\n /**\n * If gas is included, this is the value of the src or dest token that was used to pay for the gas.\n * Show this value to indicate transaction fees for gasless quotes.\n */\n includedTxFees?: Partial<TokenAmountValues>;\n /**\n * The gas fee for the bridge transaction.\n * effective is the gas fee that is shown to the user. If this value is not\n * included in the trade, the calculation falls back to the gasLimit (total)\n * total is the gas fee that is spent by the user, including refunds.\n * max is the max gas fee that will be used by the transaction.\n */\n gasFee: Record<'total', TokenAmountValues>;\n relayerFee?: Partial<TokenAmountValues>; // relayer/provider fee in native units\n /**\n * The total network fee required to submit the trade and any approvals. This includes\n * the relayer fee or other native fees. Should be used for balance checks and tx submission.\n * Note: This is only accurate for non-gasless transactions. Use {@link QuoteMetadata.includedTxFees} to\n * get the total network fee for gasless transactions.\n */\n totalNetworkFee: TokenAmountValues; // gasFee.total + relayerFee\n /**\n * The amount that the user will receive (destTokenAmount)\n */\n toTokenAmount: TokenAmountValues;\n /**\n * The minimum amount that the user will receive (minDestTokenAmount)\n */\n minToTokenAmount: TokenAmountValues;\n /**\n * If gas is included: {@link QuoteMetadata.toTokenAmount} - {@link QuoteMetadata.includedTxFees}.\n * Otherwise: {@link QuoteMetadata.toTokenAmount} - {@link QuoteMetadata.totalNetworkFee}.\n */\n adjustedReturn: Omit<TokenAmountValues, 'amount'>;\n /**\n * The amount that the user will send, including fees that are paid in the src token\n * {@link Quote.srcTokenAmount} + {@link Quote.feeData[FeeType.METABRIDGE].amount} + {@link Quote.feeData[FeeType.TX_FEE].amount}\n */\n sentAmount: TokenAmountValues;\n /**\n * The swap rate is the amount that the user will receive per amount sent. Accounts for fees paid in the src or dest token.\n * This is calculated as {@link QuoteMetadata.toTokenAmount} / {@link QuoteMetadata.sentAmount}.\n */\n swapRate: string;\n /**\n * The cost of the trade, which is the difference between the amount sent and the adjusted return.\n * This is calculated as {@link QuoteMetadata.sentAmount} - {@link QuoteMetadata.adjustedReturn}.\n */\n cost: Omit<TokenAmountValues, 'amount'>; // sentAmount - adjustedReturn\n\n /**\n * The price impact for the quote.\n */\n priceImpact: Omit<TokenAmountValues, 'amount'>; // abs(sentAmount - toTokenAmount);\n};\n\n/**\n * The partial legacy quote metadata\n *\n * @deprecated Avoid introducing new usages and use the nested QuoteResponse metadata instead\n */\nexport type QuoteMetadata = DeepPartial<QuoteMetadataV1>;\n\nexport const QuoteMetadataMigrationPhase = {\n /**\n * Phase 1: omit API V2 currency metadata; serve legacy calcQuoteMetadata\n * into V2 nested shape\n */\n V1Data: '1',\n /**\n * Phase 1.5: prefer API V2 metadata (+ fiat from usd); fall back to legacy.\n */\n V2WithV1Fallback: '1.5',\n /**\n * Phase 2: API V2 metadata only; legacy metadata utils can be removed.\n */\n V2Only: '2',\n} as const;\n\nexport type QuoteMetadataMigrationPhase =\n (typeof QuoteMetadataMigrationPhase)[keyof typeof QuoteMetadataMigrationPhase];\n"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { DeepPartial } from '../../types.js';\n\n/**\n * The types of values for the token amount and its values when converted to the user's selected currency and USD\n */\nexport type TokenAmountValues = {\n /**\n * The amount of the token\n *\n * @example \"1.005\"\n */\n amount: string;\n /**\n * The amount of the token in the user's selected currency\n *\n * @example \"4.55\"\n */\n valueInCurrency: string;\n /**\n * The amount of the token in USD\n *\n * @example \"1.234\"\n */\n usd: string;\n};\n\n/**\n * Values derived from the quote response\n *\n * @deprecated Avoid introducing new usages and use the QuoteResponse V2 type instead\n */\ntype QuoteMetadataV1 = {\n /**\n * If gas is included, this is the value of the src or dest token that was used to pay for the gas.\n * Show this value to indicate transaction fees for gasless quotes.\n */\n includedTxFees?: Partial<TokenAmountValues>;\n /**\n * The gas fee for the bridge transaction.\n * effective is the gas fee that is shown to the user. If this value is not\n * included in the trade, the calculation falls back to the gasLimit (total)\n * total is the gas fee that is spent by the user, including refunds.\n * max is the max gas fee that will be used by the transaction.\n */\n gasFee: Record<'total', TokenAmountValues>;\n relayerFee?: Partial<TokenAmountValues>; // relayer/provider fee in native units\n /**\n * The total network fee required to submit the trade and any approvals. This includes\n * the relayer fee or other native fees. Should be used for balance checks and tx submission.\n * Note: This is only accurate for non-gasless transactions. Use {@link QuoteMetadata.includedTxFees} to\n * get the total network fee for gasless transactions.\n */\n totalNetworkFee: TokenAmountValues; // gasFee.total + relayerFee\n /**\n * The amount that the user will receive (destTokenAmount)\n */\n toTokenAmount: TokenAmountValues;\n /**\n * The minimum amount that the user will receive (minDestTokenAmount)\n */\n minToTokenAmount: TokenAmountValues;\n /**\n * If gas is included: {@link QuoteMetadata.toTokenAmount} - {@link QuoteMetadata.includedTxFees}.\n * Otherwise: {@link QuoteMetadata.toTokenAmount} - {@link QuoteMetadata.totalNetworkFee}.\n */\n adjustedReturn: Omit<TokenAmountValues, 'amount'>;\n /**\n * The amount that the user will send, including fees that are paid in the src token\n * {@link Quote.srcTokenAmount} + {@link Quote.feeData[FeeType.METABRIDGE].amount} + {@link Quote.feeData[FeeType.TX_FEE].amount}\n */\n sentAmount: TokenAmountValues;\n /**\n * The swap rate is the amount that the user will receive per amount sent. Accounts for fees paid in the src or dest token.\n * This is calculated as {@link QuoteMetadata.toTokenAmount} / {@link QuoteMetadata.sentAmount}.\n */\n swapRate: string;\n /**\n * The cost of the trade, which is the difference between the amount sent and the adjusted return.\n * This is calculated as {@link QuoteMetadata.sentAmount} - {@link QuoteMetadata.adjustedReturn}.\n */\n cost: Omit<TokenAmountValues, 'amount'>; // sentAmount - adjustedReturn\n\n /**\n * The price impact for the quote.\n */\n priceImpact: Omit<TokenAmountValues, 'amount'>; // abs(sentAmount - toTokenAmount);\n};\n\nexport type QuoteMetadata = DeepPartial<QuoteMetadataV1>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/bridge-controller",
3
- "version": "79.0.1-preview-4c8a5dfcb",
3
+ "version": "79.0.1-preview-d74e69d",
4
4
  "description": "Manages bridge-related quote fetching functionality for MetaMask",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -59,7 +59,7 @@
59
59
  "@ethersproject/constants": "^5.7.0",
60
60
  "@ethersproject/contracts": "^5.7.0",
61
61
  "@ethersproject/providers": "^5.7.0",
62
- "@metamask/accounts-controller": "^39.0.7",
62
+ "@metamask/accounts-controller": "^39.1.0",
63
63
  "@metamask/assets-controller": "^13.1.1",
64
64
  "@metamask/assets-controllers": "^111.1.0",
65
65
  "@metamask/base-controller": "^9.1.0",
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.includeIfTruthy = void 0;
4
- const includeIfTruthy = (value, result) => {
5
- if (!value) {
6
- return undefined;
7
- }
8
- if (Object.values(value).some(Boolean)) {
9
- return result;
10
- }
11
- return undefined;
12
- };
13
- exports.includeIfTruthy = includeIfTruthy;
14
- //# sourceMappingURL=include-if-truthy.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"include-if-truthy.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/include-if-truthy.ts"],"names":[],"mappings":";;;AAAO,MAAM,eAAe,GAAG,CAC7B,KAA0C,EAC1C,MAAkB,EACM,EAAE;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAbW,QAAA,eAAe,mBAa1B","sourcesContent":["export const includeIfTruthy = <ResultType extends Record<string, unknown>>(\n value: Record<string, unknown> | undefined,\n result: ResultType,\n): ResultType | undefined => {\n if (!value) {\n return undefined;\n }\n\n if (Object.values(value).some(Boolean)) {\n return result;\n }\n\n return undefined;\n};\n"]}
@@ -1,2 +0,0 @@
1
- export declare const includeIfTruthy: <ResultType extends Record<string, unknown>>(value: Record<string, unknown> | undefined, result: ResultType) => ResultType | undefined;
2
- //# sourceMappingURL=include-if-truthy.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"include-if-truthy.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/include-if-truthy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,sDACnB,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,+CAY3C,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const includeIfTruthy: <ResultType extends Record<string, unknown>>(value: Record<string, unknown> | undefined, result: ResultType) => ResultType | undefined;
2
- //# sourceMappingURL=include-if-truthy.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"include-if-truthy.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/include-if-truthy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,sDACnB,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,+CAY3C,CAAC"}
@@ -1,10 +0,0 @@
1
- export const includeIfTruthy = (value, result) => {
2
- if (!value) {
3
- return undefined;
4
- }
5
- if (Object.values(value).some(Boolean)) {
6
- return result;
7
- }
8
- return undefined;
9
- };
10
- //# sourceMappingURL=include-if-truthy.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"include-if-truthy.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/include-if-truthy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAA0C,EAC1C,MAAkB,EACM,EAAE;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC","sourcesContent":["export const includeIfTruthy = <ResultType extends Record<string, unknown>>(\n value: Record<string, unknown> | undefined,\n result: ResultType,\n): ResultType | undefined => {\n if (!value) {\n return undefined;\n }\n\n if (Object.values(value).some(Boolean)) {\n return result;\n }\n\n return undefined;\n};\n"]}
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toCurrencyValues = void 0;
4
- const bignumber_js_1 = require("bignumber.js");
5
- const quote_js_1 = require("../../validators/quote.cjs");
6
- /**
7
- * Builds a partial {@link QuoteResponse} object with fiat values derived from the usd values provided by the bridge-api
8
- *
9
- * @param quote - The quote response to calculate the metadata for
10
- * @param usdToFiatExchangeRate - The usd to fiat exchange rate
11
- * @returns The partial {@link QuoteResponse} object with fiat values
12
- */
13
- const toCurrencyValues = (quote, usdToFiatExchangeRate) => {
14
- const { quote: { src, dest, feeData, priceData }, } = quote;
15
- const { adjustedReturn, priceImpact } = priceData ?? {};
16
- const toFiat = ({ usd, valueInCurrency, }) => {
17
- if (usd && usdToFiatExchangeRate) {
18
- return { valueInCurrency: usdToFiatExchangeRate.times(usd).toFixed() };
19
- }
20
- if (valueInCurrency) {
21
- return { valueInCurrency };
22
- }
23
- return undefined;
24
- };
25
- const priceImpactFiat = priceImpact ? toFiat(priceImpact) : undefined;
26
- const adjustedReturnFiat = adjustedReturn
27
- ? toFiat(adjustedReturn)
28
- : undefined;
29
- const minAmountValueInCurrency = toFiat({
30
- usd: dest.minAmountUsd,
31
- valueInCurrency: dest.minAmountValueInCurrency,
32
- })?.valueInCurrency;
33
- return {
34
- quote: {
35
- src: toFiat(src),
36
- dest: {
37
- ...toFiat(dest),
38
- ...(minAmountValueInCurrency && {
39
- minAmountValueInCurrency,
40
- }),
41
- },
42
- feeData: feeData &&
43
- Object.fromEntries(Object.values(quote_js_1.FeeType)
44
- .filter((feeType) => feeData[feeType])
45
- .map((feeType) => [feeType, feeData[feeType]?.map(toFiat)])),
46
- priceData: {
47
- ...(priceImpactFiat && {
48
- priceImpact: priceImpactFiat,
49
- }),
50
- ...(adjustedReturnFiat && {
51
- adjustedReturn: adjustedReturnFiat,
52
- }),
53
- },
54
- },
55
- };
56
- };
57
- exports.toCurrencyValues = toCurrencyValues;
58
- //# sourceMappingURL=to-currency-values.cjs.map