Nexus Provider
avail-widgets/nexus-providerFreeComponent
Shared Nexus SDK provider and types for Avail Widgets
Install it
npx shadcn@latest add https://elements.nexus.availproject.org/r/nexus-provider.jsonSource
1"use client";2import {3 type ChainBalance,4 createNexusClient,5 type EthereumProvider,6 type NexusClient,7 type NexusNetwork,8 type OnAllowanceHookData,9 type OnIntentHookData,10 type OnSwapIntentHookData,11 type SupportedChainsAndTokensResult,12 type TokenBalance,13} from "@avail-project/nexus-core";14import { getCoinbaseRates } from "@avail-project/nexus-core/utils";1516export type UserAsset = TokenBalance & {17 breakdown: (ChainBalance & {18 balance: string;19 balanceInFiat: number;20 chain: ChainBalance["chain"];21 contractAddress: string;22 decimals: number;23 symbol: string;24 })[];25 balanceInFiat?: number;26};2728type SupportedChainsResult = SupportedChainsAndTokensResult;2930type BalanceFetchTiming = {31 runId: number;32 source: string;33 startTimeMs: number;34 walletAddress: string | null;35};3637import {38 createContext,39 type RefObject,40 useCallback,41 useContext,42 useEffect,43 useMemo,44 useRef,45 useState,46} from "react";47import { useAccountEffect } from "wagmi";48import {49 isSwapSupportedBySdkChainList,50 type SdkChainListWithSwapSupport,51} from "../common/utils/constant";52import {53 buildUsdPeggedSymbolSet,54 DEFAULT_USD_PEGGED_TOKEN_SYMBOLS,55 fetchCoinbaseUsdRate,56 fetchCoinGeckoUsdRate,57 getCoinbaseSymbolCandidates,58 normalizeTokenSymbol,59 resolveBaseSymbol,60 toFinitePositiveNumber,61 TOKEN_PRICE_PEGS,62 TokenPricingError,63 USD_PEGGED_FALLBACK_RATE,64} from "../common/utils/token-pricing";6566interface NexusContextType {67 allowance: RefObject<OnAllowanceHookData | null>;68 attachEventHooks: () => void;69 bridgableBalance: UserAsset[] | null;70 bridgableBalanceLoading: boolean;71 deinitializeNexus: () => Promise<void>;72 exchangeRate: Record<string, number> | null;73 fetchBridgableBalance: () => Promise<void>;74 fetchSwapBalance: () => Promise<UserAsset[] | null>;75 getFiatValue: (amount: number, token: string) => number;76 handleInit: (77 provider: EthereumProvider,78 accountAddress?: string,79 ) => Promise<void>;80 initializeNexus: (81 provider: EthereumProvider,82 accountAddress?: string,83 ) => Promise<void>;84 intent: RefObject<OnIntentHookData | null>;85 loading: boolean;86 network?: NexusNetwork;87 nexusSDK: NexusClient | null;88 resolveTokenUsdRate: (tokenSymbol: string) => Promise<number | null>;89 setAllowance: (data: OnAllowanceHookData | null) => void;90 setIntent: (data: OnIntentHookData | null) => void;91 supportedChainsAndTokens: SupportedChainsAndTokensResult | null;92// … truncated
What it pulls in
npm packages
Files it writes
More from avail-widgets
All 27 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | avail-widgets | Components | Free | 2 deps | |
| All Elementsall | avail-widgets | Components | Free | no deps | |
| Animated Spinneranimated-spinner | avail-widgets | Components | Free | no deps | |
| Badgebadge | avail-widgets | Components | Free | 2 deps | |
| Bridge Depositbridge-deposit | avail-widgets | Components | Free | 3 deps · 32 files | |
| Buttonbutton | avail-widgets | Components | Free | 2 deps | |
| Cardcard | avail-widgets | Components | Free | no deps | |
| Checkboxcheckbox | avail-widgets | Components | Free | 2 deps |
