@metamask-previews/transaction-pay-controller 0.0.0-preview-9fa15fd0 → 0.0.0-preview-fa44f49b
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/dist/strategy/relay/relay-submit.cjs +10 -2
- package/dist/strategy/relay/relay-submit.cjs.map +1 -1
- package/dist/strategy/relay/relay-submit.mjs +10 -2
- package/dist/strategy/relay/relay-submit.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +101 -1
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +101 -1
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -51,6 +51,15 @@ async function executeSingleQuote(quote, messenger, transaction) {
|
|
|
51
51
|
normalizedParams,
|
|
52
52
|
networkClientId,
|
|
53
53
|
});
|
|
54
|
+
if (quote.skipTransaction) {
|
|
55
|
+
(0, transaction_1.updateTransaction)({
|
|
56
|
+
transactionId: transaction.id,
|
|
57
|
+
messenger,
|
|
58
|
+
note: 'Remove nonce from skipped transaction',
|
|
59
|
+
}, (tx) => {
|
|
60
|
+
tx.txParams.nonce = undefined;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
54
63
|
const result = await messenger.call('TransactionController:addTransaction', normalizedParams, {
|
|
55
64
|
networkClientId,
|
|
56
65
|
origin: controller_utils_1.ORIGIN_METAMASK,
|
|
@@ -82,7 +91,6 @@ async function executeSingleQuote(quote, messenger, transaction) {
|
|
|
82
91
|
note: 'Intent complete after Relay completion',
|
|
83
92
|
}, (tx) => {
|
|
84
93
|
tx.isIntentComplete = true;
|
|
85
|
-
tx.txParams.nonce = undefined;
|
|
86
94
|
});
|
|
87
95
|
}
|
|
88
96
|
return { transactionHash };
|
|
@@ -123,7 +131,7 @@ function normalizeParams(params) {
|
|
|
123
131
|
maxFeePerGas: (0, controller_utils_1.toHex)(params.maxFeePerGas),
|
|
124
132
|
maxPriorityFeePerGas: (0, controller_utils_1.toHex)(params.maxPriorityFeePerGas),
|
|
125
133
|
to: params.to,
|
|
126
|
-
value: params.value,
|
|
134
|
+
value: (0, controller_utils_1.toHex)(params.value ?? '0'),
|
|
127
135
|
};
|
|
128
136
|
}
|
|
129
137
|
//# sourceMappingURL=relay-submit.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-submit.cjs","sourceRoot":"","sources":["../../../src/strategy/relay/relay-submit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relay-submit.cjs","sourceRoot":"","sources":["../../../src/strategy/relay/relay-submit.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ORIGIN_METAMASK,\n successfulFetch,\n toHex,\n} from '@metamask/controller-utils';\nimport type { TransactionParams } from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\n\nimport { RELAY_URL_BASE } from './constants';\nimport type { RelayQuote, RelayStatus } from './types';\nimport { projectLogger } from '../../logger';\nimport type {\n PayStrategyExecuteRequest,\n TransactionPayControllerMessenger,\n} from '../../types';\nimport {\n updateTransaction,\n waitForTransactionConfirmed,\n} from '../../utils/transaction';\n\nconst log = createModuleLogger(projectLogger, 'relay-strategy');\n\n/**\n * Submits Relay quotes.\n *\n * @param request - Request object.\n * @returns An object containing the transaction hash if available.\n */\nexport async function submitRelayQuotes(\n request: PayStrategyExecuteRequest<RelayQuote>,\n): Promise<{ transactionHash?: Hex }> {\n log('Executing quotes', request);\n\n const { quotes, messenger, transaction } = request;\n\n let transactionHash: Hex | undefined;\n\n for (const quote of quotes) {\n ({ transactionHash } = await executeSingleQuote(\n quote.original,\n messenger,\n transaction,\n ));\n }\n\n const isSkipTransaction = quotes.some((q) => q.original.skipTransaction);\n\n if (isSkipTransaction) {\n log('Skipping original transaction', transactionHash);\n return { transactionHash };\n }\n\n return { transactionHash: undefined };\n}\n\n/**\n * Executes a single Relay quote.\n *\n * @param quote - Relay quote to execute.\n * @param messenger - Controller messenger.\n * @param transaction - Original transaction meta.\n * @returns An object containing the transaction hash if available.\n */\nasync function executeSingleQuote(\n quote: RelayQuote,\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n) {\n log('Executing single quote', quote);\n\n const { kind } = quote.steps[0];\n\n if (kind !== 'transaction') {\n throw new Error(`Unsupported step kind: ${kind as string}`);\n }\n\n const transactionParams = quote.steps[0].items[0].data;\n const chainId = toHex(transactionParams.chainId);\n const normalizedParams = normalizeParams(transactionParams);\n\n const networkClientId = messenger.call(\n 'NetworkController:findNetworkClientIdByChainId',\n chainId,\n );\n\n log('Adding transaction', {\n chainId,\n normalizedParams,\n networkClientId,\n });\n\n if (quote.skipTransaction) {\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Remove nonce from skipped transaction',\n },\n (tx) => {\n tx.txParams.nonce = undefined;\n },\n );\n }\n\n const result = await messenger.call(\n 'TransactionController:addTransaction',\n normalizedParams,\n {\n networkClientId,\n origin: ORIGIN_METAMASK,\n requireApproval: false,\n },\n );\n\n const { transactionMeta, result: transactionHashPromise } = result;\n\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Add required transaction ID',\n },\n (tx) => {\n if (!tx.requiredTransactionIds) {\n tx.requiredTransactionIds = [];\n }\n\n tx.requiredTransactionIds.push(transactionMeta.id);\n },\n );\n\n log('Added transaction', transactionMeta);\n\n const transactionHash = (await transactionHashPromise) as Hex;\n\n log('Submitted transaction', transactionHash);\n\n await waitForTransactionConfirmed(transactionMeta.id, messenger);\n\n log('Transaction confirmed', transactionMeta.id);\n\n await waitForRelayCompletion(quote);\n\n log('Relay request completed');\n\n if (quote.skipTransaction) {\n log('Updating intent complete flag on transaction', transaction.id);\n\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Intent complete after Relay completion',\n },\n (tx) => {\n tx.isIntentComplete = true;\n },\n );\n }\n\n return { transactionHash };\n}\n\n/**\n * Wait for a Relay request to complete.\n *\n * @param quote - Relay quote associated with the request.\n * @returns A promise that resolves when the Relay request is complete.\n */\nasync function waitForRelayCompletion(quote: RelayQuote) {\n const { endpoint, method } = quote.steps[0].items[0].check;\n const url = `${RELAY_URL_BASE}${endpoint}`;\n\n while (true) {\n const response = await successfulFetch(url, { method });\n const status = (await response.json()) as RelayStatus;\n\n log('Polled status', status.status, status);\n\n if (status.status === 'success') {\n return;\n }\n\n if (['failure', 'refund'].includes(status.status)) {\n throw new Error(`Relay request failed with status: ${status.status}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n}\n\n/**\n * Normalize the parameters from a relay quote step to match TransactionParams.\n *\n * @param params - Parameters from a relay quote step.\n * @returns Normalized transaction parameters.\n */\nfunction normalizeParams(\n params: RelayQuote['steps'][0]['items'][0]['data'],\n): TransactionParams {\n return {\n data: params.data,\n from: params.from,\n gas: toHex(params.gas),\n maxFeePerGas: toHex(params.maxFeePerGas),\n maxPriorityFeePerGas: toHex(params.maxPriorityFeePerGas),\n to: params.to,\n value: toHex(params.value ?? '0'),\n };\n}\n"]}
|
|
@@ -47,6 +47,15 @@ async function executeSingleQuote(quote, messenger, transaction) {
|
|
|
47
47
|
normalizedParams,
|
|
48
48
|
networkClientId,
|
|
49
49
|
});
|
|
50
|
+
if (quote.skipTransaction) {
|
|
51
|
+
updateTransaction({
|
|
52
|
+
transactionId: transaction.id,
|
|
53
|
+
messenger,
|
|
54
|
+
note: 'Remove nonce from skipped transaction',
|
|
55
|
+
}, (tx) => {
|
|
56
|
+
tx.txParams.nonce = undefined;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
50
59
|
const result = await messenger.call('TransactionController:addTransaction', normalizedParams, {
|
|
51
60
|
networkClientId,
|
|
52
61
|
origin: ORIGIN_METAMASK,
|
|
@@ -78,7 +87,6 @@ async function executeSingleQuote(quote, messenger, transaction) {
|
|
|
78
87
|
note: 'Intent complete after Relay completion',
|
|
79
88
|
}, (tx) => {
|
|
80
89
|
tx.isIntentComplete = true;
|
|
81
|
-
tx.txParams.nonce = undefined;
|
|
82
90
|
});
|
|
83
91
|
}
|
|
84
92
|
return { transactionHash };
|
|
@@ -119,7 +127,7 @@ function normalizeParams(params) {
|
|
|
119
127
|
maxFeePerGas: toHex(params.maxFeePerGas),
|
|
120
128
|
maxPriorityFeePerGas: toHex(params.maxPriorityFeePerGas),
|
|
121
129
|
to: params.to,
|
|
122
|
-
value: params.value,
|
|
130
|
+
value: toHex(params.value ?? '0'),
|
|
123
131
|
};
|
|
124
132
|
}
|
|
125
133
|
//# sourceMappingURL=relay-submit.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-submit.mjs","sourceRoot":"","sources":["../../../src/strategy/relay/relay-submit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relay-submit.mjs","sourceRoot":"","sources":["../../../src/strategy/relay/relay-submit.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ORIGIN_METAMASK,\n successfulFetch,\n toHex,\n} from '@metamask/controller-utils';\nimport type { TransactionParams } from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\n\nimport { RELAY_URL_BASE } from './constants';\nimport type { RelayQuote, RelayStatus } from './types';\nimport { projectLogger } from '../../logger';\nimport type {\n PayStrategyExecuteRequest,\n TransactionPayControllerMessenger,\n} from '../../types';\nimport {\n updateTransaction,\n waitForTransactionConfirmed,\n} from '../../utils/transaction';\n\nconst log = createModuleLogger(projectLogger, 'relay-strategy');\n\n/**\n * Submits Relay quotes.\n *\n * @param request - Request object.\n * @returns An object containing the transaction hash if available.\n */\nexport async function submitRelayQuotes(\n request: PayStrategyExecuteRequest<RelayQuote>,\n): Promise<{ transactionHash?: Hex }> {\n log('Executing quotes', request);\n\n const { quotes, messenger, transaction } = request;\n\n let transactionHash: Hex | undefined;\n\n for (const quote of quotes) {\n ({ transactionHash } = await executeSingleQuote(\n quote.original,\n messenger,\n transaction,\n ));\n }\n\n const isSkipTransaction = quotes.some((q) => q.original.skipTransaction);\n\n if (isSkipTransaction) {\n log('Skipping original transaction', transactionHash);\n return { transactionHash };\n }\n\n return { transactionHash: undefined };\n}\n\n/**\n * Executes a single Relay quote.\n *\n * @param quote - Relay quote to execute.\n * @param messenger - Controller messenger.\n * @param transaction - Original transaction meta.\n * @returns An object containing the transaction hash if available.\n */\nasync function executeSingleQuote(\n quote: RelayQuote,\n messenger: TransactionPayControllerMessenger,\n transaction: TransactionMeta,\n) {\n log('Executing single quote', quote);\n\n const { kind } = quote.steps[0];\n\n if (kind !== 'transaction') {\n throw new Error(`Unsupported step kind: ${kind as string}`);\n }\n\n const transactionParams = quote.steps[0].items[0].data;\n const chainId = toHex(transactionParams.chainId);\n const normalizedParams = normalizeParams(transactionParams);\n\n const networkClientId = messenger.call(\n 'NetworkController:findNetworkClientIdByChainId',\n chainId,\n );\n\n log('Adding transaction', {\n chainId,\n normalizedParams,\n networkClientId,\n });\n\n if (quote.skipTransaction) {\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Remove nonce from skipped transaction',\n },\n (tx) => {\n tx.txParams.nonce = undefined;\n },\n );\n }\n\n const result = await messenger.call(\n 'TransactionController:addTransaction',\n normalizedParams,\n {\n networkClientId,\n origin: ORIGIN_METAMASK,\n requireApproval: false,\n },\n );\n\n const { transactionMeta, result: transactionHashPromise } = result;\n\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Add required transaction ID',\n },\n (tx) => {\n if (!tx.requiredTransactionIds) {\n tx.requiredTransactionIds = [];\n }\n\n tx.requiredTransactionIds.push(transactionMeta.id);\n },\n );\n\n log('Added transaction', transactionMeta);\n\n const transactionHash = (await transactionHashPromise) as Hex;\n\n log('Submitted transaction', transactionHash);\n\n await waitForTransactionConfirmed(transactionMeta.id, messenger);\n\n log('Transaction confirmed', transactionMeta.id);\n\n await waitForRelayCompletion(quote);\n\n log('Relay request completed');\n\n if (quote.skipTransaction) {\n log('Updating intent complete flag on transaction', transaction.id);\n\n updateTransaction(\n {\n transactionId: transaction.id,\n messenger,\n note: 'Intent complete after Relay completion',\n },\n (tx) => {\n tx.isIntentComplete = true;\n },\n );\n }\n\n return { transactionHash };\n}\n\n/**\n * Wait for a Relay request to complete.\n *\n * @param quote - Relay quote associated with the request.\n * @returns A promise that resolves when the Relay request is complete.\n */\nasync function waitForRelayCompletion(quote: RelayQuote) {\n const { endpoint, method } = quote.steps[0].items[0].check;\n const url = `${RELAY_URL_BASE}${endpoint}`;\n\n while (true) {\n const response = await successfulFetch(url, { method });\n const status = (await response.json()) as RelayStatus;\n\n log('Polled status', status.status, status);\n\n if (status.status === 'success') {\n return;\n }\n\n if (['failure', 'refund'].includes(status.status)) {\n throw new Error(`Relay request failed with status: ${status.status}`);\n }\n\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n}\n\n/**\n * Normalize the parameters from a relay quote step to match TransactionParams.\n *\n * @param params - Parameters from a relay quote step.\n * @returns Normalized transaction parameters.\n */\nfunction normalizeParams(\n params: RelayQuote['steps'][0]['items'][0]['data'],\n): TransactionParams {\n return {\n data: params.data,\n from: params.from,\n gas: toHex(params.gas),\n maxFeePerGas: toHex(params.maxFeePerGas),\n maxPriorityFeePerGas: toHex(params.maxPriorityFeePerGas),\n to: params.to,\n value: toHex(params.value ?? '0'),\n };\n}\n"]}
|
package/dist/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n CurrencyRateControllerActions,\n TokenBalancesControllerGetStateAction,\n} from '@metamask/assets-controllers';\nimport type { TokenListControllerActions } from '@metamask/assets-controllers';\nimport type { TokenRatesControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { TokensControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { AccountTrackerControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { RestrictedMessenger } from '@metamask/base-controller';\nimport type { ControllerStateChangeEvent } from '@metamask/base-controller';\nimport type { ControllerGetStateAction } from '@metamask/base-controller';\nimport type { BridgeControllerActions } from '@metamask/bridge-controller';\nimport type { BridgeStatusControllerStateChangeEvent } from '@metamask/bridge-status-controller';\nimport type { BridgeStatusControllerActions } from '@metamask/bridge-status-controller';\nimport type { GasFeeControllerActions } from '@metamask/gas-fee-controller';\nimport type { NetworkControllerFindNetworkClientIdByChainIdAction } from '@metamask/network-controller';\nimport type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller';\nimport type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';\nimport type { TransactionControllerUnapprovedTransactionAddedEvent } from '@metamask/transaction-controller';\nimport type { TransactionControllerGetStateAction } from '@metamask/transaction-controller';\nimport type { TransactionControllerStateChangeEvent } from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { TransactionControllerAddTransactionAction } from '@metamask/transaction-controller';\nimport type { TransactionControllerUpdateTransactionAction } from '@metamask/transaction-controller';\nimport type { BatchTransaction } from '@metamask/transaction-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport type { Draft } from 'immer';\n\nimport type { CONTROLLER_NAME, TransactionPayStrategy } from './constants';\n\nexport type AllowedActions =\n | AccountTrackerControllerGetStateAction\n | BridgeControllerActions\n | BridgeStatusControllerActions\n | CurrencyRateControllerActions\n | GasFeeControllerActions\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetNetworkClientByIdAction\n | RemoteFeatureFlagControllerGetStateAction\n | TokenBalancesControllerGetStateAction\n | TokenListControllerActions\n | TokenRatesControllerGetStateAction\n | TokensControllerGetStateAction\n | TransactionControllerAddTransactionAction\n | TransactionControllerGetStateAction\n | TransactionControllerUpdateTransactionAction;\n\nexport type AllowedEvents =\n | BridgeStatusControllerStateChangeEvent\n | TransactionControllerStateChangeEvent\n | TransactionControllerUnapprovedTransactionAddedEvent;\n\nexport type TransactionPayControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState\n>;\n\nexport type TransactionPayControllerGetStrategyAction = {\n type: `${typeof CONTROLLER_NAME}:getStrategy`;\n handler: (transaction: TransactionMeta) => Promise<TransactionPayStrategy>;\n};\n\nexport type TransactionPayControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState\n >;\n\nexport type TransactionPayControllerActions =\n | TransactionPayControllerGetStateAction\n | TransactionPayControllerGetStrategyAction;\n\nexport type TransactionPayControllerEvents =\n TransactionPayControllerStateChangeEvent;\n\nexport type TransactionPayControllerMessenger = RestrictedMessenger<\n typeof CONTROLLER_NAME,\n TransactionPayControllerActions | AllowedActions,\n TransactionPayControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\nexport type TransactionPayControllerOptions = {\n getStrategy?: (\n transaction: TransactionMeta,\n ) => Promise<TransactionPayStrategy>;\n messenger: TransactionPayControllerMessenger;\n state?: Partial<TransactionPayControllerState>;\n};\n\nexport type TransactionPayControllerState = {\n transactionData: Record<string, TransactionData>;\n};\n\nexport type TransactionData = {\n isLoading: boolean;\n paymentToken?: TransactionPaymentToken;\n quotes?: TransactionPayQuote<Json>[];\n quotesLastUpdated?: number;\n sourceAmounts?: TransactionPaySourceAmount[];\n tokens: TransactionPayRequiredToken[];\n totals?: TransactionPayTotals;\n};\n\nexport type TransactionPayRequiredToken = {\n address: Hex;\n allowUnderMinimum: boolean;\n amountFiat: string;\n amountHuman: string;\n amountRaw: string;\n amountUsd: string;\n balanceFiat: string;\n balanceHuman: string;\n balanceRaw: string;\n balanceUsd: string;\n chainId: Hex;\n decimals: number;\n skipIfBalance: boolean;\n symbol: string;\n};\n\nexport type TransactionPaySourceAmount = {\n sourceAmountHuman: string;\n sourceAmountRaw: string;\n targetTokenAddress: Hex;\n};\n\nexport type TransactionPaymentToken = {\n address: Hex;\n balanceFiat: string;\n balanceHuman: string;\n balanceRaw: string;\n balanceUsd: string;\n chainId: Hex;\n decimals: number;\n symbol: string;\n};\n\nexport type UpdateTransactionDataCallback = (\n transactionId: string,\n fn: (data: Draft<TransactionData>) => void,\n) => void;\n\nexport type FiatRates = {\n fiatRate: string;\n usdRate: string;\n};\n\nexport type QuoteRequest = {\n from: Hex;\n sourceBalanceRaw: string;\n sourceChainId: Hex;\n sourceTokenAddress: Hex;\n sourceTokenAmount: string;\n targetAmountMinimum: string;\n targetChainId: Hex;\n targetTokenAddress: Hex;\n};\n\nexport type TransactionPayFees = {\n provider: FiatValue;\n sourceNetwork: FiatValue;\n targetNetwork: FiatValue;\n};\n\nexport type TransactionPayQuote<OriginalQuote> = {\n dust: FiatValue;\n estimatedDuration: number;\n fees: TransactionPayFees;\n original: OriginalQuote;\n request: QuoteRequest;\n strategy: TransactionPayStrategy;\n};\n\nexport type PayStrategyGetQuotesRequest = {\n messenger: TransactionPayControllerMessenger;\n requests: QuoteRequest[];\n transaction: TransactionMeta;\n};\n\nexport type PayStrategyExecuteRequest<OriginalRequest> = {\n isSmartTransaction: (chainId: Hex) => boolean;\n messenger: TransactionPayControllerMessenger;\n quotes: TransactionPayQuote<OriginalRequest>[];\n transaction: TransactionMeta;\n};\n\nexport type PayStrategyGetBatchRequest<OriginalQuote> = {\n messenger: TransactionPayControllerMessenger;\n quotes: TransactionPayQuote<OriginalQuote>[];\n};\n\nexport type PayStrategyGetRefreshIntervalRequest = {\n chainId: Hex;\n messenger: TransactionPayControllerMessenger;\n};\n\nexport type PayStrategy<OriginalQuote> = {\n getQuotes: (\n request: PayStrategyGetQuotesRequest,\n ) => Promise<TransactionPayQuote<OriginalQuote>[]>;\n\n getBatchTransactions?: (\n request: PayStrategyGetBatchRequest<OriginalQuote>,\n ) => Promise<BatchTransaction[]>;\n\n getRefreshInterval?: (\n request: PayStrategyGetRefreshIntervalRequest,\n ) => Promise<number | undefined>;\n\n execute: (request: PayStrategyExecuteRequest<OriginalQuote>) => Promise<{\n transactionHash?: Hex;\n }>;\n};\n\nexport type FiatValue = {\n fiat: string;\n usd: string;\n};\n\nexport type TransactionPayTotals = {\n estimatedDuration: number;\n fees: TransactionPayFees;\n total: FiatValue;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n CurrencyRateControllerActions,\n TokenBalancesControllerGetStateAction,\n} from '@metamask/assets-controllers';\nimport type { TokenListControllerActions } from '@metamask/assets-controllers';\nimport type { TokenRatesControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { TokensControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { AccountTrackerControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { RestrictedMessenger } from '@metamask/base-controller';\nimport type { ControllerStateChangeEvent } from '@metamask/base-controller';\nimport type { ControllerGetStateAction } from '@metamask/base-controller';\nimport type { BridgeControllerActions } from '@metamask/bridge-controller';\nimport type { BridgeStatusControllerStateChangeEvent } from '@metamask/bridge-status-controller';\nimport type { BridgeStatusControllerActions } from '@metamask/bridge-status-controller';\nimport type { GasFeeControllerActions } from '@metamask/gas-fee-controller';\nimport type { NetworkControllerFindNetworkClientIdByChainIdAction } from '@metamask/network-controller';\nimport type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller';\nimport type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';\nimport type { TransactionControllerUnapprovedTransactionAddedEvent } from '@metamask/transaction-controller';\nimport type { TransactionControllerGetStateAction } from '@metamask/transaction-controller';\nimport type { TransactionControllerStateChangeEvent } from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { TransactionControllerAddTransactionAction } from '@metamask/transaction-controller';\nimport type { TransactionControllerUpdateTransactionAction } from '@metamask/transaction-controller';\nimport type { BatchTransaction } from '@metamask/transaction-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport type { Draft } from 'immer';\n\nimport type { CONTROLLER_NAME, TransactionPayStrategy } from './constants';\n\nexport type AllowedActions =\n | AccountTrackerControllerGetStateAction\n | BridgeControllerActions\n | BridgeStatusControllerActions\n | CurrencyRateControllerActions\n | GasFeeControllerActions\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetNetworkClientByIdAction\n | RemoteFeatureFlagControllerGetStateAction\n | TokenBalancesControllerGetStateAction\n | TokenListControllerActions\n | TokenRatesControllerGetStateAction\n | TokensControllerGetStateAction\n | TransactionControllerAddTransactionAction\n | TransactionControllerGetStateAction\n | TransactionControllerUpdateTransactionAction;\n\nexport type AllowedEvents =\n | BridgeStatusControllerStateChangeEvent\n | TransactionControllerStateChangeEvent\n | TransactionControllerUnapprovedTransactionAddedEvent;\n\nexport type TransactionPayControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState\n>;\n\nexport type TransactionPayControllerGetStrategyAction = {\n type: `${typeof CONTROLLER_NAME}:getStrategy`;\n handler: (transaction: TransactionMeta) => Promise<TransactionPayStrategy>;\n};\n\nexport type TransactionPayControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState\n >;\n\nexport type TransactionPayControllerActions =\n | TransactionPayControllerGetStateAction\n | TransactionPayControllerGetStrategyAction;\n\nexport type TransactionPayControllerEvents =\n TransactionPayControllerStateChangeEvent;\n\nexport type TransactionPayControllerMessenger = RestrictedMessenger<\n typeof CONTROLLER_NAME,\n TransactionPayControllerActions | AllowedActions,\n TransactionPayControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\n/** Options for the TransactionPayController. */\nexport type TransactionPayControllerOptions = {\n /** Callback to select the PayStrategy for a transaction. */\n getStrategy?: (\n transaction: TransactionMeta,\n ) => Promise<TransactionPayStrategy>;\n\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n\n /** Initial state of the controller. */\n state?: Partial<TransactionPayControllerState>;\n};\n\n/** State of the TransactionPayController. */\nexport type TransactionPayControllerState = {\n /** State relating to each transaction, keyed by transaction ID. */\n transactionData: Record<string, TransactionData>;\n};\n\n/** State relating to a single transaction. */\nexport type TransactionData = {\n /** Whether quotes are currently being retrieved. */\n isLoading: boolean;\n\n /** Source token selected for the transaction. */\n paymentToken?: TransactionPaymentToken;\n\n /** Quotes retrieved for the transaction. */\n quotes?: TransactionPayQuote<Json>[];\n\n /** Timestamp of when quotes were last updated. */\n quotesLastUpdated?: number;\n\n /** Amounts of payment token required for each required token. */\n sourceAmounts?: TransactionPaySourceAmount[];\n\n /** Tokens required by the transaction. */\n tokens: TransactionPayRequiredToken[];\n\n /** Calculated totals for the transaction. */\n totals?: TransactionPayTotals;\n};\n\n/** A token required by a transaction. */\nexport type TransactionPayRequiredToken = {\n /** Address of the required token. */\n address: Hex;\n\n /** Whether to allow quotes that return less than the minimum amount requested. */\n allowUnderMinimum: boolean;\n\n /** Amount required in the selected currency. */\n amountFiat: string;\n\n /** Amount required in a human-readable format factoring token decimals. */\n amountHuman: string;\n\n /** Amount required in atomic format without factoring token decimals. */\n amountRaw: string;\n\n /** Amount required in USD. */\n amountUsd: string;\n\n /** Balance of the required token in the selected currency. */\n balanceFiat: string;\n\n /** Balance of the required token in a human-readable format factoring token decimals. */\n balanceHuman: string;\n\n /** Balance of the required token in atomic format without factoring token decimals. */\n balanceRaw: string;\n\n /** Balance of the required token in USD. */\n balanceUsd: string;\n\n /** Chain ID of the required token. */\n chainId: Hex;\n\n /** Decimals of the required token. */\n decimals: number;\n\n /** Whether to skip transfer of this token if balance is already sufficient. */\n skipIfBalance: boolean;\n\n /** Symbol of the required token. */\n symbol: string;\n};\n\n/** Amount of payment token required by a required token. */\nexport type TransactionPaySourceAmount = {\n /** Amount of payment token required in the selected currency. */\n sourceAmountHuman: string;\n\n /** Amount of payment token required in atomic format without factoring token decimals. */\n sourceAmountRaw: string;\n\n /** Address of the required token. */\n targetTokenAddress: Hex;\n};\n\n/** Source token used to pay for required tokens. */\nexport type TransactionPaymentToken = {\n /** Address of the payment token. */\n address: Hex;\n\n /** Balance of the payment token in the selected currency. */\n balanceFiat: string;\n\n /** Balance of the payment token in a human-readable format factoring token decimals. */\n balanceHuman: string;\n\n /** Balance of the payment token in atomic format without factoring token decimals. */\n balanceRaw: string;\n\n /** Balance of the payment token in USD. */\n balanceUsd: string;\n\n /** Chain ID of the payment token. */\n chainId: Hex;\n\n /** Decimals of the payment token. */\n decimals: number;\n\n /** Symbol of the payment token. */\n symbol: string;\n};\n\n/** Callback to update state for a single transaction. */\nexport type UpdateTransactionDataCallback = (\n /** ID of the transaction to update. */\n transactionId: string,\n /** Function that receives a draft of the transaction data to update. */\n fn: (data: Draft<TransactionData>) => void,\n) => void;\n\n/** Conversion rates from the native currency to other currencies. */\nexport type FiatRates = {\n /** Conversion rate for the native currency to the selected fiat currency. */\n fiatRate: string;\n\n /** Conversion rate for the native currency to USD. */\n usdRate: string;\n};\n\n/** Request for a quote to retrieve a required token. */\nexport type QuoteRequest = {\n /** Address of the user's account. */\n from: Hex;\n\n /** Balance of the source token in atomic format without factoring token decimals. */\n sourceBalanceRaw: string;\n\n /** Chain ID of the source token. */\n sourceChainId: Hex;\n\n /** Address of the source token. */\n sourceTokenAddress: Hex;\n\n /** Amount of the required token in atomic format without factoring token decimals. */\n sourceTokenAmount: string;\n\n /** Minimum amount required of the target token in atomic format without factoring token decimals. */\n targetAmountMinimum: string;\n\n /** Chain ID of the target token. */\n targetChainId: Hex;\n\n /** Address of the target token. */\n targetTokenAddress: Hex;\n};\n\n/** Fees associated with a transaction pay quote. */\nexport type TransactionPayFees = {\n /** Fee charged by the quote provider. */\n provider: FiatValue;\n\n /** Network fee for transactions on the source network. */\n sourceNetwork: FiatValue;\n\n /** Network fee for transactions on the target network. */\n targetNetwork: FiatValue;\n};\n\n/** Quote returned to retrieve a required token using the payment token. */\nexport type TransactionPayQuote<OriginalQuote> = {\n /** Additional amount provided by the quote beyond the minimum requested. */\n dust: FiatValue;\n\n /** Duration estimated for the transaction to complete in seconds. */\n estimatedDuration: number;\n\n /** Fees associated with the transaction pay quote. */\n fees: TransactionPayFees;\n\n /** Raw quote data returned by the provider. */\n original: OriginalQuote;\n\n /** Associated quote request. */\n request: QuoteRequest;\n\n /** Name of the strategy used to retrieve the quote. */\n strategy: TransactionPayStrategy;\n};\n\n/** Request to get quotes for a transaction. */\nexport type PayStrategyGetQuotesRequest = {\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n\n /** Quote requests for required tokens. */\n requests: QuoteRequest[];\n\n /** Metadata of the original target transaction. */\n transaction: TransactionMeta;\n};\n\n/** Request to submit quotes for a transaction. */\nexport type PayStrategyExecuteRequest<OriginalRequest> = {\n /** Callback to determine if the transaction is a smart transaction. */\n isSmartTransaction: (chainId: Hex) => boolean;\n\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n\n /** Quotes to be submitted. */\n quotes: TransactionPayQuote<OriginalRequest>[];\n\n /** Metadata of the original target transaction. */\n transaction: TransactionMeta;\n};\n\n/** Request to get batch transactions for quotes. */\nexport type PayStrategyGetBatchRequest<OriginalQuote> = {\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n\n /** Quotes for required tokens. */\n quotes: TransactionPayQuote<OriginalQuote>[];\n};\n\n/** Request to get refresh interval for a specific strategy. */\nexport type PayStrategyGetRefreshIntervalRequest = {\n /** Chain ID of the source or payment token. */\n chainId: Hex;\n\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n};\n\n/** Strategy used to obtain required tokens for a transaction. */\nexport type PayStrategy<OriginalQuote> = {\n /** Retrieve quotes for required tokens. */\n getQuotes: (\n request: PayStrategyGetQuotesRequest,\n ) => Promise<TransactionPayQuote<OriginalQuote>[]>;\n\n /** Retrieve batch transactions for quotes, if supported by the strategy. */\n getBatchTransactions?: (\n request: PayStrategyGetBatchRequest<OriginalQuote>,\n ) => Promise<BatchTransaction[]>;\n\n /**\n * Retrieve refresh interval for the strategy, if applicable.\n * Defaults to 30 seconds.\n */\n getRefreshInterval?: (\n request: PayStrategyGetRefreshIntervalRequest,\n ) => Promise<number | undefined>;\n\n /** Execute or submit the quotes to obtain required tokens. */\n execute: (request: PayStrategyExecuteRequest<OriginalQuote>) => Promise<{\n transactionHash?: Hex;\n }>;\n};\n\n/** Single fiat value in alternate currencies. */\nexport type FiatValue = {\n /** Value in the selected fiat currency. */\n fiat: string;\n\n /** Value in USD. */\n usd: string;\n};\n\n/** Calculated totals for a target transaction and all quotes. */\nexport type TransactionPayTotals = {\n /** Total estimated duration for the target transaction and all quotes. */\n estimatedDuration: number;\n\n /** Total fees for the target transaction and all quotes. */\n fees: TransactionPayFees;\n\n /** Overall total cost for the target transaction and all quotes. */\n total: FiatValue;\n};\n"]}
|
package/dist/types.d.cts
CHANGED
|
@@ -34,116 +34,216 @@ export type TransactionPayControllerStateChangeEvent = ControllerStateChangeEven
|
|
|
34
34
|
export type TransactionPayControllerActions = TransactionPayControllerGetStateAction | TransactionPayControllerGetStrategyAction;
|
|
35
35
|
export type TransactionPayControllerEvents = TransactionPayControllerStateChangeEvent;
|
|
36
36
|
export type TransactionPayControllerMessenger = RestrictedMessenger<typeof CONTROLLER_NAME, TransactionPayControllerActions | AllowedActions, TransactionPayControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
37
|
+
/** Options for the TransactionPayController. */
|
|
37
38
|
export type TransactionPayControllerOptions = {
|
|
39
|
+
/** Callback to select the PayStrategy for a transaction. */
|
|
38
40
|
getStrategy?: (transaction: TransactionMeta) => Promise<TransactionPayStrategy>;
|
|
41
|
+
/** Controller messenger. */
|
|
39
42
|
messenger: TransactionPayControllerMessenger;
|
|
43
|
+
/** Initial state of the controller. */
|
|
40
44
|
state?: Partial<TransactionPayControllerState>;
|
|
41
45
|
};
|
|
46
|
+
/** State of the TransactionPayController. */
|
|
42
47
|
export type TransactionPayControllerState = {
|
|
48
|
+
/** State relating to each transaction, keyed by transaction ID. */
|
|
43
49
|
transactionData: Record<string, TransactionData>;
|
|
44
50
|
};
|
|
51
|
+
/** State relating to a single transaction. */
|
|
45
52
|
export type TransactionData = {
|
|
53
|
+
/** Whether quotes are currently being retrieved. */
|
|
46
54
|
isLoading: boolean;
|
|
55
|
+
/** Source token selected for the transaction. */
|
|
47
56
|
paymentToken?: TransactionPaymentToken;
|
|
57
|
+
/** Quotes retrieved for the transaction. */
|
|
48
58
|
quotes?: TransactionPayQuote<Json>[];
|
|
59
|
+
/** Timestamp of when quotes were last updated. */
|
|
49
60
|
quotesLastUpdated?: number;
|
|
61
|
+
/** Amounts of payment token required for each required token. */
|
|
50
62
|
sourceAmounts?: TransactionPaySourceAmount[];
|
|
63
|
+
/** Tokens required by the transaction. */
|
|
51
64
|
tokens: TransactionPayRequiredToken[];
|
|
65
|
+
/** Calculated totals for the transaction. */
|
|
52
66
|
totals?: TransactionPayTotals;
|
|
53
67
|
};
|
|
68
|
+
/** A token required by a transaction. */
|
|
54
69
|
export type TransactionPayRequiredToken = {
|
|
70
|
+
/** Address of the required token. */
|
|
55
71
|
address: Hex;
|
|
72
|
+
/** Whether to allow quotes that return less than the minimum amount requested. */
|
|
56
73
|
allowUnderMinimum: boolean;
|
|
74
|
+
/** Amount required in the selected currency. */
|
|
57
75
|
amountFiat: string;
|
|
76
|
+
/** Amount required in a human-readable format factoring token decimals. */
|
|
58
77
|
amountHuman: string;
|
|
78
|
+
/** Amount required in atomic format without factoring token decimals. */
|
|
59
79
|
amountRaw: string;
|
|
80
|
+
/** Amount required in USD. */
|
|
60
81
|
amountUsd: string;
|
|
82
|
+
/** Balance of the required token in the selected currency. */
|
|
61
83
|
balanceFiat: string;
|
|
84
|
+
/** Balance of the required token in a human-readable format factoring token decimals. */
|
|
62
85
|
balanceHuman: string;
|
|
86
|
+
/** Balance of the required token in atomic format without factoring token decimals. */
|
|
63
87
|
balanceRaw: string;
|
|
88
|
+
/** Balance of the required token in USD. */
|
|
64
89
|
balanceUsd: string;
|
|
90
|
+
/** Chain ID of the required token. */
|
|
65
91
|
chainId: Hex;
|
|
92
|
+
/** Decimals of the required token. */
|
|
66
93
|
decimals: number;
|
|
94
|
+
/** Whether to skip transfer of this token if balance is already sufficient. */
|
|
67
95
|
skipIfBalance: boolean;
|
|
96
|
+
/** Symbol of the required token. */
|
|
68
97
|
symbol: string;
|
|
69
98
|
};
|
|
99
|
+
/** Amount of payment token required by a required token. */
|
|
70
100
|
export type TransactionPaySourceAmount = {
|
|
101
|
+
/** Amount of payment token required in the selected currency. */
|
|
71
102
|
sourceAmountHuman: string;
|
|
103
|
+
/** Amount of payment token required in atomic format without factoring token decimals. */
|
|
72
104
|
sourceAmountRaw: string;
|
|
105
|
+
/** Address of the required token. */
|
|
73
106
|
targetTokenAddress: Hex;
|
|
74
107
|
};
|
|
108
|
+
/** Source token used to pay for required tokens. */
|
|
75
109
|
export type TransactionPaymentToken = {
|
|
110
|
+
/** Address of the payment token. */
|
|
76
111
|
address: Hex;
|
|
112
|
+
/** Balance of the payment token in the selected currency. */
|
|
77
113
|
balanceFiat: string;
|
|
114
|
+
/** Balance of the payment token in a human-readable format factoring token decimals. */
|
|
78
115
|
balanceHuman: string;
|
|
116
|
+
/** Balance of the payment token in atomic format without factoring token decimals. */
|
|
79
117
|
balanceRaw: string;
|
|
118
|
+
/** Balance of the payment token in USD. */
|
|
80
119
|
balanceUsd: string;
|
|
120
|
+
/** Chain ID of the payment token. */
|
|
81
121
|
chainId: Hex;
|
|
122
|
+
/** Decimals of the payment token. */
|
|
82
123
|
decimals: number;
|
|
124
|
+
/** Symbol of the payment token. */
|
|
83
125
|
symbol: string;
|
|
84
126
|
};
|
|
85
|
-
|
|
127
|
+
/** Callback to update state for a single transaction. */
|
|
128
|
+
export type UpdateTransactionDataCallback = (
|
|
129
|
+
/** ID of the transaction to update. */
|
|
130
|
+
transactionId: string,
|
|
131
|
+
/** Function that receives a draft of the transaction data to update. */
|
|
132
|
+
fn: (data: Draft<TransactionData>) => void) => void;
|
|
133
|
+
/** Conversion rates from the native currency to other currencies. */
|
|
86
134
|
export type FiatRates = {
|
|
135
|
+
/** Conversion rate for the native currency to the selected fiat currency. */
|
|
87
136
|
fiatRate: string;
|
|
137
|
+
/** Conversion rate for the native currency to USD. */
|
|
88
138
|
usdRate: string;
|
|
89
139
|
};
|
|
140
|
+
/** Request for a quote to retrieve a required token. */
|
|
90
141
|
export type QuoteRequest = {
|
|
142
|
+
/** Address of the user's account. */
|
|
91
143
|
from: Hex;
|
|
144
|
+
/** Balance of the source token in atomic format without factoring token decimals. */
|
|
92
145
|
sourceBalanceRaw: string;
|
|
146
|
+
/** Chain ID of the source token. */
|
|
93
147
|
sourceChainId: Hex;
|
|
148
|
+
/** Address of the source token. */
|
|
94
149
|
sourceTokenAddress: Hex;
|
|
150
|
+
/** Amount of the required token in atomic format without factoring token decimals. */
|
|
95
151
|
sourceTokenAmount: string;
|
|
152
|
+
/** Minimum amount required of the target token in atomic format without factoring token decimals. */
|
|
96
153
|
targetAmountMinimum: string;
|
|
154
|
+
/** Chain ID of the target token. */
|
|
97
155
|
targetChainId: Hex;
|
|
156
|
+
/** Address of the target token. */
|
|
98
157
|
targetTokenAddress: Hex;
|
|
99
158
|
};
|
|
159
|
+
/** Fees associated with a transaction pay quote. */
|
|
100
160
|
export type TransactionPayFees = {
|
|
161
|
+
/** Fee charged by the quote provider. */
|
|
101
162
|
provider: FiatValue;
|
|
163
|
+
/** Network fee for transactions on the source network. */
|
|
102
164
|
sourceNetwork: FiatValue;
|
|
165
|
+
/** Network fee for transactions on the target network. */
|
|
103
166
|
targetNetwork: FiatValue;
|
|
104
167
|
};
|
|
168
|
+
/** Quote returned to retrieve a required token using the payment token. */
|
|
105
169
|
export type TransactionPayQuote<OriginalQuote> = {
|
|
170
|
+
/** Additional amount provided by the quote beyond the minimum requested. */
|
|
106
171
|
dust: FiatValue;
|
|
172
|
+
/** Duration estimated for the transaction to complete in seconds. */
|
|
107
173
|
estimatedDuration: number;
|
|
174
|
+
/** Fees associated with the transaction pay quote. */
|
|
108
175
|
fees: TransactionPayFees;
|
|
176
|
+
/** Raw quote data returned by the provider. */
|
|
109
177
|
original: OriginalQuote;
|
|
178
|
+
/** Associated quote request. */
|
|
110
179
|
request: QuoteRequest;
|
|
180
|
+
/** Name of the strategy used to retrieve the quote. */
|
|
111
181
|
strategy: TransactionPayStrategy;
|
|
112
182
|
};
|
|
183
|
+
/** Request to get quotes for a transaction. */
|
|
113
184
|
export type PayStrategyGetQuotesRequest = {
|
|
185
|
+
/** Controller messenger. */
|
|
114
186
|
messenger: TransactionPayControllerMessenger;
|
|
187
|
+
/** Quote requests for required tokens. */
|
|
115
188
|
requests: QuoteRequest[];
|
|
189
|
+
/** Metadata of the original target transaction. */
|
|
116
190
|
transaction: TransactionMeta;
|
|
117
191
|
};
|
|
192
|
+
/** Request to submit quotes for a transaction. */
|
|
118
193
|
export type PayStrategyExecuteRequest<OriginalRequest> = {
|
|
194
|
+
/** Callback to determine if the transaction is a smart transaction. */
|
|
119
195
|
isSmartTransaction: (chainId: Hex) => boolean;
|
|
196
|
+
/** Controller messenger. */
|
|
120
197
|
messenger: TransactionPayControllerMessenger;
|
|
198
|
+
/** Quotes to be submitted. */
|
|
121
199
|
quotes: TransactionPayQuote<OriginalRequest>[];
|
|
200
|
+
/** Metadata of the original target transaction. */
|
|
122
201
|
transaction: TransactionMeta;
|
|
123
202
|
};
|
|
203
|
+
/** Request to get batch transactions for quotes. */
|
|
124
204
|
export type PayStrategyGetBatchRequest<OriginalQuote> = {
|
|
205
|
+
/** Controller messenger. */
|
|
125
206
|
messenger: TransactionPayControllerMessenger;
|
|
207
|
+
/** Quotes for required tokens. */
|
|
126
208
|
quotes: TransactionPayQuote<OriginalQuote>[];
|
|
127
209
|
};
|
|
210
|
+
/** Request to get refresh interval for a specific strategy. */
|
|
128
211
|
export type PayStrategyGetRefreshIntervalRequest = {
|
|
212
|
+
/** Chain ID of the source or payment token. */
|
|
129
213
|
chainId: Hex;
|
|
214
|
+
/** Controller messenger. */
|
|
130
215
|
messenger: TransactionPayControllerMessenger;
|
|
131
216
|
};
|
|
217
|
+
/** Strategy used to obtain required tokens for a transaction. */
|
|
132
218
|
export type PayStrategy<OriginalQuote> = {
|
|
219
|
+
/** Retrieve quotes for required tokens. */
|
|
133
220
|
getQuotes: (request: PayStrategyGetQuotesRequest) => Promise<TransactionPayQuote<OriginalQuote>[]>;
|
|
221
|
+
/** Retrieve batch transactions for quotes, if supported by the strategy. */
|
|
134
222
|
getBatchTransactions?: (request: PayStrategyGetBatchRequest<OriginalQuote>) => Promise<BatchTransaction[]>;
|
|
223
|
+
/**
|
|
224
|
+
* Retrieve refresh interval for the strategy, if applicable.
|
|
225
|
+
* Defaults to 30 seconds.
|
|
226
|
+
*/
|
|
135
227
|
getRefreshInterval?: (request: PayStrategyGetRefreshIntervalRequest) => Promise<number | undefined>;
|
|
228
|
+
/** Execute or submit the quotes to obtain required tokens. */
|
|
136
229
|
execute: (request: PayStrategyExecuteRequest<OriginalQuote>) => Promise<{
|
|
137
230
|
transactionHash?: Hex;
|
|
138
231
|
}>;
|
|
139
232
|
};
|
|
233
|
+
/** Single fiat value in alternate currencies. */
|
|
140
234
|
export type FiatValue = {
|
|
235
|
+
/** Value in the selected fiat currency. */
|
|
141
236
|
fiat: string;
|
|
237
|
+
/** Value in USD. */
|
|
142
238
|
usd: string;
|
|
143
239
|
};
|
|
240
|
+
/** Calculated totals for a target transaction and all quotes. */
|
|
144
241
|
export type TransactionPayTotals = {
|
|
242
|
+
/** Total estimated duration for the target transaction and all quotes. */
|
|
145
243
|
estimatedDuration: number;
|
|
244
|
+
/** Total fees for the target transaction and all quotes. */
|
|
146
245
|
fees: TransactionPayFees;
|
|
246
|
+
/** Overall total cost for the target transaction and all quotes. */
|
|
147
247
|
total: FiatValue;
|
|
148
248
|
};
|
|
149
249
|
//# sourceMappingURL=types.d.cts.map
|
package/dist/types.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,qCAAqC,EACtC,qCAAqC;AACtC,OAAO,KAAK,EAAE,0BAA0B,EAAE,qCAAqC;AAC/E,OAAO,KAAK,EAAE,kCAAkC,EAAE,qCAAqC;AACvF,OAAO,KAAK,EAAE,8BAA8B,EAAE,qCAAqC;AACnF,OAAO,KAAK,EAAE,sCAAsC,EAAE,qCAAqC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,kCAAkC;AACrE,OAAO,KAAK,EAAE,0BAA0B,EAAE,kCAAkC;AAC5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,oCAAoC;AAC3E,OAAO,KAAK,EAAE,sCAAsC,EAAE,2CAA2C;AACjG,OAAO,KAAK,EAAE,6BAA6B,EAAE,2CAA2C;AACxF,OAAO,KAAK,EAAE,uBAAuB,EAAE,qCAAqC;AAC5E,OAAO,KAAK,EAAE,mDAAmD,EAAE,qCAAqC;AACxG,OAAO,KAAK,EAAE,2CAA2C,EAAE,qCAAqC;AAChG,OAAO,KAAK,EAAE,yCAAyC,EAAE,iDAAiD;AAC1G,OAAO,KAAK,EAAE,oDAAoD,EAAE,yCAAyC;AAC7G,OAAO,KAAK,EAAE,mCAAmC,EAAE,yCAAyC;AAC5F,OAAO,KAAK,EAAE,qCAAqC,EAAE,yCAAyC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AACxE,OAAO,KAAK,EAAE,yCAAyC,EAAE,yCAAyC;AAClG,OAAO,KAAK,EAAE,4CAA4C,EAAE,yCAAyC;AACrG,OAAO,KAAK,EAAE,gBAAgB,EAAE,yCAAyC;AACzE,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,wBAAwB;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,wBAAoB;AAE3E,MAAM,MAAM,cAAc,GACtB,sCAAsC,GACtC,uBAAuB,GACvB,6BAA6B,GAC7B,6BAA6B,GAC7B,uBAAuB,GACvB,mDAAmD,GACnD,2CAA2C,GAC3C,yCAAyC,GACzC,qCAAqC,GACrC,0BAA0B,GAC1B,kCAAkC,GAClC,8BAA8B,GAC9B,yCAAyC,GACzC,mCAAmC,GACnC,4CAA4C,CAAC;AAEjD,MAAM,MAAM,aAAa,GACrB,sCAAsC,GACtC,qCAAqC,GACrC,oDAAoD,CAAC;AAEzD,MAAM,MAAM,sCAAsC,GAAG,wBAAwB,CAC3E,OAAO,eAAe,EACtB,6BAA6B,CAC9B,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG;IACtD,IAAI,EAAE,GAAG,OAAO,eAAe,cAAc,CAAC;IAC9C,OAAO,EAAE,CAAC,WAAW,EAAE,eAAe,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAClD,0BAA0B,CACxB,OAAO,eAAe,EACtB,6BAA6B,CAC9B,CAAC;AAEJ,MAAM,MAAM,+BAA+B,GACvC,sCAAsC,GACtC,yCAAyC,CAAC;AAE9C,MAAM,MAAM,8BAA8B,GACxC,wCAAwC,CAAC;AAE3C,MAAM,MAAM,iCAAiC,GAAG,mBAAmB,CACjE,OAAO,eAAe,EACtB,+BAA+B,GAAG,cAAc,EAChD,8BAA8B,GAAG,aAAa,EAC9C,cAAc,CAAC,MAAM,CAAC,EACtB,aAAa,CAAC,MAAM,CAAC,CACtB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,CAAC,EAAE,CACZ,WAAW,EAAE,eAAe,KACzB,OAAO,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.mts
CHANGED
|
@@ -34,116 +34,216 @@ export type TransactionPayControllerStateChangeEvent = ControllerStateChangeEven
|
|
|
34
34
|
export type TransactionPayControllerActions = TransactionPayControllerGetStateAction | TransactionPayControllerGetStrategyAction;
|
|
35
35
|
export type TransactionPayControllerEvents = TransactionPayControllerStateChangeEvent;
|
|
36
36
|
export type TransactionPayControllerMessenger = RestrictedMessenger<typeof CONTROLLER_NAME, TransactionPayControllerActions | AllowedActions, TransactionPayControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
37
|
+
/** Options for the TransactionPayController. */
|
|
37
38
|
export type TransactionPayControllerOptions = {
|
|
39
|
+
/** Callback to select the PayStrategy for a transaction. */
|
|
38
40
|
getStrategy?: (transaction: TransactionMeta) => Promise<TransactionPayStrategy>;
|
|
41
|
+
/** Controller messenger. */
|
|
39
42
|
messenger: TransactionPayControllerMessenger;
|
|
43
|
+
/** Initial state of the controller. */
|
|
40
44
|
state?: Partial<TransactionPayControllerState>;
|
|
41
45
|
};
|
|
46
|
+
/** State of the TransactionPayController. */
|
|
42
47
|
export type TransactionPayControllerState = {
|
|
48
|
+
/** State relating to each transaction, keyed by transaction ID. */
|
|
43
49
|
transactionData: Record<string, TransactionData>;
|
|
44
50
|
};
|
|
51
|
+
/** State relating to a single transaction. */
|
|
45
52
|
export type TransactionData = {
|
|
53
|
+
/** Whether quotes are currently being retrieved. */
|
|
46
54
|
isLoading: boolean;
|
|
55
|
+
/** Source token selected for the transaction. */
|
|
47
56
|
paymentToken?: TransactionPaymentToken;
|
|
57
|
+
/** Quotes retrieved for the transaction. */
|
|
48
58
|
quotes?: TransactionPayQuote<Json>[];
|
|
59
|
+
/** Timestamp of when quotes were last updated. */
|
|
49
60
|
quotesLastUpdated?: number;
|
|
61
|
+
/** Amounts of payment token required for each required token. */
|
|
50
62
|
sourceAmounts?: TransactionPaySourceAmount[];
|
|
63
|
+
/** Tokens required by the transaction. */
|
|
51
64
|
tokens: TransactionPayRequiredToken[];
|
|
65
|
+
/** Calculated totals for the transaction. */
|
|
52
66
|
totals?: TransactionPayTotals;
|
|
53
67
|
};
|
|
68
|
+
/** A token required by a transaction. */
|
|
54
69
|
export type TransactionPayRequiredToken = {
|
|
70
|
+
/** Address of the required token. */
|
|
55
71
|
address: Hex;
|
|
72
|
+
/** Whether to allow quotes that return less than the minimum amount requested. */
|
|
56
73
|
allowUnderMinimum: boolean;
|
|
74
|
+
/** Amount required in the selected currency. */
|
|
57
75
|
amountFiat: string;
|
|
76
|
+
/** Amount required in a human-readable format factoring token decimals. */
|
|
58
77
|
amountHuman: string;
|
|
78
|
+
/** Amount required in atomic format without factoring token decimals. */
|
|
59
79
|
amountRaw: string;
|
|
80
|
+
/** Amount required in USD. */
|
|
60
81
|
amountUsd: string;
|
|
82
|
+
/** Balance of the required token in the selected currency. */
|
|
61
83
|
balanceFiat: string;
|
|
84
|
+
/** Balance of the required token in a human-readable format factoring token decimals. */
|
|
62
85
|
balanceHuman: string;
|
|
86
|
+
/** Balance of the required token in atomic format without factoring token decimals. */
|
|
63
87
|
balanceRaw: string;
|
|
88
|
+
/** Balance of the required token in USD. */
|
|
64
89
|
balanceUsd: string;
|
|
90
|
+
/** Chain ID of the required token. */
|
|
65
91
|
chainId: Hex;
|
|
92
|
+
/** Decimals of the required token. */
|
|
66
93
|
decimals: number;
|
|
94
|
+
/** Whether to skip transfer of this token if balance is already sufficient. */
|
|
67
95
|
skipIfBalance: boolean;
|
|
96
|
+
/** Symbol of the required token. */
|
|
68
97
|
symbol: string;
|
|
69
98
|
};
|
|
99
|
+
/** Amount of payment token required by a required token. */
|
|
70
100
|
export type TransactionPaySourceAmount = {
|
|
101
|
+
/** Amount of payment token required in the selected currency. */
|
|
71
102
|
sourceAmountHuman: string;
|
|
103
|
+
/** Amount of payment token required in atomic format without factoring token decimals. */
|
|
72
104
|
sourceAmountRaw: string;
|
|
105
|
+
/** Address of the required token. */
|
|
73
106
|
targetTokenAddress: Hex;
|
|
74
107
|
};
|
|
108
|
+
/** Source token used to pay for required tokens. */
|
|
75
109
|
export type TransactionPaymentToken = {
|
|
110
|
+
/** Address of the payment token. */
|
|
76
111
|
address: Hex;
|
|
112
|
+
/** Balance of the payment token in the selected currency. */
|
|
77
113
|
balanceFiat: string;
|
|
114
|
+
/** Balance of the payment token in a human-readable format factoring token decimals. */
|
|
78
115
|
balanceHuman: string;
|
|
116
|
+
/** Balance of the payment token in atomic format without factoring token decimals. */
|
|
79
117
|
balanceRaw: string;
|
|
118
|
+
/** Balance of the payment token in USD. */
|
|
80
119
|
balanceUsd: string;
|
|
120
|
+
/** Chain ID of the payment token. */
|
|
81
121
|
chainId: Hex;
|
|
122
|
+
/** Decimals of the payment token. */
|
|
82
123
|
decimals: number;
|
|
124
|
+
/** Symbol of the payment token. */
|
|
83
125
|
symbol: string;
|
|
84
126
|
};
|
|
85
|
-
|
|
127
|
+
/** Callback to update state for a single transaction. */
|
|
128
|
+
export type UpdateTransactionDataCallback = (
|
|
129
|
+
/** ID of the transaction to update. */
|
|
130
|
+
transactionId: string,
|
|
131
|
+
/** Function that receives a draft of the transaction data to update. */
|
|
132
|
+
fn: (data: Draft<TransactionData>) => void) => void;
|
|
133
|
+
/** Conversion rates from the native currency to other currencies. */
|
|
86
134
|
export type FiatRates = {
|
|
135
|
+
/** Conversion rate for the native currency to the selected fiat currency. */
|
|
87
136
|
fiatRate: string;
|
|
137
|
+
/** Conversion rate for the native currency to USD. */
|
|
88
138
|
usdRate: string;
|
|
89
139
|
};
|
|
140
|
+
/** Request for a quote to retrieve a required token. */
|
|
90
141
|
export type QuoteRequest = {
|
|
142
|
+
/** Address of the user's account. */
|
|
91
143
|
from: Hex;
|
|
144
|
+
/** Balance of the source token in atomic format without factoring token decimals. */
|
|
92
145
|
sourceBalanceRaw: string;
|
|
146
|
+
/** Chain ID of the source token. */
|
|
93
147
|
sourceChainId: Hex;
|
|
148
|
+
/** Address of the source token. */
|
|
94
149
|
sourceTokenAddress: Hex;
|
|
150
|
+
/** Amount of the required token in atomic format without factoring token decimals. */
|
|
95
151
|
sourceTokenAmount: string;
|
|
152
|
+
/** Minimum amount required of the target token in atomic format without factoring token decimals. */
|
|
96
153
|
targetAmountMinimum: string;
|
|
154
|
+
/** Chain ID of the target token. */
|
|
97
155
|
targetChainId: Hex;
|
|
156
|
+
/** Address of the target token. */
|
|
98
157
|
targetTokenAddress: Hex;
|
|
99
158
|
};
|
|
159
|
+
/** Fees associated with a transaction pay quote. */
|
|
100
160
|
export type TransactionPayFees = {
|
|
161
|
+
/** Fee charged by the quote provider. */
|
|
101
162
|
provider: FiatValue;
|
|
163
|
+
/** Network fee for transactions on the source network. */
|
|
102
164
|
sourceNetwork: FiatValue;
|
|
165
|
+
/** Network fee for transactions on the target network. */
|
|
103
166
|
targetNetwork: FiatValue;
|
|
104
167
|
};
|
|
168
|
+
/** Quote returned to retrieve a required token using the payment token. */
|
|
105
169
|
export type TransactionPayQuote<OriginalQuote> = {
|
|
170
|
+
/** Additional amount provided by the quote beyond the minimum requested. */
|
|
106
171
|
dust: FiatValue;
|
|
172
|
+
/** Duration estimated for the transaction to complete in seconds. */
|
|
107
173
|
estimatedDuration: number;
|
|
174
|
+
/** Fees associated with the transaction pay quote. */
|
|
108
175
|
fees: TransactionPayFees;
|
|
176
|
+
/** Raw quote data returned by the provider. */
|
|
109
177
|
original: OriginalQuote;
|
|
178
|
+
/** Associated quote request. */
|
|
110
179
|
request: QuoteRequest;
|
|
180
|
+
/** Name of the strategy used to retrieve the quote. */
|
|
111
181
|
strategy: TransactionPayStrategy;
|
|
112
182
|
};
|
|
183
|
+
/** Request to get quotes for a transaction. */
|
|
113
184
|
export type PayStrategyGetQuotesRequest = {
|
|
185
|
+
/** Controller messenger. */
|
|
114
186
|
messenger: TransactionPayControllerMessenger;
|
|
187
|
+
/** Quote requests for required tokens. */
|
|
115
188
|
requests: QuoteRequest[];
|
|
189
|
+
/** Metadata of the original target transaction. */
|
|
116
190
|
transaction: TransactionMeta;
|
|
117
191
|
};
|
|
192
|
+
/** Request to submit quotes for a transaction. */
|
|
118
193
|
export type PayStrategyExecuteRequest<OriginalRequest> = {
|
|
194
|
+
/** Callback to determine if the transaction is a smart transaction. */
|
|
119
195
|
isSmartTransaction: (chainId: Hex) => boolean;
|
|
196
|
+
/** Controller messenger. */
|
|
120
197
|
messenger: TransactionPayControllerMessenger;
|
|
198
|
+
/** Quotes to be submitted. */
|
|
121
199
|
quotes: TransactionPayQuote<OriginalRequest>[];
|
|
200
|
+
/** Metadata of the original target transaction. */
|
|
122
201
|
transaction: TransactionMeta;
|
|
123
202
|
};
|
|
203
|
+
/** Request to get batch transactions for quotes. */
|
|
124
204
|
export type PayStrategyGetBatchRequest<OriginalQuote> = {
|
|
205
|
+
/** Controller messenger. */
|
|
125
206
|
messenger: TransactionPayControllerMessenger;
|
|
207
|
+
/** Quotes for required tokens. */
|
|
126
208
|
quotes: TransactionPayQuote<OriginalQuote>[];
|
|
127
209
|
};
|
|
210
|
+
/** Request to get refresh interval for a specific strategy. */
|
|
128
211
|
export type PayStrategyGetRefreshIntervalRequest = {
|
|
212
|
+
/** Chain ID of the source or payment token. */
|
|
129
213
|
chainId: Hex;
|
|
214
|
+
/** Controller messenger. */
|
|
130
215
|
messenger: TransactionPayControllerMessenger;
|
|
131
216
|
};
|
|
217
|
+
/** Strategy used to obtain required tokens for a transaction. */
|
|
132
218
|
export type PayStrategy<OriginalQuote> = {
|
|
219
|
+
/** Retrieve quotes for required tokens. */
|
|
133
220
|
getQuotes: (request: PayStrategyGetQuotesRequest) => Promise<TransactionPayQuote<OriginalQuote>[]>;
|
|
221
|
+
/** Retrieve batch transactions for quotes, if supported by the strategy. */
|
|
134
222
|
getBatchTransactions?: (request: PayStrategyGetBatchRequest<OriginalQuote>) => Promise<BatchTransaction[]>;
|
|
223
|
+
/**
|
|
224
|
+
* Retrieve refresh interval for the strategy, if applicable.
|
|
225
|
+
* Defaults to 30 seconds.
|
|
226
|
+
*/
|
|
135
227
|
getRefreshInterval?: (request: PayStrategyGetRefreshIntervalRequest) => Promise<number | undefined>;
|
|
228
|
+
/** Execute or submit the quotes to obtain required tokens. */
|
|
136
229
|
execute: (request: PayStrategyExecuteRequest<OriginalQuote>) => Promise<{
|
|
137
230
|
transactionHash?: Hex;
|
|
138
231
|
}>;
|
|
139
232
|
};
|
|
233
|
+
/** Single fiat value in alternate currencies. */
|
|
140
234
|
export type FiatValue = {
|
|
235
|
+
/** Value in the selected fiat currency. */
|
|
141
236
|
fiat: string;
|
|
237
|
+
/** Value in USD. */
|
|
142
238
|
usd: string;
|
|
143
239
|
};
|
|
240
|
+
/** Calculated totals for a target transaction and all quotes. */
|
|
144
241
|
export type TransactionPayTotals = {
|
|
242
|
+
/** Total estimated duration for the target transaction and all quotes. */
|
|
145
243
|
estimatedDuration: number;
|
|
244
|
+
/** Total fees for the target transaction and all quotes. */
|
|
146
245
|
fees: TransactionPayFees;
|
|
246
|
+
/** Overall total cost for the target transaction and all quotes. */
|
|
147
247
|
total: FiatValue;
|
|
148
248
|
};
|
|
149
249
|
//# sourceMappingURL=types.d.mts.map
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,qCAAqC,EACtC,qCAAqC;AACtC,OAAO,KAAK,EAAE,0BAA0B,EAAE,qCAAqC;AAC/E,OAAO,KAAK,EAAE,kCAAkC,EAAE,qCAAqC;AACvF,OAAO,KAAK,EAAE,8BAA8B,EAAE,qCAAqC;AACnF,OAAO,KAAK,EAAE,sCAAsC,EAAE,qCAAqC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,kCAAkC;AACrE,OAAO,KAAK,EAAE,0BAA0B,EAAE,kCAAkC;AAC5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,kCAAkC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,oCAAoC;AAC3E,OAAO,KAAK,EAAE,sCAAsC,EAAE,2CAA2C;AACjG,OAAO,KAAK,EAAE,6BAA6B,EAAE,2CAA2C;AACxF,OAAO,KAAK,EAAE,uBAAuB,EAAE,qCAAqC;AAC5E,OAAO,KAAK,EAAE,mDAAmD,EAAE,qCAAqC;AACxG,OAAO,KAAK,EAAE,2CAA2C,EAAE,qCAAqC;AAChG,OAAO,KAAK,EAAE,yCAAyC,EAAE,iDAAiD;AAC1G,OAAO,KAAK,EAAE,oDAAoD,EAAE,yCAAyC;AAC7G,OAAO,KAAK,EAAE,mCAAmC,EAAE,yCAAyC;AAC5F,OAAO,KAAK,EAAE,qCAAqC,EAAE,yCAAyC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AACxE,OAAO,KAAK,EAAE,yCAAyC,EAAE,yCAAyC;AAClG,OAAO,KAAK,EAAE,4CAA4C,EAAE,yCAAyC;AACrG,OAAO,KAAK,EAAE,gBAAgB,EAAE,yCAAyC;AACzE,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,wBAAwB;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,wBAAoB;AAE3E,MAAM,MAAM,cAAc,GACtB,sCAAsC,GACtC,uBAAuB,GACvB,6BAA6B,GAC7B,6BAA6B,GAC7B,uBAAuB,GACvB,mDAAmD,GACnD,2CAA2C,GAC3C,yCAAyC,GACzC,qCAAqC,GACrC,0BAA0B,GAC1B,kCAAkC,GAClC,8BAA8B,GAC9B,yCAAyC,GACzC,mCAAmC,GACnC,4CAA4C,CAAC;AAEjD,MAAM,MAAM,aAAa,GACrB,sCAAsC,GACtC,qCAAqC,GACrC,oDAAoD,CAAC;AAEzD,MAAM,MAAM,sCAAsC,GAAG,wBAAwB,CAC3E,OAAO,eAAe,EACtB,6BAA6B,CAC9B,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG;IACtD,IAAI,EAAE,GAAG,OAAO,eAAe,cAAc,CAAC;IAC9C,OAAO,EAAE,CAAC,WAAW,EAAE,eAAe,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,wCAAwC,GAClD,0BAA0B,CACxB,OAAO,eAAe,EACtB,6BAA6B,CAC9B,CAAC;AAEJ,MAAM,MAAM,+BAA+B,GACvC,sCAAsC,GACtC,yCAAyC,CAAC;AAE9C,MAAM,MAAM,8BAA8B,GACxC,wCAAwC,CAAC;AAE3C,MAAM,MAAM,iCAAiC,GAAG,mBAAmB,CACjE,OAAO,eAAe,EACtB,+BAA+B,GAAG,cAAc,EAChD,8BAA8B,GAAG,aAAa,EAC9C,cAAc,CAAC,MAAM,CAAC,EACtB,aAAa,CAAC,MAAM,CAAC,CACtB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,CAAC,EAAE,CACZ,WAAW,EAAE,eAAe,KACzB,OAAO,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n CurrencyRateControllerActions,\n TokenBalancesControllerGetStateAction,\n} from '@metamask/assets-controllers';\nimport type { TokenListControllerActions } from '@metamask/assets-controllers';\nimport type { TokenRatesControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { TokensControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { AccountTrackerControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { RestrictedMessenger } from '@metamask/base-controller';\nimport type { ControllerStateChangeEvent } from '@metamask/base-controller';\nimport type { ControllerGetStateAction } from '@metamask/base-controller';\nimport type { BridgeControllerActions } from '@metamask/bridge-controller';\nimport type { BridgeStatusControllerStateChangeEvent } from '@metamask/bridge-status-controller';\nimport type { BridgeStatusControllerActions } from '@metamask/bridge-status-controller';\nimport type { GasFeeControllerActions } from '@metamask/gas-fee-controller';\nimport type { NetworkControllerFindNetworkClientIdByChainIdAction } from '@metamask/network-controller';\nimport type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller';\nimport type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';\nimport type { TransactionControllerUnapprovedTransactionAddedEvent } from '@metamask/transaction-controller';\nimport type { TransactionControllerGetStateAction } from '@metamask/transaction-controller';\nimport type { TransactionControllerStateChangeEvent } from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { TransactionControllerAddTransactionAction } from '@metamask/transaction-controller';\nimport type { TransactionControllerUpdateTransactionAction } from '@metamask/transaction-controller';\nimport type { BatchTransaction } from '@metamask/transaction-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport type { Draft } from 'immer';\n\nimport type { CONTROLLER_NAME, TransactionPayStrategy } from './constants';\n\nexport type AllowedActions =\n | AccountTrackerControllerGetStateAction\n | BridgeControllerActions\n | BridgeStatusControllerActions\n | CurrencyRateControllerActions\n | GasFeeControllerActions\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetNetworkClientByIdAction\n | RemoteFeatureFlagControllerGetStateAction\n | TokenBalancesControllerGetStateAction\n | TokenListControllerActions\n | TokenRatesControllerGetStateAction\n | TokensControllerGetStateAction\n | TransactionControllerAddTransactionAction\n | TransactionControllerGetStateAction\n | TransactionControllerUpdateTransactionAction;\n\nexport type AllowedEvents =\n | BridgeStatusControllerStateChangeEvent\n | TransactionControllerStateChangeEvent\n | TransactionControllerUnapprovedTransactionAddedEvent;\n\nexport type TransactionPayControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState\n>;\n\nexport type TransactionPayControllerGetStrategyAction = {\n type: `${typeof CONTROLLER_NAME}:getStrategy`;\n handler: (transaction: TransactionMeta) => Promise<TransactionPayStrategy>;\n};\n\nexport type TransactionPayControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState\n >;\n\nexport type TransactionPayControllerActions =\n | TransactionPayControllerGetStateAction\n | TransactionPayControllerGetStrategyAction;\n\nexport type TransactionPayControllerEvents =\n TransactionPayControllerStateChangeEvent;\n\nexport type TransactionPayControllerMessenger = RestrictedMessenger<\n typeof CONTROLLER_NAME,\n TransactionPayControllerActions | AllowedActions,\n TransactionPayControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\nexport type TransactionPayControllerOptions = {\n getStrategy?: (\n transaction: TransactionMeta,\n ) => Promise<TransactionPayStrategy>;\n messenger: TransactionPayControllerMessenger;\n state?: Partial<TransactionPayControllerState>;\n};\n\nexport type TransactionPayControllerState = {\n transactionData: Record<string, TransactionData>;\n};\n\nexport type TransactionData = {\n isLoading: boolean;\n paymentToken?: TransactionPaymentToken;\n quotes?: TransactionPayQuote<Json>[];\n quotesLastUpdated?: number;\n sourceAmounts?: TransactionPaySourceAmount[];\n tokens: TransactionPayRequiredToken[];\n totals?: TransactionPayTotals;\n};\n\nexport type TransactionPayRequiredToken = {\n address: Hex;\n allowUnderMinimum: boolean;\n amountFiat: string;\n amountHuman: string;\n amountRaw: string;\n amountUsd: string;\n balanceFiat: string;\n balanceHuman: string;\n balanceRaw: string;\n balanceUsd: string;\n chainId: Hex;\n decimals: number;\n skipIfBalance: boolean;\n symbol: string;\n};\n\nexport type TransactionPaySourceAmount = {\n sourceAmountHuman: string;\n sourceAmountRaw: string;\n targetTokenAddress: Hex;\n};\n\nexport type TransactionPaymentToken = {\n address: Hex;\n balanceFiat: string;\n balanceHuman: string;\n balanceRaw: string;\n balanceUsd: string;\n chainId: Hex;\n decimals: number;\n symbol: string;\n};\n\nexport type UpdateTransactionDataCallback = (\n transactionId: string,\n fn: (data: Draft<TransactionData>) => void,\n) => void;\n\nexport type FiatRates = {\n fiatRate: string;\n usdRate: string;\n};\n\nexport type QuoteRequest = {\n from: Hex;\n sourceBalanceRaw: string;\n sourceChainId: Hex;\n sourceTokenAddress: Hex;\n sourceTokenAmount: string;\n targetAmountMinimum: string;\n targetChainId: Hex;\n targetTokenAddress: Hex;\n};\n\nexport type TransactionPayFees = {\n provider: FiatValue;\n sourceNetwork: FiatValue;\n targetNetwork: FiatValue;\n};\n\nexport type TransactionPayQuote<OriginalQuote> = {\n dust: FiatValue;\n estimatedDuration: number;\n fees: TransactionPayFees;\n original: OriginalQuote;\n request: QuoteRequest;\n strategy: TransactionPayStrategy;\n};\n\nexport type PayStrategyGetQuotesRequest = {\n messenger: TransactionPayControllerMessenger;\n requests: QuoteRequest[];\n transaction: TransactionMeta;\n};\n\nexport type PayStrategyExecuteRequest<OriginalRequest> = {\n isSmartTransaction: (chainId: Hex) => boolean;\n messenger: TransactionPayControllerMessenger;\n quotes: TransactionPayQuote<OriginalRequest>[];\n transaction: TransactionMeta;\n};\n\nexport type PayStrategyGetBatchRequest<OriginalQuote> = {\n messenger: TransactionPayControllerMessenger;\n quotes: TransactionPayQuote<OriginalQuote>[];\n};\n\nexport type PayStrategyGetRefreshIntervalRequest = {\n chainId: Hex;\n messenger: TransactionPayControllerMessenger;\n};\n\nexport type PayStrategy<OriginalQuote> = {\n getQuotes: (\n request: PayStrategyGetQuotesRequest,\n ) => Promise<TransactionPayQuote<OriginalQuote>[]>;\n\n getBatchTransactions?: (\n request: PayStrategyGetBatchRequest<OriginalQuote>,\n ) => Promise<BatchTransaction[]>;\n\n getRefreshInterval?: (\n request: PayStrategyGetRefreshIntervalRequest,\n ) => Promise<number | undefined>;\n\n execute: (request: PayStrategyExecuteRequest<OriginalQuote>) => Promise<{\n transactionHash?: Hex;\n }>;\n};\n\nexport type FiatValue = {\n fiat: string;\n usd: string;\n};\n\nexport type TransactionPayTotals = {\n estimatedDuration: number;\n fees: TransactionPayFees;\n total: FiatValue;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n CurrencyRateControllerActions,\n TokenBalancesControllerGetStateAction,\n} from '@metamask/assets-controllers';\nimport type { TokenListControllerActions } from '@metamask/assets-controllers';\nimport type { TokenRatesControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { TokensControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { AccountTrackerControllerGetStateAction } from '@metamask/assets-controllers';\nimport type { RestrictedMessenger } from '@metamask/base-controller';\nimport type { ControllerStateChangeEvent } from '@metamask/base-controller';\nimport type { ControllerGetStateAction } from '@metamask/base-controller';\nimport type { BridgeControllerActions } from '@metamask/bridge-controller';\nimport type { BridgeStatusControllerStateChangeEvent } from '@metamask/bridge-status-controller';\nimport type { BridgeStatusControllerActions } from '@metamask/bridge-status-controller';\nimport type { GasFeeControllerActions } from '@metamask/gas-fee-controller';\nimport type { NetworkControllerFindNetworkClientIdByChainIdAction } from '@metamask/network-controller';\nimport type { NetworkControllerGetNetworkClientByIdAction } from '@metamask/network-controller';\nimport type { RemoteFeatureFlagControllerGetStateAction } from '@metamask/remote-feature-flag-controller';\nimport type { TransactionControllerUnapprovedTransactionAddedEvent } from '@metamask/transaction-controller';\nimport type { TransactionControllerGetStateAction } from '@metamask/transaction-controller';\nimport type { TransactionControllerStateChangeEvent } from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport type { TransactionControllerAddTransactionAction } from '@metamask/transaction-controller';\nimport type { TransactionControllerUpdateTransactionAction } from '@metamask/transaction-controller';\nimport type { BatchTransaction } from '@metamask/transaction-controller';\nimport type { Hex, Json } from '@metamask/utils';\nimport type { Draft } from 'immer';\n\nimport type { CONTROLLER_NAME, TransactionPayStrategy } from './constants';\n\nexport type AllowedActions =\n | AccountTrackerControllerGetStateAction\n | BridgeControllerActions\n | BridgeStatusControllerActions\n | CurrencyRateControllerActions\n | GasFeeControllerActions\n | NetworkControllerFindNetworkClientIdByChainIdAction\n | NetworkControllerGetNetworkClientByIdAction\n | RemoteFeatureFlagControllerGetStateAction\n | TokenBalancesControllerGetStateAction\n | TokenListControllerActions\n | TokenRatesControllerGetStateAction\n | TokensControllerGetStateAction\n | TransactionControllerAddTransactionAction\n | TransactionControllerGetStateAction\n | TransactionControllerUpdateTransactionAction;\n\nexport type AllowedEvents =\n | BridgeStatusControllerStateChangeEvent\n | TransactionControllerStateChangeEvent\n | TransactionControllerUnapprovedTransactionAddedEvent;\n\nexport type TransactionPayControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState\n>;\n\nexport type TransactionPayControllerGetStrategyAction = {\n type: `${typeof CONTROLLER_NAME}:getStrategy`;\n handler: (transaction: TransactionMeta) => Promise<TransactionPayStrategy>;\n};\n\nexport type TransactionPayControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n TransactionPayControllerState\n >;\n\nexport type TransactionPayControllerActions =\n | TransactionPayControllerGetStateAction\n | TransactionPayControllerGetStrategyAction;\n\nexport type TransactionPayControllerEvents =\n TransactionPayControllerStateChangeEvent;\n\nexport type TransactionPayControllerMessenger = RestrictedMessenger<\n typeof CONTROLLER_NAME,\n TransactionPayControllerActions | AllowedActions,\n TransactionPayControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n>;\n\n/** Options for the TransactionPayController. */\nexport type TransactionPayControllerOptions = {\n /** Callback to select the PayStrategy for a transaction. */\n getStrategy?: (\n transaction: TransactionMeta,\n ) => Promise<TransactionPayStrategy>;\n\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n\n /** Initial state of the controller. */\n state?: Partial<TransactionPayControllerState>;\n};\n\n/** State of the TransactionPayController. */\nexport type TransactionPayControllerState = {\n /** State relating to each transaction, keyed by transaction ID. */\n transactionData: Record<string, TransactionData>;\n};\n\n/** State relating to a single transaction. */\nexport type TransactionData = {\n /** Whether quotes are currently being retrieved. */\n isLoading: boolean;\n\n /** Source token selected for the transaction. */\n paymentToken?: TransactionPaymentToken;\n\n /** Quotes retrieved for the transaction. */\n quotes?: TransactionPayQuote<Json>[];\n\n /** Timestamp of when quotes were last updated. */\n quotesLastUpdated?: number;\n\n /** Amounts of payment token required for each required token. */\n sourceAmounts?: TransactionPaySourceAmount[];\n\n /** Tokens required by the transaction. */\n tokens: TransactionPayRequiredToken[];\n\n /** Calculated totals for the transaction. */\n totals?: TransactionPayTotals;\n};\n\n/** A token required by a transaction. */\nexport type TransactionPayRequiredToken = {\n /** Address of the required token. */\n address: Hex;\n\n /** Whether to allow quotes that return less than the minimum amount requested. */\n allowUnderMinimum: boolean;\n\n /** Amount required in the selected currency. */\n amountFiat: string;\n\n /** Amount required in a human-readable format factoring token decimals. */\n amountHuman: string;\n\n /** Amount required in atomic format without factoring token decimals. */\n amountRaw: string;\n\n /** Amount required in USD. */\n amountUsd: string;\n\n /** Balance of the required token in the selected currency. */\n balanceFiat: string;\n\n /** Balance of the required token in a human-readable format factoring token decimals. */\n balanceHuman: string;\n\n /** Balance of the required token in atomic format without factoring token decimals. */\n balanceRaw: string;\n\n /** Balance of the required token in USD. */\n balanceUsd: string;\n\n /** Chain ID of the required token. */\n chainId: Hex;\n\n /** Decimals of the required token. */\n decimals: number;\n\n /** Whether to skip transfer of this token if balance is already sufficient. */\n skipIfBalance: boolean;\n\n /** Symbol of the required token. */\n symbol: string;\n};\n\n/** Amount of payment token required by a required token. */\nexport type TransactionPaySourceAmount = {\n /** Amount of payment token required in the selected currency. */\n sourceAmountHuman: string;\n\n /** Amount of payment token required in atomic format without factoring token decimals. */\n sourceAmountRaw: string;\n\n /** Address of the required token. */\n targetTokenAddress: Hex;\n};\n\n/** Source token used to pay for required tokens. */\nexport type TransactionPaymentToken = {\n /** Address of the payment token. */\n address: Hex;\n\n /** Balance of the payment token in the selected currency. */\n balanceFiat: string;\n\n /** Balance of the payment token in a human-readable format factoring token decimals. */\n balanceHuman: string;\n\n /** Balance of the payment token in atomic format without factoring token decimals. */\n balanceRaw: string;\n\n /** Balance of the payment token in USD. */\n balanceUsd: string;\n\n /** Chain ID of the payment token. */\n chainId: Hex;\n\n /** Decimals of the payment token. */\n decimals: number;\n\n /** Symbol of the payment token. */\n symbol: string;\n};\n\n/** Callback to update state for a single transaction. */\nexport type UpdateTransactionDataCallback = (\n /** ID of the transaction to update. */\n transactionId: string,\n /** Function that receives a draft of the transaction data to update. */\n fn: (data: Draft<TransactionData>) => void,\n) => void;\n\n/** Conversion rates from the native currency to other currencies. */\nexport type FiatRates = {\n /** Conversion rate for the native currency to the selected fiat currency. */\n fiatRate: string;\n\n /** Conversion rate for the native currency to USD. */\n usdRate: string;\n};\n\n/** Request for a quote to retrieve a required token. */\nexport type QuoteRequest = {\n /** Address of the user's account. */\n from: Hex;\n\n /** Balance of the source token in atomic format without factoring token decimals. */\n sourceBalanceRaw: string;\n\n /** Chain ID of the source token. */\n sourceChainId: Hex;\n\n /** Address of the source token. */\n sourceTokenAddress: Hex;\n\n /** Amount of the required token in atomic format without factoring token decimals. */\n sourceTokenAmount: string;\n\n /** Minimum amount required of the target token in atomic format without factoring token decimals. */\n targetAmountMinimum: string;\n\n /** Chain ID of the target token. */\n targetChainId: Hex;\n\n /** Address of the target token. */\n targetTokenAddress: Hex;\n};\n\n/** Fees associated with a transaction pay quote. */\nexport type TransactionPayFees = {\n /** Fee charged by the quote provider. */\n provider: FiatValue;\n\n /** Network fee for transactions on the source network. */\n sourceNetwork: FiatValue;\n\n /** Network fee for transactions on the target network. */\n targetNetwork: FiatValue;\n};\n\n/** Quote returned to retrieve a required token using the payment token. */\nexport type TransactionPayQuote<OriginalQuote> = {\n /** Additional amount provided by the quote beyond the minimum requested. */\n dust: FiatValue;\n\n /** Duration estimated for the transaction to complete in seconds. */\n estimatedDuration: number;\n\n /** Fees associated with the transaction pay quote. */\n fees: TransactionPayFees;\n\n /** Raw quote data returned by the provider. */\n original: OriginalQuote;\n\n /** Associated quote request. */\n request: QuoteRequest;\n\n /** Name of the strategy used to retrieve the quote. */\n strategy: TransactionPayStrategy;\n};\n\n/** Request to get quotes for a transaction. */\nexport type PayStrategyGetQuotesRequest = {\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n\n /** Quote requests for required tokens. */\n requests: QuoteRequest[];\n\n /** Metadata of the original target transaction. */\n transaction: TransactionMeta;\n};\n\n/** Request to submit quotes for a transaction. */\nexport type PayStrategyExecuteRequest<OriginalRequest> = {\n /** Callback to determine if the transaction is a smart transaction. */\n isSmartTransaction: (chainId: Hex) => boolean;\n\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n\n /** Quotes to be submitted. */\n quotes: TransactionPayQuote<OriginalRequest>[];\n\n /** Metadata of the original target transaction. */\n transaction: TransactionMeta;\n};\n\n/** Request to get batch transactions for quotes. */\nexport type PayStrategyGetBatchRequest<OriginalQuote> = {\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n\n /** Quotes for required tokens. */\n quotes: TransactionPayQuote<OriginalQuote>[];\n};\n\n/** Request to get refresh interval for a specific strategy. */\nexport type PayStrategyGetRefreshIntervalRequest = {\n /** Chain ID of the source or payment token. */\n chainId: Hex;\n\n /** Controller messenger. */\n messenger: TransactionPayControllerMessenger;\n};\n\n/** Strategy used to obtain required tokens for a transaction. */\nexport type PayStrategy<OriginalQuote> = {\n /** Retrieve quotes for required tokens. */\n getQuotes: (\n request: PayStrategyGetQuotesRequest,\n ) => Promise<TransactionPayQuote<OriginalQuote>[]>;\n\n /** Retrieve batch transactions for quotes, if supported by the strategy. */\n getBatchTransactions?: (\n request: PayStrategyGetBatchRequest<OriginalQuote>,\n ) => Promise<BatchTransaction[]>;\n\n /**\n * Retrieve refresh interval for the strategy, if applicable.\n * Defaults to 30 seconds.\n */\n getRefreshInterval?: (\n request: PayStrategyGetRefreshIntervalRequest,\n ) => Promise<number | undefined>;\n\n /** Execute or submit the quotes to obtain required tokens. */\n execute: (request: PayStrategyExecuteRequest<OriginalQuote>) => Promise<{\n transactionHash?: Hex;\n }>;\n};\n\n/** Single fiat value in alternate currencies. */\nexport type FiatValue = {\n /** Value in the selected fiat currency. */\n fiat: string;\n\n /** Value in USD. */\n usd: string;\n};\n\n/** Calculated totals for a target transaction and all quotes. */\nexport type TransactionPayTotals = {\n /** Total estimated duration for the target transaction and all quotes. */\n estimatedDuration: number;\n\n /** Total fees for the target transaction and all quotes. */\n fees: TransactionPayFees;\n\n /** Overall total cost for the target transaction and all quotes. */\n total: FiatValue;\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/transaction-pay-controller",
|
|
3
|
-
"version": "0.0.0-preview-
|
|
3
|
+
"version": "0.0.0-preview-fa44f49b",
|
|
4
4
|
"description": "Manages alternate payment strategies to provide required funds for transactions in MetaMask",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|