import type { CurrencyRateControllerActions, TokenBalancesControllerGetStateAction } from "@metamask/assets-controllers"; import type { TokenListControllerActions } from "@metamask/assets-controllers"; import type { TokenRatesControllerGetStateAction } from "@metamask/assets-controllers"; import type { TokensControllerGetStateAction } from "@metamask/assets-controllers"; import type { AccountTrackerControllerGetStateAction } from "@metamask/assets-controllers"; import type { RestrictedMessenger } from "@metamask/base-controller"; import type { ControllerStateChangeEvent } from "@metamask/base-controller"; import type { ControllerGetStateAction } from "@metamask/base-controller"; import type { BridgeControllerActions } from "@metamask/bridge-controller"; import type { BridgeStatusControllerStateChangeEvent } from "@metamask/bridge-status-controller"; import type { BridgeStatusControllerActions } from "@metamask/bridge-status-controller"; import type { GasFeeControllerActions } from "@metamask/gas-fee-controller"; import type { NetworkControllerFindNetworkClientIdByChainIdAction } from "@metamask/network-controller"; import type { NetworkControllerGetNetworkClientByIdAction } from "@metamask/network-controller"; import type { RemoteFeatureFlagControllerGetStateAction } from "@metamask/remote-feature-flag-controller"; import type { TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller"; import type { TransactionControllerGetStateAction } from "@metamask/transaction-controller"; import type { TransactionControllerStateChangeEvent } from "@metamask/transaction-controller"; import type { TransactionMeta } from "@metamask/transaction-controller"; import type { TransactionControllerAddTransactionAction } from "@metamask/transaction-controller"; import type { TransactionControllerUpdateTransactionAction } from "@metamask/transaction-controller"; import type { BatchTransaction } from "@metamask/transaction-controller"; import type { Hex, Json } from "@metamask/utils"; import type { Draft } from "immer"; import type { CONTROLLER_NAME, TransactionPayStrategy } from "./constants.cjs"; export type AllowedActions = AccountTrackerControllerGetStateAction | BridgeControllerActions | BridgeStatusControllerActions | CurrencyRateControllerActions | GasFeeControllerActions | NetworkControllerFindNetworkClientIdByChainIdAction | NetworkControllerGetNetworkClientByIdAction | RemoteFeatureFlagControllerGetStateAction | TokenBalancesControllerGetStateAction | TokenListControllerActions | TokenRatesControllerGetStateAction | TokensControllerGetStateAction | TransactionControllerAddTransactionAction | TransactionControllerGetStateAction | TransactionControllerUpdateTransactionAction; export type AllowedEvents = BridgeStatusControllerStateChangeEvent | TransactionControllerStateChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent; export type TransactionPayControllerGetStateAction = ControllerGetStateAction; export type TransactionPayControllerGetStrategyAction = { type: `${typeof CONTROLLER_NAME}:getStrategy`; handler: (transaction: TransactionMeta) => Promise; }; export type TransactionPayControllerStateChangeEvent = ControllerStateChangeEvent; export type TransactionPayControllerActions = TransactionPayControllerGetStateAction | TransactionPayControllerGetStrategyAction; export type TransactionPayControllerEvents = TransactionPayControllerStateChangeEvent; export type TransactionPayControllerMessenger = RestrictedMessenger; export type TransactionPayControllerOptions = { getStrategy?: (transaction: TransactionMeta) => Promise; messenger: TransactionPayControllerMessenger; state?: Partial; }; export type TransactionPayControllerState = { transactionData: Record; }; export type TransactionData = { isLoading: boolean; paymentToken?: TransactionPaymentToken; quotes?: TransactionPayQuote[]; quotesLastUpdated?: number; sourceAmounts?: TransactionPaySourceAmount[]; tokens: TransactionPayRequiredToken[]; totals?: TransactionPayTotals; }; export type TransactionPayRequiredToken = { address: Hex; allowUnderMinimum: boolean; amountFiat: string; amountHuman: string; amountRaw: string; amountUsd: string; balanceFiat: string; balanceHuman: string; balanceRaw: string; balanceUsd: string; chainId: Hex; decimals: number; skipIfBalance: boolean; symbol: string; }; export type TransactionPaySourceAmount = { sourceAmountHuman: string; sourceAmountRaw: string; targetTokenAddress: Hex; }; export type TransactionPaymentToken = { address: Hex; balanceFiat: string; balanceHuman: string; balanceRaw: string; balanceUsd: string; chainId: Hex; decimals: number; symbol: string; }; export type UpdateTransactionDataCallback = (transactionId: string, fn: (data: Draft) => void) => void; export type FiatRates = { fiatRate: string; usdRate: string; }; export type QuoteRequest = { from: Hex; sourceBalanceRaw: string; sourceChainId: Hex; sourceTokenAddress: Hex; sourceTokenAmount: string; targetAmountMinimum: string; targetChainId: Hex; targetTokenAddress: Hex; }; export type TransactionPayFees = { provider: FiatValue; sourceNetwork: FiatValue; targetNetwork: FiatValue; }; export type TransactionPayQuote = { dust: FiatValue; estimatedDuration: number; fees: TransactionPayFees; original: OriginalQuote; request: QuoteRequest; strategy: TransactionPayStrategy; }; export type PayStrategyGetQuotesRequest = { messenger: TransactionPayControllerMessenger; requests: QuoteRequest[]; transaction: TransactionMeta; }; export type PayStrategyExecuteRequest = { isSmartTransaction: (chainId: Hex) => boolean; messenger: TransactionPayControllerMessenger; quotes: TransactionPayQuote[]; transaction: TransactionMeta; }; export type PayStrategyGetBatchRequest = { messenger: TransactionPayControllerMessenger; quotes: TransactionPayQuote[]; }; export type PayStrategyGetRefreshIntervalRequest = { chainId: Hex; messenger: TransactionPayControllerMessenger; }; export type PayStrategy = { getQuotes: (request: PayStrategyGetQuotesRequest) => Promise[]>; getBatchTransactions?: (request: PayStrategyGetBatchRequest) => Promise; getRefreshInterval?: (request: PayStrategyGetRefreshIntervalRequest) => Promise; execute: (request: PayStrategyExecuteRequest) => Promise<{ transactionHash?: Hex; }>; }; export type FiatValue = { fiat: string; usd: string; }; export type TransactionPayTotals = { estimatedDuration: number; fees: TransactionPayFees; total: FiatValue; }; //# sourceMappingURL=types.d.cts.map