@metamask/transaction-pay-controller 22.1.0 → 22.2.0
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/TransactionPayController.cjs +7 -7
- package/dist/TransactionPayController.cjs.map +1 -1
- package/dist/TransactionPayController.d.cts.map +1 -1
- package/dist/TransactionPayController.d.mts.map +1 -1
- package/dist/TransactionPayController.mjs +7 -7
- package/dist/TransactionPayController.mjs.map +1 -1
- package/dist/constants.cjs +5 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +2 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +2 -0
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs +4 -0
- package/dist/constants.mjs.map +1 -1
- package/dist/strategy/fiat/constants.cjs +5 -6
- package/dist/strategy/fiat/constants.cjs.map +1 -1
- package/dist/strategy/fiat/constants.d.cts +1 -2
- package/dist/strategy/fiat/constants.d.cts.map +1 -1
- package/dist/strategy/fiat/constants.d.mts +1 -2
- package/dist/strategy/fiat/constants.d.mts.map +1 -1
- package/dist/strategy/fiat/constants.mjs +5 -6
- package/dist/strategy/fiat/constants.mjs.map +1 -1
- package/dist/strategy/fiat/fiat-quotes.cjs +8 -7
- package/dist/strategy/fiat/fiat-quotes.cjs.map +1 -1
- package/dist/strategy/fiat/fiat-quotes.d.cts.map +1 -1
- package/dist/strategy/fiat/fiat-quotes.d.mts.map +1 -1
- package/dist/strategy/fiat/fiat-quotes.mjs +9 -8
- package/dist/strategy/fiat/fiat-quotes.mjs.map +1 -1
- package/dist/strategy/fiat/fiat-submit.cjs +23 -20
- package/dist/strategy/fiat/fiat-submit.cjs.map +1 -1
- package/dist/strategy/fiat/fiat-submit.d.cts.map +1 -1
- package/dist/strategy/fiat/fiat-submit.d.mts.map +1 -1
- package/dist/strategy/fiat/fiat-submit.mjs +23 -20
- package/dist/strategy/fiat/fiat-submit.mjs.map +1 -1
- package/dist/strategy/fiat/utils.cjs +10 -9
- package/dist/strategy/fiat/utils.cjs.map +1 -1
- package/dist/strategy/fiat/utils.d.cts +4 -3
- package/dist/strategy/fiat/utils.d.cts.map +1 -1
- package/dist/strategy/fiat/utils.d.mts +4 -3
- package/dist/strategy/fiat/utils.d.mts.map +1 -1
- package/dist/strategy/fiat/utils.mjs +9 -8
- package/dist/strategy/fiat/utils.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +2 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +2 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/feature-flags.cjs +29 -5
- package/dist/utils/feature-flags.cjs.map +1 -1
- package/dist/utils/feature-flags.d.cts +15 -0
- package/dist/utils/feature-flags.d.cts.map +1 -1
- package/dist/utils/feature-flags.d.mts +15 -0
- package/dist/utils/feature-flags.d.mts.map +1 -1
- package/dist/utils/feature-flags.mjs +23 -0
- package/dist/utils/feature-flags.mjs.map +1 -1
- package/dist/utils/token.cjs +24 -1
- package/dist/utils/token.cjs.map +1 -1
- package/dist/utils/token.d.cts +14 -1
- package/dist/utils/token.d.cts.map +1 -1
- package/dist/utils/token.d.mts +14 -1
- package/dist/utils/token.d.mts.map +1 -1
- package/dist/utils/token.mjs +23 -1
- package/dist/utils/token.mjs.map +1 -1
- package/dist/utils/totals.cjs +8 -2
- package/dist/utils/totals.cjs.map +1 -1
- package/dist/utils/totals.d.cts.map +1 -1
- package/dist/utils/totals.d.mts.map +1 -1
- package/dist/utils/totals.mjs +8 -2
- package/dist/utils/totals.mjs.map +1 -1
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [22.2.0]
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Resolve fiat asset per transaction type from `confirmations_pay_fiat` remote feature flag, falling back to hardcoded map then ETH on mainnet ([#8631](https://github.com/MetaMask/core/pull/8631))
|
|
15
|
+
- Bump `@metamask/assets-controller` from `^7.0.0` to `^7.0.1` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
16
|
+
- Bump `@metamask/assets-controllers` from `^106.0.0` to `^106.0.1` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
17
|
+
- Bump `@metamask/bridge-controller` from `^72.0.1` to `^72.0.2` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
18
|
+
- Bump `@metamask/bridge-status-controller` from `^71.1.1` to `^71.1.2` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
19
|
+
- Bump `@metamask/controller-utils` from `^11.20.0` to `^12.0.0` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
20
|
+
- Bump `@metamask/gas-fee-controller` from `^26.2.0` to `^26.2.1` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
21
|
+
- Bump `@metamask/network-controller` from `^30.1.0` to `^31.0.0` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
22
|
+
- Bump `@metamask/ramps-controller` from `^13.3.0` to `^13.3.1` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
23
|
+
- Bump `@metamask/remote-feature-flag-controller` from `^4.2.0` to `^4.2.1` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
24
|
+
- Bump `@metamask/transaction-controller` from `^65.2.0` to `^65.3.0` ([#8755](https://github.com/MetaMask/core/pull/8755))
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- Fix fiat strategy submit flow to extract provider code from ramps quote instead of parsing order ID, store `caipAssetId` in fiat payment state, and use target amount for totals when fiat strategy is active ([#8726](https://github.com/MetaMask/core/pull/8726))
|
|
29
|
+
|
|
10
30
|
## [22.1.0]
|
|
11
31
|
|
|
12
32
|
### Fixed
|
|
@@ -814,7 +834,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
814
834
|
|
|
815
835
|
- Initial release ([#6820](https://github.com/MetaMask/core/pull/6820))
|
|
816
836
|
|
|
817
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.
|
|
837
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.2.0...HEAD
|
|
838
|
+
[22.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.1.0...@metamask/transaction-pay-controller@22.2.0
|
|
818
839
|
[22.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.0.2...@metamask/transaction-pay-controller@22.1.0
|
|
819
840
|
[22.0.2]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.0.1...@metamask/transaction-pay-controller@22.0.2
|
|
820
841
|
[22.0.1]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@22.0.0...@metamask/transaction-pay-controller@22.0.1
|
|
@@ -23,6 +23,7 @@ const utils_1 = require("./strategy/fiat/utils.cjs");
|
|
|
23
23
|
const feature_flags_1 = require("./utils/feature-flags.cjs");
|
|
24
24
|
const quotes_1 = require("./utils/quotes.cjs");
|
|
25
25
|
const source_amounts_1 = require("./utils/source-amounts.cjs");
|
|
26
|
+
const token_1 = require("./utils/token.cjs");
|
|
26
27
|
const transaction_1 = require("./utils/transaction.cjs");
|
|
27
28
|
const MESSENGER_EXPOSED_METHODS = [
|
|
28
29
|
'getDelegationTransaction',
|
|
@@ -212,14 +213,13 @@ _TransactionPayController_getDelegationTransaction = new WeakMap(), _Transaction
|
|
|
212
213
|
});
|
|
213
214
|
if (shouldUpdateFiatToken) {
|
|
214
215
|
const transaction = (0, transaction_1.getTransaction)(transactionId, this.messenger);
|
|
215
|
-
const fiatAsset = (0, utils_1.deriveFiatAssetForFiatPayment)(transaction);
|
|
216
|
+
const fiatAsset = (0, utils_1.deriveFiatAssetForFiatPayment)(transaction, this.messenger);
|
|
216
217
|
if (fiatAsset) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
218
|
+
__classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_updateTransactionData).call(this, transactionId, (data) => {
|
|
219
|
+
if (data.fiatPayment) {
|
|
220
|
+
data.fiatPayment.caipAssetId = (0, token_1.buildCaipAssetType)(fiatAsset.chainId, fiatAsset.address);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
if (shouldUpdateQuotes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionPayController.cjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Draft } from 'immer';\nimport { noop } from 'lodash';\n\nimport { updateFiatPayment } from './actions/update-fiat-payment';\nimport { updatePaymentToken } from './actions/update-payment-token';\nimport {\n CONTROLLER_NAME,\n isTransactionPayStrategy,\n TransactionPayStrategy,\n} from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils';\nimport type {\n GetDelegationTransactionCallback,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdateFiatPaymentRequest,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { getStrategyOrder } from './utils/feature-flags';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport {\n getTransaction,\n subscribeAssetChanges,\n subscribeTransactionChanges,\n} from './utils/transaction';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'getDelegationTransaction',\n 'getStrategy',\n 'setTransactionConfig',\n 'updateFiatPayment',\n 'updatePaymentToken',\n] as const;\n\nconst stateMetadata: StateMetadata<TransactionPayControllerState> = {\n transactionData: {\n includeInDebugSnapshot: false,\n includeInStateLogs: true,\n persist: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = (): TransactionPayControllerState => ({\n transactionData: {},\n});\n\nexport class TransactionPayController extends BaseController<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState,\n TransactionPayControllerMessenger\n> {\n readonly #getDelegationTransaction: GetDelegationTransactionCallback;\n\n readonly #getStrategy?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy;\n\n readonly #getStrategies?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy[];\n\n constructor({\n getDelegationTransaction,\n getStrategy,\n getStrategies,\n messenger,\n state,\n }: TransactionPayControllerOptions) {\n super({\n name: CONTROLLER_NAME,\n metadata: stateMetadata,\n messenger,\n state: { ...getDefaultState(), ...state },\n });\n\n this.#getDelegationTransaction = getDelegationTransaction;\n this.#getStrategy = getStrategy;\n this.#getStrategies = getStrategies;\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n subscribeTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n subscribeAssetChanges(\n messenger,\n () => this.state,\n this.#updateTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Sets the transaction configuration.\n *\n * The callback receives the current configuration properties and can mutate\n * them in place. Updated values are written back to the transaction data.\n *\n * @param transactionId - The ID of the transaction to configure.\n * @param callback - A callback that receives a mutable {@link TransactionConfig} object.\n */\n setTransactionConfig(\n transactionId: string,\n callback: TransactionConfigCallback,\n ): void {\n this.#updateTransactionData(transactionId, (transactionData) => {\n const config = {\n isMaxAmount: transactionData.isMaxAmount,\n isPostQuote: transactionData.isPostQuote,\n isHyperliquidSource: transactionData.isHyperliquidSource,\n refundTo: transactionData.refundTo,\n accountOverride: transactionData.accountOverride,\n };\n\n const previousAccountOverride = config.accountOverride;\n\n callback(config);\n\n transactionData.accountOverride = config.accountOverride;\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n transactionData.isHyperliquidSource = config.isHyperliquidSource;\n transactionData.refundTo = config.refundTo;\n\n if (config.accountOverride !== previousAccountOverride) {\n transactionData.paymentToken = undefined;\n }\n });\n }\n\n /**\n * Updates the payment token for a transaction.\n *\n * Resolves token metadata and balances, then stores the new payment token\n * in the transaction data. This triggers recalculation of source amounts\n * and quote retrieval.\n *\n * @param request - The payment token update request containing the\n * transaction ID, token address, and chain ID.\n */\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Updates the fiat payment state for a transaction.\n *\n * The request callback receives the current fiat payment state and can\n * mutate it to update properties such as the selected payment method or\n * fiat amount.\n *\n * @param request - The fiat payment update request containing the\n * transaction ID and a callback to mutate fiat payment state.\n */\n updateFiatPayment(request: UpdateFiatPaymentRequest): void {\n updateFiatPayment(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Gets the delegation transaction for a given transaction.\n *\n * Converts the provided transaction into a redeem delegation by delegating\n * to the configured callback. Returns the delegation transaction data\n * including the encoded call data, target address, value, and an optional\n * authorization list.\n *\n * @param args - The arguments forwarded to the {@link GetDelegationTransactionCallback},\n * containing the transaction metadata.\n * @returns A promise resolving to the delegation transaction data.\n */\n getDelegationTransaction(\n ...args: Parameters<GetDelegationTransactionCallback>\n ): ReturnType<GetDelegationTransactionCallback> {\n return this.#getDelegationTransaction(...args);\n }\n\n /**\n * Gets the preferred strategy for a transaction.\n *\n * Returns the first strategy from the ordered list of strategies applicable\n * to the given transaction. Falls back to the default strategy order derived\n * from feature flags when no custom strategy callback is configured.\n *\n * @param transaction - The transaction metadata to determine the strategy for.\n * @returns The preferred {@link TransactionPayStrategy} for the transaction.\n */\n getStrategy(transaction: TransactionMeta): TransactionPayStrategy {\n return this.#getStrategiesWithFallback(transaction)[0];\n }\n\n #removeTransactionData(transactionId: string): void {\n this.update((state) => {\n delete state.transactionData[transactionId];\n });\n }\n\n #updateTransactionData(\n transactionId: string,\n fn: (transactionData: Draft<TransactionData>) => void,\n ): void {\n let shouldUpdateQuotes = false;\n let shouldUpdateFiatToken = false;\n\n this.update((state) => {\n const { transactionData } = state;\n let current = transactionData[transactionId];\n const originalPaymentToken = current?.paymentToken;\n const originalTokens = current?.tokens;\n const originalIsMaxAmount = current?.isMaxAmount;\n const originalIsPostQuote = current?.isPostQuote;\n const originalAccountOverride = current?.accountOverride;\n const originalFiatPaymentAmount = current?.fiatPayment?.amountFiat;\n const originalFiatPaymentMethodId =\n current?.fiatPayment?.selectedPaymentMethodId;\n\n if (!current) {\n transactionData[transactionId] = {\n fiatPayment: {},\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken?.address?.toLowerCase() !==\n originalPaymentToken?.address?.toLowerCase() ||\n current.paymentToken?.chainId !== originalPaymentToken?.chainId;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n const isAccountOverrideUpdated =\n current.accountOverride !== originalAccountOverride;\n const isFiatAmountUpdated =\n current.fiatPayment?.amountFiat !== originalFiatPaymentAmount;\n const isFiatPaymentMethodUpdated =\n current.fiatPayment?.selectedPaymentMethodId !==\n originalFiatPaymentMethodId;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated ||\n isAccountOverrideUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n\n if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {\n shouldUpdateQuotes = true;\n }\n\n if (isFiatPaymentMethodUpdated) {\n shouldUpdateFiatToken = true;\n }\n });\n\n if (shouldUpdateFiatToken) {\n const transaction = getTransaction(\n transactionId,\n this.messenger,\n ) as TransactionMeta;\n const fiatAsset = deriveFiatAssetForFiatPayment(transaction);\n if (fiatAsset) {\n try {\n this.messenger.call(\n 'RampsController:setSelectedToken',\n fiatAsset.caipAssetId,\n );\n } catch {\n // Intentionally no-op — tokens may not be loaded in RampsController yet.\n }\n }\n }\n\n if (shouldUpdateQuotes) {\n updateQuotes({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger: this.messenger,\n transactionData: this.state.transactionData[transactionId],\n transactionId,\n updateTransactionData: this.#updateTransactionData.bind(this),\n }).catch(noop);\n }\n }\n\n #getStrategiesWithFallback(\n transaction: TransactionMeta,\n ): TransactionPayStrategy[] {\n const strategyCandidates: unknown[] =\n this.#getStrategies?.(transaction) ??\n (this.#getStrategy ? [this.#getStrategy(transaction)] : []);\n\n const validStrategies = strategyCandidates.filter(\n (strategy): strategy is TransactionPayStrategy =>\n isTransactionPayStrategy(strategy),\n );\n\n if (validStrategies.length) {\n return validStrategies;\n }\n\n const transactionData = this.state.transactionData[transaction.id];\n const paymentToken = transactionData?.paymentToken;\n\n return getStrategyOrder(\n this.messenger,\n paymentToken?.chainId,\n paymentToken?.address,\n transaction.type,\n transactionData?.fiatPayment?.selectedPaymentMethodId,\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TransactionPayController.cjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Draft } from 'immer';\nimport { noop } from 'lodash';\n\nimport { updateFiatPayment } from './actions/update-fiat-payment';\nimport { updatePaymentToken } from './actions/update-payment-token';\nimport {\n CONTROLLER_NAME,\n isTransactionPayStrategy,\n TransactionPayStrategy,\n} from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils';\nimport type {\n GetDelegationTransactionCallback,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdateFiatPaymentRequest,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { getStrategyOrder } from './utils/feature-flags';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport { buildCaipAssetType } from './utils/token';\nimport {\n getTransaction,\n subscribeAssetChanges,\n subscribeTransactionChanges,\n} from './utils/transaction';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'getDelegationTransaction',\n 'getStrategy',\n 'setTransactionConfig',\n 'updateFiatPayment',\n 'updatePaymentToken',\n] as const;\n\nconst stateMetadata: StateMetadata<TransactionPayControllerState> = {\n transactionData: {\n includeInDebugSnapshot: false,\n includeInStateLogs: true,\n persist: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = (): TransactionPayControllerState => ({\n transactionData: {},\n});\n\nexport class TransactionPayController extends BaseController<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState,\n TransactionPayControllerMessenger\n> {\n readonly #getDelegationTransaction: GetDelegationTransactionCallback;\n\n readonly #getStrategy?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy;\n\n readonly #getStrategies?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy[];\n\n constructor({\n getDelegationTransaction,\n getStrategy,\n getStrategies,\n messenger,\n state,\n }: TransactionPayControllerOptions) {\n super({\n name: CONTROLLER_NAME,\n metadata: stateMetadata,\n messenger,\n state: { ...getDefaultState(), ...state },\n });\n\n this.#getDelegationTransaction = getDelegationTransaction;\n this.#getStrategy = getStrategy;\n this.#getStrategies = getStrategies;\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n subscribeTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n subscribeAssetChanges(\n messenger,\n () => this.state,\n this.#updateTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Sets the transaction configuration.\n *\n * The callback receives the current configuration properties and can mutate\n * them in place. Updated values are written back to the transaction data.\n *\n * @param transactionId - The ID of the transaction to configure.\n * @param callback - A callback that receives a mutable {@link TransactionConfig} object.\n */\n setTransactionConfig(\n transactionId: string,\n callback: TransactionConfigCallback,\n ): void {\n this.#updateTransactionData(transactionId, (transactionData) => {\n const config = {\n isMaxAmount: transactionData.isMaxAmount,\n isPostQuote: transactionData.isPostQuote,\n isHyperliquidSource: transactionData.isHyperliquidSource,\n refundTo: transactionData.refundTo,\n accountOverride: transactionData.accountOverride,\n };\n\n const previousAccountOverride = config.accountOverride;\n\n callback(config);\n\n transactionData.accountOverride = config.accountOverride;\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n transactionData.isHyperliquidSource = config.isHyperliquidSource;\n transactionData.refundTo = config.refundTo;\n\n if (config.accountOverride !== previousAccountOverride) {\n transactionData.paymentToken = undefined;\n }\n });\n }\n\n /**\n * Updates the payment token for a transaction.\n *\n * Resolves token metadata and balances, then stores the new payment token\n * in the transaction data. This triggers recalculation of source amounts\n * and quote retrieval.\n *\n * @param request - The payment token update request containing the\n * transaction ID, token address, and chain ID.\n */\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Updates the fiat payment state for a transaction.\n *\n * The request callback receives the current fiat payment state and can\n * mutate it to update properties such as the selected payment method or\n * fiat amount.\n *\n * @param request - The fiat payment update request containing the\n * transaction ID and a callback to mutate fiat payment state.\n */\n updateFiatPayment(request: UpdateFiatPaymentRequest): void {\n updateFiatPayment(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Gets the delegation transaction for a given transaction.\n *\n * Converts the provided transaction into a redeem delegation by delegating\n * to the configured callback. Returns the delegation transaction data\n * including the encoded call data, target address, value, and an optional\n * authorization list.\n *\n * @param args - The arguments forwarded to the {@link GetDelegationTransactionCallback},\n * containing the transaction metadata.\n * @returns A promise resolving to the delegation transaction data.\n */\n getDelegationTransaction(\n ...args: Parameters<GetDelegationTransactionCallback>\n ): ReturnType<GetDelegationTransactionCallback> {\n return this.#getDelegationTransaction(...args);\n }\n\n /**\n * Gets the preferred strategy for a transaction.\n *\n * Returns the first strategy from the ordered list of strategies applicable\n * to the given transaction. Falls back to the default strategy order derived\n * from feature flags when no custom strategy callback is configured.\n *\n * @param transaction - The transaction metadata to determine the strategy for.\n * @returns The preferred {@link TransactionPayStrategy} for the transaction.\n */\n getStrategy(transaction: TransactionMeta): TransactionPayStrategy {\n return this.#getStrategiesWithFallback(transaction)[0];\n }\n\n #removeTransactionData(transactionId: string): void {\n this.update((state) => {\n delete state.transactionData[transactionId];\n });\n }\n\n #updateTransactionData(\n transactionId: string,\n fn: (transactionData: Draft<TransactionData>) => void,\n ): void {\n let shouldUpdateQuotes = false;\n let shouldUpdateFiatToken = false;\n\n this.update((state) => {\n const { transactionData } = state;\n let current = transactionData[transactionId];\n const originalPaymentToken = current?.paymentToken;\n const originalTokens = current?.tokens;\n const originalIsMaxAmount = current?.isMaxAmount;\n const originalIsPostQuote = current?.isPostQuote;\n const originalAccountOverride = current?.accountOverride;\n const originalFiatPaymentAmount = current?.fiatPayment?.amountFiat;\n const originalFiatPaymentMethodId =\n current?.fiatPayment?.selectedPaymentMethodId;\n\n if (!current) {\n transactionData[transactionId] = {\n fiatPayment: {},\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken?.address?.toLowerCase() !==\n originalPaymentToken?.address?.toLowerCase() ||\n current.paymentToken?.chainId !== originalPaymentToken?.chainId;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n const isAccountOverrideUpdated =\n current.accountOverride !== originalAccountOverride;\n const isFiatAmountUpdated =\n current.fiatPayment?.amountFiat !== originalFiatPaymentAmount;\n const isFiatPaymentMethodUpdated =\n current.fiatPayment?.selectedPaymentMethodId !==\n originalFiatPaymentMethodId;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated ||\n isAccountOverrideUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n\n if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {\n shouldUpdateQuotes = true;\n }\n\n if (isFiatPaymentMethodUpdated) {\n shouldUpdateFiatToken = true;\n }\n });\n\n if (shouldUpdateFiatToken) {\n const transaction = getTransaction(\n transactionId,\n this.messenger,\n ) as TransactionMeta;\n const fiatAsset = deriveFiatAssetForFiatPayment(\n transaction,\n this.messenger,\n );\n if (fiatAsset) {\n this.#updateTransactionData(transactionId, (data) => {\n if (data.fiatPayment) {\n data.fiatPayment.caipAssetId = buildCaipAssetType(\n fiatAsset.chainId,\n fiatAsset.address,\n );\n }\n });\n }\n }\n\n if (shouldUpdateQuotes) {\n updateQuotes({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger: this.messenger,\n transactionData: this.state.transactionData[transactionId],\n transactionId,\n updateTransactionData: this.#updateTransactionData.bind(this),\n }).catch(noop);\n }\n }\n\n #getStrategiesWithFallback(\n transaction: TransactionMeta,\n ): TransactionPayStrategy[] {\n const strategyCandidates: unknown[] =\n this.#getStrategies?.(transaction) ??\n (this.#getStrategy ? [this.#getStrategy(transaction)] : []);\n\n const validStrategies = strategyCandidates.filter(\n (strategy): strategy is TransactionPayStrategy =>\n isTransactionPayStrategy(strategy),\n );\n\n if (validStrategies.length) {\n return validStrategies;\n }\n\n const transactionData = this.state.transactionData[transaction.id];\n const paymentToken = transactionData?.paymentToken;\n\n return getStrategyOrder(\n this.messenger,\n paymentToken?.chainId,\n paymentToken?.address,\n transaction.type,\n transactionData?.fiatPayment?.selectedPaymentMethodId,\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionPayController.d.cts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAMxE,OAAO,EACL,eAAe,EAEf,sBAAsB,EACvB,wBAAoB;AAGrB,OAAO,KAAK,EACV,gCAAgC,EAChC,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,oBAAgB;
|
|
1
|
+
{"version":3,"file":"TransactionPayController.d.cts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAMxE,OAAO,EACL,eAAe,EAEf,sBAAsB,EACvB,wBAAoB;AAGrB,OAAO,KAAK,EACV,gCAAgC,EAChC,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,oBAAgB;AAgCjB,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,OAAO,eAAe,EACtB,6BAA6B,EAC7B,iCAAiC,CAClC;;gBAWa,EACV,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,GACN,EAAE,+BAA+B;IAqClC;;;;;;;;OAQG;IACH,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,yBAAyB,GAClC,IAAI;IA0BP;;;;;;;;;OASG;IACH,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAO5D;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAO1D;;;;;;;;;;;OAWG;IACH,wBAAwB,CACtB,GAAG,IAAI,EAAE,UAAU,CAAC,gCAAgC,CAAC,GACpD,UAAU,CAAC,gCAAgC,CAAC;IAI/C;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,EAAE,eAAe,GAAG,sBAAsB;CAyIlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionPayController.d.mts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAMxE,OAAO,EACL,eAAe,EAEf,sBAAsB,EACvB,wBAAoB;AAGrB,OAAO,KAAK,EACV,gCAAgC,EAChC,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,oBAAgB;
|
|
1
|
+
{"version":3,"file":"TransactionPayController.d.mts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAMxE,OAAO,EACL,eAAe,EAEf,sBAAsB,EACvB,wBAAoB;AAGrB,OAAO,KAAK,EACV,gCAAgC,EAChC,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,oBAAgB;AAgCjB,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,OAAO,eAAe,EACtB,6BAA6B,EAC7B,iCAAiC,CAClC;;gBAWa,EACV,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,GACN,EAAE,+BAA+B;IAqClC;;;;;;;;OAQG;IACH,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,yBAAyB,GAClC,IAAI;IA0BP;;;;;;;;;OASG;IACH,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAO5D;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAO1D;;;;;;;;;;;OAWG;IACH,wBAAwB,CACtB,GAAG,IAAI,EAAE,UAAU,CAAC,gCAAgC,CAAC,GACpD,UAAU,CAAC,gCAAgC,CAAC;IAI/C;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,EAAE,eAAe,GAAG,sBAAsB;CAyIlE"}
|
|
@@ -21,6 +21,7 @@ import { deriveFiatAssetForFiatPayment } from "./strategy/fiat/utils.mjs";
|
|
|
21
21
|
import { getStrategyOrder } from "./utils/feature-flags.mjs";
|
|
22
22
|
import { updateQuotes } from "./utils/quotes.mjs";
|
|
23
23
|
import { updateSourceAmounts } from "./utils/source-amounts.mjs";
|
|
24
|
+
import { buildCaipAssetType } from "./utils/token.mjs";
|
|
24
25
|
import { getTransaction, subscribeAssetChanges, subscribeTransactionChanges } from "./utils/transaction.mjs";
|
|
25
26
|
const MESSENGER_EXPOSED_METHODS = [
|
|
26
27
|
'getDelegationTransaction',
|
|
@@ -209,14 +210,13 @@ _TransactionPayController_getDelegationTransaction = new WeakMap(), _Transaction
|
|
|
209
210
|
});
|
|
210
211
|
if (shouldUpdateFiatToken) {
|
|
211
212
|
const transaction = getTransaction(transactionId, this.messenger);
|
|
212
|
-
const fiatAsset = deriveFiatAssetForFiatPayment(transaction);
|
|
213
|
+
const fiatAsset = deriveFiatAssetForFiatPayment(transaction, this.messenger);
|
|
213
214
|
if (fiatAsset) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
215
|
+
__classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_updateTransactionData).call(this, transactionId, (data) => {
|
|
216
|
+
if (data.fiatPayment) {
|
|
217
|
+
data.fiatPayment.caipAssetId = buildCaipAssetType(fiatAsset.chainId, fiatAsset.address);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
if (shouldUpdateQuotes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionPayController.mjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Draft } from 'immer';\nimport { noop } from 'lodash';\n\nimport { updateFiatPayment } from './actions/update-fiat-payment';\nimport { updatePaymentToken } from './actions/update-payment-token';\nimport {\n CONTROLLER_NAME,\n isTransactionPayStrategy,\n TransactionPayStrategy,\n} from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils';\nimport type {\n GetDelegationTransactionCallback,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdateFiatPaymentRequest,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { getStrategyOrder } from './utils/feature-flags';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport {\n getTransaction,\n subscribeAssetChanges,\n subscribeTransactionChanges,\n} from './utils/transaction';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'getDelegationTransaction',\n 'getStrategy',\n 'setTransactionConfig',\n 'updateFiatPayment',\n 'updatePaymentToken',\n] as const;\n\nconst stateMetadata: StateMetadata<TransactionPayControllerState> = {\n transactionData: {\n includeInDebugSnapshot: false,\n includeInStateLogs: true,\n persist: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = (): TransactionPayControllerState => ({\n transactionData: {},\n});\n\nexport class TransactionPayController extends BaseController<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState,\n TransactionPayControllerMessenger\n> {\n readonly #getDelegationTransaction: GetDelegationTransactionCallback;\n\n readonly #getStrategy?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy;\n\n readonly #getStrategies?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy[];\n\n constructor({\n getDelegationTransaction,\n getStrategy,\n getStrategies,\n messenger,\n state,\n }: TransactionPayControllerOptions) {\n super({\n name: CONTROLLER_NAME,\n metadata: stateMetadata,\n messenger,\n state: { ...getDefaultState(), ...state },\n });\n\n this.#getDelegationTransaction = getDelegationTransaction;\n this.#getStrategy = getStrategy;\n this.#getStrategies = getStrategies;\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n subscribeTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n subscribeAssetChanges(\n messenger,\n () => this.state,\n this.#updateTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Sets the transaction configuration.\n *\n * The callback receives the current configuration properties and can mutate\n * them in place. Updated values are written back to the transaction data.\n *\n * @param transactionId - The ID of the transaction to configure.\n * @param callback - A callback that receives a mutable {@link TransactionConfig} object.\n */\n setTransactionConfig(\n transactionId: string,\n callback: TransactionConfigCallback,\n ): void {\n this.#updateTransactionData(transactionId, (transactionData) => {\n const config = {\n isMaxAmount: transactionData.isMaxAmount,\n isPostQuote: transactionData.isPostQuote,\n isHyperliquidSource: transactionData.isHyperliquidSource,\n refundTo: transactionData.refundTo,\n accountOverride: transactionData.accountOverride,\n };\n\n const previousAccountOverride = config.accountOverride;\n\n callback(config);\n\n transactionData.accountOverride = config.accountOverride;\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n transactionData.isHyperliquidSource = config.isHyperliquidSource;\n transactionData.refundTo = config.refundTo;\n\n if (config.accountOverride !== previousAccountOverride) {\n transactionData.paymentToken = undefined;\n }\n });\n }\n\n /**\n * Updates the payment token for a transaction.\n *\n * Resolves token metadata and balances, then stores the new payment token\n * in the transaction data. This triggers recalculation of source amounts\n * and quote retrieval.\n *\n * @param request - The payment token update request containing the\n * transaction ID, token address, and chain ID.\n */\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Updates the fiat payment state for a transaction.\n *\n * The request callback receives the current fiat payment state and can\n * mutate it to update properties such as the selected payment method or\n * fiat amount.\n *\n * @param request - The fiat payment update request containing the\n * transaction ID and a callback to mutate fiat payment state.\n */\n updateFiatPayment(request: UpdateFiatPaymentRequest): void {\n updateFiatPayment(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Gets the delegation transaction for a given transaction.\n *\n * Converts the provided transaction into a redeem delegation by delegating\n * to the configured callback. Returns the delegation transaction data\n * including the encoded call data, target address, value, and an optional\n * authorization list.\n *\n * @param args - The arguments forwarded to the {@link GetDelegationTransactionCallback},\n * containing the transaction metadata.\n * @returns A promise resolving to the delegation transaction data.\n */\n getDelegationTransaction(\n ...args: Parameters<GetDelegationTransactionCallback>\n ): ReturnType<GetDelegationTransactionCallback> {\n return this.#getDelegationTransaction(...args);\n }\n\n /**\n * Gets the preferred strategy for a transaction.\n *\n * Returns the first strategy from the ordered list of strategies applicable\n * to the given transaction. Falls back to the default strategy order derived\n * from feature flags when no custom strategy callback is configured.\n *\n * @param transaction - The transaction metadata to determine the strategy for.\n * @returns The preferred {@link TransactionPayStrategy} for the transaction.\n */\n getStrategy(transaction: TransactionMeta): TransactionPayStrategy {\n return this.#getStrategiesWithFallback(transaction)[0];\n }\n\n #removeTransactionData(transactionId: string): void {\n this.update((state) => {\n delete state.transactionData[transactionId];\n });\n }\n\n #updateTransactionData(\n transactionId: string,\n fn: (transactionData: Draft<TransactionData>) => void,\n ): void {\n let shouldUpdateQuotes = false;\n let shouldUpdateFiatToken = false;\n\n this.update((state) => {\n const { transactionData } = state;\n let current = transactionData[transactionId];\n const originalPaymentToken = current?.paymentToken;\n const originalTokens = current?.tokens;\n const originalIsMaxAmount = current?.isMaxAmount;\n const originalIsPostQuote = current?.isPostQuote;\n const originalAccountOverride = current?.accountOverride;\n const originalFiatPaymentAmount = current?.fiatPayment?.amountFiat;\n const originalFiatPaymentMethodId =\n current?.fiatPayment?.selectedPaymentMethodId;\n\n if (!current) {\n transactionData[transactionId] = {\n fiatPayment: {},\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken?.address?.toLowerCase() !==\n originalPaymentToken?.address?.toLowerCase() ||\n current.paymentToken?.chainId !== originalPaymentToken?.chainId;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n const isAccountOverrideUpdated =\n current.accountOverride !== originalAccountOverride;\n const isFiatAmountUpdated =\n current.fiatPayment?.amountFiat !== originalFiatPaymentAmount;\n const isFiatPaymentMethodUpdated =\n current.fiatPayment?.selectedPaymentMethodId !==\n originalFiatPaymentMethodId;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated ||\n isAccountOverrideUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n\n if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {\n shouldUpdateQuotes = true;\n }\n\n if (isFiatPaymentMethodUpdated) {\n shouldUpdateFiatToken = true;\n }\n });\n\n if (shouldUpdateFiatToken) {\n const transaction = getTransaction(\n transactionId,\n this.messenger,\n ) as TransactionMeta;\n const fiatAsset = deriveFiatAssetForFiatPayment(transaction);\n if (fiatAsset) {\n try {\n this.messenger.call(\n 'RampsController:setSelectedToken',\n fiatAsset.caipAssetId,\n );\n } catch {\n // Intentionally no-op — tokens may not be loaded in RampsController yet.\n }\n }\n }\n\n if (shouldUpdateQuotes) {\n updateQuotes({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger: this.messenger,\n transactionData: this.state.transactionData[transactionId],\n transactionId,\n updateTransactionData: this.#updateTransactionData.bind(this),\n }).catch(noop);\n }\n }\n\n #getStrategiesWithFallback(\n transaction: TransactionMeta,\n ): TransactionPayStrategy[] {\n const strategyCandidates: unknown[] =\n this.#getStrategies?.(transaction) ??\n (this.#getStrategy ? [this.#getStrategy(transaction)] : []);\n\n const validStrategies = strategyCandidates.filter(\n (strategy): strategy is TransactionPayStrategy =>\n isTransactionPayStrategy(strategy),\n );\n\n if (validStrategies.length) {\n return validStrategies;\n }\n\n const transactionData = this.state.transactionData[transaction.id];\n const paymentToken = transactionData?.paymentToken;\n\n return getStrategyOrder(\n this.messenger,\n paymentToken?.chainId,\n paymentToken?.address,\n transaction.type,\n transactionData?.fiatPayment?.selectedPaymentMethodId,\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TransactionPayController.mjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;;;AAK3D,OAAO,EAAE,iBAAiB,EAAE,0CAAsC;AAClE,OAAO,EAAE,kBAAkB,EAAE,2CAAuC;AACpE,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACvB,wBAAoB;AACrB,OAAO,EAAE,cAAc,EAAE,qCAAiC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,kCAA8B;AAWtE,OAAO,EAAE,gBAAgB,EAAE,kCAA8B;AACzD,OAAO,EAAE,YAAY,EAAE,2BAAuB;AAC9C,OAAO,EAAE,mBAAmB,EAAE,mCAA+B;AAC7D,OAAO,EAAE,kBAAkB,EAAE,0BAAsB;AACnD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC5B,gCAA4B;AAE7B,MAAM,yBAAyB,GAAG;IAChC,0BAA0B;IAC1B,aAAa;IACb,sBAAsB;IACtB,mBAAmB;IACnB,oBAAoB;CACZ,CAAC;AAEX,MAAM,aAAa,GAAiD;IAClE,eAAe,EAAE;QACf,sBAAsB,EAAE,KAAK;QAC7B,kBAAkB,EAAE,IAAI;QACxB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,GAAkC,EAAE,CAAC,CAAC;IAC5D,eAAe,EAAE,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,OAAO,wBAAyB,SAAQ,cAI7C;IAWC,YAAY,EACV,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,GAC2B;QAChC,KAAK,CAAC;YACJ,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,aAAa;YACvB,SAAS;YACT,KAAK,EAAE,EAAE,GAAG,eAAe,EAAE,EAAE,GAAG,KAAK,EAAE;SAC1C,CAAC,CAAC;;QAtBI,qEAA4D;QAE5D,wDAEmB;QAEnB,0DAEqB;QAgB5B,uBAAA,IAAI,sDAA6B,wBAAwB,MAAA,CAAC;QAC1D,uBAAA,IAAI,yCAAgB,WAAW,MAAA,CAAC;QAChC,uBAAA,IAAI,2CAAkB,aAAa,MAAA,CAAC;QAEpC,IAAI,CAAC,SAAS,CAAC,4BAA4B,CACzC,IAAI,EACJ,yBAAyB,CAC1B,CAAC;QAEF,2BAA2B,CACzB,SAAS,EACT,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EACtC,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CACvC,CAAC;QAEF,qBAAqB,CACnB,SAAS,EACT,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAChB,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CACvC,CAAC;QAEF,kCAAkC;QAClC,IAAI,cAAc,CAAC;YACjB,aAAa,EAAE,uBAAA,IAAI,gGAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;YACzD,SAAS;YACT,qBAAqB,EAAE,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,oBAAoB,CAClB,aAAqB,EACrB,QAAmC;QAEnC,uBAAA,IAAI,4FAAuB,MAA3B,IAAI,EAAwB,aAAa,EAAE,CAAC,eAAe,EAAE,EAAE;YAC7D,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,mBAAmB,EAAE,eAAe,CAAC,mBAAmB;gBACxD,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,eAAe,EAAE,eAAe,CAAC,eAAe;aACjD,CAAC;YAEF,MAAM,uBAAuB,GAAG,MAAM,CAAC,eAAe,CAAC;YAEvD,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEjB,eAAe,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;YACzD,eAAe,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACjD,eAAe,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACjD,eAAe,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;YACjE,eAAe,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAE3C,IAAI,MAAM,CAAC,eAAe,KAAK,uBAAuB,EAAE,CAAC;gBACvD,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,kBAAkB,CAAC,OAAkC;QACnD,kBAAkB,CAAC,OAAO,EAAE;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,qBAAqB,EAAE,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,iBAAiB,CAAC,OAAiC;QACjD,iBAAiB,CAAC,OAAO,EAAE;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,qBAAqB,EAAE,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,wBAAwB,CACtB,GAAG,IAAkD;QAErD,OAAO,uBAAA,IAAI,0DAA0B,MAA9B,IAAI,EAA2B,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;;OASG;IACH,WAAW,CAAC,WAA4B;QACtC,OAAO,uBAAA,IAAI,gGAA2B,MAA/B,IAAI,EAA4B,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;CAuIF;oVArIwB,aAAqB;IAC1C,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACpB,OAAO,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,6GAGC,aAAqB,EACrB,EAAqD;IAErD,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAElC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACpB,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;QAClC,IAAI,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,oBAAoB,GAAG,OAAO,EAAE,YAAY,CAAC;QACnD,MAAM,cAAc,GAAG,OAAO,EAAE,MAAM,CAAC;QACvC,MAAM,mBAAmB,GAAG,OAAO,EAAE,WAAW,CAAC;QACjD,MAAM,mBAAmB,GAAG,OAAO,EAAE,WAAW,CAAC;QACjD,MAAM,uBAAuB,GAAG,OAAO,EAAE,eAAe,CAAC;QACzD,MAAM,yBAAyB,GAAG,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;QACnE,MAAM,2BAA2B,GAC/B,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC;QAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,eAAe,CAAC,aAAa,CAAC,GAAG;gBAC/B,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,EAAE;aACX,CAAC;YAEF,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;QAED,EAAE,CAAC,OAAO,CAAC,CAAC;QAEZ,MAAM,qBAAqB,GACzB,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE;YAC1C,oBAAoB,EAAE,OAAO,EAAE,WAAW,EAAE;YAC9C,OAAO,CAAC,YAAY,EAAE,OAAO,KAAK,oBAAoB,EAAE,OAAO,CAAC;QAElE,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,KAAK,cAAc,CAAC;QAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,KAAK,mBAAmB,CAAC;QACnE,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,KAAK,mBAAmB,CAAC;QACvE,MAAM,wBAAwB,GAC5B,OAAO,CAAC,eAAe,KAAK,uBAAuB,CAAC;QACtD,MAAM,mBAAmB,GACvB,OAAO,CAAC,WAAW,EAAE,UAAU,KAAK,yBAAyB,CAAC;QAChE,MAAM,0BAA0B,GAC9B,OAAO,CAAC,WAAW,EAAE,uBAAuB;YAC5C,2BAA2B,CAAC;QAE9B,IACE,qBAAqB;YACrB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,wBAAwB,EACxB,CAAC;YACD,mBAAmB,CAAC,aAAa,EAAE,OAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAErE,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,IAAI,mBAAmB,IAAI,0BAA0B,EAAE,CAAC;YACtD,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,IAAI,0BAA0B,EAAE,CAAC;YAC/B,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,cAAc,CAChC,aAAa,EACb,IAAI,CAAC,SAAS,CACI,CAAC;QACrB,MAAM,SAAS,GAAG,6BAA6B,CAC7C,WAAW,EACX,IAAI,CAAC,SAAS,CACf,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,uBAAA,IAAI,4FAAuB,MAA3B,IAAI,EAAwB,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,kBAAkB,CAC/C,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,OAAO,CAClB,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,YAAY,CAAC;YACX,aAAa,EAAE,uBAAA,IAAI,gGAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;YACzD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC;YAC1D,aAAa;YACb,qBAAqB,EAAE,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9D,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;AACH,CAAC,qHAGC,WAA4B;IAE5B,MAAM,kBAAkB,GACtB,uBAAA,IAAI,+CAAe,EAAE,KAArB,IAAI,EAAkB,WAAW,CAAC;QAClC,CAAC,uBAAA,IAAI,6CAAa,CAAC,CAAC,CAAC,CAAC,uBAAA,IAAI,6CAAa,MAAjB,IAAI,EAAc,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9D,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAC/C,CAAC,QAAQ,EAAsC,EAAE,CAC/C,wBAAwB,CAAC,QAAQ,CAAC,CACrC,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,eAAe,EAAE,YAAY,CAAC;IAEnD,OAAO,gBAAgB,CACrB,IAAI,CAAC,SAAS,EACd,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,OAAO,EACrB,WAAW,CAAC,IAAI,EAChB,eAAe,EAAE,WAAW,EAAE,uBAAuB,CACtD,CAAC;AACJ,CAAC","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Draft } from 'immer';\nimport { noop } from 'lodash';\n\nimport { updateFiatPayment } from './actions/update-fiat-payment';\nimport { updatePaymentToken } from './actions/update-payment-token';\nimport {\n CONTROLLER_NAME,\n isTransactionPayStrategy,\n TransactionPayStrategy,\n} from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport { deriveFiatAssetForFiatPayment } from './strategy/fiat/utils';\nimport type {\n GetDelegationTransactionCallback,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdateFiatPaymentRequest,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { getStrategyOrder } from './utils/feature-flags';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport { buildCaipAssetType } from './utils/token';\nimport {\n getTransaction,\n subscribeAssetChanges,\n subscribeTransactionChanges,\n} from './utils/transaction';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'getDelegationTransaction',\n 'getStrategy',\n 'setTransactionConfig',\n 'updateFiatPayment',\n 'updatePaymentToken',\n] as const;\n\nconst stateMetadata: StateMetadata<TransactionPayControllerState> = {\n transactionData: {\n includeInDebugSnapshot: false,\n includeInStateLogs: true,\n persist: false,\n usedInUi: true,\n },\n};\n\nconst getDefaultState = (): TransactionPayControllerState => ({\n transactionData: {},\n});\n\nexport class TransactionPayController extends BaseController<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState,\n TransactionPayControllerMessenger\n> {\n readonly #getDelegationTransaction: GetDelegationTransactionCallback;\n\n readonly #getStrategy?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy;\n\n readonly #getStrategies?: (\n transaction: TransactionMeta,\n ) => TransactionPayStrategy[];\n\n constructor({\n getDelegationTransaction,\n getStrategy,\n getStrategies,\n messenger,\n state,\n }: TransactionPayControllerOptions) {\n super({\n name: CONTROLLER_NAME,\n metadata: stateMetadata,\n messenger,\n state: { ...getDefaultState(), ...state },\n });\n\n this.#getDelegationTransaction = getDelegationTransaction;\n this.#getStrategy = getStrategy;\n this.#getStrategies = getStrategies;\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n\n subscribeTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n subscribeAssetChanges(\n messenger,\n () => this.state,\n this.#updateTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Sets the transaction configuration.\n *\n * The callback receives the current configuration properties and can mutate\n * them in place. Updated values are written back to the transaction data.\n *\n * @param transactionId - The ID of the transaction to configure.\n * @param callback - A callback that receives a mutable {@link TransactionConfig} object.\n */\n setTransactionConfig(\n transactionId: string,\n callback: TransactionConfigCallback,\n ): void {\n this.#updateTransactionData(transactionId, (transactionData) => {\n const config = {\n isMaxAmount: transactionData.isMaxAmount,\n isPostQuote: transactionData.isPostQuote,\n isHyperliquidSource: transactionData.isHyperliquidSource,\n refundTo: transactionData.refundTo,\n accountOverride: transactionData.accountOverride,\n };\n\n const previousAccountOverride = config.accountOverride;\n\n callback(config);\n\n transactionData.accountOverride = config.accountOverride;\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n transactionData.isHyperliquidSource = config.isHyperliquidSource;\n transactionData.refundTo = config.refundTo;\n\n if (config.accountOverride !== previousAccountOverride) {\n transactionData.paymentToken = undefined;\n }\n });\n }\n\n /**\n * Updates the payment token for a transaction.\n *\n * Resolves token metadata and balances, then stores the new payment token\n * in the transaction data. This triggers recalculation of source amounts\n * and quote retrieval.\n *\n * @param request - The payment token update request containing the\n * transaction ID, token address, and chain ID.\n */\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Updates the fiat payment state for a transaction.\n *\n * The request callback receives the current fiat payment state and can\n * mutate it to update properties such as the selected payment method or\n * fiat amount.\n *\n * @param request - The fiat payment update request containing the\n * transaction ID and a callback to mutate fiat payment state.\n */\n updateFiatPayment(request: UpdateFiatPaymentRequest): void {\n updateFiatPayment(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\n\n /**\n * Gets the delegation transaction for a given transaction.\n *\n * Converts the provided transaction into a redeem delegation by delegating\n * to the configured callback. Returns the delegation transaction data\n * including the encoded call data, target address, value, and an optional\n * authorization list.\n *\n * @param args - The arguments forwarded to the {@link GetDelegationTransactionCallback},\n * containing the transaction metadata.\n * @returns A promise resolving to the delegation transaction data.\n */\n getDelegationTransaction(\n ...args: Parameters<GetDelegationTransactionCallback>\n ): ReturnType<GetDelegationTransactionCallback> {\n return this.#getDelegationTransaction(...args);\n }\n\n /**\n * Gets the preferred strategy for a transaction.\n *\n * Returns the first strategy from the ordered list of strategies applicable\n * to the given transaction. Falls back to the default strategy order derived\n * from feature flags when no custom strategy callback is configured.\n *\n * @param transaction - The transaction metadata to determine the strategy for.\n * @returns The preferred {@link TransactionPayStrategy} for the transaction.\n */\n getStrategy(transaction: TransactionMeta): TransactionPayStrategy {\n return this.#getStrategiesWithFallback(transaction)[0];\n }\n\n #removeTransactionData(transactionId: string): void {\n this.update((state) => {\n delete state.transactionData[transactionId];\n });\n }\n\n #updateTransactionData(\n transactionId: string,\n fn: (transactionData: Draft<TransactionData>) => void,\n ): void {\n let shouldUpdateQuotes = false;\n let shouldUpdateFiatToken = false;\n\n this.update((state) => {\n const { transactionData } = state;\n let current = transactionData[transactionId];\n const originalPaymentToken = current?.paymentToken;\n const originalTokens = current?.tokens;\n const originalIsMaxAmount = current?.isMaxAmount;\n const originalIsPostQuote = current?.isPostQuote;\n const originalAccountOverride = current?.accountOverride;\n const originalFiatPaymentAmount = current?.fiatPayment?.amountFiat;\n const originalFiatPaymentMethodId =\n current?.fiatPayment?.selectedPaymentMethodId;\n\n if (!current) {\n transactionData[transactionId] = {\n fiatPayment: {},\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken?.address?.toLowerCase() !==\n originalPaymentToken?.address?.toLowerCase() ||\n current.paymentToken?.chainId !== originalPaymentToken?.chainId;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n const isAccountOverrideUpdated =\n current.accountOverride !== originalAccountOverride;\n const isFiatAmountUpdated =\n current.fiatPayment?.amountFiat !== originalFiatPaymentAmount;\n const isFiatPaymentMethodUpdated =\n current.fiatPayment?.selectedPaymentMethodId !==\n originalFiatPaymentMethodId;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated ||\n isAccountOverrideUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n\n if (isFiatAmountUpdated || isFiatPaymentMethodUpdated) {\n shouldUpdateQuotes = true;\n }\n\n if (isFiatPaymentMethodUpdated) {\n shouldUpdateFiatToken = true;\n }\n });\n\n if (shouldUpdateFiatToken) {\n const transaction = getTransaction(\n transactionId,\n this.messenger,\n ) as TransactionMeta;\n const fiatAsset = deriveFiatAssetForFiatPayment(\n transaction,\n this.messenger,\n );\n if (fiatAsset) {\n this.#updateTransactionData(transactionId, (data) => {\n if (data.fiatPayment) {\n data.fiatPayment.caipAssetId = buildCaipAssetType(\n fiatAsset.chainId,\n fiatAsset.address,\n );\n }\n });\n }\n }\n\n if (shouldUpdateQuotes) {\n updateQuotes({\n getStrategies: this.#getStrategiesWithFallback.bind(this),\n messenger: this.messenger,\n transactionData: this.state.transactionData[transactionId],\n transactionId,\n updateTransactionData: this.#updateTransactionData.bind(this),\n }).catch(noop);\n }\n }\n\n #getStrategiesWithFallback(\n transaction: TransactionMeta,\n ): TransactionPayStrategy[] {\n const strategyCandidates: unknown[] =\n this.#getStrategies?.(transaction) ??\n (this.#getStrategy ? [this.#getStrategy(transaction)] : []);\n\n const validStrategies = strategyCandidates.filter(\n (strategy): strategy is TransactionPayStrategy =>\n isTransactionPayStrategy(strategy),\n );\n\n if (validStrategies.length) {\n return validStrategies;\n }\n\n const transactionData = this.state.transactionData[transaction.id];\n const paymentToken = transactionData?.paymentToken;\n\n return getStrategyOrder(\n this.messenger,\n paymentToken?.chainId,\n paymentToken?.address,\n transaction.type,\n transactionData?.fiatPayment?.selectedPaymentMethodId,\n );\n }\n}\n"]}
|
package/dist/constants.cjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isTransactionPayStrategy = exports.TransactionPayStrategy = exports.STABLECOINS = exports.USDC_DECIMALS = exports.HYPERCORE_USDC_DECIMALS = exports.HYPERCORE_USDC_ADDRESS = exports.POLYGON_USDCE_ADDRESS = exports.ARBITRUM_USDC_ADDRESS = exports.NATIVE_TOKEN_ADDRESS = exports.CHAIN_ID_HYPERCORE = exports.CHAIN_ID_POLYGON = exports.CHAIN_ID_ARBITRUM = exports.CONTROLLER_NAME = void 0;
|
|
3
|
+
exports.isTransactionPayStrategy = exports.TransactionPayStrategy = exports.STABLECOINS = exports.SLIP44_COIN_TYPE_BY_CHAIN = exports.USDC_DECIMALS = exports.HYPERCORE_USDC_DECIMALS = exports.HYPERCORE_USDC_ADDRESS = exports.POLYGON_USDCE_ADDRESS = exports.ARBITRUM_USDC_ADDRESS = exports.NATIVE_TOKEN_ADDRESS = exports.CHAIN_ID_HYPERCORE = exports.CHAIN_ID_POLYGON = exports.CHAIN_ID_MAINNET = exports.CHAIN_ID_ARBITRUM = exports.CONTROLLER_NAME = void 0;
|
|
4
4
|
exports.CONTROLLER_NAME = 'TransactionPayController';
|
|
5
5
|
exports.CHAIN_ID_ARBITRUM = '0xa4b1';
|
|
6
|
+
exports.CHAIN_ID_MAINNET = '0x1';
|
|
6
7
|
exports.CHAIN_ID_POLYGON = '0x89';
|
|
7
8
|
exports.CHAIN_ID_HYPERCORE = '0x539';
|
|
8
9
|
exports.NATIVE_TOKEN_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
@@ -11,6 +12,9 @@ exports.POLYGON_USDCE_ADDRESS = '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174';
|
|
|
11
12
|
exports.HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';
|
|
12
13
|
exports.HYPERCORE_USDC_DECIMALS = 8;
|
|
13
14
|
exports.USDC_DECIMALS = 6;
|
|
15
|
+
exports.SLIP44_COIN_TYPE_BY_CHAIN = {
|
|
16
|
+
[exports.CHAIN_ID_POLYGON]: 966, // POL
|
|
17
|
+
};
|
|
14
18
|
exports.STABLECOINS = {
|
|
15
19
|
// Mainnet
|
|
16
20
|
'0x1': [
|
package/dist/constants.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAG,0BAA0B,CAAC;AAC7C,QAAA,iBAAiB,GAAG,QAAe,CAAC;AACpC,QAAA,gBAAgB,GAAG,MAAa,CAAC;AACjC,QAAA,kBAAkB,GAAG,OAAc,CAAC;AAEpC,QAAA,oBAAoB,GAC/B,4CAAmD,CAAC;AAEzC,QAAA,qBAAqB,GAChC,4CAAmD,CAAC;AAEzC,QAAA,qBAAqB,GAChC,4CAAmD,CAAC;AAEzC,QAAA,sBAAsB,GAAG,oCAAoC,CAAC;AAE9D,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,aAAa,GAAG,CAAC,CAAC;AAElB,QAAA,WAAW,GAAuB;IAC7C,UAAU;IACV,KAAK,EAAE;QACL,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,yBAAiB,CAAC,EAAE,CAAC,6BAAqB,CAAC,WAAW,EAAS,CAAC;IACjE,QAAQ;IACR,QAAQ,EAAE;QACR,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,wBAAgB,CAAC,EAAE,CAAC,6BAAqB,CAAC,WAAW,EAAS,CAAC;IAChE,CAAC,0BAAkB,CAAC,EAAE,CAAC,8BAAsB,CAAC,EAAE,OAAO;CACxD,CAAC;AAEF,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,uCAAa,CAAA;AACf,CAAC,EANW,sBAAsB,sCAAtB,sBAAsB,QAMjC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC;AAClE,CAAC;AAJD,4DAIC","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nexport const CONTROLLER_NAME = 'TransactionPayController';\nexport const CHAIN_ID_ARBITRUM = '0xa4b1' as Hex;\nexport const CHAIN_ID_POLYGON = '0x89' as Hex;\nexport const CHAIN_ID_HYPERCORE = '0x539' as Hex;\n\nexport const NATIVE_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Hex;\n\nexport const ARBITRUM_USDC_ADDRESS =\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' as Hex;\n\nexport const POLYGON_USDCE_ADDRESS =\n '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' as Hex;\n\nexport const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';\n\nexport const HYPERCORE_USDC_DECIMALS = 8;\nexport const USDC_DECIMALS = 6;\n\nexport const STABLECOINS: Record<Hex, Hex[]> = {\n // Mainnet\n '0x1': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC\n '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT\n ],\n [CHAIN_ID_ARBITRUM]: [ARBITRUM_USDC_ADDRESS.toLowerCase() as Hex],\n // Linea\n '0xe708': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0x176211869ca2b568f2a7d4ee941e073a821ee1ff', // USDC\n '0xa219439258ca9da29e9cc4ce5596924745e12b93', // USDT\n ],\n [CHAIN_ID_POLYGON]: [POLYGON_USDCE_ADDRESS.toLowerCase() as Hex],\n [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC\n};\n\nexport enum TransactionPayStrategy {\n Across = 'across',\n Bridge = 'bridge',\n Fiat = 'fiat',\n Relay = 'relay',\n Test = 'test',\n}\n\nconst VALID_STRATEGIES = new Set(Object.values(TransactionPayStrategy));\n\n/**\n * Checks if a value is a valid transaction pay strategy.\n *\n * @param strategy - Candidate strategy value.\n * @returns True if the value is a valid strategy.\n */\nexport function isTransactionPayStrategy(\n strategy: unknown,\n): strategy is TransactionPayStrategy {\n return VALID_STRATEGIES.has(strategy as TransactionPayStrategy);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAG,0BAA0B,CAAC;AAC7C,QAAA,iBAAiB,GAAG,QAAe,CAAC;AACpC,QAAA,gBAAgB,GAAG,KAAY,CAAC;AAChC,QAAA,gBAAgB,GAAG,MAAa,CAAC;AACjC,QAAA,kBAAkB,GAAG,OAAc,CAAC;AAEpC,QAAA,oBAAoB,GAC/B,4CAAmD,CAAC;AAEzC,QAAA,qBAAqB,GAChC,4CAAmD,CAAC;AAEzC,QAAA,qBAAqB,GAChC,4CAAmD,CAAC;AAEzC,QAAA,sBAAsB,GAAG,oCAAoC,CAAC;AAE9D,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,aAAa,GAAG,CAAC,CAAC;AAElB,QAAA,yBAAyB,GAAwB;IAC5D,CAAC,wBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM;CAChC,CAAC;AAEW,QAAA,WAAW,GAAuB;IAC7C,UAAU;IACV,KAAK,EAAE;QACL,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,yBAAiB,CAAC,EAAE,CAAC,6BAAqB,CAAC,WAAW,EAAS,CAAC;IACjE,QAAQ;IACR,QAAQ,EAAE;QACR,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,wBAAgB,CAAC,EAAE,CAAC,6BAAqB,CAAC,WAAW,EAAS,CAAC;IAChE,CAAC,0BAAkB,CAAC,EAAE,CAAC,8BAAsB,CAAC,EAAE,OAAO;CACxD,CAAC;AAEF,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,uCAAa,CAAA;AACf,CAAC,EANW,sBAAsB,sCAAtB,sBAAsB,QAMjC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC;AAClE,CAAC;AAJD,4DAIC","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nexport const CONTROLLER_NAME = 'TransactionPayController';\nexport const CHAIN_ID_ARBITRUM = '0xa4b1' as Hex;\nexport const CHAIN_ID_MAINNET = '0x1' as Hex;\nexport const CHAIN_ID_POLYGON = '0x89' as Hex;\nexport const CHAIN_ID_HYPERCORE = '0x539' as Hex;\n\nexport const NATIVE_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Hex;\n\nexport const ARBITRUM_USDC_ADDRESS =\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' as Hex;\n\nexport const POLYGON_USDCE_ADDRESS =\n '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' as Hex;\n\nexport const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';\n\nexport const HYPERCORE_USDC_DECIMALS = 8;\nexport const USDC_DECIMALS = 6;\n\nexport const SLIP44_COIN_TYPE_BY_CHAIN: Record<Hex, number> = {\n [CHAIN_ID_POLYGON]: 966, // POL\n};\n\nexport const STABLECOINS: Record<Hex, Hex[]> = {\n // Mainnet\n '0x1': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC\n '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT\n ],\n [CHAIN_ID_ARBITRUM]: [ARBITRUM_USDC_ADDRESS.toLowerCase() as Hex],\n // Linea\n '0xe708': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0x176211869ca2b568f2a7d4ee941e073a821ee1ff', // USDC\n '0xa219439258ca9da29e9cc4ce5596924745e12b93', // USDT\n ],\n [CHAIN_ID_POLYGON]: [POLYGON_USDCE_ADDRESS.toLowerCase() as Hex],\n [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC\n};\n\nexport enum TransactionPayStrategy {\n Across = 'across',\n Bridge = 'bridge',\n Fiat = 'fiat',\n Relay = 'relay',\n Test = 'test',\n}\n\nconst VALID_STRATEGIES = new Set(Object.values(TransactionPayStrategy));\n\n/**\n * Checks if a value is a valid transaction pay strategy.\n *\n * @param strategy - Candidate strategy value.\n * @returns True if the value is a valid strategy.\n */\nexport function isTransactionPayStrategy(\n strategy: unknown,\n): strategy is TransactionPayStrategy {\n return VALID_STRATEGIES.has(strategy as TransactionPayStrategy);\n}\n"]}
|
package/dist/constants.d.cts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Hex } from "@metamask/utils";
|
|
2
2
|
export declare const CONTROLLER_NAME = "TransactionPayController";
|
|
3
3
|
export declare const CHAIN_ID_ARBITRUM: `0x${string}`;
|
|
4
|
+
export declare const CHAIN_ID_MAINNET: `0x${string}`;
|
|
4
5
|
export declare const CHAIN_ID_POLYGON: `0x${string}`;
|
|
5
6
|
export declare const CHAIN_ID_HYPERCORE: `0x${string}`;
|
|
6
7
|
export declare const NATIVE_TOKEN_ADDRESS: `0x${string}`;
|
|
@@ -9,6 +10,7 @@ export declare const POLYGON_USDCE_ADDRESS: `0x${string}`;
|
|
|
9
10
|
export declare const HYPERCORE_USDC_ADDRESS = "0x00000000000000000000000000000000";
|
|
10
11
|
export declare const HYPERCORE_USDC_DECIMALS = 8;
|
|
11
12
|
export declare const USDC_DECIMALS = 6;
|
|
13
|
+
export declare const SLIP44_COIN_TYPE_BY_CHAIN: Record<Hex, number>;
|
|
12
14
|
export declare const STABLECOINS: Record<Hex, Hex[]>;
|
|
13
15
|
export declare enum TransactionPayStrategy {
|
|
14
16
|
Across = "across",
|
package/dist/constants.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,eAAkB,CAAC;AACjD,eAAO,MAAM,gBAAgB,eAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,eAAiB,CAAC;AAEjD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAgB1C,CAAC;AAEF,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,sBAAsB,CAEpC"}
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,eAAkB,CAAC;AACjD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,eAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,eAAiB,CAAC;AAEjD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAEzD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAgB1C,CAAC;AAEF,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,sBAAsB,CAEpC"}
|
package/dist/constants.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Hex } from "@metamask/utils";
|
|
2
2
|
export declare const CONTROLLER_NAME = "TransactionPayController";
|
|
3
3
|
export declare const CHAIN_ID_ARBITRUM: `0x${string}`;
|
|
4
|
+
export declare const CHAIN_ID_MAINNET: `0x${string}`;
|
|
4
5
|
export declare const CHAIN_ID_POLYGON: `0x${string}`;
|
|
5
6
|
export declare const CHAIN_ID_HYPERCORE: `0x${string}`;
|
|
6
7
|
export declare const NATIVE_TOKEN_ADDRESS: `0x${string}`;
|
|
@@ -9,6 +10,7 @@ export declare const POLYGON_USDCE_ADDRESS: `0x${string}`;
|
|
|
9
10
|
export declare const HYPERCORE_USDC_ADDRESS = "0x00000000000000000000000000000000";
|
|
10
11
|
export declare const HYPERCORE_USDC_DECIMALS = 8;
|
|
11
12
|
export declare const USDC_DECIMALS = 6;
|
|
13
|
+
export declare const SLIP44_COIN_TYPE_BY_CHAIN: Record<Hex, number>;
|
|
12
14
|
export declare const STABLECOINS: Record<Hex, Hex[]>;
|
|
13
15
|
export declare enum TransactionPayStrategy {
|
|
14
16
|
Across = "across",
|
package/dist/constants.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,eAAkB,CAAC;AACjD,eAAO,MAAM,gBAAgB,eAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,eAAiB,CAAC;AAEjD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAgB1C,CAAC;AAEF,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,sBAAsB,CAEpC"}
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,eAAkB,CAAC;AACjD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,eAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,eAAiB,CAAC;AAEjD,eAAO,MAAM,oBAAoB,eACoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,eACmB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAEzD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAgB1C,CAAC;AAEF,oBAAY,sBAAsB;IAChC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,sBAAsB,CAEpC"}
|
package/dist/constants.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const CONTROLLER_NAME = 'TransactionPayController';
|
|
2
2
|
export const CHAIN_ID_ARBITRUM = '0xa4b1';
|
|
3
|
+
export const CHAIN_ID_MAINNET = '0x1';
|
|
3
4
|
export const CHAIN_ID_POLYGON = '0x89';
|
|
4
5
|
export const CHAIN_ID_HYPERCORE = '0x539';
|
|
5
6
|
export const NATIVE_TOKEN_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
@@ -8,6 +9,9 @@ export const POLYGON_USDCE_ADDRESS = '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174
|
|
|
8
9
|
export const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';
|
|
9
10
|
export const HYPERCORE_USDC_DECIMALS = 8;
|
|
10
11
|
export const USDC_DECIMALS = 6;
|
|
12
|
+
export const SLIP44_COIN_TYPE_BY_CHAIN = {
|
|
13
|
+
[CHAIN_ID_POLYGON]: 966, // POL
|
|
14
|
+
};
|
|
11
15
|
export const STABLECOINS = {
|
|
12
16
|
// Mainnet
|
|
13
17
|
'0x1': [
|
package/dist/constants.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAe,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oCAAoC,CAAC;AAE3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC7C,UAAU;IACV,KAAK,EAAE;QACL,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,iBAAiB,CAAC,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAS,CAAC;IACjE,QAAQ;IACR,QAAQ,EAAE;QACR,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,gBAAgB,CAAC,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAS,CAAC;IAChE,CAAC,kBAAkB,CAAC,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO;CACxD,CAAC;AAEF,MAAM,CAAN,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,uCAAa,CAAA;AACf,CAAC,EANW,sBAAsB,KAAtB,sBAAsB,QAMjC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC;AAClE,CAAC","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nexport const CONTROLLER_NAME = 'TransactionPayController';\nexport const CHAIN_ID_ARBITRUM = '0xa4b1' as Hex;\nexport const CHAIN_ID_POLYGON = '0x89' as Hex;\nexport const CHAIN_ID_HYPERCORE = '0x539' as Hex;\n\nexport const NATIVE_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Hex;\n\nexport const ARBITRUM_USDC_ADDRESS =\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' as Hex;\n\nexport const POLYGON_USDCE_ADDRESS =\n '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' as Hex;\n\nexport const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';\n\nexport const HYPERCORE_USDC_DECIMALS = 8;\nexport const USDC_DECIMALS = 6;\n\nexport const STABLECOINS: Record<Hex, Hex[]> = {\n // Mainnet\n '0x1': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC\n '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT\n ],\n [CHAIN_ID_ARBITRUM]: [ARBITRUM_USDC_ADDRESS.toLowerCase() as Hex],\n // Linea\n '0xe708': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0x176211869ca2b568f2a7d4ee941e073a821ee1ff', // USDC\n '0xa219439258ca9da29e9cc4ce5596924745e12b93', // USDT\n ],\n [CHAIN_ID_POLYGON]: [POLYGON_USDCE_ADDRESS.toLowerCase() as Hex],\n [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC\n};\n\nexport enum TransactionPayStrategy {\n Across = 'across',\n Bridge = 'bridge',\n Fiat = 'fiat',\n Relay = 'relay',\n Test = 'test',\n}\n\nconst VALID_STRATEGIES = new Set(Object.values(TransactionPayStrategy));\n\n/**\n * Checks if a value is a valid transaction pay strategy.\n *\n * @param strategy - Candidate strategy value.\n * @returns True if the value is a valid strategy.\n */\nexport function isTransactionPayStrategy(\n strategy: unknown,\n): strategy is TransactionPayStrategy {\n return VALID_STRATEGIES.has(strategy as TransactionPayStrategy);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAe,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAChC,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oCAAoC,CAAC;AAE3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B,MAAM,CAAC,MAAM,yBAAyB,GAAwB;IAC5D,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC7C,UAAU;IACV,KAAK,EAAE;QACL,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,iBAAiB,CAAC,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAS,CAAC;IACjE,QAAQ;IACR,QAAQ,EAAE;QACR,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;QACrD,4CAA4C,EAAE,OAAO;KACtD;IACD,CAAC,gBAAgB,CAAC,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAS,CAAC;IAChE,CAAC,kBAAkB,CAAC,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO;CACxD,CAAC;AAEF,MAAM,CAAN,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,uCAAa,CAAA;AACf,CAAC,EANW,sBAAsB,KAAtB,sBAAsB,QAMjC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAiB;IAEjB,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAkC,CAAC,CAAC;AAClE,CAAC","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nexport const CONTROLLER_NAME = 'TransactionPayController';\nexport const CHAIN_ID_ARBITRUM = '0xa4b1' as Hex;\nexport const CHAIN_ID_MAINNET = '0x1' as Hex;\nexport const CHAIN_ID_POLYGON = '0x89' as Hex;\nexport const CHAIN_ID_HYPERCORE = '0x539' as Hex;\n\nexport const NATIVE_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Hex;\n\nexport const ARBITRUM_USDC_ADDRESS =\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831' as Hex;\n\nexport const POLYGON_USDCE_ADDRESS =\n '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' as Hex;\n\nexport const HYPERCORE_USDC_ADDRESS = '0x00000000000000000000000000000000';\n\nexport const HYPERCORE_USDC_DECIMALS = 8;\nexport const USDC_DECIMALS = 6;\n\nexport const SLIP44_COIN_TYPE_BY_CHAIN: Record<Hex, number> = {\n [CHAIN_ID_POLYGON]: 966, // POL\n};\n\nexport const STABLECOINS: Record<Hex, Hex[]> = {\n // Mainnet\n '0x1': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC\n '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT\n ],\n [CHAIN_ID_ARBITRUM]: [ARBITRUM_USDC_ADDRESS.toLowerCase() as Hex],\n // Linea\n '0xe708': [\n '0xaca92e438df0b2401ff60da7e4337b687a2435da', // MUSD\n '0x176211869ca2b568f2a7d4ee941e073a821ee1ff', // USDC\n '0xa219439258ca9da29e9cc4ce5596924745e12b93', // USDT\n ],\n [CHAIN_ID_POLYGON]: [POLYGON_USDCE_ADDRESS.toLowerCase() as Hex],\n [CHAIN_ID_HYPERCORE]: [HYPERCORE_USDC_ADDRESS], // USDC\n};\n\nexport enum TransactionPayStrategy {\n Across = 'across',\n Bridge = 'bridge',\n Fiat = 'fiat',\n Relay = 'relay',\n Test = 'test',\n}\n\nconst VALID_STRATEGIES = new Set(Object.values(TransactionPayStrategy));\n\n/**\n * Checks if a value is a valid transaction pay strategy.\n *\n * @param strategy - Candidate strategy value.\n * @returns True if the value is a valid strategy.\n */\nexport function isTransactionPayStrategy(\n strategy: unknown,\n): strategy is TransactionPayStrategy {\n return VALID_STRATEGIES.has(strategy as TransactionPayStrategy);\n}\n"]}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FIAT_ASSET_ID_BY_TX_TYPE = exports.DEFAULT_FIAT_CURRENCY = void 0;
|
|
3
|
+
exports.FIAT_ASSET_ID_BY_TX_TYPE = exports.ETH_MAINNET_FIAT_ASSET = exports.DEFAULT_FIAT_CURRENCY = void 0;
|
|
4
4
|
const transaction_controller_1 = require("@metamask/transaction-controller");
|
|
5
5
|
const constants_1 = require("../../constants.cjs");
|
|
6
6
|
exports.DEFAULT_FIAT_CURRENCY = 'USD';
|
|
7
7
|
const POLYGON_POL_FIAT_ASSET = {
|
|
8
8
|
address: '0x0000000000000000000000000000000000001010',
|
|
9
|
-
caipAssetId: 'eip155:137/slip44:966',
|
|
10
9
|
chainId: constants_1.CHAIN_ID_POLYGON,
|
|
11
|
-
decimals: 18,
|
|
12
10
|
};
|
|
13
11
|
const ARBITRUM_ETH_FIAT_ASSET = {
|
|
14
12
|
address: constants_1.NATIVE_TOKEN_ADDRESS,
|
|
15
|
-
caipAssetId: 'eip155:42161/slip44:60',
|
|
16
13
|
chainId: constants_1.CHAIN_ID_ARBITRUM,
|
|
17
|
-
decimals: 18,
|
|
18
14
|
};
|
|
19
|
-
|
|
15
|
+
exports.ETH_MAINNET_FIAT_ASSET = {
|
|
16
|
+
address: constants_1.NATIVE_TOKEN_ADDRESS,
|
|
17
|
+
chainId: constants_1.CHAIN_ID_MAINNET,
|
|
18
|
+
};
|
|
20
19
|
exports.FIAT_ASSET_ID_BY_TX_TYPE = {
|
|
21
20
|
[transaction_controller_1.TransactionType.predictDeposit]: POLYGON_POL_FIAT_ASSET,
|
|
22
21
|
[transaction_controller_1.TransactionType.perpsDeposit]: ARBITRUM_ETH_FIAT_ASSET,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":";;;AAAA,6EAAmE;AAGnE,
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":";;;AAAA,6EAAmE;AAGnE,mDAKyB;AAEZ,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAO3C,MAAM,sBAAsB,GAA4B;IACtD,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,4BAAgB;CAC1B,CAAC;AAEF,MAAM,uBAAuB,GAA4B;IACvD,OAAO,EAAE,gCAAoB;IAC7B,OAAO,EAAE,6BAAiB;CAC3B,CAAC;AAEW,QAAA,sBAAsB,GAA4B;IAC7D,OAAO,EAAE,gCAAoB;IAC7B,OAAO,EAAE,4BAAgB;CAC1B,CAAC;AAEW,QAAA,wBAAwB,GAEjC;IACF,CAAC,wCAAe,CAAC,cAAc,CAAC,EAAE,sBAAsB;IACxD,CAAC,wCAAe,CAAC,YAAY,CAAC,EAAE,uBAAuB;IACvD,CAAC,wCAAe,CAAC,oBAAoB,CAAC,EAAE,uBAAuB;CAChE,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CHAIN_ID_ARBITRUM,\n CHAIN_ID_MAINNET,\n CHAIN_ID_POLYGON,\n NATIVE_TOKEN_ADDRESS,\n} from '../../constants';\n\nexport const DEFAULT_FIAT_CURRENCY = 'USD';\n\nexport type TransactionPayFiatAsset = {\n address: Hex;\n chainId: Hex;\n};\n\nconst POLYGON_POL_FIAT_ASSET: TransactionPayFiatAsset = {\n address: '0x0000000000000000000000000000000000001010',\n chainId: CHAIN_ID_POLYGON,\n};\n\nconst ARBITRUM_ETH_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_ARBITRUM,\n};\n\nexport const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_MAINNET,\n};\n\nexport const FIAT_ASSET_ID_BY_TX_TYPE: Partial<\n Record<TransactionType, TransactionPayFiatAsset>\n> = {\n [TransactionType.predictDeposit]: POLYGON_POL_FIAT_ASSET,\n [TransactionType.perpsDeposit]: ARBITRUM_ETH_FIAT_ASSET,\n [TransactionType.perpsDepositAndOrder]: ARBITRUM_ETH_FIAT_ASSET,\n};\n"]}
|
|
@@ -3,9 +3,8 @@ import type { Hex } from "@metamask/utils";
|
|
|
3
3
|
export declare const DEFAULT_FIAT_CURRENCY = "USD";
|
|
4
4
|
export type TransactionPayFiatAsset = {
|
|
5
5
|
address: Hex;
|
|
6
|
-
caipAssetId: string;
|
|
7
6
|
chainId: Hex;
|
|
8
|
-
decimals: number;
|
|
9
7
|
};
|
|
8
|
+
export declare const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset;
|
|
10
9
|
export declare const FIAT_ASSET_ID_BY_TX_TYPE: Partial<Record<TransactionType, TransactionPayFiatAsset>>;
|
|
11
10
|
//# sourceMappingURL=constants.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAS3C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAYF,eAAO,MAAM,sBAAsB,EAAE,uBAGpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAC5C,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAKjD,CAAC"}
|
|
@@ -3,9 +3,8 @@ import type { Hex } from "@metamask/utils";
|
|
|
3
3
|
export declare const DEFAULT_FIAT_CURRENCY = "USD";
|
|
4
4
|
export type TransactionPayFiatAsset = {
|
|
5
5
|
address: Hex;
|
|
6
|
-
caipAssetId: string;
|
|
7
6
|
chainId: Hex;
|
|
8
|
-
decimals: number;
|
|
9
7
|
};
|
|
8
|
+
export declare const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset;
|
|
10
9
|
export declare const FIAT_ASSET_ID_BY_TX_TYPE: Partial<Record<TransactionType, TransactionPayFiatAsset>>;
|
|
11
10
|
//# sourceMappingURL=constants.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAS3C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAYF,eAAO,MAAM,sBAAsB,EAAE,uBAGpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAC5C,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAKjD,CAAC"}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { TransactionType } from "@metamask/transaction-controller";
|
|
2
|
-
import { CHAIN_ID_ARBITRUM, CHAIN_ID_POLYGON, NATIVE_TOKEN_ADDRESS } from "../../constants.mjs";
|
|
2
|
+
import { CHAIN_ID_ARBITRUM, CHAIN_ID_MAINNET, CHAIN_ID_POLYGON, NATIVE_TOKEN_ADDRESS } from "../../constants.mjs";
|
|
3
3
|
export const DEFAULT_FIAT_CURRENCY = 'USD';
|
|
4
4
|
const POLYGON_POL_FIAT_ASSET = {
|
|
5
5
|
address: '0x0000000000000000000000000000000000001010',
|
|
6
|
-
caipAssetId: 'eip155:137/slip44:966',
|
|
7
6
|
chainId: CHAIN_ID_POLYGON,
|
|
8
|
-
decimals: 18,
|
|
9
7
|
};
|
|
10
8
|
const ARBITRUM_ETH_FIAT_ASSET = {
|
|
11
9
|
address: NATIVE_TOKEN_ADDRESS,
|
|
12
|
-
caipAssetId: 'eip155:42161/slip44:60',
|
|
13
10
|
chainId: CHAIN_ID_ARBITRUM,
|
|
14
|
-
decimals: 18,
|
|
15
11
|
};
|
|
16
|
-
|
|
12
|
+
export const ETH_MAINNET_FIAT_ASSET = {
|
|
13
|
+
address: NATIVE_TOKEN_ADDRESS,
|
|
14
|
+
chainId: CHAIN_ID_MAINNET,
|
|
15
|
+
};
|
|
17
16
|
export const FIAT_ASSET_ID_BY_TX_TYPE = {
|
|
18
17
|
[TransactionType.predictDeposit]: POLYGON_POL_FIAT_ASSET,
|
|
19
18
|
[TransactionType.perpsDeposit]: ARBITRUM_ETH_FIAT_ASSET,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AAGnE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACrB,4BAAwB;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../../src/strategy/fiat/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AAGnE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACrB,4BAAwB;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAO3C,MAAM,sBAAsB,GAA4B;IACtD,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,uBAAuB,GAA4B;IACvD,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAA4B;IAC7D,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAEjC;IACF,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,sBAAsB;IACxD,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,uBAAuB;IACvD,CAAC,eAAe,CAAC,oBAAoB,CAAC,EAAE,uBAAuB;CAChE,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n CHAIN_ID_ARBITRUM,\n CHAIN_ID_MAINNET,\n CHAIN_ID_POLYGON,\n NATIVE_TOKEN_ADDRESS,\n} from '../../constants';\n\nexport const DEFAULT_FIAT_CURRENCY = 'USD';\n\nexport type TransactionPayFiatAsset = {\n address: Hex;\n chainId: Hex;\n};\n\nconst POLYGON_POL_FIAT_ASSET: TransactionPayFiatAsset = {\n address: '0x0000000000000000000000000000000000001010',\n chainId: CHAIN_ID_POLYGON,\n};\n\nconst ARBITRUM_ETH_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_ARBITRUM,\n};\n\nexport const ETH_MAINNET_FIAT_ASSET: TransactionPayFiatAsset = {\n address: NATIVE_TOKEN_ADDRESS,\n chainId: CHAIN_ID_MAINNET,\n};\n\nexport const FIAT_ASSET_ID_BY_TX_TYPE: Partial<\n Record<TransactionType, TransactionPayFiatAsset>\n> = {\n [TransactionType.predictDeposit]: POLYGON_POL_FIAT_ASSET,\n [TransactionType.perpsDeposit]: ARBITRUM_ETH_FIAT_ASSET,\n [TransactionType.perpsDepositAndOrder]: ARBITRUM_ETH_FIAT_ASSET,\n};\n"]}
|
|
@@ -31,11 +31,8 @@ async function getFiatQuotes(request) {
|
|
|
31
31
|
const amountFiat = transactionData?.fiatPayment?.amountFiat;
|
|
32
32
|
const walletAddress = transaction.txParams.from;
|
|
33
33
|
const requiredTokens = getRequiredTokens(transactionData?.tokens);
|
|
34
|
-
const fiatAsset = (0, utils_2.deriveFiatAssetForFiatPayment)(transaction);
|
|
35
|
-
if (!amountFiat ||
|
|
36
|
-
!fiatPaymentMethod ||
|
|
37
|
-
!requiredTokens.length ||
|
|
38
|
-
!fiatAsset) {
|
|
34
|
+
const fiatAsset = (0, utils_2.deriveFiatAssetForFiatPayment)(transaction, messenger);
|
|
35
|
+
if (!amountFiat || !fiatPaymentMethod || !requiredTokens.length) {
|
|
39
36
|
return [];
|
|
40
37
|
}
|
|
41
38
|
try {
|
|
@@ -119,7 +116,7 @@ async function getRampsQuote({ adjustedAmount, fiatAsset, fiatPaymentMethod, mes
|
|
|
119
116
|
const selectedProviderId = rampsState.providers.selected?.id;
|
|
120
117
|
const quotes = await messenger.call('RampsController:getQuotes', {
|
|
121
118
|
amount: adjustedAmount,
|
|
122
|
-
assetId: fiatAsset.
|
|
119
|
+
assetId: (0, token_1.buildCaipAssetType)(fiatAsset.chainId, fiatAsset.address),
|
|
123
120
|
fiat: constants_2.DEFAULT_FIAT_CURRENCY,
|
|
124
121
|
paymentMethods: [fiatPaymentMethod],
|
|
125
122
|
providers: selectedProviderId ? [selectedProviderId] : undefined,
|
|
@@ -140,7 +137,11 @@ function buildRelayRequestFromAmountFiat({ amountFiat, fiatAsset, messenger, req
|
|
|
140
137
|
if (!sourceFiatRate) {
|
|
141
138
|
return undefined;
|
|
142
139
|
}
|
|
143
|
-
const
|
|
140
|
+
const tokenInfo = (0, token_1.getTokenInfo)(messenger, fiatAsset.address, fiatAsset.chainId);
|
|
141
|
+
if (!tokenInfo) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
const sourceAmountRaw = (0, token_1.computeRawFromFiatAmount)(amountFiat, tokenInfo.decimals, sourceFiatRate.usdRate);
|
|
144
145
|
if (!sourceAmountRaw) {
|
|
145
146
|
return undefined;
|
|
146
147
|
}
|