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.

74 lines (60 loc) 2.07 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 { SplitSubvariant } from '../../types/widget.js' export type ValueSetter<S> = <K extends keyof S>( key: K, value: S[Extract<K, string>] ) => void export type ValueGetter<S> = <K extends keyof S>(key: K) => S[K] export type ValuesSetter<S> = <K extends keyof S>( values: Record<K, S[Extract<K, string>]> ) => void export const SettingsToolTypes = ['Bridges', 'Exchanges'] as const export type SettingsToolType = (typeof SettingsToolTypes)[number] export interface SettingsProps { gasPrice?: string language?: 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> 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 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<SplitSubvariantState> > export interface SplitSubvariantProps { state?: SplitSubvariant } export type SplitSubvariantProviderProps = PropsWithChildren<SplitSubvariantProps>