@metamask/transaction-pay-controller 12.2.0 → 13.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.
- package/CHANGELOG.md +25 -1
- package/dist/TransactionPayController.cjs +15 -4
- package/dist/TransactionPayController.cjs.map +1 -1
- package/dist/TransactionPayController.d.cts +2 -2
- package/dist/TransactionPayController.d.cts.map +1 -1
- package/dist/TransactionPayController.d.mts +2 -2
- package/dist/TransactionPayController.d.mts.map +1 -1
- package/dist/TransactionPayController.mjs +15 -4
- package/dist/TransactionPayController.mjs.map +1 -1
- package/dist/actions/update-payment-token.cjs +1 -1
- package/dist/actions/update-payment-token.cjs.map +1 -1
- package/dist/actions/update-payment-token.d.cts +1 -1
- package/dist/actions/update-payment-token.d.mts +1 -1
- package/dist/actions/update-payment-token.mjs +1 -1
- package/dist/actions/update-payment-token.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/strategy/relay/relay-quotes.cjs +19 -7
- package/dist/strategy/relay/relay-quotes.cjs.map +1 -1
- package/dist/strategy/relay/relay-quotes.d.cts.map +1 -1
- package/dist/strategy/relay/relay-quotes.d.mts.map +1 -1
- package/dist/strategy/relay/relay-quotes.mjs +19 -7
- package/dist/strategy/relay/relay-quotes.mjs.map +1 -1
- package/dist/strategy/relay/relay-submit.cjs +68 -21
- package/dist/strategy/relay/relay-submit.cjs.map +1 -1
- package/dist/strategy/relay/relay-submit.d.cts.map +1 -1
- package/dist/strategy/relay/relay-submit.d.mts.map +1 -1
- package/dist/strategy/relay/relay-submit.mjs +68 -21
- package/dist/strategy/relay/relay-submit.mjs.map +1 -1
- package/dist/tests/messenger-mock.d.cts +3 -3
- package/dist/tests/messenger-mock.d.mts +3 -3
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +48 -9
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +48 -9
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/quotes.cjs +67 -5
- package/dist/utils/quotes.cjs.map +1 -1
- package/dist/utils/quotes.d.cts.map +1 -1
- package/dist/utils/quotes.d.mts.map +1 -1
- package/dist/utils/quotes.mjs +67 -5
- package/dist/utils/quotes.mjs.map +1 -1
- package/dist/utils/required-tokens.cjs +1 -1
- package/dist/utils/required-tokens.cjs.map +1 -1
- package/dist/utils/required-tokens.mjs +1 -1
- package/dist/utils/required-tokens.mjs.map +1 -1
- package/dist/utils/source-amounts.cjs +47 -4
- package/dist/utils/source-amounts.cjs.map +1 -1
- package/dist/utils/source-amounts.d.cts.map +1 -1
- package/dist/utils/source-amounts.d.mts.map +1 -1
- package/dist/utils/source-amounts.mjs +48 -5
- package/dist/utils/source-amounts.mjs.map +1 -1
- package/dist/utils/token.cjs +17 -1
- package/dist/utils/token.cjs.map +1 -1
- package/dist/utils/token.d.cts +18 -0
- package/dist/utils/token.d.cts.map +1 -1
- package/dist/utils/token.d.mts +18 -0
- package/dist/utils/token.d.mts.map +1 -1
- package/dist/utils/token.mjs +15 -0
- package/dist/utils/token.mjs.map +1 -1
- package/dist/utils/totals.cjs +4 -0
- 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 +4 -0
- package/dist/utils/totals.mjs.map +1 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [13.0.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add post-quote transaction support for withdrawal flows ([#7783](https://github.com/MetaMask/core/pull/7783))
|
|
15
|
+
- Add `setTransactionConfig` method replacing `setIsMaxAmount` and `setIsPostQuote`
|
|
16
|
+
- Add `TransactionConfig`, `TransactionConfigCallback` types
|
|
17
|
+
- Add `isPostQuote` to `TransactionData` and `QuoteRequest`
|
|
18
|
+
- Support reversed source/destination in Relay quotes for post-quote flows
|
|
19
|
+
- Add same-token-same-chain skip logic for post-quote transactions
|
|
20
|
+
- Add source amount fields (`sourceBalanceRaw`, `sourceChainId`, `sourceTokenAddress`) to `TransactionPaySourceAmount`
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Bump `@metamask/bridge-controller` from `^65.3.0` to `^66.1.1` ([#7862](https://github.com/MetaMask/core/pull/7862), [#7897](https://github.com/MetaMask/core/pull/7897), [#7910](https://github.com/MetaMask/core/pull/7910))
|
|
25
|
+
- Bump `@metamask/transaction-controller` from `^62.14.0` to `^62.17.0` ([#7854](https://github.com/MetaMask/core/pull/7854), [#7872](https://github.com/MetaMask/core/pull/7872), [#7897](https://github.com/MetaMask/core/pull/7897))
|
|
26
|
+
- Bump `@metamask/assets-controllers` from `^99.2.0` to `^99.3.2` ([#7855](https://github.com/MetaMask/core/pull/7855), [#7860](https://github.com/MetaMask/core/pull/7860)), ([#7897](https://github.com/MetaMask/core/pull/7897))
|
|
27
|
+
- Bump `@metamask/bridge-status-controller` from `66.0.0` to `66.0.2` ([#7897](https://github.com/MetaMask/core/pull/7897), [#7910](https://github.com/MetaMask/core/pull/7910))
|
|
28
|
+
|
|
29
|
+
### Removed
|
|
30
|
+
|
|
31
|
+
- **BREAKING:** Remove `setIsMaxAmount` method in favor of `setTransactionConfig` ([#7783](https://github.com/MetaMask/core/pull/7783))
|
|
32
|
+
|
|
10
33
|
## [12.2.0]
|
|
11
34
|
|
|
12
35
|
### Added
|
|
@@ -340,7 +363,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
340
363
|
|
|
341
364
|
- Initial release ([#6820](https://github.com/MetaMask/core/pull/6820))
|
|
342
365
|
|
|
343
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@
|
|
366
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@13.0.0...HEAD
|
|
367
|
+
[13.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@12.2.0...@metamask/transaction-pay-controller@13.0.0
|
|
344
368
|
[12.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@12.1.0...@metamask/transaction-pay-controller@12.2.0
|
|
345
369
|
[12.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@12.0.2...@metamask/transaction-pay-controller@12.1.0
|
|
346
370
|
[12.0.2]: https://github.com/MetaMask/core/compare/@metamask/transaction-pay-controller@12.0.1...@metamask/transaction-pay-controller@12.0.2
|
|
@@ -53,9 +53,15 @@ class TransactionPayController extends base_controller_1.BaseController {
|
|
|
53
53
|
updateTransactionData: __classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_updateTransactionData).bind(this),
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
setTransactionConfig(transactionId, callback) {
|
|
57
57
|
__classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_updateTransactionData).call(this, transactionId, (transactionData) => {
|
|
58
|
-
|
|
58
|
+
const config = {
|
|
59
|
+
isMaxAmount: transactionData.isMaxAmount,
|
|
60
|
+
isPostQuote: transactionData.isPostQuote,
|
|
61
|
+
};
|
|
62
|
+
callback(config);
|
|
63
|
+
transactionData.isMaxAmount = config.isMaxAmount;
|
|
64
|
+
transactionData.isPostQuote = config.isPostQuote;
|
|
59
65
|
});
|
|
60
66
|
}
|
|
61
67
|
updatePaymentToken(request) {
|
|
@@ -78,6 +84,7 @@ _TransactionPayController_getDelegationTransaction = new WeakMap(), _Transaction
|
|
|
78
84
|
const originalPaymentToken = current?.paymentToken;
|
|
79
85
|
const originalTokens = current?.tokens;
|
|
80
86
|
const originalIsMaxAmount = current?.isMaxAmount;
|
|
87
|
+
const originalIsPostQuote = current?.isPostQuote;
|
|
81
88
|
if (!current) {
|
|
82
89
|
transactionData[transactionId] = {
|
|
83
90
|
isLoading: false,
|
|
@@ -89,7 +96,11 @@ _TransactionPayController_getDelegationTransaction = new WeakMap(), _Transaction
|
|
|
89
96
|
const isPaymentTokenUpdated = current.paymentToken !== originalPaymentToken;
|
|
90
97
|
const isTokensUpdated = current.tokens !== originalTokens;
|
|
91
98
|
const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;
|
|
92
|
-
|
|
99
|
+
const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;
|
|
100
|
+
if (isPaymentTokenUpdated ||
|
|
101
|
+
isIsMaxUpdated ||
|
|
102
|
+
isTokensUpdated ||
|
|
103
|
+
isPostQuoteUpdated) {
|
|
93
104
|
(0, source_amounts_1.updateSourceAmounts)(transactionId, current, this.messenger);
|
|
94
105
|
shouldUpdateQuotes = true;
|
|
95
106
|
}
|
|
@@ -106,7 +117,7 @@ _TransactionPayController_getDelegationTransaction = new WeakMap(), _Transaction
|
|
|
106
117
|
this.messenger.registerActionHandler('TransactionPayController:getDelegationTransaction', __classPrivateFieldGet(this, _TransactionPayController_getDelegationTransaction, "f").bind(this));
|
|
107
118
|
this.messenger.registerActionHandler('TransactionPayController:getStrategy', __classPrivateFieldGet(this, _TransactionPayController_getStrategy, "f") ??
|
|
108
119
|
(() => constants_1.TransactionPayStrategy.Relay));
|
|
109
|
-
this.messenger.registerActionHandler('TransactionPayController:
|
|
120
|
+
this.messenger.registerActionHandler('TransactionPayController:setTransactionConfig', this.setTransactionConfig.bind(this));
|
|
110
121
|
this.messenger.registerActionHandler('TransactionPayController:updatePaymentToken', this.updatePaymentToken.bind(this));
|
|
111
122
|
};
|
|
112
123
|
//# sourceMappingURL=TransactionPayController.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionPayController.cjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,+DAA2D;AAG3D,mCAA8B;AAE9B,6EAAoE;AACpE,+CAAsE;AACtE,iEAA0D;
|
|
1
|
+
{"version":3,"file":"TransactionPayController.cjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,+DAA2D;AAG3D,mCAA8B;AAE9B,6EAAoE;AACpE,+CAAsE;AACtE,iEAA0D;AAU1D,+CAA8C;AAC9C,+DAA6D;AAC7D,yDAA6D;AAE7D,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,MAAa,wBAAyB,SAAQ,gCAI7C;IAOC,YAAY,EACV,wBAAwB,EACxB,WAAW,EACX,SAAS,EACT,KAAK,GAC2B;QAChC,KAAK,CAAC;YACJ,IAAI,EAAE,2BAAe;YACrB,QAAQ,EAAE,aAAa;YACvB,SAAS;YACT,KAAK,EAAE,EAAE,GAAG,eAAe,EAAE,EAAE,GAAG,KAAK,EAAE;SAC1C,CAAC,CAAC;;QAjBI,qEAA4D;QAE5D,wDAEmB;QAe1B,uBAAA,IAAI,sDAA6B,wBAAwB,MAAA,CAAC;QAC1D,uBAAA,IAAI,yCAAgB,WAAW,MAAA,CAAC;QAEhC,uBAAA,IAAI,6FAAwB,MAA5B,IAAI,CAA0B,CAAC;QAE/B,IAAA,oCAAsB,EACpB,SAAS,EACT,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EACtC,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CACvC,CAAC;QAEF,kCAAkC;QAClC,IAAI,+BAAc,CAAC;YACjB,SAAS;YACT,qBAAqB,EAAE,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,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;aACzC,CAAC;YAEF,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEjB,eAAe,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACjD,eAAe,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,OAAkC;QACnD,IAAA,yCAAkB,EAAC,OAAO,EAAE;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,qBAAqB,EAAE,uBAAA,IAAI,4FAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;CAoFF;AApJD,4DAoJC;2RAlFwB,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;IAE/B,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;QAEjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,eAAe,CAAC,aAAa,CAAC,GAAG;gBAC/B,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,KAAK,oBAAoB,CAAC;QAEhD,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;QAEvE,IACE,qBAAqB;YACrB,cAAc;YACd,eAAe;YACf,kBAAkB,EAClB,CAAC;YACD,IAAA,oCAAmB,EAAC,aAAa,EAAE,OAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAErE,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,kBAAkB,EAAE,CAAC;QACvB,IAAA,qBAAY,EAAC;YACX,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,aAAI,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;IAGC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAClC,mDAAmD,EACnD,uBAAA,IAAI,0DAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1C,CAAC;IAEF,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAClC,sCAAsC,EACtC,uBAAA,IAAI,6CAAa;QACf,CAAC,GAA2B,EAAE,CAAC,kCAAsB,CAAC,KAAK,CAAC,CAC/D,CAAC;IAEF,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAClC,+CAA+C,EAC/C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CACrC,CAAC;IAEF,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAClC,6CAA6C,EAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CACnC,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 { updatePaymentToken } from './actions/update-payment-token';\nimport { CONTROLLER_NAME, TransactionPayStrategy } from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport type {\n GetDelegationTransactionCallback,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport { pollTransactionChanges } from './utils/transaction';\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 constructor({\n getDelegationTransaction,\n getStrategy,\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\n this.#registerActionHandlers();\n\n pollTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\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 };\n\n callback(config);\n\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n });\n }\n\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\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\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\n if (!current) {\n transactionData[transactionId] = {\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken !== originalPaymentToken;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n });\n\n if (shouldUpdateQuotes) {\n updateQuotes({\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 #registerActionHandlers(): void {\n this.messenger.registerActionHandler(\n 'TransactionPayController:getDelegationTransaction',\n this.#getDelegationTransaction.bind(this),\n );\n\n this.messenger.registerActionHandler(\n 'TransactionPayController:getStrategy',\n this.#getStrategy ??\n ((): TransactionPayStrategy => TransactionPayStrategy.Relay),\n );\n\n this.messenger.registerActionHandler(\n 'TransactionPayController:setTransactionConfig',\n this.setTransactionConfig.bind(this),\n );\n\n this.messenger.registerActionHandler(\n 'TransactionPayController:updatePaymentToken',\n this.updatePaymentToken.bind(this),\n );\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BaseController } from "@metamask/base-controller";
|
|
2
2
|
import { CONTROLLER_NAME } from "./constants.cjs";
|
|
3
|
-
import type { TransactionPayControllerMessenger, TransactionPayControllerOptions, TransactionPayControllerState, UpdatePaymentTokenRequest } from "./types.cjs";
|
|
3
|
+
import type { TransactionConfigCallback, TransactionPayControllerMessenger, TransactionPayControllerOptions, TransactionPayControllerState, UpdatePaymentTokenRequest } from "./types.cjs";
|
|
4
4
|
export declare class TransactionPayController extends BaseController<typeof CONTROLLER_NAME, TransactionPayControllerState, TransactionPayControllerMessenger> {
|
|
5
5
|
#private;
|
|
6
6
|
constructor({ getDelegationTransaction, getStrategy, messenger, state, }: TransactionPayControllerOptions);
|
|
7
|
-
|
|
7
|
+
setTransactionConfig(transactionId: string, callback: TransactionConfigCallback): void;
|
|
8
8
|
updatePaymentToken(request: UpdatePaymentTokenRequest): void;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=TransactionPayController.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionPayController.d.cts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAM3D,OAAO,EAAE,eAAe,EAA0B,wBAAoB;AAEtE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"TransactionPayController.d.cts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAM3D,OAAO,EAAE,eAAe,EAA0B,wBAAoB;AAEtE,OAAO,KAAK,EAEV,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,yBAAyB,EAC1B,oBAAgB;AAkBjB,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,OAAO,eAAe,EACtB,6BAA6B,EAC7B,iCAAiC,CAClC;;gBAOa,EACV,wBAAwB,EACxB,WAAW,EACX,SAAS,EACT,KAAK,GACN,EAAE,+BAA+B;IA0BlC,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,yBAAyB,GAClC,IAAI;IAcP,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;CAyF7D"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BaseController } from "@metamask/base-controller";
|
|
2
2
|
import { CONTROLLER_NAME } from "./constants.mjs";
|
|
3
|
-
import type { TransactionPayControllerMessenger, TransactionPayControllerOptions, TransactionPayControllerState, UpdatePaymentTokenRequest } from "./types.mjs";
|
|
3
|
+
import type { TransactionConfigCallback, TransactionPayControllerMessenger, TransactionPayControllerOptions, TransactionPayControllerState, UpdatePaymentTokenRequest } from "./types.mjs";
|
|
4
4
|
export declare class TransactionPayController extends BaseController<typeof CONTROLLER_NAME, TransactionPayControllerState, TransactionPayControllerMessenger> {
|
|
5
5
|
#private;
|
|
6
6
|
constructor({ getDelegationTransaction, getStrategy, messenger, state, }: TransactionPayControllerOptions);
|
|
7
|
-
|
|
7
|
+
setTransactionConfig(transactionId: string, callback: TransactionConfigCallback): void;
|
|
8
8
|
updatePaymentToken(request: UpdatePaymentTokenRequest): void;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=TransactionPayController.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionPayController.d.mts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAM3D,OAAO,EAAE,eAAe,EAA0B,wBAAoB;AAEtE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"TransactionPayController.d.mts","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAM3D,OAAO,EAAE,eAAe,EAA0B,wBAAoB;AAEtE,OAAO,KAAK,EAEV,yBAAyB,EAEzB,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC7B,yBAAyB,EAC1B,oBAAgB;AAkBjB,qBAAa,wBAAyB,SAAQ,cAAc,CAC1D,OAAO,eAAe,EACtB,6BAA6B,EAC7B,iCAAiC,CAClC;;gBAOa,EACV,wBAAwB,EACxB,WAAW,EACX,SAAS,EACT,KAAK,GACN,EAAE,+BAA+B;IA0BlC,oBAAoB,CAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,yBAAyB,GAClC,IAAI;IAcP,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;CAyF7D"}
|
|
@@ -51,9 +51,15 @@ export class TransactionPayController extends BaseController {
|
|
|
51
51
|
updateTransactionData: __classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_updateTransactionData).bind(this),
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
setTransactionConfig(transactionId, callback) {
|
|
55
55
|
__classPrivateFieldGet(this, _TransactionPayController_instances, "m", _TransactionPayController_updateTransactionData).call(this, transactionId, (transactionData) => {
|
|
56
|
-
|
|
56
|
+
const config = {
|
|
57
|
+
isMaxAmount: transactionData.isMaxAmount,
|
|
58
|
+
isPostQuote: transactionData.isPostQuote,
|
|
59
|
+
};
|
|
60
|
+
callback(config);
|
|
61
|
+
transactionData.isMaxAmount = config.isMaxAmount;
|
|
62
|
+
transactionData.isPostQuote = config.isPostQuote;
|
|
57
63
|
});
|
|
58
64
|
}
|
|
59
65
|
updatePaymentToken(request) {
|
|
@@ -75,6 +81,7 @@ _TransactionPayController_getDelegationTransaction = new WeakMap(), _Transaction
|
|
|
75
81
|
const originalPaymentToken = current?.paymentToken;
|
|
76
82
|
const originalTokens = current?.tokens;
|
|
77
83
|
const originalIsMaxAmount = current?.isMaxAmount;
|
|
84
|
+
const originalIsPostQuote = current?.isPostQuote;
|
|
78
85
|
if (!current) {
|
|
79
86
|
transactionData[transactionId] = {
|
|
80
87
|
isLoading: false,
|
|
@@ -86,7 +93,11 @@ _TransactionPayController_getDelegationTransaction = new WeakMap(), _Transaction
|
|
|
86
93
|
const isPaymentTokenUpdated = current.paymentToken !== originalPaymentToken;
|
|
87
94
|
const isTokensUpdated = current.tokens !== originalTokens;
|
|
88
95
|
const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;
|
|
89
|
-
|
|
96
|
+
const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;
|
|
97
|
+
if (isPaymentTokenUpdated ||
|
|
98
|
+
isIsMaxUpdated ||
|
|
99
|
+
isTokensUpdated ||
|
|
100
|
+
isPostQuoteUpdated) {
|
|
90
101
|
updateSourceAmounts(transactionId, current, this.messenger);
|
|
91
102
|
shouldUpdateQuotes = true;
|
|
92
103
|
}
|
|
@@ -103,7 +114,7 @@ _TransactionPayController_getDelegationTransaction = new WeakMap(), _Transaction
|
|
|
103
114
|
this.messenger.registerActionHandler('TransactionPayController:getDelegationTransaction', __classPrivateFieldGet(this, _TransactionPayController_getDelegationTransaction, "f").bind(this));
|
|
104
115
|
this.messenger.registerActionHandler('TransactionPayController:getStrategy', __classPrivateFieldGet(this, _TransactionPayController_getStrategy, "f") ??
|
|
105
116
|
(() => TransactionPayStrategy.Relay));
|
|
106
|
-
this.messenger.registerActionHandler('TransactionPayController:
|
|
117
|
+
this.messenger.registerActionHandler('TransactionPayController:setTransactionConfig', this.setTransactionConfig.bind(this));
|
|
107
118
|
this.messenger.registerActionHandler('TransactionPayController:updatePaymentToken', this.updatePaymentToken.bind(this));
|
|
108
119
|
};
|
|
109
120
|
//# sourceMappingURL=TransactionPayController.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionPayController.mjs","sourceRoot":"","sources":["../src/TransactionPayController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,cAAc,EAAE,kCAAkC;;;AAK3D,OAAO,EAAE,kBAAkB,EAAE,2CAAuC;AACpE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,wBAAoB;AACtE,OAAO,EAAE,cAAc,EAAE,qCAAiC;
|
|
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 { updatePaymentToken } from './actions/update-payment-token';\nimport { CONTROLLER_NAME, TransactionPayStrategy } from './constants';\nimport { QuoteRefresher } from './helpers/QuoteRefresher';\nimport type {\n GetDelegationTransactionCallback,\n TransactionConfigCallback,\n TransactionData,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerState,\n UpdatePaymentTokenRequest,\n} from './types';\nimport { updateQuotes } from './utils/quotes';\nimport { updateSourceAmounts } from './utils/source-amounts';\nimport { pollTransactionChanges } from './utils/transaction';\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 constructor({\n getDelegationTransaction,\n getStrategy,\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\n this.#registerActionHandlers();\n\n pollTransactionChanges(\n messenger,\n this.#updateTransactionData.bind(this),\n this.#removeTransactionData.bind(this),\n );\n\n // eslint-disable-next-line no-new\n new QuoteRefresher({\n messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\n }\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 };\n\n callback(config);\n\n transactionData.isMaxAmount = config.isMaxAmount;\n transactionData.isPostQuote = config.isPostQuote;\n });\n }\n\n updatePaymentToken(request: UpdatePaymentTokenRequest): void {\n updatePaymentToken(request, {\n messenger: this.messenger,\n updateTransactionData: this.#updateTransactionData.bind(this),\n });\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\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\n if (!current) {\n transactionData[transactionId] = {\n isLoading: false,\n tokens: [],\n };\n\n current = transactionData[transactionId];\n }\n\n fn(current);\n\n const isPaymentTokenUpdated =\n current.paymentToken !== originalPaymentToken;\n\n const isTokensUpdated = current.tokens !== originalTokens;\n const isIsMaxUpdated = current.isMaxAmount !== originalIsMaxAmount;\n const isPostQuoteUpdated = current.isPostQuote !== originalIsPostQuote;\n\n if (\n isPaymentTokenUpdated ||\n isIsMaxUpdated ||\n isTokensUpdated ||\n isPostQuoteUpdated\n ) {\n updateSourceAmounts(transactionId, current as never, this.messenger);\n\n shouldUpdateQuotes = true;\n }\n });\n\n if (shouldUpdateQuotes) {\n updateQuotes({\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 #registerActionHandlers(): void {\n this.messenger.registerActionHandler(\n 'TransactionPayController:getDelegationTransaction',\n this.#getDelegationTransaction.bind(this),\n );\n\n this.messenger.registerActionHandler(\n 'TransactionPayController:getStrategy',\n this.#getStrategy ??\n ((): TransactionPayStrategy => TransactionPayStrategy.Relay),\n );\n\n this.messenger.registerActionHandler(\n 'TransactionPayController:setTransactionConfig',\n this.setTransactionConfig.bind(this),\n );\n\n this.messenger.registerActionHandler(\n 'TransactionPayController:updatePaymentToken',\n this.updatePaymentToken.bind(this),\n );\n }\n}\n"]}
|
|
@@ -10,7 +10,7 @@ const log = (0, utils_1.createModuleLogger)(logger_1.projectLogger, 'update-paym
|
|
|
10
10
|
/**
|
|
11
11
|
* Update the payment token for a specific transaction.
|
|
12
12
|
*
|
|
13
|
-
* @param request
|
|
13
|
+
* @param request - Request parameters.
|
|
14
14
|
* @param options - Options bag.
|
|
15
15
|
*/
|
|
16
16
|
function updatePaymentToken(request, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-payment-token.cjs","sourceRoot":"","sources":["../../src/actions/update-payment-token.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AAErD,+CAAyC;AAGzC,0CAA0C;AAM1C,8CAIwB;AACxB,0DAAsD;AAEtD,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,sBAAa,EAAE,sBAAsB,CAAC,CAAC;AAOtE;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,OAAkC,EAClC,OAAkC;IAElC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,WAAW,GAAG,IAAA,4BAAc,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC;QACnC,OAAO;QACP,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAW;QACvC,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,uBAAuB,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAE9D,qBAAqB,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AA7BD,gDA6BC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,EACvB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,YAAY,GAMb;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GACxB,IAAA,oBAAY,EAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAEvD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAEzE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,wBAAS,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,IAAI,wBAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,iBAAiB;SAClC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC;SACpC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,iBAAiB;SACjC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;SACnC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,WAAW;QACX,YAAY;QACZ,UAAU;QACV,UAAU;QACV,OAAO;QACP,QAAQ;QACR,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["import { createModuleLogger } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { TransactionPayControllerMessenger } from '..';\nimport { projectLogger } from '../logger';\nimport type {\n TransactionPaymentToken,\n UpdatePaymentTokenRequest,\n UpdateTransactionDataCallback,\n} from '../types';\nimport {\n getTokenBalance,\n getTokenFiatRate,\n getTokenInfo,\n} from '../utils/token';\nimport { getTransaction } from '../utils/transaction';\n\nconst log = createModuleLogger(projectLogger, 'update-payment-token');\n\nexport type UpdatePaymentTokenOptions = {\n messenger: TransactionPayControllerMessenger;\n updateTransactionData: UpdateTransactionDataCallback;\n};\n\n/**\n * Update the payment token for a specific transaction.\n *\n * @param request
|
|
1
|
+
{"version":3,"file":"update-payment-token.cjs","sourceRoot":"","sources":["../../src/actions/update-payment-token.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AAErD,+CAAyC;AAGzC,0CAA0C;AAM1C,8CAIwB;AACxB,0DAAsD;AAEtD,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,sBAAa,EAAE,sBAAsB,CAAC,CAAC;AAOtE;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,OAAkC,EAClC,OAAkC;IAElC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,WAAW,GAAG,IAAA,4BAAc,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC;QACnC,OAAO;QACP,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAW;QACvC,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,uBAAuB,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAE9D,qBAAqB,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AA7BD,gDA6BC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,EACvB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,YAAY,GAMb;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GACxB,IAAA,oBAAY,EAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAEvD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,wBAAgB,EAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAEzE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,wBAAS,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,IAAI,wBAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,iBAAiB;SAClC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC;SACpC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,iBAAiB;SACjC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;SACnC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,WAAW;QACX,YAAY;QACZ,UAAU;QACV,UAAU;QACV,OAAO;QACP,QAAQ;QACR,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["import { createModuleLogger } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { TransactionPayControllerMessenger } from '..';\nimport { projectLogger } from '../logger';\nimport type {\n TransactionPaymentToken,\n UpdatePaymentTokenRequest,\n UpdateTransactionDataCallback,\n} from '../types';\nimport {\n getTokenBalance,\n getTokenFiatRate,\n getTokenInfo,\n} from '../utils/token';\nimport { getTransaction } from '../utils/transaction';\n\nconst log = createModuleLogger(projectLogger, 'update-payment-token');\n\nexport type UpdatePaymentTokenOptions = {\n messenger: TransactionPayControllerMessenger;\n updateTransactionData: UpdateTransactionDataCallback;\n};\n\n/**\n * Update the payment token for a specific transaction.\n *\n * @param request - Request parameters.\n * @param options - Options bag.\n */\nexport function updatePaymentToken(\n request: UpdatePaymentTokenRequest,\n options: UpdatePaymentTokenOptions,\n): void {\n const { transactionId, tokenAddress, chainId } = request;\n const { messenger, updateTransactionData } = options;\n\n const transaction = getTransaction(transactionId, messenger);\n\n if (!transaction) {\n throw new Error('Transaction not found');\n }\n\n const paymentToken = getPaymentToken({\n chainId,\n from: transaction?.txParams.from as Hex,\n messenger,\n tokenAddress,\n });\n\n if (!paymentToken) {\n throw new Error('Payment token not found');\n }\n\n log('Updated payment token', { transactionId, paymentToken });\n\n updateTransactionData(transactionId, (data) => {\n data.paymentToken = paymentToken;\n });\n}\n\n/**\n * Generate the full payment token data from a token address and chain ID.\n *\n * @param request - The payment token request parameters.\n * @param request.chainId - The chain ID.\n * @param request.from - The address to get the token balance for.\n * @param request.messenger - The transaction pay controller messenger.\n * @param request.tokenAddress - The token address.\n * @returns The payment token or undefined if the token data could not be retrieved.\n */\nfunction getPaymentToken({\n chainId,\n from,\n messenger,\n tokenAddress,\n}: {\n chainId: Hex;\n from: Hex;\n messenger: TransactionPayControllerMessenger;\n tokenAddress: Hex;\n}): TransactionPaymentToken | undefined {\n const { decimals, symbol } =\n getTokenInfo(messenger, tokenAddress, chainId) ?? {};\n\n if (decimals === undefined || !symbol) {\n return undefined;\n }\n\n const tokenFiatRate = getTokenFiatRate(messenger, tokenAddress, chainId);\n\n if (tokenFiatRate === undefined) {\n return undefined;\n }\n\n const balance = getTokenBalance(messenger, from, chainId, tokenAddress);\n const balanceRawValue = new BigNumber(balance);\n const balanceHumanValue = new BigNumber(balance).shiftedBy(-decimals);\n const balanceRaw = balanceRawValue.toFixed(0);\n const balanceHuman = balanceHumanValue.toString(10);\n\n const balanceFiat = balanceHumanValue\n .multipliedBy(tokenFiatRate.fiatRate)\n .toString(10);\n\n const balanceUsd = balanceHumanValue\n .multipliedBy(tokenFiatRate.usdRate)\n .toString(10);\n\n return {\n address: tokenAddress,\n balanceFiat,\n balanceHuman,\n balanceRaw,\n balanceUsd,\n chainId,\n decimals,\n symbol,\n };\n}\n"]}
|
|
@@ -7,7 +7,7 @@ export type UpdatePaymentTokenOptions = {
|
|
|
7
7
|
/**
|
|
8
8
|
* Update the payment token for a specific transaction.
|
|
9
9
|
*
|
|
10
|
-
* @param request
|
|
10
|
+
* @param request - Request parameters.
|
|
11
11
|
* @param options - Options bag.
|
|
12
12
|
*/
|
|
13
13
|
export declare function updatePaymentToken(request: UpdatePaymentTokenRequest, options: UpdatePaymentTokenOptions): void;
|
|
@@ -7,7 +7,7 @@ export type UpdatePaymentTokenOptions = {
|
|
|
7
7
|
/**
|
|
8
8
|
* Update the payment token for a specific transaction.
|
|
9
9
|
*
|
|
10
|
-
* @param request
|
|
10
|
+
* @param request - Request parameters.
|
|
11
11
|
* @param options - Options bag.
|
|
12
12
|
*/
|
|
13
13
|
export declare function updatePaymentToken(request: UpdatePaymentTokenRequest, options: UpdatePaymentTokenOptions): void;
|
|
@@ -7,7 +7,7 @@ const log = createModuleLogger(projectLogger, 'update-payment-token');
|
|
|
7
7
|
/**
|
|
8
8
|
* Update the payment token for a specific transaction.
|
|
9
9
|
*
|
|
10
|
-
* @param request
|
|
10
|
+
* @param request - Request parameters.
|
|
11
11
|
* @param options - Options bag.
|
|
12
12
|
*/
|
|
13
13
|
export function updatePaymentToken(request, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-payment-token.mjs","sourceRoot":"","sources":["../../src/actions/update-payment-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AAErD,OAAO,EAAE,SAAS,EAAE,qBAAqB;AAGzC,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAM1C,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,2BAAuB;AACxB,OAAO,EAAE,cAAc,EAAE,iCAA6B;AAEtD,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;AAOtE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAkC,EAClC,OAAkC;IAElC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,WAAW,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC;QACnC,OAAO;QACP,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAW;QACvC,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,uBAAuB,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAE9D,qBAAqB,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,EACvB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,YAAY,GAMb;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GACxB,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAEvD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAEzE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,iBAAiB;SAClC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC;SACpC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,iBAAiB;SACjC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;SACnC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,WAAW;QACX,YAAY;QACZ,UAAU;QACV,UAAU;QACV,OAAO;QACP,QAAQ;QACR,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["import { createModuleLogger } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { TransactionPayControllerMessenger } from '..';\nimport { projectLogger } from '../logger';\nimport type {\n TransactionPaymentToken,\n UpdatePaymentTokenRequest,\n UpdateTransactionDataCallback,\n} from '../types';\nimport {\n getTokenBalance,\n getTokenFiatRate,\n getTokenInfo,\n} from '../utils/token';\nimport { getTransaction } from '../utils/transaction';\n\nconst log = createModuleLogger(projectLogger, 'update-payment-token');\n\nexport type UpdatePaymentTokenOptions = {\n messenger: TransactionPayControllerMessenger;\n updateTransactionData: UpdateTransactionDataCallback;\n};\n\n/**\n * Update the payment token for a specific transaction.\n *\n * @param request
|
|
1
|
+
{"version":3,"file":"update-payment-token.mjs","sourceRoot":"","sources":["../../src/actions/update-payment-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB;AAErD,OAAO,EAAE,SAAS,EAAE,qBAAqB;AAGzC,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAM1C,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,YAAY,EACb,2BAAuB;AACxB,OAAO,EAAE,cAAc,EAAE,iCAA6B;AAEtD,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;AAOtE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAkC,EAClC,OAAkC;IAElC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,WAAW,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC;QACnC,OAAO;QACP,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAW;QACvC,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,uBAAuB,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAE9D,qBAAqB,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,EACvB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,YAAY,GAMb;IACC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GACxB,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAEvD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAEzE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,iBAAiB;SAClC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC;SACpC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,iBAAiB;SACjC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;SACnC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,WAAW;QACX,YAAY;QACZ,UAAU;QACV,UAAU;QACV,OAAO;QACP,QAAQ;QACR,MAAM;KACP,CAAC;AACJ,CAAC","sourcesContent":["import { createModuleLogger } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { TransactionPayControllerMessenger } from '..';\nimport { projectLogger } from '../logger';\nimport type {\n TransactionPaymentToken,\n UpdatePaymentTokenRequest,\n UpdateTransactionDataCallback,\n} from '../types';\nimport {\n getTokenBalance,\n getTokenFiatRate,\n getTokenInfo,\n} from '../utils/token';\nimport { getTransaction } from '../utils/transaction';\n\nconst log = createModuleLogger(projectLogger, 'update-payment-token');\n\nexport type UpdatePaymentTokenOptions = {\n messenger: TransactionPayControllerMessenger;\n updateTransactionData: UpdateTransactionDataCallback;\n};\n\n/**\n * Update the payment token for a specific transaction.\n *\n * @param request - Request parameters.\n * @param options - Options bag.\n */\nexport function updatePaymentToken(\n request: UpdatePaymentTokenRequest,\n options: UpdatePaymentTokenOptions,\n): void {\n const { transactionId, tokenAddress, chainId } = request;\n const { messenger, updateTransactionData } = options;\n\n const transaction = getTransaction(transactionId, messenger);\n\n if (!transaction) {\n throw new Error('Transaction not found');\n }\n\n const paymentToken = getPaymentToken({\n chainId,\n from: transaction?.txParams.from as Hex,\n messenger,\n tokenAddress,\n });\n\n if (!paymentToken) {\n throw new Error('Payment token not found');\n }\n\n log('Updated payment token', { transactionId, paymentToken });\n\n updateTransactionData(transactionId, (data) => {\n data.paymentToken = paymentToken;\n });\n}\n\n/**\n * Generate the full payment token data from a token address and chain ID.\n *\n * @param request - The payment token request parameters.\n * @param request.chainId - The chain ID.\n * @param request.from - The address to get the token balance for.\n * @param request.messenger - The transaction pay controller messenger.\n * @param request.tokenAddress - The token address.\n * @returns The payment token or undefined if the token data could not be retrieved.\n */\nfunction getPaymentToken({\n chainId,\n from,\n messenger,\n tokenAddress,\n}: {\n chainId: Hex;\n from: Hex;\n messenger: TransactionPayControllerMessenger;\n tokenAddress: Hex;\n}): TransactionPaymentToken | undefined {\n const { decimals, symbol } =\n getTokenInfo(messenger, tokenAddress, chainId) ?? {};\n\n if (decimals === undefined || !symbol) {\n return undefined;\n }\n\n const tokenFiatRate = getTokenFiatRate(messenger, tokenAddress, chainId);\n\n if (tokenFiatRate === undefined) {\n return undefined;\n }\n\n const balance = getTokenBalance(messenger, from, chainId, tokenAddress);\n const balanceRawValue = new BigNumber(balance);\n const balanceHumanValue = new BigNumber(balance).shiftedBy(-decimals);\n const balanceRaw = balanceRawValue.toFixed(0);\n const balanceHuman = balanceHumanValue.toString(10);\n\n const balanceFiat = balanceHumanValue\n .multipliedBy(tokenFiatRate.fiatRate)\n .toString(10);\n\n const balanceUsd = balanceHumanValue\n .multipliedBy(tokenFiatRate.usdRate)\n .toString(10);\n\n return {\n address: tokenAddress,\n balanceFiat,\n balanceHuman,\n balanceRaw,\n balanceUsd,\n chainId,\n decimals,\n symbol,\n };\n}\n"]}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAqBA,6CAAqD;AAA5C,mHAAA,sBAAsB,OAAA;AAC/B,2EAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,qFAAgF;AAAvE,sIAAA,yBAAyB,OAAA","sourcesContent":["export type {\n TransactionConfig,\n TransactionConfigCallback,\n TransactionPayControllerActions,\n TransactionPayControllerEvents,\n TransactionPayControllerGetDelegationTransactionAction,\n TransactionPayControllerGetStateAction,\n TransactionPayControllerGetStrategyAction,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerSetTransactionConfigAction,\n TransactionPayControllerState,\n TransactionPayControllerStateChangeEvent,\n TransactionPayControllerUpdatePaymentTokenAction,\n TransactionPaymentToken,\n TransactionPayQuote,\n TransactionPayRequiredToken,\n TransactionPaySourceAmount,\n TransactionPayTotals,\n UpdatePaymentTokenRequest,\n} from './types';\nexport { TransactionPayStrategy } from './constants';\nexport { TransactionPayController } from './TransactionPayController';\nexport { TransactionPayPublishHook } from './helpers/TransactionPayPublishHook';\nexport type { TransactionPayBridgeQuote } from './strategy/bridge/types';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { TransactionPayControllerActions, TransactionPayControllerEvents, TransactionPayControllerGetDelegationTransactionAction, TransactionPayControllerGetStateAction, TransactionPayControllerGetStrategyAction, TransactionPayControllerMessenger, TransactionPayControllerOptions,
|
|
1
|
+
export type { TransactionConfig, TransactionConfigCallback, TransactionPayControllerActions, TransactionPayControllerEvents, TransactionPayControllerGetDelegationTransactionAction, TransactionPayControllerGetStateAction, TransactionPayControllerGetStrategyAction, TransactionPayControllerMessenger, TransactionPayControllerOptions, TransactionPayControllerSetTransactionConfigAction, TransactionPayControllerState, TransactionPayControllerStateChangeEvent, TransactionPayControllerUpdatePaymentTokenAction, TransactionPaymentToken, TransactionPayQuote, TransactionPayRequiredToken, TransactionPaySourceAmount, TransactionPayTotals, UpdatePaymentTokenRequest, } from "./types.cjs";
|
|
2
2
|
export { TransactionPayStrategy } from "./constants.cjs";
|
|
3
3
|
export { TransactionPayController } from "./TransactionPayController.cjs";
|
|
4
4
|
export { TransactionPayPublishHook } from "./helpers/TransactionPayPublishHook.cjs";
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,sDAAsD,EACtD,sCAAsC,EACtC,yCAAyC,EACzC,iCAAiC,EACjC,+BAA+B,EAC/B,
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,yBAAyB,EACzB,+BAA+B,EAC/B,8BAA8B,EAC9B,sDAAsD,EACtD,sCAAsC,EACtC,yCAAyC,EACzC,iCAAiC,EACjC,+BAA+B,EAC/B,kDAAkD,EAClD,6BAA6B,EAC7B,wCAAwC,EACxC,gDAAgD,EAChD,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,GAC1B,oBAAgB;AACjB,OAAO,EAAE,sBAAsB,EAAE,wBAAoB;AACrD,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,OAAO,EAAE,yBAAyB,EAAE,gDAA4C;AAChF,YAAY,EAAE,yBAAyB,EAAE,oCAAgC"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { TransactionPayControllerActions, TransactionPayControllerEvents, TransactionPayControllerGetDelegationTransactionAction, TransactionPayControllerGetStateAction, TransactionPayControllerGetStrategyAction, TransactionPayControllerMessenger, TransactionPayControllerOptions,
|
|
1
|
+
export type { TransactionConfig, TransactionConfigCallback, TransactionPayControllerActions, TransactionPayControllerEvents, TransactionPayControllerGetDelegationTransactionAction, TransactionPayControllerGetStateAction, TransactionPayControllerGetStrategyAction, TransactionPayControllerMessenger, TransactionPayControllerOptions, TransactionPayControllerSetTransactionConfigAction, TransactionPayControllerState, TransactionPayControllerStateChangeEvent, TransactionPayControllerUpdatePaymentTokenAction, TransactionPaymentToken, TransactionPayQuote, TransactionPayRequiredToken, TransactionPaySourceAmount, TransactionPayTotals, UpdatePaymentTokenRequest, } from "./types.mjs";
|
|
2
2
|
export { TransactionPayStrategy } from "./constants.mjs";
|
|
3
3
|
export { TransactionPayController } from "./TransactionPayController.mjs";
|
|
4
4
|
export { TransactionPayPublishHook } from "./helpers/TransactionPayPublishHook.mjs";
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,sDAAsD,EACtD,sCAAsC,EACtC,yCAAyC,EACzC,iCAAiC,EACjC,+BAA+B,EAC/B,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,yBAAyB,EACzB,+BAA+B,EAC/B,8BAA8B,EAC9B,sDAAsD,EACtD,sCAAsC,EACtC,yCAAyC,EACzC,iCAAiC,EACjC,+BAA+B,EAC/B,kDAAkD,EAClD,6BAA6B,EAC7B,wCAAwC,EACxC,gDAAgD,EAChD,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,GAC1B,oBAAgB;AACjB,OAAO,EAAE,sBAAsB,EAAE,wBAAoB;AACrD,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,OAAO,EAAE,yBAAyB,EAAE,gDAA4C;AAChF,YAAY,EAAE,yBAAyB,EAAE,oCAAgC"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,sBAAsB,EAAE,wBAAoB;AACrD,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,OAAO,EAAE,yBAAyB,EAAE,gDAA4C","sourcesContent":["export type {\n TransactionConfig,\n TransactionConfigCallback,\n TransactionPayControllerActions,\n TransactionPayControllerEvents,\n TransactionPayControllerGetDelegationTransactionAction,\n TransactionPayControllerGetStateAction,\n TransactionPayControllerGetStrategyAction,\n TransactionPayControllerMessenger,\n TransactionPayControllerOptions,\n TransactionPayControllerSetTransactionConfigAction,\n TransactionPayControllerState,\n TransactionPayControllerStateChangeEvent,\n TransactionPayControllerUpdatePaymentTokenAction,\n TransactionPaymentToken,\n TransactionPayQuote,\n TransactionPayRequiredToken,\n TransactionPaySourceAmount,\n TransactionPayTotals,\n UpdatePaymentTokenRequest,\n} from './types';\nexport { TransactionPayStrategy } from './constants';\nexport { TransactionPayController } from './TransactionPayController';\nexport { TransactionPayPublishHook } from './helpers/TransactionPayPublishHook';\nexport type { TransactionPayBridgeQuote } from './strategy/bridge/types';\n"]}
|
|
@@ -25,8 +25,10 @@ async function getRelayQuotes(request) {
|
|
|
25
25
|
log('Fetching quotes', requests);
|
|
26
26
|
try {
|
|
27
27
|
const normalizedRequests = requests
|
|
28
|
-
// Ignore gas fee token requests
|
|
29
|
-
|
|
28
|
+
// Ignore gas fee token requests (which have both target=0 and source=0)
|
|
29
|
+
// but keep post-quote requests (identified by isPostQuote flag)
|
|
30
|
+
.filter((singleRequest) => singleRequest.targetAmountMinimum !== '0' ||
|
|
31
|
+
singleRequest.isPostQuote)
|
|
30
32
|
.map((singleRequest) => normalizeRequest(singleRequest));
|
|
31
33
|
log('Normalized requests', normalizedRequests);
|
|
32
34
|
return await Promise.all(normalizedRequests.map((singleRequest) => getSingleQuote(singleRequest, request)));
|
|
@@ -50,18 +52,27 @@ async function getSingleQuote(request, fullRequest) {
|
|
|
50
52
|
const slippageDecimal = (0, feature_flags_1.getSlippage)(messenger, sourceChainId, sourceTokenAddress);
|
|
51
53
|
const slippageTolerance = new bignumber_js_1.BigNumber(slippageDecimal * 100 * 100).toFixed(0);
|
|
52
54
|
try {
|
|
55
|
+
// For post-quote or max amount flows, use EXACT_INPUT - user specifies how much to send,
|
|
56
|
+
// and we show them how much they'll receive after fees.
|
|
57
|
+
// For regular flows with a target amount, use EXPECTED_OUTPUT.
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
59
|
+
const useExactInput = isMaxAmount || request.isPostQuote;
|
|
53
60
|
const body = {
|
|
54
|
-
amount:
|
|
61
|
+
amount: useExactInput ? sourceTokenAmount : targetAmountMinimum,
|
|
55
62
|
destinationChainId: Number(targetChainId),
|
|
56
63
|
destinationCurrency: targetTokenAddress,
|
|
57
64
|
originChainId: Number(sourceChainId),
|
|
58
65
|
originCurrency: sourceTokenAddress,
|
|
59
66
|
recipient: from,
|
|
60
67
|
slippageTolerance,
|
|
61
|
-
tradeType:
|
|
68
|
+
tradeType: useExactInput ? 'EXACT_INPUT' : 'EXPECTED_OUTPUT',
|
|
62
69
|
user: from,
|
|
63
70
|
};
|
|
64
|
-
|
|
71
|
+
// Skip transaction processing for post-quote flows - the original transaction
|
|
72
|
+
// will be included in the batch separately, not as part of the quote
|
|
73
|
+
if (!request.isPostQuote) {
|
|
74
|
+
await processTransactions(transaction, request, body, messenger);
|
|
75
|
+
}
|
|
65
76
|
const url = (0, feature_flags_1.getFeatureFlags)(messenger).relayQuoteUrl;
|
|
66
77
|
log('Request body', { body, url });
|
|
67
78
|
const response = await (0, controller_utils_1.successfulFetch)(url, {
|
|
@@ -72,7 +83,7 @@ async function getSingleQuote(request, fullRequest) {
|
|
|
72
83
|
const quote = (await response.json());
|
|
73
84
|
quote.request = body;
|
|
74
85
|
log('Fetched relay quote', quote);
|
|
75
|
-
return normalizeQuote(quote, request, fullRequest);
|
|
86
|
+
return await normalizeQuote(quote, request, fullRequest);
|
|
76
87
|
}
|
|
77
88
|
catch (error) {
|
|
78
89
|
log('Error fetching relay quote', error);
|
|
@@ -148,7 +159,8 @@ function normalizeRequest(request) {
|
|
|
148
159
|
const newRequest = {
|
|
149
160
|
...request,
|
|
150
161
|
};
|
|
151
|
-
const isHyperliquidDeposit = request.
|
|
162
|
+
const isHyperliquidDeposit = !request.isPostQuote &&
|
|
163
|
+
request.targetChainId === constants_2.CHAIN_ID_ARBITRUM &&
|
|
152
164
|
request.targetTokenAddress.toLowerCase() ===
|
|
153
165
|
constants_2.ARBITRUM_USDC_ADDRESS.toLowerCase();
|
|
154
166
|
const isPolygonNativeSource = request.sourceChainId === constants_2.CHAIN_ID_POLYGON &&
|