{
  "version": 3,
  "sources": ["../../src/components/EthAccount/EthAccountBox.tsx", "../../src/contexts/Ethers/Context.ts", "../../src/contexts/Ethers/Infura/Infura.tsx", "../../src/contexts/Ethers/Infura/use.tsx", "../../src/contexts/Ethers/MetaMask.tsx", "../../src/wallets/classes/EIP1193Events.ts", "../../src/wallets/classes/EIP6963Connector.ts", "../../src/wallets/classes/EthWalletConnectorBase.ts", "../../src/wallets/types/events/AccountsChanged.ts", "../../src/wallets/types/events/ChainChanged.ts", "../../src/wallets/utils/findChain.ts", "../../src/wallets/classes/EthWalletApiInstance.ts", "../../src/wallets/classes/EthWalletConnections.ts", "../../src/wallets/eip/6963/EIP6963.ts", "../../src/wallets/components/Discovery/hooks/use.tsx", "../../src/wallets/components/Discovery/MenuItem.tsx", "../../src/wallets/hooks/useChainId.tsx", "../../src/wallets/hooks/useConnect.tsx", "../../src/wallets/hooks/useCurrentAccount.ts", "../../src/wallets/hooks/useCurrentAccountExternal.ts", "../../src/wallets/hooks/useEIP6963Wallet.ts", "../../src/wallets/hooks/useEthWallet.tsx", "../../src/wallets/hooks/useProvider.tsx", "../../src/wallets/hooks/useSigner.tsx", "../../src/wallets/hooks/useEthWalletApiInstance.ts", "../../src/hooks/useNavigateToEthAddress.ts", "../../src/hooks/useTryMethodCalls.ts", "../../src/wallets/hooks/useEthWalletInstance.ts", "../../src/wallets/components/shared/ConstrainedImage.tsx", "../../src/wallets/components/Discovery/MenuItems.tsx", "../../src/wallets/components/Discovery/Paper.tsx", "../../src/wallets/components/Overview/Card.tsx", "../../src/wallets/components/Overview/CardActions.tsx", "../../src/wallets/components/Overview/CardContent.tsx", "../../src/wallets/components/Overview/CardHeader.tsx", "../../src/wallets/components/Overview/lib/SampleTypedData.ts", "../../src/wallets/third-party/Coinbase/CoinbaseConnector.ts", "../../src/wallets/third-party/Coinbase/use.ts", "../../src/wallets/third-party/MetaMask/MetaMaskConnector.ts", "../../src/wallets/third-party/MetaMask/use.tsx", "../../src/wallets/third-party/Phantom/PhantomConnector.ts", "../../src/wallets/third-party/Phantom/use.tsx", "../../src/wallets/third-party/Trust/TrustConnector.ts", "../../src/wallets/third-party/Trust/use.ts", "../../src/contexts/Ethers/MyEtherWallet.tsx", "../../src/contexts/Ethers/Opera.tsx", "../../src/contexts/Ethers/Trust.tsx", "../../src/contexts/Ethers/Loader.tsx", "../../src/contexts/Ethers/use.tsx", "../../src/contexts/NetworkSettings/Context.ts", "../../src/contexts/NetworkSettings/Loader.tsx", "../../src/components/EthAccount/EthAccountButton.tsx", "../../src/components/EthBlock.tsx", "../../src/components/stories/EthWalletSBComponent.tsx", "../../src/components/TokenAmount/TokenAmount.tsx", "../../src/components/TokenAmount/img/xyo.svg", "../../src/token/icons/XL1ColorLogoIcon.tsx", "../../src/token/icons/XYOColorLogoIcon.tsx", "../../src/token/img/XL1_Logo_Icon_Mainnet.svg", "../../src/token/img/XYO_Logo_Icon.svg", "../../src/token/img/index.ts", "../../src/token/StandardTokenRow.tsx", "../../src/token/TokenAvatar.tsx"],
  "sourcesContent": ["/* eslint-disable @typescript-eslint/no-deprecated -- Ethers context remains supported for public compatibility. */\nimport type { SxProps, Theme } from '@mui/material'\nimport {\n  Typography, useMediaQuery, useTheme,\n} from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { Identicon } from '@xylabs/react-identicon'\nimport { assertEx, EthAddressWrapper } from '@xylabs/sdk-js'\nimport React, { use } from 'react'\n\nimport { EthersContext } from '../../contexts/index.ts'\nimport type { EthAccountProps } from './EthAccountProps.tsx'\n\ntype SxArrayItem = Extract<NonNullable<SxProps<Theme>>, readonly unknown[]>[number]\n\nconst isSxArray = (sx: SxProps<Theme> | undefined): sx is readonly SxArrayItem[] => Array.isArray(sx)\n\nconst toSxArray = (sx: SxProps<Theme> | undefined): readonly SxArrayItem[] => (\n  sx === undefined\n    ? []\n    : isSxArray(sx)\n      ? sx\n      : [sx]\n)\n\nexport const EthAccountBox: React.FC<EthAccountProps & FlexBoxProps> = ({\n  address,\n  icon = false,\n  iconSize = 16,\n  iconOnly = false,\n  shortenedLength,\n  addressLength = 'auto',\n  fontFamily = '\"Source Code Pro\",monospace',\n  removeMargin,\n  sx,\n  ...props\n}) => {\n  const { localAddress } = use(EthersContext)\n  const theme = useTheme()\n\n  const large = useMediaQuery(theme.breakpoints.up('md'))\n\n  const isLocalAddress = address ? localAddress?.toString() === address.toString() : false\n\n  const addressToDisplay = assertEx(address ?? EthAddressWrapper.fromString('0x00'), () => 'Bad Eth Address')\n\n  const textToDisplay\n    = address\n      ? addressLength === 'long'\n        ? addressToDisplay.toString()\n        : addressLength === 'short'\n          ? addressToDisplay.toShortString(shortenedLength)\n          : large\n            ? addressToDisplay.toString()\n            : addressToDisplay.toShortString()\n      : '-- --'\n\n  // We use the all zero address for spacing in case it is\n\n  return (\n    <FlexRow\n      {...props}\n      sx={[{\n        justifyContent: 'space-between',\n        alignItems: 'stretch',\n      }, ...toSxArray(sx)]}\n    >\n      {icon\n        ? (\n            <Identicon\n              size={iconSize}\n              value={address?.toHex()}\n              sx={{\n                minWidth: iconSize + Number.parseInt(theme.spacing(1)),\n                bgcolor: theme.vars.palette.secondary.main,\n              }}\n            />\n          )\n        : null}\n      {iconOnly\n        ? null\n        : (\n            <Typography\n              variant=\"body1\"\n              sx={{\n                alignSelf: 'center',\n                marginX: removeMargin ? 0 : 1,\n                fontFamily: fontFamily,\n              }}\n            >\n              {textToDisplay}\n            </Typography>\n          )}\n      {isLocalAddress\n        ? (\n            <FlexRow sx={{ marginLeft: 0.5 }}>\n              (You)\n            </FlexRow>\n          )\n        : null}\n    </FlexRow>\n  )\n}\n", "import type { EthAddressWrapper } from '@xylabs/sdk-js'\nimport type { BrowserProvider, JsonRpcSigner } from 'ethers/providers'\nimport { createContext } from 'react'\n\nexport interface EthersData {\n  busy?: boolean\n  chainId?: number\n  connect?: () => Promise<string[] | null | undefined>\n  connectError?: Error\n  connectRefused?: boolean\n  error?: Error\n  isConnected?: boolean\n  localAddress?: EthAddressWrapper\n  provider?: BrowserProvider\n  providerName?: string\n  showConnectWalletDialog?: () => void\n  signMessage?: (message: string, address?: string) => Promise<string | undefined>\n  signer?: JsonRpcSigner\n  signerAddress?: string\n  /** @deprecated - use the provider property and do not rely on wallet specific version */\n  walletProvider?: BrowserProvider\n}\n\n/** @deprecated - get provider and wallet info from wallet hooks */\nexport const EthersContext = createContext<EthersData>({})\n", "/* eslint-disable @typescript-eslint/no-deprecated -- Ethers loaders remain supported for public compatibility. */\nimport type { BrowserProvider } from 'ethers/providers'\nimport { InfuraProvider } from 'ethers/providers'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { EthersContext } from '../Context.ts'\n\ninterface Props {\n  enabled?: boolean\n}\n\nexport const infuraKey = '1d9f8053c65a49cfb99fafaa8ef201c0'\n\nexport const InfuraEthersLoader: React.FC<PropsWithChildren<Props>> = (props) => {\n  const { children, enabled } = props\n  void enabled\n\n  const chainId = 1\n\n  const value = useMemo(() => {\n    const provider = new InfuraProvider(1, infuraKey) as unknown as BrowserProvider\n    return {\n      busy: false, chainId, provider, isConnected: false,\n    }\n  }, [chainId])\n\n  return (\n    <EthersContext\n      value={value}\n    >\n      {children}\n    </EthersContext>\n  )\n}\n", "import { InfuraProvider } from 'ethers/providers'\nimport { useMemo } from 'react'\n\nimport { infuraKey } from './Infura.tsx'\n\nexport const useInfuraProvider = (chainId?: number) => {\n  const { provider, providerName } = useMemo(() => {\n    const provider = new InfuraProvider(chainId, infuraKey)\n    const providerName = 'Infura (Default)'\n    return { provider, providerName }\n  }, [chainId])\n\n  return { provider, providerName }\n}\n", "/* eslint-disable @typescript-eslint/no-deprecated -- Ethers loaders remain supported for public compatibility. */\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { useMetaMask } from '../../wallets/index.ts'\nimport { EthersContext } from './Context.ts'\n\nexport interface Props {\n  /** @deprecated - wallet should determine this for you */\n  defaultChainId?: number\n  enabled?: boolean\n}\n\n/** @deprecated - use useMetaMask hook instead */\nexport const MetaMaskEthersLoader: React.FC<PropsWithChildren<Props>> = ({\n  children, defaultChainId, enabled,\n}) => {\n  void defaultChainId\n  void enabled\n\n  const {\n    chainId,\n    connectWallet: connect,\n    connectRefused,\n    connectError,\n    currentAccount: currentAddress,\n    installed,\n    provider,\n    providerName,\n    signMessage,\n    signer,\n    signerAddress,\n  } = useMetaMask()\n\n  const value = useMemo(() => ({\n    busy: false,\n    chainId,\n    connect,\n    connectRefused,\n    error: connectError,\n    isConnected: installed,\n    localAddress: currentAddress,\n    provider,\n    providerName,\n    signMessage,\n    signer,\n    signerAddress: signerAddress?.toString(),\n    walletProvider: provider,\n  }), [\n    chainId,\n    connect,\n    connectRefused,\n    connectError,\n    installed,\n    currentAddress,\n    provider,\n    providerName,\n    signMessage,\n    signer,\n    signerAddress])\n\n  return (\n    <EthersContext\n      value={value}\n    >\n      {children}\n    </EthersContext>\n  )\n}\n", "import { forget } from '@xylabs/sdk-js'\nimport type { BrowserProvider, Eip1193Provider } from 'ethers/providers'\nimport type { Listener } from 'ethers/utils'\n\nimport type {\n  EIP1193EventNames, EIP1193EventsCompatible, SupportedEventProposals,\n} from '../eip/index.ts'\n\n/**\n * A zero dependency class that provides functionality for handling EIP1193 events\n *\n * See - https://eips.ethereum.org/EIPS/eip-1193\n */\nexport abstract class EIP1193Events implements EIP1193EventsCompatible {\n  // helpful for crafting debug/error messages to know the injected wallet\n  _providerName: string | undefined\n\n  // list of EIP-1193 specific event names and listeners for easy cleanup\n  private eip1193Listeners: [event: EIP1193EventNames, listener: Listener][] = []\n\n  // opt-in to EIP-1193 events since not all wallets will support them\n  private eventsEnabled = false\n\n  private listeningProvider: BrowserProvider | undefined\n\n  constructor(supportedEvents?: SupportedEventProposals[], provider?: Eip1193Provider, providerName?: string) {\n    this._providerName = providerName\n    this.eventsEnabled = !!supportedEvents?.includes('EIP-1193')\n    if (globalThis.ethereum === undefined && provider === undefined) {\n      console.warn('attempting to subscribe to EIP1193 events but missing provider in arguments or at window.ethereum')\n    }\n    this.listeningProvider = (provider ?? globalThis.ethereum) as unknown as BrowserProvider | undefined\n  }\n\n  onAccountsChanged(listener: Listener) {\n    this.addListener('accountsChanged', listener)\n  }\n\n  onChainChanged(listener: Listener) {\n    this.addListener('chainChanged', listener)\n  }\n\n  onConnect(listener: Listener) {\n    this.addListener('connect', listener)\n  }\n\n  onDisconnect(listener: Listener) {\n    this.addListener('disconnect', listener)\n  }\n\n  removeEIP11193Listener(event: EIP1193EventNames, listener: Listener) {\n    this.enabled(() => {\n      forget<BrowserProvider | void>(this.listeningProvider?.removeListener(event, listener) ?? Promise.resolve())\n      this.eip1193Listeners = this.eip1193Listeners.filter(([, savedListener]) => listener !== savedListener)\n    })\n  }\n\n  removeEIP11193Listeners() {\n    for (const [event, listener] of this.eip1193Listeners) {\n      forget<BrowserProvider | void>(this.listeningProvider?.removeListener(event, listener) ?? Promise.resolve())\n    }\n  }\n\n  private addListener(event: EIP1193EventNames, listener: Listener) {\n    this.enabled(() => {\n      forget<BrowserProvider | void>(this.listeningProvider?.on(event, listener) ?? Promise.resolve())\n      this.eip1193Listeners.push([event, listener])\n    })\n  }\n\n  private enabled(method?: () => void) {\n    if (this.eventsEnabled) {\n      method?.()\n    }\n  }\n}\n", "import { forget } from '@xylabs/sdk-js'\nimport type { BrowserProvider, Eip1193Provider } from 'ethers/providers'\n\nimport type { EIP6963ProviderInfo } from '../eip/index.ts'\nimport { EthWalletConnectorBase } from './EthWalletConnectorBase.ts'\n\n/**\n * A generic connector for EIP-6963 compatible wallets\n *\n * see - https://eips.ethereum.org/EIPS/eip-6963\n */\nexport class EIP6963Connector extends EthWalletConnectorBase {\n  // Name of the Provider\n  providerName = ''\n\n  constructor(provider?: BrowserProvider, rawProvider?: Eip1193Provider, info?: EIP6963ProviderInfo) {\n    super(['EIP-1193'], rawProvider, info?.name)\n    this.provider = provider\n    this.rawProvider = rawProvider\n    this.providerInfo = info\n    this.providerName = info?.name ?? ''\n    this.init()\n  }\n\n  get installed() {\n    return !!this.provider\n  }\n\n  init() {\n    if (this.installed) {\n      forget(this.onAccountsChangedListener())\n      forget(this.onChainChangedListener())\n    }\n  }\n}\n", "import {\n  isDefined, isString, toAddress,\n} from '@xylabs/sdk-js'\nimport { verifyTypedData } from 'ethers/hash'\nimport type {\n  BrowserProvider, Eip1193Provider, JsonRpcSigner,\n} from 'ethers/providers'\nimport type { Listener } from 'ethers/utils'\nimport { LRUCache } from 'lru-cache'\n\nimport type { EIP6963ProviderInfo, SupportedEventProposals } from '../eip/index.ts'\nimport { AccountsChangedEventName, ChainChangedEventName } from '../types/events/index.ts'\nimport type {\n  TypedDataDomain, TypedDataTypes, TypedDataValues,\n} from '../types/index.ts'\nimport { findChainName } from '../utils/index.ts'\nimport { EIP1193Events } from './EIP1193Events.ts'\n\n/**\n * Base class for connecting to an ethereum compatible wallet\n */\nexport abstract class EthWalletConnectorBase extends EIP1193Events {\n  // allowed accounts according to the wallet\n  allowedAccounts: string[] = []\n\n  // instance of Ethers BrowserProvider\n  provider: BrowserProvider | undefined\n\n  providerErrorLog = new LRUCache<string, Error>({ max: 300 })\n\n  // Assets provided by the wallet\n  providerInfo: EIP6963ProviderInfo | undefined\n\n  // instance of the raw provider injected by the wallet\n  rawProvider: Eip1193Provider | undefined\n\n  // Listeners that only want to be notified when accounts change\n  protected accountChangeNotifiers: Listener[] = []\n\n  // Listeners that only want to be notified when chainId changes\n  protected chainChangedNotifiers: Listener[] = []\n\n  // current chainId in hex format\n  protected chainIdHex: string | undefined = undefined\n\n  // Name of the Provider\n  abstract providerName: string\n\n  constructor(supportedEvents?: SupportedEventProposals[], rawProvider?: Eip1193Provider, providerName?: string) {\n    super(supportedEvents, rawProvider, providerName)\n  }\n\n  get chainId() {\n    return isString(this.chainIdHex) ? Number(this.chainIdHex) : undefined\n  }\n\n  get chainName() {\n    if (isDefined(this.chainId)) {\n      const knownChain = findChainName(this.chainId)\n      return isDefined(knownChain) ? knownChain.name : this.chainId.toString()\n    }\n  }\n\n  abstract get installed(): boolean\n\n  /**\n   * Request to enable accounts in the wallet\n   * This call is not wrapped in a try/catch by design.  Errors from connecting to a wallet can be intentional behavior\n   * (i.e. the user rejected the request to connect).  Handle errors in the calling code.\n   */\n  async connectWallet(): Promise<string[] | null | undefined> {\n    if (!this.provider) {\n      this.logProviderMissing()\n      return\n    }\n\n    return await this.provider.send('eth_requestAccounts', []) as string[] | null | undefined\n  }\n\n  /**\n   * Request the current active allowed from the wallet\n   */\n  async currentAccounts(): Promise<string[] | undefined> {\n    return await this.tryRpcSendCall<string[] | undefined>('eth_accounts')\n  }\n\n  /**\n   * Request the current chain id selection on the wallet\n   */\n  async currentChainId() {\n    return await this.tryRpcSendCall<string | undefined>('net_version')\n  }\n\n  /**\n   * Sign a string with a specific account enabled in the wallet\n   *\n   * @param message Message to sign with the signer\n   * @param allowedAccount Account being used to sign the message\n   */\n  async signMessage(message: string, allowedAccount?: string) {\n    if (!this.provider) {\n      this.logProviderMissing()\n      return\n    }\n\n    const signer = await this.signerFromAddress(allowedAccount)\n    const signature = await signer?.signMessage(message)\n    return signature\n  }\n\n  /**\n   * Sign a typed message with a specific account enabled in the wallet according to EIP-712\n   * @param domain eip712Domain\n   * @param types A specific field of a structured eip-712 type.\n   * @param value The contents of the message to sign\n   * @param allowedAccount Account being used to sign the message\n   * @returns\n   *\n   * see - https://eips.ethereum.org/EIPS/eip-712\n   */\n  async signTypedMessage(\n    domain: TypedDataDomain,\n    types: TypedDataTypes,\n    value: TypedDataValues,\n    allowedAccount?: string,\n  ) {\n    if (!this.provider) {\n      this.logProviderMissing()\n      return\n    }\n\n    const signer = await this.signerFromAddress(allowedAccount)\n    const signature = await signer?.signTypedData(domain, types, value)\n    return signature\n  }\n\n  /**\n   * Get a signer from a given address\n   *\n   * @param address Fetch a signer for a given address\n   */\n  async signerFromAddress(address?: string): Promise<JsonRpcSigner | undefined> {\n    return await this.provider?.getSigner(address)\n  }\n\n  /**\n   * Pass a callback to be notified when accounts are changed\n   * This is a notifier so it does not return updated values so check the allowed accounts\n   * after the passed listener is invoked\n   *\n   * @param listener A notify function that will be called when allowed accounts change\n   */\n  subscribeToAccountsChanges(listener: () => void) {\n    this.accountChangeNotifiers = [listener, ...this.accountChangeNotifiers]\n    return () => {\n      this.accountChangeNotifiers = this.accountChangeNotifiers.filter(l => l !== listener)\n    }\n  }\n\n  /**\n   * Pass a callback to be notified when chainId is changed\n   * This is a notifier so it does not return updated values so check the chainId\n   * after the passed listener is invoked\n   *\n   * @param listener A notify function that will be called when chainId changes\n   */\n  subscribeToChainChanges(listener: () => void) {\n    this.chainChangedNotifiers = [listener, ...this.chainChangedNotifiers]\n    return () => {\n      this.chainChangedNotifiers = this.chainChangedNotifiers.filter(l => l !== listener)\n    }\n  }\n\n  /**\n   * Verify a typed data signature according to EIP-712\n   * @param domain eip712Domain\n   * @param types A specific field of a structured eip-712 type.\n   * @param value The contents of the message to sign\n   * @param signature Signature produced by signTypedMessage\n   * @param expectedSignerAddress Expected signer address to verify against\n   * @returns boolean indicating if the signature is valid\n   */\n  verifyTypedDataSignature(\n    domain: TypedDataDomain,\n    types: TypedDataTypes,\n    value: TypedDataValues,\n    signature: string,\n    expectedSignerAddress: string,\n  ): boolean {\n    if (!this.provider) {\n      this.logProviderMissing()\n      return false\n    }\n    const recoveredAddress = verifyTypedData(domain, types, value, signature)\n    return toAddress(recoveredAddress.toLowerCase()) === toAddress(expectedSignerAddress.toLowerCase())\n  }\n\n  /**\n   * Keep class state internally consistent\n   */\n  protected async onAccountsChangedListener() {\n    // set the initial value\n    this.allowedAccounts = (await this.currentAccounts()) ?? []\n\n    this.notifySubscribers(this.accountChangeNotifiers, AccountsChangedEventName, { allowedAccounts: this.allowedAccounts })\n\n    const listener = (accounts: string[]) => {\n      this.allowedAccounts = accounts\n\n      this.notifySubscribers(this.accountChangeNotifiers, AccountsChangedEventName, { allowedAccounts: this.allowedAccounts })\n    }\n    this.onAccountsChanged(listener)\n  }\n\n  /**\n   * Keep class state internally consistent\n   */\n  protected async onChainChangedListener() {\n    // set the initial value\n    this.chainIdHex = (await this.currentChainId()) ?? undefined\n\n    this.notifySubscribers(this.chainChangedNotifiers, ChainChangedEventName, { chainId: this.chainId })\n\n    const listener = (chainId: string | undefined) => {\n      this.chainIdHex = chainId\n\n      this.notifySubscribers(this.chainChangedNotifiers, ChainChangedEventName, { chainId: this.chainId })\n    }\n    this.onChainChanged(listener)\n  }\n\n  private logProviderErrors(error: Error) {\n    const timestamp = Date.now()\n    this.providerErrorLog.set(`${this.providerName} - ${timestamp}`, error)\n  }\n\n  private logProviderMissing() {\n    console.warn('Cannot call this method because there is no browser provider connected.  Please confirm that metamask is installed')\n  }\n\n  private notifySubscribers(listeners: Listener[], eventName: string, value: Record<string, unknown>) {\n    for (const listener of listeners) listener()\n\n    const details = { detail: { ...value, providerName: this.providerName } }\n\n    // Allow anyone to listen for changes\n    globalThis.dispatchEvent(new CustomEvent(eventName, details))\n  }\n\n  private async tryRpcSendCall<TReturn = unknown>(method: string, params: unknown[] = []): Promise<TReturn | undefined> {\n    try {\n      return await this.provider?.send(method, params) as TReturn | undefined\n    } catch (e) {\n      console.warn(`Error calling ${method} from ${this.providerName}`, e)\n      this.logProviderErrors(e as Error)\n    }\n  }\n\n  // Since init likely relies on derived class members, derived classes must implement it\n  abstract init(provider?: BrowserProvider, info?: EIP6963ProviderInfo): void\n}\n", "export const AccountsChangedEventName = 'xyo:accounts:changed' as const\n\nexport interface AccountsChangedEventDetails extends CustomEventInit {\n  detail: {\n    allowedAccounts: string[]\n    providerName: string\n  }\n}\n", "export const ChainChangedEventName = 'xyo:chain:changed' as const\n\nexport interface ChainChangedEventDetails extends CustomEventInit {\n  detail: {\n    chainId: number | undefined\n    providerName: string\n  }\n}\n", "import {\n  arbitrum, base, mainnet, optimism, polygon, sepolia,\n} from 'viem/chains'\n\nconst chains = [mainnet, polygon, arbitrum, optimism, base, sepolia]\n\nexport const findChainName = (chainId: number) => chains.find(chain => chain.id === chainId)\n", "import type { Hex } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { Eip1193Provider } from 'ethers/providers'\n\nimport type { EthWalletApi } from '../types/index.ts'\nimport type { EthWalletConnectorBase } from './EthWalletConnectorBase.ts'\n\n/**\n * A wrapper for the Ethereum wallet connection that adds functionality that is not\n * supported by the provider interface directly.\n *\n * Metamask in particular supports many `wallet_*` rpc calls have their own EIP-* proposal.\n * See - https://docs.metamask.io/wallet/reference/json-rpc-methods/\n *\n * @param connector An instance of EthWalletConnectorBase\n */\nexport class EthWalletApiInstance implements EthWalletApi {\n  private _ethWalletConnector: EthWalletConnectorBase\n\n  constructor(ethWalletConnector: EthWalletConnectorBase) {\n    this._ethWalletConnector = ethWalletConnector\n  }\n\n  private get eip1193Provider(): Eip1193Provider {\n    return assertEx('request' in (this.ethWalletConnector.rawProvider ?? {})\n      ? this.ethWalletConnector.rawProvider\n      : null, () => 'Provider does not support request method')\n  }\n\n  private get ethWalletConnector() {\n    return this._ethWalletConnector\n  }\n\n  async switchEthereumChain(chainId: Hex) {\n    assertEx(this.ethWalletConnector.chainId, () => 'No chainId connected')\n    assertEx(chainId, () => 'No chainId provided')\n\n    if (this.ethWalletConnector.chainId !== Number(chainId)) {\n      await this.eip1193Provider.request({\n        method: 'wallet_switchEthereumChain',\n        params: [{ chainId }],\n      })\n    }\n  }\n}\n", "import { isString } from '@xylabs/sdk-js'\nimport { BrowserProvider } from 'ethers/providers'\n\nimport { isEIP6963AnnounceProviderEvent } from '../eip/index.ts'\nimport type { DiscoveredWallets } from '../types/index.ts'\nimport { EIP6963Connector, type EIP6963Connector as EIP6963ConnectorInterface } from './EIP6963Connector.ts'\n\nexport type WalletListener = () => void\n\nexport class EthWalletConnections {\n  private discoveredWallets: DiscoveredWallets = {}\n  private listeners: WalletListener[] = []\n\n  constructor() {\n    this.setupListeners()\n  }\n\n  addWallet(wallet: EIP6963ConnectorInterface) {\n    const walletName = wallet.providerInfo?.rdns\n    if (isString(walletName) && !this.discoveredWallets[walletName]) {\n      this.discoveredWallets = {\n        [walletName]: wallet,\n        ...this.discoveredWallets,\n      }\n      this.emitChange()\n    }\n  }\n\n  onDestroy() {\n    // eslint-disable-next-line unicorn/no-invalid-remove-event-listener\n    globalThis.removeEventListener('eip6963:announceProvider', this.newWalletListener.bind(this))\n  }\n\n  removeWallet(wallet: EIP6963ConnectorInterface) {\n    const walletName = wallet.providerInfo?.rdns\n    if (isString(walletName) && this.discoveredWallets[walletName]) {\n      delete this.discoveredWallets[walletName]\n      this.discoveredWallets = { ...this.discoveredWallets }\n      this.emitChange()\n    }\n  }\n\n  subscribe(listener: WalletListener) {\n    this.listeners = [...this.listeners, listener]\n    return () => {\n      this.listeners = this.listeners.filter(existingListener => existingListener !== listener)\n    }\n  }\n\n  wallets() {\n    return this.discoveredWallets\n  }\n\n  private emitChange() {\n    for (const listener of this.listeners) {\n      listener()\n    }\n  }\n\n  private newWalletListener(event: Event) {\n    if (isEIP6963AnnounceProviderEvent(event)) {\n      const { info, provider } = event.detail\n      // capture installed wallets as they come in\n      this.addWallet(new EIP6963Connector(new BrowserProvider(provider), provider, info))\n    }\n  }\n\n  private setupListeners() {\n    // listen when providers announce themselves\n    globalThis.addEventListener('eip6963:announceProvider', this.newWalletListener.bind(this))\n\n    // dispatch an event to ask all installed providers to identify themselves\n    globalThis.dispatchEvent(new Event('eip6963:requestProvider'))\n  }\n}\n", "import { isDefined } from '@xylabs/sdk-js'\nimport type { Eip1193Provider } from 'ethers/providers'\n\n/**\n * Assets needed to display a wallet\n */\nexport interface EIP6963ProviderInfo {\n  icon: string\n  name: string\n  rdns: string\n  uuid: string\n}\n\n/**\n * Detail of the CustomEvent emitted by a wallet\n */\nexport interface EIP6963ProviderDetail {\n  info: EIP6963ProviderInfo\n  provider: Eip1193Provider\n}\n\n/**\n * CustomEvent emitted by a wallet\n */\nexport interface EIP6963AnnounceProviderEvent extends CustomEvent {\n  detail: EIP6963ProviderDetail\n  type: 'eip6963:announceProvider'\n}\n\n/**\n * TypeGuard to inspect an event and know its of type EIP6963AnnounceProviderEvent\n * @param event Event\n * @returns boolean\n */\nexport const isEIP6963AnnounceProviderEvent = (event: Event): event is EIP6963AnnounceProviderEvent => {\n  const castEvent = event as EIP6963AnnounceProviderEvent\n  return isDefined(castEvent.detail) && isDefined(castEvent.detail.info) && isDefined(castEvent.detail.provider)\n}\n", "import { useSyncExternalStore } from 'react'\n\nimport { EthWalletConnections } from '../../../classes/index.ts'\n\nlet ethWalletConnections: EthWalletConnections | undefined\n\nconst getEthWalletConnections = (): EthWalletConnections => {\n  ethWalletConnections ??= new EthWalletConnections()\n  return ethWalletConnections\n}\n\nexport const useWalletDiscovery = () => {\n  const connections = getEthWalletConnections()\n  return useSyncExternalStore(connections.subscribe.bind(connections), connections.wallets.bind(connections))\n}\n", "import { RadioButtonChecked } from '@mui/icons-material'\nimport type { MenuItemProps } from '@mui/material'\nimport {\n  ListItemIcon, ListItemText, MenuItem, styled, useTheme,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { EIP6963Connector } from '../../classes/index.ts'\nimport { useEthWallet } from '../../hooks/index.ts'\nimport { ConstrainedImage } from '../shared/index.ts'\n\nexport interface WalletDiscoveryMenuItemInnerProps extends MenuItemProps {\n  approvedAccount?: boolean\n  icon?: string\n  name?: string\n}\n\nexport const WalletDiscoveryMenuItemInner: React.FC<WalletDiscoveryMenuItemInnerProps> = ({\n  approvedAccount, icon, name, ...props\n}) => {\n  const theme = useTheme()\n  return (\n    <StyledMenuItem {...props}>\n      <ListItemIcon>\n        <ConstrainedImage constrainedValue={theme.spacing(3)} src={icon} />\n      </ListItemIcon>\n      <ListItemText>{name}</ListItemText>\n      {approvedAccount\n        ? (\n            <StyledActiveIcon>\n              <RadioButtonChecked color=\"success\" />\n            </StyledActiveIcon>\n          )\n        : null}\n    </StyledMenuItem>\n  )\n}\n\nconst StyledMenuItem = styled(MenuItem, { name: 'StyledMenuItem' })(({ theme }) => ({\n  '&:not(:last-child)': { borderBottom: `1px solid ${theme.vars.palette.divider}` },\n  'padding': `${theme.spacing(2)}`,\n}))\n\nconst StyledActiveIcon = styled(ListItemIcon, { name: 'StyledActiveIcon' })(({ theme }) => ({\n  flexGrow: 1,\n  justifyContent: 'end',\n  paddingLeft: theme.spacing(2),\n}))\n\nexport interface WalletDiscoveryMenuItemProps extends WalletDiscoveryMenuItemInnerProps {\n  ethWalletConnector: EIP6963Connector\n}\n\nexport const WalletDiscoveryMenuItem: React.FC<WalletDiscoveryMenuItemProps> = ({ ethWalletConnector, ...props }) => {\n  const { currentAccount, providerInfo } = useEthWallet(ethWalletConnector)\n  return <WalletDiscoveryMenuItemInner approvedAccount={!!currentAccount} icon={providerInfo?.icon} name={providerInfo?.name} {...props} />\n}\n", "import { isDefined } from '@xylabs/sdk-js'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport type { EthWalletConnectorBase } from '../classes/index.ts'\n\n/**\n * Subscribe to chainId changes from a given wallet\n *\n * Its easier for ethWalletConnector to be defined to avoid complex method signatures for subscribe function\n **/\nexport const useChainId = (ethWalletConnector?: EthWalletConnectorBase) => {\n  const { getSnapShot, subscribe } = useMemo(() => {\n    if (ethWalletConnector?.installed) {\n      return {\n        getSnapShot: () => isDefined(ethWalletConnector) ? ethWalletConnector.chainId : undefined,\n        subscribe: (onStoreChange: () => void) => ethWalletConnector?.subscribeToChainChanges(onStoreChange),\n      }\n    }\n    return {\n      // eslint-disable-next-line unicorn/no-useless-undefined\n      getSnapShot: () => undefined,\n      // eslint-disable-next-line unicorn/no-useless-undefined\n      subscribe: () => () => undefined,\n    }\n  }, [ethWalletConnector])\n\n  return useSyncExternalStore(subscribe, getSnapShot)\n}\n", "import type { JsonRpcError } from 'ethers/providers'\nimport { isError } from 'ethers/utils'\nimport { useCallback, useState } from 'react'\n\nimport type { EthWalletConnectorBase } from '../classes/index.ts'\n\nconst checkAccounts = (accounts: string[] | null | undefined) => {\n  // We could have multiple accounts. Check for one.\n  if (accounts && accounts?.length !== 0) {\n    console.log('Connected:', accounts[0])\n    return accounts\n  } else {\n    console.log('No authorized account found.')\n  }\n}\n\nconst handleActionRejected = (e: unknown, rejectCallback: (e: JsonRpcError['error']) => void) => {\n  if (isError(e, 'ACTION_REJECTED')) {\n    const error = (e.info as JsonRpcError | undefined)?.error\n    if (error?.code === 4001) {\n      rejectCallback(error)\n    }\n  }\n}\n\n/** Initiate a connection to the passed in wallet */\nexport const useConnectWallet = (ethWalletConnector?: EthWalletConnectorBase) => {\n  const [connectRefused, setConnectRefused] = useState(false)\n  const [connectError, setConnectError] = useState<Error>()\n\n  const connectWallet = useCallback(async () => {\n    if (!ethWalletConnector) return\n    try {\n      const accounts = await ethWalletConnector?.connectWallet()\n      setConnectRefused(false)\n      setConnectError(undefined)\n      return checkAccounts(accounts)\n    } catch (e) {\n      handleActionRejected(e, (error) => {\n        setConnectRefused(true)\n        setConnectError(new Error(error.message))\n      })\n    }\n  }, [ethWalletConnector])\n\n  if (ethWalletConnector?.installed) {\n    return {\n      connectError, connectRefused, connectWallet,\n    }\n  }\n  return {}\n}\n", "import { EthAddressWrapper } from '@xylabs/sdk-js'\nimport { useMemo } from 'react'\n\nimport type { EthWalletConnectorBase } from '../classes/index.ts'\nimport { useCurrentAccountExternal } from './useCurrentAccountExternal.ts'\n\nexport const useCurrentAccount = (ethWalletConnector?: EthWalletConnectorBase): [EthAddressWrapper | undefined, string[]] => {\n  const addresses = useCurrentAccountExternal(ethWalletConnector)\n\n  /**\n   * According to the metamask docs, the first account is considered their 'selected account'\n   *\n   * see - https://docs.metamask.io/wallet/how-to/connect/access-accounts/#handle-accounts\n   */\n  const [currentAddress, additionalAddresses] = useMemo(() => {\n    return addresses?.length > 0 ? [EthAddressWrapper.fromString(addresses[0]), addresses.slice(1)] : [undefined, []]\n  }, [addresses])\n\n  if (ethWalletConnector?.installed) {\n    return [currentAddress, additionalAddresses]\n  }\n  return [undefined, []]\n}\n", "import { isDefined } from '@xylabs/sdk-js'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport type { EthWalletConnectorBase } from '../classes/index.ts'\n\n// stable value for getSnapShot\nexport const EMPTY_ARRAY = [] as const\n\n/**\n * Subscribe to account changes from a given wallet\n **/\nexport const useCurrentAccountExternal = (ethWalletConnector?: EthWalletConnectorBase) => {\n  const { getSnapShot, subscribe } = useMemo(() => {\n    return {\n      getSnapShot: () => isDefined(ethWalletConnector) ? ethWalletConnector.allowedAccounts : EMPTY_ARRAY,\n      subscribe: (notifier: () => void) => isDefined(ethWalletConnector) ? ethWalletConnector.subscribeToAccountsChanges(notifier) : () => void 0,\n    }\n  }, [ethWalletConnector])\n\n  return useSyncExternalStore(subscribe, getSnapShot)\n}\n", "import { useMemo } from 'react'\n\nimport { EIP6963Connector } from '../classes/index.ts'\nimport type { EthWallet, SelectedWallet } from '../types/index.ts'\nimport { useEthWallet } from './useEthWallet.tsx'\n\nexport const useEIP6963Wallet = (selectedWallet: SelectedWallet | undefined): EthWallet => {\n  const {\n    info, provider, rawProvider,\n  } = selectedWallet ?? {}\n  const connector = useMemo(() => new EIP6963Connector(provider, rawProvider, info), [info, provider, rawProvider])\n\n  return useEthWallet(connector)\n}\n", "import { usePromise } from '@xylabs/react-promise'\nimport { EthAddressWrapper, isDefined } from '@xylabs/sdk-js'\nimport { useMemo } from 'react'\n\nimport type { EthWalletConnectorBase } from '../classes/index.ts'\nimport type { EthWallet } from '../types/index.ts'\nimport { useChainId } from './useChainId.tsx'\nimport { useConnectWallet } from './useConnect.tsx'\nimport { useCurrentAccount } from './useCurrentAccount.ts'\nimport { useProvider } from './useProvider.tsx'\nimport { useSigner } from './useSigner.tsx'\n\n/**\n * A hook that takes an instance of EthWalletConnectorBase and makes certain functionality reactive.\n */\nexport const useEthWallet = (connector?: EthWalletConnectorBase): EthWallet => {\n  const [currentAccount, additionalAccounts] = useCurrentAccount(connector)\n\n  const chainId = useChainId(connector)\n\n  const chainName = useMemo(() => (isDefined(chainId) && isDefined(connector?.chainName) ? connector.chainName : undefined), [chainId, connector])\n\n  const {\n    provider, providerName, rawProvider,\n  } = useProvider(connector) ?? {}\n\n  const {\n    connectWallet, connectRefused, connectError,\n  } = useConnectWallet(connector)\n\n  const signer = useSigner(connector, currentAccount)\n\n  const [signerAddress] = usePromise(async () => EthAddressWrapper.fromString(await signer?.getAddress()), [signer])\n\n  const signMessage = useMemo(() => connector?.signMessage.bind(connector), [connector])\n\n  const signTypedMessage = useMemo(() => connector?.signTypedMessage.bind(connector), [connector])\n\n  const verifyTypedDataSignature = useMemo(() => connector?.verifyTypedDataSignature?.bind(connector), [connector])\n\n  const installed = useMemo(() => connector?.installed, [connector?.installed])\n\n  const providerInfo = useMemo(() => connector?.providerInfo, [connector?.providerInfo])\n\n  return {\n    additionalAccounts,\n    chainId,\n    chainName,\n    connectError,\n    connectRefused,\n    connectWallet,\n    currentAccount,\n    installed,\n    provider,\n    providerInfo,\n    rawProvider,\n    providerName,\n    signMessage,\n    signTypedMessage,\n    signer,\n    signerAddress,\n    verifyTypedDataSignature,\n\n  }\n}\n", "import { isDefined } from '@xylabs/sdk-js'\nimport { useMemo } from 'react'\n\nimport type { EthWalletConnectorBase } from '../classes/index.ts'\n\nexport const useProvider = (ethWalletConnector?: EthWalletConnectorBase) => {\n  return useMemo(() => {\n    if (isDefined(ethWalletConnector) && ethWalletConnector.installed) {\n      return {\n        provider: ethWalletConnector.provider,\n        providerName: ethWalletConnector.providerName,\n        rawProvider: ethWalletConnector.rawProvider,\n      }\n    }\n    return {\n      provider: undefined, providerName: undefined, rawProvider: undefined,\n    }\n  }, [ethWalletConnector])\n}\n", "import { usePromise } from '@xylabs/react-promise'\nimport type { EthAddressWrapper } from '@xylabs/sdk-js'\nimport type { JsonRpcSigner } from 'ethers/providers'\n\nimport type { EthWalletConnectorBase } from '../classes/index.ts'\n\n/** Locate the signer on the passed wallet for a given address */\nexport const useSigner = (ethWalletConnector?: EthWalletConnectorBase, localAddress?: EthAddressWrapper): JsonRpcSigner | undefined => {\n  const [signer] = usePromise(async () => {\n    if (ethWalletConnector?.installed) {\n      try {\n        // In a browser context, we should never build a signer without first having an allowed address\n        if (localAddress) {\n          return await ethWalletConnector.signerFromAddress(localAddress?.toString())\n        }\n      } catch (ex) {\n        console.error(ex)\n      }\n    }\n  }, [localAddress, ethWalletConnector])\n\n  return signer\n}\n", "import { useMemo } from 'react'\n\nimport { useTryMethodCalls } from '../../hooks/index.ts'\nimport type { EthWalletConnectorBase } from '../classes/index.ts'\nimport { EthWalletApiInstance } from '../classes/index.ts'\n\n/**\n * A wrapper for the Ethereum wallet connection that adds functionality that is not\n * supported by the BrowserProvider class directly.\n *\n * Metamask in particular supports many `wallet_*` rpc calls have their own EIP-* proposal.\n * See - https://docs.metamask.io/wallet/reference/json-rpc-methods/\n *\n * @param connector An instance of EthWalletConnectorBase\n * @returns\n */\nexport const useEthWalletApiInstance = (connector: EthWalletConnectorBase) => {\n  const apiInstance = useMemo(() => new EthWalletApiInstance(connector), [connector])\n  const { instance, error } = useTryMethodCalls<EthWalletApiInstance>(apiInstance)\n\n  return {\n    ethWalletApiInstance: instance,\n    error,\n  }\n}\n", "import type { EthAddressWrapper } from '@xylabs/sdk-js'\nimport { isDefined, isString } from '@xylabs/sdk-js'\nimport type { NavigateOptions, To } from 'react-router-dom'\nimport { createPath, useNavigate } from 'react-router-dom'\n\nconst toPath = (to: To) => {\n  if (typeof to === 'string') {\n    return to\n  }\n  return createPath({\n    ...to,\n    pathname: to.pathname ?? '',\n  })\n}\n\nexport const useNavigateToEthAddress = () => {\n  const navigate = useNavigate()\n  const navigateToEthAddress = (\n    address: EthAddressWrapper,\n    event: React.MouseEvent,\n    page?: string,\n    to?: To,\n    toOptions?: NavigateOptions,\n    toEtherScan?: boolean,\n  ) => {\n    const openInEtherScan = toEtherScan ?? (!isDefined(to) && !isString(page))\n    if (openInEtherScan) {\n      window.open(`https://etherscan.io/address/${address.toString()}`, '_blank')\n    } else {\n      const path = to ? toPath(to) : `/${page}/${address.toString()}`\n      if (event.metaKey || toEtherScan) {\n        window.open(path, '_blank')\n      } else {\n        void navigate(to ?? path, toOptions)\n      }\n    }\n  }\n  return { navigateToEthAddress }\n}\n", "import { useMemo, useState } from 'react'\n\nexport const useTryMethodCalls = <T extends object>(instance: T): { error: Error | undefined; instance: T } => {\n  const [error, setError] = useState<Error>()\n\n  const proxy = useMemo(() => new Proxy(instance, {\n    get(target, prop, receiver) {\n      const orig = Reflect.get(target, prop, receiver) as unknown\n      // Only wrap functions that are not private (do not start with _)\n      if (typeof orig === 'function' && typeof prop === 'string' && !prop.startsWith('_')) {\n        setError(undefined)\n        return async function (...args: unknown[]) {\n          try {\n            return await Reflect.apply(orig, instance, args) as unknown\n          } catch (err) {\n            setError(err as Error)\n            throw err\n          }\n        }\n      }\n      return orig\n    },\n  }), [instance])\n\n  return { instance: proxy, error }\n}\n", "import type { EthWalletConnectorBase } from '../classes/index.ts'\nimport { useEthWallet } from './useEthWallet.tsx'\nimport { useEthWalletApiInstance } from './useEthWalletApiInstance.ts'\n\nexport const useEthWalletInstance = (connector: EthWalletConnectorBase) => {\n  const ethWalletApiInstance = useEthWalletApiInstance(connector)\n  const ethWallet = useEthWallet(connector)\n\n  return {\n    ...ethWalletApiInstance,\n    ...ethWallet,\n  }\n}\n", "import type { DetailedHTMLProps, ImgHTMLAttributes } from 'react'\nimport React from 'react'\n\nexport interface ConstrainedImageProps extends DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> {\n  /** use a CSS Height or Width value i.e. '42px' */\n  constrainedValue: string\n}\n\n/**\n * Useful when you have various square-ish images and want to ensure they occupy the same height (but not necessarily\n * the same width) within a fixed container\n */\nexport const ConstrainedImage: React.FC<ConstrainedImageProps> = ({ constrainedValue = '42px', ...props }) => {\n  return (\n    <span style={{ height: constrainedValue, width: constrainedValue }}>\n      <img style={{ maxWidth: constrainedValue }} {...props} />\n    </span>\n  )\n}\n", "import type { MenuItemProps } from '@mui/material'\nimport { Alert } from '@mui/material'\nimport { exists } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport type { DiscoveredWallets } from '../../types/index.ts'\nimport type { onWalletSelect } from './lib/index.ts'\nimport { WalletDiscoveryMenuItem } from './MenuItem.tsx'\n\nexport interface WalletsDiscoveredMenuItemsProps extends MenuItemProps {\n  discoveredWallets?: DiscoveredWallets\n  onWalletSelect?: onWalletSelect\n  suppressNoWalletsWarning?: boolean\n}\n\nexport const WalletsDiscoveredMenuItems: React.FC<WalletsDiscoveredMenuItemsProps> = ({\n  discoveredWallets,\n  onWalletSelect,\n  suppressNoWalletsWarning,\n  ...props\n}) => {\n  return (\n    discoveredWallets\n      ? Object.values(discoveredWallets).filter(exists).map(eip6963Connector => (\n          <WalletDiscoveryMenuItem\n            key={eip6963Connector.providerName}\n            ethWalletConnector={eip6963Connector}\n            onClick={() => onWalletSelect?.(eip6963Connector)}\n            {...props}\n          />\n        ))\n      : suppressNoWalletsWarning\n        ? null\n        : <Alert severity=\"warning\">Unable to locate any installed wallets</Alert>\n  )\n}\n", "import type { PaperProps } from '@mui/material'\nimport { Paper } from '@mui/material'\nimport React from 'react'\n\nimport { useWalletDiscovery } from './hooks/index.ts'\nimport type { onWalletSelect } from './lib/index.ts'\nimport { WalletsDiscoveredMenuItems } from './MenuItems.tsx'\n\nexport interface WalletDiscoveryPaperProps extends PaperProps {\n  onWalletSelect?: onWalletSelect\n}\n\nexport const WalletDiscoveryPaper: React.FC<WalletDiscoveryPaperProps> = ({ onWalletSelect, ...props }) => {\n  const discoveredWallets = useWalletDiscovery()\n  return (\n    <Paper elevation={2} {...props}>\n      <WalletsDiscoveredMenuItems discoveredWallets={discoveredWallets} onWalletSelect={onWalletSelect} />\n    </Paper>\n  )\n}\n", "import type { CardProps } from '@mui/material'\nimport { Card } from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport type { EthAddressWrapper, Hex } from '@xylabs/sdk-js'\nimport React, { useMemo, useState } from 'react'\n\nimport type { EIP6963Connector } from '../../classes/index.ts'\nimport { useEthWalletInstance } from '../../hooks/index.ts'\nimport { WalletOverviewCardActions } from './CardActions.tsx'\nimport { WalletOverviewCardContent } from './CardContent.tsx'\nimport { WalletOverviewCardHeader } from './CardHeader.tsx'\nimport {\n  buildDomain, types, values,\n} from './lib/index.ts'\n\nexport interface WalletOverviewCardProps extends CardProps {\n  ethWalletConnector: EIP6963Connector\n}\n\nexport const WalletOverviewCard: React.FC<WalletOverviewCardProps> = ({ ethWalletConnector, ...props }) => {\n  const {\n    chainId,\n    connectWallet,\n    connectRefused,\n    chainName,\n    connectError,\n    currentAccount,\n    providerInfo,\n    providerName,\n    ethWalletApiInstance,\n    signMessage,\n    signTypedMessage,\n    signerAddress,\n    verifyTypedDataSignature,\n  } = useEthWalletInstance(ethWalletConnector)\n\n  const domain = useMemo(() => buildDomain(chainId), [chainId])\n  const [signResponse, setSignResponse] = useState<string>()\n  const [error, setError] = useState<Error>()\n  const [validateTypedDataSignature, setValidateTypedDataSignature] = useState(false)\n  const [previousSignerAddress, setPreviousSignerAddress] = useState<EthAddressWrapper>()\n\n  if (signerAddress !== previousSignerAddress) {\n    setPreviousSignerAddress(signerAddress)\n    setSignResponse(undefined)\n  }\n\n  const onSign = async () => {\n    setSignResponse(undefined)\n    setValidateTypedDataSignature(false)\n    const signResult = await signMessage?.('test')\n    setSignResponse(signResult)\n  }\n\n  const onSignTypedData = async () => {\n    try {\n      setError(undefined)\n      setSignResponse(undefined)\n      const signature = await signTypedMessage?.(domain, types, values)\n      setSignResponse(signature)\n      setValidateTypedDataSignature(true)\n    } catch (err) {\n      setValidateTypedDataSignature(false)\n      setError(err as Error)\n    }\n  }\n\n  const onSwitchChain = async () => {\n    const mainnet = '0x1' as Hex\n    const sepolia = '0xaa36a7' as Hex\n    await (chainId === 1 ? ethWalletApiInstance.switchEthereumChain(sepolia) : ethWalletApiInstance.switchEthereumChain(mainnet))\n  }\n\n  return (\n    <Card {...props}>\n      <ErrorRender error={error} />\n      <WalletOverviewCardHeader currentAccount={currentAccount} icon={providerInfo?.icon} walletName={providerName} />\n      <WalletOverviewCardContent\n        chainName={chainName}\n        connectError={connectError}\n        connectRefused={connectRefused}\n        currentAccount={currentAccount}\n        domain={domain}\n        types={types}\n        values={values}\n        validateTypedDataSignature={validateTypedDataSignature}\n        signResponse={signResponse}\n        verifyTypedDataSignature={verifyTypedDataSignature}\n      />\n      <WalletOverviewCardActions\n        connectWallet={connectWallet}\n        currentAccount={currentAccount}\n        onSign={onSign}\n        onSignTypedData={onSignTypedData}\n        onSwitchChain={onSwitchChain}\n      />\n    </Card>\n  )\n}\n", "import type { CardActionsProps } from '@mui/material'\nimport { Button, CardActions } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { EthAddressWrapper, Promisable } from '@xylabs/sdk-js'\nimport React, { useState } from 'react'\n\nexport interface WalletOverviewCardActions extends CardActionsProps {\n  connectWallet?: () => Promise<string[] | null | undefined>\n  currentAccount?: EthAddressWrapper\n  onSign?: () => Promisable<void>\n  onSignTypedData?: () => Promisable<void>\n  onSwitchChain?: () => Promisable<void>\n}\n\nexport const WalletOverviewCardActions: React.FC<WalletOverviewCardActions> = ({\n  connectWallet, currentAccount, onSign, onSignTypedData, onSwitchChain, sx, ...props\n}) => {\n  const [connecting, setConnecting] = useState(false)\n\n  const onConnect = () =>\n    void (async () => {\n      setConnecting(true)\n      try {\n        await connectWallet?.()\n      } catch (e) {\n        console.warn(e)\n      }\n      setConnecting(false)\n    })()\n\n  return (\n    <CardActions\n      {...props}\n    >\n      <FlexCol\n        sx={{\n          gap: 2,\n          width: '100%',\n        }}\n      >\n        <Button fullWidth disabled={!currentAccount} variant=\"contained\" onClick={() => onSign ? void onSign() : undefined} size=\"small\">\n          Sign Test Message\n        </Button>\n        <Button\n          fullWidth\n          disabled={!currentAccount}\n          variant=\"contained\"\n          onClick={() => (onSignTypedData ? void onSignTypedData() : undefined)}\n          size=\"small\"\n        >\n          Sign Typed Data Message\n        </Button>\n        <Button fullWidth size=\"small\" disabled={connecting || !!currentAccount} variant=\"contained\" onClick={onConnect}>\n          {currentAccount ? 'Connected' : 'Connect'}\n        </Button>\n        <Button fullWidth size=\"small\" variant=\"contained\" onClick={() => void onSwitchChain?.()}>\n          Switch Chain\n        </Button>\n      </FlexCol>\n    </CardActions>\n  )\n}\n", "import { Cancel, Check } from '@mui/icons-material'\nimport type { CardContentProps } from '@mui/material'\nimport {\n  Alert, AlertTitle, CardContent, Chip, Divider, styled, Typography,\n} from '@mui/material'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { EthAddressWrapper } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { TypedDataDomain } from 'ethers/hash'\nimport React, { useMemo } from 'react'\n\nimport type {\n  EthWallet, TypedDataTypes, TypedDataValues,\n} from '../../types/index.ts'\n\nexport interface WalletOverviewCardContentProps extends CardContentProps {\n  chainName?: string\n  connectError?: Error\n  connectRefused?: boolean\n  currentAccount?: EthAddressWrapper\n  domain: TypedDataDomain\n  signResponse?: string\n  types?: TypedDataTypes\n  validateTypedDataSignature?: boolean\n  values?: TypedDataValues\n  verifyTypedDataSignature?: EthWallet['verifyTypedDataSignature']\n}\n\nexport const WalletOverviewCardContent: React.FC<WalletOverviewCardContentProps> = ({\n  chainName,\n  connectError,\n  connectRefused,\n  currentAccount,\n  signResponse,\n  domain,\n  types,\n  values,\n  validateTypedDataSignature,\n  verifyTypedDataSignature,\n  sx,\n  ...props\n}) => {\n  const validSignature = useMemo(() => {\n    if (isDefined(signResponse) && isDefined(types) && isDefined(values) && isDefined(currentAccount) && validateTypedDataSignature) {\n      return verifyTypedDataSignature?.(domain, types, values, signResponse, currentAccount.toString())\n    }\n  }, [signResponse, validateTypedDataSignature, domain, types, values, currentAccount, verifyTypedDataSignature])\n\n  return (\n    <CardContent\n      sx={{\n        display: 'flex', flexDirection: 'column', gap: 2, ...sx,\n      }}\n      {...props}\n    >\n      {window.parent === globalThis as unknown as Window\n        ? null\n        : (\n            <Alert severity=\"warning\">\n              <AlertTitle>Avoid calling wallets inside of iFrames</AlertTitle>\n            </Alert>\n          )}\n      <FlexRow\n        sx={{\n          justifyContent: 'space-between',\n          alignItems: 'start',\n          gap: 2,\n        }}\n      >\n        <FlexCol\n          sx={{\n            alignItems: 'start',\n            justifyContent: 'start',\n          }}\n        >\n          <StyledTypographyHeading variant=\"overline\">Approved Address:</StyledTypographyHeading>\n          <Chip label={currentAccount ? currentAccount?.toShortString() : 'none'} />\n        </FlexCol>\n        <FlexCol\n          sx={{\n            alignItems: 'start',\n            justifyContent: 'start',\n          }}\n        >\n          <StyledTypographyHeading variant=\"overline\">Chain:</StyledTypographyHeading>\n          <Chip label={chainName ?? 'unknown'} />\n        </FlexCol>\n      </FlexRow>\n      <Divider flexItem />\n      {connectRefused\n        ? (\n            <Alert severity=\"error\">\n              <AlertTitle>Connection Refused</AlertTitle>\n              Error:\n              {' '}\n              {connectError?.message}\n            </Alert>\n          )\n        : null}\n      {isDefined(signResponse)\n        ? (\n            <Alert severity=\"success\">\n              <AlertTitle>Sign Response</AlertTitle>\n              {signResponse}\n              {validateTypedDataSignature\n                ? validSignature\n                  ? (\n                      <span>\n                        <Check />\n                        {' '}\n                        Verified Signature\n                      </span>\n                    )\n                  : (\n                      <span>\n                        <Cancel color=\"error\" />\n                        {' '}\n                        Could not verify signature\n                      </span>\n                    )\n                : null}\n            </Alert>\n          )\n        : null}\n    </CardContent>\n  )\n}\n\nconst StyledTypographyHeading = styled(Typography, { name: 'StyledTypographyHeading' })(() => ({ opacity: 0.7 }))\n", "import { CheckCircleOutlined } from '@mui/icons-material'\nimport type { CardHeaderProps } from '@mui/material'\nimport { CardHeader } from '@mui/material'\nimport type { EthAddressWrapper } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { ConstrainedImage } from '../shared/index.ts'\n\nexport interface WalletOverviewCardHeaderProps extends CardHeaderProps {\n  currentAccount?: EthAddressWrapper\n  icon?: string\n  walletName?: string\n}\n\nexport const WalletOverviewCardHeader: React.FC<WalletOverviewCardHeaderProps> = ({\n  currentAccount, icon, walletName, ...props\n}) => {\n  return (\n    <CardHeader\n      avatar={<ConstrainedImage constrainedValue=\"42px\" src={icon} />}\n      title={walletName}\n      action={currentAccount ? <CheckCircleOutlined color=\"success\" /> : null}\n      {...props}\n    />\n  )\n}\n", "import type { Signer } from 'ethers/providers'\n\nexport const buildDomain = (chainId?: number) => ({\n  name: 'MyApp',\n  version: '1',\n  chainId: chainId ?? 1,\n  verifyingContract: '0x0000000000000000000000000000000000000000',\n})\n\nexport const types: Parameters<Signer['signTypedData']>[1] = { Payload: [{ name: 'hash', type: 'string' }, { name: 'schema', type: 'string' }] }\nexport const values: Parameters<Signer['signTypedData']>[2] = {\n  hash: '0x1a2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890',\n  schema: 'network.xyo.hash',\n}\n", "import { forget } from '@xylabs/sdk-js'\nimport { BrowserProvider } from 'ethers/providers'\n\nimport { EthWalletConnectorBase } from '../../classes/index.ts'\nimport type { CoinbaseProvider } from './lib/index.ts'\n\nconst PROVIDER_NAME = 'Coinbase'\n\nexport class CoinbaseConnector extends EthWalletConnectorBase {\n  // Name of the Provider\n  providerName = PROVIDER_NAME\n\n  private ethereum = globalThis.ethereum as CoinbaseProvider | undefined\n\n  constructor(provider?: BrowserProvider) {\n    super(['EIP-1193'], undefined, PROVIDER_NAME)\n    this.init(provider)\n  }\n\n  get installed() {\n    return !!(this.ethereum?.isCoinbaseWallet)\n  }\n\n  init(provider?: BrowserProvider) {\n    if (provider) {\n      this.provider = provider\n    } else if (globalThis.ethereum) {\n      this.provider = new BrowserProvider(globalThis.ethereum)\n    } else {\n      console.warn(`Attempting to use ${this.providerName} class when its not installed`)\n    }\n    if (this.installed) {\n      forget(this.onAccountsChangedListener())\n      forget(this.onChainChangedListener())\n    }\n  }\n}\n", "import { useEthWallet } from '../../hooks/index.ts'\nimport type { EthWallet } from '../../types/index.ts'\nimport { CoinbaseConnector } from './CoinbaseConnector.ts'\n\nlet coinbaseConnector: CoinbaseConnector | undefined\n\nconst getCoinbaseConnector = (): CoinbaseConnector => {\n  coinbaseConnector ??= new CoinbaseConnector()\n  return coinbaseConnector\n}\n\nexport const useCoinbaseWallet = (): EthWallet => {\n  return useEthWallet(getCoinbaseConnector())\n}\n", "import type { MetaMaskInpageProvider } from '@metamask/providers'\nimport { forget } from '@xylabs/sdk-js'\nimport { BrowserProvider } from 'ethers/providers'\n\nimport { EthWalletConnectorBase } from '../../classes/index.ts'\n\nconst PROVIDER_NAME = 'MetaMask'\n\nexport class MetaMaskConnector extends EthWalletConnectorBase {\n  // Name of the Provider\n  providerName = 'MetaMask'\n\n  private ethereum = globalThis.ethereum as MetaMaskInpageProvider | undefined\n\n  constructor(provider?: BrowserProvider) {\n    super(['EIP-1193'], undefined, PROVIDER_NAME)\n    this.init(provider)\n  }\n\n  get installed() {\n    // Phantom camps on the isMetaMask method as well :(\n    return !!(this.ethereum?.isMetaMask && !globalThis.phantom?.ethereum?.isPhantom)\n  }\n\n  init(provider?: BrowserProvider) {\n    if (provider) {\n      this.provider = provider\n    } else if (globalThis.ethereum) {\n      this.provider = new BrowserProvider(globalThis.ethereum)\n    } else {\n      console.warn(`Attempting to use ${this.providerName} class when its not installed`)\n    }\n    if (this.installed) {\n      forget(this.onAccountsChangedListener())\n      forget(this.onChainChangedListener())\n    }\n  }\n}\n", "import { useEthWallet } from '../../hooks/index.ts'\nimport type { EthWallet } from '../../types/index.ts'\nimport { MetaMaskConnector } from './MetaMaskConnector.ts'\n\nlet metamaskConnector: MetaMaskConnector | undefined\n\nconst getMetaMaskConnector = (): MetaMaskConnector => {\n  metamaskConnector ??= new MetaMaskConnector()\n  return metamaskConnector\n}\n\nexport const useMetaMask = (): EthWallet => {\n  return useEthWallet(getMetaMaskConnector())\n}\n", "import { forget } from '@xylabs/sdk-js'\nimport { BrowserProvider } from 'ethers/providers'\n\nimport { EthWalletConnectorBase } from '../../classes/index.ts'\n\nconst PROVIDER_NAME = 'Phantom'\n\nexport class PhantomConnector extends EthWalletConnectorBase {\n  // Name of the Provider\n  providerName = PROVIDER_NAME\n\n  private ethereum = globalThis.phantom?.ethereum\n\n  constructor(provider?: BrowserProvider) {\n    super(['EIP-1193'], undefined, PROVIDER_NAME)\n    this.init(provider)\n  }\n\n  get installed() {\n    return !!(globalThis.phantom?.ethereum?.isPhantom)\n  }\n\n  init(provider?: BrowserProvider) {\n    if (provider) {\n      this.provider = provider\n    } else if (this.ethereum) {\n      this.provider = new BrowserProvider(this.ethereum)\n    } else {\n      console.warn(`Attempting to use ${this.providerName} class when its not installed`)\n    }\n    if (this.installed) {\n      forget(this.onAccountsChangedListener())\n      forget(this.onChainChangedListener())\n    }\n  }\n}\n", "import { useEthWallet } from '../../hooks/index.ts'\nimport type { EthWallet } from '../../types/index.ts'\nimport { PhantomConnector } from './PhantomConnector.ts'\n\nlet phantomConnector: PhantomConnector | undefined\n\nconst getPhantomConnector = (): PhantomConnector => {\n  phantomConnector ??= new PhantomConnector()\n  return phantomConnector\n}\n\nexport const usePhantomWallet = (): EthWallet => {\n  return useEthWallet(getPhantomConnector())\n}\n", "import { forget } from '@xylabs/sdk-js'\nimport { BrowserProvider } from 'ethers/providers'\n\nimport { EthWalletConnectorBase } from '../../classes/index.ts'\nimport type { TrustProvider } from './lib/index.ts'\n\nexport class TrustConnector extends EthWalletConnectorBase {\n  // Name of the Provider\n  providerName = 'Trust'\n\n  // instance of provider with Trust specific methods\n  private ethereum = globalThis.ethereum as TrustProvider | undefined\n\n  constructor(provider?: BrowserProvider) {\n    super(['EIP-1193'])\n    this.init(provider)\n  }\n\n  get installed() {\n    return !!(this.ethereum?.isTrust)\n  }\n\n  init(provider?: BrowserProvider) {\n    if (provider) {\n      this.provider = provider\n    } else if (globalThis.ethereum) {\n      this.provider = new BrowserProvider(globalThis.ethereum)\n    } else {\n      console.warn(`Attempting to use ${this.providerName} class when its not installed`)\n    }\n    if (this.installed) {\n      forget(this.onAccountsChangedListener())\n      forget(this.onChainChangedListener())\n    }\n  }\n}\n", "import { useEthWallet } from '../../hooks/index.ts'\nimport type { EthWallet } from '../../types/index.ts'\nimport { TrustConnector } from './TrustConnector.ts'\n\nlet trustConnector: TrustConnector | undefined\n\nconst getTrustConnector = (): TrustConnector => {\n  trustConnector ??= new TrustConnector()\n  return trustConnector\n}\n\nexport const useTrustWallet = (): EthWallet => {\n  return useEthWallet(getTrustConnector())\n}\n", "/* eslint-disable @typescript-eslint/no-deprecated -- Ethers loaders remain supported for public compatibility. */\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { EthAddressWrapper } from '@xylabs/sdk-js'\nimport type { JsonRpcSigner } from 'ethers/providers'\nimport { BrowserProvider, InfuraProvider } from 'ethers/providers'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n  useCallback, useEffect, useMemo, useState,\n} from 'react'\n\nimport { EthersContext } from './Context.ts'\nimport { infuraKey } from './Infura/index.ts'\n\ninterface Props {\n  enabled?: boolean\n}\n\nexport const MyEtherWalletEthersLoader: React.FC<PropsWithChildren<Props>> = (props) => {\n  const { children, enabled } = props\n  const ethereum = globalThis.ethereum\n  void enabled\n  const [error, setError] = useState<Error>()\n  const [localAddress, setLocalAddress] = useState<EthAddressWrapper>()\n  const [providerName, setProviderName] = useState<string>()\n\n  useEffect(() => {\n    if (ethereum) {\n      ethereum.autoRefreshOnNetworkChange = false\n    }\n  }, [ethereum])\n\n  const connect = useCallback(async () => {\n    await ethereum?.enable?.()\n    return localAddress ? [localAddress.toString()] : []\n  }, [ethereum, localAddress])\n\n  const [isConnected, setIsConnected] = useState<boolean>()\n\n  const [walletProvider, setWalletProvider] = useState<BrowserProvider>()\n  const [provider, setProvider] = useState<BrowserProvider>()\n  const [signer, setSigner] = useState<JsonRpcSigner>()\n\n  useAsyncEffect(\n    async () => {\n      const walletProvider = ethereum ? new BrowserProvider(ethereum) : undefined\n      let provider: BrowserProvider | InfuraProvider | undefined\n      let providerName: string\n      if (walletProvider) {\n        provider = walletProvider\n        providerName = 'MyEtherWallet'\n      } else {\n        provider = new InfuraProvider(1, infuraKey)\n        providerName = 'Infura (Default)'\n      }\n      setProvider(provider as BrowserProvider)\n      setProviderName(providerName)\n      setWalletProvider(walletProvider)\n      let signer: JsonRpcSigner | undefined\n      try {\n        const [existingAddress] = ((await provider.send('eth_accounts', [])) as string[] | undefined) ?? []\n        if (existingAddress) {\n          setLocalAddress(EthAddressWrapper.fromString(existingAddress))\n        }\n        if (localAddress && walletProvider) {\n          signer = await walletProvider?.getSigner()\n        }\n      } catch (ex) {\n        console.error(ex)\n      }\n      setSigner(signer)\n    },\n    [ethereum, isConnected, localAddress],\n  )\n\n  useAsyncEffect(\n    async (isMounted) => {\n      if (signer) {\n        try {\n          const localAddress = EthAddressWrapper.fromString(await signer.getAddress())\n          if (isMounted()) {\n            setLocalAddress(localAddress)\n            setIsConnected(true)\n          }\n        } catch (ex) {\n          if (isMounted()) {\n            setError(new Error(`localAddress: ${String(ex)}`))\n            setLocalAddress(undefined)\n            setIsConnected(false)\n          }\n        }\n      }\n    },\n    [signer],\n  )\n\n  const [chainId, setChainId] = useState<number>()\n\n  useAsyncEffect(\n    async (isMounted) => {\n      const chainId = (await provider?.getNetwork())?.chainId\n      if (!isMounted()) return\n      setChainId(Number(chainId?.toString()))\n    },\n    [provider],\n  )\n\n  const value = useMemo(() => ({\n    busy: false,\n    chainId,\n    connect,\n    error,\n    isConnected,\n    localAddress,\n    provider,\n    providerName,\n    signer: isConnected ? signer : undefined,\n    walletProvider,\n  }), [\n    chainId,\n    connect,\n    error,\n    isConnected,\n    localAddress,\n    provider,\n    providerName,\n    signer,\n    walletProvider])\n\n  return (\n    <EthersContext\n      value={value}\n    >\n      {children}\n    </EthersContext>\n  )\n}\n", "/* eslint-disable @typescript-eslint/no-deprecated -- Ethers loaders remain supported for public compatibility. */\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { EthAddressWrapper } from '@xylabs/sdk-js'\nimport type { JsonRpcSigner } from 'ethers/providers'\nimport { BrowserProvider } from 'ethers/providers'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { EthersContext } from './Context.ts'\n\ninterface Props {\n  enabled?: boolean\n}\n\nexport const OperaEthersLoader: React.FC<PropsWithChildren<Props>> = (props) => {\n  const { children, enabled } = props\n  const ethereum = globalThis.ethereum\n  void enabled\n  const [error, setError] = useState<Error>()\n  const [signer, setSigner] = useState<JsonRpcSigner>()\n  const [provider, setProvider] = useState<BrowserProvider>()\n  const initialAddress = ethereum?.addresses?.[0]\n  const [localAddress, setLocalAddress] = useState<EthAddressWrapper | undefined>(\n    initialAddress ? EthAddressWrapper.fromString(initialAddress) : undefined,\n  )\n\n  const chainId = ethereum?.chainId ? Number.parseInt(ethereum.chainId) : 1\n  const isConnected = ethereum?.isConnected?.() ?? false\n\n  useAsyncEffect(\n    async (mounted) => {\n      if (ethereum) {\n        void ethereum.enable?.()\n        const operaProvider = new BrowserProvider(ethereum)\n        const provider = operaProvider\n        const [existingAddress] = ((await provider.send('eth_accounts', [])) as string[] | undefined) ?? []\n        if (existingAddress && existingAddress !== localAddress?.toString()) setLocalAddress(EthAddressWrapper.fromString(existingAddress))\n        if (localAddress) {\n          const signer = await operaProvider.getSigner()\n          try {\n            const localAddress = EthAddressWrapper.fromString(await signer.getAddress())\n            ethereum.autoRefreshOnNetworkChange = false\n            if (mounted()) {\n              setSigner(signer)\n              setProvider(provider)\n              setLocalAddress(localAddress)\n            }\n          } catch (ex) {\n            if (mounted()) {\n              setError(new Error(`localAddress: ${String(ex)}`))\n            }\n          }\n        }\n      }\n    },\n    [ethereum, localAddress],\n  )\n\n  const value = useMemo(() => ({\n    busy: false, chainId, error, isConnected, localAddress, provider, signer,\n  }), [chainId, error, isConnected, localAddress, provider, signer])\n\n  return (\n    <EthersContext\n      value={value}\n    >\n      {children}\n    </EthersContext>\n  )\n}\n", "/* eslint-disable @typescript-eslint/no-deprecated -- Ethers loaders remain supported for public compatibility. */\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { EthAddressWrapper } from '@xylabs/sdk-js'\nimport type { JsonRpcSigner } from 'ethers/providers'\nimport { BrowserProvider } from 'ethers/providers'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { EthersContext } from './Context.ts'\n\ninterface Props {\n  enabled?: boolean\n}\n\nexport const TrustEthersLoader: React.FC<PropsWithChildren<Props>> = (props) => {\n  const { children, enabled } = props\n  void enabled\n  const [error, setError] = useState<Error>()\n  const [signer, setSigner] = useState<JsonRpcSigner>()\n  const [localAddress, setLocalAddress] = useState<EthAddressWrapper>()\n\n  const trustProvider = useMemo(() => (globalThis.ethereum ? new BrowserProvider(globalThis.ethereum) : undefined), [])\n\n  const chainId = 1\n\n  const provider = trustProvider\n\n  useAsyncEffect(\n    async (mounted) => {\n      if (trustProvider) {\n        const [existingAddress] = ((await trustProvider.send('eth_accounts', [])) as string[] | undefined) ?? []\n        if (existingAddress && existingAddress !== localAddress?.toString()) setLocalAddress(EthAddressWrapper.fromString(existingAddress))\n        if (localAddress) {\n          const localSigner = await trustProvider.getSigner()\n          setSigner(localSigner)\n          try {\n            const localAddress = EthAddressWrapper.fromString(await localSigner.getAddress())\n            if (mounted()) {\n              setLocalAddress(localAddress)\n            }\n          } catch (ex) {\n            if (mounted()) {\n              setError(new Error(`localAddress: ${String(ex)}`))\n            }\n          }\n        }\n      }\n    },\n    [localAddress, trustProvider],\n  )\n\n  const value = useMemo(() => ({\n    busy: false, chainId, error, localAddress, provider, signer,\n  }), [\n    chainId,\n    error,\n    localAddress,\n    provider,\n    signer,\n  ])\n\n  return (\n    <EthersContext\n      value={value}\n    >\n      {children}\n    </EthersContext>\n  )\n}\n", "/* eslint-disable @typescript-eslint/no-deprecated -- Ethers loaders remain supported for public compatibility. */\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport { InfuraEthersLoader } from './Infura/index.ts'\nimport { MetaMaskEthersLoader } from './MetaMask.tsx'\nimport { MyEtherWalletEthersLoader } from './MyEtherWallet.tsx'\nimport { OperaEthersLoader } from './Opera.tsx'\nimport { TrustEthersLoader } from './Trust.tsx'\n\nexport interface EthersLoaderProps {\n  children?: ReactNode\n  enabled?: boolean\n}\n\nexport const EthersLoader: React.FC<EthersLoaderProps> = (props) => {\n  const { children, enabled } = props\n  const ethereum = globalThis.ethereum\n  void enabled\n\n  if (ethereum?.isMetaMask) {\n    return <MetaMaskEthersLoader>{children}</MetaMaskEthersLoader>\n  }\n\n  if (ethereum?.isTrust) {\n    return <TrustEthersLoader>{children}</TrustEthersLoader>\n  }\n\n  if (ethereum?.isMew) {\n    return <MyEtherWalletEthersLoader>{children}</MyEtherWalletEthersLoader>\n  }\n\n  if (ethereum?.providerName === 'opera') {\n    return <OperaEthersLoader>{children}</OperaEthersLoader>\n  }\n\n  if (ethereum) {\n    return <OperaEthersLoader>{children}</OperaEthersLoader>\n  }\n\n  return <InfuraEthersLoader>{children}</InfuraEthersLoader>\n}\n", "/* eslint-disable @typescript-eslint/no-deprecated -- This hook intentionally exposes the legacy Ethers context. */\nimport { use } from 'react'\n\nimport { EthersContext } from './Context.ts'\n\nexport const useEthersContext = () => use(EthersContext)\n", "import type { EthAddressWrapper } from '@xylabs/sdk-js'\nimport { createContext } from 'react'\n\nconst NetworkSettingsContext = createContext<{\n  xyBondAddress?: EthAddressWrapper\n  xyFhrMerkleSendAddress?: EthAddressWrapper\n  xyGovernanceAddress?: EthAddressWrapper\n  xyStakingConsensusAddress?: EthAddressWrapper\n}>({})\nexport { NetworkSettingsContext }\n", "import { EthAddressWrapper } from '@xylabs/sdk-js'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { NetworkSettingsContext } from './Context.ts'\n\nexport interface NetworkSettingsLoaderProps {\n  enabled?: boolean\n}\n\nexport const NetworkSettingsLoader: React.FC<PropsWithChildren<NetworkSettingsLoaderProps>> = (props) => {\n  const { children, enabled } = props\n  void enabled\n\n  const value = useMemo(() => ({\n    xyBondAddress: EthAddressWrapper.fromString('0x1a024A698EEBdB86ccf3fCaF2F589839bdc066AD'),\n    xyFhrMerkleSendAddress: EthAddressWrapper.fromString('0x46FEEBDffC8076D9E5fd8a11CF1508810472A79f'),\n    xyGovernanceAddress: EthAddressWrapper.fromString('0x01925d0fFE4a6a6162B51ba611e3D4780Fc2dF42'),\n    xyStakingConsensusAddress: EthAddressWrapper.fromString('0x0242514106114DEaA99Fd81574142c36Edb03B6D'),\n  }), [])\n\n  return (\n    <NetworkSettingsContext\n      value={value}\n    >\n      {children}\n    </NetworkSettingsContext>\n  )\n}\n", "import { useTheme } from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { Identicon } from '@xylabs/react-identicon'\nimport type { MouseEvent } from 'react'\nimport React from 'react'\n\nimport { EthAccountBox } from './EthAccountBox.tsx'\nimport type { EthAccountProps } from './EthAccountProps.tsx'\n\nexport interface EthAccountButtonProps extends EthAccountProps {\n  toEtherScan?: boolean\n}\n\nexport const EthAccountButton: React.FC<EthAccountButtonProps & ButtonExProps> = ({\n  address,\n  full,\n  icon = false,\n  iconSize = 16,\n  iconOnly = false,\n  shortenedLength,\n  addressLength = 'auto',\n  fontFamily = '\"Source Code Pro\",monospace',\n  toEtherScan,\n  onClick,\n  ...props\n}) => {\n  const onClickLocal = (event: MouseEvent<HTMLButtonElement>) => {\n    onClick?.(event)\n    if (toEtherScan && address) {\n      window.open(`https://etherscan.io/address/${address.toString()}`, '_blank')\n    }\n  }\n\n  const theme = useTheme()\n\n  return (\n    <ButtonEx onClick={onClickLocal} title={`0x${address?.toHex()}`} {...props}>\n      {icon\n        ? (\n            <FlexRow\n              sx={{\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                bottom: 0,\n                paddingX: 0.5,\n                bgcolor: theme.vars.palette.secondary.main,\n              }}\n            >\n              <Identicon\n                size={iconSize}\n                value={address?.toHex()}\n                sx={{\n                  minHeight: theme.spacing(3),\n                  minWidth: theme.spacing(3),\n                  bgcolor: theme.vars.palette.secondary.main,\n                }}\n              />\n            </FlexRow>\n          )\n        : null}\n      <EthAccountBox\n        address={address}\n        addressLength={addressLength}\n        shortenedLength={shortenedLength}\n        full={full}\n        iconSize={iconSize}\n        iconOnly={iconOnly}\n        sx={{\n          marginLeft: icon ? 3 : 0,\n          fontFamily: fontFamily,\n        }}\n      />\n    </ButtonEx>\n  )\n}\n\n/** @deprecated use EthAccountButton or EthAccountBox */\nexport const EthAccount = EthAccountButton\n", "import {\n  Box, Link, Typography,\n} from '@mui/material'\nimport { isNumber } from '@xylabs/sdk-js'\nimport React from 'react'\n\ninterface EthAccountProps {\n  block?: number\n}\n\nconst EthBlock: React.FC<EthAccountProps> = (props: EthAccountProps) => {\n  const { block } = props\n  return isNumber(block)\n    ? (\n        <Box\n          sx={{\n            alignItems: 'center',\n            display: 'flex',\n            flexGrow: 1,\n            justifyContent: 'center',\n            paddingX: 1,\n          }}\n        >\n          <Link href={`https://etherscan.io/block/${block}`} target=\"_blank\" title={`Ethereum Block #${block}`}>\n            <Typography variant=\"caption\">{block}</Typography>\n          </Link>\n        </Box>\n      )\n    : <Box />\n}\n\nexport { EthBlock }\n", "import { OpenInNewOutlined } from '@mui/icons-material'\nimport {\n  Alert, AlertTitle, Button, List, ListItem, Typography,\n} from '@mui/material'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { EthAddressWrapper, forget } from '@xylabs/sdk-js'\nimport type { BrowserProvider } from 'ethers'\nimport React, { useMemo, useState } from 'react'\n\nimport type { EthWallet } from '../../wallets/index.ts'\n\nexport interface EthWalletSBComponentProps extends EthWallet {\n  noIFrames?: boolean\n}\n\nexport const EthWalletSBComponent: React.FC<EthWalletSBComponentProps> = ({\n  connectWallet,\n  connectRefused,\n  chainId,\n  connectError,\n  installed,\n  currentAccount,\n  noIFrames,\n  provider,\n  providerName,\n  signMessage,\n  signer,\n  signerAddress,\n}) => {\n  const [signResponse, setSignResponse] = useState<EthAddressWrapper>()\n  const [previousProvider, setPreviousProvider] = useState<BrowserProvider>()\n\n  if (provider && provider !== previousProvider) {\n    setPreviousProvider(provider)\n    setSignResponse(undefined)\n  }\n\n  const onSign = () =>\n    forget(\n      (async () => {\n        const signResult = await signMessage?.('test')\n        setSignResponse(EthAddressWrapper.fromString(signResult))\n      })(),\n    )\n\n  const localAddress = useMemo(() => currentAccount?.toString(), [currentAccount])\n  return (\n    <FlexCol\n      sx={{\n        alignItems: 'start',\n        gap: 2,\n      }}\n    >\n      {noIFrames && globalThis.parent !== (globalThis as unknown as Window)\n        ? (\n            <Alert severity=\"warning\">\n              <AlertTitle>Must test outside of iframe</AlertTitle>\n              The\n              {' '}\n              {providerName}\n              {' '}\n              wallet does not allow the the permissions for to work from a nested iframe. Look for the\n              {' '}\n              <OpenInNewOutlined />\n              {' '}\n              icon in\n              the upper right.\n            </Alert>\n          )\n        : null}\n      <FlexCol\n        sx={{\n          alignItems: 'start',\n          gap: 2,\n        }}\n      >\n        {globalThis.ethereum\n          ? <Alert>Found window.ethereum</Alert>\n          : null}\n        <FlexRow\n          sx={{\n            justifyContent: 'start',\n            gap: 2,\n          }}\n        >\n          <Button variant=\"contained\" onClick={() => forget(connectWallet?.() ?? Promise.resolve([]))}>\n            Connect\n          </Button>\n          <Button disabled={!currentAccount} variant=\"contained\" onClick={onSign}>\n            Sign\n          </Button>\n        </FlexRow>\n        {signResponse\n          ? (\n              <Alert severity=\"success\">\n                <AlertTitle>Sign Response</AlertTitle>\n                {signResponse.toShortString()}\n              </Alert>\n            )\n          : null}\n        <Typography variant=\"h6\" sx={{ mb: 0 }}>\n          Provider Details\n        </Typography>\n        <List sx={{ py: 0 }}>\n          <ListItem>\n            Installed:\n            {JSON.stringify(installed)}\n          </ListItem>\n          <ListItem>\n            Chain Id:\n            {chainId}\n          </ListItem>\n          <ListItem>\n            Local Address:\n            {localAddress?.toString()}\n          </ListItem>\n          <ListItem>\n            ProviderName:\n            {providerName}\n          </ListItem>\n          <ListItem>\n            Provider:\n            {JSON.stringify(!!provider)}\n          </ListItem>\n          <ListItem>\n            Signer:\n            {JSON.stringify(!!signer)}\n          </ListItem>\n          <ListItem>\n            Signer Address:\n            {signerAddress?.toShortString()}\n          </ListItem>\n          <ListItem>\n            Connection Refused:\n            {JSON.stringify(connectRefused)}\n          </ListItem>\n          <ListItem>\n            Error:\n            {connectError?.message ?? connectError?.message}\n          </ListItem>\n        </List>\n      </FlexCol>\n    </FlexCol>\n  )\n}\n", "import { Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport {\n  assertEx, isBigInt, isString,\n} from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { XyoLogoIconSvg } from './img/index.ts'\nimport type { TokenAmountProps } from './TokenAmountProps.tsx'\n\nconst placesSplit = (value: bigint, places: number): [bigint, bigint] => {\n  assertEx(places >= 0, () => 'Places has to be >= 0')\n  const factor = BigInt(10 ** Math.abs(places))\n  const remainder = value % factor\n  const wholeValue = value / factor\n  return [wholeValue, remainder]\n}\n\nconst placesSplitString = (value: bigint, places: number): string => {\n  const [wholeValue, remainder] = placesSplit(value, places)\n  return `${wholeValue}.${remainder.toString().padStart(Math.abs(places), '0')}`\n}\n\nexport const TokenAmount: React.FC<TokenAmountProps> = ({\n  textFontFamily = '\"Source Code Pro\",monospace',\n  textColor,\n  statusColor,\n  style,\n  amount,\n  places = 18,\n  logo,\n  label,\n  onButtonClick,\n  ...props\n}) => {\n  const amountString = isBigInt(amount) ? placesSplitString(amount, places) : '-'\n\n  return (\n    <ButtonEx\n      style={{ backgroundColor: statusColor, ...style }}\n      variant=\"outlined\"\n      onClick={onButtonClick}\n      {...props}\n    >\n      <FlexRow\n        busy={amount === undefined}\n        busySize={16}\n        sx={{\n          justifyContent: 'space-between',\n          width: '100%',\n        }}\n      >\n        <FlexRow>\n          {logo\n            ? <img src={XyoLogoIconSvg} height={24} />\n            : null}\n          {isString(label)\n            ? (\n                <Typography\n                  noWrap\n                  variant=\"caption\"\n                  sx={{\n                    marginRight: 1,\n                    marginLeft: logo ? 1 : 0,\n                    fontFamily: textFontFamily,\n                  }}\n                >\n                  {label}\n                </Typography>\n              )\n            : null}\n        </FlexRow>\n        <Typography\n          color={textColor}\n          noWrap\n          variant=\"body1\"\n          style={{ textTransform: 'none' }}\n          sx={{ fontFamily: textFontFamily }}\n        >\n          {amountString}\n        </Typography>\n      </FlexRow>\n    </ButtonEx>\n  )\n}\n", "<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\"><defs><style>.cls-1{fill:#999;}</style></defs><title>icon_gray</title><path class=\"cls-1\" d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"/><path class=\"cls-1\" d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"/><path class=\"cls-1\" d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"/><path class=\"cls-1\" d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"/></svg>", "/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon, SvgIcon } from '@mui/material'\nimport React from 'react'\n\nconst XL1ColorLogoSvgIcon = createSvgIcon(\n  <svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\">\n    <path d=\"M154.71,97c.46,2.59,2.5,4.62,5.1,5.05l14.05,2.34,31.71-46.17c4.57-6.65-3.62-14.62-10.14-9.87l-43.68,31.83,2.97,16.82Z\" style={{ fill: '#8d8fc6' }} />\n    <path d=\"M173.86,151.62l-14.05,2.34c-2.6.43-4.64,2.45-5.1,5.05l-2.97,16.82,43.68,31.83c6.52,4.75,14.71-3.21,10.14-9.87l-31.71-46.17Z\" style={{ fill: '#eb407a' }} />\n    <path d=\"M82.14,104.38l14.05-2.34c2.6-.43,4.64-2.45,5.1-5.05l2.97-16.82-43.68-31.83c-6.52-4.75-14.71,3.21-10.14,9.87l31.71,46.17Z\" style={{ fill: '#579fd6' }} />\n    <path d=\"M101.29,159c-.46-2.59-2.5-4.62-5.1-5.05l-14.05-2.34-31.71,46.17c-4.57,6.65,3.62,14.62,10.14,9.87l43.68-31.83-2.97-16.82Z\" style={{ fill: '#f27046' }} />\n    <path d=\"M107.33,104l15.94-90.32c.93-5.3,8.53-5.3,9.47,0l15.94,90.32c.35,2.01,1.94,3.57,3.95,3.91l92.24,15.35c5.36.89,5.36,8.59,0,9.49l-92.24,15.35c-2.01.33-3.59,1.9-3.95,3.91l-15.94,90.32c-.93,5.3-8.53,5.3-9.47,0l-15.94-90.32c-.35-2.01-1.94-3.57-3.95-3.91l-92.24-15.35c-5.36-.89-5.36-8.59,0-9.49l92.24-15.35c2.01-.33,3.59-1.9,3.95-3.91Z\" style={{ fill: '#572aff' }} />\n  </svg>,\n  'XL1ColorLogoSvgIcon',\n)\n\nexport const XL1ColorLogoIcon = (props: React.ComponentProps<typeof SvgIcon>) => {\n  return (\n    <SvgIcon\n      viewBox=\"0 0 256 256\"\n      {...props}\n    >\n      <XL1ColorLogoSvgIcon />\n    </SvgIcon>\n  )\n}\n", "/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon, SvgIcon } from '@mui/material'\nimport React from 'react'\n\nconst XYOColorLogoSvgIcon = createSvgIcon(\n  <svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\">\n    <title>icon_colored</title>\n    <path fill=\"#8d8fc6\" d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\" />\n    <path fill=\"#579fd6\" d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\" />\n    <path fill=\"#f27046\" d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\" />\n    <path fill=\"#eb407a\" d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\" />\n  </svg>,\n  'XL1ColorLogoSvgIcon',\n)\n\nexport const XYOColorLogoIcon = (props: React.ComponentProps<typeof SvgIcon>) => {\n  return (\n    <SvgIcon\n      viewBox=\"0 0 256 256\"\n      {...props}\n    >\n      <XYOColorLogoSvgIcon />\n    </SvgIcon>\n  )\n}\n", "<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\"><path d=\"M154.71,97c.46,2.59,2.5,4.62,5.1,5.05l14.05,2.34,31.71-46.17c4.57-6.65-3.62-14.62-10.14-9.87l-43.68,31.83,2.97,16.82Z\" style=\"fill:#8d8fc6;\"/><path d=\"M173.86,151.62l-14.05,2.34c-2.6.43-4.64,2.45-5.1,5.05l-2.97,16.82,43.68,31.83c6.52,4.75,14.71-3.21,10.14-9.87l-31.71-46.17Z\" style=\"fill:#eb407a;\"/><path d=\"M82.14,104.38l14.05-2.34c2.6-.43,4.64-2.45,5.1-5.05l2.97-16.82-43.68-31.83c-6.52-4.75-14.71,3.21-10.14,9.87l31.71,46.17Z\" style=\"fill:#579fd6;\"/><path d=\"M101.29,159c-.46-2.59-2.5-4.62-5.1-5.05l-14.05-2.34-31.71,46.17c-4.57,6.65,3.62,14.62,10.14,9.87l43.68-31.83-2.97-16.82Z\" style=\"fill:#f27046;\"/><path d=\"M107.33,104l15.94-90.32c.93-5.3,8.53-5.3,9.47,0l15.94,90.32c.35,2.01,1.94,3.57,3.95,3.91l92.24,15.35c5.36.89,5.36,8.59,0,9.49l-92.24,15.35c-2.01.33-3.59,1.9-3.95,3.91l-15.94,90.32c-.93,5.3-8.53,5.3-9.47,0l-15.94-90.32c-.35-2.01-1.94-3.57-3.95-3.91l-92.24-15.35c-5.36-.89-5.36-8.59,0-9.49l92.24-15.35c2.01-.33,3.59-1.9,3.95-3.91Z\" style=\"fill:#572aff;\"/></svg>", "<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><title>icon_colored</title><path class=\"cls-1\" d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"/><path class=\"cls-2\" d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"/><path class=\"cls-3\" d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"/><path class=\"cls-4\" d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"/></svg>", "export { default as XL1ColorLogoIconSvg } from './XL1_Logo_Icon_Mainnet.svg'\nexport { default as XYOColorLogoIconSvg } from './XYO_Logo_Icon.svg'\n\nimport XL1ColorLogoIconSvg from './XL1_Logo_Icon_Mainnet.svg'\nimport XYOColorLogoIconSvg from './XYO_Logo_Icon.svg'\n\nexport const formatSvgAsDataUrl = (svgString: string): string => {\n  const base64ImagePrefix = 'data:image/svg+xml;utf8,'\n  return typeof svgString === 'string' && svgString.trim().startsWith('<svg')\n    ? `${base64ImagePrefix}${encodeURIComponent(svgString)}`\n    : svgString\n}\n\n// Convert SVG string to data URL if needed\nexport const imgXYOLogoSrcDataUrl = formatSvgAsDataUrl(XYOColorLogoIconSvg)\nexport const imgXL1LogoSrcDataUrl = formatSvgAsDataUrl(XL1ColorLogoIconSvg)\n", "import type { StackProps, TypographyProps } from '@mui/material'\nimport { Stack, Typography } from '@mui/material'\nimport { isUndefinedOrNull } from '@xylabs/sdk-js'\nimport type { PropsWithChildren, ReactNode } from 'react'\nimport React from 'react'\n\nimport { imgXL1LogoSrcDataUrl, imgXYOLogoSrcDataUrl } from './img/index.ts'\nimport type { TokenAvatarProps } from './TokenAvatar.tsx'\nimport { TokenAvatar } from './TokenAvatar.tsx'\n\nexport type StandardTokenRowProps = PropsWithChildren<{\n  currency: 'xyo' | 'xl1' | null\n  customSymbol?: string\n  symbolOverride?: ReactNode\n  textVariant?: TypographyProps['variant']\n  textWeight?: React.CSSProperties['fontWeight']\n  tokenAvatarProps?: TokenAvatarProps\n  value: ReactNode\n  valueOverride?: ReactNode\n} & StackProps>\n\nexport const StandardTokenRow: React.FC<StandardTokenRowProps> = ({\n  currency,\n  customSymbol,\n  value,\n  textVariant,\n  textWeight = 300,\n  children,\n  tokenAvatarProps,\n  valueOverride,\n  symbolOverride,\n  ...stackProps\n}) => {\n  const { sx } = stackProps\n  return (\n    <Stack\n      direction=\"row\"\n      spacing={0.5}\n      {...stackProps}\n      sx={{ alignItems: 'center', ...sx }}\n    >\n      {currency === 'xyo'\n        ? (\n            <TokenAvatar\n              imgAlt=\"xyo-token-logo\"\n              imgSrc={imgXYOLogoSrcDataUrl}\n              {...tokenAvatarProps}\n            />\n          )\n        : (\n            <TokenAvatar\n              imgAlt=\"xl1-token-logo\"\n              imgSrc={imgXL1LogoSrcDataUrl}\n              {...tokenAvatarProps}\n            />\n          )}\n      {valueOverride ?? (\n        <Typography\n          variant={isUndefinedOrNull(textVariant) ? 'body1' : textVariant}\n          sx={{\n            fontWeight: textWeight,\n            lineHeight: 1,\n          }}\n        >\n          {value}\n        </Typography>\n      )}\n      {symbolOverride ?? (\n        <Typography\n          variant={isUndefinedOrNull(textVariant) ? 'body1' : textVariant}\n          color=\"textSecondary\"\n          sx={{\n            fontWeight: textWeight,\n            lineHeight: 1,\n            textTransform: 'uppercase',\n          }}\n        >\n          {customSymbol ?? currency}\n        </Typography>\n      )}\n      {children}\n    </Stack>\n  )\n}\n", "import {\n  Avatar, type AvatarProps, type TypographyProps, useTheme,\n} from '@mui/material'\nimport type { ImgHTMLAttributes } from 'react'\nimport React from 'react'\n\ntype Variant = NonNullable<TypographyProps['variant']>\n\nexport interface TokenAvatarProps extends AvatarProps {\n  imgAlt?: ImgHTMLAttributes<HTMLImageElement>['alt']\n  imgSrc?: ImgHTMLAttributes<HTMLImageElement>['src']\n  scale?: number\n  typographyVariant?: Variant\n}\n\nexport const TokenAvatar: React.FC<TokenAvatarProps> = ({\n  imgSrc,\n  imgAlt,\n  scale = 1.6,\n  sx,\n  typographyVariant = 'inherit',\n  ...props\n}) => {\n  const theme = useTheme()\n  const v = typographyVariant === 'inherit' ? 'body1' : typographyVariant\n  const typ = theme.typography[v] as { fontSize?: number | string }\n  const base = typeof typ?.fontSize === 'number'\n    ? typ.fontSize\n    : typeof typ?.fontSize === 'string' && typ.fontSize.endsWith('rem')\n      ? Number.parseFloat(typ.fontSize) * (theme.typography.htmlFontSize ?? 16)\n      : typeof typ?.fontSize === 'string'\n        ? Number.parseFloat(typ.fontSize)\n        : 16\n  const size = Math.max(0, Math.round(base * scale))\n\n  return (\n    <Avatar\n      alt={imgAlt}\n      src={imgSrc}\n      sx={{\n        width: size, height: size, ...sx,\n      }}\n      {...props}\n    />\n  )\n}\n"],
  "mappings": "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",
  "names": ["Typography", "useTheme", "FlexRow", "assertEx", "EthAddressWrapper", "use", "InfuraProvider", "useMemo", "useMemo", "provider", "InfuraProvider", "providerName", "useMemo", "forget", "types", "forget", "isString", "isDefined", "isString", "isDefined", "useMemo", "useSyncExternalStore", "useMemo", "isDefined", "useMemo", "useSyncExternalStore", "useMemo", "useMemo", "usePromise", "EthAddressWrapper", "isDefined", "useMemo", "isDefined", "useMemo", "useMemo", "isDefined", "usePromise", "EthAddressWrapper", "useMemo", "useMemo", "isDefined", "isString", "useMemo", "useState", "useMemo", "jsx", "jsx", "jsx", "jsx", "useMemo", "useState", "useState", "jsx", "jsxs", "Alert", "styled", "FlexCol", "isDefined", "useMemo", "jsx", "jsxs", "types", "values", "jsx", "jsx", "jsxs", "useMemo", "useState", "mainnet", "sepolia", "forget", "BrowserProvider", "BrowserProvider", "forget", "forget", "BrowserProvider", "PROVIDER_NAME", "BrowserProvider", "forget", "forget", "BrowserProvider", "PROVIDER_NAME", "BrowserProvider", "forget", "forget", "BrowserProvider", "BrowserProvider", "forget", "jsx", "useMemo", "EthAddressWrapper", "BrowserProvider", "InfuraProvider", "useCallback", "useMemo", "useState", "jsx", "useState", "useCallback", "walletProvider", "BrowserProvider", "provider", "providerName", "InfuraProvider", "signer", "EthAddressWrapper", "localAddress", "chainId", "useMemo", "useAsyncEffect", "EthAddressWrapper", "BrowserProvider", "useMemo", "useState", "jsx", "useState", "EthAddressWrapper", "useAsyncEffect", "BrowserProvider", "provider", "signer", "localAddress", "useMemo", "useAsyncEffect", "EthAddressWrapper", "BrowserProvider", "useMemo", "useState", "jsx", "useState", "useMemo", "BrowserProvider", "useAsyncEffect", "EthAddressWrapper", "localAddress", "jsx", "createContext", "EthAddressWrapper", "useMemo", "jsx", "useMemo", "EthAddressWrapper", "jsx", "jsxs", "use", "useTheme", "assertEx", "EthAddressWrapper", "FlexRow", "Typography", "useTheme", "FlexRow", "Identicon", "jsx", "jsxs", "useTheme", "FlexRow", "Identicon", "Typography", "jsx", "Alert", "AlertTitle", "Button", "Typography", "FlexCol", "FlexRow", "EthAddressWrapper", "forget", "useMemo", "useState", "jsx", "jsxs", "Typography", "ButtonEx", "FlexRow", "assertEx", "isString", "jsx", "jsxs", "assertEx", "ButtonEx", "FlexRow", "isString", "Typography", "jsx", "jsxs", "createSvgIcon", "SvgIcon", "jsx", "jsxs", "Typography", "useTheme", "jsx", "base", "jsx", "jsxs", "Typography"]
}
