@metamask-previews/bridge-controller 77.6.0-preview-68ba7f84e → 77.8.0-preview-5959fe813
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 +42 -7
- package/dist/bridge-controller.cjs +13 -8
- package/dist/bridge-controller.cjs.map +1 -1
- package/dist/bridge-controller.d.cts +2 -1
- package/dist/bridge-controller.d.cts.map +1 -1
- package/dist/bridge-controller.d.mts +2 -1
- package/dist/bridge-controller.d.mts.map +1 -1
- package/dist/bridge-controller.mjs +10 -5
- package/dist/bridge-controller.mjs.map +1 -1
- package/dist/coercers/quote-response-v1-to-v2.cjs +137 -0
- package/dist/coercers/quote-response-v1-to-v2.cjs.map +1 -0
- package/dist/coercers/quote-response-v1-to-v2.d.cts +13 -0
- package/dist/coercers/quote-response-v1-to-v2.d.cts.map +1 -0
- package/dist/coercers/quote-response-v1-to-v2.d.mts +13 -0
- package/dist/coercers/quote-response-v1-to-v2.d.mts.map +1 -0
- package/dist/coercers/quote-response-v1-to-v2.mjs +132 -0
- package/dist/coercers/quote-response-v1-to-v2.mjs.map +1 -0
- package/dist/coercers/quote-response-v2-to-v1.cjs +173 -0
- package/dist/coercers/quote-response-v2-to-v1.cjs.map +1 -0
- package/dist/coercers/quote-response-v2-to-v1.d.cts +13 -0
- package/dist/coercers/quote-response-v2-to-v1.d.cts.map +1 -0
- package/dist/coercers/quote-response-v2-to-v1.d.mts +13 -0
- package/dist/coercers/quote-response-v2-to-v1.d.mts.map +1 -0
- package/dist/coercers/quote-response-v2-to-v1.mjs +169 -0
- package/dist/coercers/quote-response-v2-to-v1.mjs.map +1 -0
- package/dist/constants/bridge.cjs +2 -1
- package/dist/constants/bridge.cjs.map +1 -1
- package/dist/constants/bridge.d.cts +1 -0
- package/dist/constants/bridge.d.cts.map +1 -1
- package/dist/constants/bridge.d.mts +1 -0
- package/dist/constants/bridge.d.mts.map +1 -1
- package/dist/constants/bridge.mjs +1 -0
- package/dist/constants/bridge.mjs.map +1 -1
- package/dist/index.cjs +32 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -5
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +17 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +12 -3
- package/dist/index.mjs.map +1 -1
- package/dist/selectors.cjs +52 -100
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +11198 -31552
- package/dist/selectors.d.cts.map +1 -1
- package/dist/selectors.d.mts +11198 -31552
- package/dist/selectors.d.mts.map +1 -1
- package/dist/selectors.mjs +52 -100
- package/dist/selectors.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +4 -87
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +4 -87
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/bridge.cjs +2 -6
- package/dist/utils/bridge.cjs.map +1 -1
- package/dist/utils/bridge.d.cts +2 -19
- package/dist/utils/bridge.d.cts.map +1 -1
- package/dist/utils/bridge.d.mts +2 -19
- package/dist/utils/bridge.d.mts.map +1 -1
- package/dist/utils/bridge.mjs +1 -4
- package/dist/utils/bridge.mjs.map +1 -1
- package/dist/utils/caip-formatters.cjs +0 -3
- package/dist/utils/caip-formatters.cjs.map +1 -1
- package/dist/utils/caip-formatters.d.cts.map +1 -1
- package/dist/utils/caip-formatters.d.mts.map +1 -1
- package/dist/utils/caip-formatters.mjs +0 -3
- package/dist/utils/caip-formatters.mjs.map +1 -1
- package/dist/utils/feature-flags.d.cts +2 -2
- package/dist/utils/feature-flags.d.mts +2 -2
- package/dist/utils/fetch.cjs +37 -40
- package/dist/utils/fetch.cjs.map +1 -1
- package/dist/utils/fetch.d.cts +10 -4
- package/dist/utils/fetch.d.cts.map +1 -1
- package/dist/utils/fetch.d.mts +10 -4
- package/dist/utils/fetch.d.mts.map +1 -1
- package/dist/utils/fetch.mjs +37 -40
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/metrics/constants.cjs +1 -0
- package/dist/utils/metrics/constants.cjs.map +1 -1
- package/dist/utils/metrics/constants.d.cts +2 -1
- package/dist/utils/metrics/constants.d.cts.map +1 -1
- package/dist/utils/metrics/constants.d.mts +2 -1
- package/dist/utils/metrics/constants.d.mts.map +1 -1
- package/dist/utils/metrics/constants.mjs +1 -0
- package/dist/utils/metrics/constants.mjs.map +1 -1
- package/dist/utils/metrics/properties.cjs +6 -6
- package/dist/utils/metrics/properties.cjs.map +1 -1
- package/dist/utils/metrics/properties.d.cts +9 -5
- package/dist/utils/metrics/properties.d.cts.map +1 -1
- package/dist/utils/metrics/properties.d.mts +9 -5
- package/dist/utils/metrics/properties.d.mts.map +1 -1
- package/dist/utils/metrics/properties.mjs +6 -6
- package/dist/utils/metrics/properties.mjs.map +1 -1
- package/dist/utils/metrics/types.cjs.map +1 -1
- package/dist/utils/metrics/types.d.cts +1 -1
- package/dist/utils/metrics/types.d.cts.map +1 -1
- package/dist/utils/metrics/types.d.mts +1 -1
- package/dist/utils/metrics/types.d.mts.map +1 -1
- package/dist/utils/metrics/types.mjs.map +1 -1
- package/dist/utils/number-formatters.cjs +106 -0
- package/dist/utils/number-formatters.cjs.map +1 -0
- package/dist/utils/number-formatters.d.cts +34 -0
- package/dist/utils/number-formatters.d.cts.map +1 -0
- package/dist/utils/number-formatters.d.mts +34 -0
- package/dist/utils/number-formatters.d.mts.map +1 -0
- package/dist/utils/number-formatters.mjs +99 -0
- package/dist/utils/number-formatters.mjs.map +1 -0
- package/dist/utils/quote-fees.cjs +23 -22
- package/dist/utils/quote-fees.cjs.map +1 -1
- package/dist/utils/quote-fees.d.cts +4 -2
- package/dist/utils/quote-fees.d.cts.map +1 -1
- package/dist/utils/quote-fees.d.mts +4 -2
- package/dist/utils/quote-fees.d.mts.map +1 -1
- package/dist/utils/quote-fees.mjs +24 -23
- package/dist/utils/quote-fees.mjs.map +1 -1
- package/dist/utils/quote-metadata/calculators.cjs +340 -0
- package/dist/utils/quote-metadata/calculators.cjs.map +1 -0
- package/dist/utils/quote-metadata/calculators.d.cts +125 -0
- package/dist/utils/quote-metadata/calculators.d.cts.map +1 -0
- package/dist/utils/quote-metadata/calculators.d.mts +125 -0
- package/dist/utils/quote-metadata/calculators.d.mts.map +1 -0
- package/dist/utils/quote-metadata/calculators.mjs +323 -0
- package/dist/utils/quote-metadata/calculators.mjs.map +1 -0
- package/dist/utils/quote-metadata/merge.cjs +38 -0
- package/dist/utils/quote-metadata/merge.cjs.map +1 -0
- package/dist/utils/quote-metadata/merge.d.cts +12 -0
- package/dist/utils/quote-metadata/merge.d.cts.map +1 -0
- package/dist/utils/quote-metadata/merge.d.mts +12 -0
- package/dist/utils/quote-metadata/merge.d.mts.map +1 -0
- package/dist/utils/quote-metadata/merge.mjs +35 -0
- package/dist/utils/quote-metadata/merge.mjs.map +1 -0
- package/dist/utils/quote-metadata/to-normalized-amounts.cjs +38 -0
- package/dist/utils/quote-metadata/to-normalized-amounts.cjs.map +1 -0
- package/dist/utils/quote-metadata/to-normalized-amounts.d.cts +10 -0
- package/dist/utils/quote-metadata/to-normalized-amounts.d.cts.map +1 -0
- package/dist/utils/quote-metadata/to-normalized-amounts.d.mts +10 -0
- package/dist/utils/quote-metadata/to-normalized-amounts.d.mts.map +1 -0
- package/dist/utils/quote-metadata/to-normalized-amounts.mjs +34 -0
- package/dist/utils/quote-metadata/to-normalized-amounts.mjs.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs +39 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.cts +13 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.cts.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts +13 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.mjs +36 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.mjs.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs +94 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.cts +12 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.cts.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.mts +12 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.mts.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v2.mjs +90 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v2.mjs.map +1 -0
- package/dist/utils/quote-metadata/types.cjs +3 -0
- package/dist/utils/quote-metadata/types.cjs.map +1 -0
- package/dist/utils/quote-metadata/types.d.cts +87 -0
- package/dist/utils/quote-metadata/types.d.cts.map +1 -0
- package/dist/utils/quote-metadata/types.d.mts +87 -0
- package/dist/utils/quote-metadata/types.d.mts.map +1 -0
- package/dist/utils/quote-metadata/types.mjs +2 -0
- package/dist/utils/quote-metadata/types.mjs.map +1 -0
- package/dist/utils/slippage.d.cts +1 -1
- package/dist/utils/slippage.d.mts +1 -1
- package/dist/utils/sort-quotes.cjs +16 -0
- package/dist/utils/sort-quotes.cjs.map +1 -0
- package/dist/utils/sort-quotes.d.cts +4 -0
- package/dist/utils/sort-quotes.d.cts.map +1 -0
- package/dist/utils/sort-quotes.d.mts +4 -0
- package/dist/utils/sort-quotes.d.mts.map +1 -0
- package/dist/utils/sort-quotes.mjs +12 -0
- package/dist/utils/sort-quotes.mjs.map +1 -0
- package/dist/validators/amount-and-asset.cjs +27 -0
- package/dist/validators/amount-and-asset.cjs.map +1 -0
- package/dist/validators/amount-and-asset.d.cts +62 -0
- package/dist/validators/amount-and-asset.d.cts.map +1 -0
- package/dist/validators/amount-and-asset.d.mts +62 -0
- package/dist/validators/amount-and-asset.d.mts.map +1 -0
- package/dist/validators/amount-and-asset.mjs +24 -0
- package/dist/validators/amount-and-asset.mjs.map +1 -0
- package/dist/validators/batch-sell.d.cts +8 -8
- package/dist/validators/batch-sell.d.mts +8 -8
- package/dist/validators/bridge-asset.cjs +65 -1
- package/dist/validators/bridge-asset.cjs.map +1 -1
- package/dist/validators/bridge-asset.d.cts +99 -5
- package/dist/validators/bridge-asset.d.cts.map +1 -1
- package/dist/validators/bridge-asset.d.mts +99 -5
- package/dist/validators/bridge-asset.d.mts.map +1 -1
- package/dist/validators/bridge-asset.mjs +64 -1
- package/dist/validators/bridge-asset.mjs.map +1 -1
- package/dist/validators/feature-flags.d.cts +5 -5
- package/dist/validators/feature-flags.d.mts +5 -5
- package/dist/validators/intent.d.cts +3 -3
- package/dist/validators/intent.d.mts +3 -3
- package/dist/validators/quote-request.cjs +57 -0
- package/dist/validators/quote-request.cjs.map +1 -0
- package/dist/validators/quote-request.d.cts +4 -0
- package/dist/validators/quote-request.d.cts.map +1 -0
- package/dist/validators/quote-request.d.mts +4 -0
- package/dist/validators/quote-request.d.mts.map +1 -0
- package/dist/validators/quote-request.mjs +52 -0
- package/dist/validators/quote-request.mjs.map +1 -0
- package/dist/validators/quote-response-v1.d.cts +179 -176
- package/dist/validators/quote-response-v1.d.cts.map +1 -1
- package/dist/validators/quote-response-v1.d.mts +179 -176
- package/dist/validators/quote-response-v1.d.mts.map +1 -1
- package/dist/validators/quote-response.cjs +116 -0
- package/dist/validators/quote-response.cjs.map +1 -0
- package/dist/validators/quote-response.d.cts +1979 -0
- package/dist/validators/quote-response.d.cts.map +1 -0
- package/dist/validators/quote-response.d.mts +1979 -0
- package/dist/validators/quote-response.d.mts.map +1 -0
- package/dist/validators/quote-response.mjs +112 -0
- package/dist/validators/quote-response.mjs.map +1 -0
- package/dist/validators/quote.cjs +75 -2
- package/dist/validators/quote.cjs.map +1 -1
- package/dist/validators/quote.d.cts +407 -44
- package/dist/validators/quote.d.cts.map +1 -1
- package/dist/validators/quote.d.mts +407 -44
- package/dist/validators/quote.d.mts.map +1 -1
- package/dist/validators/quote.mjs +76 -3
- package/dist/validators/quote.mjs.map +1 -1
- package/dist/validators/step.cjs +7 -1
- package/dist/validators/step.cjs.map +1 -1
- package/dist/validators/step.d.cts +197 -26
- package/dist/validators/step.d.cts.map +1 -1
- package/dist/validators/step.d.mts +197 -26
- package/dist/validators/step.d.mts.map +1 -1
- package/dist/validators/step.mjs +7 -1
- package/dist/validators/step.mjs.map +1 -1
- package/dist/validators/token-feature.d.cts +2 -2
- package/dist/validators/token-feature.d.mts +2 -2
- package/dist/validators/trade.d.cts +2 -2
- package/dist/validators/trade.d.mts +2 -2
- package/package.json +8 -8
- package/dist/utils/quote.cjs +0 -368
- package/dist/utils/quote.cjs.map +0 -1
- package/dist/utils/quote.d.cts +0 -98
- package/dist/utils/quote.d.cts.map +0 -1
- package/dist/utils/quote.d.mts +0 -98
- package/dist/utils/quote.d.mts.map +0 -1
- package/dist/utils/quote.mjs +0 -347
- package/dist/utils/quote.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-response-v1-to-v2.cjs","sourceRoot":"","sources":["../../src/coercers/quote-response-v1-to-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { create, coerce, Infer, is, intersection } from '@metamask/superstruct';\nimport { parseCaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { formatAddressToAssetId } from '../utils/caip-formatters';\nimport {\n BridgeAssetSchema,\n BridgeAssetV2Schema,\n MinimalAssetSchema,\n} from '../validators/bridge-asset';\nimport { QuoteSchemaV2, FeeType, QuoteSchema } from '../validators/quote';\nimport {\n QuoteResponseSchemaV2,\n validateQuoteResponse,\n} from '../validators/quote-response';\nimport type { QuoteResponse } from '../validators/quote-response';\nimport { QuoteResponseSchemaV1 } from '../validators/quote-response-v1';\nimport type { QuoteResponseV1 } from '../validators/quote-response-v1';\nimport { StepSchemaV2, StepSchema } from '../validators/step';\n\nconst BridgeAssetV2FromV1 = coerce(\n BridgeAssetV2Schema,\n intersection([BridgeAssetSchema, MinimalAssetSchema]),\n (value) => {\n const {\n chainId,\n address,\n // @ts-expect-error - chainAgnosticId is not in the schema\n chainAgnosticId,\n // @ts-expect-error - logoURI is not in the schema\n logoURI,\n iconUrl,\n icon,\n assetId,\n ...rest\n } = value;\n\n const resolvedIconUrl = iconUrl ?? logoURI ?? icon;\n\n return {\n assetId:\n assetId ??\n /* istanbul ignore next */ formatAddressToAssetId(address, chainId),\n ...(resolvedIconUrl && { iconUrl: resolvedIconUrl }),\n ...rest,\n };\n },\n);\n\nexport const toBridgeAssetV2 = (\n data: unknown,\n): Infer<typeof BridgeAssetV2Schema> => {\n return create(data, BridgeAssetV2FromV1);\n};\n\nconst StepSchemaV2FromV1 = coerce(StepSchemaV2, StepSchema, (value) => {\n const { srcAsset, destAsset, action } = value;\n return {\n action,\n src: {\n asset: toBridgeAssetV2(srcAsset),\n },\n dest: {\n asset: toBridgeAssetV2(destAsset),\n },\n };\n});\nconst toStepV2 = (step: unknown): Infer<typeof StepSchemaV2> =>\n create(step, StepSchemaV2FromV1);\n\nconst QuoteV2FromV1 = coerce(QuoteSchemaV2, QuoteSchema, (value) => {\n const {\n srcTokenAmount,\n destTokenAmount,\n minDestTokenAmount,\n srcAsset,\n destAsset,\n srcChainId,\n destChainId,\n walletAddress,\n destWalletAddress,\n priceData,\n feeData,\n bridgeId,\n bridges,\n steps,\n intent,\n ...restQuote\n } = value;\n\n return {\n src: {\n amount: new BigNumber(srcTokenAmount)\n .plus(intent ? 0 : feeData[FeeType.METABRIDGE].amount)\n .toFixed(),\n asset: toBridgeAssetV2(srcAsset),\n ...(walletAddress && { walletAddress }),\n },\n dest: {\n amount: destTokenAmount,\n asset: toBridgeAssetV2(destAsset),\n ...(destWalletAddress && { walletAddress: destWalletAddress }),\n minAmount: minDestTokenAmount,\n },\n priceData: {\n ...(value.priceData?.priceImpact && {\n priceImpact: {\n amount: value.priceData?.priceImpact,\n },\n }),\n },\n feeData: {\n [FeeType.METABRIDGE]: [\n {\n ...feeData[FeeType.METABRIDGE],\n asset: toBridgeAssetV2(feeData[FeeType.METABRIDGE].asset),\n ...(priceData?.totalFeeAmountUsd && /* istanbul ignore next */ {\n usd: priceData?.totalFeeAmountUsd,\n }),\n },\n ],\n ...(feeData[FeeType.TX_FEE] && {\n [FeeType.TX_FEE]: [\n {\n ...feeData[FeeType.TX_FEE],\n asset: toBridgeAssetV2(feeData[FeeType.TX_FEE].asset),\n },\n ],\n }),\n },\n steps: steps?.map(toStepV2),\n ...restQuote,\n protocols: bridges,\n aggregator: bridgeId,\n };\n});\n\nconst toQuoteV2 = (quote: unknown): Infer<typeof QuoteSchemaV2> => {\n const quoteV2 = create(quote, QuoteV2FromV1);\n return quoteV2;\n};\n\nconst QuoteResponseV2FromV1 = coerce(\n QuoteResponseSchemaV2,\n QuoteResponseSchemaV1,\n (value: QuoteResponseV1) => {\n const { quote, l1GasFeesInHexWei, nonEvmFeesInNative, ...rest } = value;\n const { srcAsset } = quote;\n\n const {\n chain: { namespace },\n chainId,\n } = parseCaipAssetType(srcAsset.assetId);\n\n return {\n ...rest,\n ...(nonEvmFeesInNative && { nonEvmFeesInNative }),\n ...(l1GasFeesInHexWei && { l1GasFeesInHexWei }),\n namespace,\n chainId,\n quote: toQuoteV2(quote),\n };\n },\n);\n\n/**\n * Converts a partial quote response to a {@link QuoteResponse}.\n * This does not preserve any post-fetch metadata.\n *\n * @param quoteResponse - The {@link QuoteResponseV1} to convert\n * @returns The {@link QuoteResponse}\n */\nexport function toQuoteResponseV2(quoteResponse: unknown): QuoteResponse {\n let quoteResponseV2: QuoteResponse | null = null;\n\n // V1 quote\n /* istanbul ignore else */\n if (is(quoteResponse, QuoteResponseSchemaV1)) {\n quoteResponseV2 = create(quoteResponse, QuoteResponseV2FromV1);\n }\n // V2 quote\n else if (validateQuoteResponse(quoteResponse)) {\n quoteResponseV2 = quoteResponse;\n }\n\n /* istanbul ignore else */\n if (quoteResponseV2) {\n const {\n chain: { namespace },\n chainId,\n } = parseCaipAssetType(quoteResponseV2.quote.src.asset.assetId);\n\n // Add namespace, chainId\n return { ...quoteResponseV2, namespace: namespace as never, chainId };\n }\n\n /* istanbul ignore next */\n throw new Error('QuoteResponseV1 to V2 conversion failed');\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Infer } from "@metamask/superstruct";
|
|
2
|
+
import { BridgeAssetV2Schema } from "../validators/bridge-asset.cjs";
|
|
3
|
+
import type { QuoteResponse } from "../validators/quote-response.cjs";
|
|
4
|
+
export declare const toBridgeAssetV2: (data: unknown) => Infer<typeof BridgeAssetV2Schema>;
|
|
5
|
+
/**
|
|
6
|
+
* Converts a partial quote response to a {@link QuoteResponse}.
|
|
7
|
+
* This does not preserve any post-fetch metadata.
|
|
8
|
+
*
|
|
9
|
+
* @param quoteResponse - The {@link QuoteResponseV1} to convert
|
|
10
|
+
* @returns The {@link QuoteResponse}
|
|
11
|
+
*/
|
|
12
|
+
export declare function toQuoteResponseV2(quoteResponse: unknown): QuoteResponse;
|
|
13
|
+
//# sourceMappingURL=quote-response-v1-to-v2.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-response-v1-to-v2.d.cts","sourceRoot":"","sources":["../../src/coercers/quote-response-v1-to-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,EAAoB,8BAA8B;AAKhF,OAAO,EAEL,mBAAmB,EAEpB,uCAAmC;AAMpC,OAAO,KAAK,EAAE,aAAa,EAAE,yCAAqC;AAkClE,eAAO,MAAM,eAAe,SACpB,OAAO,KACZ,MAAM,0BAA0B,CAElC,CAAC;AAgHF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,CA0BvE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Infer } from "@metamask/superstruct";
|
|
2
|
+
import { BridgeAssetV2Schema } from "../validators/bridge-asset.mjs";
|
|
3
|
+
import type { QuoteResponse } from "../validators/quote-response.mjs";
|
|
4
|
+
export declare const toBridgeAssetV2: (data: unknown) => Infer<typeof BridgeAssetV2Schema>;
|
|
5
|
+
/**
|
|
6
|
+
* Converts a partial quote response to a {@link QuoteResponse}.
|
|
7
|
+
* This does not preserve any post-fetch metadata.
|
|
8
|
+
*
|
|
9
|
+
* @param quoteResponse - The {@link QuoteResponseV1} to convert
|
|
10
|
+
* @returns The {@link QuoteResponse}
|
|
11
|
+
*/
|
|
12
|
+
export declare function toQuoteResponseV2(quoteResponse: unknown): QuoteResponse;
|
|
13
|
+
//# sourceMappingURL=quote-response-v1-to-v2.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-response-v1-to-v2.d.mts","sourceRoot":"","sources":["../../src/coercers/quote-response-v1-to-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,EAAoB,8BAA8B;AAKhF,OAAO,EAEL,mBAAmB,EAEpB,uCAAmC;AAMpC,OAAO,KAAK,EAAE,aAAa,EAAE,yCAAqC;AAkClE,eAAO,MAAM,eAAe,SACpB,OAAO,KACZ,MAAM,0BAA0B,CAElC,CAAC;AAgHF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,CA0BvE"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { create, coerce, is, intersection } from "@metamask/superstruct";
|
|
2
|
+
import { parseCaipAssetType } from "@metamask/utils";
|
|
3
|
+
import { BigNumber } from "bignumber.js";
|
|
4
|
+
import { formatAddressToAssetId } from "../utils/caip-formatters.mjs";
|
|
5
|
+
import { BridgeAssetSchema, BridgeAssetV2Schema, MinimalAssetSchema } from "../validators/bridge-asset.mjs";
|
|
6
|
+
import { QuoteSchemaV2, FeeType, QuoteSchema } from "../validators/quote.mjs";
|
|
7
|
+
import { QuoteResponseSchemaV2, validateQuoteResponse } from "../validators/quote-response.mjs";
|
|
8
|
+
import { QuoteResponseSchemaV1 } from "../validators/quote-response-v1.mjs";
|
|
9
|
+
import { StepSchemaV2, StepSchema } from "../validators/step.mjs";
|
|
10
|
+
const BridgeAssetV2FromV1 = coerce(BridgeAssetV2Schema, intersection([BridgeAssetSchema, MinimalAssetSchema]), (value) => {
|
|
11
|
+
const { chainId, address,
|
|
12
|
+
// @ts-expect-error - chainAgnosticId is not in the schema
|
|
13
|
+
chainAgnosticId,
|
|
14
|
+
// @ts-expect-error - logoURI is not in the schema
|
|
15
|
+
logoURI, iconUrl, icon, assetId, ...rest } = value;
|
|
16
|
+
const resolvedIconUrl = iconUrl ?? logoURI ?? icon;
|
|
17
|
+
return {
|
|
18
|
+
assetId: assetId ??
|
|
19
|
+
/* istanbul ignore next */ formatAddressToAssetId(address, chainId),
|
|
20
|
+
...(resolvedIconUrl && { iconUrl: resolvedIconUrl }),
|
|
21
|
+
...rest,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
export const toBridgeAssetV2 = (data) => {
|
|
25
|
+
return create(data, BridgeAssetV2FromV1);
|
|
26
|
+
};
|
|
27
|
+
const StepSchemaV2FromV1 = coerce(StepSchemaV2, StepSchema, (value) => {
|
|
28
|
+
const { srcAsset, destAsset, action } = value;
|
|
29
|
+
return {
|
|
30
|
+
action,
|
|
31
|
+
src: {
|
|
32
|
+
asset: toBridgeAssetV2(srcAsset),
|
|
33
|
+
},
|
|
34
|
+
dest: {
|
|
35
|
+
asset: toBridgeAssetV2(destAsset),
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
const toStepV2 = (step) => create(step, StepSchemaV2FromV1);
|
|
40
|
+
const QuoteV2FromV1 = coerce(QuoteSchemaV2, QuoteSchema, (value) => {
|
|
41
|
+
const { srcTokenAmount, destTokenAmount, minDestTokenAmount, srcAsset, destAsset, srcChainId, destChainId, walletAddress, destWalletAddress, priceData, feeData, bridgeId, bridges, steps, intent, ...restQuote } = value;
|
|
42
|
+
return {
|
|
43
|
+
src: {
|
|
44
|
+
amount: new BigNumber(srcTokenAmount)
|
|
45
|
+
.plus(intent ? 0 : feeData[FeeType.METABRIDGE].amount)
|
|
46
|
+
.toFixed(),
|
|
47
|
+
asset: toBridgeAssetV2(srcAsset),
|
|
48
|
+
...(walletAddress && { walletAddress }),
|
|
49
|
+
},
|
|
50
|
+
dest: {
|
|
51
|
+
amount: destTokenAmount,
|
|
52
|
+
asset: toBridgeAssetV2(destAsset),
|
|
53
|
+
...(destWalletAddress && { walletAddress: destWalletAddress }),
|
|
54
|
+
minAmount: minDestTokenAmount,
|
|
55
|
+
},
|
|
56
|
+
priceData: {
|
|
57
|
+
...(value.priceData?.priceImpact && {
|
|
58
|
+
priceImpact: {
|
|
59
|
+
amount: value.priceData?.priceImpact,
|
|
60
|
+
},
|
|
61
|
+
}),
|
|
62
|
+
},
|
|
63
|
+
feeData: {
|
|
64
|
+
[FeeType.METABRIDGE]: [
|
|
65
|
+
{
|
|
66
|
+
...feeData[FeeType.METABRIDGE],
|
|
67
|
+
asset: toBridgeAssetV2(feeData[FeeType.METABRIDGE].asset),
|
|
68
|
+
...(priceData?.totalFeeAmountUsd && /* istanbul ignore next */ {
|
|
69
|
+
usd: priceData?.totalFeeAmountUsd,
|
|
70
|
+
}),
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
...(feeData[FeeType.TX_FEE] && {
|
|
74
|
+
[FeeType.TX_FEE]: [
|
|
75
|
+
{
|
|
76
|
+
...feeData[FeeType.TX_FEE],
|
|
77
|
+
asset: toBridgeAssetV2(feeData[FeeType.TX_FEE].asset),
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
}),
|
|
81
|
+
},
|
|
82
|
+
steps: steps?.map(toStepV2),
|
|
83
|
+
...restQuote,
|
|
84
|
+
protocols: bridges,
|
|
85
|
+
aggregator: bridgeId,
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
const toQuoteV2 = (quote) => {
|
|
89
|
+
const quoteV2 = create(quote, QuoteV2FromV1);
|
|
90
|
+
return quoteV2;
|
|
91
|
+
};
|
|
92
|
+
const QuoteResponseV2FromV1 = coerce(QuoteResponseSchemaV2, QuoteResponseSchemaV1, (value) => {
|
|
93
|
+
const { quote, l1GasFeesInHexWei, nonEvmFeesInNative, ...rest } = value;
|
|
94
|
+
const { srcAsset } = quote;
|
|
95
|
+
const { chain: { namespace }, chainId, } = parseCaipAssetType(srcAsset.assetId);
|
|
96
|
+
return {
|
|
97
|
+
...rest,
|
|
98
|
+
...(nonEvmFeesInNative && { nonEvmFeesInNative }),
|
|
99
|
+
...(l1GasFeesInHexWei && { l1GasFeesInHexWei }),
|
|
100
|
+
namespace,
|
|
101
|
+
chainId,
|
|
102
|
+
quote: toQuoteV2(quote),
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* Converts a partial quote response to a {@link QuoteResponse}.
|
|
107
|
+
* This does not preserve any post-fetch metadata.
|
|
108
|
+
*
|
|
109
|
+
* @param quoteResponse - The {@link QuoteResponseV1} to convert
|
|
110
|
+
* @returns The {@link QuoteResponse}
|
|
111
|
+
*/
|
|
112
|
+
export function toQuoteResponseV2(quoteResponse) {
|
|
113
|
+
let quoteResponseV2 = null;
|
|
114
|
+
// V1 quote
|
|
115
|
+
/* istanbul ignore else */
|
|
116
|
+
if (is(quoteResponse, QuoteResponseSchemaV1)) {
|
|
117
|
+
quoteResponseV2 = create(quoteResponse, QuoteResponseV2FromV1);
|
|
118
|
+
}
|
|
119
|
+
// V2 quote
|
|
120
|
+
else if (validateQuoteResponse(quoteResponse)) {
|
|
121
|
+
quoteResponseV2 = quoteResponse;
|
|
122
|
+
}
|
|
123
|
+
/* istanbul ignore else */
|
|
124
|
+
if (quoteResponseV2) {
|
|
125
|
+
const { chain: { namespace }, chainId, } = parseCaipAssetType(quoteResponseV2.quote.src.asset.assetId);
|
|
126
|
+
// Add namespace, chainId
|
|
127
|
+
return { ...quoteResponseV2, namespace: namespace, chainId };
|
|
128
|
+
}
|
|
129
|
+
/* istanbul ignore next */
|
|
130
|
+
throw new Error('QuoteResponseV1 to V2 conversion failed');
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=quote-response-v1-to-v2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-response-v1-to-v2.mjs","sourceRoot":"","sources":["../../src/coercers/quote-response-v1-to-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { create, coerce, Infer, is, intersection } from '@metamask/superstruct';\nimport { parseCaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { formatAddressToAssetId } from '../utils/caip-formatters';\nimport {\n BridgeAssetSchema,\n BridgeAssetV2Schema,\n MinimalAssetSchema,\n} from '../validators/bridge-asset';\nimport { QuoteSchemaV2, FeeType, QuoteSchema } from '../validators/quote';\nimport {\n QuoteResponseSchemaV2,\n validateQuoteResponse,\n} from '../validators/quote-response';\nimport type { QuoteResponse } from '../validators/quote-response';\nimport { QuoteResponseSchemaV1 } from '../validators/quote-response-v1';\nimport type { QuoteResponseV1 } from '../validators/quote-response-v1';\nimport { StepSchemaV2, StepSchema } from '../validators/step';\n\nconst BridgeAssetV2FromV1 = coerce(\n BridgeAssetV2Schema,\n intersection([BridgeAssetSchema, MinimalAssetSchema]),\n (value) => {\n const {\n chainId,\n address,\n // @ts-expect-error - chainAgnosticId is not in the schema\n chainAgnosticId,\n // @ts-expect-error - logoURI is not in the schema\n logoURI,\n iconUrl,\n icon,\n assetId,\n ...rest\n } = value;\n\n const resolvedIconUrl = iconUrl ?? logoURI ?? icon;\n\n return {\n assetId:\n assetId ??\n /* istanbul ignore next */ formatAddressToAssetId(address, chainId),\n ...(resolvedIconUrl && { iconUrl: resolvedIconUrl }),\n ...rest,\n };\n },\n);\n\nexport const toBridgeAssetV2 = (\n data: unknown,\n): Infer<typeof BridgeAssetV2Schema> => {\n return create(data, BridgeAssetV2FromV1);\n};\n\nconst StepSchemaV2FromV1 = coerce(StepSchemaV2, StepSchema, (value) => {\n const { srcAsset, destAsset, action } = value;\n return {\n action,\n src: {\n asset: toBridgeAssetV2(srcAsset),\n },\n dest: {\n asset: toBridgeAssetV2(destAsset),\n },\n };\n});\nconst toStepV2 = (step: unknown): Infer<typeof StepSchemaV2> =>\n create(step, StepSchemaV2FromV1);\n\nconst QuoteV2FromV1 = coerce(QuoteSchemaV2, QuoteSchema, (value) => {\n const {\n srcTokenAmount,\n destTokenAmount,\n minDestTokenAmount,\n srcAsset,\n destAsset,\n srcChainId,\n destChainId,\n walletAddress,\n destWalletAddress,\n priceData,\n feeData,\n bridgeId,\n bridges,\n steps,\n intent,\n ...restQuote\n } = value;\n\n return {\n src: {\n amount: new BigNumber(srcTokenAmount)\n .plus(intent ? 0 : feeData[FeeType.METABRIDGE].amount)\n .toFixed(),\n asset: toBridgeAssetV2(srcAsset),\n ...(walletAddress && { walletAddress }),\n },\n dest: {\n amount: destTokenAmount,\n asset: toBridgeAssetV2(destAsset),\n ...(destWalletAddress && { walletAddress: destWalletAddress }),\n minAmount: minDestTokenAmount,\n },\n priceData: {\n ...(value.priceData?.priceImpact && {\n priceImpact: {\n amount: value.priceData?.priceImpact,\n },\n }),\n },\n feeData: {\n [FeeType.METABRIDGE]: [\n {\n ...feeData[FeeType.METABRIDGE],\n asset: toBridgeAssetV2(feeData[FeeType.METABRIDGE].asset),\n ...(priceData?.totalFeeAmountUsd && /* istanbul ignore next */ {\n usd: priceData?.totalFeeAmountUsd,\n }),\n },\n ],\n ...(feeData[FeeType.TX_FEE] && {\n [FeeType.TX_FEE]: [\n {\n ...feeData[FeeType.TX_FEE],\n asset: toBridgeAssetV2(feeData[FeeType.TX_FEE].asset),\n },\n ],\n }),\n },\n steps: steps?.map(toStepV2),\n ...restQuote,\n protocols: bridges,\n aggregator: bridgeId,\n };\n});\n\nconst toQuoteV2 = (quote: unknown): Infer<typeof QuoteSchemaV2> => {\n const quoteV2 = create(quote, QuoteV2FromV1);\n return quoteV2;\n};\n\nconst QuoteResponseV2FromV1 = coerce(\n QuoteResponseSchemaV2,\n QuoteResponseSchemaV1,\n (value: QuoteResponseV1) => {\n const { quote, l1GasFeesInHexWei, nonEvmFeesInNative, ...rest } = value;\n const { srcAsset } = quote;\n\n const {\n chain: { namespace },\n chainId,\n } = parseCaipAssetType(srcAsset.assetId);\n\n return {\n ...rest,\n ...(nonEvmFeesInNative && { nonEvmFeesInNative }),\n ...(l1GasFeesInHexWei && { l1GasFeesInHexWei }),\n namespace,\n chainId,\n quote: toQuoteV2(quote),\n };\n },\n);\n\n/**\n * Converts a partial quote response to a {@link QuoteResponse}.\n * This does not preserve any post-fetch metadata.\n *\n * @param quoteResponse - The {@link QuoteResponseV1} to convert\n * @returns The {@link QuoteResponse}\n */\nexport function toQuoteResponseV2(quoteResponse: unknown): QuoteResponse {\n let quoteResponseV2: QuoteResponse | null = null;\n\n // V1 quote\n /* istanbul ignore else */\n if (is(quoteResponse, QuoteResponseSchemaV1)) {\n quoteResponseV2 = create(quoteResponse, QuoteResponseV2FromV1);\n }\n // V2 quote\n else if (validateQuoteResponse(quoteResponse)) {\n quoteResponseV2 = quoteResponse;\n }\n\n /* istanbul ignore else */\n if (quoteResponseV2) {\n const {\n chain: { namespace },\n chainId,\n } = parseCaipAssetType(quoteResponseV2.quote.src.asset.assetId);\n\n // Add namespace, chainId\n return { ...quoteResponseV2, namespace: namespace as never, chainId };\n }\n\n /* istanbul ignore next */\n throw new Error('QuoteResponseV1 to V2 conversion failed');\n}\n"]}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toQuoteResponseV1 = void 0;
|
|
4
|
+
const superstruct_1 = require("@metamask/superstruct");
|
|
5
|
+
const utils_1 = require("@metamask/utils");
|
|
6
|
+
const caip_formatters_1 = require("../utils/caip-formatters.cjs");
|
|
7
|
+
const struct_error_1 = require("../utils/struct-error.cjs");
|
|
8
|
+
const bridge_asset_1 = require("../validators/bridge-asset.cjs");
|
|
9
|
+
const quote_1 = require("../validators/quote.cjs");
|
|
10
|
+
const quote_response_1 = require("../validators/quote-response.cjs");
|
|
11
|
+
const quote_response_v1_1 = require("../validators/quote-response-v1.cjs");
|
|
12
|
+
const step_1 = require("../validators/step.cjs");
|
|
13
|
+
const BridgeAssetV1FromV2 = (0, superstruct_1.coerce)((0, superstruct_1.intersection)([bridge_asset_1.BridgeAssetSchema, bridge_asset_1.MinimalAssetSchema]), bridge_asset_1.BridgeAssetV2Schema, (value) => {
|
|
14
|
+
const { assetId, ...rest } = value;
|
|
15
|
+
const { chainId } = (0, utils_1.parseCaipAssetType)(assetId);
|
|
16
|
+
return {
|
|
17
|
+
address: (0, caip_formatters_1.formatAddressToCaipReference)(assetId),
|
|
18
|
+
chainId: (0, caip_formatters_1.formatChainIdToDec)(chainId),
|
|
19
|
+
assetId,
|
|
20
|
+
...rest,
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
const toBridgeAssetV1 = (data) => {
|
|
24
|
+
return (0, superstruct_1.create)(data, BridgeAssetV1FromV2);
|
|
25
|
+
};
|
|
26
|
+
const StepSchemaV1FromV2 = (0, superstruct_1.coerce)(step_1.StepSchema, step_1.StepSchemaV2, (value) => {
|
|
27
|
+
const { src, dest, action } = value;
|
|
28
|
+
const srcAsset = toBridgeAssetV1(src.asset);
|
|
29
|
+
const destAsset = toBridgeAssetV1(dest.asset);
|
|
30
|
+
return {
|
|
31
|
+
action,
|
|
32
|
+
srcChainId: srcAsset.chainId,
|
|
33
|
+
destChainId: destAsset.chainId,
|
|
34
|
+
srcAsset,
|
|
35
|
+
destAsset,
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
const toStepV1 = (step) => {
|
|
39
|
+
const stepV2 = (0, superstruct_1.create)(step, StepSchemaV1FromV2);
|
|
40
|
+
return stepV2;
|
|
41
|
+
};
|
|
42
|
+
const QuoteV1FromV2 = (0, superstruct_1.coerce)(quote_1.QuoteSchema, quote_1.QuoteSchemaV2, (value) => {
|
|
43
|
+
const { priceData, feeData, steps, protocols, aggregator, src, dest, ...restQuote } = value;
|
|
44
|
+
const { chainId: srcChainIdInCaip, assetReference: srcReference } = (0, utils_1.parseCaipAssetType)(src.asset.assetId);
|
|
45
|
+
const { chainId: destChainIdInCaip, assetReference: destReference } = (0, utils_1.parseCaipAssetType)(dest.asset.assetId);
|
|
46
|
+
const srcChainId = (0, caip_formatters_1.formatChainIdToDec)(srcChainIdInCaip);
|
|
47
|
+
const destChainId = (0, caip_formatters_1.formatChainIdToDec)(destChainIdInCaip);
|
|
48
|
+
const srcTokenAddress = (0, caip_formatters_1.formatAddressToCaipReference)(srcReference);
|
|
49
|
+
const destTokenAddress = (0, caip_formatters_1.formatAddressToCaipReference)(destReference);
|
|
50
|
+
const { usd, ...metabridgeFeeData } = feeData[quote_1.FeeType.METABRIDGE][0];
|
|
51
|
+
return {
|
|
52
|
+
bridges: protocols,
|
|
53
|
+
bridgeId: aggregator,
|
|
54
|
+
protocols,
|
|
55
|
+
aggregator,
|
|
56
|
+
srcChainId,
|
|
57
|
+
destChainId,
|
|
58
|
+
srcAsset: {
|
|
59
|
+
...src.asset,
|
|
60
|
+
chainId: srcChainId,
|
|
61
|
+
address: srcTokenAddress,
|
|
62
|
+
},
|
|
63
|
+
destAsset: {
|
|
64
|
+
...dest.asset,
|
|
65
|
+
chainId: destChainId,
|
|
66
|
+
address: destTokenAddress,
|
|
67
|
+
},
|
|
68
|
+
srcTokenAmount: src.amount,
|
|
69
|
+
destTokenAmount: dest.amount,
|
|
70
|
+
minDestTokenAmount: dest.minAmount,
|
|
71
|
+
feeData: {
|
|
72
|
+
[quote_1.FeeType.METABRIDGE]: {
|
|
73
|
+
...metabridgeFeeData,
|
|
74
|
+
asset: {
|
|
75
|
+
...metabridgeFeeData.asset,
|
|
76
|
+
chainId: (0, caip_formatters_1.formatChainIdToDec)((0, utils_1.parseCaipAssetType)(metabridgeFeeData.asset.assetId).chainId),
|
|
77
|
+
address: (0, caip_formatters_1.formatAddressToCaipReference)((0, utils_1.parseCaipAssetType)(metabridgeFeeData.asset.assetId).assetReference),
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
...(feeData[quote_1.FeeType.TX_FEE]?.length && /* istanbul ignore next */ {
|
|
81
|
+
...feeData[quote_1.FeeType.TX_FEE][0],
|
|
82
|
+
asset: feeData[quote_1.FeeType.TX_FEE][0].asset,
|
|
83
|
+
}),
|
|
84
|
+
},
|
|
85
|
+
...(dest.walletAddress && /* istanbul ignore next */ {
|
|
86
|
+
destWalletAddress: dest.walletAddress,
|
|
87
|
+
}),
|
|
88
|
+
...(src.walletAddress && /* istanbul ignore next */ {
|
|
89
|
+
walletAddress: src.walletAddress,
|
|
90
|
+
}),
|
|
91
|
+
...(value.priceData?.priceImpact?.amount && /* istanbul ignore next */ {
|
|
92
|
+
priceData: {
|
|
93
|
+
priceImpact: value.priceData.priceImpact.amount,
|
|
94
|
+
},
|
|
95
|
+
}),
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated This field is deprecated.
|
|
98
|
+
*/
|
|
99
|
+
steps: steps?.map(toStepV1),
|
|
100
|
+
...restQuote,
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
const toQuoteV1 = (quote) => {
|
|
104
|
+
const quoteV2 = (0, superstruct_1.create)(quote, QuoteV1FromV2);
|
|
105
|
+
return quoteV2;
|
|
106
|
+
};
|
|
107
|
+
const QuoteResponseV1FromV2 = (0, superstruct_1.coerce)(quote_response_v1_1.QuoteResponseSchemaV1, quote_response_1.QuoteResponseSchemaV2, (value) => {
|
|
108
|
+
if (!value) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const { quote, estimatedProcessingTimeInSeconds, approval,
|
|
112
|
+
// @ts-expect-error - Some networks don't have an approval field
|
|
113
|
+
resetApproval, featureId, trade, quoteRequestIndex, nonEvmFeesInNative, l1GasFeesInHexWei, quoteId, } = value;
|
|
114
|
+
const quoteV1 = toQuoteV1(quote);
|
|
115
|
+
return {
|
|
116
|
+
estimatedProcessingTimeInSeconds,
|
|
117
|
+
approval,
|
|
118
|
+
trade,
|
|
119
|
+
quote: quoteV1,
|
|
120
|
+
...(featureId && /* istanbul ignore next */ { featureId }),
|
|
121
|
+
...(quoteId && /* istanbul ignore next */ { quoteId }),
|
|
122
|
+
...(resetApproval && /* istanbul ignore next */ { resetApproval }),
|
|
123
|
+
...(quoteRequestIndex !== undefined && /* istanbul ignore next */ {
|
|
124
|
+
quoteRequestIndex,
|
|
125
|
+
}),
|
|
126
|
+
...(nonEvmFeesInNative && /* istanbul ignore next */ {
|
|
127
|
+
nonEvmFeesInNative,
|
|
128
|
+
}),
|
|
129
|
+
...(l1GasFeesInHexWei && /* istanbul ignore next */ {
|
|
130
|
+
l1GasFeesInHexWei,
|
|
131
|
+
}),
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
/**
|
|
135
|
+
* Converts a {@link QuoteResponse} to a {@link QuoteResponseV1} for backwards compatibility.
|
|
136
|
+
* This does not preserve any post-fetch {@link QuoteMetadata}.
|
|
137
|
+
*
|
|
138
|
+
* @deprecated Avoid introducing new code that uses this function. It is only for backwards compatibility with the old quote response format.
|
|
139
|
+
* @param quoteResponse - The {@link QuoteResponse} to convert
|
|
140
|
+
* @returns The {@link QuoteResponseV1}
|
|
141
|
+
*/
|
|
142
|
+
const toQuoteResponseV1 = (quoteResponse) => {
|
|
143
|
+
let errorMessage = 'Failed to convert';
|
|
144
|
+
// V1 quote
|
|
145
|
+
if ((0, superstruct_1.is)(quoteResponse, quote_response_v1_1.QuoteResponseSchemaV1)) {
|
|
146
|
+
errorMessage += ' unmodified QuoteResponseV1';
|
|
147
|
+
return quoteResponse;
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
// V2 with namespace, chainId, maybe QuoteMetadata
|
|
151
|
+
if ((0, superstruct_1.is)(quoteResponse, quote_response_1.QuoteResponseSchemaV2)) {
|
|
152
|
+
errorMessage += ' QuoteResponseV2 + metadata to QuoteResponseV1';
|
|
153
|
+
const quoteResponseV1 = (0, superstruct_1.create)(quoteResponse, QuoteResponseV1FromV2);
|
|
154
|
+
return quoteResponseV1;
|
|
155
|
+
}
|
|
156
|
+
// V2 with no namespace, chainId
|
|
157
|
+
errorMessage += ' QuoteResponseV2 to QuoteResponseV1';
|
|
158
|
+
return (0, superstruct_1.create)(quoteResponse, QuoteResponseV1FromV2);
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
/* istanbul ignore next */
|
|
162
|
+
let errorDetails = error instanceof Error ? error.message : 'Unknown error';
|
|
163
|
+
/* istanbul ignore next */
|
|
164
|
+
if (error instanceof superstruct_1.StructError) {
|
|
165
|
+
const formattedErrors = (0, struct_error_1.formatStructErrors)(error);
|
|
166
|
+
errorDetails = JSON.stringify(formattedErrors, null, 2);
|
|
167
|
+
console.warn(errorMessage, (0, struct_error_1.formatStructErrors)(error));
|
|
168
|
+
}
|
|
169
|
+
throw new Error(`${errorMessage}. ${errorDetails}`);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
exports.toQuoteResponseV1 = toQuoteResponseV1;
|
|
173
|
+
//# sourceMappingURL=quote-response-v2-to-v1.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-response-v2-to-v1.cjs","sourceRoot":"","sources":["../../src/coercers/quote-response-v2-to-v1.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n create,\n coerce,\n is,\n StructError,\n intersection,\n Infer,\n} from '@metamask/superstruct';\nimport { parseCaipAssetType } from '@metamask/utils';\n\nimport type { Step } from '../types';\nimport {\n formatAddressToCaipReference,\n formatChainIdToDec,\n} from '../utils/caip-formatters';\nimport type { QuoteMetadata } from '../utils/quote-metadata/types';\nimport { formatStructErrors } from '../utils/struct-error';\nimport {\n BridgeAssetSchema,\n BridgeAssetV2Schema,\n MinimalAssetSchema,\n} from '../validators/bridge-asset';\nimport {\n QuoteSchemaV2,\n FeeType,\n Quote,\n QuoteSchema,\n} from '../validators/quote';\nimport { QuoteResponseSchemaV2 } from '../validators/quote-response';\nimport type { QuoteResponse } from '../validators/quote-response';\nimport { QuoteResponseSchemaV1 } from '../validators/quote-response-v1';\nimport type { QuoteResponseV1 } from '../validators/quote-response-v1';\nimport { StepSchemaV2, StepSchema } from '../validators/step';\n\nconst BridgeAssetV1FromV2 = coerce(\n intersection([BridgeAssetSchema, MinimalAssetSchema]),\n BridgeAssetV2Schema,\n (value) => {\n const { assetId, ...rest } = value;\n\n const { chainId } = parseCaipAssetType(assetId);\n return {\n address: formatAddressToCaipReference(assetId),\n chainId: formatChainIdToDec(chainId),\n assetId,\n ...rest,\n };\n },\n);\n\nconst toBridgeAssetV1 = (data: unknown): Infer<typeof BridgeAssetSchema> => {\n return create(data, BridgeAssetV1FromV2);\n};\n\nconst StepSchemaV1FromV2 = coerce(StepSchema, StepSchemaV2, (value) => {\n const { src, dest, action } = value;\n const srcAsset = toBridgeAssetV1(src.asset);\n const destAsset = toBridgeAssetV1(dest.asset);\n\n return {\n action,\n srcChainId: srcAsset.chainId,\n destChainId: destAsset.chainId,\n srcAsset,\n destAsset,\n };\n});\n\nconst toStepV1 = (step: unknown): Step => {\n const stepV2 = create(step, StepSchemaV1FromV2);\n return stepV2;\n};\n\nconst QuoteV1FromV2 = coerce(QuoteSchema, QuoteSchemaV2, (value) => {\n const {\n priceData,\n feeData,\n steps,\n protocols,\n aggregator,\n src,\n dest,\n ...restQuote\n } = value;\n\n const { chainId: srcChainIdInCaip, assetReference: srcReference } =\n parseCaipAssetType(src.asset.assetId);\n const { chainId: destChainIdInCaip, assetReference: destReference } =\n parseCaipAssetType(dest.asset.assetId);\n\n const srcChainId = formatChainIdToDec(srcChainIdInCaip);\n const destChainId = formatChainIdToDec(destChainIdInCaip);\n const srcTokenAddress = formatAddressToCaipReference(srcReference);\n const destTokenAddress = formatAddressToCaipReference(destReference);\n\n const { usd, ...metabridgeFeeData } = feeData[FeeType.METABRIDGE][0];\n\n return {\n bridges: protocols,\n bridgeId: aggregator,\n protocols,\n aggregator,\n srcChainId,\n destChainId,\n srcAsset: {\n ...src.asset,\n chainId: srcChainId,\n address: srcTokenAddress,\n },\n destAsset: {\n ...dest.asset,\n chainId: destChainId,\n address: destTokenAddress,\n },\n srcTokenAmount: src.amount,\n destTokenAmount: dest.amount,\n minDestTokenAmount: dest.minAmount,\n feeData: {\n [FeeType.METABRIDGE]: {\n ...metabridgeFeeData,\n asset: {\n ...metabridgeFeeData.asset,\n chainId: formatChainIdToDec(\n parseCaipAssetType(metabridgeFeeData.asset.assetId).chainId,\n ),\n address: formatAddressToCaipReference(\n parseCaipAssetType(metabridgeFeeData.asset.assetId).assetReference,\n ),\n },\n },\n ...(feeData[FeeType.TX_FEE]?.length && /* istanbul ignore next */ {\n ...feeData[FeeType.TX_FEE][0],\n asset: feeData[FeeType.TX_FEE][0].asset,\n }),\n },\n ...(dest.walletAddress && /* istanbul ignore next */ {\n destWalletAddress: dest.walletAddress,\n }),\n ...(src.walletAddress && /* istanbul ignore next */ {\n walletAddress: src.walletAddress,\n }),\n ...(value.priceData?.priceImpact?.amount && /* istanbul ignore next */ {\n priceData: {\n priceImpact: value.priceData.priceImpact.amount,\n },\n }),\n /**\n * @deprecated This field is deprecated.\n */\n steps: steps?.map(toStepV1),\n ...restQuote,\n };\n});\n\nconst toQuoteV1 = (quote: unknown): Quote => {\n const quoteV2 = create(quote, QuoteV1FromV2);\n return quoteV2;\n};\n\nconst QuoteResponseV1FromV2 = coerce(\n QuoteResponseSchemaV1,\n QuoteResponseSchemaV2,\n (value: QuoteResponse | null) => {\n if (!value) {\n return null;\n }\n const {\n quote,\n estimatedProcessingTimeInSeconds,\n approval,\n // @ts-expect-error - Some networks don't have an approval field\n resetApproval,\n featureId,\n trade,\n quoteRequestIndex,\n nonEvmFeesInNative,\n l1GasFeesInHexWei,\n quoteId,\n } = value;\n\n const quoteV1 = toQuoteV1(quote);\n return {\n estimatedProcessingTimeInSeconds,\n approval,\n trade,\n quote: quoteV1,\n ...(featureId && /* istanbul ignore next */ { featureId }),\n ...(quoteId && /* istanbul ignore next */ { quoteId }),\n ...(resetApproval && /* istanbul ignore next */ { resetApproval }),\n ...(quoteRequestIndex !== undefined && /* istanbul ignore next */ {\n quoteRequestIndex,\n }),\n ...(nonEvmFeesInNative && /* istanbul ignore next */ {\n nonEvmFeesInNative,\n }),\n ...(l1GasFeesInHexWei && /* istanbul ignore next */ {\n l1GasFeesInHexWei,\n }),\n };\n },\n);\n\n/**\n * Converts a {@link QuoteResponse} to a {@link QuoteResponseV1} for backwards compatibility.\n * This does not preserve any post-fetch {@link QuoteMetadata}.\n *\n * @deprecated Avoid introducing new code that uses this function. It is only for backwards compatibility with the old quote response format.\n * @param quoteResponse - The {@link QuoteResponse} to convert\n * @returns The {@link QuoteResponseV1}\n */\nexport const toQuoteResponseV1 = (\n quoteResponse:\n | QuoteResponse\n | (QuoteResponseV1 & QuoteMetadata)\n | QuoteResponseV1,\n): QuoteResponseV1 & QuoteMetadata => {\n let errorMessage = 'Failed to convert';\n\n // V1 quote\n if (is(quoteResponse, QuoteResponseSchemaV1)) {\n errorMessage += ' unmodified QuoteResponseV1';\n return quoteResponse as QuoteResponseV1 & QuoteMetadata;\n }\n\n try {\n // V2 with namespace, chainId, maybe QuoteMetadata\n if (is(quoteResponse, QuoteResponseSchemaV2)) {\n errorMessage += ' QuoteResponseV2 + metadata to QuoteResponseV1';\n const quoteResponseV1 = create(quoteResponse, QuoteResponseV1FromV2);\n return quoteResponseV1;\n }\n\n // V2 with no namespace, chainId\n errorMessage += ' QuoteResponseV2 to QuoteResponseV1';\n return create(quoteResponse, QuoteResponseV1FromV2);\n } catch (error) {\n /* istanbul ignore next */\n let errorDetails = error instanceof Error ? error.message : 'Unknown error';\n\n /* istanbul ignore next */\n if (error instanceof StructError) {\n const formattedErrors = formatStructErrors(error);\n errorDetails = JSON.stringify(formattedErrors, null, 2);\n console.warn(errorMessage, formatStructErrors(error));\n }\n\n throw new Error(`${errorMessage}. ${errorDetails}`);\n }\n};\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { QuoteMetadata } from "../utils/quote-metadata/types.cjs";
|
|
2
|
+
import type { QuoteResponse } from "../validators/quote-response.cjs";
|
|
3
|
+
import type { QuoteResponseV1 } from "../validators/quote-response-v1.cjs";
|
|
4
|
+
/**
|
|
5
|
+
* Converts a {@link QuoteResponse} to a {@link QuoteResponseV1} for backwards compatibility.
|
|
6
|
+
* This does not preserve any post-fetch {@link QuoteMetadata}.
|
|
7
|
+
*
|
|
8
|
+
* @deprecated Avoid introducing new code that uses this function. It is only for backwards compatibility with the old quote response format.
|
|
9
|
+
* @param quoteResponse - The {@link QuoteResponse} to convert
|
|
10
|
+
* @returns The {@link QuoteResponseV1}
|
|
11
|
+
*/
|
|
12
|
+
export declare const toQuoteResponseV1: (quoteResponse: QuoteResponse | (QuoteResponseV1 & QuoteMetadata) | QuoteResponseV1) => QuoteResponseV1 & QuoteMetadata;
|
|
13
|
+
//# sourceMappingURL=quote-response-v2-to-v1.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-response-v2-to-v1.d.cts","sourceRoot":"","sources":["../../src/coercers/quote-response-v2-to-v1.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,0CAAsC;AAcnE,OAAO,KAAK,EAAE,aAAa,EAAE,yCAAqC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,4CAAwC;AA2KvE;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,kBAExB,aAAa,GACb,CAAC,eAAe,GAAG,aAAa,CAAC,GACjC,eAAe,KAClB,eAAe,GAAG,aAiCpB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { QuoteMetadata } from "../utils/quote-metadata/types.mjs";
|
|
2
|
+
import type { QuoteResponse } from "../validators/quote-response.mjs";
|
|
3
|
+
import type { QuoteResponseV1 } from "../validators/quote-response-v1.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Converts a {@link QuoteResponse} to a {@link QuoteResponseV1} for backwards compatibility.
|
|
6
|
+
* This does not preserve any post-fetch {@link QuoteMetadata}.
|
|
7
|
+
*
|
|
8
|
+
* @deprecated Avoid introducing new code that uses this function. It is only for backwards compatibility with the old quote response format.
|
|
9
|
+
* @param quoteResponse - The {@link QuoteResponse} to convert
|
|
10
|
+
* @returns The {@link QuoteResponseV1}
|
|
11
|
+
*/
|
|
12
|
+
export declare const toQuoteResponseV1: (quoteResponse: QuoteResponse | (QuoteResponseV1 & QuoteMetadata) | QuoteResponseV1) => QuoteResponseV1 & QuoteMetadata;
|
|
13
|
+
//# sourceMappingURL=quote-response-v2-to-v1.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-response-v2-to-v1.d.mts","sourceRoot":"","sources":["../../src/coercers/quote-response-v2-to-v1.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,0CAAsC;AAcnE,OAAO,KAAK,EAAE,aAAa,EAAE,yCAAqC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,4CAAwC;AA2KvE;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,kBAExB,aAAa,GACb,CAAC,eAAe,GAAG,aAAa,CAAC,GACjC,eAAe,KAClB,eAAe,GAAG,aAiCpB,CAAC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { create, coerce, is, StructError, intersection } from "@metamask/superstruct";
|
|
2
|
+
import { parseCaipAssetType } from "@metamask/utils";
|
|
3
|
+
import { formatAddressToCaipReference, formatChainIdToDec } from "../utils/caip-formatters.mjs";
|
|
4
|
+
import { formatStructErrors } from "../utils/struct-error.mjs";
|
|
5
|
+
import { BridgeAssetSchema, BridgeAssetV2Schema, MinimalAssetSchema } from "../validators/bridge-asset.mjs";
|
|
6
|
+
import { QuoteSchemaV2, FeeType, QuoteSchema } from "../validators/quote.mjs";
|
|
7
|
+
import { QuoteResponseSchemaV2 } from "../validators/quote-response.mjs";
|
|
8
|
+
import { QuoteResponseSchemaV1 } from "../validators/quote-response-v1.mjs";
|
|
9
|
+
import { StepSchemaV2, StepSchema } from "../validators/step.mjs";
|
|
10
|
+
const BridgeAssetV1FromV2 = coerce(intersection([BridgeAssetSchema, MinimalAssetSchema]), BridgeAssetV2Schema, (value) => {
|
|
11
|
+
const { assetId, ...rest } = value;
|
|
12
|
+
const { chainId } = parseCaipAssetType(assetId);
|
|
13
|
+
return {
|
|
14
|
+
address: formatAddressToCaipReference(assetId),
|
|
15
|
+
chainId: formatChainIdToDec(chainId),
|
|
16
|
+
assetId,
|
|
17
|
+
...rest,
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
const toBridgeAssetV1 = (data) => {
|
|
21
|
+
return create(data, BridgeAssetV1FromV2);
|
|
22
|
+
};
|
|
23
|
+
const StepSchemaV1FromV2 = coerce(StepSchema, StepSchemaV2, (value) => {
|
|
24
|
+
const { src, dest, action } = value;
|
|
25
|
+
const srcAsset = toBridgeAssetV1(src.asset);
|
|
26
|
+
const destAsset = toBridgeAssetV1(dest.asset);
|
|
27
|
+
return {
|
|
28
|
+
action,
|
|
29
|
+
srcChainId: srcAsset.chainId,
|
|
30
|
+
destChainId: destAsset.chainId,
|
|
31
|
+
srcAsset,
|
|
32
|
+
destAsset,
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
const toStepV1 = (step) => {
|
|
36
|
+
const stepV2 = create(step, StepSchemaV1FromV2);
|
|
37
|
+
return stepV2;
|
|
38
|
+
};
|
|
39
|
+
const QuoteV1FromV2 = coerce(QuoteSchema, QuoteSchemaV2, (value) => {
|
|
40
|
+
const { priceData, feeData, steps, protocols, aggregator, src, dest, ...restQuote } = value;
|
|
41
|
+
const { chainId: srcChainIdInCaip, assetReference: srcReference } = parseCaipAssetType(src.asset.assetId);
|
|
42
|
+
const { chainId: destChainIdInCaip, assetReference: destReference } = parseCaipAssetType(dest.asset.assetId);
|
|
43
|
+
const srcChainId = formatChainIdToDec(srcChainIdInCaip);
|
|
44
|
+
const destChainId = formatChainIdToDec(destChainIdInCaip);
|
|
45
|
+
const srcTokenAddress = formatAddressToCaipReference(srcReference);
|
|
46
|
+
const destTokenAddress = formatAddressToCaipReference(destReference);
|
|
47
|
+
const { usd, ...metabridgeFeeData } = feeData[FeeType.METABRIDGE][0];
|
|
48
|
+
return {
|
|
49
|
+
bridges: protocols,
|
|
50
|
+
bridgeId: aggregator,
|
|
51
|
+
protocols,
|
|
52
|
+
aggregator,
|
|
53
|
+
srcChainId,
|
|
54
|
+
destChainId,
|
|
55
|
+
srcAsset: {
|
|
56
|
+
...src.asset,
|
|
57
|
+
chainId: srcChainId,
|
|
58
|
+
address: srcTokenAddress,
|
|
59
|
+
},
|
|
60
|
+
destAsset: {
|
|
61
|
+
...dest.asset,
|
|
62
|
+
chainId: destChainId,
|
|
63
|
+
address: destTokenAddress,
|
|
64
|
+
},
|
|
65
|
+
srcTokenAmount: src.amount,
|
|
66
|
+
destTokenAmount: dest.amount,
|
|
67
|
+
minDestTokenAmount: dest.minAmount,
|
|
68
|
+
feeData: {
|
|
69
|
+
[FeeType.METABRIDGE]: {
|
|
70
|
+
...metabridgeFeeData,
|
|
71
|
+
asset: {
|
|
72
|
+
...metabridgeFeeData.asset,
|
|
73
|
+
chainId: formatChainIdToDec(parseCaipAssetType(metabridgeFeeData.asset.assetId).chainId),
|
|
74
|
+
address: formatAddressToCaipReference(parseCaipAssetType(metabridgeFeeData.asset.assetId).assetReference),
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
...(feeData[FeeType.TX_FEE]?.length && /* istanbul ignore next */ {
|
|
78
|
+
...feeData[FeeType.TX_FEE][0],
|
|
79
|
+
asset: feeData[FeeType.TX_FEE][0].asset,
|
|
80
|
+
}),
|
|
81
|
+
},
|
|
82
|
+
...(dest.walletAddress && /* istanbul ignore next */ {
|
|
83
|
+
destWalletAddress: dest.walletAddress,
|
|
84
|
+
}),
|
|
85
|
+
...(src.walletAddress && /* istanbul ignore next */ {
|
|
86
|
+
walletAddress: src.walletAddress,
|
|
87
|
+
}),
|
|
88
|
+
...(value.priceData?.priceImpact?.amount && /* istanbul ignore next */ {
|
|
89
|
+
priceData: {
|
|
90
|
+
priceImpact: value.priceData.priceImpact.amount,
|
|
91
|
+
},
|
|
92
|
+
}),
|
|
93
|
+
/**
|
|
94
|
+
* @deprecated This field is deprecated.
|
|
95
|
+
*/
|
|
96
|
+
steps: steps?.map(toStepV1),
|
|
97
|
+
...restQuote,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
const toQuoteV1 = (quote) => {
|
|
101
|
+
const quoteV2 = create(quote, QuoteV1FromV2);
|
|
102
|
+
return quoteV2;
|
|
103
|
+
};
|
|
104
|
+
const QuoteResponseV1FromV2 = coerce(QuoteResponseSchemaV1, QuoteResponseSchemaV2, (value) => {
|
|
105
|
+
if (!value) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const { quote, estimatedProcessingTimeInSeconds, approval,
|
|
109
|
+
// @ts-expect-error - Some networks don't have an approval field
|
|
110
|
+
resetApproval, featureId, trade, quoteRequestIndex, nonEvmFeesInNative, l1GasFeesInHexWei, quoteId, } = value;
|
|
111
|
+
const quoteV1 = toQuoteV1(quote);
|
|
112
|
+
return {
|
|
113
|
+
estimatedProcessingTimeInSeconds,
|
|
114
|
+
approval,
|
|
115
|
+
trade,
|
|
116
|
+
quote: quoteV1,
|
|
117
|
+
...(featureId && /* istanbul ignore next */ { featureId }),
|
|
118
|
+
...(quoteId && /* istanbul ignore next */ { quoteId }),
|
|
119
|
+
...(resetApproval && /* istanbul ignore next */ { resetApproval }),
|
|
120
|
+
...(quoteRequestIndex !== undefined && /* istanbul ignore next */ {
|
|
121
|
+
quoteRequestIndex,
|
|
122
|
+
}),
|
|
123
|
+
...(nonEvmFeesInNative && /* istanbul ignore next */ {
|
|
124
|
+
nonEvmFeesInNative,
|
|
125
|
+
}),
|
|
126
|
+
...(l1GasFeesInHexWei && /* istanbul ignore next */ {
|
|
127
|
+
l1GasFeesInHexWei,
|
|
128
|
+
}),
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
/**
|
|
132
|
+
* Converts a {@link QuoteResponse} to a {@link QuoteResponseV1} for backwards compatibility.
|
|
133
|
+
* This does not preserve any post-fetch {@link QuoteMetadata}.
|
|
134
|
+
*
|
|
135
|
+
* @deprecated Avoid introducing new code that uses this function. It is only for backwards compatibility with the old quote response format.
|
|
136
|
+
* @param quoteResponse - The {@link QuoteResponse} to convert
|
|
137
|
+
* @returns The {@link QuoteResponseV1}
|
|
138
|
+
*/
|
|
139
|
+
export const toQuoteResponseV1 = (quoteResponse) => {
|
|
140
|
+
let errorMessage = 'Failed to convert';
|
|
141
|
+
// V1 quote
|
|
142
|
+
if (is(quoteResponse, QuoteResponseSchemaV1)) {
|
|
143
|
+
errorMessage += ' unmodified QuoteResponseV1';
|
|
144
|
+
return quoteResponse;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
// V2 with namespace, chainId, maybe QuoteMetadata
|
|
148
|
+
if (is(quoteResponse, QuoteResponseSchemaV2)) {
|
|
149
|
+
errorMessage += ' QuoteResponseV2 + metadata to QuoteResponseV1';
|
|
150
|
+
const quoteResponseV1 = create(quoteResponse, QuoteResponseV1FromV2);
|
|
151
|
+
return quoteResponseV1;
|
|
152
|
+
}
|
|
153
|
+
// V2 with no namespace, chainId
|
|
154
|
+
errorMessage += ' QuoteResponseV2 to QuoteResponseV1';
|
|
155
|
+
return create(quoteResponse, QuoteResponseV1FromV2);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
/* istanbul ignore next */
|
|
159
|
+
let errorDetails = error instanceof Error ? error.message : 'Unknown error';
|
|
160
|
+
/* istanbul ignore next */
|
|
161
|
+
if (error instanceof StructError) {
|
|
162
|
+
const formattedErrors = formatStructErrors(error);
|
|
163
|
+
errorDetails = JSON.stringify(formattedErrors, null, 2);
|
|
164
|
+
console.warn(errorMessage, formatStructErrors(error));
|
|
165
|
+
}
|
|
166
|
+
throw new Error(`${errorMessage}. ${errorDetails}`);
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
//# sourceMappingURL=quote-response-v2-to-v1.mjs.map
|