@metamask/transaction-pay-controller 20.1.0 → 21.0.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.
Files changed (93) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/dist/helpers/TransactionPayPublishHook.cjs +2 -1
  3. package/dist/helpers/TransactionPayPublishHook.cjs.map +1 -1
  4. package/dist/helpers/TransactionPayPublishHook.d.cts.map +1 -1
  5. package/dist/helpers/TransactionPayPublishHook.d.mts.map +1 -1
  6. package/dist/helpers/TransactionPayPublishHook.mjs +2 -1
  7. package/dist/helpers/TransactionPayPublishHook.mjs.map +1 -1
  8. package/dist/strategy/across/across-quotes.cjs +137 -41
  9. package/dist/strategy/across/across-quotes.cjs.map +1 -1
  10. package/dist/strategy/across/across-quotes.d.cts.map +1 -1
  11. package/dist/strategy/across/across-quotes.d.mts.map +1 -1
  12. package/dist/strategy/across/across-quotes.mjs +138 -42
  13. package/dist/strategy/across/across-quotes.mjs.map +1 -1
  14. package/dist/strategy/across/across-submit.cjs +5 -0
  15. package/dist/strategy/across/across-submit.cjs.map +1 -1
  16. package/dist/strategy/across/across-submit.mjs +5 -0
  17. package/dist/strategy/across/across-submit.mjs.map +1 -1
  18. package/dist/strategy/fiat/constants.cjs +2 -1
  19. package/dist/strategy/fiat/constants.cjs.map +1 -1
  20. package/dist/strategy/fiat/constants.d.cts +1 -0
  21. package/dist/strategy/fiat/constants.d.cts.map +1 -1
  22. package/dist/strategy/fiat/constants.d.mts +1 -0
  23. package/dist/strategy/fiat/constants.d.mts.map +1 -1
  24. package/dist/strategy/fiat/constants.mjs +1 -0
  25. package/dist/strategy/fiat/constants.mjs.map +1 -1
  26. package/dist/strategy/fiat/fiat-quotes.cjs +31 -9
  27. package/dist/strategy/fiat/fiat-quotes.cjs.map +1 -1
  28. package/dist/strategy/fiat/fiat-quotes.d.cts.map +1 -1
  29. package/dist/strategy/fiat/fiat-quotes.d.mts.map +1 -1
  30. package/dist/strategy/fiat/fiat-quotes.mjs +32 -10
  31. package/dist/strategy/fiat/fiat-quotes.mjs.map +1 -1
  32. package/dist/strategy/fiat/types.cjs.map +1 -1
  33. package/dist/strategy/fiat/types.d.cts +1 -2
  34. package/dist/strategy/fiat/types.d.cts.map +1 -1
  35. package/dist/strategy/fiat/types.d.mts +1 -2
  36. package/dist/strategy/fiat/types.d.mts.map +1 -1
  37. package/dist/strategy/fiat/types.mjs.map +1 -1
  38. package/dist/strategy/fiat/utils.cjs +1 -7
  39. package/dist/strategy/fiat/utils.cjs.map +1 -1
  40. package/dist/strategy/fiat/utils.d.cts +0 -2
  41. package/dist/strategy/fiat/utils.d.cts.map +1 -1
  42. package/dist/strategy/fiat/utils.d.mts +0 -2
  43. package/dist/strategy/fiat/utils.d.mts.map +1 -1
  44. package/dist/strategy/fiat/utils.mjs +0 -5
  45. package/dist/strategy/fiat/utils.mjs.map +1 -1
  46. package/dist/strategy/relay/RelayStrategy.cjs +7 -1
  47. package/dist/strategy/relay/RelayStrategy.cjs.map +1 -1
  48. package/dist/strategy/relay/RelayStrategy.d.cts.map +1 -1
  49. package/dist/strategy/relay/RelayStrategy.d.mts.map +1 -1
  50. package/dist/strategy/relay/RelayStrategy.mjs +7 -1
  51. package/dist/strategy/relay/RelayStrategy.mjs.map +1 -1
  52. package/dist/strategy/relay/relay-api.cjs +28 -4
  53. package/dist/strategy/relay/relay-api.cjs.map +1 -1
  54. package/dist/strategy/relay/relay-api.d.cts.map +1 -1
  55. package/dist/strategy/relay/relay-api.d.mts.map +1 -1
  56. package/dist/strategy/relay/relay-api.mjs +28 -4
  57. package/dist/strategy/relay/relay-api.mjs.map +1 -1
  58. package/dist/strategy/relay/relay-max-gas-station.cjs +1 -1
  59. package/dist/strategy/relay/relay-max-gas-station.cjs.map +1 -1
  60. package/dist/strategy/relay/relay-max-gas-station.mjs +1 -1
  61. package/dist/strategy/relay/relay-max-gas-station.mjs.map +1 -1
  62. package/dist/strategy/relay/relay-quotes.cjs +1 -1
  63. package/dist/strategy/relay/relay-quotes.cjs.map +1 -1
  64. package/dist/strategy/relay/relay-quotes.mjs +1 -1
  65. package/dist/strategy/relay/relay-quotes.mjs.map +1 -1
  66. package/dist/strategy/relay/relay-submit.cjs +8 -1
  67. package/dist/strategy/relay/relay-submit.cjs.map +1 -1
  68. package/dist/strategy/relay/relay-submit.mjs +8 -1
  69. package/dist/strategy/relay/relay-submit.mjs.map +1 -1
  70. package/dist/types.cjs.map +1 -1
  71. package/dist/types.d.cts +9 -6
  72. package/dist/types.d.cts.map +1 -1
  73. package/dist/types.d.mts +9 -6
  74. package/dist/types.d.mts.map +1 -1
  75. package/dist/types.mjs.map +1 -1
  76. package/dist/{strategy/relay → utils}/gas-station.cjs +4 -4
  77. package/dist/{strategy/relay/gas-station.mjs.map → utils/gas-station.cjs.map} +1 -1
  78. package/dist/{strategy/relay → utils}/gas-station.d.cts +1 -1
  79. package/dist/utils/gas-station.d.cts.map +1 -0
  80. package/dist/{strategy/relay → utils}/gas-station.d.mts +1 -1
  81. package/dist/utils/gas-station.d.mts.map +1 -0
  82. package/dist/{strategy/relay → utils}/gas-station.mjs +4 -4
  83. package/dist/utils/gas-station.mjs.map +1 -0
  84. package/dist/utils/required-tokens.cjs +2 -46
  85. package/dist/utils/required-tokens.cjs.map +1 -1
  86. package/dist/utils/required-tokens.d.cts.map +1 -1
  87. package/dist/utils/required-tokens.d.mts.map +1 -1
  88. package/dist/utils/required-tokens.mjs +3 -47
  89. package/dist/utils/required-tokens.mjs.map +1 -1
  90. package/package.json +3 -3
  91. package/dist/strategy/relay/gas-station.cjs.map +0 -1
  92. package/dist/strategy/relay/gas-station.d.cts.map +0 -1
  93. package/dist/strategy/relay/gas-station.d.mts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"gas-station.cjs","sourceRoot":"","sources":["../../../src/strategy/relay/gas-station.ts"],"names":[],"mappings":"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","sourcesContent":["import { toHex } from '@metamask/controller-utils';\nimport type { GasFeeToken } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport { projectLogger } from '../../logger';\nimport type {\n Amount,\n QuoteRequest,\n TransactionPayControllerMessenger,\n} from '../../types';\nimport { getFeatureFlags, isEIP7702Chain } from '../../utils/feature-flags';\nimport { calculateGasFeeTokenCost } from '../../utils/gas';\n\nconst log = createModuleLogger(projectLogger, 'relay-gas-station');\n\ntype GasStationCostParams = {\n firstStepData: {\n data: Hex;\n to: Hex;\n value?: string;\n };\n messenger: TransactionPayControllerMessenger;\n request: Pick<QuoteRequest, 'from' | 'sourceChainId' | 'sourceTokenAddress'>;\n totalGasEstimate: number;\n totalItemCount: number;\n};\n\nexport type GasStationEligibility = {\n chainSupportsGasStation: boolean;\n isDisabledChain: boolean;\n isEligible: boolean;\n};\n\nexport function getGasStationEligibility(\n messenger: TransactionPayControllerMessenger,\n sourceChainId: QuoteRequest['sourceChainId'],\n): GasStationEligibility {\n const { relayDisabledGasStationChains } = getFeatureFlags(messenger);\n const chainSupportsGasStation = isEIP7702Chain(messenger, sourceChainId);\n\n const isDisabledChain = relayDisabledGasStationChains.includes(sourceChainId);\n\n return {\n chainSupportsGasStation,\n isDisabledChain,\n isEligible: !isDisabledChain && chainSupportsGasStation,\n };\n}\n\nexport async function getGasStationCostInSourceTokenRaw({\n firstStepData,\n messenger,\n request,\n totalGasEstimate,\n totalItemCount,\n}: GasStationCostParams): Promise<Amount | undefined> {\n const { data, to, value } = firstStepData;\n const { from, sourceChainId, sourceTokenAddress } = request;\n\n let gasFeeTokens: GasFeeToken[];\n\n try {\n gasFeeTokens = await messenger.call(\n 'TransactionController:getGasFeeTokens',\n {\n chainId: sourceChainId,\n data,\n from,\n to,\n value: toHex(value ?? '0'),\n },\n );\n } catch (error) {\n log('Failed to estimate gas fee tokens', {\n error,\n sourceChainId,\n });\n return undefined;\n }\n\n const gasFeeToken = gasFeeTokens.find(\n (singleGasFeeToken) =>\n singleGasFeeToken.tokenAddress.toLowerCase() ===\n sourceTokenAddress.toLowerCase(),\n );\n\n if (!gasFeeToken) {\n log('No matching source token in gas fee token estimate', {\n sourceTokenAddress,\n sourceChainId,\n });\n return undefined;\n }\n\n const gasFeeTokenWithNormalizedAmount = {\n ...gasFeeToken,\n amount: toHex(\n getNormalizedGasFeeTokenAmount({\n gasFeeToken,\n totalGasEstimate,\n totalItemCount,\n }),\n ),\n };\n\n const gasFeeTokenCost = calculateGasFeeTokenCost({\n chainId: sourceChainId,\n gasFeeToken: gasFeeTokenWithNormalizedAmount,\n messenger,\n });\n\n if (!gasFeeTokenCost) {\n log('Unable to calculate gas fee token cost using fiat rates', {\n sourceTokenAddress,\n sourceChainId,\n });\n return undefined;\n }\n\n log('Estimated gas station cost for source token', {\n amount: gasFeeTokenCost.raw,\n sourceTokenAddress,\n sourceChainId,\n });\n\n return gasFeeTokenCost;\n}\n\nfunction getNormalizedGasFeeTokenAmount({\n gasFeeToken,\n totalGasEstimate,\n totalItemCount,\n}: {\n gasFeeToken: GasFeeToken;\n totalGasEstimate: number;\n totalItemCount: number;\n}): string {\n let amount = new BigNumber(gasFeeToken.amount);\n\n if (totalItemCount > 1) {\n const gas = new BigNumber(gasFeeToken.gas);\n const gasFeeAmount = new BigNumber(gasFeeToken.amount);\n\n if (totalGasEstimate > 0 && gas.isGreaterThan(0)) {\n const gasRate = gasFeeAmount.dividedBy(gas);\n amount = gasRate.multipliedBy(totalGasEstimate);\n }\n }\n\n return amount.integerValue(BigNumber.ROUND_CEIL).toFixed(0);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gas-station.d.cts","sourceRoot":"","sources":["../../../src/strategy/relay/gas-station.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAK3C,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,iCAAiC,EAClC,wBAAoB;AAMrB,KAAK,oBAAoB,GAAG;IAC1B,aAAa,EAAE;QACb,IAAI,EAAE,GAAG,CAAC;QACV,EAAE,EAAE,GAAG,CAAC;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,EAAE,iCAAiC,CAAC;IAC7C,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,oBAAoB,CAAC,CAAC;IAC7E,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iCAAiC,EAC5C,aAAa,EAAE,YAAY,CAAC,eAAe,CAAC,GAC3C,qBAAqB,CAWvB;AAED,wBAAsB,iCAAiC,CAAC,EACtD,aAAa,EACb,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,cAAc,GACf,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuEpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gas-station.d.mts","sourceRoot":"","sources":["../../../src/strategy/relay/gas-station.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAK3C,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,iCAAiC,EAClC,wBAAoB;AAMrB,KAAK,oBAAoB,GAAG;IAC1B,aAAa,EAAE;QACb,IAAI,EAAE,GAAG,CAAC;QACV,EAAE,EAAE,GAAG,CAAC;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,EAAE,iCAAiC,CAAC;IAC7C,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,oBAAoB,CAAC,CAAC;IAC7E,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iCAAiC,EAC5C,aAAa,EAAE,YAAY,CAAC,eAAe,CAAC,GAC3C,qBAAqB,CAWvB;AAED,wBAAsB,iCAAiC,CAAC,EACtD,aAAa,EACb,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,cAAc,GACf,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuEpD"}