@metamask-previews/bridge-controller 79.0.1-preview-58a4a8b71 → 79.0.1-preview-4c8a5dfcb
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 +8 -0
- package/dist/coercers/quote-response-v1-to-v2.cjs +4 -4
- package/dist/coercers/quote-response-v1-to-v2.cjs.map +1 -1
- package/dist/coercers/quote-response-v1-to-v2.mjs +4 -4
- package/dist/coercers/quote-response-v1-to-v2.mjs.map +1 -1
- package/dist/index.cjs +11 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/selectors.cjs +40 -4
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +1199 -105
- package/dist/selectors.d.cts.map +1 -1
- package/dist/selectors.d.mts +1199 -105
- package/dist/selectors.d.mts.map +1 -1
- package/dist/selectors.mjs +40 -4
- package/dist/selectors.mjs.map +1 -1
- package/dist/utils/quote-metadata/calculators.cjs +6 -11
- package/dist/utils/quote-metadata/calculators.cjs.map +1 -1
- package/dist/utils/quote-metadata/calculators.d.cts.map +1 -1
- package/dist/utils/quote-metadata/calculators.d.mts.map +1 -1
- package/dist/utils/quote-metadata/calculators.mjs +6 -11
- package/dist/utils/quote-metadata/calculators.mjs.map +1 -1
- package/dist/utils/quote-metadata/include-if-truthy.cjs +14 -0
- package/dist/utils/quote-metadata/include-if-truthy.cjs.map +1 -0
- package/dist/utils/quote-metadata/include-if-truthy.d.cts +2 -0
- package/dist/utils/quote-metadata/include-if-truthy.d.cts.map +1 -0
- package/dist/utils/quote-metadata/include-if-truthy.d.mts +2 -0
- package/dist/utils/quote-metadata/include-if-truthy.d.mts.map +1 -0
- package/dist/utils/quote-metadata/include-if-truthy.mjs +10 -0
- package/dist/utils/quote-metadata/include-if-truthy.mjs.map +1 -0
- package/dist/utils/quote-metadata/merge.cjs +12 -10
- package/dist/utils/quote-metadata/merge.cjs.map +1 -1
- package/dist/utils/quote-metadata/merge.d.cts +6 -3
- package/dist/utils/quote-metadata/merge.d.cts.map +1 -1
- package/dist/utils/quote-metadata/merge.d.mts +6 -3
- package/dist/utils/quote-metadata/merge.d.mts.map +1 -1
- package/dist/utils/quote-metadata/merge.mjs +12 -10
- package/dist/utils/quote-metadata/merge.mjs.map +1 -1
- package/dist/utils/quote-metadata/to-currency-values.cjs +58 -0
- package/dist/utils/quote-metadata/to-currency-values.cjs.map +1 -0
- package/dist/utils/quote-metadata/to-currency-values.d.cts +12 -0
- package/dist/utils/quote-metadata/to-currency-values.d.cts.map +1 -0
- package/dist/utils/quote-metadata/to-currency-values.d.mts +12 -0
- package/dist/utils/quote-metadata/to-currency-values.d.mts.map +1 -0
- package/dist/utils/quote-metadata/to-currency-values.mjs +54 -0
- package/dist/utils/quote-metadata/to-currency-values.mjs.map +1 -0
- package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs +66 -16
- package/dist/utils/quote-metadata/to-quote-metadata-v1.cjs.map +1 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.cts +3 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.cts.map +1 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts +3 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.d.mts.map +1 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v1.mjs +66 -16
- package/dist/utils/quote-metadata/to-quote-metadata-v1.mjs.map +1 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs +21 -42
- package/dist/utils/quote-metadata/to-quote-metadata-v2.cjs.map +1 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.cts.map +1 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v2.d.mts.map +1 -1
- package/dist/utils/quote-metadata/to-quote-metadata-v2.mjs +21 -42
- package/dist/utils/quote-metadata/to-quote-metadata-v2.mjs.map +1 -1
- package/dist/utils/quote-metadata/types.cjs +16 -0
- package/dist/utils/quote-metadata/types.cjs.map +1 -1
- package/dist/utils/quote-metadata/types.d.cts +21 -0
- package/dist/utils/quote-metadata/types.d.cts.map +1 -1
- package/dist/utils/quote-metadata/types.d.mts +21 -0
- package/dist/utils/quote-metadata/types.d.mts.map +1 -1
- package/dist/utils/quote-metadata/types.mjs +15 -1
- package/dist/utils/quote-metadata/types.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toQuoteMetadataV1 = void 0;
|
|
4
|
+
const superstruct_1 = require("@metamask/superstruct");
|
|
4
5
|
const lodash_1 = require("lodash");
|
|
6
|
+
const quote_response_js_1 = require("../../validators/quote-response.cjs");
|
|
7
|
+
const number_formatters_js_1 = require("../number-formatters.cjs");
|
|
8
|
+
const include_if_truthy_js_1 = require("./include-if-truthy.cjs");
|
|
9
|
+
const types_js_1 = require("./types.cjs");
|
|
5
10
|
/**
|
|
6
11
|
* Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.
|
|
7
12
|
* If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.
|
|
8
13
|
*
|
|
9
14
|
* @param quoteResponse - The quote to extract the metadata from
|
|
15
|
+
* @param migrationPhase - The migration phase to use
|
|
10
16
|
* @returns A partial {@link QuoteMetadata} object
|
|
11
17
|
*/
|
|
12
|
-
const toQuoteMetadataV1 = (quoteResponse) => {
|
|
18
|
+
const toQuoteMetadataV1 = (quoteResponse, migrationPhase = types_js_1.QuoteMetadataMigrationPhase.V1Data) => {
|
|
13
19
|
/* istanbul ignore if */
|
|
14
20
|
if (!quoteResponse) {
|
|
15
21
|
return {};
|
|
@@ -22,22 +28,66 @@ const toQuoteMetadataV1 = (quoteResponse) => {
|
|
|
22
28
|
swapRate,
|
|
23
29
|
gasFee,
|
|
24
30
|
totalNetworkFee,
|
|
25
|
-
...(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
...(
|
|
29
|
-
...(
|
|
30
|
-
? { priceImpact }
|
|
31
|
-
: {}),
|
|
32
|
-
...(relayerFee && Object.values(relayerFee).some(Boolean)
|
|
33
|
-
? { relayerFee }
|
|
34
|
-
: {}),
|
|
35
|
-
...(includedTxFees && Object.values(includedTxFees).some(Boolean)
|
|
36
|
-
? { includedTxFees }
|
|
37
|
-
: {}),
|
|
31
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(adjustedReturn, { adjustedReturn }),
|
|
32
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(cost, { cost }),
|
|
33
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(priceImpact, { priceImpact }),
|
|
34
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(relayerFee, { relayerFee }),
|
|
35
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(includedTxFees, { includedTxFees }),
|
|
38
36
|
};
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
if (migrationPhase === types_js_1.QuoteMetadataMigrationPhase.V1Data ||
|
|
38
|
+
!(0, superstruct_1.is)(quoteResponse, quote_response_js_1.QuoteResponseSchemaV2)) {
|
|
39
|
+
return legacyMetadata;
|
|
40
|
+
}
|
|
41
|
+
const { quote: { src, dest, priceData, feeData: { network, relayer, txFee }, }, } = quoteResponse;
|
|
42
|
+
const totalNetworkFeeV2 = (0, number_formatters_js_1.sumAmounts)(network, relayer);
|
|
43
|
+
const toTokenAmountValues = (data) => {
|
|
44
|
+
return {
|
|
45
|
+
amount: data?.normalizedAmount,
|
|
46
|
+
usd: data?.usd,
|
|
47
|
+
valueInCurrency: data?.valueInCurrency,
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
// Build V1 from V2 quote
|
|
51
|
+
const v2Metadata = {
|
|
52
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(src, {
|
|
53
|
+
sentAmount: toTokenAmountValues(src),
|
|
54
|
+
}),
|
|
55
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(dest, {
|
|
56
|
+
toTokenAmount: toTokenAmountValues(dest),
|
|
57
|
+
minToTokenAmount: {
|
|
58
|
+
amount: dest.minAmountNormalized,
|
|
59
|
+
valueInCurrency: dest.minAmountValueInCurrency,
|
|
60
|
+
usd: dest.minAmountUsd,
|
|
61
|
+
},
|
|
62
|
+
}),
|
|
63
|
+
...(priceData?.swapRate && { swapRate: priceData.swapRate }),
|
|
64
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(priceData?.adjustedReturn, {
|
|
65
|
+
adjustedReturn: toTokenAmountValues(priceData?.adjustedReturn),
|
|
66
|
+
}),
|
|
67
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(network?.[0], {
|
|
68
|
+
gasFee: {
|
|
69
|
+
total: toTokenAmountValues(network?.[0]),
|
|
70
|
+
},
|
|
71
|
+
}),
|
|
72
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(totalNetworkFeeV2, {
|
|
73
|
+
totalNetworkFee: toTokenAmountValues(totalNetworkFeeV2),
|
|
74
|
+
}),
|
|
75
|
+
...(priceData?.priceImpact && {
|
|
76
|
+
priceImpact: toTokenAmountValues(priceData?.priceImpact),
|
|
77
|
+
// Use priceImpact as cost
|
|
78
|
+
cost: toTokenAmountValues(priceData?.priceImpact),
|
|
79
|
+
}),
|
|
80
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(relayer?.[0], {
|
|
81
|
+
relayerFee: toTokenAmountValues(relayer?.[0]),
|
|
82
|
+
}),
|
|
83
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(txFee?.[0], {
|
|
84
|
+
includedTxFees: toTokenAmountValues(txFee?.[0]),
|
|
85
|
+
}),
|
|
86
|
+
};
|
|
87
|
+
if (migrationPhase === types_js_1.QuoteMetadataMigrationPhase.V2WithV1Fallback) {
|
|
88
|
+
return (0, lodash_1.merge)({}, legacyMetadata, v2Metadata);
|
|
89
|
+
}
|
|
90
|
+
return v2Metadata;
|
|
41
91
|
};
|
|
42
92
|
exports.toQuoteMetadataV1 = toQuoteMetadataV1;
|
|
43
93
|
//# sourceMappingURL=to-quote-metadata-v1.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-quote-metadata-v1.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v1.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"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","sourcesContent":["import { is } from '@metamask/superstruct';\nimport { merge } from 'lodash';\n\nimport type { DeepPartial } from '../../types.js';\nimport type { AmountsAndAsset } from '../../validators/amount-and-asset.js';\nimport type { QuoteResponseV1 } from '../../validators/quote-response-v1.js';\nimport { QuoteResponseSchemaV2 } from '../../validators/quote-response.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { sumAmounts } from '../number-formatters.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport type { QuoteMetadata, TokenAmountValues } from './types.js';\nimport { QuoteMetadataMigrationPhase } from './types.js';\n\n/**\n * Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.\n * If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.\n *\n * @param quoteResponse - The quote to extract the metadata from\n * @param migrationPhase - The migration phase to use\n * @returns A partial {@link QuoteMetadata} object\n */\nexport const toQuoteMetadataV1 = (\n quoteResponse:\n | (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata)\n | null,\n migrationPhase: QuoteMetadataMigrationPhase = QuoteMetadataMigrationPhase.V1Data,\n): QuoteMetadata => {\n /* istanbul ignore if */\n if (!quoteResponse) {\n return {};\n }\n\n const {\n toTokenAmount,\n minToTokenAmount,\n sentAmount,\n swapRate,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n totalNetworkFee,\n gasFee,\n priceImpact,\n } = quoteResponse;\n\n const legacyMetadata = {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n gasFee,\n totalNetworkFee,\n ...includeIfTruthy(adjustedReturn, { adjustedReturn }),\n ...includeIfTruthy(cost, { cost }),\n ...includeIfTruthy(priceImpact, { priceImpact }),\n ...includeIfTruthy(relayerFee, { relayerFee }),\n ...includeIfTruthy(includedTxFees, { includedTxFees }),\n };\n\n if (\n migrationPhase === QuoteMetadataMigrationPhase.V1Data ||\n !is(quoteResponse, QuoteResponseSchemaV2)\n ) {\n return legacyMetadata;\n }\n\n const {\n quote: {\n src,\n dest,\n priceData,\n feeData: { network, relayer, txFee },\n },\n } = quoteResponse;\n\n const totalNetworkFeeV2 = sumAmounts(network, relayer);\n\n const toTokenAmountValues = (\n data?: Pick<\n AmountsAndAsset,\n 'normalizedAmount' | 'usd' | 'valueInCurrency'\n >,\n ): Partial<TokenAmountValues> => {\n return {\n amount: data?.normalizedAmount,\n usd: data?.usd,\n valueInCurrency: data?.valueInCurrency,\n };\n };\n\n // Build V1 from V2 quote\n const v2Metadata: QuoteMetadata = {\n ...includeIfTruthy(src, {\n sentAmount: toTokenAmountValues(src),\n }),\n ...includeIfTruthy(dest, {\n toTokenAmount: toTokenAmountValues(dest),\n minToTokenAmount: {\n amount: dest.minAmountNormalized,\n valueInCurrency: dest.minAmountValueInCurrency,\n usd: dest.minAmountUsd,\n },\n }),\n ...(priceData?.swapRate && { swapRate: priceData.swapRate }),\n ...includeIfTruthy(priceData?.adjustedReturn, {\n adjustedReturn: toTokenAmountValues(priceData?.adjustedReturn),\n }),\n ...includeIfTruthy(network?.[0], {\n gasFee: {\n total: toTokenAmountValues(network?.[0]),\n },\n }),\n ...includeIfTruthy(totalNetworkFeeV2, {\n totalNetworkFee: toTokenAmountValues(totalNetworkFeeV2),\n }),\n ...(priceData?.priceImpact && {\n priceImpact: toTokenAmountValues(priceData?.priceImpact),\n // Use priceImpact as cost\n cost: toTokenAmountValues(priceData?.priceImpact),\n }),\n ...includeIfTruthy(relayer?.[0], {\n relayerFee: toTokenAmountValues(relayer?.[0]),\n }),\n ...includeIfTruthy(txFee?.[0], {\n includedTxFees: toTokenAmountValues(txFee?.[0]),\n }),\n };\n\n if (migrationPhase === QuoteMetadataMigrationPhase.V2WithV1Fallback) {\n return merge({}, legacyMetadata, v2Metadata);\n }\n\n return v2Metadata;\n};\n"]}
|
|
@@ -2,12 +2,14 @@ import type { DeepPartial } from "../../types.cjs";
|
|
|
2
2
|
import type { QuoteResponseV1 } from "../../validators/quote-response-v1.cjs";
|
|
3
3
|
import type { QuoteResponse } from "../../validators/quote-response.cjs";
|
|
4
4
|
import type { QuoteMetadata } from "./types.cjs";
|
|
5
|
+
import { QuoteMetadataMigrationPhase } from "./types.cjs";
|
|
5
6
|
/**
|
|
6
7
|
* Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.
|
|
7
8
|
* If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.
|
|
8
9
|
*
|
|
9
10
|
* @param quoteResponse - The quote to extract the metadata from
|
|
11
|
+
* @param migrationPhase - The migration phase to use
|
|
10
12
|
* @returns A partial {@link QuoteMetadata} object
|
|
11
13
|
*/
|
|
12
|
-
export declare const toQuoteMetadataV1: (quoteResponse: (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata) | null) => QuoteMetadata;
|
|
14
|
+
export declare const toQuoteMetadataV1: (quoteResponse: (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata) | null, migrationPhase?: QuoteMetadataMigrationPhase) => QuoteMetadata;
|
|
13
15
|
//# sourceMappingURL=to-quote-metadata-v1.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-quote-metadata-v1.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v1.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,+CAA8C;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAqB,oBAAmB;AACnE,OAAO,EAAE,2BAA2B,EAAE,oBAAmB;AAEzD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,kBAExB,CAAC,YAAY,aAAa,GAAG,eAAe,CAAC,GAAG,aAAa,CAAC,GAC9D,IAAI,mBACQ,2BAA2B,KAC1C,aA4GF,CAAC"}
|
|
@@ -2,12 +2,14 @@ import type { DeepPartial } from "../../types.mjs";
|
|
|
2
2
|
import type { QuoteResponseV1 } from "../../validators/quote-response-v1.mjs";
|
|
3
3
|
import type { QuoteResponse } from "../../validators/quote-response.mjs";
|
|
4
4
|
import type { QuoteMetadata } from "./types.mjs";
|
|
5
|
+
import { QuoteMetadataMigrationPhase } from "./types.mjs";
|
|
5
6
|
/**
|
|
6
7
|
* Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.
|
|
7
8
|
* If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.
|
|
8
9
|
*
|
|
9
10
|
* @param quoteResponse - The quote to extract the metadata from
|
|
11
|
+
* @param migrationPhase - The migration phase to use
|
|
10
12
|
* @returns A partial {@link QuoteMetadata} object
|
|
11
13
|
*/
|
|
12
|
-
export declare const toQuoteMetadataV1: (quoteResponse: (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata) | null) => QuoteMetadata;
|
|
14
|
+
export declare const toQuoteMetadataV1: (quoteResponse: (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata) | null, migrationPhase?: QuoteMetadataMigrationPhase) => QuoteMetadata;
|
|
13
15
|
//# sourceMappingURL=to-quote-metadata-v1.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-quote-metadata-v1.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v1.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,+CAA8C;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAqB,oBAAmB;AACnE,OAAO,EAAE,2BAA2B,EAAE,oBAAmB;AAEzD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,kBAExB,CAAC,YAAY,aAAa,GAAG,eAAe,CAAC,GAAG,aAAa,CAAC,GAC9D,IAAI,mBACQ,2BAA2B,KAC1C,aA4GF,CAAC"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
+
import { is } from "@metamask/superstruct";
|
|
1
2
|
import $lodash from "lodash";
|
|
2
3
|
const { merge } = $lodash;
|
|
4
|
+
import { QuoteResponseSchemaV2 } from "../../validators/quote-response.mjs";
|
|
5
|
+
import { sumAmounts } from "../number-formatters.mjs";
|
|
6
|
+
import { includeIfTruthy } from "./include-if-truthy.mjs";
|
|
7
|
+
import { QuoteMetadataMigrationPhase } from "./types.mjs";
|
|
3
8
|
/**
|
|
4
9
|
* Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.
|
|
5
10
|
* If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.
|
|
6
11
|
*
|
|
7
12
|
* @param quoteResponse - The quote to extract the metadata from
|
|
13
|
+
* @param migrationPhase - The migration phase to use
|
|
8
14
|
* @returns A partial {@link QuoteMetadata} object
|
|
9
15
|
*/
|
|
10
|
-
export const toQuoteMetadataV1 = (quoteResponse) => {
|
|
16
|
+
export const toQuoteMetadataV1 = (quoteResponse, migrationPhase = QuoteMetadataMigrationPhase.V1Data) => {
|
|
11
17
|
/* istanbul ignore if */
|
|
12
18
|
if (!quoteResponse) {
|
|
13
19
|
return {};
|
|
@@ -20,21 +26,65 @@ export const toQuoteMetadataV1 = (quoteResponse) => {
|
|
|
20
26
|
swapRate,
|
|
21
27
|
gasFee,
|
|
22
28
|
totalNetworkFee,
|
|
23
|
-
...(adjustedReturn
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
...(
|
|
27
|
-
...(
|
|
28
|
-
? { priceImpact }
|
|
29
|
-
: {}),
|
|
30
|
-
...(relayerFee && Object.values(relayerFee).some(Boolean)
|
|
31
|
-
? { relayerFee }
|
|
32
|
-
: {}),
|
|
33
|
-
...(includedTxFees && Object.values(includedTxFees).some(Boolean)
|
|
34
|
-
? { includedTxFees }
|
|
35
|
-
: {}),
|
|
29
|
+
...includeIfTruthy(adjustedReturn, { adjustedReturn }),
|
|
30
|
+
...includeIfTruthy(cost, { cost }),
|
|
31
|
+
...includeIfTruthy(priceImpact, { priceImpact }),
|
|
32
|
+
...includeIfTruthy(relayerFee, { relayerFee }),
|
|
33
|
+
...includeIfTruthy(includedTxFees, { includedTxFees }),
|
|
36
34
|
};
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
if (migrationPhase === QuoteMetadataMigrationPhase.V1Data ||
|
|
36
|
+
!is(quoteResponse, QuoteResponseSchemaV2)) {
|
|
37
|
+
return legacyMetadata;
|
|
38
|
+
}
|
|
39
|
+
const { quote: { src, dest, priceData, feeData: { network, relayer, txFee }, }, } = quoteResponse;
|
|
40
|
+
const totalNetworkFeeV2 = sumAmounts(network, relayer);
|
|
41
|
+
const toTokenAmountValues = (data) => {
|
|
42
|
+
return {
|
|
43
|
+
amount: data?.normalizedAmount,
|
|
44
|
+
usd: data?.usd,
|
|
45
|
+
valueInCurrency: data?.valueInCurrency,
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
// Build V1 from V2 quote
|
|
49
|
+
const v2Metadata = {
|
|
50
|
+
...includeIfTruthy(src, {
|
|
51
|
+
sentAmount: toTokenAmountValues(src),
|
|
52
|
+
}),
|
|
53
|
+
...includeIfTruthy(dest, {
|
|
54
|
+
toTokenAmount: toTokenAmountValues(dest),
|
|
55
|
+
minToTokenAmount: {
|
|
56
|
+
amount: dest.minAmountNormalized,
|
|
57
|
+
valueInCurrency: dest.minAmountValueInCurrency,
|
|
58
|
+
usd: dest.minAmountUsd,
|
|
59
|
+
},
|
|
60
|
+
}),
|
|
61
|
+
...(priceData?.swapRate && { swapRate: priceData.swapRate }),
|
|
62
|
+
...includeIfTruthy(priceData?.adjustedReturn, {
|
|
63
|
+
adjustedReturn: toTokenAmountValues(priceData?.adjustedReturn),
|
|
64
|
+
}),
|
|
65
|
+
...includeIfTruthy(network?.[0], {
|
|
66
|
+
gasFee: {
|
|
67
|
+
total: toTokenAmountValues(network?.[0]),
|
|
68
|
+
},
|
|
69
|
+
}),
|
|
70
|
+
...includeIfTruthy(totalNetworkFeeV2, {
|
|
71
|
+
totalNetworkFee: toTokenAmountValues(totalNetworkFeeV2),
|
|
72
|
+
}),
|
|
73
|
+
...(priceData?.priceImpact && {
|
|
74
|
+
priceImpact: toTokenAmountValues(priceData?.priceImpact),
|
|
75
|
+
// Use priceImpact as cost
|
|
76
|
+
cost: toTokenAmountValues(priceData?.priceImpact),
|
|
77
|
+
}),
|
|
78
|
+
...includeIfTruthy(relayer?.[0], {
|
|
79
|
+
relayerFee: toTokenAmountValues(relayer?.[0]),
|
|
80
|
+
}),
|
|
81
|
+
...includeIfTruthy(txFee?.[0], {
|
|
82
|
+
includedTxFees: toTokenAmountValues(txFee?.[0]),
|
|
83
|
+
}),
|
|
84
|
+
};
|
|
85
|
+
if (migrationPhase === QuoteMetadataMigrationPhase.V2WithV1Fallback) {
|
|
86
|
+
return merge({}, legacyMetadata, v2Metadata);
|
|
87
|
+
}
|
|
88
|
+
return v2Metadata;
|
|
39
89
|
};
|
|
40
90
|
//# sourceMappingURL=to-quote-metadata-v1.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-quote-metadata-v1.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v1.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v1.ts"],"names":[],"mappings":"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","sourcesContent":["import { is } from '@metamask/superstruct';\nimport { merge } from 'lodash';\n\nimport type { DeepPartial } from '../../types.js';\nimport type { AmountsAndAsset } from '../../validators/amount-and-asset.js';\nimport type { QuoteResponseV1 } from '../../validators/quote-response-v1.js';\nimport { QuoteResponseSchemaV2 } from '../../validators/quote-response.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { sumAmounts } from '../number-formatters.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport type { QuoteMetadata, TokenAmountValues } from './types.js';\nimport { QuoteMetadataMigrationPhase } from './types.js';\n\n/**\n * Extracts legacy {@link QuoteMetadata} values from a {@link QuoteResponse} or {@link QuoteResponseV1}.\n * If a QuoteResponse is provided, this assumes that its `valueInCurrency` properties are set.\n *\n * @param quoteResponse - The quote to extract the metadata from\n * @param migrationPhase - The migration phase to use\n * @returns A partial {@link QuoteMetadata} object\n */\nexport const toQuoteMetadataV1 = (\n quoteResponse:\n | (DeepPartial<QuoteResponse | QuoteResponseV1> & QuoteMetadata)\n | null,\n migrationPhase: QuoteMetadataMigrationPhase = QuoteMetadataMigrationPhase.V1Data,\n): QuoteMetadata => {\n /* istanbul ignore if */\n if (!quoteResponse) {\n return {};\n }\n\n const {\n toTokenAmount,\n minToTokenAmount,\n sentAmount,\n swapRate,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n totalNetworkFee,\n gasFee,\n priceImpact,\n } = quoteResponse;\n\n const legacyMetadata = {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n gasFee,\n totalNetworkFee,\n ...includeIfTruthy(adjustedReturn, { adjustedReturn }),\n ...includeIfTruthy(cost, { cost }),\n ...includeIfTruthy(priceImpact, { priceImpact }),\n ...includeIfTruthy(relayerFee, { relayerFee }),\n ...includeIfTruthy(includedTxFees, { includedTxFees }),\n };\n\n if (\n migrationPhase === QuoteMetadataMigrationPhase.V1Data ||\n !is(quoteResponse, QuoteResponseSchemaV2)\n ) {\n return legacyMetadata;\n }\n\n const {\n quote: {\n src,\n dest,\n priceData,\n feeData: { network, relayer, txFee },\n },\n } = quoteResponse;\n\n const totalNetworkFeeV2 = sumAmounts(network, relayer);\n\n const toTokenAmountValues = (\n data?: Pick<\n AmountsAndAsset,\n 'normalizedAmount' | 'usd' | 'valueInCurrency'\n >,\n ): Partial<TokenAmountValues> => {\n return {\n amount: data?.normalizedAmount,\n usd: data?.usd,\n valueInCurrency: data?.valueInCurrency,\n };\n };\n\n // Build V1 from V2 quote\n const v2Metadata: QuoteMetadata = {\n ...includeIfTruthy(src, {\n sentAmount: toTokenAmountValues(src),\n }),\n ...includeIfTruthy(dest, {\n toTokenAmount: toTokenAmountValues(dest),\n minToTokenAmount: {\n amount: dest.minAmountNormalized,\n valueInCurrency: dest.minAmountValueInCurrency,\n usd: dest.minAmountUsd,\n },\n }),\n ...(priceData?.swapRate && { swapRate: priceData.swapRate }),\n ...includeIfTruthy(priceData?.adjustedReturn, {\n adjustedReturn: toTokenAmountValues(priceData?.adjustedReturn),\n }),\n ...includeIfTruthy(network?.[0], {\n gasFee: {\n total: toTokenAmountValues(network?.[0]),\n },\n }),\n ...includeIfTruthy(totalNetworkFeeV2, {\n totalNetworkFee: toTokenAmountValues(totalNetworkFeeV2),\n }),\n ...(priceData?.priceImpact && {\n priceImpact: toTokenAmountValues(priceData?.priceImpact),\n // Use priceImpact as cost\n cost: toTokenAmountValues(priceData?.priceImpact),\n }),\n ...includeIfTruthy(relayer?.[0], {\n relayerFee: toTokenAmountValues(relayer?.[0]),\n }),\n ...includeIfTruthy(txFee?.[0], {\n includedTxFees: toTokenAmountValues(txFee?.[0]),\n }),\n };\n\n if (migrationPhase === QuoteMetadataMigrationPhase.V2WithV1Fallback) {\n return merge({}, legacyMetadata, v2Metadata);\n }\n\n return v2Metadata;\n};\n"]}
|
|
@@ -5,6 +5,7 @@ const utils_1 = require("@metamask/utils");
|
|
|
5
5
|
const quote_response_v1_to_v2_js_1 = require("../../coercers/quote-response-v1-to-v2.cjs");
|
|
6
6
|
const bridge_js_1 = require("../bridge.cjs");
|
|
7
7
|
const number_formatters_js_1 = require("../number-formatters.cjs");
|
|
8
|
+
const include_if_truthy_js_1 = require("./include-if-truthy.cjs");
|
|
8
9
|
/**
|
|
9
10
|
* Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata
|
|
10
11
|
*
|
|
@@ -28,20 +29,21 @@ const toQuoteMetadataV2 = (quoteMetadata, quoteResponseV2) => {
|
|
|
28
29
|
valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,
|
|
29
30
|
};
|
|
30
31
|
const networkFeeToUse = gasFee?.total ?? totalNetworkFee;
|
|
32
|
+
const toAmountAndAsset = (asset, metadata, extraFields) => {
|
|
33
|
+
return {
|
|
34
|
+
amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(metadata?.amount, asset?.decimals),
|
|
35
|
+
normalizedAmount: metadata?.amount,
|
|
36
|
+
valueInCurrency: metadata?.valueInCurrency,
|
|
37
|
+
usd: metadata?.usd,
|
|
38
|
+
...extraFields,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
31
41
|
return {
|
|
32
42
|
...rest,
|
|
33
43
|
quote: {
|
|
34
|
-
src:
|
|
35
|
-
amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(sentAmount?.amount, srcAsset?.decimals),
|
|
36
|
-
normalizedAmount: sentAmount?.amount,
|
|
37
|
-
valueInCurrency: sentAmount?.valueInCurrency,
|
|
38
|
-
usd: sentAmount?.usd,
|
|
39
|
-
},
|
|
44
|
+
src: toAmountAndAsset(srcAsset, sentAmount),
|
|
40
45
|
dest: {
|
|
41
|
-
|
|
42
|
-
normalizedAmount: toTokenAmount?.amount,
|
|
43
|
-
valueInCurrency: toTokenAmount?.valueInCurrency,
|
|
44
|
-
usd: toTokenAmount?.usd,
|
|
46
|
+
...toAmountAndAsset(destAsset, toTokenAmount),
|
|
45
47
|
minAmount: (0, number_formatters_js_1.calcAtomicTokenAmount)(minToTokenAmount?.amount, destAsset?.decimals),
|
|
46
48
|
minAmountNormalized: minToTokenAmount?.amount,
|
|
47
49
|
minAmountUsd: minToTokenAmount?.usd,
|
|
@@ -49,50 +51,27 @@ const toQuoteMetadataV2 = (quoteMetadata, quoteResponseV2) => {
|
|
|
49
51
|
},
|
|
50
52
|
feeData: {
|
|
51
53
|
network: [
|
|
52
|
-
{
|
|
53
|
-
amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(networkFeeToUse?.amount, nativeAsset?.decimals),
|
|
54
|
-
normalizedAmount: networkFeeToUse?.amount,
|
|
55
|
-
valueInCurrency: networkFeeToUse?.valueInCurrency,
|
|
56
|
-
usd: networkFeeToUse?.usd,
|
|
54
|
+
toAmountAndAsset(nativeAsset, networkFeeToUse, {
|
|
57
55
|
asset: nativeAsset,
|
|
58
|
-
},
|
|
56
|
+
}),
|
|
59
57
|
],
|
|
60
|
-
...(relayerFee
|
|
61
|
-
Object.values(relayerFee).some(Boolean) && {
|
|
58
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(relayerFee, {
|
|
62
59
|
relayer: [
|
|
63
|
-
{
|
|
64
|
-
amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(relayerFee?.amount, nativeAsset?.decimals),
|
|
65
|
-
normalizedAmount: relayerFee.amount,
|
|
66
|
-
valueInCurrency: relayerFee.valueInCurrency,
|
|
67
|
-
usd: relayerFee.usd,
|
|
68
|
-
asset: nativeAsset,
|
|
69
|
-
},
|
|
60
|
+
toAmountAndAsset(nativeAsset, relayerFee, { asset: nativeAsset }),
|
|
70
61
|
],
|
|
71
62
|
}),
|
|
72
|
-
...(includedTxFees
|
|
73
|
-
Object.values(includedTxFees).some(Boolean) && {
|
|
63
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(includedTxFees, {
|
|
74
64
|
txFee: [
|
|
75
|
-
{
|
|
76
|
-
amount: (0, number_formatters_js_1.calcAtomicTokenAmount)(includedTxFees?.amount, txFeeAsset?.decimals),
|
|
77
|
-
normalizedAmount: includedTxFees?.amount,
|
|
78
|
-
valueInCurrency: includedTxFees?.valueInCurrency,
|
|
79
|
-
usd: includedTxFees?.usd,
|
|
80
|
-
asset: txFeeAsset,
|
|
81
|
-
},
|
|
65
|
+
toAmountAndAsset(txFeeAsset, includedTxFees, { asset: txFeeAsset }),
|
|
82
66
|
],
|
|
83
67
|
}),
|
|
84
68
|
},
|
|
85
69
|
priceData: {
|
|
86
|
-
...(priceImpactToUse
|
|
87
|
-
Object.values(priceImpactToUse).some(Boolean) && {
|
|
70
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(priceImpactToUse, {
|
|
88
71
|
priceImpact: priceImpactToUse,
|
|
89
72
|
}),
|
|
90
|
-
...(adjustedReturn
|
|
91
|
-
|
|
92
|
-
adjustedReturn: {
|
|
93
|
-
valueInCurrency: adjustedReturn?.valueInCurrency,
|
|
94
|
-
usd: adjustedReturn?.usd,
|
|
95
|
-
},
|
|
73
|
+
...(0, include_if_truthy_js_1.includeIfTruthy)(adjustedReturn, {
|
|
74
|
+
adjustedReturn,
|
|
96
75
|
}),
|
|
97
76
|
swapRate,
|
|
98
77
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-quote-metadata-v2.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AAErD,2FAA4E;
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v2.cjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseCaipAssetType } from '@metamask/utils';\n\nimport { toBridgeAssetV2 } from '../../coercers/quote-response-v1-to-v2.js';\nimport type { DeepPartial } from '../../types.js';\nimport type { AmountsAndAsset } from '../../validators/amount-and-asset.js';\nimport type { BridgeAssetV2 } from '../../validators/bridge-asset.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId } from '../bridge.js';\nimport { calcAtomicTokenAmount } from '../number-formatters.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport type { QuoteMetadata, TokenAmountValues } from './types.js';\n\n/**\n * Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata\n *\n * @param quoteMetadata - The {@link QuoteMetadata} to convert\n * @param quoteResponseV2 - The {@link QuoteResponse} to use for token data\n * @returns The {@link DeepPartial<QuoteResponse>}\n */\nexport const toQuoteMetadataV2 = (\n quoteMetadata: QuoteMetadata,\n quoteResponseV2?: DeepPartial<QuoteResponse>,\n): DeepPartial<QuoteResponse> => {\n const {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n totalNetworkFee,\n gasFee,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n priceImpact,\n ...rest\n } = quoteMetadata;\n\n const srcAsset = quoteResponseV2?.quote?.src?.asset;\n const destAsset = quoteResponseV2?.quote?.dest?.asset;\n\n const chainId = srcAsset?.assetId\n ? parseCaipAssetType(srcAsset.assetId)?.chainId\n : undefined;\n const nativeAsset = chainId\n ? toBridgeAssetV2(getNativeAssetForChainId(chainId))\n : undefined;\n const txFeeAsset = quoteResponseV2?.quote?.feeData?.txFee?.[0]?.asset;\n\n const priceImpactToUse = {\n usd: priceImpact?.usd ?? cost?.usd,\n valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,\n };\n const networkFeeToUse = gasFee?.total ?? totalNetworkFee;\n\n const toAmountAndAsset = (\n asset?: DeepPartial<BridgeAssetV2>,\n metadata?: Partial<TokenAmountValues>,\n extraFields?: DeepPartial<AmountsAndAsset>,\n ): DeepPartial<AmountsAndAsset> => {\n return {\n amount: calcAtomicTokenAmount(metadata?.amount, asset?.decimals),\n normalizedAmount: metadata?.amount,\n valueInCurrency: metadata?.valueInCurrency,\n usd: metadata?.usd,\n ...extraFields,\n };\n };\n\n return {\n ...rest,\n quote: {\n src: toAmountAndAsset(srcAsset, sentAmount),\n dest: {\n ...toAmountAndAsset(destAsset, toTokenAmount),\n minAmount: calcAtomicTokenAmount(\n minToTokenAmount?.amount,\n destAsset?.decimals,\n ),\n minAmountNormalized: minToTokenAmount?.amount,\n minAmountUsd: minToTokenAmount?.usd,\n minAmountValueInCurrency: minToTokenAmount?.valueInCurrency,\n },\n feeData: {\n network: [\n toAmountAndAsset(nativeAsset, networkFeeToUse, {\n asset: nativeAsset,\n }),\n ],\n ...includeIfTruthy(relayerFee, {\n relayer: [\n toAmountAndAsset(nativeAsset, relayerFee, { asset: nativeAsset }),\n ],\n }),\n ...includeIfTruthy(includedTxFees, {\n txFee: [\n toAmountAndAsset(txFeeAsset, includedTxFees, { asset: txFeeAsset }),\n ],\n }),\n },\n priceData: {\n ...includeIfTruthy(priceImpactToUse, {\n priceImpact: priceImpactToUse,\n }),\n ...includeIfTruthy(adjustedReturn, {\n adjustedReturn,\n }),\n swapRate,\n },\n },\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-quote-metadata-v2.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v2.d.cts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAIxE,OAAO,KAAK,EAAE,aAAa,EAAqB,oBAAmB;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,kBACb,aAAa,oBACV,YAAY,aAAa,CAAC,KAC3C,YAAY,aAAa,CAyF3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-quote-metadata-v2.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v2.d.mts","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAuB;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,4CAA2C;AAIxE,OAAO,KAAK,EAAE,aAAa,EAAqB,oBAAmB;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,kBACb,aAAa,oBACV,YAAY,aAAa,CAAC,KAC3C,YAAY,aAAa,CAyF3B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { parseCaipAssetType } from "@metamask/utils";
|
|
|
2
2
|
import { toBridgeAssetV2 } from "../../coercers/quote-response-v1-to-v2.mjs";
|
|
3
3
|
import { getNativeAssetForChainId } from "../bridge.mjs";
|
|
4
4
|
import { calcAtomicTokenAmount } from "../number-formatters.mjs";
|
|
5
|
+
import { includeIfTruthy } from "./include-if-truthy.mjs";
|
|
5
6
|
/**
|
|
6
7
|
* Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata
|
|
7
8
|
*
|
|
@@ -25,20 +26,21 @@ export const toQuoteMetadataV2 = (quoteMetadata, quoteResponseV2) => {
|
|
|
25
26
|
valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,
|
|
26
27
|
};
|
|
27
28
|
const networkFeeToUse = gasFee?.total ?? totalNetworkFee;
|
|
29
|
+
const toAmountAndAsset = (asset, metadata, extraFields) => {
|
|
30
|
+
return {
|
|
31
|
+
amount: calcAtomicTokenAmount(metadata?.amount, asset?.decimals),
|
|
32
|
+
normalizedAmount: metadata?.amount,
|
|
33
|
+
valueInCurrency: metadata?.valueInCurrency,
|
|
34
|
+
usd: metadata?.usd,
|
|
35
|
+
...extraFields,
|
|
36
|
+
};
|
|
37
|
+
};
|
|
28
38
|
return {
|
|
29
39
|
...rest,
|
|
30
40
|
quote: {
|
|
31
|
-
src:
|
|
32
|
-
amount: calcAtomicTokenAmount(sentAmount?.amount, srcAsset?.decimals),
|
|
33
|
-
normalizedAmount: sentAmount?.amount,
|
|
34
|
-
valueInCurrency: sentAmount?.valueInCurrency,
|
|
35
|
-
usd: sentAmount?.usd,
|
|
36
|
-
},
|
|
41
|
+
src: toAmountAndAsset(srcAsset, sentAmount),
|
|
37
42
|
dest: {
|
|
38
|
-
|
|
39
|
-
normalizedAmount: toTokenAmount?.amount,
|
|
40
|
-
valueInCurrency: toTokenAmount?.valueInCurrency,
|
|
41
|
-
usd: toTokenAmount?.usd,
|
|
43
|
+
...toAmountAndAsset(destAsset, toTokenAmount),
|
|
42
44
|
minAmount: calcAtomicTokenAmount(minToTokenAmount?.amount, destAsset?.decimals),
|
|
43
45
|
minAmountNormalized: minToTokenAmount?.amount,
|
|
44
46
|
minAmountUsd: minToTokenAmount?.usd,
|
|
@@ -46,50 +48,27 @@ export const toQuoteMetadataV2 = (quoteMetadata, quoteResponseV2) => {
|
|
|
46
48
|
},
|
|
47
49
|
feeData: {
|
|
48
50
|
network: [
|
|
49
|
-
{
|
|
50
|
-
amount: calcAtomicTokenAmount(networkFeeToUse?.amount, nativeAsset?.decimals),
|
|
51
|
-
normalizedAmount: networkFeeToUse?.amount,
|
|
52
|
-
valueInCurrency: networkFeeToUse?.valueInCurrency,
|
|
53
|
-
usd: networkFeeToUse?.usd,
|
|
51
|
+
toAmountAndAsset(nativeAsset, networkFeeToUse, {
|
|
54
52
|
asset: nativeAsset,
|
|
55
|
-
},
|
|
53
|
+
}),
|
|
56
54
|
],
|
|
57
|
-
...(relayerFee
|
|
58
|
-
Object.values(relayerFee).some(Boolean) && {
|
|
55
|
+
...includeIfTruthy(relayerFee, {
|
|
59
56
|
relayer: [
|
|
60
|
-
{
|
|
61
|
-
amount: calcAtomicTokenAmount(relayerFee?.amount, nativeAsset?.decimals),
|
|
62
|
-
normalizedAmount: relayerFee.amount,
|
|
63
|
-
valueInCurrency: relayerFee.valueInCurrency,
|
|
64
|
-
usd: relayerFee.usd,
|
|
65
|
-
asset: nativeAsset,
|
|
66
|
-
},
|
|
57
|
+
toAmountAndAsset(nativeAsset, relayerFee, { asset: nativeAsset }),
|
|
67
58
|
],
|
|
68
59
|
}),
|
|
69
|
-
...(includedTxFees
|
|
70
|
-
Object.values(includedTxFees).some(Boolean) && {
|
|
60
|
+
...includeIfTruthy(includedTxFees, {
|
|
71
61
|
txFee: [
|
|
72
|
-
{
|
|
73
|
-
amount: calcAtomicTokenAmount(includedTxFees?.amount, txFeeAsset?.decimals),
|
|
74
|
-
normalizedAmount: includedTxFees?.amount,
|
|
75
|
-
valueInCurrency: includedTxFees?.valueInCurrency,
|
|
76
|
-
usd: includedTxFees?.usd,
|
|
77
|
-
asset: txFeeAsset,
|
|
78
|
-
},
|
|
62
|
+
toAmountAndAsset(txFeeAsset, includedTxFees, { asset: txFeeAsset }),
|
|
79
63
|
],
|
|
80
64
|
}),
|
|
81
65
|
},
|
|
82
66
|
priceData: {
|
|
83
|
-
...(priceImpactToUse
|
|
84
|
-
Object.values(priceImpactToUse).some(Boolean) && {
|
|
67
|
+
...includeIfTruthy(priceImpactToUse, {
|
|
85
68
|
priceImpact: priceImpactToUse,
|
|
86
69
|
}),
|
|
87
|
-
...(adjustedReturn
|
|
88
|
-
|
|
89
|
-
adjustedReturn: {
|
|
90
|
-
valueInCurrency: adjustedReturn?.valueInCurrency,
|
|
91
|
-
usd: adjustedReturn?.usd,
|
|
92
|
-
},
|
|
70
|
+
...includeIfTruthy(adjustedReturn, {
|
|
71
|
+
adjustedReturn,
|
|
93
72
|
}),
|
|
94
73
|
swapRate,
|
|
95
74
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-quote-metadata-v2.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AAErD,OAAO,EAAE,eAAe,EAAE,mDAAkD;
|
|
1
|
+
{"version":3,"file":"to-quote-metadata-v2.mjs","sourceRoot":"","sources":["../../../src/utils/quote-metadata/to-quote-metadata-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseCaipAssetType } from '@metamask/utils';\n\nimport { toBridgeAssetV2 } from '../../coercers/quote-response-v1-to-v2.js';\nimport type { DeepPartial } from '../../types.js';\nimport type { AmountsAndAsset } from '../../validators/amount-and-asset.js';\nimport type { BridgeAssetV2 } from '../../validators/bridge-asset.js';\nimport type { QuoteResponse } from '../../validators/quote-response.js';\nimport { getNativeAssetForChainId } from '../bridge.js';\nimport { calcAtomicTokenAmount } from '../number-formatters.js';\nimport { includeIfTruthy } from './include-if-truthy.js';\nimport type { QuoteMetadata, TokenAmountValues } from './types.js';\n\n/**\n * Converts a {@link QuoteMetadata} to a partial {@link QuoteResponse} containing only metadata\n *\n * @param quoteMetadata - The {@link QuoteMetadata} to convert\n * @param quoteResponseV2 - The {@link QuoteResponse} to use for token data\n * @returns The {@link DeepPartial<QuoteResponse>}\n */\nexport const toQuoteMetadataV2 = (\n quoteMetadata: QuoteMetadata,\n quoteResponseV2?: DeepPartial<QuoteResponse>,\n): DeepPartial<QuoteResponse> => {\n const {\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate,\n totalNetworkFee,\n gasFee,\n adjustedReturn,\n cost,\n includedTxFees,\n relayerFee,\n priceImpact,\n ...rest\n } = quoteMetadata;\n\n const srcAsset = quoteResponseV2?.quote?.src?.asset;\n const destAsset = quoteResponseV2?.quote?.dest?.asset;\n\n const chainId = srcAsset?.assetId\n ? parseCaipAssetType(srcAsset.assetId)?.chainId\n : undefined;\n const nativeAsset = chainId\n ? toBridgeAssetV2(getNativeAssetForChainId(chainId))\n : undefined;\n const txFeeAsset = quoteResponseV2?.quote?.feeData?.txFee?.[0]?.asset;\n\n const priceImpactToUse = {\n usd: priceImpact?.usd ?? cost?.usd,\n valueInCurrency: priceImpact?.valueInCurrency ?? cost?.valueInCurrency,\n };\n const networkFeeToUse = gasFee?.total ?? totalNetworkFee;\n\n const toAmountAndAsset = (\n asset?: DeepPartial<BridgeAssetV2>,\n metadata?: Partial<TokenAmountValues>,\n extraFields?: DeepPartial<AmountsAndAsset>,\n ): DeepPartial<AmountsAndAsset> => {\n return {\n amount: calcAtomicTokenAmount(metadata?.amount, asset?.decimals),\n normalizedAmount: metadata?.amount,\n valueInCurrency: metadata?.valueInCurrency,\n usd: metadata?.usd,\n ...extraFields,\n };\n };\n\n return {\n ...rest,\n quote: {\n src: toAmountAndAsset(srcAsset, sentAmount),\n dest: {\n ...toAmountAndAsset(destAsset, toTokenAmount),\n minAmount: calcAtomicTokenAmount(\n minToTokenAmount?.amount,\n destAsset?.decimals,\n ),\n minAmountNormalized: minToTokenAmount?.amount,\n minAmountUsd: minToTokenAmount?.usd,\n minAmountValueInCurrency: minToTokenAmount?.valueInCurrency,\n },\n feeData: {\n network: [\n toAmountAndAsset(nativeAsset, networkFeeToUse, {\n asset: nativeAsset,\n }),\n ],\n ...includeIfTruthy(relayerFee, {\n relayer: [\n toAmountAndAsset(nativeAsset, relayerFee, { asset: nativeAsset }),\n ],\n }),\n ...includeIfTruthy(includedTxFees, {\n txFee: [\n toAmountAndAsset(txFeeAsset, includedTxFees, { asset: txFeeAsset }),\n ],\n }),\n },\n priceData: {\n ...includeIfTruthy(priceImpactToUse, {\n priceImpact: priceImpactToUse,\n }),\n ...includeIfTruthy(adjustedReturn, {\n adjustedReturn,\n }),\n swapRate,\n },\n },\n };\n};\n"]}
|