UNPKG

@lifi/widget

Version:

LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.

78 lines (64 loc) 2.24 kB
import type { Order } from '@lifi/sdk' import type { PropsWithChildren } from 'react' import type { StoreApi } from 'zustand' import type { UseBoundStoreWithEqualityFn } from 'zustand/traditional' import type { LanguageResource } from '../../providers/I18nProvider/types.js' import type { SplitSubvariant, WidgetConfig } from '../../types/widget.js' export type ValueSetter<S> = <K extends keyof S>( key: K, value: S[Extract<K, string>] ) => void type ValueGetter<S> = <K extends keyof S>(key: K) => S[K] export const SettingsToolTypes = ['Bridges', 'Exchanges'] as const export type SettingsToolType = (typeof SettingsToolTypes)[number] export interface SettingsProps { gasPrice?: string language?: string languageCache?: LanguageResource lastDefaultLanguage?: string routePriority?: Order enabledAutoRefuel: boolean slippage?: string disabledBridges: string[] enabledBridges: string[] _enabledBridges: Record<string, boolean> disabledExchanges: string[] enabledExchanges: string[] _enabledExchanges: Record<string, boolean> } export interface SettingsActions { setValue: ValueSetter<SettingsProps> setValues: (values: Partial<SettingsProps>) => void getValue: ValueGetter<SettingsProps> getSettings: () => SettingsProps 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 type SettingsState = SettingsProps & SettingsActions 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<SplitSubvariantState> > export interface SplitSubvariantProps { state?: SplitSubvariant } export type SplitSubvariantProviderProps = PropsWithChildren<SplitSubvariantProps> export interface SettingsStoreProviderProps { config: WidgetConfig }