From 52aa1d9e77f3364baf0730848429acbba24851ad Mon Sep 17 00:00:00 2001 From: Polybius93 Date: Mon, 23 Dec 2024 16:43:00 +0100 Subject: [PATCH] feat: add garden swap functionality and ui components --- package.json | 8 +- public/images/gear-icon.svg | 4 + public/images/swap-arrow.svg | 3 + src/app/app.tsx | 79 +- src/app/components/header/components/tabs.tsx | 5 + .../swap/components/swap-amount-card.tsx | 96 + .../swap/components/swap-button.tsx | 21 + .../components/swap-extra-details-card.tsx | 47 + .../swap/components/swap-header.tsx | 17 + .../swap/components/swap-networks-menu.tsx | 77 + .../swap/components/swap-settings-menu.tsx | 31 + .../swap/components/swap-token-label.tsx | 25 + .../components/swap.orderbook.copy-button.tsx | 61 + .../swap.orderbook.order.asset-value.tsx | 20 + .../swap.orderbook.order.details.field.tsx | 33 + .../swap.orderbook.order.details.tsx | 43 + .../swap.orderbook.order.tsx | 170 + .../swap.orderbook.orderlist.tsx | 39 + .../swap.orderbook/swap.orderbook.tsx | 30 + src/app/components/swap/pages/swap-page.tsx | 18 + src/app/components/swap/swap.tsx | 179 + src/app/functions/configuration.functions.ts | 5 +- src/app/hooks/use-swap-order-status.ts | 85 + src/app/hooks/use-swap.ts | 262 ++ src/shared/constants/swap.constants.ts | 6 + src/styles/app-theme.ts | 1 + updates.patch | 3492 +++++++++++++++++ vite.config.ts | 1 + yarn.lock | 1064 +++-- 29 files changed, 5594 insertions(+), 328 deletions(-) create mode 100644 public/images/gear-icon.svg create mode 100644 public/images/swap-arrow.svg create mode 100644 src/app/components/swap/components/swap-amount-card.tsx create mode 100644 src/app/components/swap/components/swap-button.tsx create mode 100644 src/app/components/swap/components/swap-extra-details-card.tsx create mode 100644 src/app/components/swap/components/swap-header.tsx create mode 100644 src/app/components/swap/components/swap-networks-menu.tsx create mode 100644 src/app/components/swap/components/swap-settings-menu.tsx create mode 100644 src/app/components/swap/components/swap-token-label.tsx create mode 100644 src/app/components/swap/components/swap.orderbook/components/swap.orderbook.copy-button.tsx create mode 100644 src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.asset-value.tsx create mode 100644 src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/components/swap.orderbook.order.details.field.tsx create mode 100644 src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/swap.orderbook.order.details.tsx create mode 100644 src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/swap.orderbook.order.tsx create mode 100644 src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/swap.orderbook.orderlist.tsx create mode 100644 src/app/components/swap/components/swap.orderbook/swap.orderbook.tsx create mode 100644 src/app/components/swap/pages/swap-page.tsx create mode 100644 src/app/components/swap/swap.tsx create mode 100644 src/app/hooks/use-swap-order-status.ts create mode 100644 src/app/hooks/use-swap.ts create mode 100644 src/shared/constants/swap.constants.ts create mode 100644 updates.patch diff --git a/package.json b/package.json index 9e7e5305..3e8d6000 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,9 @@ "@fontsource/inter": "^5.0.18", "@fontsource/onest": "^5.0.3", "@fontsource/poppins": "^5.0.8", + "@gardenfi/core": "0.3.0-beta.14", + "@gardenfi/orderbook": "0.2.0-beta.41", + "@gardenfi/react-hooks": "0.0.1-beta.135", "@gemwallet/api": "^3.8.0", "@ledgerhq/hw-app-xrp": "^6.29.4", "@ledgerhq/hw-transport-webusb": "^6.28.6", @@ -41,12 +44,13 @@ "@types/chrome": "^0.0.248", "@types/d3": "^7.4.3", "@types/ramda": "^0.30.1", + "@wagmi/core": "^2.16.1", "apexcharts": "^3.49.1", "buffer": "^6.0.3", "concurrently": "^8.2.2", "d3": "^7.9.0", "decimal.js": "^10.4.3", - "dlc-btc-lib": "2.5.1", + "dlc-btc-lib": "2.5.3", "dotenv": "^16.3.1", "ethers": "5.7.2", "formik": "^2.4.5", @@ -66,7 +70,7 @@ "redux-persist-expire": "^1.1.1", "viem": "2.x", "vite-plugin-toml": "^0.7.0", - "wagmi": "^2.12.2", + "wagmi": "2.14.4", "xrpl": "^4.0.0" }, "devDependencies": { diff --git a/public/images/gear-icon.svg b/public/images/gear-icon.svg new file mode 100644 index 00000000..51c3eeb1 --- /dev/null +++ b/public/images/gear-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/swap-arrow.svg b/public/images/swap-arrow.svg new file mode 100644 index 00000000..799bfe41 --- /dev/null +++ b/public/images/swap-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/app/app.tsx b/src/app/app.tsx index f3cc5404..099cd7e5 100644 --- a/src/app/app.tsx +++ b/src/app/app.tsx @@ -2,7 +2,9 @@ import { Route } from 'react-router-dom'; import { AppLayout } from '@components/app.layout'; import { MerchantDetails } from '@components/proof-of-reserve/components/merchant-details/merchant-details'; +import { SwapPage } from '@components/swap/pages/swap-page'; import { getWagmiConfiguration } from '@functions/configuration.functions'; +import { GardenProvider, environment } from '@gardenfi/react-hooks'; import { AttestorDetailsPage } from '@pages/attestor-details/attestor-details-page'; import { AttestorDetailsSelectPage } from '@pages/attestor-details/attestor-details-select-page'; import { MyVaults } from '@pages/my-vaults/my-vaults'; @@ -31,39 +33,50 @@ export function App(): React.JSX.Element { return ( - - - - - - - - - - - - } /> - } /> - {/* } /> */} - } /> - } /> - } - /> - } /> - } /> - - - - - - - - - - - + + + + + + + + + + + + + } /> + } /> + {/* } /> */} + } /> + } /> + } + /> + } + /> + } /> + } /> + + + + + + + + + + + + ); diff --git a/src/app/components/header/components/tabs.tsx b/src/app/components/header/components/tabs.tsx index 8e7ab180..7507add6 100644 --- a/src/app/components/header/components/tabs.tsx +++ b/src/app/components/header/components/tabs.tsx @@ -30,6 +30,11 @@ export function NavigationTabs({ isActive={activeTab === '/how-it-works'} handleClick={() => handleTabClick('/how-it-works')} /> */} + handleTabClick('/swap')} + /> {isActiveTabs && ( <> diff --git a/src/app/components/swap/components/swap-amount-card.tsx b/src/app/components/swap/components/swap-amount-card.tsx new file mode 100644 index 00000000..c6164fc8 --- /dev/null +++ b/src/app/components/swap/components/swap-amount-card.tsx @@ -0,0 +1,96 @@ +import { HStack, Input, Text, VStack } from '@chakra-ui/react'; +import { Asset } from '@gardenfi/orderbook'; + +import { SwapTokenLabel } from './swap-token-label'; + +interface SwapAmountCardProps { + direction: string; + asset: Asset; + amount?: string; + amountInUSD?: string; + setAmount?: (amount: string) => void; + balance?: number; + transactionGasFee?: number; +} + +const assetDetails = { + iBTC: { + assetColor: 'purple.01', + assetSymbol: 'iBTC', + assetLogo: '/images/logos/ibtc-logo.svg', + }, + BTC: { + assetColor: 'orange.01', + assetSymbol: 'BTC', + assetLogo: '/images/logos/bitcoin-logo.svg', + }, +}; + +export function SwapAmountCard({ + direction, + amount, + asset, + amountInUSD, + setAmount, +}: SwapAmountCardProps): React.JSX.Element | null { + const isBTC = asset.symbol === 'BTC'; + const { assetColor, assetSymbol, assetLogo } = assetDetails[isBTC ? 'BTC' : 'iBTC']; + + return ( + + + {direction} + + + + {direction === 'From' ? ( + setAmount?.(e.target.value)} + borderColor={'white.01'} + color={'white.01'} + focusBorderColor={'rgba(50, 201, 247, 1)'} // accent.lightBlue.01 + /> + ) : ( + + {amount} + + )} + + + + + {amountInUSD} USD + + + + + ); +} diff --git a/src/app/components/swap/components/swap-button.tsx b/src/app/components/swap/components/swap-button.tsx new file mode 100644 index 00000000..8a09bda4 --- /dev/null +++ b/src/app/components/swap/components/swap-button.tsx @@ -0,0 +1,21 @@ +import React from 'react'; + +import { Button } from '@chakra-ui/react'; + +interface SwapButtonProps { + isDisabled?: boolean; + onClick: () => void; +} + +export function SwapButton({ onClick, isDisabled }: SwapButtonProps): React.JSX.Element { + return ( + + ); +} diff --git a/src/app/components/swap/components/swap-extra-details-card.tsx b/src/app/components/swap/components/swap-extra-details-card.tsx new file mode 100644 index 00000000..03fbd7cd --- /dev/null +++ b/src/app/components/swap/components/swap-extra-details-card.tsx @@ -0,0 +1,47 @@ +// import { HStack, Text, VStack } from '@chakra-ui/react'; + +// interface SwapExtraDetailsCardProps { +// gasFee: number; +// } + +// export function SwapExtraDetailsCard({ gasFee }: SwapExtraDetailsCardProps): React.JSX.Element { +// return ( +// +// +// +// Gas Fee +// +// +// {gasFee} +// +// +// +// +// Rate +// +// +// 1 BTC = 1 dlcBTC +// +// +// +// +// Slippage Tolerance +// +// +// Auto +// +// +// +// ); +// } + +// TODO: Add back this component diff --git a/src/app/components/swap/components/swap-header.tsx b/src/app/components/swap/components/swap-header.tsx new file mode 100644 index 00000000..afa0820d --- /dev/null +++ b/src/app/components/swap/components/swap-header.tsx @@ -0,0 +1,17 @@ +import { HStack, Text } from '@chakra-ui/react'; + +// import { SwapNetworksMenu } from './swap-networks-menu'; + +export function SwapHeader(): React.JSX.Element { + return ( + + + Swap + + + {/* {}} /> */} + {/* {}} /> */} + + + ); +} diff --git a/src/app/components/swap/components/swap-networks-menu.tsx b/src/app/components/swap/components/swap-networks-menu.tsx new file mode 100644 index 00000000..7577473c --- /dev/null +++ b/src/app/components/swap/components/swap-networks-menu.tsx @@ -0,0 +1,77 @@ +// import { Image, Menu, MenuButton, MenuItem, MenuList } from '@chakra-ui/react'; +// import { EthereumNetworkID } from 'dlc-btc-lib/models'; +// import { useAccount, useConfig, useSwitchChain } from 'wagmi'; + +// interface SwapNetworksMenuProps { +// isMenuOpen: boolean; +// setIsMenuOpen: (isMenuOpen: boolean) => void; +// } + +// const getNetworkLogo = (ethereumNetworkId?: EthereumNetworkID) => { +// switch (ethereumNetworkId) { +// case EthereumNetworkID.Arbitrum: +// case EthereumNetworkID.ArbitrumSepolia: +// return './images/logos/arbitrum-token.svg'; +// case EthereumNetworkID.Sepolia: +// case EthereumNetworkID.Mainnet: +// return './images/logos/eth-token.svg'; +// case EthereumNetworkID.BaseSepolia: +// case EthereumNetworkID.Base: +// return './images/logos/base-token.svg'; +// default: +// return './images/logos/arbitrum-token.svg'; +// } +// }; + +// export function SwapNetworksMenu({ +// isMenuOpen, +// setIsMenuOpen, +// }: SwapNetworksMenuProps): React.JSX.Element | null { +// const { chains } = useConfig(); +// const { chain, isConnected } = useAccount(); +// const { switchChain } = useSwitchChain(); +// //TODO: maybe add the network logo to the setstate? + +// if (!isConnected) { +// return null; +// } + +// return ( +// +// setIsMenuOpen(!isMenuOpen)} +// h={'50px'} +// w={'50px'} +// bg={'background.content.02'} +// border={'none'} +// boxShadow={'2px 2px 4px rgba(0, 0, 0, 0.5)'} +// > +// {'Selected +// +// +// {chains.map(ethereumNetwork => { +// return ( +// { +// switchChain({ chainId: ethereumNetwork.id }); +// setIsMenuOpen(!isMenuOpen); +// getNetworkLogo(chain?.id.toString() as EthereumNetworkID); +// }} +// > +// {ethereumNetwork.name} +// +// ); +// })} +// +// +// ); +// } + +// TODO: Add back this component diff --git a/src/app/components/swap/components/swap-settings-menu.tsx b/src/app/components/swap/components/swap-settings-menu.tsx new file mode 100644 index 00000000..0ac41e30 --- /dev/null +++ b/src/app/components/swap/components/swap-settings-menu.tsx @@ -0,0 +1,31 @@ +// import { Image, Menu, MenuButton, MenuItem, MenuList } from '@chakra-ui/react'; + +// interface SwapSettingsMenuProps { +// isMenuOpen: boolean; +// setIsMenuOpen: (isMenuOpen: boolean) => void; +// } + +// export function SwapSettingsMenu({ +// isMenuOpen, +// setIsMenuOpen, +// }: SwapSettingsMenuProps): React.JSX.Element { +// return ( +// +// setIsMenuOpen(!isMenuOpen)} +// h={'50px'} +// w={'50px'} +// bg={'background.content.02'} +// border={'none'} +// boxShadow={'2px 2px 4px rgba(0, 0, 0, 0.5)'} +// > +// {'Gear +// +// +// Profile Settings +// +// +// ); +// } + +// TODO: Add back this component diff --git a/src/app/components/swap/components/swap-token-label.tsx b/src/app/components/swap/components/swap-token-label.tsx new file mode 100644 index 00000000..8fc058ad --- /dev/null +++ b/src/app/components/swap/components/swap-token-label.tsx @@ -0,0 +1,25 @@ +import { HStack, Image, Text } from '@chakra-ui/react'; + +interface SwapTokenLabelProps { + tokenImage: string; + tokenDisplay: string; +} + +export function SwapTokenLabel({ + tokenImage, + tokenDisplay, +}: SwapTokenLabelProps): React.JSX.Element { + return ( + + {tokenDisplay} + + {tokenDisplay} + + + ); +} diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.copy-button.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.copy-button.tsx new file mode 100644 index 00000000..d1ad84c6 --- /dev/null +++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.copy-button.tsx @@ -0,0 +1,61 @@ +import { useState } from 'react'; + +import { CheckCircleIcon, CopyIcon } from '@chakra-ui/icons'; +import { HStack, IconButton, PlacementWithLogical, Tooltip } from '@chakra-ui/react'; + +interface CopyButtonProps { + textToCopy: string; + placement?: PlacementWithLogical; +} + +export function CopyButton({ textToCopy, placement = 'left' }: CopyButtonProps): React.JSX.Element { + const [copied, setCopied] = useState(false); + + const handleCopy = async () => { + try { + await navigator.clipboard.writeText(textToCopy); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } catch (error: any) { + // eslint-disable-next-line no-console + console.error('Failed to copy to Clipboard', error); + } + }; + + return ( + + + + ) : ( + + ) + } + /> + + + ); +} diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.asset-value.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.asset-value.tsx new file mode 100644 index 00000000..8cedca4d --- /dev/null +++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.asset-value.tsx @@ -0,0 +1,20 @@ +import { Text, VStack } from '@chakra-ui/react'; + +interface AssetValueProps { + label: string; + amount: string; + asset: string; +} + +export function OrderAmount({ label, amount, asset }: AssetValueProps): React.JSX.Element { + return ( + + + {label} + + + {amount} {asset} + + + ); +} diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/components/swap.orderbook.order.details.field.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/components/swap.orderbook.order.details.field.tsx new file mode 100644 index 00000000..77278d28 --- /dev/null +++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/components/swap.orderbook.order.details.field.tsx @@ -0,0 +1,33 @@ +// components/TransactionField.tsx +import { HStack, Text } from '@chakra-ui/react'; +import { truncateAddress } from 'dlc-btc-lib/utilities'; + +import { CopyButton } from '../../../../../../swap.orderbook.copy-button'; + +interface DetailsFieldProps { + label: string; + value: string; + shouldTruncate?: boolean; + includeCopyButton?: boolean; +} + +export function DetailsField({ + label, + value, + shouldTruncate = true, + includeCopyButton = true, +}: DetailsFieldProps): React.JSX.Element { + return ( + + + {label} + + + + {shouldTruncate ? truncateAddress(value) : value} + + {includeCopyButton && } + + + ); +} diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/swap.orderbook.order.details.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/swap.orderbook.order.details.tsx new file mode 100644 index 00000000..d49f70a8 --- /dev/null +++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/swap.orderbook.order.details.tsx @@ -0,0 +1,43 @@ +import { VStack } from '@chakra-ui/react'; +import { MatchedOrder } from '@gardenfi/orderbook'; + +import { DetailsField } from './components/swap.orderbook.order.details.field'; + +interface OrderDetailsProps { + order: MatchedOrder; +} + +export function OrderDetails({ order }: OrderDetailsProps): React.JSX.Element { + const { + destination_swap: { redeemer: to, redeem_tx_hash }, + created_at, + source_swap: { initiator: from, initiate_tx_hash, refund_tx_hash }, + } = order; + + const creationDate = new Date(created_at).toLocaleDateString('en-US'); + + return ( + + + + + {initiate_tx_hash && } + {redeem_tx_hash && } + {refund_tx_hash && } + + ); +} diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/swap.orderbook.order.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/swap.orderbook.order.tsx new file mode 100644 index 00000000..8c0b5cbc --- /dev/null +++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/swap.orderbook.order.tsx @@ -0,0 +1,170 @@ +import React, { useState } from 'react'; + +import { Button, Collapse, HStack, Text, VStack } from '@chakra-ui/react'; +import { OrderStatus } from '@gardenfi/core'; +import { MatchedOrder } from '@gardenfi/orderbook'; +import { useGarden } from '@gardenfi/react-hooks'; +import { useOrderStatus } from '@hooks/use-swap-order-status'; +import Decimal from 'decimal.js'; +import { truncateAddress, unshiftValue } from 'dlc-btc-lib/utilities'; + +import { StatusLabel } from '@shared/constants/swap.constants'; + +import { CopyButton } from '../../../swap.orderbook.copy-button'; +import { OrderAmount } from './components/swap.orderbook.order.asset-value'; +import { OrderDetails } from './components/swap.orderbook.order.details/swap.orderbook.order.details'; + +function StatusButton({ + isInitiating, + onInitiate, +}: { + isInitiating: boolean; + onInitiate: () => void; +}): React.JSX.Element { + return ( + + ); +} + +const getStatusLabel = (status: OrderStatus): StatusLabel => { + switch (status) { + case OrderStatus.Redeemed: + case OrderStatus.Refunded: + case OrderStatus.CounterPartyRedeemed: + case OrderStatus.CounterPartyRedeemDetected: + return StatusLabel.Completed; + case OrderStatus.Matched: + return StatusLabel.Initiate; + case OrderStatus.DeadLineExceeded: + return StatusLabel.Expired; + default: + return StatusLabel.Pending; + } +}; + +interface OrderProps { + order: MatchedOrder; +} + +export function Order({ order }: OrderProps): React.JSX.Element { + const orderStatus = useOrderStatus(order); + + const [modelIsVisible, setModelIsVisible] = useState(false); + const [isInitiating, setIsInitiating] = useState(false); + const { evmInitiate } = useGarden(); + + const { source_swap, destination_swap } = order; + const sourceAmount = unshiftValue(new Decimal(source_swap.amount).toNumber()).toString(); + const destinationAmount = unshiftValue( + new Decimal(destination_swap.amount).toNumber() + ).toString(); + const userFriendlyStatus = orderStatus && getStatusLabel(orderStatus); + + const isFromBTC = order.source_swap.chain.toLowerCase().includes('bitcoin'); + const fromLabel = isFromBTC ? 'BTC' : 'iBTC'; + const toLabel = isFromBTC ? 'iBTC' : 'BTC'; + + const handleInitiate = async () => { + if (!evmInitiate) return; + setIsInitiating(true); + try { + const res = await evmInitiate(order); + if (!res.ok) { + throw new Error('Failed to initiate'); + } + } catch (error) { + alert('Failed to initiate'); + } finally { + setIsInitiating(false); + } + }; + + return ( + + + + Order ID: {truncateAddress(source_swap.swap_id)} + + + + + + + + + + Status + + {userFriendlyStatus === StatusLabel.Initiate && !isFromBTC ? ( + + ) : ( + + {userFriendlyStatus} + + )} + + + + + + + + Please initiate the swap by sending the BTC to the address below. + + + + {truncateAddress(source_swap.swap_id)} + + + + + + + + + + + ); +} diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/swap.orderbook.orderlist.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/swap.orderbook.orderlist.tsx new file mode 100644 index 00000000..e611fb69 --- /dev/null +++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/swap.orderbook.orderlist.tsx @@ -0,0 +1,39 @@ +import { VStack } from '@chakra-ui/react'; +import { FadeLayer } from '@components/fade-layer/fade-layer'; +import { MatchedOrder } from '@gardenfi/orderbook'; +import { scrollBarCSS } from '@styles/css-styles'; + +import { Order } from './components/swap.orderbook.order/swap.orderbook.order'; + +interface OrderListProps { + orders: MatchedOrder[]; +} + +export function OrderList({ orders }: OrderListProps): React.JSX.Element { + return ( + + + + {orders.map(order => ( + + ))} + + + + ); +} diff --git a/src/app/components/swap/components/swap.orderbook/swap.orderbook.tsx b/src/app/components/swap/components/swap.orderbook/swap.orderbook.tsx new file mode 100644 index 00000000..cebbc384 --- /dev/null +++ b/src/app/components/swap/components/swap.orderbook/swap.orderbook.tsx @@ -0,0 +1,30 @@ +import { useCallback, useEffect, useState } from 'react'; + +import { MatchedOrder } from '@gardenfi/orderbook'; +import { useGarden } from '@gardenfi/react-hooks'; + +import { OrderList } from './components/swap.orderbook.orderlist/swap.orderbook.orderlist'; + +const POLLING_INTERVAL = 10000; +const ORDERS_PER_PAGE = 4; + +export function Orderbook(): React.JSX.Element { + const { orderBook } = useGarden(); + const [orders, setOrders] = useState([]); + + const fetchOrders = useCallback(async () => { + if (!orderBook) return; + const res = await orderBook.fetchOrders(true, false, { + per_page: ORDERS_PER_PAGE, + }); + setOrders(res.val.data); + }, [orderBook]); + + useEffect(() => { + void fetchOrders(); + const intervalId = setInterval(fetchOrders, POLLING_INTERVAL); + return () => clearInterval(intervalId); + }, [fetchOrders]); + + return ; +} diff --git a/src/app/components/swap/pages/swap-page.tsx b/src/app/components/swap/pages/swap-page.tsx new file mode 100644 index 00000000..c1234356 --- /dev/null +++ b/src/app/components/swap/pages/swap-page.tsx @@ -0,0 +1,18 @@ +import { HStack } from '@chakra-ui/react'; +import { PageLayout } from '@pages/components/page.layout'; + +import { breakpoints } from '@shared/utils'; + +import { Orderbook } from '../components/swap.orderbook/swap.orderbook'; +import { Swap } from '../swap'; + +export function SwapPage(): React.JSX.Element { + return ( + + + + + + + ); +} diff --git a/src/app/components/swap/swap.tsx b/src/app/components/swap/swap.tsx new file mode 100644 index 00000000..efbd6f07 --- /dev/null +++ b/src/app/components/swap/swap.tsx @@ -0,0 +1,179 @@ +import { CheckCircleIcon, ChevronDownIcon, ChevronUpIcon } from '@chakra-ui/icons'; +import { Button, HStack, Input, Spinner, Text, VStack } from '@chakra-ui/react'; +import { useBitcoinPrice } from '@hooks/use-bitcoin-price'; +import { useSwap } from '@hooks/use-swap'; +import Decimal from 'decimal.js'; +import { truncateAddress } from 'dlc-btc-lib/utilities'; + +import { SwapAmountCard } from './components/swap-amount-card'; +import { SwapButton } from './components/swap-button'; +import { SwapHeader } from './components/swap-header'; + +const assetValueInUSD = (assetAmount: string, currentBitcoinPrice: number): string => { + try { + return `$ ${new Decimal(assetAmount).mul(currentBitcoinPrice).toNumber().toLocaleString('en-US')}`; + } catch (error) { + return '0'; + } +}; + +export function Swap(): React.JSX.Element { + const { + inputToken, + setTokens, + inputAmount, + validateAndSetInputAmount, + outputToken, + outputAmount, + handleSwap, + bitcoinAddress, + setBitcoinAddress, + isQuoteLoading, + quoteError, + swapError, + isProcessing, + isCompleted, + } = useSwap(); + + const { bitcoinPrice } = useBitcoinPrice(); + + return ( + + + + {outputToken.symbol === 'BTC' ? ( + <> + + + + + + + ) : ( + <> + + + + + + + )} + {isQuoteLoading || + (isProcessing && ( + + + Loading + + ))} + {quoteError || + (swapError && ( + + {`Error: ${quoteError ? quoteError : swapError}`} + + ))} + {isCompleted && ( + + {`Swap Request Sent, Order ID: ${truncateAddress(isCompleted)}`} + + + )} + + + + + {`${outputToken.symbol === 'BTC' ? 'Receive' : 'Refund'}`} Address + + setBitcoinAddress(e.target.value)} + borderColor={'white.03'} + color={'white'} + focusBorderColor={'rgba(255,255,255,1)'} + isInvalid={!bitcoinAddress} + placeholder="Enter Bitcoin Address" + /> + + {/* */} + {isQuoteLoading || + isProcessing || + (quoteError === null && ( + handleSwap()} /> + ))} + + ); +} diff --git a/src/app/functions/configuration.functions.ts b/src/app/functions/configuration.functions.ts index 263dc1f7..a694488a 100644 --- a/src/app/functions/configuration.functions.ts +++ b/src/app/functions/configuration.functions.ts @@ -86,13 +86,14 @@ export function getWagmiConfiguration(ethereumNetworkIDs: EthereumNetworkID[]): function clientToSigner(client: Client): providers.JsonRpcSigner { const { account, chain, transport } = client; - const network = { chainId: chain.id, name: chain.name, ensAddress: chain.contracts?.ensRegistry?.address, }; - return new providers.Web3Provider(transport, network).getSigner(account.address); + const provider = new providers.Web3Provider(transport, network); + const signer = provider.getSigner(account.address); + return signer; } export function useEthersSigner({ chainId }: { chainId?: number } = {}): diff --git a/src/app/hooks/use-swap-order-status.ts b/src/app/hooks/use-swap-order-status.ts new file mode 100644 index 00000000..94253c70 --- /dev/null +++ b/src/app/hooks/use-swap-order-status.ts @@ -0,0 +1,85 @@ +import { useEffect, useState } from 'react'; + +import { OrderStatus, ParseOrderStatus } from '@gardenfi/core'; +import { Chain, MatchedOrder } from '@gardenfi/orderbook'; +import { GARDEN_CONFIG } from '@gardenfi/react-hooks'; + +async function fetchJson(url: string, options?: RequestInit): Promise { + const response = await fetch(url, { + headers: { 'Content-Type': 'application/json' }, + ...options, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + return response.json() as Promise; +} + +const createAPI = (isTestnet: boolean) => { + const apiConfiguration = isTestnet ? GARDEN_CONFIG.testnet : GARDEN_CONFIG.mainnet; + + if (!apiConfiguration) { + throw new Error('Invalid Configuration'); + } + + Object.entries(apiConfiguration).forEach(([key, value]) => { + if (!value) throw new Error(`Missing ${key} in config`); + }); + + return { + home: 'https://garden.finance', + data: { + data: apiConfiguration, + assets: `${apiConfiguration.blockNumberFetcherUrl}/assets`, + blockNumbers: (network: 'mainnet' | 'testnet') => + `${apiConfiguration.blockNumberFetcherUrl}/blocknumber/${network}`, + }, + orderbook: apiConfiguration.orderBookUrl, + quote: apiConfiguration.quoteUrl, + mempool: { + testnet: 'https://mempool.space/testnet4/api', + mainnet: 'https://mempool.space/api', + }, + }; +}; + +export const useOrderStatus = (order: MatchedOrder): OrderStatus | undefined => { + const [blockNumbers, setBlockNumbers] = useState | null>(null); + const [status, setStatus] = useState(); + + const isTestnet = ['testnet', 'devnet', 'localhost'].includes(appConfiguration.appEnvironment); + + useEffect(() => { + const fetchBlockNumbers = async () => { + try { + const data = await fetchJson>( + createAPI(isTestnet).data.blockNumbers('testnet') + ); + setBlockNumbers(data); + } catch (error) { + // eslint-disable-next-line no-console + console.error('Failed to fetch Block Numbers:', error); + } + }; + + void fetchBlockNumbers(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + useEffect(() => { + if (!blockNumbers) return; + + const { source_swap, destination_swap } = order; + const sourceBlockNumber = blockNumbers[source_swap.chain]; + const destinationBlockNumber = blockNumbers[destination_swap.chain]; + + if (!sourceBlockNumber || !destinationBlockNumber) return; + + const orderStatus = ParseOrderStatus(order, sourceBlockNumber, destinationBlockNumber); + setStatus(orderStatus); + }, [blockNumbers, order]); + + return status; +}; diff --git a/src/app/hooks/use-swap.ts b/src/app/hooks/use-swap.ts new file mode 100644 index 00000000..b90f3f42 --- /dev/null +++ b/src/app/hooks/use-swap.ts @@ -0,0 +1,262 @@ +import { useEffect, useState } from 'react'; + +import { SwapParams } from '@gardenfi/core'; +import { Asset, SupportedAssets } from '@gardenfi/orderbook'; +import { useGarden } from '@gardenfi/react-hooks'; +import Decimal from 'decimal.js'; +import { isBitcoinAddress } from 'dlc-btc-lib/bitcoin-functions'; +import { shiftValue, unshiftValue } from 'dlc-btc-lib/utilities'; + +import { BITCOIN_NETWORK_MAP } from '@shared/constants/bitcoin.constants'; + +interface QuoteParams { + fromAsset: Asset; + toAsset: Asset; + amount: number; + isExactOut?: boolean; +} + +enum SupportedEVMNetworks { + ArbitrumSepolia = '421614', + BaseSepolia = '84532', +} + +const SUPPORTED_ASSETS_BTC_MAP = { + mainnet: SupportedAssets.mainnet.bitcoin_primary, + testnet: SupportedAssets.testnet.bitcoin_testnet_primary, + devnet: SupportedAssets.testnet.bitcoin_testnet_primary, + localhost: SupportedAssets.testnet.bitcoin_testnet_primary, +}; + +const SUPPORTED_ASSETS_IBTC_MAP = { + [SupportedEVMNetworks.ArbitrumSepolia]: + SupportedAssets.testnet.arbitrum_sepolia_0xdfe6d9363ee96152d39391009a6723819d9e25eb, + [SupportedEVMNetworks.BaseSepolia]: + SupportedAssets.testnet.base_sepolia_0xbcdad29ac77e5bb27fd528ab0045af630259fe4f, +}; + +function useDebounce(value: T, delay: number): T { + const [debouncedValue, setDebouncedValue] = useState(value); + + useEffect(() => { + const timer = setTimeout(() => { + setDebouncedValue(value); + }, delay); + + return () => { + clearTimeout(timer); + }; + }, [value, delay]); + + return debouncedValue; +} + +interface UseSwapReturnType { + handleSwap: () => void; + inputToken: Asset; + setTokens: () => void; + inputAmount: string; + validateAndSetInputAmount: (amount: string) => void; + outputToken: Asset; + setOutputToken: (token: Asset) => void; + outputAmount: string | undefined; + bitcoinAddress: string; + setBitcoinAddress: (address: string) => void; + isQuoteLoading: boolean; + quoteError: string | null; + swapError: string | null; + isProcessing: boolean; + isCompleted: string | null; +} + +export function useSwap(): UseSwapReturnType { + const { initializeSecretManager, swapAndInitiate, getQuote } = useGarden(); + + const [inputToken, setInputToken] = useState( + SUPPORTED_ASSETS_IBTC_MAP[SupportedEVMNetworks.ArbitrumSepolia] + ); + const [inputAmount, setInputAmount] = useState('0.01'); + + const [outputToken, setOutputToken] = useState( + SUPPORTED_ASSETS_BTC_MAP[appConfiguration.appEnvironment] + ); + const [outputAmount, setOutputAmount] = useState(); + + const [isQuoteLoading, setIsQuoteLoading] = useState(false); + const [quoteError, setQuoteError] = useState(null); + + const debouncedInputAmount = useDebounce(inputAmount, 500); + + const [bitcoinAddress, setBitcoinAddress] = useState(''); + + const [isCompleted, setIsCompleted] = useState(null); + const [swapError, setSwapError] = useState(null); + + const [isProcessing, setIsProcessing] = useState(false); + + function setTokens() { + setInputToken(outputToken); + setOutputToken(inputToken); + } + + function validateAndSetInputAmount(value: string) { + setInputAmount(value); + } + + useEffect(() => { + let timeoutId: NodeJS.Timeout; + + if (isCompleted || swapError) { + timeoutId = setTimeout(() => { + setIsCompleted(null); + setSwapError(null); + }, 5000); + } + + return () => { + if (timeoutId) { + clearTimeout(timeoutId); + } + }; + }, [isCompleted, swapError]); + + useEffect(() => { + const updateQuote = async () => { + if (Number(debouncedInputAmount) <= 0) { + setOutputAmount('0'); + return; + } + + setIsQuoteLoading(true); + setQuoteError(null); + + try { + const sendAmount = shiftValue(Number(debouncedInputAmount)); + + const { amount } = await fetchQuote({ + fromAsset: inputToken, + toAsset: outputToken, + amount: sendAmount, + }); + + setOutputAmount(unshiftValue(new Decimal(amount).toNumber()).toString()); // Assuming 8 decimals for BTC + } catch (error) { + setQuoteError(error instanceof Error ? error.message : 'Failed to fetch quote'); + setOutputAmount('0'); + } finally { + setIsQuoteLoading(false); + } + }; + + void updateQuote(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [debouncedInputAmount, inputToken, outputToken, getQuote]); + + const initializeSecret = async () => { + if (!initializeSecretManager) { + throw new Error('Secret Manager initializer not available'); + } + + const response = await initializeSecretManager(); + + if (!response.ok || !response.val.getMasterPrivKey()) { + throw new Error('Failed to initialize Secret Manager'); + } + + return response; + }; + + const fetchQuote = async (quoteParams: QuoteParams) => { + if (!getQuote) { + throw new Error('Quote service not available'); + } + + const quote = await getQuote(quoteParams); + + if (quote.error) { + throw new Error(quote.error); + } + + const [strategy, amount] = Object.entries(quote.val.quotes)[0]; + + return { strategy, amount }; + }; + + const executeSwap = async (swapParams: SwapParams) => { + if (!swapAndInitiate) { + throw new Error('Swap service not available'); + } + + const response = await swapAndInitiate(swapParams); + + if (response.error) { + throw new Error(response.error); + } + + return response; + }; + + const handleSwap = async () => { + try { + setIsProcessing(true); + + if (!isBitcoinAddress(bitcoinAddress, BITCOIN_NETWORK_MAP[appConfiguration.bitcoinNetwork])) { + setSwapError('Invalid Bitcoin Address'); + return; + } + + await initializeSecret(); + + const sendAmount = shiftValue(new Decimal(inputAmount).toNumber()); + + const { strategy, amount } = await fetchQuote({ + fromAsset: inputToken, + toAsset: outputToken, + amount: sendAmount, + }); + + const swapParams = { + fromAsset: inputToken, + toAsset: outputToken, + sendAmount: sendAmount.toString(), + receiveAmount: amount.toString(), + additionalData: { + strategyId: strategy, + btcAddress: bitcoinAddress, + }, + }; + + const response = await executeSwap(swapParams); + + if (response.error) { + throw response.error; + } + + setIsCompleted(response.val.source_swap.swap_id); + + return response; + } catch (error) { + setSwapError(error instanceof Error ? error.message : 'Failed to Swap'); + } finally { + setIsProcessing(false); + } + }; + + return { + handleSwap, + setTokens, + inputToken, + inputAmount, + validateAndSetInputAmount, + setOutputToken, + outputToken, + outputAmount, + bitcoinAddress, + setBitcoinAddress, + isQuoteLoading, + isCompleted, + isProcessing, + quoteError, + swapError, + }; +} diff --git a/src/shared/constants/swap.constants.ts b/src/shared/constants/swap.constants.ts new file mode 100644 index 00000000..4edec054 --- /dev/null +++ b/src/shared/constants/swap.constants.ts @@ -0,0 +1,6 @@ +export enum StatusLabel { + Completed = 'Completed', + Pending = 'In Progress', + Expired = 'Expired', + Initiate = 'Awaiting Initiate', +} diff --git a/src/styles/app-theme.ts b/src/styles/app-theme.ts index db734c9d..525c0039 100644 --- a/src/styles/app-theme.ts +++ b/src/styles/app-theme.ts @@ -49,6 +49,7 @@ export const appTheme = extendTheme({ 'background.website.01': 'rgba(0, 0, 0, 1)', 'background.container.01': 'rgba(23, 24, 29, 1)', 'background.content.01': 'rgba(51, 51, 51, 1)', + 'background.content.02': 'rgba(77, 77, 77, 1)', 'grey.01': 'rgba(181, 182, 187, 1)', 'border.lightBlue.01': 'rgba(50, 201, 247,0.75)', 'border.white.01': 'rgba(255,255,255,0.25)', diff --git a/updates.patch b/updates.patch new file mode 100644 index 00000000..bb6ac350 --- /dev/null +++ b/updates.patch @@ -0,0 +1,3492 @@ +diff --git a/package.json b/package.json +index 9e7e530..c98aa62 100644 +--- a/package.json ++++ b/package.json +@@ -31,6 +31,9 @@ + "@fontsource/onest": "^5.0.3", + "@fontsource/poppins": "^5.0.8", + "@gemwallet/api": "^3.8.0", ++ "@gardenfi/core": "0.3.0-beta.14", ++ "@gardenfi/orderbook": "0.2.0-beta.41", ++ "@gardenfi/react-hooks": "0.0.1-beta.135", + "@ledgerhq/hw-app-xrp": "^6.29.4", + "@ledgerhq/hw-transport-webusb": "^6.28.6", + "@netlify/functions": "^2.8.1", +@@ -46,7 +49,7 @@ + "concurrently": "^8.2.2", + "d3": "^7.9.0", + "decimal.js": "^10.4.3", +- "dlc-btc-lib": "2.5.1", ++ "dlc-btc-lib": "2.5.3", + "dotenv": "^16.3.1", + "ethers": "5.7.2", + "formik": "^2.4.5", +@@ -64,9 +67,9 @@ + "redux": "^4.2.1", + "redux-persist": "^6.0.0", + "redux-persist-expire": "^1.1.1", +- "viem": "2.x", ++ "viem": "^2.20.1", + "vite-plugin-toml": "^0.7.0", +- "wagmi": "^2.12.2", ++ "wagmi": "2.14.3", + "xrpl": "^4.0.0" + }, + "devDependencies": { +diff --git a/public/images/gear-icon.svg b/public/images/gear-icon.svg +new file mode 100644 +index 0000000..51c3eeb +--- /dev/null ++++ b/public/images/gear-icon.svg +@@ -0,0 +1,4 @@ ++ ++ ++ ++ +diff --git a/public/images/swap-arrow.svg b/public/images/swap-arrow.svg +new file mode 100644 +index 0000000..799bfe4 +--- /dev/null ++++ b/public/images/swap-arrow.svg +@@ -0,0 +1,3 @@ ++ ++ ++ +diff --git a/src/app/app.tsx b/src/app/app.tsx +index f3cc540..099cd7e 100644 +--- a/src/app/app.tsx ++++ b/src/app/app.tsx +@@ -2,7 +2,9 @@ import { Route } from 'react-router-dom'; + + import { AppLayout } from '@components/app.layout'; + import { MerchantDetails } from '@components/proof-of-reserve/components/merchant-details/merchant-details'; ++import { SwapPage } from '@components/swap/pages/swap-page'; + import { getWagmiConfiguration } from '@functions/configuration.functions'; ++import { GardenProvider, environment } from '@gardenfi/react-hooks'; + import { AttestorDetailsPage } from '@pages/attestor-details/attestor-details-page'; + import { AttestorDetailsSelectPage } from '@pages/attestor-details/attestor-details-select-page'; + import { MyVaults } from '@pages/my-vaults/my-vaults'; +@@ -31,39 +33,50 @@ export function App(): React.JSX.Element { + return ( + + +- +- +- +- +- +- +- +- +- +- +- +- } /> +- } /> +- {/* } /> */} +- } /> +- } /> +- } +- /> +- } /> +- } /> +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ } /> ++ } /> ++ {/* } /> */} ++ } /> ++ } /> ++ } ++ /> ++ } ++ /> ++ } /> ++ } /> ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + ); +diff --git a/src/app/components/header/components/tabs.tsx b/src/app/components/header/components/tabs.tsx +index 8e7ab18..7507add 100644 +--- a/src/app/components/header/components/tabs.tsx ++++ b/src/app/components/header/components/tabs.tsx +@@ -30,6 +30,11 @@ export function NavigationTabs({ + isActive={activeTab === '/how-it-works'} + handleClick={() => handleTabClick('/how-it-works')} + /> */} ++ handleTabClick('/swap')} ++ /> + + {isActiveTabs && ( + <> +diff --git a/src/app/components/mint-unmint/components/burn-transaction-screen/burn-transaction-screen.tsx b/src/app/components/mint-unmint/components/burn-transaction-screen/burn-transaction-screen.tsx +index 7515979..6dd46ed 100644 +--- a/src/app/components/mint-unmint/components/burn-transaction-screen/burn-transaction-screen.tsx ++++ b/src/app/components/mint-unmint/components/burn-transaction-screen/burn-transaction-screen.tsx +@@ -42,7 +42,7 @@ export function BurnTokenTransactionForm({ + + const { ethereumNetworkConfiguration } = useContext(EthereumNetworkConfigurationContext); + +- const signer = useEthersSigner(); ++ const { getEthersSigner } = useEthersSigner(); + + const { unmintStep } = useSelector((state: RootState) => state.mintunmint); + const [isSubmitting, setIsSubmitting] = useState(false); +@@ -60,8 +60,11 @@ export function BurnTokenTransactionForm({ + if (currentRisk === 'High') throw new Error('Risk Level is too high'); + const formattedWithdrawAmount = BigInt(shiftValue(withdrawAmount)); + ++ const signer = await getEthersSigner(); ++ if (!signer) throw new Error('No signer available'); ++ + await withdraw( +- ethereumNetworkConfiguration.dlcManagerContract.connect(signer!), ++ ethereumNetworkConfiguration.dlcManagerContract.connect(signer), + currentVault.uuid, + formattedWithdrawAmount + ); +diff --git a/src/app/components/mint-unmint/components/setup-vault-screen/setup-vault-screen.tsx b/src/app/components/mint-unmint/components/setup-vault-screen/setup-vault-screen.tsx +index 43121e4..13dc3ce 100644 +--- a/src/app/components/mint-unmint/components/setup-vault-screen/setup-vault-screen.tsx ++++ b/src/app/components/mint-unmint/components/setup-vault-screen/setup-vault-screen.tsx +@@ -24,7 +24,7 @@ export function SetupVaultScreen(): React.JSX.Element { + const { ethereumNetworkConfiguration } = useContext(EthereumNetworkConfigurationContext); + const { rippleNetworkConfiguration } = useContext(RippleNetworkConfigurationContext); + +- const signer = useEthersSigner(); ++ const { getEthersSigner } = useEthersSigner(); + + const [isSubmitting, setIsSubmitting] = useState(false); + +@@ -40,7 +40,7 @@ export function SetupVaultScreen(): React.JSX.Element { + ); + break; + case NetworkType.EVM: +- await setupVault(ethereumNetworkConfiguration.dlcManagerContract.connect(signer!)); ++ await setupVault(ethereumNetworkConfiguration.dlcManagerContract.connect()); + break; + default: + throw new Error('Unsupported Network Type'); +diff --git a/src/app/components/swap/components/swap-amount-card.tsx b/src/app/components/swap/components/swap-amount-card.tsx +new file mode 100644 +index 0000000..c6164fc +--- /dev/null ++++ b/src/app/components/swap/components/swap-amount-card.tsx +@@ -0,0 +1,96 @@ ++import { HStack, Input, Text, VStack } from '@chakra-ui/react'; ++import { Asset } from '@gardenfi/orderbook'; ++ ++import { SwapTokenLabel } from './swap-token-label'; ++ ++interface SwapAmountCardProps { ++ direction: string; ++ asset: Asset; ++ amount?: string; ++ amountInUSD?: string; ++ setAmount?: (amount: string) => void; ++ balance?: number; ++ transactionGasFee?: number; ++} ++ ++const assetDetails = { ++ iBTC: { ++ assetColor: 'purple.01', ++ assetSymbol: 'iBTC', ++ assetLogo: '/images/logos/ibtc-logo.svg', ++ }, ++ BTC: { ++ assetColor: 'orange.01', ++ assetSymbol: 'BTC', ++ assetLogo: '/images/logos/bitcoin-logo.svg', ++ }, ++}; ++ ++export function SwapAmountCard({ ++ direction, ++ amount, ++ asset, ++ amountInUSD, ++ setAmount, ++}: SwapAmountCardProps): React.JSX.Element | null { ++ const isBTC = asset.symbol === 'BTC'; ++ const { assetColor, assetSymbol, assetLogo } = assetDetails[isBTC ? 'BTC' : 'iBTC']; ++ ++ return ( ++ ++ ++ {direction} ++ ++ ++ ++ {direction === 'From' ? ( ++ setAmount?.(e.target.value)} ++ borderColor={'white.01'} ++ color={'white.01'} ++ focusBorderColor={'rgba(50, 201, 247, 1)'} // accent.lightBlue.01 ++ /> ++ ) : ( ++ ++ {amount} ++ ++ )} ++ ++ ++ ++ ++ {amountInUSD} USD ++ ++ ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap-button.tsx b/src/app/components/swap/components/swap-button.tsx +new file mode 100644 +index 0000000..8a09bda +--- /dev/null ++++ b/src/app/components/swap/components/swap-button.tsx +@@ -0,0 +1,21 @@ ++import React from 'react'; ++ ++import { Button } from '@chakra-ui/react'; ++ ++interface SwapButtonProps { ++ isDisabled?: boolean; ++ onClick: () => void; ++} ++ ++export function SwapButton({ onClick, isDisabled }: SwapButtonProps): React.JSX.Element { ++ return ( ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap-extra-details-card.tsx b/src/app/components/swap/components/swap-extra-details-card.tsx +new file mode 100644 +index 0000000..03fbd7c +--- /dev/null ++++ b/src/app/components/swap/components/swap-extra-details-card.tsx +@@ -0,0 +1,47 @@ ++// import { HStack, Text, VStack } from '@chakra-ui/react'; ++ ++// interface SwapExtraDetailsCardProps { ++// gasFee: number; ++// } ++ ++// export function SwapExtraDetailsCard({ gasFee }: SwapExtraDetailsCardProps): React.JSX.Element { ++// return ( ++// ++// ++// ++// Gas Fee ++// ++// ++// {gasFee} ++// ++// ++// ++// ++// Rate ++// ++// ++// 1 BTC = 1 dlcBTC ++// ++// ++// ++// ++// Slippage Tolerance ++// ++// ++// Auto ++// ++// ++// ++// ); ++// } ++ ++// TODO: Add back this component +diff --git a/src/app/components/swap/components/swap-header.tsx b/src/app/components/swap/components/swap-header.tsx +new file mode 100644 +index 0000000..90f91a5 +--- /dev/null ++++ b/src/app/components/swap/components/swap-header.tsx +@@ -0,0 +1,17 @@ ++import { HStack, Text } from '@chakra-ui/react'; ++ ++import { SwapNetworksMenu } from './swap-networks-menu'; ++ ++export function SwapHeader(): React.JSX.Element { ++ return ( ++ ++ ++ Swap ++ ++ ++ {/* {}} /> */} ++ {/* {}} /> */} ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap-networks-menu.tsx b/src/app/components/swap/components/swap-networks-menu.tsx +new file mode 100644 +index 0000000..1127f28 +--- /dev/null ++++ b/src/app/components/swap/components/swap-networks-menu.tsx +@@ -0,0 +1,75 @@ ++import { Image, Menu, MenuButton, MenuItem, MenuList } from '@chakra-ui/react'; ++import { EthereumNetworkID } from 'dlc-btc-lib/models'; ++import { useAccount, useConfig, useSwitchChain } from 'wagmi'; ++ ++interface SwapNetworksMenuProps { ++ isMenuOpen: boolean; ++ setIsMenuOpen: (isMenuOpen: boolean) => void; ++} ++ ++const getNetworkLogo = (ethereumNetworkId?: EthereumNetworkID) => { ++ switch (ethereumNetworkId) { ++ case EthereumNetworkID.Arbitrum: ++ case EthereumNetworkID.ArbitrumSepolia: ++ return './images/logos/arbitrum-token.svg'; ++ case EthereumNetworkID.Sepolia: ++ case EthereumNetworkID.Mainnet: ++ return './images/logos/eth-token.svg'; ++ case EthereumNetworkID.BaseSepolia: ++ case EthereumNetworkID.Base: ++ return './images/logos/base-token.svg'; ++ default: ++ return './images/logos/arbitrum-token.svg'; ++ } ++}; ++ ++export function SwapNetworksMenu({ ++ isMenuOpen, ++ setIsMenuOpen, ++}: SwapNetworksMenuProps): React.JSX.Element | null { ++ const { chains } = useConfig(); ++ const { chain, isConnected } = useAccount(); ++ const { switchChain } = useSwitchChain(); ++ //TODO: maybe add the network logo to the setstate? ++ ++ if (!isConnected) { ++ return null; ++ } ++ ++ return ( ++ ++ setIsMenuOpen(!isMenuOpen)} ++ h={'50px'} ++ w={'50px'} ++ bg={'background.content.02'} ++ border={'none'} ++ boxShadow={'2px 2px 4px rgba(0, 0, 0, 0.5)'} ++ > ++ {'Selected ++ ++ ++ {chains.map(ethereumNetwork => { ++ return ( ++ { ++ switchChain({ chainId: ethereumNetwork.id }); ++ setIsMenuOpen(!isMenuOpen); ++ getNetworkLogo(chain?.id.toString() as EthereumNetworkID); ++ }} ++ > ++ {ethereumNetwork.name} ++ ++ ); ++ })} ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap-settings-menu.tsx b/src/app/components/swap/components/swap-settings-menu.tsx +new file mode 100644 +index 0000000..0ac41e3 +--- /dev/null ++++ b/src/app/components/swap/components/swap-settings-menu.tsx +@@ -0,0 +1,31 @@ ++// import { Image, Menu, MenuButton, MenuItem, MenuList } from '@chakra-ui/react'; ++ ++// interface SwapSettingsMenuProps { ++// isMenuOpen: boolean; ++// setIsMenuOpen: (isMenuOpen: boolean) => void; ++// } ++ ++// export function SwapSettingsMenu({ ++// isMenuOpen, ++// setIsMenuOpen, ++// }: SwapSettingsMenuProps): React.JSX.Element { ++// return ( ++// ++// setIsMenuOpen(!isMenuOpen)} ++// h={'50px'} ++// w={'50px'} ++// bg={'background.content.02'} ++// border={'none'} ++// boxShadow={'2px 2px 4px rgba(0, 0, 0, 0.5)'} ++// > ++// {'Gear ++// ++// ++// Profile Settings ++// ++// ++// ); ++// } ++ ++// TODO: Add back this component +diff --git a/src/app/components/swap/components/swap-token-label.tsx b/src/app/components/swap/components/swap-token-label.tsx +new file mode 100644 +index 0000000..8fc058a +--- /dev/null ++++ b/src/app/components/swap/components/swap-token-label.tsx +@@ -0,0 +1,25 @@ ++import { HStack, Image, Text } from '@chakra-ui/react'; ++ ++interface SwapTokenLabelProps { ++ tokenImage: string; ++ tokenDisplay: string; ++} ++ ++export function SwapTokenLabel({ ++ tokenImage, ++ tokenDisplay, ++}: SwapTokenLabelProps): React.JSX.Element { ++ return ( ++ ++ {tokenDisplay} ++ ++ {tokenDisplay} ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.copy-button.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.copy-button.tsx +new file mode 100644 +index 0000000..d1ad84c +--- /dev/null ++++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.copy-button.tsx +@@ -0,0 +1,61 @@ ++import { useState } from 'react'; ++ ++import { CheckCircleIcon, CopyIcon } from '@chakra-ui/icons'; ++import { HStack, IconButton, PlacementWithLogical, Tooltip } from '@chakra-ui/react'; ++ ++interface CopyButtonProps { ++ textToCopy: string; ++ placement?: PlacementWithLogical; ++} ++ ++export function CopyButton({ textToCopy, placement = 'left' }: CopyButtonProps): React.JSX.Element { ++ const [copied, setCopied] = useState(false); ++ ++ const handleCopy = async () => { ++ try { ++ await navigator.clipboard.writeText(textToCopy); ++ setCopied(true); ++ setTimeout(() => setCopied(false), 2000); ++ } catch (error: any) { ++ // eslint-disable-next-line no-console ++ console.error('Failed to copy to Clipboard', error); ++ } ++ }; ++ ++ return ( ++ ++ ++ ++ ) : ( ++ ++ ) ++ } ++ /> ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.asset-value.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.asset-value.tsx +new file mode 100644 +index 0000000..8cedca4 +--- /dev/null ++++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.asset-value.tsx +@@ -0,0 +1,20 @@ ++import { Text, VStack } from '@chakra-ui/react'; ++ ++interface AssetValueProps { ++ label: string; ++ amount: string; ++ asset: string; ++} ++ ++export function OrderAmount({ label, amount, asset }: AssetValueProps): React.JSX.Element { ++ return ( ++ ++ ++ {label} ++ ++ ++ {amount} {asset} ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/components/swap.orderbook.order.details.field.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/components/swap.orderbook.order.details.field.tsx +new file mode 100644 +index 0000000..77278d2 +--- /dev/null ++++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/components/swap.orderbook.order.details.field.tsx +@@ -0,0 +1,33 @@ ++// components/TransactionField.tsx ++import { HStack, Text } from '@chakra-ui/react'; ++import { truncateAddress } from 'dlc-btc-lib/utilities'; ++ ++import { CopyButton } from '../../../../../../swap.orderbook.copy-button'; ++ ++interface DetailsFieldProps { ++ label: string; ++ value: string; ++ shouldTruncate?: boolean; ++ includeCopyButton?: boolean; ++} ++ ++export function DetailsField({ ++ label, ++ value, ++ shouldTruncate = true, ++ includeCopyButton = true, ++}: DetailsFieldProps): React.JSX.Element { ++ return ( ++ ++ ++ {label} ++ ++ ++ ++ {shouldTruncate ? truncateAddress(value) : value} ++ ++ {includeCopyButton && } ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/swap.orderbook.order.details.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/swap.orderbook.order.details.tsx +new file mode 100644 +index 0000000..d49f70a +--- /dev/null ++++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/components/swap.orderbook.order.details/swap.orderbook.order.details.tsx +@@ -0,0 +1,43 @@ ++import { VStack } from '@chakra-ui/react'; ++import { MatchedOrder } from '@gardenfi/orderbook'; ++ ++import { DetailsField } from './components/swap.orderbook.order.details.field'; ++ ++interface OrderDetailsProps { ++ order: MatchedOrder; ++} ++ ++export function OrderDetails({ order }: OrderDetailsProps): React.JSX.Element { ++ const { ++ destination_swap: { redeemer: to, redeem_tx_hash }, ++ created_at, ++ source_swap: { initiator: from, initiate_tx_hash, refund_tx_hash }, ++ } = order; ++ ++ const creationDate = new Date(created_at).toLocaleDateString('en-US'); ++ ++ return ( ++ ++ ++ ++ ++ {initiate_tx_hash && } ++ {redeem_tx_hash && } ++ {refund_tx_hash && } ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/swap.orderbook.order.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/swap.orderbook.order.tsx +new file mode 100644 +index 0000000..8c0b5cb +--- /dev/null ++++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/components/swap.orderbook.order/swap.orderbook.order.tsx +@@ -0,0 +1,170 @@ ++import React, { useState } from 'react'; ++ ++import { Button, Collapse, HStack, Text, VStack } from '@chakra-ui/react'; ++import { OrderStatus } from '@gardenfi/core'; ++import { MatchedOrder } from '@gardenfi/orderbook'; ++import { useGarden } from '@gardenfi/react-hooks'; ++import { useOrderStatus } from '@hooks/use-swap-order-status'; ++import Decimal from 'decimal.js'; ++import { truncateAddress, unshiftValue } from 'dlc-btc-lib/utilities'; ++ ++import { StatusLabel } from '@shared/constants/swap.constants'; ++ ++import { CopyButton } from '../../../swap.orderbook.copy-button'; ++import { OrderAmount } from './components/swap.orderbook.order.asset-value'; ++import { OrderDetails } from './components/swap.orderbook.order.details/swap.orderbook.order.details'; ++ ++function StatusButton({ ++ isInitiating, ++ onInitiate, ++}: { ++ isInitiating: boolean; ++ onInitiate: () => void; ++}): React.JSX.Element { ++ return ( ++ ++ ); ++} ++ ++const getStatusLabel = (status: OrderStatus): StatusLabel => { ++ switch (status) { ++ case OrderStatus.Redeemed: ++ case OrderStatus.Refunded: ++ case OrderStatus.CounterPartyRedeemed: ++ case OrderStatus.CounterPartyRedeemDetected: ++ return StatusLabel.Completed; ++ case OrderStatus.Matched: ++ return StatusLabel.Initiate; ++ case OrderStatus.DeadLineExceeded: ++ return StatusLabel.Expired; ++ default: ++ return StatusLabel.Pending; ++ } ++}; ++ ++interface OrderProps { ++ order: MatchedOrder; ++} ++ ++export function Order({ order }: OrderProps): React.JSX.Element { ++ const orderStatus = useOrderStatus(order); ++ ++ const [modelIsVisible, setModelIsVisible] = useState(false); ++ const [isInitiating, setIsInitiating] = useState(false); ++ const { evmInitiate } = useGarden(); ++ ++ const { source_swap, destination_swap } = order; ++ const sourceAmount = unshiftValue(new Decimal(source_swap.amount).toNumber()).toString(); ++ const destinationAmount = unshiftValue( ++ new Decimal(destination_swap.amount).toNumber() ++ ).toString(); ++ const userFriendlyStatus = orderStatus && getStatusLabel(orderStatus); ++ ++ const isFromBTC = order.source_swap.chain.toLowerCase().includes('bitcoin'); ++ const fromLabel = isFromBTC ? 'BTC' : 'iBTC'; ++ const toLabel = isFromBTC ? 'iBTC' : 'BTC'; ++ ++ const handleInitiate = async () => { ++ if (!evmInitiate) return; ++ setIsInitiating(true); ++ try { ++ const res = await evmInitiate(order); ++ if (!res.ok) { ++ throw new Error('Failed to initiate'); ++ } ++ } catch (error) { ++ alert('Failed to initiate'); ++ } finally { ++ setIsInitiating(false); ++ } ++ }; ++ ++ return ( ++ ++ ++ ++ Order ID: {truncateAddress(source_swap.swap_id)} ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Status ++ ++ {userFriendlyStatus === StatusLabel.Initiate && !isFromBTC ? ( ++ ++ ) : ( ++ ++ {userFriendlyStatus} ++ ++ )} ++ ++ ++ ++ ++ ++ ++ ++ Please initiate the swap by sending the BTC to the address below. ++ ++ ++ ++ {truncateAddress(source_swap.swap_id)} ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/swap.orderbook.orderlist.tsx b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/swap.orderbook.orderlist.tsx +new file mode 100644 +index 0000000..c63dd13 +--- /dev/null ++++ b/src/app/components/swap/components/swap.orderbook/components/swap.orderbook.orderlist/swap.orderbook.orderlist.tsx +@@ -0,0 +1,40 @@ ++import { VStack } from '@chakra-ui/react'; ++import { FadeLayer } from '@components/fade-layer/fade-layer'; ++import { MatchedOrder } from '@gardenfi/orderbook'; ++import { useOrderStatus } from '@hooks/use-swap-order-status'; ++import { scrollBarCSS } from '@styles/css-styles'; ++ ++import { Order } from './components/swap.orderbook.order/swap.orderbook.order'; ++ ++interface OrderListProps { ++ orders: MatchedOrder[]; ++} ++ ++export function OrderList({ orders }: OrderListProps): React.JSX.Element { ++ return ( ++ ++ ++ ++ {orders.map(order => ( ++ ++ ))} ++ ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/components/swap.orderbook/swap.orderbook.tsx b/src/app/components/swap/components/swap.orderbook/swap.orderbook.tsx +new file mode 100644 +index 0000000..cebbc38 +--- /dev/null ++++ b/src/app/components/swap/components/swap.orderbook/swap.orderbook.tsx +@@ -0,0 +1,30 @@ ++import { useCallback, useEffect, useState } from 'react'; ++ ++import { MatchedOrder } from '@gardenfi/orderbook'; ++import { useGarden } from '@gardenfi/react-hooks'; ++ ++import { OrderList } from './components/swap.orderbook.orderlist/swap.orderbook.orderlist'; ++ ++const POLLING_INTERVAL = 10000; ++const ORDERS_PER_PAGE = 4; ++ ++export function Orderbook(): React.JSX.Element { ++ const { orderBook } = useGarden(); ++ const [orders, setOrders] = useState([]); ++ ++ const fetchOrders = useCallback(async () => { ++ if (!orderBook) return; ++ const res = await orderBook.fetchOrders(true, false, { ++ per_page: ORDERS_PER_PAGE, ++ }); ++ setOrders(res.val.data); ++ }, [orderBook]); ++ ++ useEffect(() => { ++ void fetchOrders(); ++ const intervalId = setInterval(fetchOrders, POLLING_INTERVAL); ++ return () => clearInterval(intervalId); ++ }, [fetchOrders]); ++ ++ return ; ++} +diff --git a/src/app/components/swap/pages/swap-page.tsx b/src/app/components/swap/pages/swap-page.tsx +new file mode 100644 +index 0000000..c123435 +--- /dev/null ++++ b/src/app/components/swap/pages/swap-page.tsx +@@ -0,0 +1,18 @@ ++import { HStack } from '@chakra-ui/react'; ++import { PageLayout } from '@pages/components/page.layout'; ++ ++import { breakpoints } from '@shared/utils'; ++ ++import { Orderbook } from '../components/swap.orderbook/swap.orderbook'; ++import { Swap } from '../swap'; ++ ++export function SwapPage(): React.JSX.Element { ++ return ( ++ ++ ++ ++ ++ ++ ++ ); ++} +diff --git a/src/app/components/swap/swap.tsx b/src/app/components/swap/swap.tsx +new file mode 100644 +index 0000000..baa9a32 +--- /dev/null ++++ b/src/app/components/swap/swap.tsx +@@ -0,0 +1,177 @@ ++import { CheckCircleIcon, ChevronDownIcon, ChevronUpIcon } from '@chakra-ui/icons'; ++import { Button, HStack, Input, Spinner, Text, VStack } from '@chakra-ui/react'; ++import { useBitcoinPrice } from '@hooks/use-bitcoin-price'; ++import { useSwap } from '@hooks/use-swap'; ++import Decimal from 'decimal.js'; ++import { truncateAddress } from 'dlc-btc-lib/utilities'; ++ ++import { BITCOIN_NETWORK_MAP } from '@shared/constants/bitcoin.constants'; ++ ++import { SwapAmountCard } from './components/swap-amount-card'; ++import { SwapButton } from './components/swap-button'; ++import { SwapHeader } from './components/swap-header'; ++ ++const assetValueInUSD = (assetAmount: string, currentBitcoinPrice: number): string => { ++ try { ++ return `$ ${new Decimal(assetAmount).mul(currentBitcoinPrice).toNumber().toLocaleString('en-US')}`; ++ } catch (error) { ++ return '0'; ++ } ++}; ++ ++export function Swap(): React.JSX.Element { ++ const { ++ inputToken, ++ setTokens, ++ inputAmount, ++ validateAndSetInputAmount, ++ outputToken, ++ outputAmount, ++ handleSwap, ++ bitcoinAddress, ++ setBitcoinAddress, ++ isQuoteLoading, ++ quoteError, ++ swapError, ++ isCompleted, ++ } = useSwap(BITCOIN_NETWORK_MAP[appConfiguration.bitcoinNetwork]); ++ ++ const { bitcoinPrice } = useBitcoinPrice(); ++ ++ return ( ++ ++ ++ ++ {outputToken.symbol === 'BTC' ? ( ++ <> ++ ++ ++ ++ ++ ++ ++ ) : ( ++ <> ++ ++ ++ ++ ++ ++ ++ )} ++ {isQuoteLoading && ( ++ ++ ++ Loading Quote ++ ++ )} ++ {quoteError || ++ (swapError && ( ++ ++ {`Error: ${quoteError ? quoteError : swapError}`} ++ ++ ))} ++ {isCompleted && ( ++ ++ {`Swap Request Sent, Order ID: ${truncateAddress('asds')}`} ++ ++ ++ )} ++ ++ ++ ++ ++ {`${outputToken.symbol === 'BTC' ? 'Receive' : 'Refund'}`} Address ++ ++ setBitcoinAddress(e.target.value)} ++ borderColor={'white.03'} ++ color={'white'} ++ focusBorderColor={'rgba(255,255,255,1)'} ++ isInvalid={!bitcoinAddress} ++ placeholder="Enter Bitcoin Address" ++ /> ++ ++ {/* */} ++ {isQuoteLoading || ++ (quoteError === null && ( ++ handleSwap()} /> ++ ))} ++ ++ ); ++} +diff --git a/src/app/functions/configuration.functions.ts b/src/app/functions/configuration.functions.ts +index 263dc1f..1c11b51 100644 +--- a/src/app/functions/configuration.functions.ts ++++ b/src/app/functions/configuration.functions.ts +@@ -4,7 +4,7 @@ import { RippleNetwork, RippleNetworkID } from '@models/ripple.models'; + import { supportedEthereumNetworks } from 'dlc-btc-lib/constants'; + import { getEthereumContract, getProvider } from 'dlc-btc-lib/ethereum-functions'; + import { EthereumDeploymentPlan, EthereumNetwork, EthereumNetworkID } from 'dlc-btc-lib/models'; +-import { Contract, providers } from 'ethers'; ++import { BrowserProvider, Contract, JsonRpcSigner } from 'ethers'; + import { filter, fromPairs, includes, map, pipe } from 'ramda'; + import { Account, Chain, Client, HttpTransport, Transport, http } from 'viem'; + import { Config, createConfig, useConnectorClient } from 'wagmi'; +@@ -84,7 +84,7 @@ export function getWagmiConfiguration(ethereumNetworkIDs: EthereumNetworkID[]): + }); + } + +-function clientToSigner(client: Client): providers.JsonRpcSigner { ++async function clientToSigner(client: Client): Promise { + const { account, chain, transport } = client; + + const network = { +@@ -92,12 +92,20 @@ function clientToSigner(client: Client): providers.Js + name: chain.name, + ensAddress: chain.contracts?.ensRegistry?.address, + }; +- return new providers.Web3Provider(transport, network).getSigner(account.address); ++ return await new BrowserProvider(transport, network).getSigner(account.address); + } + +-export function useEthersSigner({ chainId }: { chainId?: number } = {}): +- | providers.JsonRpcSigner +- | undefined { ++export function useEthersSigner({ chainId }: { chainId?: number } = {}): { ++ getEthersSigner: () => Promise; ++} { + const { data: client } = useConnectorClient({ chainId }); +- return useMemo(() => (client ? clientToSigner(client) : undefined), [client]); ++ ++ async function getEthersSigner() { ++ if (!client) return undefined; ++ return await clientToSigner(client); ++ } ++ ++ return { ++ getEthersSigner, ++ }; + } +diff --git a/src/app/hooks/use-swap-order-status.ts b/src/app/hooks/use-swap-order-status.ts +new file mode 100644 +index 0000000..a55775f +--- /dev/null ++++ b/src/app/hooks/use-swap-order-status.ts +@@ -0,0 +1,84 @@ ++import { useEffect, useState } from 'react'; ++ ++import { OrderStatus, ParseOrderStatus } from '@gardenfi/core'; ++import { Chain, MatchedOrder } from '@gardenfi/orderbook'; ++import { GARDEN_CONFIG } from '@gardenfi/react-hooks'; ++ ++async function fetchJson(url: string, options?: RequestInit): Promise { ++ const response = await fetch(url, { ++ headers: { 'Content-Type': 'application/json' }, ++ ...options, ++ }); ++ ++ if (!response.ok) { ++ throw new Error(`HTTP error! status: ${response.status}`); ++ } ++ ++ return response.json() as Promise; ++} ++ ++const createAPI = (isTestnet: boolean) => { ++ const apiConfiguration = isTestnet ? GARDEN_CONFIG.testnet : GARDEN_CONFIG.mainnet; ++ ++ if (!apiConfiguration) { ++ throw new Error('Invalid Configuration'); ++ } ++ ++ Object.entries(apiConfiguration).forEach(([key, value]) => { ++ if (!value) throw new Error(`Missing ${key} in config`); ++ }); ++ ++ return { ++ home: 'https://garden.finance', ++ data: { ++ data: apiConfiguration, ++ assets: `${apiConfiguration.blockNumberFetcherUrl}/assets`, ++ blockNumbers: (network: 'mainnet' | 'testnet') => ++ `${apiConfiguration.blockNumberFetcherUrl}/blocknumber/${network}`, ++ }, ++ orderbook: apiConfiguration.orderBookUrl, ++ quote: apiConfiguration.quoteUrl, ++ mempool: { ++ testnet: 'https://mempool.space/testnet4/api', ++ mainnet: 'https://mempool.space/api', ++ }, ++ }; ++}; ++ ++export const useOrderStatus = (order: MatchedOrder) => { ++ const [blockNumbers, setBlockNumbers] = useState | null>(null); ++ const [status, setStatus] = useState(); ++ ++ const isTestnet = ['testnet', 'devnet', 'localhost'].includes(appConfiguration.appEnvironment); ++ ++ useEffect(() => { ++ const fetchBlockNumbers = async () => { ++ try { ++ const data = await fetchJson>( ++ createAPI(isTestnet).data.blockNumbers('testnet') ++ ); ++ setBlockNumbers(data); ++ } catch (error) { ++ // eslint-disable-next-line no-console ++ console.error('Failed to fetch Block Numbers:', error); ++ } ++ }; ++ ++ void fetchBlockNumbers(); ++ }, []); ++ ++ useEffect(() => { ++ if (!blockNumbers) return; ++ ++ const { source_swap, destination_swap } = order; ++ const sourceBlockNumber = blockNumbers[source_swap.chain]; ++ const destinationBlockNumber = blockNumbers[destination_swap.chain]; ++ ++ if (!sourceBlockNumber || !destinationBlockNumber) return; ++ ++ const orderStatus = ParseOrderStatus(order, sourceBlockNumber, destinationBlockNumber); ++ setStatus(orderStatus); ++ }, [blockNumbers, order]); ++ ++ return status; ++}; +diff --git a/src/app/hooks/use-swap.ts b/src/app/hooks/use-swap.ts +new file mode 100644 +index 0000000..2d5d535 +--- /dev/null ++++ b/src/app/hooks/use-swap.ts +@@ -0,0 +1,256 @@ ++import { useEffect, useState } from 'react'; ++ ++import { SwapParams } from '@gardenfi/core'; ++import { Asset, SupportedAssets } from '@gardenfi/orderbook'; ++import { useGarden } from '@gardenfi/react-hooks'; ++import Decimal from 'decimal.js'; ++import { isBitcoinAddress } from 'dlc-btc-lib/bitcoin-functions'; ++import { Network } from 'dlc-btc-lib/models'; ++import { shiftValue, unshiftValue } from 'dlc-btc-lib/utilities'; ++ ++import { BITCOIN_NETWORK_MAP } from '@shared/constants/bitcoin.constants'; ++ ++interface QuoteParams { ++ fromAsset: Asset; ++ toAsset: Asset; ++ amount: number; ++ isExactOut?: boolean; ++} ++ ++enum SupportedEVMNetworks { ++ ArbitrumSepolia = '421614', ++ BaseSepolia = '84532', ++} ++ ++const SUPPORTED_ASSETS_BTC_MAP = { ++ mainnet: SupportedAssets.mainnet.bitcoin_primary, ++ testnet: SupportedAssets.testnet.bitcoin_testnet_primary, ++ devnet: SupportedAssets.testnet.bitcoin_testnet_primary, ++ localhost: SupportedAssets.testnet.bitcoin_testnet_primary, ++}; ++ ++const SUPPORTED_ASSETS_IBTC_MAP = { ++ [SupportedEVMNetworks.ArbitrumSepolia]: ++ SupportedAssets.testnet.arbitrum_sepolia_0xdfe6d9363ee96152d39391009a6723819d9e25eb, ++ [SupportedEVMNetworks.BaseSepolia]: ++ SupportedAssets.testnet.base_sepolia_0xbcdad29ac77e5bb27fd528ab0045af630259fe4f, ++}; ++ ++function useDebounce(value: T, delay: number): T { ++ const [debouncedValue, setDebouncedValue] = useState(value); ++ ++ useEffect(() => { ++ const timer = setTimeout(() => { ++ setDebouncedValue(value); ++ }, delay); ++ ++ return () => { ++ clearTimeout(timer); ++ }; ++ }, [value, delay]); ++ ++ return debouncedValue; ++} ++ ++interface UseSwapReturnType { ++ handleSwap: () => void; ++ inputToken: Asset; ++ setTokens: () => void; ++ inputAmount: string; ++ validateAndSetInputAmount: (amount: string) => void; ++ outputToken: Asset; ++ setOutputToken: (token: Asset) => void; ++ outputAmount: string | undefined; ++ bitcoinAddress: string; ++ setBitcoinAddress: (address: string) => void; ++ isQuoteLoading: boolean; ++ quoteError: string | null; ++ swapError: string | null; ++ isCompleted: string | null; ++} ++ ++export function useSwap(_bitcoinNetwork: Network): UseSwapReturnType { ++ const { initializeSecretManager, swapAndInitiate, getQuote } = useGarden(); ++ ++ const [inputToken, setInputToken] = useState( ++ SUPPORTED_ASSETS_IBTC_MAP[SupportedEVMNetworks.ArbitrumSepolia] ++ ); ++ const [inputAmount, setInputAmount] = useState('0.01'); ++ ++ const [outputToken, setOutputToken] = useState( ++ SUPPORTED_ASSETS_BTC_MAP[appConfiguration.appEnvironment] ++ ); ++ const [outputAmount, setOutputAmount] = useState(); ++ ++ const [isQuoteLoading, setIsQuoteLoading] = useState(false); ++ const [quoteError, setQuoteError] = useState(null); ++ ++ const debouncedInputAmount = useDebounce(inputAmount, 500); ++ ++ const [bitcoinAddress, setBitcoinAddress] = useState(''); ++ ++ const [isCompleted, setIsCompleted] = useState(null); ++ const [swapError, setSwapError] = useState(null); ++ ++ function setTokens() { ++ setInputToken(outputToken); ++ setOutputToken(inputToken); ++ } ++ ++ function validateAndSetInputAmount(value: string) { ++ setInputAmount(value); ++ } ++ ++ useEffect(() => { ++ let timeoutId: NodeJS.Timeout; ++ ++ if (isCompleted || swapError) { ++ timeoutId = setTimeout(() => { ++ setIsCompleted(null); ++ setSwapError(null); ++ }, 5000); ++ } ++ ++ return () => { ++ if (timeoutId) { ++ clearTimeout(timeoutId); ++ } ++ }; ++ }, [isCompleted, swapError]); ++ ++ useEffect(() => { ++ const updateQuote = async () => { ++ if (Number(debouncedInputAmount) <= 0) { ++ setOutputAmount('0'); ++ return; ++ } ++ ++ setIsQuoteLoading(true); ++ setQuoteError(null); ++ ++ try { ++ const sendAmount = shiftValue(Number(debouncedInputAmount)); ++ ++ const { amount } = await fetchQuote({ ++ fromAsset: inputToken, ++ toAsset: outputToken, ++ amount: sendAmount, ++ }); ++ ++ setOutputAmount(unshiftValue(new Decimal(amount).toNumber()).toString()); // Assuming 8 decimals for BTC ++ } catch (error) { ++ setQuoteError(error instanceof Error ? error.message : 'Failed to fetch quote'); ++ setOutputAmount('0'); ++ } finally { ++ setIsQuoteLoading(false); ++ } ++ }; ++ ++ void updateQuote(); ++ // eslint-disable-next-line react-hooks/exhaustive-deps ++ }, [debouncedInputAmount, inputToken, outputToken, getQuote]); ++ ++ const initializeSecret = async () => { ++ if (!initializeSecretManager) { ++ throw new Error('Secret Manager initializer not available'); ++ } ++ ++ const response = await initializeSecretManager(); ++ ++ if (!response.ok || !response.val.getMasterPrivKey()) { ++ throw new Error('Failed to initialize Secret Manager'); ++ } ++ ++ return response; ++ }; ++ ++ const fetchQuote = async (quoteParams: QuoteParams) => { ++ if (!getQuote) { ++ throw new Error('Quote service not available'); ++ } ++ ++ const quote = await getQuote(quoteParams); ++ ++ if (quote.error) { ++ throw new Error(quote.error); ++ } ++ ++ const [strategy, amount] = Object.entries(quote.val.quotes)[0]; ++ ++ return { strategy, amount }; ++ }; ++ ++ const executeSwap = async (swapParams: SwapParams) => { ++ if (!swapAndInitiate) { ++ throw new Error('Swap service not available'); ++ } ++ ++ const response = await swapAndInitiate(swapParams); ++ ++ if (response.error) { ++ throw new Error(response.error); ++ } ++ ++ return response; ++ }; ++ ++ const handleSwap = async () => { ++ try { ++ if (!isBitcoinAddress(bitcoinAddress, BITCOIN_NETWORK_MAP[appConfiguration.bitcoinNetwork])) { ++ setSwapError('Invalid Bitcoin Address'); ++ return; ++ } ++ ++ await initializeSecret(); ++ ++ const sendAmount = shiftValue(new Decimal(inputAmount).toNumber()); ++ ++ const { strategy, amount } = await fetchQuote({ ++ fromAsset: inputToken, ++ toAsset: outputToken, ++ amount: sendAmount, ++ }); ++ ++ const swapParams = { ++ fromAsset: inputToken, ++ toAsset: outputToken, ++ sendAmount: sendAmount.toString(), ++ receiveAmount: amount.toString(), ++ additionalData: { ++ strategyId: strategy, ++ btcAddress: bitcoinAddress, ++ }, ++ }; ++ ++ const response = await executeSwap(swapParams); ++ ++ if (response.error) { ++ setSwapError(response.error); ++ return response; ++ } ++ ++ setIsCompleted(response.val.source_swap.swap_id); ++ ++ return response; ++ } catch (error) { ++ setSwapError(error instanceof Error ? error.message : 'Failed to Swap'); ++ } ++ }; ++ ++ return { ++ handleSwap, ++ setTokens, ++ inputToken, ++ inputAmount, ++ validateAndSetInputAmount, ++ setOutputToken, ++ outputToken, ++ outputAmount, ++ bitcoinAddress, ++ setBitcoinAddress, ++ isQuoteLoading, ++ isCompleted, ++ quoteError, ++ swapError, ++ }; ++} +diff --git a/src/shared/constants/swap.constants.ts b/src/shared/constants/swap.constants.ts +new file mode 100644 +index 0000000..4edec05 +--- /dev/null ++++ b/src/shared/constants/swap.constants.ts +@@ -0,0 +1,6 @@ ++export enum StatusLabel { ++ Completed = 'Completed', ++ Pending = 'In Progress', ++ Expired = 'Expired', ++ Initiate = 'Awaiting Initiate', ++} +diff --git a/src/shared/utils.ts b/src/shared/utils.ts +index e7f5233..27a72f4 100644 +--- a/src/shared/utils.ts ++++ b/src/shared/utils.ts +@@ -54,6 +54,8 @@ export function formatEvent(event: DetailedEvent): FormattedEvent { + export function parseAssetAmount(assetAmount: string): Decimal { + const isValidNumber = /^-?\d*\.?\d*$/.test(assetAmount); + ++ console.log('isValidNumber', isValidNumber); ++ + if (isValidNumber) { + try { + return new Decimal(assetAmount); +diff --git a/src/styles/app-theme.ts b/src/styles/app-theme.ts +index db734c9..525c003 100644 +--- a/src/styles/app-theme.ts ++++ b/src/styles/app-theme.ts +@@ -49,6 +49,7 @@ export const appTheme = extendTheme({ + 'background.website.01': 'rgba(0, 0, 0, 1)', + 'background.container.01': 'rgba(23, 24, 29, 1)', + 'background.content.01': 'rgba(51, 51, 51, 1)', ++ 'background.content.02': 'rgba(77, 77, 77, 1)', + 'grey.01': 'rgba(181, 182, 187, 1)', + 'border.lightBlue.01': 'rgba(50, 201, 247,0.75)', + 'border.white.01': 'rgba(255,255,255,0.25)', +diff --git a/vite.config.ts b/vite.config.ts +index 4070689..972271f 100644 +--- a/vite.config.ts ++++ b/vite.config.ts +@@ -80,6 +80,7 @@ export default defineConfig(async ({ mode }) => { + target: 'esnext', + }, + define: { ++ global: 'window', + appConfiguration, + }, + resolve: { +diff --git a/yarn.lock b/yarn.lock +index 135c23f..0f26539 100644 +--- a/yarn.lock ++++ b/yarn.lock +@@ -12,6 +12,11 @@ + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + ++"@adraffy/ens-normalize@^1.10.1": ++ version "1.11.0" ++ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33" ++ integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg== ++ + "@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" +@@ -201,10 +206,10 @@ + dependencies: + regenerator-runtime "^0.14.0" + +-"@babel/runtime@^7.19.4": +- version "7.25.0" +- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" +- integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== ++"@babel/runtime@^7.26.0": ++ version "7.26.0" ++ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" ++ integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + +@@ -292,6 +297,37 @@ + "@noble/hashes" "^1.1.5" + "@noble/secp256k1" "^1.7.1" + ++"@catalogfi/extension@^0.1.1": ++ version "0.1.1" ++ resolved "https://registry.yarnpkg.com/@catalogfi/extension/-/extension-0.1.1.tgz#b07400f2365a32dd13a7cdefe65949e0705a5342" ++ integrity sha512-ny4xiQ95VdjFWDR2T22xLQxUY99yKRD4EOlxZInKCHGB0jnQaUrsj9iKGZ2DRGUGPpH/iDkruoXjibw7s78BIw== ++ ++"@catalogfi/utils@^0.1.10", "@catalogfi/utils@^0.1.11", "@catalogfi/utils@^0.1.6": ++ version "0.1.11" ++ resolved "https://registry.yarnpkg.com/@catalogfi/utils/-/utils-0.1.11.tgz#3ccdba102b88cb036ae0b14f7b300e0fc83c93f6" ++ integrity sha512-+rt2I4W5ip6odg8ZSmoTyCY0GllPzSYqWz8xRyvgN58MVJJMAFjsp4XwyWzkIfKCRKOJve/vjYdZQx92CTO2gw== ++ ++"@catalogfi/wallets@^0.2.51": ++ version "0.2.54" ++ resolved "https://registry.yarnpkg.com/@catalogfi/wallets/-/wallets-0.2.54.tgz#8d5323b381dd70964e2dac45a2d89015a3e3a743" ++ integrity sha512-ffcvXPx/qklyjR8HLr2ni/hZFA8mL+DgQxMmozTRF2UV0ngLx8aURDHN/FHg2vQ6MU5cYLEl3h+H8frPKRfL4w== ++ dependencies: ++ "@catalogfi/extension" "^0.1.1" ++ "@catalogfi/utils" "^0.1.10" ++ "@noble/hashes" "^1.4.0" ++ bip32 "^4.0.0" ++ bip39 "^3.1.0" ++ bitcoinjs-lib "^6.1.5" ++ bufferutil "^4.0.8" ++ dotenv "^16.3.1" ++ ecpair "^2.1.0" ++ tiny-secp256k1 "^2.2.3" ++ typechain "^8.3.2" ++ utf-8-validate "^6.0.3" ++ uuid "^9.0.1" ++ viem "^2.20.1" ++ yup "^1.4.0" ++ + "@chakra-ui/accordion@2.3.1": + version "2.3.1" + resolved "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.3.1.tgz" +@@ -1105,17 +1141,15 @@ + resolved "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.2.0.tgz" + integrity sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ== + +-"@coinbase/wallet-sdk@4.0.4": +- version "4.0.4" +- resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.0.4.tgz#634cd89bac93eeaf381a1f026476794e53431ed6" +- integrity sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA== ++"@coinbase/wallet-sdk@4.2.3": ++ version "4.2.3" ++ resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.2.3.tgz#a30fa0605b24bc42c37f52a62d2442bcbb7734af" ++ integrity sha512-BcyHZ/Ec84z0emORzqdXDv4P0oV+tV3a0OirfA8Ko1JGBIAVvB+hzLvZzCDvnuZx7MTK+Dd8Y9Tjlo446BpCIg== + dependencies: +- buffer "^6.0.3" ++ "@noble/hashes" "^1.4.0" + clsx "^1.2.1" + eventemitter3 "^5.0.1" +- keccak "^3.0.3" +- preact "^10.16.0" +- sha.js "^2.4.11" ++ preact "^10.24.2" + + "@dfns/sdk-browser@^0.5.9": + version "0.5.9" +@@ -1135,6 +1169,11 @@ + cross-fetch "3.1.6" + uuid "9.0.0" + ++"@ecies/ciphers@^0.2.1": ++ version "0.2.2" ++ resolved "https://registry.yarnpkg.com/@ecies/ciphers/-/ciphers-0.2.2.tgz#82a15b10a6e502b63fb30915d944b2eaf3ff17ff" ++ integrity sha512-ylfGR7PyTd+Rm2PqQowG08BCKA22QuX8NzrL+LxAAvazN10DMwdJ2fWwAzRj05FI/M8vNFGm3cv9Wq/GFWCBLg== ++ + "@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz" +@@ -1893,6 +1932,58 @@ + resolved "https://registry.npmjs.org/@fontsource/poppins/-/poppins-5.0.12.tgz" + integrity sha512-0qzBxtIJLh82iMJ9pCXKYwGs1zyS+jyUmwVJ59+JdYnEaFVkDsxVOk9yDWfVOs14ALUneodU2m5YSGma6dCYCw== + ++"@gardenfi/core@0.3.0-beta.14", "@gardenfi/core@^0.3.0-beta.14": ++ version "0.3.0-beta.14" ++ resolved "https://registry.yarnpkg.com/@gardenfi/core/-/core-0.3.0-beta.14.tgz#e66599cff3ddb4584648d628dbae02d4aa3836a6" ++ integrity sha512-V73jDvdchN09UqYdcyOCI4s4ekHY94NLoGnxqp2579y6sSYjqJf+5WXyn89Pb7bjrCOpYOfldivWKXYfwfLkWQ== ++ dependencies: ++ "@catalogfi/utils" "^0.1.6" ++ "@catalogfi/wallets" "^0.2.51" ++ "@gardenfi/orderbook" "^0.2.0-beta.41" ++ "@gardenfi/utils" "^0.0.1-beta.19" ++ bignumber.js "^9.1.2" ++ bitcoinjs-lib "^6.1.6" ++ tiny-secp256k1 "^2.2.3" ++ varuint-bitcoin "^1.1.2" ++ viem "^2.21.15" ++ ++"@gardenfi/orderbook@0.2.0-beta.41", "@gardenfi/orderbook@^0.2.0-beta.41": ++ version "0.2.0-beta.41" ++ resolved "https://registry.yarnpkg.com/@gardenfi/orderbook/-/orderbook-0.2.0-beta.41.tgz#a802ddba48023956160fa2d2fda0676c520a5dbb" ++ integrity sha512-I8GisEgUGNX84WKZSKEAqMsSD9wvfY9hzY5iL2V5vc+jqblpc+5Exbk/yVFINI3DoqtuaVb1h/dqTmMFotu0hA== ++ dependencies: ++ "@catalogfi/utils" "^0.1.6" ++ "@gardenfi/utils" "^0.0.1-beta.19" ++ bufferutil "^4.0.8" ++ siwe "^2.1.4" ++ utf-8-validate "^6.0.3" ++ viem "^2.21.15" ++ ws "^8.14.2" ++ ++"@gardenfi/react-hooks@0.0.1-beta.135": ++ version "0.0.1-beta.135" ++ resolved "https://registry.yarnpkg.com/@gardenfi/react-hooks/-/react-hooks-0.0.1-beta.135.tgz#a74d538b455b4a2baff1401eb65c4ea42e194c80" ++ integrity sha512-I4R391jusGV30K8s+6cDgc7xwAcwj1rUeg2Uw3a/N96KjO2f0l+cn8NQZsSIcJMzL4GTgICpQv2Ci/JIe0VdbQ== ++ dependencies: ++ "@catalogfi/utils" "^0.1.6" ++ "@catalogfi/wallets" "^0.2.51" ++ "@gardenfi/core" "^0.3.0-beta.14" ++ "@gardenfi/orderbook" "^0.2.0-beta.41" ++ "@gardenfi/utils" "^0.0.1-beta.19" ++ react "^18.3.1" ++ viem "^2.21.15" ++ wagmi "^2.12.16" ++ ++"@gardenfi/utils@^0.0.1-beta.19": ++ version "0.0.1-beta.19" ++ resolved "https://registry.yarnpkg.com/@gardenfi/utils/-/utils-0.0.1-beta.19.tgz#e74cdc12ff04bed142ebedc32f063daec145ef06" ++ integrity sha512-hgTc3iy2TM7Rr2J7ApM+yzSOSsisHW3T3+PKMWcBZcc4CIwBAquTCRdQNkMKFbawsvB4LMieIiWYWjm+IQqckQ== ++ dependencies: ++ "@catalogfi/utils" "^0.1.11" ++ axios "^1.7.2" ++ jwt-decode "^4.0.0" ++ viem "^2.21.15" ++ + "@gemwallet/api@3.8.0", "@gemwallet/api@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@gemwallet/api/-/api-3.8.0.tgz#46bc47789848c7ac9cc620613e0a1757dc8668a1" +@@ -2152,10 +2243,10 @@ + resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.1.tgz#e89b840a7af8097a8ed4953d8dc8470d1302d3ef" + integrity sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw== + +-"@metamask/sdk-communication-layer@0.27.0": +- version "0.27.0" +- resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.27.0.tgz#8d618fadd39f11627d5b3ef1bc72867439e33ff4" +- integrity sha512-G9LCaQzIqp5WmUmvHN6UUdjWrBh67MbRobmbbs5fcc2+9XFhj3vBgtyleUYjun91jSlPHoZeo+f/Pj4/WoPIJg== ++"@metamask/sdk-communication-layer@0.31.0": ++ version "0.31.0" ++ resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.31.0.tgz#0acc063b62aa09d044c7aab65801712d760e53b2" ++ integrity sha512-V9CxdzabDPjQVgmKGHsyU3SYt4Af27g+4DbGCx0fLoHqN/i1RBDZqs/LYbJX3ykJCANzE+llz/MolMCMrzM2RA== + dependencies: + bufferutil "^4.0.8" + date-fns "^2.29.3" +@@ -2163,38 +2254,35 @@ + utf-8-validate "^5.0.2" + uuid "^8.3.2" + +-"@metamask/sdk-install-modal-web@0.26.5": +- version "0.26.5" +- resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.26.5.tgz#b696c78818adaff85d01a4f41fecc8fd2c80bc59" +- integrity sha512-qVA9Nk+NorGx5hXyODy5wskptE8R7RNYTYt49VbQpJogqbbVe1dnJ98+KaA43PBN4XYMCXmcIhULNiEHGsLynA== ++"@metamask/sdk-install-modal-web@0.31.2": ++ version "0.31.2" ++ resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.31.2.tgz#bb8c92a6844a632be8525e7bb5a35924a926d6cd" ++ integrity sha512-KPv36kQjmTwErU8g2neuHHSgkD5+1hp4D6ERfk5Kc2r73aOYNCdG9wDGRUmFmcY2MKkeK1EuDyZfJ4FPU30fxQ== + dependencies: +- qr-code-styling "^1.6.0-rc.1" ++ "@paulmillr/qr" "^0.2.1" + +-"@metamask/sdk@0.27.0": +- version "0.27.0" +- resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.27.0.tgz#38617985b8305a0f5d482cdd7af8ddec87968bb7" +- integrity sha512-6sMjr/0qR700X1svPGEQ4rBdtccidBLeTC27fYQc7r9ROgSixB1DUUAyu/LoySVqt3Hu/Zm7NnAHXuT228ht7A== ++"@metamask/sdk@0.31.2": ++ version "0.31.2" ++ resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.31.2.tgz#2ec1c1c7cf6a444e65104862e83814a493047d72" ++ integrity sha512-6MWON2g1j7XwAHWam4trusGxeyhQweNLEHPsfuIxSwcsXoEm08Jj80OglJxQI4KwjcDnjSWBkQGG3mmK6ug/cA== + dependencies: ++ "@babel/runtime" "^7.26.0" + "@metamask/onboarding" "^1.0.1" + "@metamask/providers" "16.1.0" +- "@metamask/sdk-communication-layer" "0.27.0" +- "@metamask/sdk-install-modal-web" "0.26.5" +- "@types/dom-screen-wake-lock" "^1.0.0" ++ "@metamask/sdk-communication-layer" "0.31.0" ++ "@metamask/sdk-install-modal-web" "0.31.2" ++ "@paulmillr/qr" "^0.2.1" + bowser "^2.9.0" + cross-fetch "^4.0.0" + debug "^4.3.4" +- eciesjs "^0.3.15" ++ eciesjs "^0.4.11" + eth-rpc-errors "^4.0.3" +- eventemitter2 "^6.4.7" +- i18next "23.11.5" +- i18next-browser-languagedetector "7.1.0" ++ eventemitter2 "^6.4.9" + obj-multiplex "^1.0.0" + pump "^3.0.0" +- qrcode-terminal-nooctal "^0.12.1" +- react-native-webview "^11.26.0" + readable-stream "^3.6.2" +- rollup-plugin-visualizer "^5.9.2" + socket.io-client "^4.5.1" ++ tslib "^2.6.0" + util "^0.12.4" + uuid "^8.3.2" + +@@ -2333,6 +2421,11 @@ + "@netlify/node-cookies" "^0.1.0" + urlpattern-polyfill "8.0.2" + ++"@noble/ciphers@^1.0.0": ++ version "1.1.3" ++ resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.1.3.tgz#eb27085aa7ce94d8c6eaeb64299bab0589920ec1" ++ integrity sha512-Ygv6WnWJHLLiW4fnNDC1z+i13bud+enXOFRBlpxI+NJliPWx5wdR+oWlTjLuBPTqjUjtHXtjkU6w3kuuH6upZA== ++ + "@noble/curves@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" +@@ -2347,23 +2440,40 @@ + dependencies: + "@noble/hashes" "1.4.0" + +-"@noble/curves@^1.0.0", "@noble/curves@~1.6.0": ++"@noble/curves@1.6.0", "@noble/curves@^1.0.0", "@noble/curves@^1.6.0", "@noble/curves@~1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" + integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== + dependencies: + "@noble/hashes" "1.5.0" + ++"@noble/curves@1.7.0", "@noble/curves@~1.7.0": ++ version "1.7.0" ++ resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" ++ integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== ++ dependencies: ++ "@noble/hashes" "1.6.0" ++ + "@noble/hashes@1.4.0", "@noble/hashes@^1.1.5", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +-"@noble/hashes@1.5.0", "@noble/hashes@^1.0.0", "@noble/hashes@~1.5.0": ++"@noble/hashes@1.5.0", "@noble/hashes@^1.0.0", "@noble/hashes@^1.5.0", "@noble/hashes@~1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" + integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== + ++"@noble/hashes@1.6.0": ++ version "1.6.0" ++ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" ++ integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== ++ ++"@noble/hashes@1.6.1", "@noble/hashes@^1.1.2", "@noble/hashes@~1.6.0": ++ version "1.6.1" ++ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.1.tgz#df6e5943edcea504bac61395926d6fd67869a0d5" ++ integrity sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w== ++ + "@noble/secp256k1@^1.7.1": + version "1.7.1" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" +@@ -2482,6 +2592,11 @@ + "@parcel/watcher-win32-ia32" "2.4.1" + "@parcel/watcher-win32-x64" "2.4.1" + ++"@paulmillr/qr@^0.2.1": ++ version "0.2.1" ++ resolved "https://registry.yarnpkg.com/@paulmillr/qr/-/qr-0.2.1.tgz#76ade7080be4ac4824f638146fd8b6db1805eeca" ++ integrity sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ== ++ + "@playwright/test@^1.39.0": + version "1.42.1" + resolved "https://registry.npmjs.org/@playwright/test/-/test-1.42.1.tgz" +@@ -2667,10 +2782,10 @@ + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.2.tgz#851959c4c1c3c6647aba1f388198c8243aed6917" + integrity sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ== + +-"@safe-global/safe-apps-provider@0.18.3": +- version "0.18.3" +- resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.3.tgz#805a42e24f5dde803cb96dac251a3c9e256de45b" +- integrity sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ== ++"@safe-global/safe-apps-provider@0.18.5": ++ version "0.18.5" ++ resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.5.tgz#745a932bda3739a8a298ae44ec6c465f6c4773b7" ++ integrity sha512-9v9wjBi3TwLsEJ3C2ujYoexp3pFJ0omDLH/GX91e2QB+uwCKTBYyhxFSrTQ9qzoyQd+bfsk4gjOGW87QcJhf7g== + dependencies: + "@safe-global/safe-apps-sdk" "^9.1.0" + events "^3.3.0" +@@ -2708,6 +2823,11 @@ + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== + ++"@scure/base@~1.2.1": ++ version "1.2.1" ++ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.1.tgz#dd0b2a533063ca612c17aa9ad26424a2ff5aa865" ++ integrity sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ== ++ + "@scure/bip32@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" +@@ -2717,7 +2837,7 @@ + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +-"@scure/bip32@^1.3.1": ++"@scure/bip32@1.5.0", "@scure/bip32@^1.3.1", "@scure/bip32@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.5.0.tgz#dd4a2e1b8a9da60e012e776d954c4186db6328e6" + integrity sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw== +@@ -2726,6 +2846,15 @@ + "@noble/hashes" "~1.5.0" + "@scure/base" "~1.1.7" + ++"@scure/bip32@1.6.0": ++ version "1.6.0" ++ resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.6.0.tgz#6dbc6b4af7c9101b351f41231a879d8da47e0891" ++ integrity sha512-82q1QfklrUUdXJzjuRU7iG7D7XiFx5PHYVS0+oeNKhyDLT7WPqs6pBcM2W5ZdwOwKCwoE1Vy1se+DHjcXwCYnA== ++ dependencies: ++ "@noble/curves" "~1.7.0" ++ "@noble/hashes" "~1.6.0" ++ "@scure/base" "~1.2.1" ++ + "@scure/bip39@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" +@@ -2734,7 +2863,7 @@ + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +-"@scure/bip39@^1.2.1": ++"@scure/bip39@1.4.0", "@scure/bip39@^1.2.1", "@scure/bip39@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.4.0.tgz#664d4f851564e2e1d4bffa0339f9546ea55960a6" + integrity sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw== +@@ -2742,6 +2871,14 @@ + "@noble/hashes" "~1.5.0" + "@scure/base" "~1.1.8" + ++"@scure/bip39@1.5.0": ++ version "1.5.0" ++ resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.5.0.tgz#c8f9533dbd787641b047984356531d84485f19be" ++ integrity sha512-Dop+ASYhnrwm9+HA/HwXg7j2ZqM6yk2fyLWb5znexjctFY3+E+eU8cIWI0Pql0Qx4hPZCijlGq4OL71g+Uz30A== ++ dependencies: ++ "@noble/hashes" "~1.6.0" ++ "@scure/base" "~1.2.1" ++ + "@scure/btc-signer@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@scure/btc-signer/-/btc-signer-1.3.2.tgz#56cf02a2e318097b1e4f531fac8ef114bdf4ddc8" +@@ -2762,6 +2899,16 @@ + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== + ++"@spruceid/siwe-parser@^2.1.2": ++ version "2.1.2" ++ resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.2.tgz#3e13e7d3ac0bfdaf109a07342590eb21daee2fc3" ++ integrity sha512-d/r3S1LwJyMaRAKQ0awmo9whfXeE88Qt00vRj91q5uv5ATtWIQEGJ67Yr5eSZw5zp1/fZCXZYuEckt8lSkereQ== ++ dependencies: ++ "@noble/hashes" "^1.1.2" ++ apg-js "^4.3.0" ++ uri-js "^4.4.1" ++ valid-url "^1.0.9" ++ + "@stablelib/aead@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" +@@ -3225,11 +3372,6 @@ + dependencies: + "@types/ms" "*" + +-"@types/dom-screen-wake-lock@^1.0.0": +- version "1.0.3" +- resolved "https://registry.yarnpkg.com/@types/dom-screen-wake-lock/-/dom-screen-wake-lock-1.0.3.tgz#c3588a5f6f40fae957f9ce5be9bc4927a61bb9a0" +- integrity sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw== +- + "@types/estree@1.0.5", "@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" +@@ -3309,6 +3451,11 @@ + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + ++"@types/prettier@^2.1.1": ++ version "2.7.3" ++ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" ++ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== ++ + "@types/prop-types@*": + version "15.7.12" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" +@@ -3362,13 +3509,6 @@ + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== + +-"@types/secp256k1@^4.0.6": +- version "4.0.6" +- resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" +- integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== +- dependencies: +- "@types/node" "*" +- + "@types/semver@^7.5.0": + version "7.5.8" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz" +@@ -3529,32 +3669,31 @@ + loupe "^2.3.6" + pretty-format "^29.5.0" + +-"@wagmi/connectors@5.1.2": +- version "5.1.2" +- resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.1.2.tgz#f94a030b277c7c2cf00cf67606c4c907b24fcb58" +- integrity sha512-UX5LqDdGXrTdHBpL9wrJbcjK7/rtpOjx6YSIkO26TdPp6UyxQvEmY2XY6hdgBwHVx9xPaiVNIrWoexa5pRJUNA== ++"@wagmi/connectors@5.7.0": ++ version "5.7.0" ++ resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.7.0.tgz#a5e6c5403009b37f912210fc5d96727b4caa6a2b" ++ integrity sha512-cPMmHBGw28fll7VQJC9iF6ngdQ17STTzspqRIjlTkz44zhjwMTf7shw+JJUmqw+0uK7DqRbf/xUHlZE2IVd2mg== + dependencies: +- "@coinbase/wallet-sdk" "4.0.4" +- "@metamask/sdk" "0.27.0" +- "@safe-global/safe-apps-provider" "0.18.3" ++ "@coinbase/wallet-sdk" "4.2.3" ++ "@metamask/sdk" "0.31.2" ++ "@safe-global/safe-apps-provider" "0.18.5" + "@safe-global/safe-apps-sdk" "9.1.0" +- "@walletconnect/ethereum-provider" "2.14.0" +- "@walletconnect/modal" "2.6.2" ++ "@walletconnect/ethereum-provider" "2.17.0" + cbw-sdk "npm:@coinbase/wallet-sdk@3.9.3" + +-"@wagmi/core@2.13.1": +- version "2.13.1" +- resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.13.1.tgz#d9cf910775eca0e1aeb6fe9ad787264ee32632f3" +- integrity sha512-6ZdgI6dYfpa+IZPU0DZ3XQEQVzs003tKCERzSUNkxmt5cwSMg0XB1kvF5vU9MuPP96K6IcGkqSwAtgCmM5uy2w== ++"@wagmi/core@2.16.0": ++ version "2.16.0" ++ resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.16.0.tgz#b997b2544cd80b4aac4df25ccb2436bf77f9fbe1" ++ integrity sha512-sy4n7Jv6YCbT2jp4zQ/9H6l0A8StsN7P8mm2BRuODgW2w6Fj4j6h2xgYJD2tIjJHkLU/nvPJ7audZ55X7XQU/g== + dependencies: + eventemitter3 "5.0.1" + mipd "0.0.7" +- zustand "4.4.1" ++ zustand "5.0.0" + +-"@walletconnect/core@2.14.0": +- version "2.14.0" +- resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.14.0.tgz#e8afb01455968b02aaf26c74f3bfcc9b82678a39" +- integrity sha512-E/dgBM9q3judXnTfZQ5ILvDpeSdDpabBLsXtYXa3Nyc26cfNplfLJ2nXm9FgtTdhM1nZ7yx4+zDPiXawBRZl2g== ++"@walletconnect/core@2.17.0": ++ version "2.17.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.17.0.tgz#bf490e85a4702eff0f7cf81ba0d3c1016dffff33" ++ integrity sha512-On+uSaCfWdsMIQsECwWHZBmUXfrnqmv6B8SXRRuTJgd8tUpEvBkLQH4X7XkSm3zW6ozEkQTCagZ2ox2YPn3kbw== + dependencies: + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-provider" "1.0.14" +@@ -3563,14 +3702,13 @@ + "@walletconnect/jsonrpc-ws-connection" "1.0.14" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" +- "@walletconnect/relay-api" "1.0.10" ++ "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" +- "@walletconnect/types" "2.14.0" +- "@walletconnect/utils" "2.14.0" ++ "@walletconnect/types" "2.17.0" ++ "@walletconnect/utils" "2.17.0" + events "3.3.0" +- isomorphic-unfetch "3.1.0" + lodash.isequal "4.5.0" + uint8arrays "3.1.0" + +@@ -3581,20 +3719,20 @@ + dependencies: + tslib "1.14.1" + +-"@walletconnect/ethereum-provider@2.14.0": +- version "2.14.0" +- resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.14.0.tgz#0ed4ba9b383c889b56e0af87181756d900fc504a" +- integrity sha512-Cc2/DCn85VciA10BrsNWFM//3VC1D8yjwrjfUKjGndLPDz0YIdAxTgYZViIlMjE0lzQC/DMvPYEAnGfW0O1Bwg== ++"@walletconnect/ethereum-provider@2.17.0": ++ version "2.17.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.17.0.tgz#d74feaaed6180a6799e96760d7ee867ff3a083d2" ++ integrity sha512-b+KTAXOb6JjoxkwpgYQQKPUcTwENGmdEdZoIDLeRicUmZTn/IQKfkMoC2frClB4YxkyoVMtj1oMV2JAax+yu9A== + dependencies: + "@walletconnect/jsonrpc-http-connection" "1.0.8" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" +- "@walletconnect/modal" "2.6.2" +- "@walletconnect/sign-client" "2.14.0" +- "@walletconnect/types" "2.14.0" +- "@walletconnect/universal-provider" "2.14.0" +- "@walletconnect/utils" "2.14.0" ++ "@walletconnect/modal" "2.7.0" ++ "@walletconnect/sign-client" "2.17.0" ++ "@walletconnect/types" "2.17.0" ++ "@walletconnect/universal-provider" "2.17.0" ++ "@walletconnect/utils" "2.17.0" + events "3.3.0" + + "@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": +@@ -3677,35 +3815,35 @@ + "@walletconnect/safe-json" "^1.0.2" + pino "7.11.0" + +-"@walletconnect/modal-core@2.6.2": +- version "2.6.2" +- resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" +- integrity sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA== ++"@walletconnect/modal-core@2.7.0": ++ version "2.7.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.7.0.tgz#73c13c3b7b0abf9ccdbac9b242254a86327ce0a4" ++ integrity sha512-oyMIfdlNdpyKF2kTJowTixZSo0PGlCJRdssUN/EZdA6H6v03hZnf09JnwpljZNfir2M65Dvjm/15nGrDQnlxSA== + dependencies: + valtio "1.11.2" + +-"@walletconnect/modal-ui@2.6.2": +- version "2.6.2" +- resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" +- integrity sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA== ++"@walletconnect/modal-ui@2.7.0": ++ version "2.7.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.7.0.tgz#dbbb7ee46a5a25f7d39db622706f2d197b268cbb" ++ integrity sha512-gERYvU7D7K1ANCN/8vUgsE0d2hnRemfAFZ2novm9aZBg7TEd/4EgB+AqbJ+1dc7GhOL6dazckVq78TgccHb7mQ== + dependencies: +- "@walletconnect/modal-core" "2.6.2" ++ "@walletconnect/modal-core" "2.7.0" + lit "2.8.0" + motion "10.16.2" + qrcode "1.5.3" + +-"@walletconnect/modal@2.6.2": +- version "2.6.2" +- resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" +- integrity sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA== ++"@walletconnect/modal@2.7.0": ++ version "2.7.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.7.0.tgz#55f969796d104cce1205f5f844d8f8438b79723a" ++ integrity sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw== + dependencies: +- "@walletconnect/modal-core" "2.6.2" +- "@walletconnect/modal-ui" "2.6.2" ++ "@walletconnect/modal-core" "2.7.0" ++ "@walletconnect/modal-ui" "2.7.0" + +-"@walletconnect/relay-api@1.0.10": +- version "1.0.10" +- resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.10.tgz#5aef3cd07c21582b968136179aa75849dcc65499" +- integrity sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw== ++"@walletconnect/relay-api@1.0.11": ++ version "1.0.11" ++ resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" ++ integrity sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + +@@ -3728,19 +3866,19 @@ + dependencies: + tslib "1.14.1" + +-"@walletconnect/sign-client@2.14.0": +- version "2.14.0" +- resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.14.0.tgz#36533ef0976a869d815624217527482c90937fc8" +- integrity sha512-UrB3S3eLjPYfBLCN3WJ5u7+WcZ8kFMe/QIDqLf76Jk6TaLwkSUy563LvnSw4KW/kA+/cY1KBSdUDfX1tzYJJXg== ++"@walletconnect/sign-client@2.17.0": ++ version "2.17.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.17.0.tgz#efe811b1bb10082d964e2f0378aaa1b40f424503" ++ integrity sha512-sErYwvSSHQolNXni47L3Bm10ptJc1s1YoJvJd34s5E9h9+d3rj7PrhbiW9X82deN+Dm5oA8X9tC4xty1yIBrVg== + dependencies: +- "@walletconnect/core" "2.14.0" ++ "@walletconnect/core" "2.17.0" + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "2.1.2" + "@walletconnect/time" "1.0.2" +- "@walletconnect/types" "2.14.0" +- "@walletconnect/utils" "2.14.0" ++ "@walletconnect/types" "2.17.0" ++ "@walletconnect/utils" "2.17.0" + events "3.3.0" + + "@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": +@@ -3750,10 +3888,10 @@ + dependencies: + tslib "1.14.1" + +-"@walletconnect/types@2.14.0": +- version "2.14.0" +- resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.14.0.tgz#af3d4799b8ac5d166251af12bc024276f82f9b91" +- integrity sha512-vevMi4jZLJ55vLuFOicQFmBBbLyb+S0sZS4IsaBdZkQflfGIq34HkN13c/KPl4Ye0aoR4/cUcUSitmGIzEQM5g== ++"@walletconnect/types@2.17.0": ++ version "2.17.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.17.0.tgz#20eda5791e3172f8ab9146caa3f317701d4b3232" ++ integrity sha512-i1pn9URpvt9bcjRDkabuAmpA9K7mzyKoLJlbsAujRVX7pfaG7wur7u9Jz0bk1HxvuABL5LHNncTnVKSXKQ5jZA== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" +@@ -3762,38 +3900,40 @@ + "@walletconnect/logger" "2.1.2" + events "3.3.0" + +-"@walletconnect/universal-provider@2.14.0": +- version "2.14.0" +- resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.14.0.tgz#39d029be80374894b5f4249b76282dd9211d8b9f" +- integrity sha512-Mr8uoTmD6H0+Hh+3gxBu4l3T2uP/nNPR02sVtwEujNum++F727mMk+ifPRIpkVo21V/bvXFEy8sHTs5hqyq5iA== ++"@walletconnect/universal-provider@2.17.0": ++ version "2.17.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.17.0.tgz#c9d4bbd9b8f0e41b500b2488ccbc207dc5f7a170" ++ integrity sha512-d3V5Be7AqLrvzcdMZSBS8DmGDRdqnyLk1DWmRKAGgR6ieUWykhhUKlvfeoZtvJrIXrY7rUGYpH1X41UtFkW5Pw== + dependencies: + "@walletconnect/jsonrpc-http-connection" "1.0.8" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "2.1.2" +- "@walletconnect/sign-client" "2.14.0" +- "@walletconnect/types" "2.14.0" +- "@walletconnect/utils" "2.14.0" ++ "@walletconnect/sign-client" "2.17.0" ++ "@walletconnect/types" "2.17.0" ++ "@walletconnect/utils" "2.17.0" + events "3.3.0" + +-"@walletconnect/utils@2.14.0": +- version "2.14.0" +- resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.14.0.tgz#48493ffe1e902815fda3cbd5cc5409288a066d35" +- integrity sha512-vRVomYQEtEAyCK2c5bzzEvtgxaGGITF8mWuIL+WYSAMyEJLY97mirP2urDucNwcUczwxUgI+no9RiNFbUHreQQ== ++"@walletconnect/utils@2.17.0": ++ version "2.17.0" ++ resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.17.0.tgz#02b3af0b80d0c1a994d692d829d066271b04d071" ++ integrity sha512-1aeQvjwsXy4Yh9G6g2eGmXrEl+BzkNjHRdCrGdMYqFTFa8ROEJfTGsSH3pLsNDlOY94CoBUvJvM55q/PMoN/FQ== + dependencies: + "@stablelib/chacha20poly1305" "1.0.1" + "@stablelib/hkdf" "1.0.1" + "@stablelib/random" "1.0.2" + "@stablelib/sha256" "1.0.1" + "@stablelib/x25519" "1.0.3" +- "@walletconnect/relay-api" "1.0.10" ++ "@walletconnect/relay-api" "1.0.11" ++ "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" +- "@walletconnect/types" "2.14.0" ++ "@walletconnect/types" "2.17.0" + "@walletconnect/window-getters" "1.0.1" + "@walletconnect/window-metadata" "1.0.1" + detect-browser "5.3.0" ++ elliptic "^6.5.7" + query-string "7.1.3" + uint8arrays "3.1.0" + +@@ -3866,6 +4006,16 @@ abitype@1.0.5: + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.5.tgz#29d0daa3eea867ca90f7e4123144c1d1270774b6" + integrity sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw== + ++abitype@1.0.6, abitype@^1.0.6: ++ version "1.0.6" ++ resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.6.tgz#76410903e1d88e34f1362746e2d407513c38565b" ++ integrity sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A== ++ ++abitype@1.0.7: ++ version "1.0.7" ++ resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.7.tgz#876a0005d211e1c9132825d45bcee7b46416b284" ++ integrity sha512-ZfYYSktDQUwc2eduYu8C4wOs+RDPmnRYMh7zNfzeMtGGgb0U+6tLGjixUic6mXf5xKKCcgT5Qp6cv39tOARVFw== ++ + abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" +@@ -3948,6 +4098,11 @@ apexcharts@^3.49.1: + svg.resize.js "^1.4.3" + svg.select.js "^3.0.1" + ++apg-js@^4.3.0: ++ version "4.4.0" ++ resolved "https://registry.yarnpkg.com/apg-js/-/apg-js-4.4.0.tgz#09dcecab0731fbde233b9f2352fdd2d07e56b2cf" ++ integrity sha512-fefmXFknJmtgtNEXfPwZKYkMFX4Fyeyz+fNF6JWp87biGOPslJbCBVU158zvKRZfHBKnJDy8CMM40oLFGkXT8Q== ++ + argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" +@@ -3967,6 +4122,16 @@ aria-query@^5.3.0: + dependencies: + dequal "^2.0.3" + ++array-back@^3.0.1, array-back@^3.1.0: ++ version "3.1.0" ++ resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" ++ integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== ++ ++array-back@^4.0.1, array-back@^4.0.2: ++ version "4.0.2" ++ resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" ++ integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== ++ + array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" +@@ -4088,6 +4253,11 @@ async-mutex@^0.2.6: + dependencies: + tslib "^2.0.0" + ++asynckit@^0.4.0: ++ version "0.4.0" ++ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" ++ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== ++ + atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" +@@ -4105,6 +4275,15 @@ axe-core@=4.7.0: + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + ++axios@^1.7.2: ++ version "1.7.9" ++ resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" ++ integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== ++ dependencies: ++ follow-redirects "^1.15.6" ++ form-data "^4.0.0" ++ proxy-from-env "^1.1.0" ++ + axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" +@@ -4153,7 +4332,7 @@ bech32@^2.0.0: + resolved "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz" + integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== + +-bignumber.js@^9.0.0: ++bignumber.js@^9.0.0, bignumber.js@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== +@@ -4203,6 +4382,13 @@ bip32@^2.0.4: + typeforce "^1.11.5" + wif "^2.0.6" + ++bip39@^3.1.0: ++ version "3.1.0" ++ resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" ++ integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== ++ dependencies: ++ "@noble/hashes" "^1.2.0" ++ + bip66@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" +@@ -4265,6 +4451,18 @@ bitcoinjs-lib@^6.1.3: + typeforce "^1.11.3" + varuint-bitcoin "^1.1.2" + ++bitcoinjs-lib@^6.1.5, bitcoinjs-lib@^6.1.6: ++ version "6.1.7" ++ resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.7.tgz#0f98dec1333d658574eefa455295668cfae38bb0" ++ integrity sha512-tlf/r2DGMbF7ky1MgUqXHzypYHakkEnm0SZP23CJKIqNY/5uNAnMbFhMJdhjrL/7anfb/U8+AlpdjPWjPnAalg== ++ dependencies: ++ "@noble/hashes" "^1.2.0" ++ bech32 "^2.0.0" ++ bip174 "^2.1.1" ++ bs58check "^3.0.1" ++ typeforce "^1.11.3" ++ varuint-bitcoin "^1.1.2" ++ + bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" +@@ -4448,9 +4646,9 @@ chalk@^2.4.2: + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +-chalk@^4.0.0, chalk@^4.1.2: ++chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" +- resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" ++ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" +@@ -4554,6 +4752,33 @@ color2k@^2.0.2: + resolved "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz" + integrity sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog== + ++combined-stream@^1.0.8: ++ version "1.0.8" ++ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" ++ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== ++ dependencies: ++ delayed-stream "~1.0.0" ++ ++command-line-args@^5.1.1: ++ version "5.2.1" ++ resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" ++ integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== ++ dependencies: ++ array-back "^3.1.0" ++ find-replace "^3.0.0" ++ lodash.camelcase "^4.3.0" ++ typical "^4.0.0" ++ ++command-line-usage@^6.1.0: ++ version "6.1.3" ++ resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" ++ integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== ++ dependencies: ++ array-back "^4.0.2" ++ chalk "^2.4.2" ++ table-layout "^1.0.2" ++ typical "^5.2.0" ++ + commander@7: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" +@@ -5128,6 +5353,11 @@ deep-eql@^4.1.3: + dependencies: + type-detect "^4.0.0" + ++deep-extend@~0.6.0: ++ version "0.6.0" ++ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" ++ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== ++ + deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" +@@ -5147,11 +5377,6 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: + es-errors "^1.3.0" + gopd "^1.0.1" + +-define-lazy-prop@^2.0.0: +- version "2.0.0" +- resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" +- integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +- + define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" +@@ -5178,6 +5403,11 @@ delaunator@5: + dependencies: + robust-predicates "^3.0.2" + ++delayed-stream@~1.0.0: ++ version "1.0.0" ++ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" ++ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== ++ + dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" +@@ -5220,10 +5450,10 @@ dir-glob@^3.0.1: + dependencies: + path-type "^4.0.0" + +-dlc-btc-lib@2.5.1: +- version "2.5.1" +- resolved "https://registry.yarnpkg.com/dlc-btc-lib/-/dlc-btc-lib-2.5.1.tgz#b1eb33c0a56a244fcb109da4704854cf8a585c15" +- integrity sha512-YRfIsfsgzmUcepowZYaLjY/1E2MJbN5zIhEhS1NgiJsDBjNVAiZTHLY7RiX3eNValgFSnsY3IpUyF6piPap72A== ++dlc-btc-lib@2.5.3: ++ version "2.5.3" ++ resolved "https://registry.yarnpkg.com/dlc-btc-lib/-/dlc-btc-lib-2.5.3.tgz#a7a7df7236ad14877c77d2df172e29627ebb4816" ++ integrity sha512-QFN0nGO9P3zhfydI9j07iUxhxyRrxVRD941WhIXblw/YZDVXT8+PYW4GciSlU8KiydtHtYD+fWkUkSgUeC5kaQ== + dependencies: + "@dfns/sdk" "^0.5.9" + "@dfns/sdk-browser" "^0.5.9" +@@ -5276,14 +5506,15 @@ duplexify@^4.1.2: + readable-stream "^3.1.1" + stream-shift "^1.0.2" + +-eciesjs@^0.3.15: +- version "0.3.19" +- resolved "https://registry.yarnpkg.com/eciesjs/-/eciesjs-0.3.19.tgz#a22e9e1efe3fdedec02c828e2632ae0d4a073676" +- integrity sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA== ++eciesjs@^0.4.11: ++ version "0.4.12" ++ resolved "https://registry.yarnpkg.com/eciesjs/-/eciesjs-0.4.12.tgz#0ce482454953592e07b79b4824751f3b5c508b56" ++ integrity sha512-DGejvMCihsRAmKRFQiL6KZDE34vWVd0gvXlykFq1aEzJy/rD65AVyAIUZKZOvgvaP9ATQRcHGEZV5DfgrgjA4w== + dependencies: +- "@types/secp256k1" "^4.0.6" +- futoin-hkdf "^1.5.3" +- secp256k1 "^5.0.0" ++ "@ecies/ciphers" "^0.2.1" ++ "@noble/ciphers" "^1.0.0" ++ "@noble/curves" "^1.6.0" ++ "@noble/hashes" "^1.5.0" + + ecpair@^2.1.0: + version "2.1.0" +@@ -5325,10 +5556,10 @@ elliptic@^6.4.0: + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +-elliptic@^6.5.4: +- version "6.5.6" +- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.6.tgz#ee5f7c3a00b98a2144ac84d67d01f04d438fa53e" +- integrity sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ== ++elliptic@^6.5.7: ++ version "6.6.1" ++ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" ++ integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" +@@ -5561,11 +5792,6 @@ escalade@^3.1.1: + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +-escape-string-regexp@2.0.0: +- version "2.0.0" +- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" +- integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +- + escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" +@@ -5829,7 +6055,7 @@ ethereum-cryptography@^2.0.0: + + ethers@5.7.2: + version "5.7.2" +- resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" ++ resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" +@@ -5868,7 +6094,7 @@ event-target-shim@^5.0.0: + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +-eventemitter2@^6.4.7: ++eventemitter2@^6.4.9: + version "6.4.9" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" + integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== +@@ -5980,6 +6206,13 @@ filter-obj@^1.1.0: + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + ++find-replace@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" ++ integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== ++ dependencies: ++ array-back "^3.0.1" ++ + find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" +@@ -6022,6 +6255,11 @@ focus-lock@^1.3.2: + dependencies: + tslib "^2.0.3" + ++follow-redirects@^1.15.6: ++ version "1.15.9" ++ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" ++ integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== ++ + for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" +@@ -6029,6 +6267,15 @@ for-each@^0.3.3: + dependencies: + is-callable "^1.1.3" + ++form-data@^4.0.0: ++ version "4.0.1" ++ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" ++ integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== ++ dependencies: ++ asynckit "^0.4.0" ++ combined-stream "^1.0.8" ++ mime-types "^2.1.12" ++ + formik@^2.4.5: + version "2.4.5" + resolved "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz" +@@ -6057,6 +6304,15 @@ framesync@6.1.2: + dependencies: + tslib "2.4.0" + ++fs-extra@^7.0.0: ++ version "7.0.1" ++ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" ++ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== ++ dependencies: ++ graceful-fs "^4.1.2" ++ jsonfile "^4.0.0" ++ universalify "^0.1.0" ++ + fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" +@@ -6092,11 +6348,6 @@ functions-have-names@^1.2.3: + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +-futoin-hkdf@^1.5.3: +- version "1.5.3" +- resolved "https://registry.yarnpkg.com/futoin-hkdf/-/futoin-hkdf-1.5.3.tgz#6c8024f2e1429da086d4e18289ef2239ad33ee35" +- integrity sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ== +- + gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" +@@ -6161,6 +6412,18 @@ glob-parent@^6.0.2: + dependencies: + is-glob "^4.0.3" + ++glob@7.1.7: ++ version "7.1.7" ++ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" ++ integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== ++ dependencies: ++ fs.realpath "^1.0.0" ++ inflight "^1.0.4" ++ inherits "2" ++ minimatch "^3.0.4" ++ once "^1.3.0" ++ path-is-absolute "^1.0.0" ++ + glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" +@@ -6211,6 +6474,11 @@ gopd@^1.0.1: + dependencies: + get-intrinsic "^1.1.3" + ++graceful-fs@^4.1.2, graceful-fs@^4.1.6: ++ version "4.2.11" ++ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" ++ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== ++ + graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" +@@ -6326,20 +6594,6 @@ human-signals@^5.0.0: + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + +-i18next-browser-languagedetector@7.1.0: +- version "7.1.0" +- resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz#01876fac51f86b78975e79b48ccb62e2313a2d7d" +- integrity sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA== +- dependencies: +- "@babel/runtime" "^7.19.4" +- +-i18next@23.11.5: +- version "23.11.5" +- resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.11.5.tgz#d71eb717a7e65498d87d0594f2664237f9e361ef" +- integrity sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA== +- dependencies: +- "@babel/runtime" "^7.23.2" +- + iconv-lite@0.6: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" +@@ -6407,7 +6661,7 @@ internal-slot@^1.0.7: + resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== + +-invariant@2.2.4, invariant@^2.2.4: ++invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== +@@ -6495,11 +6749,6 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: + dependencies: + has-tostringtag "^1.0.0" + +-is-docker@^2.0.0, is-docker@^2.1.1: +- version "2.2.1" +- resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" +- integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +- + is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" +@@ -6641,13 +6890,6 @@ is-weakset@^2.0.3: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + +-is-wsl@^2.2.0: +- version "2.2.0" +- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" +- integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== +- dependencies: +- is-docker "^2.0.0" +- + is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" +@@ -6677,19 +6919,16 @@ isexe@^2.0.0: + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +-isomorphic-unfetch@3.1.0: +- version "3.1.0" +- resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" +- integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== +- dependencies: +- node-fetch "^2.6.1" +- unfetch "^4.2.0" +- + isows@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.4.tgz#810cd0d90cc4995c26395d2aa4cfa4037ebdf061" + integrity sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ== + ++isows@1.0.6: ++ version "1.0.6" ++ resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" ++ integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== ++ + iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" +@@ -6711,9 +6950,9 @@ jiti@^1.21.0: + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + +-js-sha3@0.8.0: ++js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" +- resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" ++ resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +@@ -6783,6 +7022,13 @@ jsonc-parser@^3.2.0: + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== + ++jsonfile@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" ++ integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== ++ optionalDependencies: ++ graceful-fs "^4.1.6" ++ + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" +@@ -6793,6 +7039,11 @@ jsonc-parser@^3.2.0: + object.assign "^4.1.4" + object.values "^1.1.6" + ++jwt-decode@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" ++ integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== ++ + keccak@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" +@@ -6933,6 +7184,11 @@ lodash-es@^4.17.21: + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + ++lodash.camelcase@^4.3.0: ++ version "4.3.0" ++ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" ++ integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== ++ + lodash.isequal@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" +@@ -6948,9 +7204,9 @@ lodash.mergewith@4.6.2: + resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + +-lodash@^4.17.21: ++lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" +- resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" ++ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +@@ -7045,6 +7301,18 @@ micromatch@^4.0.5: + braces "^3.0.3" + picomatch "^2.3.1" + ++mime-db@1.52.0: ++ version "1.52.0" ++ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" ++ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== ++ ++mime-types@^2.1.12: ++ version "2.1.35" ++ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" ++ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== ++ dependencies: ++ mime-db "1.52.0" ++ + mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" +@@ -7072,9 +7340,9 @@ minimatch@9.0.3: + dependencies: + brace-expansion "^2.0.1" + +-minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: ++minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" +- resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" ++ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" +@@ -7089,6 +7357,11 @@ mipd@0.0.7: + resolved "https://registry.yarnpkg.com/mipd/-/mipd-0.0.7.tgz#bb5559e21fa18dc3d9fe1c08902ef14b7ce32fd9" + integrity sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg== + ++mkdirp@^1.0.4: ++ version "1.0.4" ++ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" ++ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== ++ + mlly@^1.2.0, mlly@^1.4.0: + version "1.6.1" + resolved "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz" +@@ -7143,7 +7416,7 @@ ms@2.1.2: + + ms@^2.1.1: + version "2.1.3" +- resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" ++ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + + multiformats@^9.4.2: +@@ -7176,11 +7449,6 @@ node-addon-api@^2.0.0: + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +-node-addon-api@^5.0.0: +- version "5.1.0" +- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" +- integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== +- + node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" +@@ -7191,7 +7459,7 @@ node-fetch-native@^1.6.2, node-fetch-native@^1.6.3, node-fetch-native@^1.6.4: + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" + integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== + +-node-fetch@^2.6.1, node-fetch@^2.6.11, node-fetch@^2.6.12: ++node-fetch@^2.6.11, node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== +@@ -7338,15 +7606,6 @@ onetime@^6.0.0: + dependencies: + mimic-fn "^4.0.0" + +-open@^8.4.0: +- version "8.4.2" +- resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" +- integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== +- dependencies: +- define-lazy-prop "^2.0.0" +- is-docker "^2.1.1" +- is-wsl "^2.2.0" +- + optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" +@@ -7359,6 +7618,19 @@ optionator@^0.9.3: + prelude-ls "^1.2.1" + type-check "^0.4.0" + ++ox@0.1.2: ++ version "0.1.2" ++ resolved "https://registry.yarnpkg.com/ox/-/ox-0.1.2.tgz#0f791be2ccabeaf4928e6d423498fe1c8094e560" ++ integrity sha512-ak/8K0Rtphg9vnRJlbOdaX9R7cmxD2MiSthjWGaQdMk3D7hrAlDoM+6Lxn7hN52Za3vrXfZ7enfke/5WjolDww== ++ dependencies: ++ "@adraffy/ens-normalize" "^1.10.1" ++ "@noble/curves" "^1.6.0" ++ "@noble/hashes" "^1.5.0" ++ "@scure/bip32" "^1.5.0" ++ "@scure/bip39" "^1.4.0" ++ abitype "^1.0.6" ++ eventemitter3 "5.0.1" ++ + p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" +@@ -7572,11 +7844,21 @@ preact@^10.16.0: + resolved "https://registry.yarnpkg.com/preact/-/preact-10.23.1.tgz#d400107289bc979881c5212cb5f5cd22cd1dc38c" + integrity sha512-O5UdRsNh4vdZaTieWe3XOgSpdMAmkIYBCT3VhQDlKrzyCm8lUYsk0fmVEvoQQifoOjFRTaHZO69ylrzTW2BH+A== + ++preact@^10.24.2: ++ version "10.25.2" ++ resolved "https://registry.yarnpkg.com/preact/-/preact-10.25.2.tgz#e141e18a547ae0082dae48d044e0d8267e2547d2" ++ integrity sha512-GEts1EH3oMnqdOIeXhlbBSddZ9nrINd070WBOiPO2ous1orrKGUM4SMDbwyjSWD1iMS2dBvaDjAa5qUhz3TXqw== ++ + prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + ++prettier@^2.3.1: ++ version "2.8.8" ++ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" ++ integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== ++ + prettier@^3.0.3: + version "3.2.5" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz" +@@ -7623,11 +7905,21 @@ prop-types@15.8.1, prop-types@^15.6.2, prop-types@^15.8.1: + object-assign "^4.1.1" + react-is "^16.13.1" + ++property-expr@^2.0.5: ++ version "2.0.6" ++ resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" ++ integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== ++ + proxy-compare@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" + integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== + ++proxy-from-env@^1.1.0: ++ version "1.1.0" ++ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" ++ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== ++ + pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" +@@ -7648,23 +7940,6 @@ pushdata-bitcoin@^1.0.1: + dependencies: + bitcoin-ops "^1.3.0" + +-qr-code-styling@^1.6.0-rc.1: +- version "1.6.0-rc.1" +- resolved "https://registry.yarnpkg.com/qr-code-styling/-/qr-code-styling-1.6.0-rc.1.tgz#6c89e185fa50cc9135101085c12ae95b06f1b290" +- integrity sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q== +- dependencies: +- qrcode-generator "^1.4.3" +- +-qrcode-generator@^1.4.3: +- version "1.4.4" +- resolved "https://registry.yarnpkg.com/qrcode-generator/-/qrcode-generator-1.4.4.tgz#63f771224854759329a99048806a53ed278740e7" +- integrity sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw== +- +-qrcode-terminal-nooctal@^0.12.1: +- version "0.12.1" +- resolved "https://registry.yarnpkg.com/qrcode-terminal-nooctal/-/qrcode-terminal-nooctal-0.12.1.tgz#45016aca0d82b2818de7af0a06d072ad671fbe2e" +- integrity sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg== +- + qrcode@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" +@@ -7791,14 +8066,6 @@ react-is@^18.0.0: + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +-react-native-webview@^11.26.0: +- version "11.26.1" +- resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" +- integrity sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw== +- dependencies: +- escape-string-regexp "2.0.0" +- invariant "2.2.4" +- + react-redux@^8.1.3: + version "8.1.3" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz" +@@ -7875,6 +8142,13 @@ react@^18.2.0: + dependencies: + loose-envify "^1.1.0" + ++react@^18.3.1: ++ version "18.3.1" ++ resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" ++ integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== ++ dependencies: ++ loose-envify "^1.1.0" ++ + readable-stream@^2.3.3: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" +@@ -7920,6 +8194,11 @@ real-require@^0.1.0: + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" + integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== + ++reduce-flatten@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" ++ integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== ++ + redux-persist-expire@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/redux-persist-expire/-/redux-persist-expire-1.1.1.tgz" +@@ -8062,16 +8341,6 @@ robust-predicates@^3.0.2: + resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz" + integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== + +-rollup-plugin-visualizer@^5.9.2: +- version "5.12.0" +- resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" +- integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== +- dependencies: +- open "^8.4.0" +- picomatch "^2.3.1" +- source-map "^0.7.4" +- yargs "^17.5.1" +- + rollup@^3.27.1: + version "3.29.4" + resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" +@@ -8180,15 +8449,6 @@ scure@1.6.0: + dependencies: + pluralize "^7.0.0" + +-secp256k1@^5.0.0: +- version "5.0.0" +- resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" +- integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== +- dependencies: +- elliptic "^6.5.4" +- node-addon-api "^5.0.0" +- node-gyp-build "^4.2.0" +- + semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" +@@ -8298,6 +8558,16 @@ sisteransi@^1.0.5: + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + ++siwe@^2.1.4: ++ version "2.3.2" ++ resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.3.2.tgz#0794ae25f734f3068de0ab093ddd2f7867bc2d67" ++ integrity sha512-aSf+6+Latyttbj5nMu6GF3doMfv2UYj83hhwZgUF20ky6fTS83uVhkQABdIVnEuS8y1bBdk7p6ltb9SmlhTTlA== ++ dependencies: ++ "@spruceid/siwe-parser" "^2.1.2" ++ "@stablelib/random" "^1.0.1" ++ uri-js "^4.4.1" ++ valid-url "^1.0.9" ++ + slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" +@@ -8351,7 +8621,7 @@ source-map@^0.6.0: + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +-source-map@^0.7.3, source-map@^0.7.4: ++source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +@@ -8396,6 +8666,11 @@ strict-uri-encode@^2.0.0: + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + ++string-format@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" ++ integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== ++ + string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" +@@ -8590,6 +8865,16 @@ system-architecture@^0.1.0: + resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" + integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== + ++table-layout@^1.0.2: ++ version "1.0.2" ++ resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" ++ integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== ++ dependencies: ++ array-back "^4.0.1" ++ deep-extend "~0.6.0" ++ typical "^5.2.0" ++ wordwrapjs "^4.0.0" ++ + text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" +@@ -8602,6 +8887,11 @@ thread-stream@^0.15.1: + dependencies: + real-require "^0.1.0" + ++tiny-case@^1.0.3: ++ version "1.0.3" ++ resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" ++ integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== ++ + tiny-invariant@^1.0.6: + version "1.3.3" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz" +@@ -8618,7 +8908,7 @@ tiny-secp256k1@1.1.6: + elliptic "^6.4.0" + nan "^2.13.2" + +-tiny-secp256k1@2.2.3: ++tiny-secp256k1@2.2.3, tiny-secp256k1@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-2.2.3.tgz#fe1dde11a64fcee2091157d4b78bcb300feb9b65" + integrity sha512-SGcL07SxcPN2nGKHTCvRMkQLYPSoeFcvArUSCYtjVARiFAWU44cCIqYS0mYAU6nY7XfvwURuTIGo2Omt3ZQr0Q== +@@ -8680,6 +8970,11 @@ toml-eslint-parser@^0.9.3: + dependencies: + eslint-visitor-keys "^3.0.0" + ++toposort@^2.0.2: ++ version "2.0.2" ++ resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" ++ integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== ++ + tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" +@@ -8695,6 +8990,21 @@ ts-api-utils@^1.0.1: + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + ++ts-command-line-args@^2.2.0: ++ version "2.5.1" ++ resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" ++ integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== ++ dependencies: ++ chalk "^4.1.0" ++ command-line-args "^5.1.1" ++ command-line-usage "^6.1.0" ++ string-format "^2.0.0" ++ ++ts-essentials@^7.0.1: ++ version "7.0.3" ++ resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" ++ integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== ++ + ts-toolbelt@^9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz" +@@ -8733,6 +9043,11 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + ++tslib@^2.6.0: ++ version "2.8.1" ++ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" ++ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== ++ + tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" +@@ -8762,6 +9077,27 @@ type-fest@^0.20.2: + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + ++type-fest@^2.19.0: ++ version "2.19.0" ++ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" ++ integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== ++ ++typechain@^8.3.2: ++ version "8.3.2" ++ resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" ++ integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== ++ dependencies: ++ "@types/prettier" "^2.1.1" ++ debug "^4.3.1" ++ fs-extra "^7.0.0" ++ glob "7.1.7" ++ js-sha3 "^0.8.0" ++ lodash "^4.17.15" ++ mkdirp "^1.0.4" ++ prettier "^2.3.1" ++ ts-command-line-args "^2.2.0" ++ ts-essentials "^7.0.1" ++ + typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz" +@@ -8823,6 +9159,16 @@ typescript@^5.2.2: + resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz" + integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== + ++typical@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" ++ integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== ++ ++typical@^5.2.0: ++ version "5.2.0" ++ resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" ++ integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== ++ + ufo@^1.3.2: + version "1.5.3" + resolved "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz" +@@ -8888,10 +9234,10 @@ unenv@^1.9.0: + node-fetch-native "^1.6.4" + pathe "^1.1.2" + +-unfetch@^4.2.0: +- version "4.2.0" +- resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" +- integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== ++universalify@^0.1.0: ++ version "0.1.2" ++ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" ++ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + + unstorage@^1.9.0: + version "1.10.2" +@@ -8931,9 +9277,9 @@ uqr@^0.1.2: + resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" + integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== + +-uri-js@^4.2.2: ++uri-js@^4.2.2, uri-js@^4.4.1: + version "4.4.1" +- resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" ++ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" +@@ -8975,6 +9321,13 @@ utf-8-validate@^5.0.2: + dependencies: + node-gyp-build "^4.3.0" + ++utf-8-validate@^6.0.3: ++ version "6.0.5" ++ resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.5.tgz#8087d39902be2cc15bdb21a426697ff256d65aab" ++ integrity sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA== ++ dependencies: ++ node-gyp-build "^4.3.0" ++ + util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" +@@ -9006,6 +9359,11 @@ uuid@^9.0.1: + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + ++valid-url@^1.0.9: ++ version "1.0.9" ++ resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" ++ integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== ++ + valtio@1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" +@@ -9021,7 +9379,7 @@ varuint-bitcoin@1.1.2, varuint-bitcoin@^1.0.4, varuint-bitcoin@^1.1.2: + dependencies: + safe-buffer "^5.1.1" + +-viem@2.x, viem@^2.1.1: ++viem@^2.1.1: + version "2.18.6" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.18.6.tgz#527c54a032cdd4c1f1795fcb44072e8c3efd16c6" + integrity sha512-KughUodIEjzkC+KfQ4+259yRXYfo0VLkZQ7NVC3RGfCMMOiVWaOxHjmcaY0FnZzKX3pwrlMyTAZbwH9tVAN/Yw== +@@ -9036,6 +9394,36 @@ viem@2.x, viem@^2.1.1: + webauthn-p256 "0.0.5" + ws "8.17.1" + ++viem@^2.20.1: ++ version "2.21.49" ++ resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.49.tgz#528d5e54747ba3125041cd753459a4ce673aaaa6" ++ integrity sha512-NNItYfTv4+yGE5DDKc+S/g2S7KeJn047GwgEYG60FAJlK0FzwuP6lQKSeQ8k7Y4VasfuKPqiT+XiilcCtTRiDQ== ++ dependencies: ++ "@noble/curves" "1.6.0" ++ "@noble/hashes" "1.5.0" ++ "@scure/bip32" "1.5.0" ++ "@scure/bip39" "1.4.0" ++ abitype "1.0.6" ++ isows "1.0.6" ++ ox "0.1.2" ++ webauthn-p256 "0.0.10" ++ ws "8.18.0" ++ ++viem@^2.21.15: ++ version "2.21.55" ++ resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.55.tgz#a57ad31fcf2a0f6c011b1909f02c94421ec4f781" ++ integrity sha512-PgXew7C11cAuEtOSgRyQx2kJxEOPUwIwZA9dMglRByqJuFVA7wSGZZOOo/93iylAA8E15bEdqy9xulU3oKZ70Q== ++ dependencies: ++ "@noble/curves" "1.7.0" ++ "@noble/hashes" "1.6.1" ++ "@scure/bip32" "1.6.0" ++ "@scure/bip39" "1.5.0" ++ abitype "1.0.7" ++ isows "1.0.6" ++ ox "0.1.2" ++ webauthn-p256 "0.0.10" ++ ws "8.18.0" ++ + vite-node@0.34.6: + version "0.34.6" + resolved "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz" +@@ -9113,13 +9501,13 @@ vitest@^0.34.6: + vite-node "0.34.6" + why-is-node-running "^2.2.2" + +-wagmi@^2.12.2: +- version "2.12.2" +- resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.12.2.tgz#1d3b1dea0783c05245aed72a29bce756eb4f0bd8" +- integrity sha512-gIZdAgmHJjENdOdkD/Zpu85NR16k/uMB3H/yGBz1q9bDAE8oguuBxRUEhuMt6jAC95RB96+7hMVfL9kBtHnu+g== ++wagmi@2.14.3, wagmi@^2.12.16: ++ version "2.14.3" ++ resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.14.3.tgz#3abfe5e9f796890d75d1b7d506e9dccd6b87f254" ++ integrity sha512-sr8o7+EBw22GhieDyXLv8Zr2vgC6xKrYoSuUIpq0xOqEhvMP1q880VtR4lFG1capc2QEWvK72pJ/+jpsEQcMYQ== + dependencies: +- "@wagmi/connectors" "5.1.2" +- "@wagmi/core" "2.13.1" ++ "@wagmi/connectors" "5.7.0" ++ "@wagmi/core" "2.16.0" + use-sync-external-store "1.2.0" + + web-encoding@1.1.5: +@@ -9136,6 +9524,14 @@ web-streams-polyfill@^3.1.1: + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + ++webauthn-p256@0.0.10: ++ version "0.0.10" ++ resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.10.tgz#877e75abe8348d3e14485932968edf3325fd2fdd" ++ integrity sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA== ++ dependencies: ++ "@noble/curves" "^1.4.0" ++ "@noble/hashes" "^1.4.0" ++ + webauthn-p256@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.5.tgz#0baebd2ba8a414b21cc09c0d40f9dd0be96a06bd" +@@ -9244,6 +9640,14 @@ wif@^2.0.1, wif@^2.0.6: + dependencies: + bs58check "<3.0.0" + ++wordwrapjs@^4.0.0: ++ version "4.0.1" ++ resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" ++ integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== ++ dependencies: ++ reduce-flatten "^2.0.0" ++ typical "^5.2.0" ++ + wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" +@@ -9277,16 +9681,16 @@ ws@8.17.1, ws@~8.17.1: + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + ++ws@8.18.0, ws@^8.13.0, ws@^8.14.2: ++ version "8.18.0" ++ resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" ++ integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== ++ + ws@^7.5.1: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +-ws@^8.13.0: +- version "8.18.0" +- resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" +- integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== +- + xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" +@@ -9367,7 +9771,7 @@ yargs@^15.3.1: + y18n "^4.0.0" + yargs-parser "^18.1.2" + +-yargs@^17.5.1, yargs@^17.7.2: ++yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== +@@ -9399,9 +9803,17 @@ youtube-player@5.5.2: + load-script "^1.0.0" + sister "^3.0.0" + +-zustand@4.4.1: +- version "4.4.1" +- resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.1.tgz#0cd3a3e4756f21811bd956418fdc686877e8b3b0" +- integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== ++yup@^1.4.0: ++ version "1.6.0" ++ resolved "https://registry.yarnpkg.com/yup/-/yup-1.6.0.tgz#70d4e81ed7b73564f86efa25c7c469cadcabf665" ++ integrity sha512-/dny6arMf5CV6ZPAGpXYVw0wR8qcDF15H8zILTQWoRf6jHN1nJNFL1IAlFfUMlO7QGifMVHZle/l8YJdxtWfxg== + dependencies: +- use-sync-external-store "1.2.0" ++ property-expr "^2.0.5" ++ tiny-case "^1.0.3" ++ toposort "^2.0.2" ++ type-fest "^2.19.0" ++ ++zustand@5.0.0: ++ version "5.0.0" ++ resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.0.tgz#71f8aaecf185592a3ba2743d7516607361899da9" ++ integrity sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ== diff --git a/vite.config.ts b/vite.config.ts index 4070689d..972271fb 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -80,6 +80,7 @@ export default defineConfig(async ({ mode }) => { target: 'esnext', }, define: { + global: 'window', appConfiguration, }, resolve: { diff --git a/yarn.lock b/yarn.lock index 135c23f8..75703d2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,11 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== +"@adraffy/ens-normalize@^1.10.1": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33" + integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg== + "@ampproject/remapping@^2.2.0": version "2.3.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" @@ -201,10 +206,10 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.19.4": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" - integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== +"@babel/runtime@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== dependencies: regenerator-runtime "^0.14.0" @@ -292,6 +297,37 @@ "@noble/hashes" "^1.1.5" "@noble/secp256k1" "^1.7.1" +"@catalogfi/extension@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@catalogfi/extension/-/extension-0.1.1.tgz#b07400f2365a32dd13a7cdefe65949e0705a5342" + integrity sha512-ny4xiQ95VdjFWDR2T22xLQxUY99yKRD4EOlxZInKCHGB0jnQaUrsj9iKGZ2DRGUGPpH/iDkruoXjibw7s78BIw== + +"@catalogfi/utils@^0.1.10", "@catalogfi/utils@^0.1.11", "@catalogfi/utils@^0.1.6": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@catalogfi/utils/-/utils-0.1.11.tgz#3ccdba102b88cb036ae0b14f7b300e0fc83c93f6" + integrity sha512-+rt2I4W5ip6odg8ZSmoTyCY0GllPzSYqWz8xRyvgN58MVJJMAFjsp4XwyWzkIfKCRKOJve/vjYdZQx92CTO2gw== + +"@catalogfi/wallets@^0.2.51": + version "0.2.54" + resolved "https://registry.yarnpkg.com/@catalogfi/wallets/-/wallets-0.2.54.tgz#8d5323b381dd70964e2dac45a2d89015a3e3a743" + integrity sha512-ffcvXPx/qklyjR8HLr2ni/hZFA8mL+DgQxMmozTRF2UV0ngLx8aURDHN/FHg2vQ6MU5cYLEl3h+H8frPKRfL4w== + dependencies: + "@catalogfi/extension" "^0.1.1" + "@catalogfi/utils" "^0.1.10" + "@noble/hashes" "^1.4.0" + bip32 "^4.0.0" + bip39 "^3.1.0" + bitcoinjs-lib "^6.1.5" + bufferutil "^4.0.8" + dotenv "^16.3.1" + ecpair "^2.1.0" + tiny-secp256k1 "^2.2.3" + typechain "^8.3.2" + utf-8-validate "^6.0.3" + uuid "^9.0.1" + viem "^2.20.1" + yup "^1.4.0" + "@chakra-ui/accordion@2.3.1": version "2.3.1" resolved "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.3.1.tgz" @@ -1105,17 +1141,15 @@ resolved "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.2.0.tgz" integrity sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ== -"@coinbase/wallet-sdk@4.0.4": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.0.4.tgz#634cd89bac93eeaf381a1f026476794e53431ed6" - integrity sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA== +"@coinbase/wallet-sdk@4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.2.3.tgz#a30fa0605b24bc42c37f52a62d2442bcbb7734af" + integrity sha512-BcyHZ/Ec84z0emORzqdXDv4P0oV+tV3a0OirfA8Ko1JGBIAVvB+hzLvZzCDvnuZx7MTK+Dd8Y9Tjlo446BpCIg== dependencies: - buffer "^6.0.3" + "@noble/hashes" "^1.4.0" clsx "^1.2.1" eventemitter3 "^5.0.1" - keccak "^3.0.3" - preact "^10.16.0" - sha.js "^2.4.11" + preact "^10.24.2" "@dfns/sdk-browser@^0.5.9": version "0.5.9" @@ -1135,6 +1169,11 @@ cross-fetch "3.1.6" uuid "9.0.0" +"@ecies/ciphers@^0.2.1": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@ecies/ciphers/-/ciphers-0.2.2.tgz#82a15b10a6e502b63fb30915d944b2eaf3ff17ff" + integrity sha512-ylfGR7PyTd+Rm2PqQowG08BCKA22QuX8NzrL+LxAAvazN10DMwdJ2fWwAzRj05FI/M8vNFGm3cv9Wq/GFWCBLg== + "@emotion/babel-plugin@^11.11.0": version "11.11.0" resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz" @@ -1893,6 +1932,58 @@ resolved "https://registry.npmjs.org/@fontsource/poppins/-/poppins-5.0.12.tgz" integrity sha512-0qzBxtIJLh82iMJ9pCXKYwGs1zyS+jyUmwVJ59+JdYnEaFVkDsxVOk9yDWfVOs14ALUneodU2m5YSGma6dCYCw== +"@gardenfi/core@0.3.0-beta.14", "@gardenfi/core@^0.3.0-beta.14": + version "0.3.0-beta.14" + resolved "https://registry.yarnpkg.com/@gardenfi/core/-/core-0.3.0-beta.14.tgz#e66599cff3ddb4584648d628dbae02d4aa3836a6" + integrity sha512-V73jDvdchN09UqYdcyOCI4s4ekHY94NLoGnxqp2579y6sSYjqJf+5WXyn89Pb7bjrCOpYOfldivWKXYfwfLkWQ== + dependencies: + "@catalogfi/utils" "^0.1.6" + "@catalogfi/wallets" "^0.2.51" + "@gardenfi/orderbook" "^0.2.0-beta.41" + "@gardenfi/utils" "^0.0.1-beta.19" + bignumber.js "^9.1.2" + bitcoinjs-lib "^6.1.6" + tiny-secp256k1 "^2.2.3" + varuint-bitcoin "^1.1.2" + viem "^2.21.15" + +"@gardenfi/orderbook@0.2.0-beta.41", "@gardenfi/orderbook@^0.2.0-beta.41": + version "0.2.0-beta.41" + resolved "https://registry.yarnpkg.com/@gardenfi/orderbook/-/orderbook-0.2.0-beta.41.tgz#a802ddba48023956160fa2d2fda0676c520a5dbb" + integrity sha512-I8GisEgUGNX84WKZSKEAqMsSD9wvfY9hzY5iL2V5vc+jqblpc+5Exbk/yVFINI3DoqtuaVb1h/dqTmMFotu0hA== + dependencies: + "@catalogfi/utils" "^0.1.6" + "@gardenfi/utils" "^0.0.1-beta.19" + bufferutil "^4.0.8" + siwe "^2.1.4" + utf-8-validate "^6.0.3" + viem "^2.21.15" + ws "^8.14.2" + +"@gardenfi/react-hooks@0.0.1-beta.135": + version "0.0.1-beta.135" + resolved "https://registry.yarnpkg.com/@gardenfi/react-hooks/-/react-hooks-0.0.1-beta.135.tgz#a74d538b455b4a2baff1401eb65c4ea42e194c80" + integrity sha512-I4R391jusGV30K8s+6cDgc7xwAcwj1rUeg2Uw3a/N96KjO2f0l+cn8NQZsSIcJMzL4GTgICpQv2Ci/JIe0VdbQ== + dependencies: + "@catalogfi/utils" "^0.1.6" + "@catalogfi/wallets" "^0.2.51" + "@gardenfi/core" "^0.3.0-beta.14" + "@gardenfi/orderbook" "^0.2.0-beta.41" + "@gardenfi/utils" "^0.0.1-beta.19" + react "^18.3.1" + viem "^2.21.15" + wagmi "^2.12.16" + +"@gardenfi/utils@^0.0.1-beta.19": + version "0.0.1-beta.19" + resolved "https://registry.yarnpkg.com/@gardenfi/utils/-/utils-0.0.1-beta.19.tgz#e74cdc12ff04bed142ebedc32f063daec145ef06" + integrity sha512-hgTc3iy2TM7Rr2J7ApM+yzSOSsisHW3T3+PKMWcBZcc4CIwBAquTCRdQNkMKFbawsvB4LMieIiWYWjm+IQqckQ== + dependencies: + "@catalogfi/utils" "^0.1.11" + axios "^1.7.2" + jwt-decode "^4.0.0" + viem "^2.21.15" + "@gemwallet/api@3.8.0", "@gemwallet/api@^3.8.0": version "3.8.0" resolved "https://registry.yarnpkg.com/@gemwallet/api/-/api-3.8.0.tgz#46bc47789848c7ac9cc620613e0a1757dc8668a1" @@ -2152,10 +2243,10 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.1.tgz#e89b840a7af8097a8ed4953d8dc8470d1302d3ef" integrity sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw== -"@metamask/sdk-communication-layer@0.27.0": - version "0.27.0" - resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.27.0.tgz#8d618fadd39f11627d5b3ef1bc72867439e33ff4" - integrity sha512-G9LCaQzIqp5WmUmvHN6UUdjWrBh67MbRobmbbs5fcc2+9XFhj3vBgtyleUYjun91jSlPHoZeo+f/Pj4/WoPIJg== +"@metamask/sdk-communication-layer@0.31.0": + version "0.31.0" + resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.31.0.tgz#0acc063b62aa09d044c7aab65801712d760e53b2" + integrity sha512-V9CxdzabDPjQVgmKGHsyU3SYt4Af27g+4DbGCx0fLoHqN/i1RBDZqs/LYbJX3ykJCANzE+llz/MolMCMrzM2RA== dependencies: bufferutil "^4.0.8" date-fns "^2.29.3" @@ -2163,38 +2254,60 @@ utf-8-validate "^5.0.2" uuid "^8.3.2" -"@metamask/sdk-install-modal-web@0.26.5": - version "0.26.5" - resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.26.5.tgz#b696c78818adaff85d01a4f41fecc8fd2c80bc59" - integrity sha512-qVA9Nk+NorGx5hXyODy5wskptE8R7RNYTYt49VbQpJogqbbVe1dnJ98+KaA43PBN4XYMCXmcIhULNiEHGsLynA== +"@metamask/sdk-install-modal-web@0.31.2": + version "0.31.2" + resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.31.2.tgz#bb8c92a6844a632be8525e7bb5a35924a926d6cd" + integrity sha512-KPv36kQjmTwErU8g2neuHHSgkD5+1hp4D6ERfk5Kc2r73aOYNCdG9wDGRUmFmcY2MKkeK1EuDyZfJ4FPU30fxQ== + dependencies: + "@paulmillr/qr" "^0.2.1" + +"@metamask/sdk@0.31.2": + version "0.31.2" + resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.31.2.tgz#2ec1c1c7cf6a444e65104862e83814a493047d72" + integrity sha512-6MWON2g1j7XwAHWam4trusGxeyhQweNLEHPsfuIxSwcsXoEm08Jj80OglJxQI4KwjcDnjSWBkQGG3mmK6ug/cA== dependencies: - qr-code-styling "^1.6.0-rc.1" + "@babel/runtime" "^7.26.0" + "@metamask/onboarding" "^1.0.1" + "@metamask/providers" "16.1.0" + "@metamask/sdk-communication-layer" "0.31.0" + "@metamask/sdk-install-modal-web" "0.31.2" + "@paulmillr/qr" "^0.2.1" + bowser "^2.9.0" + cross-fetch "^4.0.0" + debug "^4.3.4" + eciesjs "^0.4.11" + eth-rpc-errors "^4.0.3" + eventemitter2 "^6.4.9" + obj-multiplex "^1.0.0" + pump "^3.0.0" + readable-stream "^3.6.2" + socket.io-client "^4.5.1" + tslib "^2.6.0" + util "^0.12.4" + uuid "^8.3.2" -"@metamask/sdk@0.27.0": - version "0.27.0" - resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.27.0.tgz#38617985b8305a0f5d482cdd7af8ddec87968bb7" - integrity sha512-6sMjr/0qR700X1svPGEQ4rBdtccidBLeTC27fYQc7r9ROgSixB1DUUAyu/LoySVqt3Hu/Zm7NnAHXuT228ht7A== +"@metamask/sdk@0.31.4": + version "0.31.4" + resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.31.4.tgz#2f9266e994ba838652925dc83e3409adfcae75ae" + integrity sha512-HLUN4IZGdyiy5YeebXmXi+ndpmrl6zslCQLdR2QHplIy4JmUL/eDyKNFiK7eBLVKXVVIDYFIb6g1iSEb+i8Kew== dependencies: + "@babel/runtime" "^7.26.0" "@metamask/onboarding" "^1.0.1" "@metamask/providers" "16.1.0" - "@metamask/sdk-communication-layer" "0.27.0" - "@metamask/sdk-install-modal-web" "0.26.5" - "@types/dom-screen-wake-lock" "^1.0.0" + "@metamask/sdk-communication-layer" "0.31.0" + "@metamask/sdk-install-modal-web" "0.31.2" + "@paulmillr/qr" "^0.2.1" bowser "^2.9.0" cross-fetch "^4.0.0" debug "^4.3.4" - eciesjs "^0.3.15" + eciesjs "^0.4.11" eth-rpc-errors "^4.0.3" - eventemitter2 "^6.4.7" - i18next "23.11.5" - i18next-browser-languagedetector "7.1.0" + eventemitter2 "^6.4.9" obj-multiplex "^1.0.0" pump "^3.0.0" - qrcode-terminal-nooctal "^0.12.1" - react-native-webview "^11.26.0" readable-stream "^3.6.2" - rollup-plugin-visualizer "^5.9.2" socket.io-client "^4.5.1" + tslib "^2.6.0" util "^0.12.4" uuid "^8.3.2" @@ -2333,6 +2446,11 @@ "@netlify/node-cookies" "^0.1.0" urlpattern-polyfill "8.0.2" +"@noble/ciphers@^1.0.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.1.3.tgz#eb27085aa7ce94d8c6eaeb64299bab0589920ec1" + integrity sha512-Ygv6WnWJHLLiW4fnNDC1z+i13bud+enXOFRBlpxI+NJliPWx5wdR+oWlTjLuBPTqjUjtHXtjkU6w3kuuH6upZA== + "@noble/curves@1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" @@ -2347,23 +2465,40 @@ dependencies: "@noble/hashes" "1.4.0" -"@noble/curves@^1.0.0", "@noble/curves@~1.6.0": +"@noble/curves@1.6.0", "@noble/curves@^1.0.0", "@noble/curves@^1.6.0", "@noble/curves@~1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== dependencies: "@noble/hashes" "1.5.0" +"@noble/curves@1.7.0", "@noble/curves@~1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" + integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== + dependencies: + "@noble/hashes" "1.6.0" + "@noble/hashes@1.4.0", "@noble/hashes@^1.1.5", "@noble/hashes@^1.2.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== -"@noble/hashes@1.5.0", "@noble/hashes@^1.0.0", "@noble/hashes@~1.5.0": +"@noble/hashes@1.5.0", "@noble/hashes@^1.0.0", "@noble/hashes@^1.5.0", "@noble/hashes@~1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== +"@noble/hashes@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" + integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== + +"@noble/hashes@1.6.1", "@noble/hashes@^1.1.2", "@noble/hashes@~1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.1.tgz#df6e5943edcea504bac61395926d6fd67869a0d5" + integrity sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w== + "@noble/secp256k1@^1.7.1": version "1.7.1" resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" @@ -2482,6 +2617,11 @@ "@parcel/watcher-win32-ia32" "2.4.1" "@parcel/watcher-win32-x64" "2.4.1" +"@paulmillr/qr@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@paulmillr/qr/-/qr-0.2.1.tgz#76ade7080be4ac4824f638146fd8b6db1805eeca" + integrity sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ== + "@playwright/test@^1.39.0": version "1.42.1" resolved "https://registry.npmjs.org/@playwright/test/-/test-1.42.1.tgz" @@ -2667,10 +2807,10 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.2.tgz#851959c4c1c3c6647aba1f388198c8243aed6917" integrity sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ== -"@safe-global/safe-apps-provider@0.18.3": - version "0.18.3" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.3.tgz#805a42e24f5dde803cb96dac251a3c9e256de45b" - integrity sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ== +"@safe-global/safe-apps-provider@0.18.5": + version "0.18.5" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.5.tgz#745a932bda3739a8a298ae44ec6c465f6c4773b7" + integrity sha512-9v9wjBi3TwLsEJ3C2ujYoexp3pFJ0omDLH/GX91e2QB+uwCKTBYyhxFSrTQ9qzoyQd+bfsk4gjOGW87QcJhf7g== dependencies: "@safe-global/safe-apps-sdk" "^9.1.0" events "^3.3.0" @@ -2708,6 +2848,11 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== +"@scure/base@~1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.1.tgz#dd0b2a533063ca612c17aa9ad26424a2ff5aa865" + integrity sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ== + "@scure/bip32@1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" @@ -2717,7 +2862,7 @@ "@noble/hashes" "~1.4.0" "@scure/base" "~1.1.6" -"@scure/bip32@^1.3.1": +"@scure/bip32@1.5.0", "@scure/bip32@^1.3.1", "@scure/bip32@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.5.0.tgz#dd4a2e1b8a9da60e012e776d954c4186db6328e6" integrity sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw== @@ -2726,6 +2871,15 @@ "@noble/hashes" "~1.5.0" "@scure/base" "~1.1.7" +"@scure/bip32@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.6.0.tgz#6dbc6b4af7c9101b351f41231a879d8da47e0891" + integrity sha512-82q1QfklrUUdXJzjuRU7iG7D7XiFx5PHYVS0+oeNKhyDLT7WPqs6pBcM2W5ZdwOwKCwoE1Vy1se+DHjcXwCYnA== + dependencies: + "@noble/curves" "~1.7.0" + "@noble/hashes" "~1.6.0" + "@scure/base" "~1.2.1" + "@scure/bip39@1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" @@ -2734,7 +2888,7 @@ "@noble/hashes" "~1.4.0" "@scure/base" "~1.1.6" -"@scure/bip39@^1.2.1": +"@scure/bip39@1.4.0", "@scure/bip39@^1.2.1", "@scure/bip39@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.4.0.tgz#664d4f851564e2e1d4bffa0339f9546ea55960a6" integrity sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw== @@ -2742,6 +2896,14 @@ "@noble/hashes" "~1.5.0" "@scure/base" "~1.1.8" +"@scure/bip39@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.5.0.tgz#c8f9533dbd787641b047984356531d84485f19be" + integrity sha512-Dop+ASYhnrwm9+HA/HwXg7j2ZqM6yk2fyLWb5znexjctFY3+E+eU8cIWI0Pql0Qx4hPZCijlGq4OL71g+Uz30A== + dependencies: + "@noble/hashes" "~1.6.0" + "@scure/base" "~1.2.1" + "@scure/btc-signer@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@scure/btc-signer/-/btc-signer-1.3.2.tgz#56cf02a2e318097b1e4f531fac8ef114bdf4ddc8" @@ -2762,6 +2924,16 @@ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== +"@spruceid/siwe-parser@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-2.1.2.tgz#3e13e7d3ac0bfdaf109a07342590eb21daee2fc3" + integrity sha512-d/r3S1LwJyMaRAKQ0awmo9whfXeE88Qt00vRj91q5uv5ATtWIQEGJ67Yr5eSZw5zp1/fZCXZYuEckt8lSkereQ== + dependencies: + "@noble/hashes" "^1.1.2" + apg-js "^4.3.0" + uri-js "^4.4.1" + valid-url "^1.0.9" + "@stablelib/aead@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" @@ -3225,11 +3397,6 @@ dependencies: "@types/ms" "*" -"@types/dom-screen-wake-lock@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/dom-screen-wake-lock/-/dom-screen-wake-lock-1.0.3.tgz#c3588a5f6f40fae957f9ce5be9bc4927a61bb9a0" - integrity sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw== - "@types/estree@1.0.5", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" @@ -3309,6 +3476,11 @@ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + "@types/prop-types@*": version "15.7.12" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" @@ -3362,13 +3534,6 @@ resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz" integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== -"@types/secp256k1@^4.0.6": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" - integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== - dependencies: - "@types/node" "*" - "@types/semver@^7.5.0": version "7.5.8" resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz" @@ -3529,32 +3694,52 @@ loupe "^2.3.6" pretty-format "^29.5.0" -"@wagmi/connectors@5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.1.2.tgz#f94a030b277c7c2cf00cf67606c4c907b24fcb58" - integrity sha512-UX5LqDdGXrTdHBpL9wrJbcjK7/rtpOjx6YSIkO26TdPp6UyxQvEmY2XY6hdgBwHVx9xPaiVNIrWoexa5pRJUNA== +"@wagmi/connectors@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.7.0.tgz#a5e6c5403009b37f912210fc5d96727b4caa6a2b" + integrity sha512-cPMmHBGw28fll7VQJC9iF6ngdQ17STTzspqRIjlTkz44zhjwMTf7shw+JJUmqw+0uK7DqRbf/xUHlZE2IVd2mg== dependencies: - "@coinbase/wallet-sdk" "4.0.4" - "@metamask/sdk" "0.27.0" - "@safe-global/safe-apps-provider" "0.18.3" + "@coinbase/wallet-sdk" "4.2.3" + "@metamask/sdk" "0.31.2" + "@safe-global/safe-apps-provider" "0.18.5" "@safe-global/safe-apps-sdk" "9.1.0" - "@walletconnect/ethereum-provider" "2.14.0" - "@walletconnect/modal" "2.6.2" + "@walletconnect/ethereum-provider" "2.17.0" cbw-sdk "npm:@coinbase/wallet-sdk@3.9.3" -"@wagmi/core@2.13.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.13.1.tgz#d9cf910775eca0e1aeb6fe9ad787264ee32632f3" - integrity sha512-6ZdgI6dYfpa+IZPU0DZ3XQEQVzs003tKCERzSUNkxmt5cwSMg0XB1kvF5vU9MuPP96K6IcGkqSwAtgCmM5uy2w== +"@wagmi/connectors@5.7.1": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.7.1.tgz#31e38ef08fe27c5374b20534759936d8bbc19927" + integrity sha512-7K8zKzxKrZRFbJL8vG9qGhYGQ/2Ce534j8ByOABeXWQmXaVSf862v8KiLUUwDlUMktGW9EAjCTrv1ceUWdwgpg== + dependencies: + "@coinbase/wallet-sdk" "4.2.3" + "@metamask/sdk" "0.31.4" + "@safe-global/safe-apps-provider" "0.18.5" + "@safe-global/safe-apps-sdk" "9.1.0" + "@walletconnect/ethereum-provider" "2.17.0" + cbw-sdk "npm:@coinbase/wallet-sdk@3.9.3" + +"@wagmi/core@2.16.0": + version "2.16.0" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.16.0.tgz#b997b2544cd80b4aac4df25ccb2436bf77f9fbe1" + integrity sha512-sy4n7Jv6YCbT2jp4zQ/9H6l0A8StsN7P8mm2BRuODgW2w6Fj4j6h2xgYJD2tIjJHkLU/nvPJ7audZ55X7XQU/g== + dependencies: + eventemitter3 "5.0.1" + mipd "0.0.7" + zustand "5.0.0" + +"@wagmi/core@2.16.1", "@wagmi/core@^2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.16.1.tgz#fb4ccd2be30d550b051f7e1833c5597acd6bef38" + integrity sha512-PFP43jEeyzCp9ZKM+G/H50Gb68XT9J9xLIHvznTvPZOphlnVOVMpZTUARukOQZvmZXZoD2CUTJxT820YrZfjcw== dependencies: eventemitter3 "5.0.1" mipd "0.0.7" - zustand "4.4.1" + zustand "5.0.0" -"@walletconnect/core@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.14.0.tgz#e8afb01455968b02aaf26c74f3bfcc9b82678a39" - integrity sha512-E/dgBM9q3judXnTfZQ5ILvDpeSdDpabBLsXtYXa3Nyc26cfNplfLJ2nXm9FgtTdhM1nZ7yx4+zDPiXawBRZl2g== +"@walletconnect/core@2.17.0": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.17.0.tgz#bf490e85a4702eff0f7cf81ba0d3c1016dffff33" + integrity sha512-On+uSaCfWdsMIQsECwWHZBmUXfrnqmv6B8SXRRuTJgd8tUpEvBkLQH4X7XkSm3zW6ozEkQTCagZ2ox2YPn3kbw== dependencies: "@walletconnect/heartbeat" "1.2.2" "@walletconnect/jsonrpc-provider" "1.0.14" @@ -3563,14 +3748,13 @@ "@walletconnect/jsonrpc-ws-connection" "1.0.14" "@walletconnect/keyvaluestorage" "1.1.1" "@walletconnect/logger" "2.1.2" - "@walletconnect/relay-api" "1.0.10" + "@walletconnect/relay-api" "1.0.11" "@walletconnect/relay-auth" "1.0.4" "@walletconnect/safe-json" "1.0.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.14.0" - "@walletconnect/utils" "2.14.0" + "@walletconnect/types" "2.17.0" + "@walletconnect/utils" "2.17.0" events "3.3.0" - isomorphic-unfetch "3.1.0" lodash.isequal "4.5.0" uint8arrays "3.1.0" @@ -3581,20 +3765,20 @@ dependencies: tslib "1.14.1" -"@walletconnect/ethereum-provider@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.14.0.tgz#0ed4ba9b383c889b56e0af87181756d900fc504a" - integrity sha512-Cc2/DCn85VciA10BrsNWFM//3VC1D8yjwrjfUKjGndLPDz0YIdAxTgYZViIlMjE0lzQC/DMvPYEAnGfW0O1Bwg== +"@walletconnect/ethereum-provider@2.17.0": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.17.0.tgz#d74feaaed6180a6799e96760d7ee867ff3a083d2" + integrity sha512-b+KTAXOb6JjoxkwpgYQQKPUcTwENGmdEdZoIDLeRicUmZTn/IQKfkMoC2frClB4YxkyoVMtj1oMV2JAax+yu9A== dependencies: "@walletconnect/jsonrpc-http-connection" "1.0.8" "@walletconnect/jsonrpc-provider" "1.0.14" "@walletconnect/jsonrpc-types" "1.0.4" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/modal" "2.6.2" - "@walletconnect/sign-client" "2.14.0" - "@walletconnect/types" "2.14.0" - "@walletconnect/universal-provider" "2.14.0" - "@walletconnect/utils" "2.14.0" + "@walletconnect/modal" "2.7.0" + "@walletconnect/sign-client" "2.17.0" + "@walletconnect/types" "2.17.0" + "@walletconnect/universal-provider" "2.17.0" + "@walletconnect/utils" "2.17.0" events "3.3.0" "@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": @@ -3677,35 +3861,35 @@ "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" -"@walletconnect/modal-core@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" - integrity sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA== +"@walletconnect/modal-core@2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.7.0.tgz#73c13c3b7b0abf9ccdbac9b242254a86327ce0a4" + integrity sha512-oyMIfdlNdpyKF2kTJowTixZSo0PGlCJRdssUN/EZdA6H6v03hZnf09JnwpljZNfir2M65Dvjm/15nGrDQnlxSA== dependencies: valtio "1.11.2" -"@walletconnect/modal-ui@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" - integrity sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA== +"@walletconnect/modal-ui@2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.7.0.tgz#dbbb7ee46a5a25f7d39db622706f2d197b268cbb" + integrity sha512-gERYvU7D7K1ANCN/8vUgsE0d2hnRemfAFZ2novm9aZBg7TEd/4EgB+AqbJ+1dc7GhOL6dazckVq78TgccHb7mQ== dependencies: - "@walletconnect/modal-core" "2.6.2" + "@walletconnect/modal-core" "2.7.0" lit "2.8.0" motion "10.16.2" qrcode "1.5.3" -"@walletconnect/modal@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" - integrity sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA== +"@walletconnect/modal@2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.7.0.tgz#55f969796d104cce1205f5f844d8f8438b79723a" + integrity sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw== dependencies: - "@walletconnect/modal-core" "2.6.2" - "@walletconnect/modal-ui" "2.6.2" + "@walletconnect/modal-core" "2.7.0" + "@walletconnect/modal-ui" "2.7.0" -"@walletconnect/relay-api@1.0.10": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.10.tgz#5aef3cd07c21582b968136179aa75849dcc65499" - integrity sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw== +"@walletconnect/relay-api@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" + integrity sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q== dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" @@ -3728,19 +3912,19 @@ dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.14.0.tgz#36533ef0976a869d815624217527482c90937fc8" - integrity sha512-UrB3S3eLjPYfBLCN3WJ5u7+WcZ8kFMe/QIDqLf76Jk6TaLwkSUy563LvnSw4KW/kA+/cY1KBSdUDfX1tzYJJXg== +"@walletconnect/sign-client@2.17.0": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.17.0.tgz#efe811b1bb10082d964e2f0378aaa1b40f424503" + integrity sha512-sErYwvSSHQolNXni47L3Bm10ptJc1s1YoJvJd34s5E9h9+d3rj7PrhbiW9X82deN+Dm5oA8X9tC4xty1yIBrVg== dependencies: - "@walletconnect/core" "2.14.0" + "@walletconnect/core" "2.17.0" "@walletconnect/events" "1.0.1" "@walletconnect/heartbeat" "1.2.2" "@walletconnect/jsonrpc-utils" "1.0.8" "@walletconnect/logger" "2.1.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.14.0" - "@walletconnect/utils" "2.14.0" + "@walletconnect/types" "2.17.0" + "@walletconnect/utils" "2.17.0" events "3.3.0" "@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": @@ -3750,10 +3934,10 @@ dependencies: tslib "1.14.1" -"@walletconnect/types@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.14.0.tgz#af3d4799b8ac5d166251af12bc024276f82f9b91" - integrity sha512-vevMi4jZLJ55vLuFOicQFmBBbLyb+S0sZS4IsaBdZkQflfGIq34HkN13c/KPl4Ye0aoR4/cUcUSitmGIzEQM5g== +"@walletconnect/types@2.17.0": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.17.0.tgz#20eda5791e3172f8ab9146caa3f317701d4b3232" + integrity sha512-i1pn9URpvt9bcjRDkabuAmpA9K7mzyKoLJlbsAujRVX7pfaG7wur7u9Jz0bk1HxvuABL5LHNncTnVKSXKQ5jZA== dependencies: "@walletconnect/events" "1.0.1" "@walletconnect/heartbeat" "1.2.2" @@ -3762,38 +3946,40 @@ "@walletconnect/logger" "2.1.2" events "3.3.0" -"@walletconnect/universal-provider@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.14.0.tgz#39d029be80374894b5f4249b76282dd9211d8b9f" - integrity sha512-Mr8uoTmD6H0+Hh+3gxBu4l3T2uP/nNPR02sVtwEujNum++F727mMk+ifPRIpkVo21V/bvXFEy8sHTs5hqyq5iA== +"@walletconnect/universal-provider@2.17.0": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.17.0.tgz#c9d4bbd9b8f0e41b500b2488ccbc207dc5f7a170" + integrity sha512-d3V5Be7AqLrvzcdMZSBS8DmGDRdqnyLk1DWmRKAGgR6ieUWykhhUKlvfeoZtvJrIXrY7rUGYpH1X41UtFkW5Pw== dependencies: "@walletconnect/jsonrpc-http-connection" "1.0.8" "@walletconnect/jsonrpc-provider" "1.0.14" "@walletconnect/jsonrpc-types" "1.0.4" "@walletconnect/jsonrpc-utils" "1.0.8" "@walletconnect/logger" "2.1.2" - "@walletconnect/sign-client" "2.14.0" - "@walletconnect/types" "2.14.0" - "@walletconnect/utils" "2.14.0" + "@walletconnect/sign-client" "2.17.0" + "@walletconnect/types" "2.17.0" + "@walletconnect/utils" "2.17.0" events "3.3.0" -"@walletconnect/utils@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.14.0.tgz#48493ffe1e902815fda3cbd5cc5409288a066d35" - integrity sha512-vRVomYQEtEAyCK2c5bzzEvtgxaGGITF8mWuIL+WYSAMyEJLY97mirP2urDucNwcUczwxUgI+no9RiNFbUHreQQ== +"@walletconnect/utils@2.17.0": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.17.0.tgz#02b3af0b80d0c1a994d692d829d066271b04d071" + integrity sha512-1aeQvjwsXy4Yh9G6g2eGmXrEl+BzkNjHRdCrGdMYqFTFa8ROEJfTGsSH3pLsNDlOY94CoBUvJvM55q/PMoN/FQ== dependencies: "@stablelib/chacha20poly1305" "1.0.1" "@stablelib/hkdf" "1.0.1" "@stablelib/random" "1.0.2" "@stablelib/sha256" "1.0.1" "@stablelib/x25519" "1.0.3" - "@walletconnect/relay-api" "1.0.10" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.0.4" "@walletconnect/safe-json" "1.0.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.14.0" + "@walletconnect/types" "2.17.0" "@walletconnect/window-getters" "1.0.1" "@walletconnect/window-metadata" "1.0.1" detect-browser "5.3.0" + elliptic "^6.5.7" query-string "7.1.3" uint8arrays "3.1.0" @@ -3866,6 +4052,16 @@ abitype@1.0.5: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.5.tgz#29d0daa3eea867ca90f7e4123144c1d1270774b6" integrity sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw== +abitype@1.0.6, abitype@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.6.tgz#76410903e1d88e34f1362746e2d407513c38565b" + integrity sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A== + +abitype@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.7.tgz#876a0005d211e1c9132825d45bcee7b46416b284" + integrity sha512-ZfYYSktDQUwc2eduYu8C4wOs+RDPmnRYMh7zNfzeMtGGgb0U+6tLGjixUic6mXf5xKKCcgT5Qp6cv39tOARVFw== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -3948,6 +4144,11 @@ apexcharts@^3.49.1: svg.resize.js "^1.4.3" svg.select.js "^3.0.1" +apg-js@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/apg-js/-/apg-js-4.4.0.tgz#09dcecab0731fbde233b9f2352fdd2d07e56b2cf" + integrity sha512-fefmXFknJmtgtNEXfPwZKYkMFX4Fyeyz+fNF6JWp87biGOPslJbCBVU158zvKRZfHBKnJDy8CMM40oLFGkXT8Q== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" @@ -3967,6 +4168,16 @@ aria-query@^5.3.0: dependencies: dequal "^2.0.3" +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" @@ -4088,6 +4299,11 @@ async-mutex@^0.2.6: dependencies: tslib "^2.0.0" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + atomic-sleep@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" @@ -4105,6 +4321,15 @@ axe-core@=4.7.0: resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz" integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== +axios@^1.7.2: + version "1.7.9" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" + integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axobject-query@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" @@ -4153,7 +4378,7 @@ bech32@^2.0.0: resolved "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz" integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== -bignumber.js@^9.0.0: +bignumber.js@^9.0.0, bignumber.js@^9.1.2: version "9.1.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== @@ -4203,6 +4428,13 @@ bip32@^2.0.4: typeforce "^1.11.5" wif "^2.0.6" +bip39@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" + integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== + dependencies: + "@noble/hashes" "^1.2.0" + bip66@^1.1.0: version "1.1.5" resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" @@ -4265,6 +4497,18 @@ bitcoinjs-lib@^6.1.3: typeforce "^1.11.3" varuint-bitcoin "^1.1.2" +bitcoinjs-lib@^6.1.5, bitcoinjs-lib@^6.1.6: + version "6.1.7" + resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.7.tgz#0f98dec1333d658574eefa455295668cfae38bb0" + integrity sha512-tlf/r2DGMbF7ky1MgUqXHzypYHakkEnm0SZP23CJKIqNY/5uNAnMbFhMJdhjrL/7anfb/U8+AlpdjPWjPnAalg== + dependencies: + "@noble/hashes" "^1.2.0" + bech32 "^2.0.0" + bip174 "^2.1.1" + bs58check "^3.0.1" + typeforce "^1.11.3" + varuint-bitcoin "^1.1.2" + bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" @@ -4448,9 +4692,9 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -4554,6 +4798,33 @@ color2k@^2.0.2: resolved "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz" integrity sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + commander@7: version "7.2.0" resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" @@ -5128,6 +5399,11 @@ deep-eql@^4.1.3: dependencies: type-detect "^4.0.0" +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" @@ -5147,11 +5423,6 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" @@ -5178,6 +5449,11 @@ delaunator@5: dependencies: robust-predicates "^3.0.2" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -5220,10 +5496,10 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dlc-btc-lib@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/dlc-btc-lib/-/dlc-btc-lib-2.5.1.tgz#b1eb33c0a56a244fcb109da4704854cf8a585c15" - integrity sha512-YRfIsfsgzmUcepowZYaLjY/1E2MJbN5zIhEhS1NgiJsDBjNVAiZTHLY7RiX3eNValgFSnsY3IpUyF6piPap72A== +dlc-btc-lib@2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/dlc-btc-lib/-/dlc-btc-lib-2.5.3.tgz#a7a7df7236ad14877c77d2df172e29627ebb4816" + integrity sha512-QFN0nGO9P3zhfydI9j07iUxhxyRrxVRD941WhIXblw/YZDVXT8+PYW4GciSlU8KiydtHtYD+fWkUkSgUeC5kaQ== dependencies: "@dfns/sdk" "^0.5.9" "@dfns/sdk-browser" "^0.5.9" @@ -5276,14 +5552,15 @@ duplexify@^4.1.2: readable-stream "^3.1.1" stream-shift "^1.0.2" -eciesjs@^0.3.15: - version "0.3.19" - resolved "https://registry.yarnpkg.com/eciesjs/-/eciesjs-0.3.19.tgz#a22e9e1efe3fdedec02c828e2632ae0d4a073676" - integrity sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA== +eciesjs@^0.4.11: + version "0.4.12" + resolved "https://registry.yarnpkg.com/eciesjs/-/eciesjs-0.4.12.tgz#0ce482454953592e07b79b4824751f3b5c508b56" + integrity sha512-DGejvMCihsRAmKRFQiL6KZDE34vWVd0gvXlykFq1aEzJy/rD65AVyAIUZKZOvgvaP9ATQRcHGEZV5DfgrgjA4w== dependencies: - "@types/secp256k1" "^4.0.6" - futoin-hkdf "^1.5.3" - secp256k1 "^5.0.0" + "@ecies/ciphers" "^0.2.1" + "@noble/ciphers" "^1.0.0" + "@noble/curves" "^1.6.0" + "@noble/hashes" "^1.5.0" ecpair@^2.1.0: version "2.1.0" @@ -5325,10 +5602,10 @@ elliptic@^6.4.0: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -elliptic@^6.5.4: - version "6.5.6" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.6.tgz#ee5f7c3a00b98a2144ac84d67d01f04d438fa53e" - integrity sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ== +elliptic@^6.5.7: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== dependencies: bn.js "^4.11.9" brorand "^1.1.0" @@ -5561,11 +5838,6 @@ escalade@^3.1.1: resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== -escape-string-regexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" @@ -5829,7 +6101,7 @@ ethereum-cryptography@^2.0.0: ethers@5.7.2: version "5.7.2" - resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== dependencies: "@ethersproject/abi" "5.7.0" @@ -5868,7 +6140,7 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.7: +eventemitter2@^6.4.9: version "6.4.9" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== @@ -5980,6 +6252,13 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" @@ -6022,6 +6301,11 @@ focus-lock@^1.3.2: dependencies: tslib "^2.0.3" +follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" @@ -6029,6 +6313,15 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + formik@^2.4.5: version "2.4.5" resolved "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz" @@ -6057,6 +6350,15 @@ framesync@6.1.2: dependencies: tslib "2.4.0" +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" @@ -6092,11 +6394,6 @@ functions-have-names@^1.2.3: resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -futoin-hkdf@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/futoin-hkdf/-/futoin-hkdf-1.5.3.tgz#6c8024f2e1429da086d4e18289ef2239ad33ee35" - integrity sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ== - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" @@ -6161,6 +6458,18 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.1.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" @@ -6211,6 +6520,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + graphemer@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" @@ -6326,20 +6640,6 @@ human-signals@^5.0.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== -i18next-browser-languagedetector@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz#01876fac51f86b78975e79b48ccb62e2313a2d7d" - integrity sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA== - dependencies: - "@babel/runtime" "^7.19.4" - -i18next@23.11.5: - version "23.11.5" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.11.5.tgz#d71eb717a7e65498d87d0594f2664237f9e361ef" - integrity sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA== - dependencies: - "@babel/runtime" "^7.23.2" - iconv-lite@0.6: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -6407,7 +6707,7 @@ internal-slot@^1.0.7: resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== -invariant@2.2.4, invariant@^2.2.4: +invariant@^2.2.4: version "2.2.4" resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -6495,11 +6795,6 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - is-docker@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" @@ -6641,13 +6936,6 @@ is-weakset@^2.0.3: call-bind "^1.0.7" get-intrinsic "^1.2.4" -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - is-wsl@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" @@ -6677,19 +6965,16 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isomorphic-unfetch@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" - integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== - dependencies: - node-fetch "^2.6.1" - unfetch "^4.2.0" - isows@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.4.tgz#810cd0d90cc4995c26395d2aa4cfa4037ebdf061" integrity sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ== +isows@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" + integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== + iterator.prototype@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" @@ -6711,9 +6996,9 @@ jiti@^1.21.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== -js-sha3@0.8.0: +js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" - resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: @@ -6783,6 +7068,13 @@ jsonc-parser@^3.2.0: resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz" integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: version "3.3.5" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" @@ -6793,6 +7085,11 @@ jsonc-parser@^3.2.0: object.assign "^4.1.4" object.values "^1.1.6" +jwt-decode@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" + integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== + keccak@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" @@ -6933,6 +7230,11 @@ lodash-es@^4.17.21: resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.isequal@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -6948,9 +7250,9 @@ lodash.mergewith@4.6.2: resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== -lodash@^4.17.21: +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: @@ -7045,6 +7347,18 @@ micromatch@^4.0.5: braces "^3.0.3" picomatch "^2.3.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" @@ -7072,9 +7386,9 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" @@ -7089,6 +7403,11 @@ mipd@0.0.7: resolved "https://registry.yarnpkg.com/mipd/-/mipd-0.0.7.tgz#bb5559e21fa18dc3d9fe1c08902ef14b7ce32fd9" integrity sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg== +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mlly@^1.2.0, mlly@^1.4.0: version "1.6.1" resolved "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz" @@ -7143,7 +7462,7 @@ ms@2.1.2: ms@^2.1.1: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multiformats@^9.4.2: @@ -7176,11 +7495,6 @@ node-addon-api@^2.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -node-addon-api@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" - integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== - node-addon-api@^7.0.0: version "7.1.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" @@ -7191,7 +7505,7 @@ node-fetch-native@^1.6.2, node-fetch-native@^1.6.3, node-fetch-native@^1.6.4: resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== -node-fetch@^2.6.1, node-fetch@^2.6.11, node-fetch@^2.6.12: +node-fetch@^2.6.11, node-fetch@^2.6.12: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -7338,15 +7652,6 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" -open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - optionator@^0.9.3: version "0.9.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" @@ -7359,6 +7664,19 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" +ox@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.1.2.tgz#0f791be2ccabeaf4928e6d423498fe1c8094e560" + integrity sha512-ak/8K0Rtphg9vnRJlbOdaX9R7cmxD2MiSthjWGaQdMk3D7hrAlDoM+6Lxn7hN52Za3vrXfZ7enfke/5WjolDww== + dependencies: + "@adraffy/ens-normalize" "^1.10.1" + "@noble/curves" "^1.6.0" + "@noble/hashes" "^1.5.0" + "@scure/bip32" "^1.5.0" + "@scure/bip39" "^1.4.0" + abitype "^1.0.6" + eventemitter3 "5.0.1" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -7572,11 +7890,21 @@ preact@^10.16.0: resolved "https://registry.yarnpkg.com/preact/-/preact-10.23.1.tgz#d400107289bc979881c5212cb5f5cd22cd1dc38c" integrity sha512-O5UdRsNh4vdZaTieWe3XOgSpdMAmkIYBCT3VhQDlKrzyCm8lUYsk0fmVEvoQQifoOjFRTaHZO69ylrzTW2BH+A== +preact@^10.24.2: + version "10.25.2" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.25.2.tgz#e141e18a547ae0082dae48d044e0d8267e2547d2" + integrity sha512-GEts1EH3oMnqdOIeXhlbBSddZ9nrINd070WBOiPO2ous1orrKGUM4SMDbwyjSWD1iMS2dBvaDjAa5qUhz3TXqw== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + prettier@^3.0.3: version "3.2.5" resolved "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz" @@ -7623,11 +7951,21 @@ prop-types@15.8.1, prop-types@^15.6.2, prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +property-expr@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" + integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== + proxy-compare@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -7648,23 +7986,6 @@ pushdata-bitcoin@^1.0.1: dependencies: bitcoin-ops "^1.3.0" -qr-code-styling@^1.6.0-rc.1: - version "1.6.0-rc.1" - resolved "https://registry.yarnpkg.com/qr-code-styling/-/qr-code-styling-1.6.0-rc.1.tgz#6c89e185fa50cc9135101085c12ae95b06f1b290" - integrity sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q== - dependencies: - qrcode-generator "^1.4.3" - -qrcode-generator@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode-generator/-/qrcode-generator-1.4.4.tgz#63f771224854759329a99048806a53ed278740e7" - integrity sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw== - -qrcode-terminal-nooctal@^0.12.1: - version "0.12.1" - resolved "https://registry.yarnpkg.com/qrcode-terminal-nooctal/-/qrcode-terminal-nooctal-0.12.1.tgz#45016aca0d82b2818de7af0a06d072ad671fbe2e" - integrity sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg== - qrcode@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" @@ -7791,14 +8112,6 @@ react-is@^18.0.0: resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-native-webview@^11.26.0: - version "11.26.1" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da" - integrity sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw== - dependencies: - escape-string-regexp "2.0.0" - invariant "2.2.4" - react-redux@^8.1.3: version "8.1.3" resolved "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz" @@ -7875,6 +8188,13 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + readable-stream@^2.3.3: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" @@ -7920,6 +8240,11 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + redux-persist-expire@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/redux-persist-expire/-/redux-persist-expire-1.1.1.tgz" @@ -8062,16 +8387,6 @@ robust-predicates@^3.0.2: resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== -rollup-plugin-visualizer@^5.9.2: - version "5.12.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" - integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== - dependencies: - open "^8.4.0" - picomatch "^2.3.1" - source-map "^0.7.4" - yargs "^17.5.1" - rollup@^3.27.1: version "3.29.4" resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" @@ -8180,15 +8495,6 @@ scure@1.6.0: dependencies: pluralize "^7.0.0" -secp256k1@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" - integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^5.0.0" - node-gyp-build "^4.2.0" - semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" @@ -8298,6 +8604,16 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +siwe@^2.1.4: + version "2.3.2" + resolved "https://registry.yarnpkg.com/siwe/-/siwe-2.3.2.tgz#0794ae25f734f3068de0ab093ddd2f7867bc2d67" + integrity sha512-aSf+6+Latyttbj5nMu6GF3doMfv2UYj83hhwZgUF20ky6fTS83uVhkQABdIVnEuS8y1bBdk7p6ltb9SmlhTTlA== + dependencies: + "@spruceid/siwe-parser" "^2.1.2" + "@stablelib/random" "^1.0.1" + uri-js "^4.4.1" + valid-url "^1.0.9" + slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" @@ -8351,7 +8667,7 @@ source-map@^0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@^0.7.4: +source-map@^0.7.3: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== @@ -8396,6 +8712,11 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -8590,6 +8911,16 @@ system-architecture@^0.1.0: resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" @@ -8602,6 +8933,11 @@ thread-stream@^0.15.1: dependencies: real-require "^0.1.0" +tiny-case@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" + integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== + tiny-invariant@^1.0.6: version "1.3.3" resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz" @@ -8618,7 +8954,7 @@ tiny-secp256k1@1.1.6: elliptic "^6.4.0" nan "^2.13.2" -tiny-secp256k1@2.2.3: +tiny-secp256k1@2.2.3, tiny-secp256k1@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-2.2.3.tgz#fe1dde11a64fcee2091157d4b78bcb300feb9b65" integrity sha512-SGcL07SxcPN2nGKHTCvRMkQLYPSoeFcvArUSCYtjVARiFAWU44cCIqYS0mYAU6nY7XfvwURuTIGo2Omt3ZQr0Q== @@ -8680,6 +9016,11 @@ toml-eslint-parser@^0.9.3: dependencies: eslint-visitor-keys "^3.0.0" +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -8695,6 +9036,21 @@ ts-api-utils@^1.0.1: resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz" integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + ts-toolbelt@^9.6.0: version "9.6.0" resolved "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz" @@ -8733,6 +9089,11 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.6.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" @@ -8762,6 +9123,27 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +typechain@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + typed-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz" @@ -8823,6 +9205,16 @@ typescript@^5.2.2: resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz" integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + ufo@^1.3.2: version "1.5.3" resolved "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz" @@ -8888,10 +9280,10 @@ unenv@^1.9.0: node-fetch-native "^1.6.4" pathe "^1.1.2" -unfetch@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" - integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== unstorage@^1.9.0: version "1.10.2" @@ -8931,9 +9323,9 @@ uqr@^0.1.2: resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -8975,6 +9367,13 @@ utf-8-validate@^5.0.2: dependencies: node-gyp-build "^4.3.0" +utf-8-validate@^6.0.3: + version "6.0.5" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.5.tgz#8087d39902be2cc15bdb21a426697ff256d65aab" + integrity sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA== + dependencies: + node-gyp-build "^4.3.0" + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" @@ -9006,6 +9405,11 @@ uuid@^9.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== +valid-url@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== + valtio@1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" @@ -9021,7 +9425,22 @@ varuint-bitcoin@1.1.2, varuint-bitcoin@^1.0.4, varuint-bitcoin@^1.1.2: dependencies: safe-buffer "^5.1.1" -viem@2.x, viem@^2.1.1: +viem@2.x: + version "2.21.57" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.57.tgz#bedbb444bb42e07ccc2264a9a0441903a113aab8" + integrity sha512-Mw4f4Dw0+Y/wSHdynVmP4uh+Cw15HEoj8BOKvKH5nGA6oFZYRxSy9Ruu7ZG8jexeAVCZ57aIuXb0gNg6Vb1x0g== + dependencies: + "@noble/curves" "1.7.0" + "@noble/hashes" "1.6.1" + "@scure/bip32" "1.6.0" + "@scure/bip39" "1.5.0" + abitype "1.0.7" + isows "1.0.6" + ox "0.1.2" + webauthn-p256 "0.0.10" + ws "8.18.0" + +viem@^2.1.1: version "2.18.6" resolved "https://registry.yarnpkg.com/viem/-/viem-2.18.6.tgz#527c54a032cdd4c1f1795fcb44072e8c3efd16c6" integrity sha512-KughUodIEjzkC+KfQ4+259yRXYfo0VLkZQ7NVC3RGfCMMOiVWaOxHjmcaY0FnZzKX3pwrlMyTAZbwH9tVAN/Yw== @@ -9036,6 +9455,36 @@ viem@2.x, viem@^2.1.1: webauthn-p256 "0.0.5" ws "8.17.1" +viem@^2.20.1: + version "2.21.49" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.49.tgz#528d5e54747ba3125041cd753459a4ce673aaaa6" + integrity sha512-NNItYfTv4+yGE5DDKc+S/g2S7KeJn047GwgEYG60FAJlK0FzwuP6lQKSeQ8k7Y4VasfuKPqiT+XiilcCtTRiDQ== + dependencies: + "@noble/curves" "1.6.0" + "@noble/hashes" "1.5.0" + "@scure/bip32" "1.5.0" + "@scure/bip39" "1.4.0" + abitype "1.0.6" + isows "1.0.6" + ox "0.1.2" + webauthn-p256 "0.0.10" + ws "8.18.0" + +viem@^2.21.15: + version "2.21.55" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.55.tgz#a57ad31fcf2a0f6c011b1909f02c94421ec4f781" + integrity sha512-PgXew7C11cAuEtOSgRyQx2kJxEOPUwIwZA9dMglRByqJuFVA7wSGZZOOo/93iylAA8E15bEdqy9xulU3oKZ70Q== + dependencies: + "@noble/curves" "1.7.0" + "@noble/hashes" "1.6.1" + "@scure/bip32" "1.6.0" + "@scure/bip39" "1.5.0" + abitype "1.0.7" + isows "1.0.6" + ox "0.1.2" + webauthn-p256 "0.0.10" + ws "8.18.0" + vite-node@0.34.6: version "0.34.6" resolved "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz" @@ -9113,13 +9562,22 @@ vitest@^0.34.6: vite-node "0.34.6" why-is-node-running "^2.2.2" -wagmi@^2.12.2: - version "2.12.2" - resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.12.2.tgz#1d3b1dea0783c05245aed72a29bce756eb4f0bd8" - integrity sha512-gIZdAgmHJjENdOdkD/Zpu85NR16k/uMB3H/yGBz1q9bDAE8oguuBxRUEhuMt6jAC95RB96+7hMVfL9kBtHnu+g== +wagmi@2.14.4: + version "2.14.4" + resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.14.4.tgz#ec617c0358fbc502ca603739ecd115ed146d69f8" + integrity sha512-Yg5Vic+k0Y2Dt1GdLTUi/Gmw3afRer1o+p0bqvn1kpjWVJZd2+YfHQLY54yeKdDw6uFaWGYxp3JWKz6iILYfuw== + dependencies: + "@wagmi/connectors" "5.7.1" + "@wagmi/core" "2.16.1" + use-sync-external-store "1.2.0" + +wagmi@^2.12.16: + version "2.14.3" + resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.14.3.tgz#3abfe5e9f796890d75d1b7d506e9dccd6b87f254" + integrity sha512-sr8o7+EBw22GhieDyXLv8Zr2vgC6xKrYoSuUIpq0xOqEhvMP1q880VtR4lFG1capc2QEWvK72pJ/+jpsEQcMYQ== dependencies: - "@wagmi/connectors" "5.1.2" - "@wagmi/core" "2.13.1" + "@wagmi/connectors" "5.7.0" + "@wagmi/core" "2.16.0" use-sync-external-store "1.2.0" web-encoding@1.1.5: @@ -9136,6 +9594,14 @@ web-streams-polyfill@^3.1.1: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== +webauthn-p256@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.10.tgz#877e75abe8348d3e14485932968edf3325fd2fdd" + integrity sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA== + dependencies: + "@noble/curves" "^1.4.0" + "@noble/hashes" "^1.4.0" + webauthn-p256@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.5.tgz#0baebd2ba8a414b21cc09c0d40f9dd0be96a06bd" @@ -9244,6 +9710,14 @@ wif@^2.0.1, wif@^2.0.6: dependencies: bs58check "<3.0.0" +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -9277,16 +9751,16 @@ ws@8.17.1, ws@~8.17.1: resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +ws@8.18.0, ws@^8.13.0, ws@^8.14.2: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + ws@^7.5.1: version "7.5.10" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@^8.13.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - xmlhttprequest-ssl@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" @@ -9367,7 +9841,7 @@ yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.5.1, yargs@^17.7.2: +yargs@^17.7.2: version "17.7.2" resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -9399,9 +9873,17 @@ youtube-player@5.5.2: load-script "^1.0.0" sister "^3.0.0" -zustand@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.1.tgz#0cd3a3e4756f21811bd956418fdc686877e8b3b0" - integrity sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw== +yup@^1.4.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/yup/-/yup-1.6.0.tgz#70d4e81ed7b73564f86efa25c7c469cadcabf665" + integrity sha512-/dny6arMf5CV6ZPAGpXYVw0wR8qcDF15H8zILTQWoRf6jHN1nJNFL1IAlFfUMlO7QGifMVHZle/l8YJdxtWfxg== dependencies: - use-sync-external-store "1.2.0" + property-expr "^2.0.5" + tiny-case "^1.0.3" + toposort "^2.0.2" + type-fest "^2.19.0" + +zustand@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.0.tgz#71f8aaecf185592a3ba2743d7516607361899da9" + integrity sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==