@metamask-previews/bridge-controller 80.0.0-preview-3e34650c2 → 80.1.0-preview-4f4c98e
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.
- package/CHANGELOG.md +13 -1
- package/dist/{bridge-controller-method-action-types.d.mts → bridge-controller-method-action-types.d.ts} +2 -2
- package/dist/bridge-controller-method-action-types.d.ts.map +1 -0
- package/dist/{bridge-controller-method-action-types.mjs → bridge-controller-method-action-types.js} +1 -1
- package/dist/bridge-controller-method-action-types.js.map +1 -0
- package/dist/{bridge-controller.d.cts → bridge-controller.d.ts} +21 -21
- package/dist/bridge-controller.d.ts.map +1 -0
- package/dist/{bridge-controller.mjs → bridge-controller.js} +32 -31
- package/dist/bridge-controller.js.map +1 -0
- package/dist/coercers/{quote-response-v1-to-v2.d.cts → quote-response-v1-to-v2.d.ts} +4 -4
- package/dist/coercers/quote-response-v1-to-v2.d.ts.map +1 -0
- package/dist/coercers/{quote-response-v1-to-v2.mjs → quote-response-v1-to-v2.js} +11 -11
- package/dist/coercers/quote-response-v1-to-v2.js.map +1 -0
- package/dist/coercers/{quote-response-v2-to-v1.d.cts → quote-response-v2-to-v1.d.ts} +4 -4
- package/dist/coercers/quote-response-v2-to-v1.d.ts.map +1 -0
- package/dist/coercers/{quote-response-v2-to-v1.mjs → quote-response-v2-to-v1.js} +10 -10
- package/dist/coercers/quote-response-v2-to-v1.js.map +1 -0
- package/dist/constants/{bridge.d.mts → bridge.d.ts} +38 -38
- package/dist/constants/bridge.d.ts.map +1 -0
- package/dist/constants/{bridge.mjs → bridge.js} +4 -4
- package/dist/constants/bridge.js.map +1 -0
- package/dist/constants/{chains.d.cts → chains.d.ts} +84 -84
- package/dist/constants/chains.d.ts.map +1 -0
- package/dist/constants/{chains.mjs → chains.js} +1 -1
- package/dist/constants/chains.js.map +1 -0
- package/dist/constants/{swaps.d.cts → swaps.d.ts} +2 -2
- package/dist/constants/swaps.d.ts.map +1 -0
- package/dist/constants/{swaps.mjs → swaps.js} +2 -2
- package/dist/constants/swaps.js.map +1 -0
- package/dist/constants/{tokens.d.mts → tokens.d.ts} +34 -34
- package/dist/constants/tokens.d.ts.map +1 -0
- package/dist/constants/{tokens.mjs → tokens.js} +3 -3
- package/dist/constants/tokens.js.map +1 -0
- package/dist/constants/{traces.d.cts → traces.d.ts} +1 -1
- package/dist/constants/traces.d.ts.map +1 -0
- package/dist/constants/{traces.mjs → traces.js} +1 -1
- package/dist/constants/traces.js.map +1 -0
- package/dist/{index.d.mts → index.d.ts} +52 -52
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/{selectors.d.cts → selectors.d.ts} +7036 -7036
- package/dist/selectors.d.ts.map +1 -0
- package/dist/{selectors.mjs → selectors.js} +17 -18
- package/dist/selectors.js.map +1 -0
- package/dist/{types.d.cts → types.d.ts} +27 -27
- package/dist/types.d.ts.map +1 -0
- package/dist/{types.mjs → types.js} +1 -1
- package/dist/types.js.map +1 -0
- package/dist/utils/{assets.d.cts → assets.d.ts} +4 -4
- package/dist/utils/assets.d.ts.map +1 -0
- package/dist/utils/{assets.mjs → assets.js} +4 -4
- package/dist/utils/assets.js.map +1 -0
- package/dist/utils/{balance.d.cts → balance.d.ts} +4 -4
- package/dist/utils/balance.d.ts.map +1 -0
- package/dist/utils/{balance.mjs → balance.js} +6 -6
- package/dist/utils/balance.js.map +1 -0
- package/dist/utils/{bridge.d.mts → bridge.d.ts} +8 -23
- package/dist/utils/bridge.d.ts.map +1 -0
- package/dist/utils/{bridge.mjs → bridge.js} +12 -12
- package/dist/utils/bridge.js.map +1 -0
- package/dist/utils/{caip-formatters.d.mts → caip-formatters.d.ts} +3 -3
- package/dist/utils/caip-formatters.d.ts.map +1 -0
- package/dist/utils/{caip-formatters.mjs → caip-formatters.js} +9 -9
- package/dist/utils/caip-formatters.js.map +1 -0
- package/dist/utils/{feature-flags.d.mts → feature-flags.d.ts} +9 -9
- package/dist/utils/feature-flags.d.ts.map +1 -0
- package/dist/utils/{feature-flags.mjs → feature-flags.js} +4 -4
- package/dist/utils/feature-flags.js.map +1 -0
- package/dist/utils/{fetch-server-events.d.cts → fetch-server-events.d.ts} +3 -3
- package/dist/utils/fetch-server-events.d.ts.map +1 -0
- package/dist/utils/{fetch-server-events.mjs → fetch-server-events.js} +1 -1
- package/dist/utils/fetch-server-events.js.map +1 -0
- package/dist/utils/{fetch.d.mts → fetch.d.ts} +15 -15
- package/dist/utils/fetch.d.ts.map +1 -0
- package/dist/utils/{fetch.mjs → fetch.js} +15 -15
- package/dist/utils/fetch.js.map +1 -0
- package/dist/utils/metrics/{constants.d.mts → constants.d.ts} +1 -1
- package/dist/utils/metrics/constants.d.ts.map +1 -0
- package/dist/utils/metrics/{constants.mjs → constants.js} +1 -1
- package/dist/utils/metrics/constants.js.map +1 -0
- package/dist/utils/metrics/{properties.d.cts → properties.d.ts} +22 -14
- package/dist/utils/metrics/properties.d.ts.map +1 -0
- package/dist/utils/metrics/{properties.mjs → properties.js} +20 -11
- package/dist/utils/metrics/properties.js.map +1 -0
- package/dist/utils/metrics/{types.d.cts → types.d.ts} +10 -6
- package/dist/utils/metrics/types.d.ts.map +1 -0
- package/dist/utils/metrics/types.js +2 -0
- package/dist/utils/metrics/types.js.map +1 -0
- package/dist/utils/{number-formatters.d.cts → number-formatters.d.ts} +4 -4
- package/dist/utils/number-formatters.d.ts.map +1 -0
- package/dist/utils/{number-formatters.mjs → number-formatters.js} +3 -3
- package/dist/utils/number-formatters.js.map +1 -0
- package/dist/utils/quote-fees.d.ts +17 -0
- package/dist/utils/quote-fees.d.ts.map +1 -0
- package/dist/utils/{quote-fees.mjs → quote-fees.js} +7 -7
- package/dist/utils/quote-fees.js.map +1 -0
- package/dist/utils/quote-metadata/{calculators.d.cts → calculators.d.ts} +12 -12
- package/dist/utils/quote-metadata/calculators.d.ts.map +1 -0
- package/dist/utils/quote-metadata/{calculators.mjs → calculators.js} +11 -11
- package/dist/utils/quote-metadata/calculators.js.map +1 -0
- package/dist/utils/quote-metadata/{include-if-truthy.d.mts → include-if-truthy.d.ts} +1 -1
- package/dist/utils/quote-metadata/include-if-truthy.d.ts.map +1 -0
- package/dist/utils/quote-metadata/{include-if-truthy.mjs → include-if-truthy.js} +1 -1
- package/dist/utils/quote-metadata/include-if-truthy.js.map +1 -0
- package/dist/utils/quote-metadata/{merge.d.cts → merge.d.ts} +5 -5
- package/dist/utils/quote-metadata/merge.d.ts.map +1 -0
- package/dist/utils/quote-metadata/{merge.mjs → merge.js} +6 -7
- package/dist/utils/quote-metadata/merge.js.map +1 -0
- package/dist/utils/quote-metadata/{to-currency-values.d.cts → to-currency-values.d.ts} +4 -4
- package/dist/utils/quote-metadata/to-currency-values.d.ts.map +1 -0
- package/dist/utils/quote-metadata/{to-currency-values.mjs → to-currency-values.js} +2 -3
- package/dist/utils/quote-metadata/to-currency-values.js.map +1 -0
- package/dist/utils/quote-metadata/{to-normalized-amounts.d.mts → to-normalized-amounts.d.ts} +3 -3
- package/dist/utils/quote-metadata/to-normalized-amounts.d.ts.map +1 -0
- package/dist/utils/quote-metadata/{to-normalized-amounts.mjs → to-normalized-amounts.js} +3 -3
- package/dist/utils/quote-metadata/to-normalized-amounts.js.map +1 -0
- package/dist/utils/quote-metadata/{to-quote-metadata-v1.d.cts → to-quote-metadata-v1.d.ts} +6 -6
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.ts.map +1 -0
- package/dist/utils/quote-metadata/{to-quote-metadata-v1.mjs → to-quote-metadata-v1.js} +6 -7
- package/dist/utils/quote-metadata/to-quote-metadata-v1.js.map +1 -0
- package/dist/utils/quote-metadata/{to-quote-metadata-v2.d.cts → to-quote-metadata-v2.d.ts} +4 -4
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.ts.map +1 -0
- package/dist/utils/quote-metadata/{to-quote-metadata-v2.mjs → to-quote-metadata-v2.js} +6 -6
- package/dist/utils/quote-metadata/to-quote-metadata-v2.js.map +1 -0
- package/dist/utils/quote-metadata/{types.d.cts → types.d.ts} +5 -5
- package/dist/utils/quote-metadata/types.d.ts.map +1 -0
- package/dist/utils/quote-metadata/{types.mjs → types.js} +1 -1
- package/dist/utils/quote-metadata/types.js.map +1 -0
- package/dist/utils/{slippage.d.cts → slippage.d.ts} +2 -2
- package/dist/utils/slippage.d.ts.map +1 -0
- package/dist/utils/{slippage.mjs → slippage.js} +2 -2
- package/dist/utils/slippage.js.map +1 -0
- package/dist/utils/{snaps.d.mts → snaps.d.ts} +5 -5
- package/dist/utils/snaps.d.ts.map +1 -0
- package/dist/utils/{snaps.mjs → snaps.js} +4 -4
- package/dist/utils/snaps.js.map +1 -0
- package/dist/utils/sort-quotes.d.ts +4 -0
- package/dist/utils/sort-quotes.d.ts.map +1 -0
- package/dist/utils/{sort-quotes.mjs → sort-quotes.js} +2 -2
- package/dist/utils/sort-quotes.js.map +1 -0
- package/dist/utils/{struct-error.d.mts → struct-error.d.ts} +2 -2
- package/dist/utils/struct-error.d.ts.map +1 -0
- package/dist/utils/{struct-error.mjs → struct-error.js} +1 -1
- package/dist/utils/struct-error.js.map +1 -0
- package/dist/utils/{swaps.d.cts → swaps.d.ts} +3 -3
- package/dist/utils/swaps.d.ts.map +1 -0
- package/dist/utils/{swaps.mjs → swaps.js} +5 -5
- package/dist/utils/swaps.js.map +1 -0
- package/dist/utils/{trade-utils.d.cts → trade-utils.d.ts} +2 -2
- package/dist/utils/trade-utils.d.ts.map +1 -0
- package/dist/utils/{trade-utils.mjs → trade-utils.js} +2 -2
- package/dist/utils/trade-utils.js.map +1 -0
- package/dist/validators/{amount-and-asset.d.cts → amount-and-asset.d.ts} +8 -8
- package/dist/validators/amount-and-asset.d.ts.map +1 -0
- package/dist/validators/{amount-and-asset.mjs → amount-and-asset.js} +4 -4
- package/dist/validators/amount-and-asset.js.map +1 -0
- package/dist/validators/{batch-sell.d.cts → batch-sell.d.ts} +8 -39
- package/dist/validators/batch-sell.d.ts.map +1 -0
- package/dist/validators/{batch-sell.mjs → batch-sell.js} +7 -7
- package/dist/validators/batch-sell.js.map +1 -0
- package/dist/validators/{bridge-asset.d.mts → bridge-asset.d.ts} +10 -42
- package/dist/validators/bridge-asset.d.ts.map +1 -0
- package/dist/validators/{bridge-asset.mjs → bridge-asset.js} +3 -3
- package/dist/validators/bridge-asset.js.map +1 -0
- package/dist/validators/{feature-flags.d.mts → feature-flags.d.ts} +16 -60
- package/dist/validators/feature-flags.d.ts.map +1 -0
- package/dist/validators/{feature-flags.mjs → feature-flags.js} +3 -3
- package/dist/validators/feature-flags.js.map +1 -0
- package/dist/validators/{intent.d.cts → intent.d.ts} +12 -12
- package/dist/validators/intent.d.ts.map +1 -0
- package/dist/validators/{intent.mjs → intent.js} +4 -4
- package/dist/validators/intent.js.map +1 -0
- package/dist/validators/{number.d.cts → number.d.ts} +1 -1
- package/dist/validators/number.d.ts.map +1 -0
- package/dist/validators/{number.mjs → number.js} +2 -2
- package/dist/validators/number.js.map +1 -0
- package/dist/validators/{quote-request.d.cts → quote-request.d.ts} +2 -2
- package/dist/validators/quote-request.d.ts.map +1 -0
- package/dist/validators/{quote-request.mjs → quote-request.js} +2 -2
- package/dist/validators/quote-request.js.map +1 -0
- package/dist/validators/{quote-response-v1.d.cts → quote-response-v1.d.ts} +128 -335
- package/dist/validators/quote-response-v1.d.ts.map +1 -0
- package/dist/validators/{quote-response-v1.mjs → quote-response-v1.js} +7 -7
- package/dist/validators/quote-response-v1.js.map +1 -0
- package/dist/validators/{quote-response.d.mts → quote-response.d.ts} +414 -414
- package/dist/validators/{quote-response.d.cts.map → quote-response.d.ts.map} +1 -1
- package/dist/validators/{quote-response.mjs → quote-response.js} +7 -7
- package/dist/validators/quote-response.js.map +1 -0
- package/dist/validators/{quote-stream-complete.d.cts → quote-stream-complete.d.ts} +7 -11
- package/dist/validators/quote-stream-complete.d.ts.map +1 -0
- package/dist/validators/{quote-stream-complete.mjs → quote-stream-complete.js} +2 -2
- package/dist/validators/quote-stream-complete.js.map +1 -0
- package/dist/validators/{quote.d.cts → quote.d.ts} +132 -132
- package/dist/validators/quote.d.ts.map +1 -0
- package/dist/validators/{quote.mjs → quote.js} +7 -7
- package/dist/validators/quote.js.map +1 -0
- package/dist/validators/{step.d.cts → step.d.ts} +56 -56
- package/dist/validators/step.d.ts.map +1 -0
- package/dist/validators/{step.mjs → step.js} +4 -4
- package/dist/validators/step.js.map +1 -0
- package/dist/validators/{token-feature.d.cts → token-feature.d.ts} +6 -9
- package/dist/validators/token-feature.d.ts.map +1 -0
- package/dist/validators/{token-feature.mjs → token-feature.js} +2 -2
- package/dist/validators/token-feature.js.map +1 -0
- package/dist/validators/{trade.d.mts → trade.d.ts} +7 -31
- package/dist/validators/trade.d.ts.map +1 -0
- package/dist/validators/{trade.mjs → trade.js} +2 -2
- package/dist/validators/trade.js.map +1 -0
- package/package.json +14 -18
- package/dist/bridge-controller-method-action-types.cjs +0 -7
- package/dist/bridge-controller-method-action-types.cjs.map +0 -1
- package/dist/bridge-controller-method-action-types.d.cts +0 -50
- package/dist/bridge-controller-method-action-types.d.cts.map +0 -1
- package/dist/bridge-controller-method-action-types.d.mts.map +0 -1
- package/dist/bridge-controller-method-action-types.mjs.map +0 -1
- package/dist/bridge-controller.cjs +0 -1043
- package/dist/bridge-controller.cjs.map +0 -1
- package/dist/bridge-controller.d.cts.map +0 -1
- package/dist/bridge-controller.d.mts +0 -127
- package/dist/bridge-controller.d.mts.map +0 -1
- package/dist/bridge-controller.mjs.map +0 -1
- package/dist/coercers/quote-response-v1-to-v2.cjs +0 -139
- package/dist/coercers/quote-response-v1-to-v2.cjs.map +0 -1
- package/dist/coercers/quote-response-v1-to-v2.d.cts.map +0 -1
- package/dist/coercers/quote-response-v1-to-v2.d.mts +0 -13
- package/dist/coercers/quote-response-v1-to-v2.d.mts.map +0 -1
- package/dist/coercers/quote-response-v1-to-v2.mjs.map +0 -1
- package/dist/coercers/quote-response-v2-to-v1.cjs +0 -162
- package/dist/coercers/quote-response-v2-to-v1.cjs.map +0 -1
- package/dist/coercers/quote-response-v2-to-v1.d.cts.map +0 -1
- package/dist/coercers/quote-response-v2-to-v1.d.mts +0 -13
- package/dist/coercers/quote-response-v2-to-v1.d.mts.map +0 -1
- package/dist/coercers/quote-response-v2-to-v1.mjs.map +0 -1
- package/dist/constants/bridge.cjs +0 -98
- package/dist/constants/bridge.cjs.map +0 -1
- package/dist/constants/bridge.d.cts +0 -77
- package/dist/constants/bridge.d.cts.map +0 -1
- package/dist/constants/bridge.d.mts.map +0 -1
- package/dist/constants/bridge.mjs.map +0 -1
- package/dist/constants/chains.cjs +0 -174
- package/dist/constants/chains.cjs.map +0 -1
- package/dist/constants/chains.d.cts.map +0 -1
- package/dist/constants/chains.d.mts +0 -171
- package/dist/constants/chains.d.mts.map +0 -1
- package/dist/constants/chains.mjs.map +0 -1
- package/dist/constants/swaps.cjs +0 -98
- package/dist/constants/swaps.cjs.map +0 -1
- package/dist/constants/swaps.d.cts.map +0 -1
- package/dist/constants/swaps.d.mts +0 -6
- package/dist/constants/swaps.d.mts.map +0 -1
- package/dist/constants/swaps.mjs.map +0 -1
- package/dist/constants/tokens.cjs +0 -212
- package/dist/constants/tokens.cjs.map +0 -1
- package/dist/constants/tokens.d.cts +0 -195
- package/dist/constants/tokens.d.cts.map +0 -1
- package/dist/constants/tokens.d.mts.map +0 -1
- package/dist/constants/tokens.mjs.map +0 -1
- package/dist/constants/traces.cjs +0 -11
- package/dist/constants/traces.cjs.map +0 -1
- package/dist/constants/traces.d.cts.map +0 -1
- package/dist/constants/traces.d.mts +0 -7
- package/dist/constants/traces.d.mts.map +0 -1
- package/dist/constants/traces.mjs.map +0 -1
- package/dist/index.cjs +0 -166
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -60
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -47
- package/dist/index.mjs.map +0 -1
- package/dist/selectors.cjs +0 -449
- package/dist/selectors.cjs.map +0 -1
- package/dist/selectors.d.cts.map +0 -1
- package/dist/selectors.d.mts +0 -13877
- package/dist/selectors.d.mts.map +0 -1
- package/dist/selectors.mjs.map +0 -1
- package/dist/types.cjs +0 -66
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.mts +0 -283
- package/dist/types.d.mts.map +0 -1
- package/dist/types.mjs.map +0 -1
- package/dist/utils/assets.cjs +0 -43
- package/dist/utils/assets.cjs.map +0 -1
- package/dist/utils/assets.d.cts.map +0 -1
- package/dist/utils/assets.d.mts +0 -10
- package/dist/utils/assets.d.mts.map +0 -1
- package/dist/utils/assets.mjs.map +0 -1
- package/dist/utils/balance.cjs +0 -34
- package/dist/utils/balance.cjs.map +0 -1
- package/dist/utils/balance.d.cts.map +0 -1
- package/dist/utils/balance.d.mts +0 -7
- package/dist/utils/balance.d.mts.map +0 -1
- package/dist/utils/balance.mjs.map +0 -1
- package/dist/utils/bridge.cjs +0 -204
- package/dist/utils/bridge.cjs.map +0 -1
- package/dist/utils/bridge.d.cts +0 -97
- package/dist/utils/bridge.d.cts.map +0 -1
- package/dist/utils/bridge.d.mts.map +0 -1
- package/dist/utils/bridge.mjs.map +0 -1
- package/dist/utils/caip-formatters.cjs +0 -157
- package/dist/utils/caip-formatters.cjs.map +0 -1
- package/dist/utils/caip-formatters.d.cts +0 -40
- package/dist/utils/caip-formatters.d.cts.map +0 -1
- package/dist/utils/caip-formatters.d.mts.map +0 -1
- package/dist/utils/caip-formatters.mjs.map +0 -1
- package/dist/utils/feature-flags.cjs +0 -77
- package/dist/utils/feature-flags.cjs.map +0 -1
- package/dist/utils/feature-flags.d.cts +0 -52
- package/dist/utils/feature-flags.d.cts.map +0 -1
- package/dist/utils/feature-flags.d.mts.map +0 -1
- package/dist/utils/feature-flags.mjs.map +0 -1
- package/dist/utils/fetch-server-events.cjs +0 -70
- package/dist/utils/fetch-server-events.cjs.map +0 -1
- package/dist/utils/fetch-server-events.d.cts.map +0 -1
- package/dist/utils/fetch-server-events.d.mts +0 -17
- package/dist/utils/fetch-server-events.d.mts.map +0 -1
- package/dist/utils/fetch-server-events.mjs.map +0 -1
- package/dist/utils/fetch.cjs +0 -426
- package/dist/utils/fetch.cjs.map +0 -1
- package/dist/utils/fetch.d.cts +0 -114
- package/dist/utils/fetch.d.cts.map +0 -1
- package/dist/utils/fetch.d.mts.map +0 -1
- package/dist/utils/fetch.mjs.map +0 -1
- package/dist/utils/metrics/constants.cjs +0 -103
- package/dist/utils/metrics/constants.cjs.map +0 -1
- package/dist/utils/metrics/constants.d.cts +0 -91
- package/dist/utils/metrics/constants.d.cts.map +0 -1
- package/dist/utils/metrics/constants.d.mts.map +0 -1
- package/dist/utils/metrics/constants.mjs.map +0 -1
- package/dist/utils/metrics/properties.cjs +0 -131
- package/dist/utils/metrics/properties.cjs.map +0 -1
- package/dist/utils/metrics/properties.d.cts.map +0 -1
- package/dist/utils/metrics/properties.d.mts +0 -58
- package/dist/utils/metrics/properties.d.mts.map +0 -1
- package/dist/utils/metrics/properties.mjs.map +0 -1
- package/dist/utils/metrics/types.cjs +0 -3
- package/dist/utils/metrics/types.cjs.map +0 -1
- package/dist/utils/metrics/types.d.cts.map +0 -1
- package/dist/utils/metrics/types.d.mts +0 -307
- package/dist/utils/metrics/types.d.mts.map +0 -1
- package/dist/utils/metrics/types.mjs +0 -2
- package/dist/utils/metrics/types.mjs.map +0 -1
- package/dist/utils/number-formatters.cjs +0 -107
- package/dist/utils/number-formatters.cjs.map +0 -1
- package/dist/utils/number-formatters.d.cts.map +0 -1
- package/dist/utils/number-formatters.d.mts +0 -34
- package/dist/utils/number-formatters.d.mts.map +0 -1
- package/dist/utils/number-formatters.mjs.map +0 -1
- package/dist/utils/quote-fees.cjs +0 -144
- package/dist/utils/quote-fees.cjs.map +0 -1
- package/dist/utils/quote-fees.d.cts +0 -21
- package/dist/utils/quote-fees.d.cts.map +0 -1
- package/dist/utils/quote-fees.d.mts +0 -21
- package/dist/utils/quote-fees.d.mts.map +0 -1
- package/dist/utils/quote-fees.mjs.map +0 -1
- package/dist/utils/quote-metadata/calculators.cjs +0 -345
- package/dist/utils/quote-metadata/calculators.cjs.map +0 -1
- package/dist/utils/quote-metadata/calculators.d.cts.map +0 -1
- package/dist/utils/quote-metadata/calculators.d.mts +0 -121
- package/dist/utils/quote-metadata/calculators.d.mts.map +0 -1
- package/dist/utils/quote-metadata/calculators.mjs.map +0 -1
- package/dist/utils/quote-metadata/include-if-truthy.cjs +0 -21
- package/dist/utils/quote-metadata/include-if-truthy.cjs.map +0 -1
- package/dist/utils/quote-metadata/include-if-truthy.d.cts +0 -9
- package/dist/utils/quote-metadata/include-if-truthy.d.cts.map +0 -1
- package/dist/utils/quote-metadata/include-if-truthy.d.mts.map +0 -1
- package/dist/utils/quote-metadata/include-if-truthy.mjs.map +0 -1
- package/dist/utils/quote-metadata/merge.cjs +0 -60
- package/dist/utils/quote-metadata/merge.cjs.map +0 -1
- package/dist/utils/quote-metadata/merge.d.cts.map +0 -1
- package/dist/utils/quote-metadata/merge.d.mts +0 -15
- package/dist/utils/quote-metadata/merge.d.mts.map +0 -1
- package/dist/utils/quote-metadata/merge.mjs.map +0 -1
- package/dist/utils/quote-metadata/to-currency-values.cjs +0 -62
- package/dist/utils/quote-metadata/to-currency-values.cjs.map +0 -1
- package/dist/utils/quote-metadata/to-currency-values.d.cts.map +0 -1
- package/dist/utils/quote-metadata/to-currency-values.d.mts +0 -12
- package/dist/utils/quote-metadata/to-currency-values.d.mts.map +0 -1
- package/dist/utils/quote-metadata/to-currency-values.mjs.map +0 -1
- package/dist/utils/quote-metadata/to-normalized-amounts.cjs +0 -38
- package/dist/utils/quote-metadata/to-normalized-amounts.cjs.map +0 -1
- package/dist/utils/quote-metadata/to-normalized-amounts.d.cts +0 -10
- package/dist/utils/quote-metadata/to-normalized-amounts.d.cts.map +0 -1
- package/dist/utils/quote-metadata/to-normalized-amounts.d.mts.map +0 -1
- package/dist/utils/quote-metadata/to-normalized-amounts.mjs.map +0 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs +0 -94
- package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs.map +0 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.cts.map +0 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts +0 -15
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts.map +0 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.mjs.map +0 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs +0 -84
- package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs.map +0 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.cts.map +0 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.mts +0 -12
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.mts.map +0 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v2.mjs.map +0 -1
- package/dist/utils/quote-metadata/types.cjs +0 -19
- package/dist/utils/quote-metadata/types.cjs.map +0 -1
- package/dist/utils/quote-metadata/types.d.cts.map +0 -1
- package/dist/utils/quote-metadata/types.d.mts +0 -108
- package/dist/utils/quote-metadata/types.d.mts.map +0 -1
- package/dist/utils/quote-metadata/types.mjs.map +0 -1
- package/dist/utils/slippage.cjs +0 -49
- package/dist/utils/slippage.cjs.map +0 -1
- package/dist/utils/slippage.d.cts.map +0 -1
- package/dist/utils/slippage.d.mts +0 -23
- package/dist/utils/slippage.d.mts.map +0 -1
- package/dist/utils/slippage.mjs.map +0 -1
- package/dist/utils/snaps.cjs +0 -76
- package/dist/utils/snaps.cjs.map +0 -1
- package/dist/utils/snaps.d.cts +0 -59
- package/dist/utils/snaps.d.cts.map +0 -1
- package/dist/utils/snaps.d.mts.map +0 -1
- package/dist/utils/snaps.mjs.map +0 -1
- package/dist/utils/sort-quotes.cjs +0 -16
- package/dist/utils/sort-quotes.cjs.map +0 -1
- package/dist/utils/sort-quotes.d.cts +0 -4
- package/dist/utils/sort-quotes.d.cts.map +0 -1
- package/dist/utils/sort-quotes.d.mts +0 -4
- package/dist/utils/sort-quotes.d.mts.map +0 -1
- package/dist/utils/sort-quotes.mjs.map +0 -1
- package/dist/utils/struct-error.cjs +0 -16
- package/dist/utils/struct-error.cjs.map +0 -1
- package/dist/utils/struct-error.d.cts +0 -11
- package/dist/utils/struct-error.d.cts.map +0 -1
- package/dist/utils/struct-error.d.mts.map +0 -1
- package/dist/utils/struct-error.mjs.map +0 -1
- package/dist/utils/swaps.cjs +0 -73
- package/dist/utils/swaps.cjs.map +0 -1
- package/dist/utils/swaps.d.cts.map +0 -1
- package/dist/utils/swaps.d.mts +0 -37
- package/dist/utils/swaps.d.mts.map +0 -1
- package/dist/utils/swaps.mjs.map +0 -1
- package/dist/utils/trade-utils.cjs +0 -39
- package/dist/utils/trade-utils.cjs.map +0 -1
- package/dist/utils/trade-utils.d.cts.map +0 -1
- package/dist/utils/trade-utils.d.mts +0 -9
- package/dist/utils/trade-utils.d.mts.map +0 -1
- package/dist/utils/trade-utils.mjs.map +0 -1
- package/dist/validators/amount-and-asset.cjs +0 -27
- package/dist/validators/amount-and-asset.cjs.map +0 -1
- package/dist/validators/amount-and-asset.d.cts.map +0 -1
- package/dist/validators/amount-and-asset.d.mts +0 -62
- package/dist/validators/amount-and-asset.d.mts.map +0 -1
- package/dist/validators/amount-and-asset.mjs.map +0 -1
- package/dist/validators/batch-sell.cjs +0 -39
- package/dist/validators/batch-sell.cjs.map +0 -1
- package/dist/validators/batch-sell.d.cts.map +0 -1
- package/dist/validators/batch-sell.d.mts +0 -79
- package/dist/validators/batch-sell.d.mts.map +0 -1
- package/dist/validators/batch-sell.mjs.map +0 -1
- package/dist/validators/bridge-asset.cjs +0 -106
- package/dist/validators/bridge-asset.cjs.map +0 -1
- package/dist/validators/bridge-asset.d.cts +0 -146
- package/dist/validators/bridge-asset.d.cts.map +0 -1
- package/dist/validators/bridge-asset.d.mts.map +0 -1
- package/dist/validators/bridge-asset.mjs.map +0 -1
- package/dist/validators/feature-flags.cjs +0 -110
- package/dist/validators/feature-flags.cjs.map +0 -1
- package/dist/validators/feature-flags.d.cts +0 -264
- package/dist/validators/feature-flags.d.cts.map +0 -1
- package/dist/validators/feature-flags.d.mts.map +0 -1
- package/dist/validators/feature-flags.mjs.map +0 -1
- package/dist/validators/intent.cjs +0 -122
- package/dist/validators/intent.cjs.map +0 -1
- package/dist/validators/intent.d.cts.map +0 -1
- package/dist/validators/intent.d.mts +0 -231
- package/dist/validators/intent.d.mts.map +0 -1
- package/dist/validators/intent.mjs.map +0 -1
- package/dist/validators/number.cjs +0 -8
- package/dist/validators/number.cjs.map +0 -1
- package/dist/validators/number.d.cts.map +0 -1
- package/dist/validators/number.d.mts +0 -4
- package/dist/validators/number.d.mts.map +0 -1
- package/dist/validators/number.mjs.map +0 -1
- package/dist/validators/quote-request.cjs +0 -57
- package/dist/validators/quote-request.cjs.map +0 -1
- package/dist/validators/quote-request.d.cts.map +0 -1
- package/dist/validators/quote-request.d.mts +0 -4
- package/dist/validators/quote-request.d.mts.map +0 -1
- package/dist/validators/quote-request.mjs.map +0 -1
- package/dist/validators/quote-response-v1.cjs +0 -31
- package/dist/validators/quote-response-v1.cjs.map +0 -1
- package/dist/validators/quote-response-v1.d.cts.map +0 -1
- package/dist/validators/quote-response-v1.d.mts +0 -661
- package/dist/validators/quote-response-v1.d.mts.map +0 -1
- package/dist/validators/quote-response-v1.mjs.map +0 -1
- package/dist/validators/quote-response.cjs +0 -129
- package/dist/validators/quote-response.cjs.map +0 -1
- package/dist/validators/quote-response.d.cts +0 -1973
- package/dist/validators/quote-response.d.mts.map +0 -1
- package/dist/validators/quote-response.mjs.map +0 -1
- package/dist/validators/quote-stream-complete.cjs +0 -29
- package/dist/validators/quote-stream-complete.cjs.map +0 -1
- package/dist/validators/quote-stream-complete.d.cts.map +0 -1
- package/dist/validators/quote-stream-complete.d.mts +0 -39
- package/dist/validators/quote-stream-complete.d.mts.map +0 -1
- package/dist/validators/quote-stream-complete.mjs.map +0 -1
- package/dist/validators/quote.cjs +0 -164
- package/dist/validators/quote.cjs.map +0 -1
- package/dist/validators/quote.d.cts.map +0 -1
- package/dist/validators/quote.d.mts +0 -588
- package/dist/validators/quote.d.mts.map +0 -1
- package/dist/validators/quote.mjs.map +0 -1
- package/dist/validators/step.cjs +0 -26
- package/dist/validators/step.cjs.map +0 -1
- package/dist/validators/step.d.cts.map +0 -1
- package/dist/validators/step.d.mts +0 -319
- package/dist/validators/step.d.mts.map +0 -1
- package/dist/validators/step.mjs.map +0 -1
- package/dist/validators/token-feature.cjs +0 -22
- package/dist/validators/token-feature.cjs.map +0 -1
- package/dist/validators/token-feature.d.cts.map +0 -1
- package/dist/validators/token-feature.d.mts +0 -26
- package/dist/validators/token-feature.d.mts.map +0 -1
- package/dist/validators/token-feature.mjs.map +0 -1
- package/dist/validators/trade.cjs +0 -94
- package/dist/validators/trade.cjs.map +0 -1
- package/dist/validators/trade.d.cts +0 -121
- package/dist/validators/trade.d.cts.map +0 -1
- package/dist/validators/trade.d.mts.map +0 -1
- package/dist/validators/trade.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/metrics/types.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { CaipAssetType, CaipChainId } from '@metamask/utils';\n\nimport type {\n InputPrimaryDenomination,\n SortOrder,\n StatusTypes,\n} from '../../types.js';\nimport type { FeatureId } from '../../validators/feature-flags.js';\nimport type {\n UnifiedSwapBridgeEventName,\n BatchSellMetricsEventName,\n BatchSellMetricsLocation,\n BridgeControllerMetricsEventName,\n BridgeControllerMetricsLocation,\n MetricsActionType,\n MetricsSwapType,\n PollingStatus,\n} from './constants.js';\n\n/**\n * These properties map to properties required by the segment-schema. For example: https://github.com/Consensys/segment-schema/blob/main/libraries/properties/cross-chain-swaps-action.yaml\n */\nexport type RequestParams = {\n chain_id_source: CaipChainId;\n chain_id_destination: CaipChainId | null;\n token_symbol_source: string;\n token_symbol_destination: string | null;\n token_address_source: CaipAssetType;\n token_address_destination: CaipAssetType | null;\n /**\n * Client-supplied security classification for the destination token\n * (e.g. from token security/scanning data). Stored on the controller\n * and merged into every analytics event that includes\n * `token_address_destination`. Pass `null` when no security data is\n * available for the selected destination token.\n */\n token_security_type_destination: string | null;\n};\n\nexport type AccountHardwareType =\n | 'Ledger'\n | 'Trezor'\n | 'QR Hardware'\n | 'Lattice'\n | null;\n\nexport type RequestMetadata = {\n slippage_limit: number; // 0 === auto when no numeric limit is available\n custom_slippage: boolean;\n usd_amount_source: number; // Use quoteResponse when available\n stx_enabled: boolean;\n is_hardware_wallet: boolean;\n account_hardware_type: AccountHardwareType;\n swap_type: MetricsSwapType;\n security_warnings: string[];\n};\n\nexport type QuoteFetchData = {\n can_submit: boolean;\n best_quote_provider?: `${string}_${string}`;\n quotes_count: number;\n quotes_list: `${string}_${string}`[];\n initial_load_time_all_quotes: number;\n price_impact: number;\n has_gas_included_quote: boolean;\n};\n\nexport type TradeData = {\n usd_quoted_gas: number;\n gas_included: boolean;\n gas_included_7702: boolean;\n quoted_time_minutes: number;\n usd_quoted_return: number;\n provider: `${string}_${string}`;\n};\n\nexport type TxStatusData = {\n allowance_reset_transaction?: StatusTypes;\n approval_transaction?: StatusTypes;\n source_transaction?: StatusTypes;\n destination_transaction?: StatusTypes;\n};\n\nexport type InputPrimaryDenominationData = {\n input_primary_denomination?: InputPrimaryDenomination;\n};\n\nexport type InputKeys =\n | 'token_source'\n | 'token_destination'\n | 'chain_source'\n | 'chain_destination'\n | 'slippage'\n | 'token_amount_source';\n\nexport type InputValues = {\n token_source: CaipAssetType;\n token_destination: CaipAssetType;\n chain_source: CaipChainId;\n chain_destination: CaipChainId;\n slippage: number;\n token_amount_source: string;\n};\n\nexport type QuoteWarning =\n | 'low_return'\n | 'no_quotes'\n | 'insufficient_gas_balance'\n | 'insufficient_gas_for_selected_quote'\n | 'insufficient_balance'\n | 'market_closed'\n | 'price_impact'\n | 'quote_expired'\n | 'tx_alert';\n\ntype BatchSellChainProperties = {\n chain_id_source: CaipChainId;\n chain_id_destination: CaipChainId | null;\n};\n\ntype BatchSellTokenPageEventContext = BatchSellChainProperties & {\n location: BatchSellMetricsLocation;\n};\n\ntype BatchSellSourceTokenEventContext = BatchSellTokenPageEventContext & {\n source_token_symbols: string[];\n source_token_addresses: CaipAssetType[];\n};\n\ntype BatchSellQuotePageEventContext = BatchSellSourceTokenEventContext & {\n destination_token_symbol: string;\n destination_token_address: CaipAssetType;\n usd_amount_source_tokens: number[];\n usd_amount_source_total: number;\n source_token_slippages: number[];\n};\n\ntype BatchSellReviewModalSubmittedEventContext =\n BatchSellQuotePageEventContext &\n Pick<TradeData, 'usd_quoted_gas' | 'usd_quoted_return'>;\n\ntype BatchSellTokenPageEventProperties = BatchSellChainProperties &\n BatchSellTokenPageEventContext;\n\ntype BatchSellSourceTokenEventProperties = BatchSellChainProperties &\n BatchSellSourceTokenEventContext & {\n source_token_count: number;\n };\n\ntype BatchSellQuotePageEventProperties = BatchSellChainProperties &\n BatchSellQuotePageEventContext & {\n source_token_count: number;\n };\n\ntype BatchSellReviewModalSubmittedEventProperties = BatchSellChainProperties &\n BatchSellReviewModalSubmittedEventContext & {\n source_token_count: number;\n };\n\ntype SharedEventContextFromClient = {\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n feature_id: FeatureId;\n};\n\ntype OptionalLocationContextFromClient<T> = T extends {\n location: unknown;\n}\n ? object\n : { location?: BridgeControllerMetricsLocation };\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * Most events receive an optional location via RequiredEventContextFromClient;\n * Batch Sell events define their own required location enum.\n */\ntype RequiredEventContextFromClientBase = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: Pick<\n RequestParams,\n 'token_symbol_source' | 'token_symbol_destination'\n > & { environment_type?: string };\n // When type is object, the payload can be anything\n [UnifiedSwapBridgeEventName.PageViewed]: object;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input:\n | 'token_source'\n | 'token_destination'\n | 'chain_source'\n | 'chain_destination'\n | 'slippage'\n | 'token_amount_source';\n input_value: InputValues[keyof InputValues];\n input_amount_preset?: string;\n };\n [UnifiedSwapBridgeEventName.FiatCryptoToggleClicked]: {\n token_symbol_source: string;\n token_symbol_destination: string | null;\n previous_primary_denomination: InputPrimaryDenomination;\n new_primary_denomination: InputPrimaryDenomination;\n chain_id_source?: RequestParams['chain_id_source'];\n chain_id_destination?: RequestParams['chain_id_destination'];\n token_address_source?: RequestParams['token_address_source'];\n token_address_destination?: RequestParams['token_address_destination'];\n token_security_type_destination?: RequestParams['token_security_type_destination'];\n swap_type?: RequestMetadata['swap_type'];\n };\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n token_address_source: RequestParams['token_address_source'];\n token_address_destination: RequestParams['token_address_destination'];\n token_security_type_destination: RequestParams['token_security_type_destination'];\n chain_id_source: RequestParams['chain_id_source'];\n chain_id_destination: RequestParams['chain_id_destination'];\n } & Pick<RequestMetadata, 'security_warnings'>;\n [UnifiedSwapBridgeEventName.QuotesRequested]: Pick<\n RequestMetadata,\n 'stx_enabled' | 'usd_amount_source'\n > & {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n token_security_type_destination: RequestParams['token_security_type_destination'];\n custom_slippage?: RequestMetadata['custom_slippage'];\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesReceived]: TradeData &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> &\n InputPrimaryDenominationData & {\n warnings: QuoteWarning[];\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n price_impact: QuoteFetchData['price_impact'];\n can_submit: QuoteFetchData['can_submit'];\n usd_balance_source?: number;\n has_sufficient_gas_for_quote?: boolean | null;\n usd_amount_source: number;\n custom_slippage?: RequestMetadata['custom_slippage'];\n slippage_limit?: RequestMetadata['slippage_limit'];\n };\n [UnifiedSwapBridgeEventName.QuotesError]: Pick<\n RequestMetadata,\n 'stx_enabled'\n > & {\n token_symbol_source: RequestParams['token_symbol_source'];\n token_symbol_destination: RequestParams['token_symbol_destination'];\n } & Pick<RequestMetadata, 'security_warnings'>;\n // Emitted by BridgeStatusController\n [UnifiedSwapBridgeEventName.Submitted]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'token_address_source'\n | 'token_address_destination'\n | 'chain_id_source'\n | 'chain_id_destination'\n | 'token_security_type_destination'\n > & {\n action_type: MetricsActionType;\n batch_id?: string;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.Completed]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n TxStatusData &\n RequestParams & {\n actual_time_minutes: number;\n usd_actual_return: number;\n usd_actual_gas: number;\n quote_vs_execution_ratio: number;\n quoted_vs_used_gas_ratio: number;\n action_type: MetricsActionType;\n batch_id?: string;\n transaction_internal_id?: string;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.Failed]: (\n | // Tx failed before confirmation\n (Pick<\n RequestMetadata,\n | 'stx_enabled'\n | 'usd_amount_source'\n | 'is_hardware_wallet'\n | 'account_hardware_type'\n > &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'token_address_source'\n | 'token_address_destination'\n | 'token_security_type_destination'\n >)\n // Tx failed after confirmation\n | (RequestParams &\n RequestMetadata &\n TxStatusData & {\n actual_time_minutes: number;\n })\n ) &\n TradeData &\n Pick<QuoteFetchData, 'price_impact'> & {\n error_message: string;\n batch_id?: string;\n };\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: {\n polling_status: PollingStatus;\n retry_attempts: number;\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: {\n failures: string[];\n refresh_count: number;\n } & Partial<RequestParams>;\n // Emitted by clients\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: Pick<\n TradeData,\n 'gas_included' | 'gas_included_7702'\n > &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {\n stx_enabled: RequestMetadata['stx_enabled'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.AllQuotesSorted]: Pick<\n TradeData,\n 'gas_included' | 'gas_included_7702'\n > &\n Pick<QuoteFetchData, 'price_impact'> &\n Pick<RequestParams, 'token_symbol_source' | 'token_symbol_destination'> & {\n stx_enabled: RequestMetadata['stx_enabled'];\n sort_order: SortOrder;\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.QuoteSelected]: TradeData & {\n is_best_quote: boolean;\n best_quote_provider: QuoteFetchData['best_quote_provider'];\n price_impact: QuoteFetchData['price_impact'];\n can_submit: QuoteFetchData['can_submit'];\n };\n [UnifiedSwapBridgeEventName.AssetDetailTooltipClicked]: {\n token_name: string;\n token_symbol: string;\n token_contract: string;\n chain_name: string;\n chain_id: string;\n };\n [UnifiedSwapBridgeEventName.QuotesValidationFailed]: {\n failures: string[];\n };\n [UnifiedSwapBridgeEventName.AssetPickerOpened]: {\n asset_location: 'source' | 'destination';\n };\n [BatchSellMetricsEventName.BatchSellTokenPageViewed]: BatchSellTokenPageEventContext;\n [BatchSellMetricsEventName.BatchSellTokenPageContinueClicked]: BatchSellSourceTokenEventContext;\n [BatchSellMetricsEventName.BatchSellQuotePageViewed]: BatchSellQuotePageEventContext;\n [BatchSellMetricsEventName.BatchSellQuotePageReviewClicked]: BatchSellQuotePageEventContext;\n [BatchSellMetricsEventName.BatchSellReviewModalSubmitted]: BatchSellReviewModalSubmittedEventContext;\n};\n\n/**\n * Properties that are required to be provided when trackUnifiedSwapBridgeEvent is called.\n * This combines the event-specific properties from RequiredEventContextFromClientBase\n * with an optional `location` property. When `location` is omitted, the controller\n * falls back to the value stored via `setLocation()` (defaults to Unknown).\n *\n * `ab_tests` is the legacy field and `active_ab_tests` is the newer field.\n * Both are kept for a migration window and are treated as separate payloads.\n */\nexport type RequiredEventContextFromClient = {\n [K in keyof RequiredEventContextFromClientBase]: K extends BatchSellMetricsEventName\n ? RequiredEventContextFromClientBase[K]\n : RequiredEventContextFromClientBase[K] &\n OptionalLocationContextFromClient<\n RequiredEventContextFromClientBase[K]\n > &\n SharedEventContextFromClient;\n};\n\n/**\n * Properties that can be derived from the bridge controller state\n */\nexport type EventPropertiesFromControllerState = {\n [UnifiedSwapBridgeEventName.ButtonClicked]: RequestParams;\n [UnifiedSwapBridgeEventName.PageViewed]: RequestParams &\n Omit<\n RequestMetadata,\n 'stx_enabled' | 'usd_amount_source' | 'security_warnings'\n > &\n InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.InputChanged]: {\n input: InputKeys;\n input_value: string;\n };\n [UnifiedSwapBridgeEventName.FiatCryptoToggleClicked]: RequestParams &\n Pick<RequestMetadata, 'swap_type'>;\n [UnifiedSwapBridgeEventName.InputSourceDestinationSwitched]: RequestParams;\n [UnifiedSwapBridgeEventName.QuotesRequested]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesReceived]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData & {\n refresh_count: number; // starts from 0\n has_sufficient_funds: boolean;\n } & InputPrimaryDenominationData;\n [UnifiedSwapBridgeEventName.QuotesError]: RequestParams &\n RequestMetadata & {\n has_sufficient_funds: boolean;\n error_message: string;\n };\n [UnifiedSwapBridgeEventName.Submitted]: null;\n [UnifiedSwapBridgeEventName.Completed]: null;\n [UnifiedSwapBridgeEventName.Failed]: RequestParams &\n RequestMetadata &\n TxStatusData &\n TradeData &\n Pick<QuoteFetchData, 'price_impact'> & {\n actual_time_minutes: number;\n };\n [UnifiedSwapBridgeEventName.AllQuotesOpened]: RequestParams &\n RequestMetadata &\n TradeData &\n QuoteFetchData;\n [UnifiedSwapBridgeEventName.AllQuotesSorted]: RequestParams &\n RequestMetadata &\n TradeData &\n QuoteFetchData;\n [UnifiedSwapBridgeEventName.QuoteSelected]: RequestParams &\n RequestMetadata &\n QuoteFetchData &\n TradeData;\n [UnifiedSwapBridgeEventName.AssetDetailTooltipClicked]: null;\n [UnifiedSwapBridgeEventName.QuotesValidationFailed]: RequestParams & {\n refresh_count: number;\n };\n [UnifiedSwapBridgeEventName.StatusValidationFailed]: RequestParams;\n [UnifiedSwapBridgeEventName.AssetPickerOpened]: null;\n [UnifiedSwapBridgeEventName.PollingStatusUpdated]: TradeData &\n Pick<QuoteFetchData, 'price_impact'> &\n Omit<RequestMetadata, 'security_warnings'> &\n Pick<\n RequestParams,\n | 'token_symbol_source'\n | 'token_symbol_destination'\n | 'chain_id_source'\n | 'chain_id_destination'\n > & {\n batch_id?: string;\n };\n [BatchSellMetricsEventName.BatchSellTokenPageViewed]: BatchSellTokenPageEventProperties;\n [BatchSellMetricsEventName.BatchSellTokenPageContinueClicked]: BatchSellSourceTokenEventProperties;\n [BatchSellMetricsEventName.BatchSellQuotePageViewed]: BatchSellQuotePageEventProperties;\n [BatchSellMetricsEventName.BatchSellQuotePageReviewClicked]: BatchSellQuotePageEventProperties;\n [BatchSellMetricsEventName.BatchSellReviewModalSubmitted]: BatchSellReviewModalSubmittedEventProperties;\n};\n\ntype SharedCrossChainSwapsEventProperties<\n T extends BridgeControllerMetricsEventName,\n> =\n | {\n feature_id: FeatureId;\n action_type: MetricsActionType;\n location: BridgeControllerMetricsLocation;\n ab_tests?: Record<string, string>;\n active_ab_tests?: { key: string; value: string }[];\n }\n | Pick<EventPropertiesFromControllerState, T>[T]\n | Pick<RequiredEventContextFromClient, T>[T];\n\n/**\n * trackUnifiedSwapBridgeEvent payload properties consist of required properties from the client\n * and properties from the bridge controller\n *\n * `ab_tests` will be deprecated in favor of `active_ab_tests` in the future.\n * `ab_tests` and `active_ab_tests` intentionally coexist during migration.\n */\nexport type CrossChainSwapsEventProperties<\n T extends BridgeControllerMetricsEventName,\n> = T extends BatchSellMetricsEventName\n ? Pick<EventPropertiesFromControllerState, T>[T]\n : SharedCrossChainSwapsEventProperties<T>;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BigNumber } from
|
|
2
|
-
import type { DeepPartial } from
|
|
3
|
-
import type { QuoteResponse } from
|
|
1
|
+
import { BigNumber } from 'bignumber.js';
|
|
2
|
+
import type { DeepPartial } from '../types.js';
|
|
3
|
+
import type { QuoteResponse } from '../validators/quote-response.js';
|
|
4
4
|
/**
|
|
5
5
|
* 1500000 -> 1.5
|
|
6
6
|
*
|
|
@@ -31,4 +31,4 @@ export declare const formatEtaInMinutes: (estimatedProcessingTimeInSeconds: numb
|
|
|
31
31
|
* @returns The aggregated fee object, or null if no fees are provided
|
|
32
32
|
*/
|
|
33
33
|
export declare const sumAmounts: (...maybeFees: ((DeepPartial<QuoteResponse['quote']['dest']> | undefined | null)[] | undefined)[]) => DeepPartial<QuoteResponse['quote']['dest']> | undefined;
|
|
34
|
-
//# sourceMappingURL=number-formatters.d.
|
|
34
|
+
//# sourceMappingURL=number-formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-formatters.d.ts","sourceRoot":"","sources":["../../src/utils/number-formatters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGrE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,UAC7B,MAAM,GAAG,SAAS,GAAG,SAAS,YAC3B,MAAM,GAAG,SAAS,0BAO7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,UACzB,MAAM,GAAG,SAAS,GAAG,SAAS,YAC3B,MAAM,GAAG,SAAS,uBAO7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,qCACK,MAAM,WAMzC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,iBACP,CACV,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAClE,SAAS,CACZ,EAAE,KACF,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAgEhD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
2
|
-
import { BigNumber } from
|
|
3
|
-
import { assetIdsMatch } from
|
|
2
|
+
import { BigNumber } from 'bignumber.js';
|
|
3
|
+
import { assetIdsMatch } from './assets.js';
|
|
4
4
|
/**
|
|
5
5
|
* 1500000 -> 1.5
|
|
6
6
|
*
|
|
@@ -97,4 +97,4 @@ export const sumAmounts = (...maybeFees) => {
|
|
|
97
97
|
return newAcc;
|
|
98
98
|
}, {});
|
|
99
99
|
};
|
|
100
|
-
//# sourceMappingURL=number-formatters.
|
|
100
|
+
//# sourceMappingURL=number-formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-formatters.js","sourceRoot":"","sources":["../../src/utils/number-formatters.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { BigNumber } from 'bignumber.js';\n\nimport type { DeepPartial } from '../types.js';\nimport type { QuoteResponse } from '../validators/quote-response.js';\nimport { assetIdsMatch } from './assets.js';\n\n/**\n * 1500000 -> 1.5\n *\n * @param value - The value to convert to token amount\n * @param decimals - The number of decimals to convert to\n * @returns The token amount in string format\n */\nexport const calcNormalizedTokenAmount = (\n value: string | BigNumber | undefined,\n decimals: number | undefined,\n) => {\n if (value === undefined || decimals === undefined) {\n return undefined;\n }\n const divisor = new BigNumber(10).pow(decimals ?? 0);\n return new BigNumber(value).div(divisor);\n};\n\n/**\n * 1.5 -> 1500000\n *\n * @param value - The amount to convert to token value\n * @param decimals - The number of decimals to convert to\n * @returns The token value in string format\n */\nexport const calcAtomicTokenAmount = (\n value: string | BigNumber | undefined,\n decimals: number | undefined,\n) => {\n if (value === undefined || decimals === undefined) {\n return undefined;\n }\n const divisor = new BigNumber(10).pow(decimals);\n return new BigNumber(value).times(divisor).toFixed();\n};\n\n/**\n * @deprecated No longer used\n * @param estimatedProcessingTimeInSeconds - The estimated processing time in seconds\n * @returns The estimated processing time in minutes\n */\nexport const formatEtaInMinutes = (\n estimatedProcessingTimeInSeconds: number,\n) => {\n if (estimatedProcessingTimeInSeconds < 60) {\n return `< 1`;\n }\n return (estimatedProcessingTimeInSeconds / 60).toFixed();\n};\n\n/**\n * Aggregates a list of amounts into a single fee object. If fees have different assets,\n * the returned object will only aggregate the usd and valueInCurrency values.\n *\n * @param maybeFees - The list of fees to aggregate\n * @returns The aggregated fee object, or null if no fees are provided\n */\nexport const sumAmounts = (\n ...maybeFees: (\n | (DeepPartial<QuoteResponse['quote']['dest']> | undefined | null)[]\n | undefined\n )[]\n): DeepPartial<QuoteResponse['quote']['dest']> | undefined => {\n const fees = maybeFees\n .flat()\n .flat()\n .filter(\n (value): value is Partial<QuoteResponse['quote']['dest']> =>\n value !== undefined && value !== null,\n );\n\n if (!fees || fees.length === 0) {\n return undefined;\n }\n\n /**\n * Fees and prices can be denominated in different assets, so we need to check if all fees have the same units\n */\n const isSameAssetForAllFees = fees.reduce(\n (acc, fee) =>\n acc && assetIdsMatch(fee.asset?.assetId, fees[0]?.asset?.assetId),\n true,\n );\n\n /**\n * Keys that require the asset to be the same for all fees\n */\n const AMOUNT_KEYS = [\n 'amount' as const,\n 'normalizedAmount' as const,\n 'minAmount' as const,\n 'minAmountNormalized' as const,\n ];\n\n /**\n * Keys that can be aggregated across all fees\n */\n const FIAT_OR_USD_KEYS = [\n 'valueInCurrency' as const,\n 'usd' as const,\n 'minAmountValueInCurrency' as const,\n 'minAmountUsd' as const,\n ];\n\n return fees.reduce((acc, fee) => {\n const newAcc = { ...acc };\n if (isSameAssetForAllFees && fee.asset) {\n newAcc.asset = fee.asset;\n }\n\n AMOUNT_KEYS.forEach((key) => {\n const value = fee[key];\n if (value && isSameAssetForAllFees) {\n newAcc[key] = new BigNumber(acc[key] ?? 0).plus(value).toFixed();\n }\n });\n\n FIAT_OR_USD_KEYS.forEach((key) => {\n const value = fee[key];\n if (value) {\n newAcc[key] = new BigNumber(acc[key] ?? 0).plus(value).toFixed();\n }\n });\n\n return newAcc;\n }, {});\n};\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { InternalAccount } from '@metamask/keyring-internal-api';
|
|
2
|
+
import type { TransactionController } from '@metamask/transaction-controller';
|
|
3
|
+
import type { CaipChainId } from '@metamask/utils';
|
|
4
|
+
import type { L1GasFees, NonEvmFees, BridgeControllerMessenger } from '../types.js';
|
|
5
|
+
import type { QuoteResponseV1 } from '../validators/quote-response-v1.js';
|
|
6
|
+
/**
|
|
7
|
+
* Appends transaction fees to quotes
|
|
8
|
+
*
|
|
9
|
+
* @param chainId - The CAIP chain ID of the quotes
|
|
10
|
+
* @param quotes - Array of quote responses to append fees to
|
|
11
|
+
* @param messenger - The bridge controller to use to call the snap controller
|
|
12
|
+
* @param getLayer1GasFee - The function to use to get the layer 1 gas fee
|
|
13
|
+
* @param selectedAccount - The selected account for which the quotes were requested
|
|
14
|
+
* @returns Array of quotes with fees appended, or undefined if quotes are for EVM chains
|
|
15
|
+
*/
|
|
16
|
+
export declare const appendFeesToQuotes: <QuoteType extends Omit<QuoteResponseV1, 'quote'>>(chainId: CaipChainId, quotes: QuoteType[], messenger: BridgeControllerMessenger, getLayer1GasFee: typeof TransactionController.prototype.getLayer1GasFee, selectedAccount?: InternalAccount) => Promise<(QuoteType & L1GasFees & NonEvmFees)[]>;
|
|
17
|
+
//# sourceMappingURL=quote-fees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-fees.d.ts","sourceRoot":"","sources":["../../src/utils/quote-fees.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAuL1E;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,SAAS,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,WAEvC,WAAW,UACZ,SAAS,EAAE,aACR,yBAAyB,mBACnB,OAAO,qBAAqB,CAAC,SAAS,CAAC,eAAe,oBACrD,eAAe,KAChC,OAAO,CAAC,CAAC,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,EAAE,CAgBhD,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { CHAIN_IDS } from
|
|
2
|
-
import { isTronTrade } from
|
|
3
|
-
import { isNonEvmChainId, sumHexes } from
|
|
4
|
-
import { formatChainIdToCaip, formatChainIdToHex } from
|
|
5
|
-
import { computeFeeRequest } from
|
|
6
|
-
import { extractTradeData } from
|
|
1
|
+
import { CHAIN_IDS } from '../constants/chains.js';
|
|
2
|
+
import { isTronTrade } from '../validators/trade.js';
|
|
3
|
+
import { isNonEvmChainId, sumHexes } from './bridge.js';
|
|
4
|
+
import { formatChainIdToCaip, formatChainIdToHex } from './caip-formatters.js';
|
|
5
|
+
import { computeFeeRequest } from './snaps.js';
|
|
6
|
+
import { extractTradeData } from './trade-utils.js';
|
|
7
7
|
/**
|
|
8
8
|
* Appends transaction fees for EVM chains to quotes
|
|
9
9
|
*
|
|
@@ -137,4 +137,4 @@ export const appendFeesToQuotes = async (chainId, quotes, messenger, getLayer1Ga
|
|
|
137
137
|
const quotesWithNonEvmFees = await appendNonEvmFees(chainId, quotes, messenger, selectedAccount);
|
|
138
138
|
return quotesWithL1GasFees ?? quotesWithNonEvmFees ?? quotes;
|
|
139
139
|
};
|
|
140
|
-
//# sourceMappingURL=quote-fees.
|
|
140
|
+
//# sourceMappingURL=quote-fees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-fees.js","sourceRoot":"","sources":["../../src/utils/quote-fees.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { TransactionController } from '@metamask/transaction-controller';\nimport type { CaipChainId } from '@metamask/utils';\n\nimport { CHAIN_IDS } from '../constants/chains.js';\nimport type {\n L1GasFees,\n NonEvmFees,\n BridgeControllerMessenger,\n} from '../types.js';\nimport type { QuoteResponseV1 } from '../validators/quote-response-v1.js';\nimport { isTronTrade } from '../validators/trade.js';\nimport type { TxData } from '../validators/trade.js';\nimport { isNonEvmChainId, sumHexes } from './bridge.js';\nimport { formatChainIdToCaip, formatChainIdToHex } from './caip-formatters.js';\nimport { computeFeeRequest } from './snaps.js';\nimport { extractTradeData } from './trade-utils.js';\n\n/**\n * Appends transaction fees for EVM chains to quotes\n *\n * @param chainId - The CAIP srcChainId of the quotes\n * @param quotes - Array of quote responses to append fees to\n * @param getLayer1GasFee - The function to use to get the layer 1 gas fee\n * @returns Array of quotes with fees appended, or undefined if quotes are for non-EVM chains\n */\nconst appendL1GasFees = async <\n QuoteType extends Omit<QuoteResponseV1, 'quote'>,\n>(\n chainId: CaipChainId,\n quotes: QuoteType[],\n getLayer1GasFee: typeof TransactionController.prototype.getLayer1GasFee,\n): Promise<(QuoteType & L1GasFees)[] | undefined> => {\n // Indicates whether some of the quotes are not for optimism or base\n const hasInvalidQuotes = ![CHAIN_IDS.OPTIMISM, CHAIN_IDS.BASE]\n .map(formatChainIdToCaip)\n .includes(chainId);\n\n // Only append L1 gas fees if all quotes are for either optimism or base\n if (hasInvalidQuotes) {\n return undefined;\n }\n\n const hexChainId = formatChainIdToHex(chainId);\n const l1GasFeePromises = Promise.allSettled(\n quotes.map(async (quoteResponse) => {\n const { trade, approval } = quoteResponse;\n\n const getTxParams = (txData: TxData) => ({\n from: txData.from,\n to: txData.to,\n value: txData.value,\n data: txData.data,\n gasLimit: txData.gasLimit?.toString(),\n });\n const approvalL1GasFees = approval\n ? await getLayer1GasFee({\n transactionParams: getTxParams(approval as TxData),\n chainId: hexChainId,\n })\n : '0x0';\n const tradeL1GasFees = await getLayer1GasFee({\n transactionParams: getTxParams(trade as TxData),\n chainId: hexChainId,\n });\n\n if (approvalL1GasFees === undefined || tradeL1GasFees === undefined) {\n return undefined;\n }\n\n return {\n ...quoteResponse,\n l1GasFeesInHexWei: sumHexes(approvalL1GasFees, tradeL1GasFees),\n };\n }),\n );\n\n const quotesWithL1GasFees = (await l1GasFeePromises).reduce<\n (QuoteType & L1GasFees)[]\n >((acc, result) => {\n if (result.status === 'fulfilled' && result.value) {\n acc.push(result.value);\n } else if (result.status === 'rejected') {\n console.error('Error calculating L1 gas fees for quote', result.reason);\n }\n return acc;\n }, []);\n\n if (quotesWithL1GasFees.length) {\n return quotesWithL1GasFees;\n }\n return undefined;\n};\n\n/**\n * Appends transaction fees for non-EVM chains to quotes\n *\n * @param chainId - The CAIP chain ID of the quotes\n * @param quotes - Array of quote responses to append fees to\n * @param messenger - The messaging system to use to call the snap controller\n * @param selectedAccount - The selected account for which the quotes were requested\n * @returns Array of quotes with fees appended, or undefined if quotes are for EVM chains\n */\nconst appendNonEvmFees = async <\n QuoteType extends Omit<QuoteResponseV1, 'quote'>,\n>(\n chainId: CaipChainId,\n quotes: QuoteType[],\n messenger: BridgeControllerMessenger,\n selectedAccount?: InternalAccount,\n): Promise<(QuoteType & NonEvmFees)[] | undefined> => {\n if (!isNonEvmChainId(chainId)) {\n return undefined;\n }\n\n const nonEvmFeePromises = Promise.allSettled(\n quotes.map(async (quoteResponse) => {\n const { trade } = quoteResponse;\n\n // Skip fee computation if no snap account or trade data\n if (!selectedAccount?.metadata?.snap?.id || !trade) {\n return quoteResponse;\n }\n\n try {\n const transaction = extractTradeData(trade);\n\n // Tron trades need the visible flag and contract type to be included in the request options\n const options = isTronTrade(trade)\n ? {\n visible: trade.visible,\n type: trade.raw_data?.contract?.[0]?.type,\n feeLimit: trade.raw_data?.fee_limit,\n }\n : undefined;\n\n const response = (await messenger.call(\n 'SnapController:handleRequest',\n computeFeeRequest(\n selectedAccount?.metadata?.snap?.id,\n transaction,\n selectedAccount?.id,\n chainId,\n options,\n ),\n )) as {\n type: 'base' | 'priority';\n asset: {\n unit: string;\n type: string;\n amount: string;\n fungible: true;\n };\n }[];\n\n // Bitcoin snap returns 'priority' fee, Solana returns 'base' fee\n const fee =\n response?.find((f) => f.type === 'base') ||\n response?.find((f) => f.type === 'priority') ||\n response?.[0];\n const feeInNative = fee?.asset?.amount || '0';\n\n return {\n ...quoteResponse,\n nonEvmFeesInNative: feeInNative,\n };\n } catch (error) {\n // Return quote with undefined fee if snap fails (e.g., insufficient UTXO funds)\n // Client can render special UI or skip the quote card row for quotes with missing fee data\n console.error(\n `Failed to compute non-EVM fees for quote ${quoteResponse.quoteId ?? ''}`,\n error,\n );\n return {\n ...quoteResponse,\n nonEvmFeesInNative: undefined,\n };\n }\n }),\n );\n\n const quotesWithNonEvmFees = (await nonEvmFeePromises).reduce<\n (QuoteType & NonEvmFees)[]\n >((acc, result) => {\n if (result.status === 'fulfilled' && result.value) {\n acc.push(result.value);\n }\n return acc;\n }, []);\n\n return quotesWithNonEvmFees;\n};\n\n/**\n * Appends transaction fees to quotes\n *\n * @param chainId - The CAIP chain ID of the quotes\n * @param quotes - Array of quote responses to append fees to\n * @param messenger - The bridge controller to use to call the snap controller\n * @param getLayer1GasFee - The function to use to get the layer 1 gas fee\n * @param selectedAccount - The selected account for which the quotes were requested\n * @returns Array of quotes with fees appended, or undefined if quotes are for EVM chains\n */\nexport const appendFeesToQuotes = async <\n QuoteType extends Omit<QuoteResponseV1, 'quote'>,\n>(\n chainId: CaipChainId,\n quotes: QuoteType[],\n messenger: BridgeControllerMessenger,\n getLayer1GasFee: typeof TransactionController.prototype.getLayer1GasFee,\n selectedAccount?: InternalAccount,\n): Promise<(QuoteType & L1GasFees & NonEvmFees)[]> => {\n // Safe to cast: appendL1GasFees checks if all quotes are EVM and returns undefined otherwise\n const quotesWithL1GasFees = await appendL1GasFees(\n chainId,\n quotes,\n getLayer1GasFee,\n );\n\n const quotesWithNonEvmFees = await appendNonEvmFees(\n chainId,\n quotes,\n messenger,\n selectedAccount,\n );\n\n return quotesWithL1GasFees ?? quotesWithNonEvmFees ?? quotes;\n};\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { L1GasFees, ExchangeRate, NonEvmFees, DeepPartial } from
|
|
2
|
-
import type { BridgeAsset } from
|
|
3
|
-
import type { QuoteResponseV1 } from
|
|
4
|
-
import type { QuoteResponse } from
|
|
5
|
-
import type { TxData } from
|
|
6
|
-
import type { QuoteMetadata, TokenAmountValues } from
|
|
1
|
+
import type { L1GasFees, ExchangeRate, NonEvmFees, DeepPartial } from '../../types.js';
|
|
2
|
+
import type { BridgeAsset } from '../../validators/bridge-asset.js';
|
|
3
|
+
import type { QuoteResponseV1 } from '../../validators/quote-response-v1.js';
|
|
4
|
+
import type { QuoteResponse } from '../../validators/quote-response.js';
|
|
5
|
+
import type { TxData } from '../../validators/trade.js';
|
|
6
|
+
import type { QuoteMetadata, TokenAmountValues } from './types.js';
|
|
7
7
|
export declare const calcNonEvmTotalNetworkFee: (bridgeQuote: QuoteResponseV1 & NonEvmFees, { exchangeRate, usdExchangeRate }: ExchangeRate) => {
|
|
8
8
|
amount: string | undefined;
|
|
9
9
|
valueInCurrency: string | undefined;
|
|
@@ -24,14 +24,14 @@ export declare const calcBatchFees: (amount: string, asset: BridgeAsset, { excha
|
|
|
24
24
|
valueInCurrency: string | null | undefined;
|
|
25
25
|
usd: string | null | undefined;
|
|
26
26
|
asset: {
|
|
27
|
-
symbol: string;
|
|
28
27
|
chainId: number;
|
|
29
|
-
|
|
28
|
+
address: string;
|
|
30
29
|
assetId: `${string}:${string}/${string}:${string}`;
|
|
30
|
+
symbol: string;
|
|
31
|
+
name: string;
|
|
31
32
|
decimals: number;
|
|
32
|
-
address: string;
|
|
33
|
-
iconUrl?: string | null | undefined;
|
|
34
33
|
icon?: string | null | undefined;
|
|
34
|
+
iconUrl?: string | null | undefined;
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
37
|
export declare const calcRelayerFee: (sentAmount: ReturnType<typeof calcSentAmount>, quoteResponse: QuoteResponseV1<TxData>, { exchangeRate, usdExchangeRate }: ExchangeRate) => {
|
|
@@ -41,7 +41,7 @@ export declare const calcRelayerFee: (sentAmount: ReturnType<typeof calcSentAmou
|
|
|
41
41
|
} | undefined;
|
|
42
42
|
export declare const calcEstimatedAndMaxTotalGasFee: ({ bridgeQuote: { approval, trade, l1GasFeesInHexWei, resetApproval }, feePerGasInDecGwei, exchangeRate: nativeToDisplayCurrencyExchangeRate, usdExchangeRate: nativeToUsdExchangeRate, }: {
|
|
43
43
|
bridgeQuote: QuoteResponseV1<TxData, TxData> & L1GasFees;
|
|
44
|
-
feePerGasInDecGwei?: string
|
|
44
|
+
feePerGasInDecGwei?: string;
|
|
45
45
|
} & ExchangeRate) => {
|
|
46
46
|
total: {
|
|
47
47
|
amount: string | undefined;
|
|
@@ -118,4 +118,4 @@ export declare const calcQuoteMetadata: (quote: QuoteResponseV1 | QuoteResponse,
|
|
|
118
118
|
destTokenExchangeRate: ExchangeRate;
|
|
119
119
|
nativeExchangeRate: ExchangeRate;
|
|
120
120
|
}) => QuoteMetadata;
|
|
121
|
-
//# sourceMappingURL=calculators.d.
|
|
121
|
+
//# sourceMappingURL=calculators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculators.d.ts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/calculators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
2
|
-
import { convertHexToDecimal, toHex, weiHexToGweiDec } from
|
|
3
|
-
import { is } from
|
|
4
|
-
import { BigNumber } from
|
|
5
|
-
import { toQuoteResponseV1 } from
|
|
6
|
-
import { FloatStringSchema } from
|
|
7
|
-
import { isQuoteResponseV2 } from
|
|
8
|
-
import { assetIdsMatch } from
|
|
9
|
-
import { isEvmQuoteResponse, isNativeAddress } from
|
|
10
|
-
import { calcNormalizedTokenAmount } from
|
|
11
|
-
import { includeIfTruthy } from
|
|
2
|
+
import { convertHexToDecimal, toHex, weiHexToGweiDec, } from '@metamask/controller-utils';
|
|
3
|
+
import { is } from '@metamask/superstruct';
|
|
4
|
+
import { BigNumber } from 'bignumber.js';
|
|
5
|
+
import { toQuoteResponseV1 } from '../../coercers/quote-response-v2-to-v1.js';
|
|
6
|
+
import { FloatStringSchema } from '../../validators/number.js';
|
|
7
|
+
import { isQuoteResponseV2 } from '../../validators/quote-response.js';
|
|
8
|
+
import { assetIdsMatch } from '../assets.js';
|
|
9
|
+
import { isEvmQuoteResponse, isNativeAddress } from '../bridge.js';
|
|
10
|
+
import { calcNormalizedTokenAmount } from '../number-formatters.js';
|
|
11
|
+
import { includeIfTruthy } from './include-if-truthy.js';
|
|
12
12
|
export const calcNonEvmTotalNetworkFee = (bridgeQuote, { exchangeRate, usdExchangeRate }) => {
|
|
13
13
|
const { nonEvmFeesInNative } = bridgeQuote;
|
|
14
14
|
// Fees are now stored directly in native units (SOL, BTC) without conversion
|
|
@@ -325,4 +325,4 @@ export const calcQuoteMetadata = (quote, options) => {
|
|
|
325
325
|
...includeIfTruthy(priceImpact, { priceImpact }),
|
|
326
326
|
};
|
|
327
327
|
};
|
|
328
|
-
//# sourceMappingURL=calculators.
|
|
328
|
+
//# sourceMappingURL=calculators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculators.js","sourceRoot":"","sources":["../../../src/utils/quote-metadata/calculators.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport {\n convertHexToDecimal,\n toHex,\n weiHexToGweiDec,\n} from '@metamask/controller-utils';\nimport { is } from '@metamask/superstruct';\nimport { BigNumber } from 'bignumber.js';\n\nimport { toQuoteResponseV1 } from '../../coercers/quote-response-v2-to-v1.js';\nimport type {\n L1GasFees,\n ExchangeRate,\n NonEvmFees,\n DeepPartial,\n} from '../../types.js';\nimport type { BridgeAsset } from '../../validators/bridge-asset.js';\nimport { FloatStringSchema } from '../../validators/number.js';\nimport type { QuoteResponseV1 } from '../../validators/quote-response-v1.js';\nimport { isQuoteResponseV2 } from '../../validators/quote-response.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport type { TxData } from '../../validators/trade.js';\nimport { assetIdsMatch } from '../assets.js';\nimport { isEvmQuoteResponse, isNativeAddress } from '../bridge.js';\nimport { calcNormalizedTokenAmount } from '../number-formatters.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport type { QuoteMetadata, TokenAmountValues } from './types.js';\n\nexport const calcNonEvmTotalNetworkFee = (\n bridgeQuote: QuoteResponseV1 & NonEvmFees,\n { exchangeRate, usdExchangeRate }: ExchangeRate,\n) => {\n const { nonEvmFeesInNative } = bridgeQuote;\n // Fees are now stored directly in native units (SOL, BTC) without conversion\n const feeInNative = nonEvmFeesInNative\n ? new BigNumber(nonEvmFeesInNative)\n : undefined;\n\n return {\n amount: feeInNative?.toFixed(),\n valueInCurrency: exchangeRate && feeInNative?.times(exchangeRate).toFixed(),\n usd: usdExchangeRate && feeInNative?.times(usdExchangeRate).toFixed(),\n };\n};\n\nexport const calcToAmount = (\n destTokenAmount: string | undefined,\n destAsset: BridgeAsset,\n { exchangeRate, usdExchangeRate }: ExchangeRate,\n) => {\n const normalizedDestAmount = calcNormalizedTokenAmount(\n destTokenAmount,\n destAsset.decimals,\n );\n return {\n amount: normalizedDestAmount?.toFixed(),\n valueInCurrency:\n exchangeRate && normalizedDestAmount?.times(exchangeRate).toFixed(),\n usd:\n usdExchangeRate && normalizedDestAmount?.times(usdExchangeRate).toFixed(),\n };\n};\n\nexport const calcSentAmount = (\n { srcTokenAmount, srcAsset, feeData, intent }: QuoteResponseV1['quote'],\n { exchangeRate, usdExchangeRate }: ExchangeRate,\n isQuoteV2: boolean = false,\n) => {\n // For intent-based swaps or converted V2 quote responses, srcTokenAmount is the total\n // fixed commitment the user makes to the protocol — the protocol fee is\n // already baked in. Adding feeData fees on top would double-count them.\n // For conventional swaps, srcTokenAmount is the net routing amount (fees\n // excluded), so the src-token fees must be added to get the wallet deduction.\n const sentAmount =\n intent || isQuoteV2\n ? new BigNumber(srcTokenAmount)\n : Object.values(feeData)\n .filter(\n (fee) =>\n fee?.amount &&\n assetIdsMatch(fee.asset?.assetId, srcAsset.assetId),\n )\n .reduce(\n (acc, { amount }) => acc.plus(amount),\n new BigNumber(srcTokenAmount),\n );\n const normalizedSentAmount = calcNormalizedTokenAmount(\n sentAmount,\n srcAsset.decimals,\n );\n return {\n amount: normalizedSentAmount?.toFixed(),\n valueInCurrency:\n exchangeRate && normalizedSentAmount?.times(exchangeRate).toFixed(),\n usd:\n usdExchangeRate && normalizedSentAmount?.times(usdExchangeRate).toFixed(),\n };\n};\n\nexport const calcBatchFees = (\n amount: string,\n asset: BridgeAsset,\n { exchangeRate, usdExchangeRate }: ExchangeRate,\n) => {\n const normalizedAmount = calcNormalizedTokenAmount(amount, asset.decimals);\n\n return {\n amount: normalizedAmount?.toFixed(),\n valueInCurrency: exchangeRate\n ? normalizedAmount?.times(exchangeRate).toFixed()\n : null,\n usd: usdExchangeRate\n ? normalizedAmount?.times(usdExchangeRate).toFixed()\n : null,\n asset,\n };\n};\n\nexport const calcRelayerFee = (\n sentAmount: ReturnType<typeof calcSentAmount>,\n quoteResponse: QuoteResponseV1<TxData>,\n { exchangeRate, usdExchangeRate }: ExchangeRate,\n) => {\n const { quote, trade } = quoteResponse;\n const relayerFeeAmount = trade.value\n ? new BigNumber(convertHexToDecimal(trade.value))\n : undefined;\n let relayerFeeInNative = relayerFeeAmount\n ? calcNormalizedTokenAmount(relayerFeeAmount, 18)\n : undefined;\n\n // Subtract srcAmount and other fees from trade value if srcAsset is native\n if (isNativeAddress(quote.srcAsset.assetId)) {\n relayerFeeInNative = relayerFeeInNative?.minus(sentAmount.amount ?? '0');\n }\n\n if (relayerFeeInNative?.lte(0)) {\n return undefined;\n }\n\n return {\n amount: relayerFeeInNative?.toFixed(),\n valueInCurrency:\n exchangeRate && relayerFeeInNative?.times(exchangeRate).toFixed(),\n usd:\n usdExchangeRate && relayerFeeInNative?.times(usdExchangeRate).toFixed(),\n };\n};\n\nconst calcTotalGasFee = ({\n approvalGasLimit,\n resetApprovalGasLimit,\n tradeGasLimit,\n l1GasFeesInHexWei,\n feePerGasInDecGwei,\n nativeToDisplayCurrencyExchangeRate,\n nativeToUsdExchangeRate,\n}: {\n approvalGasLimit?: number | null;\n resetApprovalGasLimit?: number | null;\n tradeGasLimit?: number | null;\n l1GasFeesInHexWei?: string | null;\n feePerGasInDecGwei?: string;\n nativeToDisplayCurrencyExchangeRate?: string;\n nativeToUsdExchangeRate?: string;\n}) => {\n const totalGasLimitInDec =\n tradeGasLimit || approvalGasLimit || resetApprovalGasLimit\n ? new BigNumber(tradeGasLimit?.toFixed() ?? '0')\n .plus(approvalGasLimit?.toFixed() ?? '0')\n .plus(resetApprovalGasLimit?.toFixed() ?? '0')\n : undefined;\n\n const l1GasFeesInDecGWei = l1GasFeesInHexWei\n ? weiHexToGweiDec(toHex(l1GasFeesInHexWei))\n : undefined;\n\n const gasFeesInDecGwei = totalGasLimitInDec\n ? totalGasLimitInDec\n ?.times(feePerGasInDecGwei ?? '0')\n ?.plus(l1GasFeesInDecGWei ?? '0')\n : undefined;\n const gasFeesInDecEth = gasFeesInDecGwei?.times(new BigNumber(10).pow(-9));\n\n const gasFeesInDisplayCurrency = nativeToDisplayCurrencyExchangeRate\n ? gasFeesInDecEth?.times(nativeToDisplayCurrencyExchangeRate)\n : undefined;\n const gasFeesInUSD = nativeToUsdExchangeRate\n ? gasFeesInDecEth?.times(nativeToUsdExchangeRate)\n : undefined;\n\n return {\n amount: gasFeesInDecEth?.toFixed(),\n valueInCurrency: gasFeesInDisplayCurrency?.toFixed(),\n usd: gasFeesInUSD?.toFixed(),\n };\n};\n\nexport const calcEstimatedAndMaxTotalGasFee = ({\n bridgeQuote: { approval, trade, l1GasFeesInHexWei, resetApproval },\n feePerGasInDecGwei,\n exchangeRate: nativeToDisplayCurrencyExchangeRate,\n usdExchangeRate: nativeToUsdExchangeRate,\n}: {\n bridgeQuote: QuoteResponseV1<TxData, TxData> & L1GasFees;\n feePerGasInDecGwei?: string;\n} & ExchangeRate) => {\n // Estimated total gas fee, including refunded fees (medium)\n const { amount, valueInCurrency, usd } = calcTotalGasFee({\n approvalGasLimit: approval?.gasLimit,\n resetApprovalGasLimit: resetApproval?.gasLimit,\n tradeGasLimit: trade?.gasLimit,\n l1GasFeesInHexWei,\n feePerGasInDecGwei,\n nativeToDisplayCurrencyExchangeRate,\n nativeToUsdExchangeRate,\n });\n\n return {\n total: {\n amount,\n valueInCurrency,\n usd,\n },\n };\n};\n\n/**\n * Calculates the total estimated network fees for the bridge transaction\n *\n * @param gasFee - The gas fee for the bridge transaction\n * @param gasFee.total - The fee to display to the user. If not available, this is equal to the gasLimit (total)\n * @param relayerFee - The relayer fee paid to bridge providers\n * @returns The total estimated network fee for the bridge transaction, including the relayer fee paid to bridge providers\n */\nexport const calcTotalEstimatedNetworkFee = (\n gasFee: { total?: Partial<TokenAmountValues> } | undefined,\n relayerFee: ReturnType<typeof calcRelayerFee>,\n) => {\n const { total: gasFeeToDisplay } = gasFee ?? {};\n return {\n amount:\n (gasFeeToDisplay?.amount ?? relayerFee?.amount) &&\n new BigNumber(gasFeeToDisplay?.amount ?? '0')\n .plus(relayerFee?.amount ?? '0')\n .toFixed(),\n valueInCurrency:\n (gasFeeToDisplay?.valueInCurrency ?? relayerFee?.valueInCurrency) &&\n new BigNumber(gasFeeToDisplay?.valueInCurrency ?? '0')\n .plus(relayerFee?.valueInCurrency ?? '0')\n .toFixed(),\n usd:\n (gasFeeToDisplay?.usd ?? relayerFee?.usd) &&\n new BigNumber(gasFeeToDisplay?.usd ?? '0')\n .plus(relayerFee?.usd ?? '0')\n .toFixed(),\n };\n};\n\n// Gas is included for some swap quotes and this is the value displayed in the client\nexport const calcIncludedTxFees = (\n {\n gasIncluded,\n gasIncluded7702,\n srcAsset,\n feeData: { txFee },\n }: QuoteResponseV1['quote'],\n srcTokenExchangeRate: ExchangeRate,\n destTokenExchangeRate: ExchangeRate,\n) => {\n if (!txFee || !(gasIncluded || gasIncluded7702)) {\n return undefined;\n }\n // Use exchange rate of the token that is being used to pay for the transaction\n const { exchangeRate, usdExchangeRate } = assetIdsMatch(\n txFee?.asset?.assetId,\n srcAsset.assetId,\n )\n ? srcTokenExchangeRate\n : destTokenExchangeRate;\n const normalizedTxFeeAmount = calcNormalizedTokenAmount(\n txFee?.amount,\n txFee?.asset.decimals,\n );\n\n return {\n amount: normalizedTxFeeAmount?.toFixed(),\n valueInCurrency:\n exchangeRate && normalizedTxFeeAmount?.times(exchangeRate).toFixed(),\n usd:\n usdExchangeRate &&\n normalizedTxFeeAmount?.times(usdExchangeRate).toFixed(),\n };\n};\n\nexport const calcAdjustedReturn = (\n toTokenAmount: Partial<TokenAmountValues>,\n totalEstimatedNetworkFee: Partial<TokenAmountValues>,\n {\n feeData: { txFee },\n destAsset: { assetId: destAssetId },\n }: QuoteResponseV1['quote'],\n) => {\n // If gas is included and is taken from the dest token, don't subtract network fee from return\n if (assetIdsMatch(txFee?.asset?.assetId, destAssetId)) {\n return {\n valueInCurrency: toTokenAmount.valueInCurrency,\n usd: toTokenAmount.usd,\n };\n }\n return {\n valueInCurrency:\n toTokenAmount.valueInCurrency &&\n totalEstimatedNetworkFee.valueInCurrency &&\n new BigNumber(toTokenAmount.valueInCurrency)\n .minus(totalEstimatedNetworkFee.valueInCurrency)\n .toFixed(),\n usd:\n toTokenAmount.usd &&\n totalEstimatedNetworkFee.usd &&\n new BigNumber(toTokenAmount.usd)\n .minus(totalEstimatedNetworkFee.usd)\n .toFixed(),\n };\n};\n\nexport const calcSwapRate = (sentAmount?: string, destTokenAmount?: string) =>\n destTokenAmount && sentAmount\n ? new BigNumber(destTokenAmount).div(sentAmount).toFixed()\n : undefined;\n\nexport const calcCost = (\n adjustedReturn: ReturnType<typeof calcAdjustedReturn>,\n sentAmount: ReturnType<typeof calcSentAmount>,\n) => ({\n valueInCurrency:\n adjustedReturn.valueInCurrency &&\n sentAmount.valueInCurrency &&\n new BigNumber(sentAmount.valueInCurrency)\n .minus(adjustedReturn.valueInCurrency)\n .toFixed(),\n usd:\n adjustedReturn.usd &&\n sentAmount.usd &&\n new BigNumber(sentAmount.usd).minus(adjustedReturn.usd).toFixed(),\n});\n\n/**\n * Calculates the slippage absolute value percentage based on the adjusted return and sent amount.\n *\n * @param adjustedReturn - Adjusted return value\n * @param sentAmount - Sent amount value\n * @returns the slippage in percentage\n */\nexport const calcSlippagePercentage = (\n adjustedReturn: ReturnType<typeof calcAdjustedReturn>,\n sentAmount: ReturnType<typeof calcSentAmount>,\n): string | null => {\n const cost = calcCost(adjustedReturn, sentAmount);\n\n if (cost.valueInCurrency && sentAmount.valueInCurrency) {\n return new BigNumber(cost.valueInCurrency)\n .div(sentAmount.valueInCurrency)\n .times(100)\n .abs()\n .toFixed();\n }\n\n if (cost.usd && sentAmount.usd) {\n return new BigNumber(cost.usd)\n .div(sentAmount.usd)\n .times(100)\n .abs()\n .toFixed();\n }\n\n return null;\n};\n\n/**\n * Returns the fiat price impact for a bridge quote — the difference between\n * the source input fiat amount and the destination output fiat amount\n *\n * @param quote - The active quote\n * @returns Formatted fiat impact string, or `undefined` when either fiat value is unavailable.\n */\nexport const calcPriceImpact = (\n quote?: DeepPartial<\n Pick<QuoteMetadata, 'sentAmount' | 'toTokenAmount'>\n > | null,\n) => {\n if (!quote?.sentAmount || !quote?.toTokenAmount) {\n return undefined;\n }\n\n const sourceFiat = quote.sentAmount.valueInCurrency;\n const destFiat = quote.toTokenAmount.valueInCurrency;\n const sourceUsd = quote.sentAmount.usd;\n const destUsd = quote.toTokenAmount.usd;\n\n const isSourceFiatValid = (value: unknown): value is string[] =>\n is(value, FloatStringSchema);\n\n const valueInCurrency =\n isSourceFiatValid(sourceFiat) && isSourceFiatValid(destFiat)\n ? new BigNumber(sourceFiat).minus(destFiat).abs().toFixed()\n : undefined;\n const usd =\n isSourceFiatValid(sourceUsd) && isSourceFiatValid(destUsd)\n ? new BigNumber(sourceUsd).minus(destUsd).abs().toFixed()\n : undefined;\n\n if (!valueInCurrency && !usd) {\n return undefined;\n }\n\n return {\n valueInCurrency,\n usd,\n };\n};\n\n/**\n * Calculates quote metadata, such as converted fiat amounts and fees,\n * based on the controller state and the quote response\n *\n * @param quote - The quote response to calculate the metadata for\n * @param options - The options for the calculation\n * @param options.bridgeFeesPerGas - The bridge fees per gas\n * @param options.srcTokenExchangeRate - The exchange rate for the source token\n * @param options.destTokenExchangeRate - The exchange rate for the destination token\n * @param options.nativeExchangeRate - The exchange rate for the native token\n * @returns The calculated metadata\n */\nexport const calcQuoteMetadata = (\n quote: QuoteResponseV1 | QuoteResponse,\n options: {\n bridgeFeesPerGas: null | {\n estimatedBaseFeeInDecGwei: string | null;\n feePerGasInDecGwei?: string;\n };\n srcTokenExchangeRate: ExchangeRate;\n destTokenExchangeRate: ExchangeRate;\n nativeExchangeRate: ExchangeRate;\n },\n): QuoteMetadata => {\n const {\n bridgeFeesPerGas = {},\n srcTokenExchangeRate = {},\n destTokenExchangeRate = {},\n nativeExchangeRate = {},\n } = options;\n\n const isQuoteV2 = isQuoteResponseV2(quote);\n const quoteV1 = isQuoteV2 ? toQuoteResponseV1(quote) : quote;\n\n const sentAmount = calcSentAmount(\n quoteV1.quote,\n srcTokenExchangeRate,\n isQuoteV2,\n );\n\n const toTokenAmount = calcToAmount(\n quoteV1.quote.destTokenAmount,\n quoteV1.quote.destAsset,\n destTokenExchangeRate,\n );\n const minToTokenAmount = calcToAmount(\n quoteV1.quote.minDestTokenAmount ?? quoteV1.quote.destTokenAmount,\n quoteV1.quote.destAsset,\n destTokenExchangeRate,\n );\n\n const includedTxFees = calcIncludedTxFees(\n quoteV1.quote,\n srcTokenExchangeRate,\n destTokenExchangeRate,\n );\n\n let totalEstimatedNetworkFee, relayerFee, gasFee;\n\n if (isEvmQuoteResponse(quoteV1)) {\n relayerFee = calcRelayerFee(sentAmount, quoteV1, nativeExchangeRate);\n gasFee = calcEstimatedAndMaxTotalGasFee({\n bridgeQuote: quoteV1,\n ...bridgeFeesPerGas,\n ...nativeExchangeRate,\n });\n // Uses total gasFee to calculate the total estimated network fee\n totalEstimatedNetworkFee = calcTotalEstimatedNetworkFee(gasFee, relayerFee);\n } else {\n // Use the new generic function for all non-EVM chains\n totalEstimatedNetworkFee = calcNonEvmTotalNetworkFee(\n quoteV1,\n nativeExchangeRate,\n );\n gasFee = {\n total: totalEstimatedNetworkFee,\n };\n }\n\n const adjustedReturn = calcAdjustedReturn(\n toTokenAmount,\n totalEstimatedNetworkFee,\n quoteV1.quote,\n );\n const cost = calcCost(adjustedReturn, sentAmount);\n\n // The quote has not been updated at this point, so we need to calculate the price impact using sentAmount and toTokenAmount\n const priceImpact = calcPriceImpact({ sentAmount, toTokenAmount });\n\n return {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate: calcSwapRate(sentAmount.amount, toTokenAmount.amount),\n /**\n This is the amount required to submit all the transactions.\n Includes the relayer fee or other native fees.\n Should be used for balance checks and tx submission.\n */\n totalNetworkFee: totalEstimatedNetworkFee,\n /**\n This contains gas fee estimates for the bridge transaction\n Does not include the relayer fee (if needed), just the gasLimit and effectiveGas returned by the bridge API.\n Should only be used for display purposes.\n */\n gasFee,\n ...includeIfTruthy(adjustedReturn, { adjustedReturn }),\n ...includeIfTruthy(cost, { cost }),\n ...includeIfTruthy(includedTxFees, { includedTxFees }),\n ...includeIfTruthy(relayerFee, { relayerFee }),\n ...includeIfTruthy(priceImpact, { priceImpact }),\n };\n};\n"]}
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
* @returns The result if any of the values in the value object are truthy, otherwise undefined
|
|
7
7
|
*/
|
|
8
8
|
export declare const includeIfTruthy: <ResultType extends Record<string, unknown>>(value: Record<string, unknown> | undefined, result: ResultType) => ResultType | undefined;
|
|
9
|
-
//# sourceMappingURL=include-if-truthy.d.
|
|
9
|
+
//# sourceMappingURL=include-if-truthy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"include-if-truthy.d.ts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/include-if-truthy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SACjE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,UAClC,UAAU,KACjB,UAAU,GAAG,SAUf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"include-if-truthy.js","sourceRoot":"","sources":["../../../src/utils/quote-metadata/include-if-truthy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,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":["/**\n * Includes the `result` if any of `value`'s properties are truthy\n *\n * @param value - The value object\n * @param result - The result to include\n * @returns The result if any of the values in the value object are truthy, otherwise undefined\n */\nexport 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,7 +1,7 @@
|
|
|
1
|
-
import type { DeepPartial } from
|
|
2
|
-
import type { QuoteResponse } from
|
|
3
|
-
import type { QuoteMetadata } from
|
|
4
|
-
import { QuoteMetadataMigrationPhase } from
|
|
1
|
+
import type { DeepPartial } from '../../types.js';
|
|
2
|
+
import type { QuoteResponse } from '../../validators/quote-response.js';
|
|
3
|
+
import type { QuoteMetadata } from './types.js';
|
|
4
|
+
import { QuoteMetadataMigrationPhase } from './types.js';
|
|
5
5
|
/**
|
|
6
6
|
* Merges legacy {@link QuoteMetadata} values into the {@link QuoteResponse}
|
|
7
7
|
*
|
|
@@ -12,4 +12,4 @@ import { QuoteMetadataMigrationPhase } from "./types.cjs";
|
|
|
12
12
|
* @returns The {@link QuoteResponse} with the metadata merged in
|
|
13
13
|
*/
|
|
14
14
|
export declare function mergeQuoteMetadata(quoteResponse: QuoteResponse, legacyQuoteMetadata?: QuoteMetadata, migrationPhase?: QuoteMetadataMigrationPhase, currencyValues?: DeepPartial<QuoteResponse>): QuoteResponse & QuoteMetadata;
|
|
15
|
-
//# sourceMappingURL=merge.d.
|
|
15
|
+
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/merge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAIxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,EAC5B,mBAAmB,GAAE,aAAkB,EACvC,cAAc,GAAE,2BAAgE,EAChF,cAAc,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,GAC1C,aAAa,GAAG,aAAa,CAoE/B"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { QuoteMetadataMigrationPhase } from "./types.mjs";
|
|
1
|
+
import { merge } from 'lodash-es';
|
|
2
|
+
import { includeIfTruthy } from './include-if-truthy.js';
|
|
3
|
+
import { toNormalizedAmounts } from './to-normalized-amounts.js';
|
|
4
|
+
import { toQuoteMetadataV2 } from './to-quote-metadata-v2.js';
|
|
5
|
+
import { QuoteMetadataMigrationPhase } from './types.js';
|
|
7
6
|
/**
|
|
8
7
|
* Merges legacy {@link QuoteMetadata} values into the {@link QuoteResponse}
|
|
9
8
|
*
|
|
@@ -54,4 +53,4 @@ export function mergeQuoteMetadata(quoteResponse, legacyQuoteMetadata = {}, migr
|
|
|
54
53
|
};
|
|
55
54
|
return merge({}, restQuoteResponse, sanitizedQuoteResponseV2, toNormalizedAmounts(sanitizedQuoteResponseV2), legacyQuoteMetadataV2, legacyQuoteMetadata);
|
|
56
55
|
}
|
|
57
|
-
//# sourceMappingURL=merge.
|
|
56
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/utils/quote-metadata/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAA4B,EAC5B,mBAAmB,GAAkB,EAAE,EACvC,cAAc,GAAgC,2BAA2B,CAAC,MAAM,EAChF,cAA2C;IAE3C,IAAI,cAAc,KAAK,2BAA2B,CAAC,MAAM,EAAE,CAAC;QAC1D,OAAO,KAAK,CACV,EAAE,EACF,aAAa,EACb,mBAAmB,CAAC,aAAa,CAAC,EAClC,cAAc,CACf,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAAG,iBAAiB,CAC7C,mBAAmB,EACnB,aAAa,CACd,CAAC;IAEF,IAAI,cAAc,KAAK,2BAA2B,CAAC,gBAAgB,EAAE,CAAC;QACpE,OAAO,KAAK,CACV,EAAE,EACF,qBAAqB,EACrB,mBAAmB,EAAE,4DAA4D;QACjF,aAAa,EACb,mBAAmB,CAAC,aAAa,CAAC,EAClC,cAAc,CACf,CAAC;IACJ,CAAC;IAED,4HAA4H;IAC5H,MAAM,EAAE,KAAK,EAAE,GAAG,iBAAiB,EAAE,GAAG,aAAa,CAAC;IACtD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;IAEzD,MAAM,cAAc,GAAG;QACrB,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY;QAC/C,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB;KAChE,CAAC;IACF,MAAM,SAAS,GAAG,eAAe,CAAC,cAAc,EAAE;QAChD,KAAK,EAAE,CAAC,cAAc,CAAC;KACxB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE;QAChE,UAAU,EAAE,OAAO,EAAE,UAAU;KAChC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,IAAI;QACxD,SAAS,EAAE;YACT,WAAW,EAAE;gBACX,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM;aACvC;SACF;KACF,CAAC;IAEF,MAAM,wBAAwB,GAAG;QAC/B,KAAK,EAAE;YACL,GAAG,SAAS;YACZ,OAAO,EAAE;gBACP,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;gBAC5B,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;aACrB;YACD,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;SAC3B;KACF,CAAC;IACF,OAAO,KAAK,CACV,EAAE,EACF,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,CAAC,wBAAwB,CAAC,EAC7C,qBAAqB,EACrB,mBAAmB,CACpB,CAAC;AACJ,CAAC","sourcesContent":["import { merge } from 'lodash-es';\n\nimport type { DeepPartial } from '../../types.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport { toNormalizedAmounts } from './to-normalized-amounts.js';\nimport { toQuoteMetadataV2 } from './to-quote-metadata-v2.js';\nimport type { QuoteMetadata } from './types.js';\nimport { QuoteMetadataMigrationPhase } from './types.js';\n\n/**\n * Merges legacy {@link QuoteMetadata} values into the {@link QuoteResponse}\n *\n * @param quoteResponse - The {@link QuoteResponse} to merge the metadata into\n * @param legacyQuoteMetadata - The {@link QuoteMetadata} values to merge\n * @param migrationPhase - The active {@link QuoteMetadataMigrationPhase}\n * @param currencyValues - The amounts in the user's currency, derived from the backend's `usd` values\n * @returns The {@link QuoteResponse} with the metadata merged in\n */\nexport function mergeQuoteMetadata(\n quoteResponse: QuoteResponse,\n legacyQuoteMetadata: QuoteMetadata = {},\n migrationPhase: QuoteMetadataMigrationPhase = QuoteMetadataMigrationPhase.V1Data,\n currencyValues?: DeepPartial<QuoteResponse>,\n): QuoteResponse & QuoteMetadata {\n if (migrationPhase === QuoteMetadataMigrationPhase.V2Only) {\n return merge(\n {},\n quoteResponse,\n toNormalizedAmounts(quoteResponse),\n currencyValues,\n );\n }\n\n const legacyQuoteMetadataV2 = toQuoteMetadataV2(\n legacyQuoteMetadata,\n quoteResponse,\n );\n\n if (migrationPhase === QuoteMetadataMigrationPhase.V2WithV1Fallback) {\n return merge(\n {},\n legacyQuoteMetadataV2,\n legacyQuoteMetadata, // legacyQuoteMetadata is returned for testing purposes only\n quoteResponse,\n toNormalizedAmounts(quoteResponse),\n currencyValues,\n );\n }\n\n // Sanitize the bridge-api's quote response by removing fee and price data that will be replaced with legacy metadata values\n const { quote, ...restQuoteResponse } = quoteResponse;\n const { feeData, priceData, ...restQuote } = quote ?? {};\n\n const txFeeGasParams = {\n maxFeePerGas: feeData?.txFee?.[0]?.maxFeePerGas,\n maxPriorityFeePerGas: feeData?.txFee?.[0]?.maxPriorityFeePerGas,\n };\n const txFeeData = includeIfTruthy(txFeeGasParams, {\n txFee: [txFeeGasParams],\n });\n\n const metabridgeFeeData = includeIfTruthy(feeData?.metabridge[0], {\n metabridge: feeData?.metabridge,\n });\n\n const priceImpactData = priceData?.priceImpact?.amount && {\n priceData: {\n priceImpact: {\n amount: priceData?.priceImpact?.amount,\n },\n },\n };\n\n const sanitizedQuoteResponseV2 = {\n quote: {\n ...restQuote,\n feeData: {\n ...(metabridgeFeeData ?? {}),\n ...(txFeeData ?? {}),\n },\n ...(priceImpactData ?? {}),\n },\n };\n return merge(\n {},\n restQuoteResponse,\n sanitizedQuoteResponseV2,\n toNormalizedAmounts(sanitizedQuoteResponseV2),\n legacyQuoteMetadataV2,\n legacyQuoteMetadata,\n );\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BigNumber } from
|
|
2
|
-
import type { DeepPartial } from
|
|
3
|
-
import type { QuoteResponse } from
|
|
1
|
+
import { BigNumber } from 'bignumber.js';
|
|
2
|
+
import type { DeepPartial } from '../../types.js';
|
|
3
|
+
import type { QuoteResponse } from '../../validators/quote-response.js';
|
|
4
4
|
/**
|
|
5
5
|
* Builds a partial {@link QuoteResponse} object with fiat values derived from the usd values provided by the bridge-api
|
|
6
6
|
*
|
|
@@ -9,4 +9,4 @@ import type { QuoteResponse } from "../../validators/quote-response.cjs";
|
|
|
9
9
|
* @returns The partial {@link QuoteResponse} object with fiat values
|
|
10
10
|
*/
|
|
11
11
|
export declare const toCurrencyValues: (quote: QuoteResponse, usdToFiatExchangeRate?: BigNumber) => DeepPartial<QuoteResponse>;
|
|
12
|
-
//# sourceMappingURL=to-currency-values.d.
|
|
12
|
+
//# sourceMappingURL=to-currency-values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-currency-values.d.ts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-currency-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAiBxE;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,UACpB,aAAa,0BACI,SAAS,KAChC,WAAW,CAAC,aAAa,CAmD3B,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FeeType } from "../../validators/quote.mjs";
|
|
1
|
+
import { FeeType } from '../../validators/quote.js';
|
|
3
2
|
const toCurrency = (fee, usdToFiatExchangeRate) => {
|
|
4
3
|
const { usd, valueInCurrency } = fee ?? {};
|
|
5
4
|
if (usd && usdToFiatExchangeRate) {
|
|
@@ -55,4 +54,4 @@ export const toCurrencyValues = (quote, usdToFiatExchangeRate) => {
|
|
|
55
54
|
},
|
|
56
55
|
};
|
|
57
56
|
};
|
|
58
|
-
//# sourceMappingURL=to-currency-values.
|
|
57
|
+
//# sourceMappingURL=to-currency-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-currency-values.js","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-currency-values.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,MAAM,UAAU,GAAG,CACjB,GAAsD,EACtD,qBAAiC,EACqB,EAAE;IACxD,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC;IAC3C,IAAI,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACjC,OAAO,EAAE,eAAe,EAAE,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAAoB,EACpB,qBAAiC,EACL,EAAE;IAC9B,MAAM,EACJ,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GACzC,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,SAAS,IAAI,EAAE,CAAC;IAExD,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACvE,MAAM,kBAAkB,GAAG,UAAU,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;IAE7E,MAAM,wBAAwB,GAAG,UAAU,CACzC;QACE,GAAG,EAAE,IAAI,CAAC,YAAY;QACtB,eAAe,EAAE,IAAI,CAAC,wBAAwB;KAC/C,EACD,qBAAqB,CACtB,EAAE,eAAe,CAAC;IAEnB,OAAO;QACL,KAAK,EAAE;YACL,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC;YAC3C,IAAI,EAAE;gBACJ,GAAG,UAAU,CAAC,IAAI,EAAE,qBAAqB,CAAC;gBAC1C,GAAG,CAAC,wBAAwB,IAAI;oBAC9B,wBAAwB;iBACzB,CAAC;aACH;YACD,OAAO,EACL,OAAO;gBACP,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;qBACnB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACrC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;oBAChB,OAAO;oBACP,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5B,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CACvC;iBACF,CAAC,CACL;YACH,GAAG,CAAC,CAAC,eAAe,IAAI,kBAAkB,CAAC,IAAI;gBAC7C,SAAS,EAAE;oBACT,GAAG,CAAC,eAAe,IAAI;wBACrB,WAAW,EAAE,eAAe;qBAC7B,CAAC;oBACF,GAAG,CAAC,kBAAkB,IAAI;wBACxB,cAAc,EAAE,kBAAkB;qBACnC,CAAC;iBACH;aACF,CAAC;SACH;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { BigNumber } from 'bignumber.js';\n\nimport type { DeepPartial } from '../../types.js';\nimport type { AmountsAndAsset } from '../../validators/amount-and-asset.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { FeeType } from '../../validators/quote.js';\n\nconst toCurrency = (\n fee?: Pick<AmountsAndAsset, 'usd' | 'valueInCurrency'>,\n usdToFiatExchangeRate?: BigNumber,\n): Pick<AmountsAndAsset, 'valueInCurrency'> | undefined => {\n const { usd, valueInCurrency } = fee ?? {};\n if (usd && usdToFiatExchangeRate) {\n return { valueInCurrency: usdToFiatExchangeRate.times(usd).toFixed() };\n }\n if (valueInCurrency) {\n return { valueInCurrency };\n }\n return undefined;\n};\n\n/**\n * Builds a partial {@link QuoteResponse} object with fiat values derived from the usd values provided by the bridge-api\n *\n * @param quote - The quote response to calculate the metadata for\n * @param usdToFiatExchangeRate - The usd to fiat exchange rate\n * @returns The partial {@link QuoteResponse} object with fiat values\n */\nexport const toCurrencyValues = (\n quote: QuoteResponse,\n usdToFiatExchangeRate?: BigNumber,\n): DeepPartial<QuoteResponse> => {\n const {\n quote: { src, dest, feeData, priceData },\n } = quote;\n\n const { adjustedReturn, priceImpact } = priceData ?? {};\n\n const priceImpactFiat = toCurrency(priceImpact, usdToFiatExchangeRate);\n const adjustedReturnFiat = toCurrency(adjustedReturn, usdToFiatExchangeRate);\n\n const minAmountValueInCurrency = toCurrency(\n {\n usd: dest.minAmountUsd,\n valueInCurrency: dest.minAmountValueInCurrency,\n },\n usdToFiatExchangeRate,\n )?.valueInCurrency;\n\n return {\n quote: {\n src: toCurrency(src, usdToFiatExchangeRate),\n dest: {\n ...toCurrency(dest, usdToFiatExchangeRate),\n ...(minAmountValueInCurrency && {\n minAmountValueInCurrency,\n }),\n },\n feeData:\n feeData &&\n Object.fromEntries(\n Object.values(FeeType)\n .filter((feeType) => feeData[feeType])\n .map((feeType) => [\n feeType,\n feeData[feeType]?.map((fee) =>\n toCurrency(fee, usdToFiatExchangeRate),\n ),\n ]),\n ),\n ...((priceImpactFiat ?? adjustedReturnFiat) && {\n priceData: {\n ...(priceImpactFiat && {\n priceImpact: priceImpactFiat,\n }),\n ...(adjustedReturnFiat && {\n adjustedReturn: adjustedReturnFiat,\n }),\n },\n }),\n },\n };\n};\n"]}
|
package/dist/utils/quote-metadata/{to-normalized-amounts.d.mts → to-normalized-amounts.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { DeepPartial } from
|
|
2
|
-
import type { QuoteResponse } from
|
|
1
|
+
import type { DeepPartial } from '../../types.js';
|
|
2
|
+
import type { QuoteResponse } from '../../validators/quote-response.js';
|
|
3
3
|
/**
|
|
4
4
|
* Builds a partial {@link QuoteResponese} with normalized amounts
|
|
5
5
|
*
|
|
@@ -7,4 +7,4 @@ import type { QuoteResponse } from "../../validators/quote-response.mjs";
|
|
|
7
7
|
* @returns The {@link DeepPartial<QuoteResponse>}
|
|
8
8
|
*/
|
|
9
9
|
export declare const toNormalizedAmounts: (quoteResponseV2: DeepPartial<QuoteResponse>) => DeepPartial<QuoteResponse>;
|
|
10
|
-
//# sourceMappingURL=to-normalized-amounts.d.
|
|
10
|
+
//# sourceMappingURL=to-normalized-amounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-normalized-amounts.d.ts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-normalized-amounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAIxE;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,oBACb,WAAW,CAAC,aAAa,CAAC,KAC1C,WAAW,CAAC,aAAa,CA2C3B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FeeType } from
|
|
2
|
-
import { calcNormalizedTokenAmount } from
|
|
1
|
+
import { FeeType } from '../../validators/quote.js';
|
|
2
|
+
import { calcNormalizedTokenAmount } from '../number-formatters.js';
|
|
3
3
|
/**
|
|
4
4
|
* Builds a partial {@link QuoteResponese} with normalized amounts
|
|
5
5
|
*
|
|
@@ -31,4 +31,4 @@ export const toNormalizedAmounts = (quoteResponseV2) => {
|
|
|
31
31
|
},
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=to-normalized-amounts.
|
|
34
|
+
//# sourceMappingURL=to-normalized-amounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-normalized-amounts.js","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-normalized-amounts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,eAA2C,EACf,EAAE;IAC9B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC;IAE3D,OAAO;QACL,KAAK,EAAE;YACL,GAAG,EAAE;gBACH,gBAAgB,EAAE,yBAAyB,CACzC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,KAAK,EAAE,QAAQ,CACrB,EAAE,OAAO,EAAE;aACb;YACD,IAAI,EAAE;gBACJ,gBAAgB,EAAE,yBAAyB,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,KAAK,EAAE,QAAQ,CACtB,EAAE,OAAO,EAAE;gBACZ,mBAAmB,EAAE,yBAAyB,CAC5C,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,KAAK,EAAE,QAAQ,CACtB,EAAE,OAAO,EAAE;aACb;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBACxD,gBAAgB,EAAE,yBAAyB,CACzC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,KAAK,EAAE,QAAQ,CAC5B,EAAE,OAAO,EAAE;iBACb,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBACxD,gBAAgB,EAAE,yBAAyB,CACzC,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAC3B,EAAE,OAAO,EAAE;iBACb,CAAC,CAAC;gBACH,KAAK,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAChD,gBAAgB,EAAE,yBAAyB,CACzC,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EAAE,QAAQ,CACtB,EAAE,OAAO,EAAE;iBACb,CAAC,CAAC;aACJ;SACF;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { DeepPartial } from '../../types.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { FeeType } from '../../validators/quote.js';\nimport { calcNormalizedTokenAmount } from '../number-formatters.js';\n\n/**\n * Builds a partial {@link QuoteResponese} with normalized amounts\n *\n * @param quoteResponseV2 - The {@link QuoteResponse} to convert\n * @returns The {@link DeepPartial<QuoteResponse>}\n */\nexport const toNormalizedAmounts = (\n quoteResponseV2: DeepPartial<QuoteResponse>,\n): DeepPartial<QuoteResponse> => {\n const { src, dest, feeData } = quoteResponseV2.quote ?? {};\n\n return {\n quote: {\n src: {\n normalizedAmount: calcNormalizedTokenAmount(\n src?.amount,\n src?.asset?.decimals,\n )?.toFixed(),\n },\n dest: {\n normalizedAmount: calcNormalizedTokenAmount(\n dest?.amount,\n dest?.asset?.decimals,\n )?.toFixed(),\n minAmountNormalized: calcNormalizedTokenAmount(\n dest?.minAmount,\n dest?.asset?.decimals,\n )?.toFixed(),\n },\n feeData: {\n network: feeData?.[FeeType.NETWORK]?.map((networkFee) => ({\n normalizedAmount: calcNormalizedTokenAmount(\n networkFee?.amount,\n networkFee?.asset?.decimals,\n )?.toFixed(),\n })),\n relayer: feeData?.[FeeType.RELAYER]?.map((relayerFee) => ({\n normalizedAmount: calcNormalizedTokenAmount(\n relayerFee.amount,\n relayerFee.asset?.decimals,\n )?.toFixed(),\n })),\n txFee: feeData?.[FeeType.TX_FEE]?.map((txFee) => ({\n normalizedAmount: calcNormalizedTokenAmount(\n txFee.amount,\n txFee.asset?.decimals,\n )?.toFixed(),\n })),\n },\n },\n };\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { DeepPartial } from
|
|
2
|
-
import type { QuoteResponseV1 } from
|
|
3
|
-
import type { QuoteResponse } from
|
|
4
|
-
import type { QuoteMetadata } from
|
|
5
|
-
import { QuoteMetadataMigrationPhase } from
|
|
1
|
+
import type { DeepPartial } from '../../types.js';
|
|
2
|
+
import type { QuoteResponseV1 } from '../../validators/quote-response-v1.js';
|
|
3
|
+
import type { QuoteResponse } from '../../validators/quote-response.js';
|
|
4
|
+
import type { QuoteMetadata } from './types.js';
|
|
5
|
+
import { QuoteMetadataMigrationPhase } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.
|
|
8
8
|
* If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.
|
|
@@ -12,4 +12,4 @@ import { QuoteMetadataMigrationPhase } from "./types.cjs";
|
|
|
12
12
|
* @returns A partial {@link QuoteMetadata} object
|
|
13
13
|
*/
|
|
14
14
|
export declare const toQuoteMetadataV1: (quoteResponse: (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata) | null, migrationPhase?: QuoteMetadataMigrationPhase) => QuoteMetadata;
|
|
15
|
-
//# sourceMappingURL=to-quote-metadata-v1.d.
|
|
15
|
+
//# sourceMappingURL=to-quote-metadata-v1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v1.d.ts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAYzD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,kBAExB,CAAC,WAAW,CAAC,aAAa,GAAG,eAAe,CAAC,GAAG,aAAa,CAAC,GAC9D,IAAI,mBACQ,2BAA2B,KAC1C,aA0FF,CAAC"}
|