import type { Order } from '@lifi/sdk'; import type { PropsWithChildren } from 'react'; import type { StoreApi } from 'zustand'; import type { UseBoundStoreWithEqualityFn } from 'zustand/traditional'; import type { Appearance, WidgetConfig } from '../../types'; export type ValueSetter = ( key: K, value: S[Extract], ) => void; export type ValuesSetter = ( values: Record]>, ) => void; export type SettingsToolType = 'Bridges' | 'Exchanges'; export const SettingsToolTypes: SettingsToolType[] = ['Bridges', 'Exchanges']; export interface SettingsProps { appearance: Appearance; gasPrice?: string; language?: string; routePriority?: Order; enabledAutoRefuel: boolean; showDestinationWallet: boolean; slippage?: string; enabledBridges: string[]; _enabledBridges?: Record; enabledExchanges: string[]; _enabledExchanges?: Record; } export interface SettingsState extends SettingsProps { setValue: ValueSetter; setValues: ValuesSetter; initializeTools( toolType: SettingsToolType, tools: string[], reset?: boolean, ): void; setTools( toolType: SettingsToolType, tools: string[], availableTools: string[], ): void; reset(config: WidgetConfig, bridges: string[], exchanges: string[]): void; } export interface SendToWalletState { showSendToWallet: boolean; showSendToWalletDirty: boolean; } export interface SendToWalletStore extends SendToWalletState { toggleSendToWallet(): void; setSendToWallet(value: boolean): void; } export type SplitSubvariantOptions = 'bridge' | 'swap'; export interface SplitSubvariantState { state?: SplitSubvariantOptions; setState(state: SplitSubvariantOptions): void; } export type SplitSubvariantStore = UseBoundStoreWithEqualityFn< StoreApi >; export interface SplitSubvariantProps { state?: SplitSubvariantOptions; } export type SplitSubvariantProviderProps = PropsWithChildren;