{"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"]}