import type { Signer } from '@ethersproject/abstract-signer'; import type { BaseToken, ChainKey, ConfigUpdate, Order, RouteOptions, StaticToken, Token } from '@lifi/sdk'; import type { Components, PaletteMode, PaletteOptions, Shape, Theme } from '@mui/material'; import type { TypographyOptions } from '@mui/material/styles/createTypography'; import type { CSSProperties, ReactNode, RefObject } from 'react'; import type { LanguageKey, LanguageResources } from '../providers'; export type WidgetVariant = 'default' | 'expandable' | 'drawer'; export type WidgetSubvariant = 'default' | 'split' | 'nft' | 'refuel'; export declare enum DisabledUI { FromAmount = "fromAmount", FromToken = "fromToken", ToAddress = "toAddress", ToToken = "toToken" } export type DisabledUIType = `${DisabledUI}`; export declare enum HiddenUI { Appearance = "appearance", DrawerButton = "drawerButton", History = "history", Language = "language", PoweredBy = "poweredBy", ToAddress = "toAddress", ToToken = "toToken", WalletMenu = "walletMenu" } export type HiddenUIType = `${HiddenUI}`; export declare enum RequiredUI { ToAddress = "toAddress" } export type RequiredUIType = `${RequiredUI}`; export type Appearance = PaletteMode | 'auto'; export type ThemeConfig = { palette?: Pick; shape?: Shape; typography?: TypographyOptions; components?: Pick>, 'MuiAvatar'>; }; export interface WidgetWalletManagement { connect(): Promise; disconnect(): Promise; switchChain?(chainId: number): Promise; addToken?(token: StaticToken, chainId: number): Promise; addChain?(chainId: number): Promise; signer?: Signer; } export interface SDKConfig extends Omit { defaultRouteOptions?: Omit; } export interface WidgetContractTool { logoURI: string; name: string; } export interface WidgetContract { address?: string; callData?: string; gasLimit?: string; approvalAddress?: string; outputToken?: string; fallbackAddress?: string; } export interface WidgetConfig { fromChain?: `${ChainKey}` | number; toChain?: `${ChainKey}` | number; fromToken?: string; toToken?: string; toAddress?: string; fromAmount?: number | string; toAmount?: number | string; contract?: WidgetContract; contractComponent?: ReactNode; contractSecondaryComponent?: ReactNode; contractCompactComponent?: ReactNode; contractTool?: WidgetContractTool; fee?: number; integrator: string; referrer?: string; routePriority?: Order; slippage?: number; insurance?: boolean; variant?: WidgetVariant; subvariant?: WidgetSubvariant; appearance?: Appearance; theme?: ThemeConfig; containerStyle?: CSSProperties; disabledUI?: DisabledUIType[]; hiddenUI?: HiddenUIType[]; requiredUI?: RequiredUIType[]; useRecommendedRoute?: boolean; walletManagement?: WidgetWalletManagement; sdkConfig?: SDKConfig; buildUrl?: boolean; keyPrefix?: string; bridges?: { allow?: string[]; deny?: string[]; }; exchanges?: { allow?: string[]; deny?: string[]; }; chains?: { allow?: number[]; deny?: number[]; }; tokens?: { featured?: StaticToken[]; include?: Token[]; allow?: BaseToken[]; deny?: BaseToken[]; }; languages?: { default?: LanguageKey; allow?: LanguageKey[]; deny?: LanguageKey[]; }; languageResources?: LanguageResources; disableLanguageDetector?: boolean; } export type WidgetDrawerProps = { elementRef?: RefObject; open?: boolean; }; export interface WidgetConfigProps { config: WidgetConfig; } export interface WidgetConfigPartialProps { config?: Partial; } export type WidgetProps = WidgetDrawerProps & WidgetConfig & WidgetConfigPartialProps;