@metamask/bridge-status-controller 69.0.0 → 70.0.1
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 +22 -1
- package/dist/bridge-status-controller.cjs +115 -354
- package/dist/bridge-status-controller.cjs.map +1 -1
- package/dist/bridge-status-controller.d.cts +3 -5
- package/dist/bridge-status-controller.d.cts.map +1 -1
- package/dist/bridge-status-controller.d.mts +3 -5
- package/dist/bridge-status-controller.d.mts.map +1 -1
- package/dist/bridge-status-controller.intent.cjs +12 -25
- package/dist/bridge-status-controller.intent.cjs.map +1 -1
- package/dist/bridge-status-controller.intent.d.cts +3 -14
- package/dist/bridge-status-controller.intent.d.cts.map +1 -1
- package/dist/bridge-status-controller.intent.d.mts +3 -14
- package/dist/bridge-status-controller.intent.d.mts.map +1 -1
- package/dist/bridge-status-controller.intent.mjs +12 -25
- package/dist/bridge-status-controller.intent.mjs.map +1 -1
- package/dist/bridge-status-controller.mjs +118 -357
- package/dist/bridge-status-controller.mjs.map +1 -1
- package/dist/index.cjs +1 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +0 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +11 -5
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +11 -5
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/accounts.cjs +8 -0
- package/dist/utils/accounts.cjs.map +1 -0
- package/dist/utils/accounts.d.cts +36 -0
- package/dist/utils/accounts.d.cts.map +1 -0
- package/dist/utils/accounts.d.mts +36 -0
- package/dist/utils/accounts.d.mts.map +1 -0
- package/dist/utils/accounts.mjs +4 -0
- package/dist/utils/accounts.mjs.map +1 -0
- package/dist/utils/authentication.cjs +15 -0
- package/dist/utils/authentication.cjs.map +1 -0
- package/dist/utils/authentication.d.cts +3 -0
- package/dist/utils/authentication.d.cts.map +1 -0
- package/dist/utils/authentication.d.mts +3 -0
- package/dist/utils/authentication.d.mts.map +1 -0
- package/dist/utils/authentication.mjs +11 -0
- package/dist/utils/authentication.mjs.map +1 -0
- package/dist/utils/bridge-status.cjs +17 -1
- package/dist/utils/bridge-status.cjs.map +1 -1
- package/dist/utils/bridge-status.d.cts +8 -2
- package/dist/utils/bridge-status.d.cts.map +1 -1
- package/dist/utils/bridge-status.d.mts +8 -2
- package/dist/utils/bridge-status.d.mts.map +1 -1
- package/dist/utils/bridge-status.mjs +15 -0
- package/dist/utils/bridge-status.mjs.map +1 -1
- package/dist/utils/bridge.cjs +16 -0
- package/dist/utils/bridge.cjs.map +1 -0
- package/dist/utils/bridge.d.cts +10 -0
- package/dist/utils/bridge.d.cts.map +1 -0
- package/dist/utils/bridge.d.mts +10 -0
- package/dist/utils/bridge.d.mts.map +1 -0
- package/dist/utils/bridge.mjs +11 -0
- package/dist/utils/bridge.mjs.map +1 -0
- package/dist/utils/gas.cjs +1 -61
- package/dist/utils/gas.cjs.map +1 -1
- package/dist/utils/gas.d.cts +3 -26
- package/dist/utils/gas.d.cts.map +1 -1
- package/dist/utils/gas.d.mts +3 -26
- package/dist/utils/gas.d.mts.map +1 -1
- package/dist/utils/gas.mjs +0 -58
- package/dist/utils/gas.mjs.map +1 -1
- package/dist/utils/history.cjs +98 -0
- package/dist/utils/history.cjs.map +1 -0
- package/dist/utils/history.d.cts +22 -0
- package/dist/utils/history.d.cts.map +1 -0
- package/dist/utils/history.d.mts +22 -0
- package/dist/utils/history.d.mts.map +1 -0
- package/dist/utils/history.mjs +91 -0
- package/dist/utils/history.mjs.map +1 -0
- package/dist/utils/intent-api.cjs +41 -26
- package/dist/utils/intent-api.cjs.map +1 -1
- package/dist/utils/intent-api.d.cts +16 -3
- package/dist/utils/intent-api.d.cts.map +1 -1
- package/dist/utils/intent-api.d.mts +16 -3
- package/dist/utils/intent-api.d.mts.map +1 -1
- package/dist/utils/intent-api.mjs +38 -25
- package/dist/utils/intent-api.mjs.map +1 -1
- package/dist/utils/keyring.cjs +12 -0
- package/dist/utils/keyring.cjs.map +1 -0
- package/dist/utils/keyring.d.cts +8 -0
- package/dist/utils/keyring.d.cts.map +1 -0
- package/dist/utils/keyring.d.mts +8 -0
- package/dist/utils/keyring.d.mts.map +1 -0
- package/dist/utils/keyring.mjs +8 -0
- package/dist/utils/keyring.mjs.map +1 -0
- package/dist/utils/network.cjs +17 -0
- package/dist/utils/network.cjs.map +1 -0
- package/dist/utils/network.d.cts +5 -0
- package/dist/utils/network.d.cts.map +1 -0
- package/dist/utils/network.d.mts +5 -0
- package/dist/utils/network.d.mts.map +1 -0
- package/dist/utils/network.mjs +12 -0
- package/dist/utils/network.mjs.map +1 -0
- package/dist/utils/snaps.cjs +146 -1
- package/dist/utils/snaps.cjs.map +1 -1
- package/dist/utils/snaps.d.cts +48 -0
- package/dist/utils/snaps.d.cts.map +1 -1
- package/dist/utils/snaps.d.mts +48 -0
- package/dist/utils/snaps.d.mts.map +1 -1
- package/dist/utils/snaps.mjs +141 -0
- package/dist/utils/snaps.mjs.map +1 -1
- package/dist/utils/trace.cjs +31 -0
- package/dist/utils/trace.cjs.map +1 -0
- package/dist/utils/trace.d.cts +17 -0
- package/dist/utils/trace.d.cts.map +1 -0
- package/dist/utils/trace.d.mts +17 -0
- package/dist/utils/trace.d.mts.map +1 -0
- package/dist/utils/trace.mjs +26 -0
- package/dist/utils/trace.mjs.map +1 -0
- package/dist/utils/transaction.cjs +239 -184
- package/dist/utils/transaction.cjs.map +1 -1
- package/dist/utils/transaction.d.cts +85 -236
- package/dist/utils/transaction.d.cts.map +1 -1
- package/dist/utils/transaction.d.mts +85 -236
- package/dist/utils/transaction.d.mts.map +1 -1
- package/dist/utils/transaction.mjs +226 -176
- package/dist/utils/transaction.mjs.map +1 -1
- package/dist/utils/validators.d.cts +2 -2
- package/dist/utils/validators.d.mts +2 -2
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-status.mjs","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oCAAoC;AAE/D,OAAO,EAAE,WAAW,EAAE,8BAA8B;AAEpD,OAAO,EAAE,4BAA4B,EAAE,yBAAqB;AAC5D,OAAO,EAAE,mBAAmB,EAAE,yBAAqB;
|
|
1
|
+
{"version":3,"file":"bridge-status.mjs","sourceRoot":"","sources":["../../src/utils/bridge-status.ts"],"names":[],"mappings":"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","sourcesContent":["import { getClientHeaders } from '@metamask/bridge-controller';\nimport type { Quote, QuoteResponse } from '@metamask/bridge-controller';\nimport { StructError } from '@metamask/superstruct';\n\nimport { validateBridgeStatusResponse } from './validators';\nimport { REFRESH_INTERVAL_MS } from '../constants';\nimport type {\n StatusResponse,\n StatusRequestWithSrcTxHash,\n StatusRequestDto,\n FetchFunction,\n BridgeHistoryItem,\n StatusRequest,\n} from '../types';\n\nexport const getBridgeStatusUrl = (bridgeApiBaseUrl: string): string =>\n `${bridgeApiBaseUrl}/getTxStatus`;\n\nexport const getStatusRequestDto = (\n statusRequest: StatusRequestWithSrcTxHash,\n): StatusRequestDto => {\n const { quote, ...statusRequestNoQuote } = statusRequest;\n\n const statusRequestNoQuoteFormatted = Object.fromEntries(\n Object.entries(statusRequestNoQuote).map(([key, value]) => [\n key,\n value.toString(),\n ]),\n ) as unknown as Omit<StatusRequestDto, 'requestId'>;\n\n const requestId: { requestId: string } | Record<string, never> =\n quote?.requestId ? { requestId: quote.requestId } : {};\n\n return {\n ...statusRequestNoQuoteFormatted,\n ...requestId,\n };\n};\n\nexport const fetchBridgeTxStatus = async (\n statusRequest: StatusRequestWithSrcTxHash,\n clientId: string,\n jwt: string | undefined,\n fetchFn: FetchFunction,\n bridgeApiBaseUrl: string,\n): Promise<{ status: StatusResponse; validationFailures: string[] }> => {\n const statusRequestDto = getStatusRequestDto(statusRequest);\n const params = new URLSearchParams(statusRequestDto);\n\n // Fetch\n const url = `${getBridgeStatusUrl(bridgeApiBaseUrl)}?${params.toString()}`;\n\n const rawTxStatus: unknown = await fetchFn(url, {\n headers: getClientHeaders({ clientId, jwt }),\n });\n\n const validationFailures: string[] = [];\n\n try {\n validateBridgeStatusResponse(rawTxStatus);\n } catch (error) {\n // Build validation failure event properties\n if (error instanceof StructError) {\n error.failures().forEach(({ path }) => {\n const aggregatorId =\n (rawTxStatus as StatusResponse)?.bridge ??\n (statusRequest.bridge || statusRequest.bridgeId) ??\n ('unknown' as string);\n const pathString = path?.join('.') || 'unknown';\n validationFailures.push([aggregatorId, pathString].join('|'));\n });\n }\n }\n return {\n status: rawTxStatus as StatusResponse,\n validationFailures,\n };\n};\n\nexport const getStatusRequestWithSrcTxHash = (\n quote: Quote,\n srcTxHash: string,\n): StatusRequestWithSrcTxHash => {\n const { bridgeId, bridges, srcChainId, destChainId, refuel } = quote;\n return {\n bridgeId,\n srcTxHash,\n bridge: bridges[0],\n srcChainId,\n destChainId,\n quote,\n refuel: Boolean(refuel),\n };\n};\n\nexport const shouldSkipFetchDueToFetchFailures = (\n attempts?: BridgeHistoryItem['attempts'],\n): boolean => {\n // If there's an attempt, it means we've failed at least once,\n // so we need to check if we need to wait longer due to exponential backoff\n if (attempts) {\n // Calculate exponential backoff delay: base interval * 2^(attempts-1)\n const backoffDelay =\n REFRESH_INTERVAL_MS * Math.pow(2, attempts.counter - 1);\n const timeSinceLastAttempt = Date.now() - attempts.lastAttemptTime;\n\n if (timeSinceLastAttempt < backoffDelay) {\n // Not enough time has passed, skip this fetch\n return true;\n }\n }\n return false;\n};\n\n/**\n * @deprecated Use getStatusRequestWithSrcTxHash instead\n * @param quoteResponse - The quote response to get the status request parameters from\n * @returns The status request parameters\n */\nexport const getStatusRequestParams = (\n quoteResponse: QuoteResponse,\n): StatusRequest => {\n return {\n bridgeId: quoteResponse.quote.bridgeId,\n bridge: quoteResponse.quote.bridges[0],\n srcChainId: quoteResponse.quote.srcChainId,\n destChainId: quoteResponse.quote.destChainId,\n quote: quoteResponse.quote,\n refuel: Boolean(quoteResponse.quote.refuel),\n };\n};\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trackMetricsEvent = exports.stopPollingForQuotes = void 0;
|
|
4
|
+
const bridge_controller_1 = require("@metamask/bridge-controller");
|
|
5
|
+
const stopPollingForQuotes = (messenger, featureId, metricsContext) => {
|
|
6
|
+
messenger.call('BridgeController:stopPollingForQuotes', bridge_controller_1.AbortReason.TransactionSubmitted,
|
|
7
|
+
// If trade is submitted before all quotes are loaded, the QuotesReceived event is published
|
|
8
|
+
// If the trade has a featureId, it means it was submitted outside of the Unified Swap and Bridge experience, so no QuotesReceived event is published
|
|
9
|
+
featureId ? undefined : metricsContext);
|
|
10
|
+
};
|
|
11
|
+
exports.stopPollingForQuotes = stopPollingForQuotes;
|
|
12
|
+
const trackMetricsEvent = ({ messenger, eventName, properties, }) => {
|
|
13
|
+
messenger.call('BridgeController:trackUnifiedSwapBridgeEvent', eventName, properties);
|
|
14
|
+
};
|
|
15
|
+
exports.trackMetricsEvent = trackMetricsEvent;
|
|
16
|
+
//# sourceMappingURL=bridge.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.cjs","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":";;;AAAA,mEAIqC;AAK9B,MAAM,oBAAoB,GAAG,CAClC,SAA0C,EAC1C,SAAqB,EACrB,cAA0F,EACpF,EAAE;IACR,SAAS,CAAC,IAAI,CACZ,uCAAuC,EACvC,+BAAW,CAAC,oBAAoB;IAChC,4FAA4F;IAC5F,qJAAqJ;IACrJ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CACvC,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,oBAAoB,wBAY/B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,SAAS,EACT,UAAU,GAKX,EAAQ,EAAE;IACT,SAAS,CAAC,IAAI,CACZ,8CAA8C,EAC9C,SAAS,EACT,UAAU,CACX,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,iBAAiB,qBAc5B","sourcesContent":["import {\n AbortReason,\n FeatureId,\n UnifiedSwapBridgeEventName,\n} from '@metamask/bridge-controller';\nimport type { RequiredEventContextFromClient } from '@metamask/bridge-controller';\n\nimport { BridgeStatusControllerMessenger } from '../types';\n\nexport const stopPollingForQuotes = (\n messenger: BridgeStatusControllerMessenger,\n featureId?: FeatureId,\n metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n): void => {\n messenger.call(\n 'BridgeController:stopPollingForQuotes',\n AbortReason.TransactionSubmitted,\n // If trade is submitted before all quotes are loaded, the QuotesReceived event is published\n // If the trade has a featureId, it means it was submitted outside of the Unified Swap and Bridge experience, so no QuotesReceived event is published\n featureId ? undefined : metricsContext,\n );\n};\n\nexport const trackMetricsEvent = ({\n messenger,\n eventName,\n properties,\n}: {\n messenger: BridgeStatusControllerMessenger;\n eventName: UnifiedSwapBridgeEventName;\n properties: RequiredEventContextFromClient[UnifiedSwapBridgeEventName];\n}): void => {\n messenger.call(\n 'BridgeController:trackUnifiedSwapBridgeEvent',\n eventName,\n properties,\n );\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FeatureId, UnifiedSwapBridgeEventName } from "@metamask/bridge-controller";
|
|
2
|
+
import type { RequiredEventContextFromClient } from "@metamask/bridge-controller";
|
|
3
|
+
import { BridgeStatusControllerMessenger } from "../types.cjs";
|
|
4
|
+
export declare const stopPollingForQuotes: (messenger: BridgeStatusControllerMessenger, featureId?: FeatureId, metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived]) => void;
|
|
5
|
+
export declare const trackMetricsEvent: ({ messenger, eventName, properties, }: {
|
|
6
|
+
messenger: BridgeStatusControllerMessenger;
|
|
7
|
+
eventName: UnifiedSwapBridgeEventName;
|
|
8
|
+
properties: RequiredEventContextFromClient[UnifiedSwapBridgeEventName];
|
|
9
|
+
}) => void;
|
|
10
|
+
//# sourceMappingURL=bridge.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.cts","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,0BAA0B,EAC3B,oCAAoC;AACrC,OAAO,KAAK,EAAE,8BAA8B,EAAE,oCAAoC;AAElF,OAAO,EAAE,+BAA+B,EAAE,qBAAiB;AAE3D,eAAO,MAAM,oBAAoB,2DAEnB,SAAS,mBACJ,8BAA8B,CAAC,2BAA2B,cAAc,CAAC,KACzF,IAQF,CAAC;AAEF,eAAO,MAAM,iBAAiB;;eAMjB,0BAA0B;gBACzB,8BAA8B,CAAC,0BAA0B,CAAC;MACpE,IAMH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FeatureId, UnifiedSwapBridgeEventName } from "@metamask/bridge-controller";
|
|
2
|
+
import type { RequiredEventContextFromClient } from "@metamask/bridge-controller";
|
|
3
|
+
import { BridgeStatusControllerMessenger } from "../types.mjs";
|
|
4
|
+
export declare const stopPollingForQuotes: (messenger: BridgeStatusControllerMessenger, featureId?: FeatureId, metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived]) => void;
|
|
5
|
+
export declare const trackMetricsEvent: ({ messenger, eventName, properties, }: {
|
|
6
|
+
messenger: BridgeStatusControllerMessenger;
|
|
7
|
+
eventName: UnifiedSwapBridgeEventName;
|
|
8
|
+
properties: RequiredEventContextFromClient[UnifiedSwapBridgeEventName];
|
|
9
|
+
}) => void;
|
|
10
|
+
//# sourceMappingURL=bridge.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.mts","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,0BAA0B,EAC3B,oCAAoC;AACrC,OAAO,KAAK,EAAE,8BAA8B,EAAE,oCAAoC;AAElF,OAAO,EAAE,+BAA+B,EAAE,qBAAiB;AAE3D,eAAO,MAAM,oBAAoB,2DAEnB,SAAS,mBACJ,8BAA8B,CAAC,2BAA2B,cAAc,CAAC,KACzF,IAQF,CAAC;AAEF,eAAO,MAAM,iBAAiB;;eAMjB,0BAA0B;gBACzB,8BAA8B,CAAC,0BAA0B,CAAC;MACpE,IAMH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AbortReason, FeatureId, UnifiedSwapBridgeEventName } from "@metamask/bridge-controller";
|
|
2
|
+
export const stopPollingForQuotes = (messenger, featureId, metricsContext) => {
|
|
3
|
+
messenger.call('BridgeController:stopPollingForQuotes', AbortReason.TransactionSubmitted,
|
|
4
|
+
// If trade is submitted before all quotes are loaded, the QuotesReceived event is published
|
|
5
|
+
// If the trade has a featureId, it means it was submitted outside of the Unified Swap and Bridge experience, so no QuotesReceived event is published
|
|
6
|
+
featureId ? undefined : metricsContext);
|
|
7
|
+
};
|
|
8
|
+
export const trackMetricsEvent = ({ messenger, eventName, properties, }) => {
|
|
9
|
+
messenger.call('BridgeController:trackUnifiedSwapBridgeEvent', eventName, properties);
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=bridge.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.mjs","sourceRoot":"","sources":["../../src/utils/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,SAAS,EACT,0BAA0B,EAC3B,oCAAoC;AAKrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,SAA0C,EAC1C,SAAqB,EACrB,cAA0F,EACpF,EAAE;IACR,SAAS,CAAC,IAAI,CACZ,uCAAuC,EACvC,WAAW,CAAC,oBAAoB;IAChC,4FAA4F;IAC5F,qJAAqJ;IACrJ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CACvC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,SAAS,EACT,UAAU,GAKX,EAAQ,EAAE;IACT,SAAS,CAAC,IAAI,CACZ,8CAA8C,EAC9C,SAAS,EACT,UAAU,CACX,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n AbortReason,\n FeatureId,\n UnifiedSwapBridgeEventName,\n} from '@metamask/bridge-controller';\nimport type { RequiredEventContextFromClient } from '@metamask/bridge-controller';\n\nimport { BridgeStatusControllerMessenger } from '../types';\n\nexport const stopPollingForQuotes = (\n messenger: BridgeStatusControllerMessenger,\n featureId?: FeatureId,\n metricsContext?: RequiredEventContextFromClient[UnifiedSwapBridgeEventName.QuotesReceived],\n): void => {\n messenger.call(\n 'BridgeController:stopPollingForQuotes',\n AbortReason.TransactionSubmitted,\n // If trade is submitted before all quotes are loaded, the QuotesReceived event is published\n // If the trade has a featureId, it means it was submitted outside of the Unified Swap and Bridge experience, so no QuotesReceived event is published\n featureId ? undefined : metricsContext,\n );\n};\n\nexport const trackMetricsEvent = ({\n messenger,\n eventName,\n properties,\n}: {\n messenger: BridgeStatusControllerMessenger;\n eventName: UnifiedSwapBridgeEventName;\n properties: RequiredEventContextFromClient[UnifiedSwapBridgeEventName];\n}): void => {\n messenger.call(\n 'BridgeController:trackUnifiedSwapBridgeEvent',\n eventName,\n properties,\n );\n};\n"]}
|
package/dist/utils/gas.cjs
CHANGED
|
@@ -1,67 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.calcActualGasUsed =
|
|
4
|
-
const bridge_controller_1 = require("@metamask/bridge-controller");
|
|
5
|
-
const controller_utils_1 = require("@metamask/controller-utils");
|
|
3
|
+
exports.calcActualGasUsed = void 0;
|
|
6
4
|
const bignumber_js_1 = require("bignumber.js");
|
|
7
|
-
const getTransaction1559GasFeeEstimates = (txGasFeeEstimates, estimatedBaseFee) => {
|
|
8
|
-
const { maxFeePerGas, maxPriorityFeePerGas } = txGasFeeEstimates?.[bridge_controller_1.BRIDGE_PREFERRED_GAS_ESTIMATE] ?? {};
|
|
9
|
-
const baseAndPriorityFeePerGas = maxPriorityFeePerGas
|
|
10
|
-
? new bignumber_js_1.BigNumber(estimatedBaseFee, 10)
|
|
11
|
-
.times(10 ** 9)
|
|
12
|
-
.plus(maxPriorityFeePerGas, 16)
|
|
13
|
-
: undefined;
|
|
14
|
-
return {
|
|
15
|
-
baseAndPriorityFeePerGas,
|
|
16
|
-
maxFeePerGas,
|
|
17
|
-
maxPriorityFeePerGas,
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Get the gas fee estimates for a transaction
|
|
22
|
-
*
|
|
23
|
-
* @param params - The parameters for the gas fee estimates
|
|
24
|
-
* @param params.txGasFeeEstimates - The gas fee estimates for the transaction (TransactionController)
|
|
25
|
-
* @param params.networkGasFeeEstimates - The gas fee estimates for the network (GasFeeController)
|
|
26
|
-
* @returns The gas fee estimates for the transaction
|
|
27
|
-
*/
|
|
28
|
-
const getTxGasEstimates = ({ txGasFeeEstimates, networkGasFeeEstimates, }) => {
|
|
29
|
-
const { estimatedBaseFee = '0' } = networkGasFeeEstimates;
|
|
30
|
-
return getTransaction1559GasFeeEstimates(txGasFeeEstimates, estimatedBaseFee);
|
|
31
|
-
};
|
|
32
|
-
exports.getTxGasEstimates = getTxGasEstimates;
|
|
33
|
-
const calculateGasFees = async (skipGasFields, messenger, estimateGasFeeFn, { chainId: _, gasLimit, ...trade }, networkClientId, chainId, txFee) => {
|
|
34
|
-
if (skipGasFields) {
|
|
35
|
-
return {};
|
|
36
|
-
}
|
|
37
|
-
if (txFee) {
|
|
38
|
-
return { ...txFee, gas: gasLimit?.toString() };
|
|
39
|
-
}
|
|
40
|
-
const transactionParams = {
|
|
41
|
-
...trade,
|
|
42
|
-
gas: gasLimit?.toString(),
|
|
43
|
-
data: trade.data,
|
|
44
|
-
to: trade.to,
|
|
45
|
-
value: trade.value,
|
|
46
|
-
};
|
|
47
|
-
const { gasFeeEstimates } = messenger.call('GasFeeController:getState');
|
|
48
|
-
const { estimates: txGasFeeEstimates } = await estimateGasFeeFn({
|
|
49
|
-
transactionParams,
|
|
50
|
-
chainId,
|
|
51
|
-
networkClientId,
|
|
52
|
-
});
|
|
53
|
-
const { maxFeePerGas, maxPriorityFeePerGas } = (0, exports.getTxGasEstimates)({
|
|
54
|
-
networkGasFeeEstimates: gasFeeEstimates,
|
|
55
|
-
txGasFeeEstimates,
|
|
56
|
-
});
|
|
57
|
-
const maxGasLimit = (0, controller_utils_1.toHex)(transactionParams.gas ?? 0);
|
|
58
|
-
return {
|
|
59
|
-
maxFeePerGas,
|
|
60
|
-
maxPriorityFeePerGas,
|
|
61
|
-
gas: maxGasLimit,
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
exports.calculateGasFees = calculateGasFees;
|
|
65
5
|
const calcGasInHexWei = (gasLimit, gasPrice) => {
|
|
66
6
|
return gasLimit && gasPrice
|
|
67
7
|
? new bignumber_js_1.BigNumber(gasLimit, 16).times(new bignumber_js_1.BigNumber(gasPrice, 16))
|
package/dist/utils/gas.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.cjs","sourceRoot":"","sources":["../../src/utils/gas.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"gas.cjs","sourceRoot":"","sources":["../../src/utils/gas.ts"],"names":[],"mappings":";;;AAGA,+CAAyC;AAIzC,MAAM,eAAe,GAAG,CAAC,QAAiB,EAAE,QAAiB,EAAE,EAAE;IAC/D,OAAO,QAAQ,IAAI,QAAQ;QACzB,CAAC,CAAC,IAAI,wBAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,wBAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACI,MAAM,iBAAiB,GAAG,CAC/B,EAAE,WAAW,EAAqB,EAClC,SAA8B,EAC9B,iBAAsC,EACa,EAAE;IACrD,MAAM,eAAe,GACnB,WAAW,EAAE,cAAc,IAAI,WAAW,EAAE,eAAe;QACzD,CAAC,CAAC,IAAI,wBAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,GAAG,CAC5C,WAAW,CAAC,eAAe,CAC5B;QACH,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,iBAAiB,GAAG,eAAe,CACvC,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,iBAAiB,CAC7B,EAAE,IAAI,CACL,eAAe,CACb,iBAAiB,EAAE,OAAO,EAC1B,iBAAiB,EAAE,iBAAiB,CACrC,IAAI,CAAC,CACP,CAAC;IAEF,MAAM,iBAAiB,GAAG,iBAAiB;QACzC,EAAE,GAAG,CAAC,IAAI,wBAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,iBAAiB,IAAI,iBAAiB;QAC3C,CAAC,CAAC;YACE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,GAAG,EACD,eAAe,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI;SACxE;QACH,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC;AAjCW,QAAA,iBAAiB,qBAiC5B","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { TokenAmountValues } from '@metamask/bridge-controller';\nimport type { TransactionReceipt } from '@metamask/transaction-controller';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { BridgeHistoryItem } from '../types';\n\nconst calcGasInHexWei = (gasLimit?: string, gasPrice?: string) => {\n return gasLimit && gasPrice\n ? new BigNumber(gasLimit, 16).times(new BigNumber(gasPrice, 16))\n : null;\n};\n\n/**\n * Calculate the effective gas used for a transaction and its approval tx\n *\n * @param bridgeHistoryItem - The bridge history item\n * @param bridgeHistoryItem.pricingData - pricing data from the submitted quote\n * @param txReceipt - tx receipt from the txMeta\n * @param approvalTxReceipt - tx receipt from the approvalTxMeta\n * @returns The actual gas used for the transaction in Wei and its value in USD\n */\nexport const calcActualGasUsed = (\n { pricingData }: BridgeHistoryItem,\n txReceipt?: TransactionReceipt,\n approvalTxReceipt?: TransactionReceipt,\n): Omit<TokenAmountValues, 'valueInCurrency'> | null => {\n const usdExchangeRate =\n pricingData?.quotedGasInUsd && pricingData?.quotedGasAmount\n ? new BigNumber(pricingData?.quotedGasInUsd).div(\n pricingData.quotedGasAmount,\n )\n : null;\n\n const actualGasInHexWei = calcGasInHexWei(\n txReceipt?.gasUsed,\n txReceipt?.effectiveGasPrice,\n )?.plus(\n calcGasInHexWei(\n approvalTxReceipt?.gasUsed,\n approvalTxReceipt?.effectiveGasPrice,\n ) ?? 0,\n );\n\n const actualGasInDecEth = actualGasInHexWei\n ?.div(new BigNumber(10).pow(18))\n .toString(10);\n\n return actualGasInHexWei && actualGasInDecEth\n ? {\n amount: actualGasInHexWei.toString(10),\n usd:\n usdExchangeRate?.multipliedBy(actualGasInDecEth).toString(10) ?? null,\n }\n : null;\n};\n"]}
|
package/dist/utils/gas.d.cts
CHANGED
|
@@ -1,29 +1,6 @@
|
|
|
1
|
-
import type { TokenAmountValues
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type { Hex } from "@metamask/utils";
|
|
5
|
-
import { BigNumber } from "bignumber.js";
|
|
6
|
-
import type { BridgeHistoryItem, BridgeStatusControllerMessenger } from "../types.cjs";
|
|
7
|
-
/**
|
|
8
|
-
* Get the gas fee estimates for a transaction
|
|
9
|
-
*
|
|
10
|
-
* @param params - The parameters for the gas fee estimates
|
|
11
|
-
* @param params.txGasFeeEstimates - The gas fee estimates for the transaction (TransactionController)
|
|
12
|
-
* @param params.networkGasFeeEstimates - The gas fee estimates for the network (GasFeeController)
|
|
13
|
-
* @returns The gas fee estimates for the transaction
|
|
14
|
-
*/
|
|
15
|
-
export declare const getTxGasEstimates: ({ txGasFeeEstimates, networkGasFeeEstimates, }: {
|
|
16
|
-
txGasFeeEstimates: Awaited<ReturnType<TransactionController['estimateGasFee']>>['estimates'];
|
|
17
|
-
networkGasFeeEstimates: GasFeeState['gasFeeEstimates'];
|
|
18
|
-
}) => {
|
|
19
|
-
baseAndPriorityFeePerGas: BigNumber | undefined;
|
|
20
|
-
maxFeePerGas: `0x${string}`;
|
|
21
|
-
maxPriorityFeePerGas: `0x${string}`;
|
|
22
|
-
};
|
|
23
|
-
export declare const calculateGasFees: (skipGasFields: boolean, messenger: BridgeStatusControllerMessenger, estimateGasFeeFn: typeof TransactionController.prototype.estimateGasFee, { chainId: _, gasLimit, ...trade }: TxData, networkClientId: string, chainId: Hex, txFee?: {
|
|
24
|
-
maxFeePerGas: string;
|
|
25
|
-
maxPriorityFeePerGas: string;
|
|
26
|
-
}) => Promise<{}>;
|
|
1
|
+
import type { TokenAmountValues } from "@metamask/bridge-controller";
|
|
2
|
+
import type { TransactionReceipt } from "@metamask/transaction-controller";
|
|
3
|
+
import type { BridgeHistoryItem } from "../types.cjs";
|
|
27
4
|
/**
|
|
28
5
|
* Calculate the effective gas used for a transaction and its approval tx
|
|
29
6
|
*
|
package/dist/utils/gas.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.d.cts","sourceRoot":"","sources":["../../src/utils/gas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"gas.d.cts","sourceRoot":"","sources":["../../src/utils/gas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oCAAoC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,yCAAyC;AAG3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAQlD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,oBACX,iBAAiB,cACtB,kBAAkB,sBACV,kBAAkB,KACrC,KAAK,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,IA6B/C,CAAC"}
|
package/dist/utils/gas.d.mts
CHANGED
|
@@ -1,29 +1,6 @@
|
|
|
1
|
-
import type { TokenAmountValues
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type { Hex } from "@metamask/utils";
|
|
5
|
-
import { BigNumber } from "bignumber.js";
|
|
6
|
-
import type { BridgeHistoryItem, BridgeStatusControllerMessenger } from "../types.mjs";
|
|
7
|
-
/**
|
|
8
|
-
* Get the gas fee estimates for a transaction
|
|
9
|
-
*
|
|
10
|
-
* @param params - The parameters for the gas fee estimates
|
|
11
|
-
* @param params.txGasFeeEstimates - The gas fee estimates for the transaction (TransactionController)
|
|
12
|
-
* @param params.networkGasFeeEstimates - The gas fee estimates for the network (GasFeeController)
|
|
13
|
-
* @returns The gas fee estimates for the transaction
|
|
14
|
-
*/
|
|
15
|
-
export declare const getTxGasEstimates: ({ txGasFeeEstimates, networkGasFeeEstimates, }: {
|
|
16
|
-
txGasFeeEstimates: Awaited<ReturnType<TransactionController['estimateGasFee']>>['estimates'];
|
|
17
|
-
networkGasFeeEstimates: GasFeeState['gasFeeEstimates'];
|
|
18
|
-
}) => {
|
|
19
|
-
baseAndPriorityFeePerGas: BigNumber | undefined;
|
|
20
|
-
maxFeePerGas: `0x${string}`;
|
|
21
|
-
maxPriorityFeePerGas: `0x${string}`;
|
|
22
|
-
};
|
|
23
|
-
export declare const calculateGasFees: (skipGasFields: boolean, messenger: BridgeStatusControllerMessenger, estimateGasFeeFn: typeof TransactionController.prototype.estimateGasFee, { chainId: _, gasLimit, ...trade }: TxData, networkClientId: string, chainId: Hex, txFee?: {
|
|
24
|
-
maxFeePerGas: string;
|
|
25
|
-
maxPriorityFeePerGas: string;
|
|
26
|
-
}) => Promise<{}>;
|
|
1
|
+
import type { TokenAmountValues } from "@metamask/bridge-controller";
|
|
2
|
+
import type { TransactionReceipt } from "@metamask/transaction-controller";
|
|
3
|
+
import type { BridgeHistoryItem } from "../types.mjs";
|
|
27
4
|
/**
|
|
28
5
|
* Calculate the effective gas used for a transaction and its approval tx
|
|
29
6
|
*
|
package/dist/utils/gas.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.d.mts","sourceRoot":"","sources":["../../src/utils/gas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"gas.d.mts","sourceRoot":"","sources":["../../src/utils/gas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oCAAoC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,yCAAyC;AAG3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAiB;AAQlD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,oBACX,iBAAiB,cACtB,kBAAkB,sBACV,kBAAkB,KACrC,KAAK,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,IA6B/C,CAAC"}
|
package/dist/utils/gas.mjs
CHANGED
|
@@ -1,62 +1,4 @@
|
|
|
1
|
-
import { BRIDGE_PREFERRED_GAS_ESTIMATE } from "@metamask/bridge-controller";
|
|
2
|
-
import { toHex } from "@metamask/controller-utils";
|
|
3
1
|
import { BigNumber } from "bignumber.js";
|
|
4
|
-
const getTransaction1559GasFeeEstimates = (txGasFeeEstimates, estimatedBaseFee) => {
|
|
5
|
-
const { maxFeePerGas, maxPriorityFeePerGas } = txGasFeeEstimates?.[BRIDGE_PREFERRED_GAS_ESTIMATE] ?? {};
|
|
6
|
-
const baseAndPriorityFeePerGas = maxPriorityFeePerGas
|
|
7
|
-
? new BigNumber(estimatedBaseFee, 10)
|
|
8
|
-
.times(10 ** 9)
|
|
9
|
-
.plus(maxPriorityFeePerGas, 16)
|
|
10
|
-
: undefined;
|
|
11
|
-
return {
|
|
12
|
-
baseAndPriorityFeePerGas,
|
|
13
|
-
maxFeePerGas,
|
|
14
|
-
maxPriorityFeePerGas,
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Get the gas fee estimates for a transaction
|
|
19
|
-
*
|
|
20
|
-
* @param params - The parameters for the gas fee estimates
|
|
21
|
-
* @param params.txGasFeeEstimates - The gas fee estimates for the transaction (TransactionController)
|
|
22
|
-
* @param params.networkGasFeeEstimates - The gas fee estimates for the network (GasFeeController)
|
|
23
|
-
* @returns The gas fee estimates for the transaction
|
|
24
|
-
*/
|
|
25
|
-
export const getTxGasEstimates = ({ txGasFeeEstimates, networkGasFeeEstimates, }) => {
|
|
26
|
-
const { estimatedBaseFee = '0' } = networkGasFeeEstimates;
|
|
27
|
-
return getTransaction1559GasFeeEstimates(txGasFeeEstimates, estimatedBaseFee);
|
|
28
|
-
};
|
|
29
|
-
export const calculateGasFees = async (skipGasFields, messenger, estimateGasFeeFn, { chainId: _, gasLimit, ...trade }, networkClientId, chainId, txFee) => {
|
|
30
|
-
if (skipGasFields) {
|
|
31
|
-
return {};
|
|
32
|
-
}
|
|
33
|
-
if (txFee) {
|
|
34
|
-
return { ...txFee, gas: gasLimit?.toString() };
|
|
35
|
-
}
|
|
36
|
-
const transactionParams = {
|
|
37
|
-
...trade,
|
|
38
|
-
gas: gasLimit?.toString(),
|
|
39
|
-
data: trade.data,
|
|
40
|
-
to: trade.to,
|
|
41
|
-
value: trade.value,
|
|
42
|
-
};
|
|
43
|
-
const { gasFeeEstimates } = messenger.call('GasFeeController:getState');
|
|
44
|
-
const { estimates: txGasFeeEstimates } = await estimateGasFeeFn({
|
|
45
|
-
transactionParams,
|
|
46
|
-
chainId,
|
|
47
|
-
networkClientId,
|
|
48
|
-
});
|
|
49
|
-
const { maxFeePerGas, maxPriorityFeePerGas } = getTxGasEstimates({
|
|
50
|
-
networkGasFeeEstimates: gasFeeEstimates,
|
|
51
|
-
txGasFeeEstimates,
|
|
52
|
-
});
|
|
53
|
-
const maxGasLimit = toHex(transactionParams.gas ?? 0);
|
|
54
|
-
return {
|
|
55
|
-
maxFeePerGas,
|
|
56
|
-
maxPriorityFeePerGas,
|
|
57
|
-
gas: maxGasLimit,
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
2
|
const calcGasInHexWei = (gasLimit, gasPrice) => {
|
|
61
3
|
return gasLimit && gasPrice
|
|
62
4
|
? new BigNumber(gasLimit, 16).times(new BigNumber(gasPrice, 16))
|
package/dist/utils/gas.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.mjs","sourceRoot":"","sources":["../../src/utils/gas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gas.mjs","sourceRoot":"","sources":["../../src/utils/gas.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,qBAAqB;AAIzC,MAAM,eAAe,GAAG,CAAC,QAAiB,EAAE,QAAiB,EAAE,EAAE;IAC/D,OAAO,QAAQ,IAAI,QAAQ;QACzB,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,EAAE,WAAW,EAAqB,EAClC,SAA8B,EAC9B,iBAAsC,EACa,EAAE;IACrD,MAAM,eAAe,GACnB,WAAW,EAAE,cAAc,IAAI,WAAW,EAAE,eAAe;QACzD,CAAC,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,GAAG,CAC5C,WAAW,CAAC,eAAe,CAC5B;QACH,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,iBAAiB,GAAG,eAAe,CACvC,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,iBAAiB,CAC7B,EAAE,IAAI,CACL,eAAe,CACb,iBAAiB,EAAE,OAAO,EAC1B,iBAAiB,EAAE,iBAAiB,CACrC,IAAI,CAAC,CACP,CAAC;IAEF,MAAM,iBAAiB,GAAG,iBAAiB;QACzC,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,iBAAiB,IAAI,iBAAiB;QAC3C,CAAC,CAAC;YACE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,GAAG,EACD,eAAe,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI;SACxE;QACH,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { TokenAmountValues } from '@metamask/bridge-controller';\nimport type { TransactionReceipt } from '@metamask/transaction-controller';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { BridgeHistoryItem } from '../types';\n\nconst calcGasInHexWei = (gasLimit?: string, gasPrice?: string) => {\n return gasLimit && gasPrice\n ? new BigNumber(gasLimit, 16).times(new BigNumber(gasPrice, 16))\n : null;\n};\n\n/**\n * Calculate the effective gas used for a transaction and its approval tx\n *\n * @param bridgeHistoryItem - The bridge history item\n * @param bridgeHistoryItem.pricingData - pricing data from the submitted quote\n * @param txReceipt - tx receipt from the txMeta\n * @param approvalTxReceipt - tx receipt from the approvalTxMeta\n * @returns The actual gas used for the transaction in Wei and its value in USD\n */\nexport const calcActualGasUsed = (\n { pricingData }: BridgeHistoryItem,\n txReceipt?: TransactionReceipt,\n approvalTxReceipt?: TransactionReceipt,\n): Omit<TokenAmountValues, 'valueInCurrency'> | null => {\n const usdExchangeRate =\n pricingData?.quotedGasInUsd && pricingData?.quotedGasAmount\n ? new BigNumber(pricingData?.quotedGasInUsd).div(\n pricingData.quotedGasAmount,\n )\n : null;\n\n const actualGasInHexWei = calcGasInHexWei(\n txReceipt?.gasUsed,\n txReceipt?.effectiveGasPrice,\n )?.plus(\n calcGasInHexWei(\n approvalTxReceipt?.gasUsed,\n approvalTxReceipt?.effectiveGasPrice,\n ) ?? 0,\n );\n\n const actualGasInDecEth = actualGasInHexWei\n ?.div(new BigNumber(10).pow(18))\n .toString(10);\n\n return actualGasInHexWei && actualGasInDecEth\n ? {\n amount: actualGasInHexWei.toString(10),\n usd:\n usdExchangeRate?.multipliedBy(actualGasInDecEth).toString(10) ?? null,\n }\n : null;\n};\n"]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldPollHistoryItem = exports.getInitialHistoryItem = exports.getHistoryKey = exports.rekeyHistoryItemInState = void 0;
|
|
4
|
+
const bridge_controller_1 = require("@metamask/bridge-controller");
|
|
5
|
+
const rekeyHistoryItemInState = (state, actionId, txMeta) => {
|
|
6
|
+
const historyItem = state.txHistory[actionId];
|
|
7
|
+
if (!historyItem) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
state.txHistory[txMeta.id] = {
|
|
11
|
+
...historyItem,
|
|
12
|
+
txMetaId: txMeta.id,
|
|
13
|
+
originalTransactionId: historyItem.originalTransactionId ?? txMeta.id,
|
|
14
|
+
status: {
|
|
15
|
+
...historyItem.status,
|
|
16
|
+
srcChain: {
|
|
17
|
+
...historyItem.status.srcChain,
|
|
18
|
+
txHash: txMeta.hash ?? historyItem.status.srcChain?.txHash,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
delete state.txHistory[actionId];
|
|
23
|
+
return true;
|
|
24
|
+
};
|
|
25
|
+
exports.rekeyHistoryItemInState = rekeyHistoryItemInState;
|
|
26
|
+
/**
|
|
27
|
+
* Determines the key to use for storing a bridge history item.
|
|
28
|
+
* Uses actionId for pre-submission tracking, or bridgeTxMetaId for post-submission.
|
|
29
|
+
*
|
|
30
|
+
* @param actionId - The action ID used for pre-submission tracking
|
|
31
|
+
* @param bridgeTxMetaId - The transaction meta ID from bridgeTxMeta
|
|
32
|
+
* @param syntheticTransactionId - The transactionId of the intent's placeholder transaction
|
|
33
|
+
* @returns The key to use for the history item
|
|
34
|
+
* @throws Error if neither actionId nor bridgeTxMetaId is provided
|
|
35
|
+
*/
|
|
36
|
+
function getHistoryKey(actionId, bridgeTxMetaId, syntheticTransactionId) {
|
|
37
|
+
const historyKey = actionId ?? bridgeTxMetaId ?? syntheticTransactionId;
|
|
38
|
+
if (!historyKey) {
|
|
39
|
+
throw new Error('Cannot add tx to history: either actionId, bridgeTxMeta.id, or syntheticTransactionId must be provided');
|
|
40
|
+
}
|
|
41
|
+
return historyKey;
|
|
42
|
+
}
|
|
43
|
+
exports.getHistoryKey = getHistoryKey;
|
|
44
|
+
const getInitialHistoryItem = (args) => {
|
|
45
|
+
const { bridgeTxMeta, quoteResponse, startTime, slippagePercentage, initialDestAssetBalance, targetContractAddress, approvalTxId, isStxEnabled, location, abTests, activeAbTests, accountAddress: selectedAddress, originalTransactionId, actionId, } = args;
|
|
46
|
+
// Determine the key for this history item:
|
|
47
|
+
// - For pre-submission (non-batch EVM): use actionId
|
|
48
|
+
// - For post-submission or other cases: use bridgeTxMeta.id
|
|
49
|
+
const historyKey = getHistoryKey(actionId, bridgeTxMeta?.id, originalTransactionId);
|
|
50
|
+
// Write all non-status fields to state so we can reference the quote in Activity list without the Bridge API
|
|
51
|
+
// We know it's in progress but not the exact status yet
|
|
52
|
+
const txHistoryItem = {
|
|
53
|
+
txMetaId: bridgeTxMeta?.id,
|
|
54
|
+
actionId,
|
|
55
|
+
originalTransactionId: originalTransactionId ?? bridgeTxMeta?.id, // Keep original for intent transactions
|
|
56
|
+
batchId: bridgeTxMeta?.batchId,
|
|
57
|
+
quote: quoteResponse.quote,
|
|
58
|
+
startTime,
|
|
59
|
+
estimatedProcessingTimeInSeconds: quoteResponse.estimatedProcessingTimeInSeconds,
|
|
60
|
+
slippagePercentage,
|
|
61
|
+
pricingData: {
|
|
62
|
+
amountSent: quoteResponse.sentAmount?.amount ?? '0',
|
|
63
|
+
amountSentInUsd: quoteResponse.sentAmount?.usd ?? undefined,
|
|
64
|
+
quotedGasInUsd: quoteResponse.gasFee?.effective?.usd ?? undefined,
|
|
65
|
+
quotedReturnInUsd: quoteResponse.toTokenAmount?.usd ?? undefined,
|
|
66
|
+
quotedGasAmount: quoteResponse.gasFee?.effective?.amount ?? undefined,
|
|
67
|
+
},
|
|
68
|
+
initialDestAssetBalance,
|
|
69
|
+
targetContractAddress,
|
|
70
|
+
account: selectedAddress,
|
|
71
|
+
status: {
|
|
72
|
+
// We always have a PENDING status when we start polling for a tx, don't need the Bridge API for that
|
|
73
|
+
// Also we know the bare minimum fields for status at this point in time
|
|
74
|
+
status: bridge_controller_1.StatusTypes.PENDING,
|
|
75
|
+
srcChain: {
|
|
76
|
+
chainId: quoteResponse.quote.srcChainId,
|
|
77
|
+
txHash: bridgeTxMeta?.hash,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
hasApprovalTx: Boolean(quoteResponse.approval),
|
|
81
|
+
approvalTxId,
|
|
82
|
+
isStxEnabled: Boolean(isStxEnabled),
|
|
83
|
+
featureId: quoteResponse.featureId,
|
|
84
|
+
location,
|
|
85
|
+
...(abTests && { abTests }),
|
|
86
|
+
...(activeAbTests && { activeAbTests }),
|
|
87
|
+
};
|
|
88
|
+
return { historyKey, txHistoryItem };
|
|
89
|
+
};
|
|
90
|
+
exports.getInitialHistoryItem = getInitialHistoryItem;
|
|
91
|
+
const shouldPollHistoryItem = (historyItem) => {
|
|
92
|
+
const isIntent = Boolean(historyItem?.quote?.intent);
|
|
93
|
+
const isBridgeTx = (0, bridge_controller_1.isCrossChain)(historyItem.quote.srcChainId, historyItem.quote.destChainId);
|
|
94
|
+
const isTronTx = (0, bridge_controller_1.isTronChainId)(historyItem.quote.srcChainId);
|
|
95
|
+
return [isBridgeTx, isIntent, isTronTx].some(Boolean);
|
|
96
|
+
};
|
|
97
|
+
exports.shouldPollHistoryItem = shouldPollHistoryItem;
|
|
98
|
+
//# sourceMappingURL=history.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.cjs","sourceRoot":"","sources":["../../src/utils/history.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n StatusTypes,\n isCrossChain,\n isTronChainId,\n} from '@metamask/bridge-controller';\n\nimport type {\n BridgeHistoryItem,\n BridgeStatusControllerState,\n StartPollingForBridgeTxStatusArgsSerialized,\n} from '../types';\n\nexport const rekeyHistoryItemInState = (\n state: BridgeStatusControllerState,\n actionId: string,\n txMeta: { id: string; hash?: string },\n): boolean => {\n const historyItem = state.txHistory[actionId];\n if (!historyItem) {\n return false;\n }\n\n state.txHistory[txMeta.id] = {\n ...historyItem,\n txMetaId: txMeta.id,\n originalTransactionId: historyItem.originalTransactionId ?? txMeta.id,\n status: {\n ...historyItem.status,\n srcChain: {\n ...historyItem.status.srcChain,\n txHash: txMeta.hash ?? historyItem.status.srcChain?.txHash,\n },\n },\n };\n delete state.txHistory[actionId];\n return true;\n};\n\n/**\n * Determines the key to use for storing a bridge history item.\n * Uses actionId for pre-submission tracking, or bridgeTxMetaId for post-submission.\n *\n * @param actionId - The action ID used for pre-submission tracking\n * @param bridgeTxMetaId - The transaction meta ID from bridgeTxMeta\n * @param syntheticTransactionId - The transactionId of the intent's placeholder transaction\n * @returns The key to use for the history item\n * @throws Error if neither actionId nor bridgeTxMetaId is provided\n */\nexport function getHistoryKey(\n actionId: string | undefined,\n bridgeTxMetaId: string | undefined,\n syntheticTransactionId?: string,\n): string {\n const historyKey = actionId ?? bridgeTxMetaId ?? syntheticTransactionId;\n if (!historyKey) {\n throw new Error(\n 'Cannot add tx to history: either actionId, bridgeTxMeta.id, or syntheticTransactionId must be provided',\n );\n }\n return historyKey;\n}\n\nexport const getInitialHistoryItem = (\n args: StartPollingForBridgeTxStatusArgsSerialized,\n): {\n historyKey: string;\n txHistoryItem: BridgeHistoryItem;\n} => {\n const {\n bridgeTxMeta,\n quoteResponse,\n startTime,\n slippagePercentage,\n initialDestAssetBalance,\n targetContractAddress,\n approvalTxId,\n isStxEnabled,\n location,\n abTests,\n activeAbTests,\n accountAddress: selectedAddress,\n originalTransactionId,\n actionId,\n } = args;\n // Determine the key for this history item:\n // - For pre-submission (non-batch EVM): use actionId\n // - For post-submission or other cases: use bridgeTxMeta.id\n const historyKey = getHistoryKey(\n actionId,\n bridgeTxMeta?.id,\n originalTransactionId,\n );\n\n // Write all non-status fields to state so we can reference the quote in Activity list without the Bridge API\n // We know it's in progress but not the exact status yet\n const txHistoryItem = {\n txMetaId: bridgeTxMeta?.id,\n actionId,\n originalTransactionId: originalTransactionId ?? bridgeTxMeta?.id, // Keep original for intent transactions\n batchId: bridgeTxMeta?.batchId,\n quote: quoteResponse.quote,\n startTime,\n estimatedProcessingTimeInSeconds:\n quoteResponse.estimatedProcessingTimeInSeconds,\n slippagePercentage,\n pricingData: {\n amountSent: quoteResponse.sentAmount?.amount ?? '0',\n amountSentInUsd: quoteResponse.sentAmount?.usd ?? undefined,\n quotedGasInUsd: quoteResponse.gasFee?.effective?.usd ?? undefined,\n quotedReturnInUsd: quoteResponse.toTokenAmount?.usd ?? undefined,\n quotedGasAmount: quoteResponse.gasFee?.effective?.amount ?? undefined,\n },\n initialDestAssetBalance,\n targetContractAddress,\n account: selectedAddress,\n status: {\n // We always have a PENDING status when we start polling for a tx, don't need the Bridge API for that\n // Also we know the bare minimum fields for status at this point in time\n status: StatusTypes.PENDING,\n srcChain: {\n chainId: quoteResponse.quote.srcChainId,\n txHash: bridgeTxMeta?.hash,\n },\n },\n hasApprovalTx: Boolean(quoteResponse.approval),\n approvalTxId,\n isStxEnabled: Boolean(isStxEnabled),\n featureId: quoteResponse.featureId,\n location,\n ...(abTests && { abTests }),\n ...(activeAbTests && { activeAbTests }),\n };\n\n return { historyKey, txHistoryItem };\n};\n\nexport const shouldPollHistoryItem = (\n historyItem: BridgeHistoryItem,\n): boolean => {\n const isIntent = Boolean(historyItem?.quote?.intent);\n const isBridgeTx = isCrossChain(\n historyItem.quote.srcChainId,\n historyItem.quote.destChainId,\n );\n const isTronTx = isTronChainId(historyItem.quote.srcChainId);\n\n return [isBridgeTx, isIntent, isTronTx].some(Boolean);\n};\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { BridgeHistoryItem, BridgeStatusControllerState, StartPollingForBridgeTxStatusArgsSerialized } from "../types.cjs";
|
|
2
|
+
export declare const rekeyHistoryItemInState: (state: BridgeStatusControllerState, actionId: string, txMeta: {
|
|
3
|
+
id: string;
|
|
4
|
+
hash?: string;
|
|
5
|
+
}) => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Determines the key to use for storing a bridge history item.
|
|
8
|
+
* Uses actionId for pre-submission tracking, or bridgeTxMetaId for post-submission.
|
|
9
|
+
*
|
|
10
|
+
* @param actionId - The action ID used for pre-submission tracking
|
|
11
|
+
* @param bridgeTxMetaId - The transaction meta ID from bridgeTxMeta
|
|
12
|
+
* @param syntheticTransactionId - The transactionId of the intent's placeholder transaction
|
|
13
|
+
* @returns The key to use for the history item
|
|
14
|
+
* @throws Error if neither actionId nor bridgeTxMetaId is provided
|
|
15
|
+
*/
|
|
16
|
+
export declare function getHistoryKey(actionId: string | undefined, bridgeTxMetaId: string | undefined, syntheticTransactionId?: string): string;
|
|
17
|
+
export declare const getInitialHistoryItem: (args: StartPollingForBridgeTxStatusArgsSerialized) => {
|
|
18
|
+
historyKey: string;
|
|
19
|
+
txHistoryItem: BridgeHistoryItem;
|
|
20
|
+
};
|
|
21
|
+
export declare const shouldPollHistoryItem: (historyItem: BridgeHistoryItem) => boolean;
|
|
22
|
+
//# sourceMappingURL=history.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.cts","sourceRoot":"","sources":["../../src/utils/history.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,2CAA2C,EAC5C,qBAAiB;AAElB,eAAO,MAAM,uBAAuB,UAC3B,2BAA2B,YACxB,MAAM,UACR;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KACpC,OAoBF,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,sBAAsB,CAAC,EAAE,MAAM,GAC9B,MAAM,CAQR;AAED,eAAO,MAAM,qBAAqB,SAC1B,2CAA2C;gBAErC,MAAM;mBACH,iBAAiB;CAoEjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,gBACnB,iBAAiB,KAC7B,OASF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { BridgeHistoryItem, BridgeStatusControllerState, StartPollingForBridgeTxStatusArgsSerialized } from "../types.mjs";
|
|
2
|
+
export declare const rekeyHistoryItemInState: (state: BridgeStatusControllerState, actionId: string, txMeta: {
|
|
3
|
+
id: string;
|
|
4
|
+
hash?: string;
|
|
5
|
+
}) => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Determines the key to use for storing a bridge history item.
|
|
8
|
+
* Uses actionId for pre-submission tracking, or bridgeTxMetaId for post-submission.
|
|
9
|
+
*
|
|
10
|
+
* @param actionId - The action ID used for pre-submission tracking
|
|
11
|
+
* @param bridgeTxMetaId - The transaction meta ID from bridgeTxMeta
|
|
12
|
+
* @param syntheticTransactionId - The transactionId of the intent's placeholder transaction
|
|
13
|
+
* @returns The key to use for the history item
|
|
14
|
+
* @throws Error if neither actionId nor bridgeTxMetaId is provided
|
|
15
|
+
*/
|
|
16
|
+
export declare function getHistoryKey(actionId: string | undefined, bridgeTxMetaId: string | undefined, syntheticTransactionId?: string): string;
|
|
17
|
+
export declare const getInitialHistoryItem: (args: StartPollingForBridgeTxStatusArgsSerialized) => {
|
|
18
|
+
historyKey: string;
|
|
19
|
+
txHistoryItem: BridgeHistoryItem;
|
|
20
|
+
};
|
|
21
|
+
export declare const shouldPollHistoryItem: (historyItem: BridgeHistoryItem) => boolean;
|
|
22
|
+
//# sourceMappingURL=history.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.mts","sourceRoot":"","sources":["../../src/utils/history.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,2CAA2C,EAC5C,qBAAiB;AAElB,eAAO,MAAM,uBAAuB,UAC3B,2BAA2B,YACxB,MAAM,UACR;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KACpC,OAoBF,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,sBAAsB,CAAC,EAAE,MAAM,GAC9B,MAAM,CAQR;AAED,eAAO,MAAM,qBAAqB,SAC1B,2CAA2C;gBAErC,MAAM;mBACH,iBAAiB;CAoEjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,gBACnB,iBAAiB,KAC7B,OASF,CAAC"}
|