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, SplitSubvariant } from '../../types/widget.js'; export type ValueSetter = ( key: K, value: S[Extract], ) => void; export type ValuesSetter = ( values: Record]>, ) => void; export const SettingsToolTypes = ['Bridges', 'Exchanges'] as const; export type SettingsToolType = (typeof SettingsToolTypes)[number]; export interface SettingsProps { appearance: Appearance; gasPrice?: string; language?: string; routePriority?: Order; enabledAutoRefuel: boolean; slippage?: string; disabledBridges: string[]; enabledBridges: string[]; _enabledBridges: Record; disabledExchanges: string[]; enabledExchanges: string[]; _enabledExchanges: Record; isShowChart?: boolean; // Shio settings transactionMode?: 'default' | 'fast'; customGasPrice?: string; maxGasCap?: string; mevProtection?: boolean; } export interface SettingsState extends SettingsProps { setValue: ValueSetter; setValues: ValuesSetter; initializeTools( toolType: SettingsToolType, tools: string[], reset?: boolean, ): void; setToolValue(toolType: SettingsToolType, tool: string, value: boolean): void; toggleToolKeys(toolType: SettingsToolType, toolKeys: string[]): void; reset(bridges: string[], exchanges: string[]): void; } export interface SendToWalletState { showSendToWallet: boolean; } export interface SendToWalletStore extends SendToWalletState { setSendToWallet(value: boolean): void; } export interface SplitSubvariantState { state?: SplitSubvariant; setState(state: SplitSubvariant): void; } export type SplitSubvariantStore = UseBoundStoreWithEqualityFn< StoreApi >; export interface SplitSubvariantProps { state?: SplitSubvariant; } export type SplitSubvariantProviderProps = PropsWithChildren;