diff --git a/examples/components/package.json b/examples/components/package.json index d8fabecc3..dc73e5ade 100644 --- a/examples/components/package.json +++ b/examples/components/package.json @@ -9,6 +9,7 @@ }, "peerDependencies": { "@0xsequence/design-system": "2.1.11", + "@0xsequence/web-sdk-core": "workspace:*", "@0xsequence/network": "*", "wagmi": "^2.15.0" }, diff --git a/examples/components/src/WalletListItem.tsx b/examples/components/src/WalletListItem.tsx index ecf54fe27..437c9ff7d 100644 --- a/examples/components/src/WalletListItem.tsx +++ b/examples/components/src/WalletListItem.tsx @@ -1,5 +1,5 @@ -import { truncateAtMiddle } from '@0xsequence/connect' import { Button, Card, cn, Text } from '@0xsequence/design-system' +import { truncateAtMiddle } from '@0xsequence/web-sdk-core' interface WalletListItemProps { id: string diff --git a/examples/next/package.json b/examples/next/package.json index da4daaf45..1963cc26f 100644 --- a/examples/next/package.json +++ b/examples/next/package.json @@ -10,6 +10,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { + "@0xsequence/web-sdk-core": "workspace:*", "@0xsequence/checkout": "workspace:*", "@0xsequence/connect": "workspace:*", "@0xsequence/design-system": "2.1.11", diff --git a/examples/next/src/app/components/Connected.tsx b/examples/next/src/app/components/Connected.tsx index 1524662fb..7d2839f63 100644 --- a/examples/next/src/app/components/Connected.tsx +++ b/examples/next/src/app/components/Connected.tsx @@ -1,6 +1,5 @@ import type { CheckoutSettings } from '@0xsequence/checkout' import { - ContractVerificationStatus, signEthAuthProof, useOpenConnectModal, // useSocialLink, @@ -13,6 +12,7 @@ import { Button, Card, cn, Text } from '@0xsequence/design-system' import { useIndexerClient } from '@0xsequence/hooks' import { allNetworks, ChainId } from '@0xsequence/network' import { useOpenWalletModal } from '@0xsequence/wallet-widget' +import { ContractVerificationStatus } from '@0xsequence/web-sdk-core' import { CardButton, Header, WalletListItem } from 'example-shared-components' import { useCallback, useEffect, useState, type ComponentProps } from 'react' import { encodeFunctionData, formatUnits, parseAbi, parseUnits } from 'viem' diff --git a/examples/react/package.json b/examples/react/package.json index a00766243..82223041e 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -11,6 +11,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { + "@0xsequence/web-sdk-core": "workspace:*", "@0xsequence/checkout": "workspace:*", "@0xsequence/connect": "workspace:*", "@0xsequence/design-system": "2.1.11", diff --git a/examples/react/src/components/Connected.tsx b/examples/react/src/components/Connected.tsx index 886c9f2db..6b804774e 100644 --- a/examples/react/src/components/Connected.tsx +++ b/examples/react/src/components/Connected.tsx @@ -8,7 +8,6 @@ import { } from '@0xsequence/checkout' import type { SwapModalSettings } from '@0xsequence/checkout' import { - getModalPositionCss, signEthAuthProof, useOpenConnectModal, useSocialLink, @@ -20,6 +19,7 @@ import { import { Button, Card, cn, Modal, Scroll, Switch, Text, TextInput } from '@0xsequence/design-system' import { allNetworks, ChainId } from '@0xsequence/network' import { useOpenWalletModal } from '@0xsequence/wallet-widget' +import { getModalPositionCss } from '@0xsequence/web-sdk-core' import { CardButton, Header, WalletListItem } from 'example-shared-components' import { AnimatePresence } from 'motion/react' import React, { useEffect, type ComponentProps } from 'react' diff --git a/examples/react/src/components/CustomCheckout/index.tsx b/examples/react/src/components/CustomCheckout/index.tsx index 92ffcfb48..835b66334 100644 --- a/examples/react/src/components/CustomCheckout/index.tsx +++ b/examples/react/src/components/CustomCheckout/index.tsx @@ -1,6 +1,6 @@ import { CreditCardProviders, useCheckoutUI } from '@0xsequence/checkout' -import { CryptoOption } from '@0xsequence/connect' import { Button, Image, NetworkImage, Spinner, Text } from '@0xsequence/design-system' +import { CryptoOption } from '@0xsequence/web-sdk-core' import { useState } from 'react' import { encodeFunctionData, toHex } from 'viem' import { useAccount } from 'wagmi' diff --git a/packages/checkout/package.json b/packages/checkout/package.json index d42ac6a9a..d847ea48b 100644 --- a/packages/checkout/package.json +++ b/packages/checkout/package.json @@ -41,6 +41,7 @@ "peerDependencies": { "0xsequence": ">= 2.3.23", "@0xsequence/api": ">=2.3.23", + "@0xsequence/web-sdk-core": "workspace:*", "@0xsequence/connect": "workspace:*", "@0xsequence/hooks": "workspace:*", "@0xsequence/indexer": ">= 2.3.23", diff --git a/packages/checkout/src/components/SequenceCheckoutProvider/SequenceCheckoutProvider.tsx b/packages/checkout/src/components/SequenceCheckoutProvider/SequenceCheckoutProvider.tsx index 0e03db659..2ccee1c8e 100644 --- a/packages/checkout/src/components/SequenceCheckoutProvider/SequenceCheckoutProvider.tsx +++ b/packages/checkout/src/components/SequenceCheckoutProvider/SequenceCheckoutProvider.tsx @@ -1,7 +1,8 @@ 'use client' -import { getModalPositionCss, ShadowRoot, useConnectConfigContext, useTheme } from '@0xsequence/connect' +import { ShadowRoot, useConnectConfigContext, useTheme } from '@0xsequence/connect' import { Modal } from '@0xsequence/design-system' +import { getModalPositionCss } from '@0xsequence/web-sdk-core' import { AnimatePresence } from 'motion/react' import { useEffect, useState, type ReactNode } from 'react' diff --git a/packages/checkout/src/contexts/AddFundsModal.ts b/packages/checkout/src/contexts/AddFundsModal.ts index 2e949957c..d1b51da06 100644 --- a/packages/checkout/src/contexts/AddFundsModal.ts +++ b/packages/checkout/src/contexts/AddFundsModal.ts @@ -1,8 +1,7 @@ import { TransactionOnRampProvider } from '@0xsequence/marketplace' +import { createGenericContext } from '@0xsequence/web-sdk-core' import type { Hex } from 'viem' -import { createGenericContext } from './genericContext.js' - export interface AddFundsSettings { walletAddress: string | Hex fiatAmount?: string diff --git a/packages/checkout/src/contexts/CheckoutModal.ts b/packages/checkout/src/contexts/CheckoutModal.ts index 6b1a75542..bda8f17b5 100644 --- a/packages/checkout/src/contexts/CheckoutModal.ts +++ b/packages/checkout/src/contexts/CheckoutModal.ts @@ -1,9 +1,9 @@ 'use client' import type { Theme } from '@0xsequence/design-system' +import { createGenericContext } from '@0xsequence/web-sdk-core' -import { createGenericContext } from './genericContext.js' -import type { SupplementaryAnalyticsInfo, ActionButtons } from './SelectPaymentModal.js' +import type { ActionButtons, SupplementaryAnalyticsInfo } from './SelectPaymentModal.js' interface CoinQuantity { contractAddress: string diff --git a/packages/checkout/src/contexts/Environment.ts b/packages/checkout/src/contexts/Environment.ts index 54b3fc7dc..0915404fa 100644 --- a/packages/checkout/src/contexts/Environment.ts +++ b/packages/checkout/src/contexts/Environment.ts @@ -1,6 +1,6 @@ 'use client' -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' export interface EnvironmentOverrides { marketplaceApiUrl: string diff --git a/packages/checkout/src/contexts/Navigation.ts b/packages/checkout/src/contexts/Navigation.ts index 528529def..320df83a9 100644 --- a/packages/checkout/src/contexts/Navigation.ts +++ b/packages/checkout/src/contexts/Navigation.ts @@ -1,8 +1,8 @@ 'use client' -import type { CreditCardCheckout } from '../contexts/CheckoutModal.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' -import { createGenericContext } from './genericContext.js' +import type { CreditCardCheckout } from '../contexts/CheckoutModal.js' export interface SelectCheckoutNavigation { location: 'select-method-checkout' diff --git a/packages/checkout/src/contexts/NavigationCheckout.ts b/packages/checkout/src/contexts/NavigationCheckout.ts index d9d6d5ba3..18d068765 100644 --- a/packages/checkout/src/contexts/NavigationCheckout.ts +++ b/packages/checkout/src/contexts/NavigationCheckout.ts @@ -1,6 +1,6 @@ 'use client' -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' export interface PaymentMethodSelectionParams { selectedCurrency?: { diff --git a/packages/checkout/src/contexts/SelectPaymentModal.ts b/packages/checkout/src/contexts/SelectPaymentModal.ts index 34ec1d33a..95f3cdd4e 100644 --- a/packages/checkout/src/contexts/SelectPaymentModal.ts +++ b/packages/checkout/src/contexts/SelectPaymentModal.ts @@ -1,10 +1,9 @@ import { TransactionOnRampProvider } from '@0xsequence/marketplace' +import { createGenericContext } from '@0xsequence/web-sdk-core' import type { Hex } from 'viem' import type { TransakConfig } from '../contexts/CheckoutModal.js' -import { createGenericContext } from './genericContext.js' - export type CreditCardProviders = 'sardine' | 'transak' export interface Collectible { diff --git a/packages/checkout/src/contexts/SwapModal.ts b/packages/checkout/src/contexts/SwapModal.ts index b9f2c9fd6..bd785b474 100644 --- a/packages/checkout/src/contexts/SwapModal.ts +++ b/packages/checkout/src/contexts/SwapModal.ts @@ -1,9 +1,8 @@ 'use client' +import { createGenericContext } from '@0xsequence/web-sdk-core' import type { Hex } from 'viem' -import { createGenericContext } from './genericContext.js' - interface Transaction { to: Hex data?: Hex diff --git a/packages/checkout/src/contexts/TransactionStatusModal.ts b/packages/checkout/src/contexts/TransactionStatusModal.ts index 071ac811b..4ded24466 100644 --- a/packages/checkout/src/contexts/TransactionStatusModal.ts +++ b/packages/checkout/src/contexts/TransactionStatusModal.ts @@ -1,4 +1,5 @@ -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' + import type { ActionButtons } from './SelectPaymentModal.js' interface Item { diff --git a/packages/checkout/src/contexts/TransferFundsModal.ts b/packages/checkout/src/contexts/TransferFundsModal.ts index 57317d8aa..0e608da4d 100644 --- a/packages/checkout/src/contexts/TransferFundsModal.ts +++ b/packages/checkout/src/contexts/TransferFundsModal.ts @@ -1,7 +1,6 @@ +import { createGenericContext } from '@0xsequence/web-sdk-core' import type { Hex } from 'viem' -import { createGenericContext } from './genericContext.js' - export interface TransferFundsSettings { walletAddress: string | Hex onClose?: () => void diff --git a/packages/checkout/src/hooks/useCheckoutUI/useCreditCardPayment.tsx b/packages/checkout/src/hooks/useCheckoutUI/useCreditCardPayment.tsx index be07bc0e7..72c003242 100644 --- a/packages/checkout/src/hooks/useCheckoutUI/useCreditCardPayment.tsx +++ b/packages/checkout/src/hooks/useCheckoutUI/useCreditCardPayment.tsx @@ -1,8 +1,8 @@ import { useProjectAccessKey } from '@0xsequence/connect' -import { compareAddress } from '@0xsequence/connect' import { useConfig } from '@0xsequence/hooks' import type { ContractInfo, TokenMetadata } from '@0xsequence/metadata' import { findSupportedNetwork } from '@0xsequence/network' +import { compareAddress } from '@0xsequence/web-sdk-core' import pako from 'pako' import React, { useEffect, useRef } from 'react' import { formatUnits, zeroAddress, type Hex } from 'viem' diff --git a/packages/checkout/src/hooks/useCheckoutUI/useCryptoPayment.tsx b/packages/checkout/src/hooks/useCheckoutUI/useCryptoPayment.tsx index 7d633370a..987fe1246 100644 --- a/packages/checkout/src/hooks/useCheckoutUI/useCryptoPayment.tsx +++ b/packages/checkout/src/hooks/useCheckoutUI/useCryptoPayment.tsx @@ -1,7 +1,7 @@ -import { compareAddress, ContractVerificationStatus, formatDisplay, sendTransactions } from '@0xsequence/connect' import { useGetSwapQuote, useGetSwapRoutes, useGetTokenBalancesSummary, useIndexerClient } from '@0xsequence/hooks' import type { ContractInfo, TokenMetadata } from '@0xsequence/metadata' import { findSupportedNetwork } from '@0xsequence/network' +import { compareAddress, ContractVerificationStatus, formatDisplay, sendTransactions } from '@0xsequence/web-sdk-core' import { useState } from 'react' import { encodeFunctionData, formatUnits, zeroAddress, type Hex } from 'viem' import { useAccount, usePublicClient, useReadContract, useWalletClient } from 'wagmi' diff --git a/packages/checkout/src/hooks/useCheckoutUI/useOrderSummary.tsx b/packages/checkout/src/hooks/useCheckoutUI/useOrderSummary.tsx index c441d0620..083c8fbf4 100644 --- a/packages/checkout/src/hooks/useCheckoutUI/useOrderSummary.tsx +++ b/packages/checkout/src/hooks/useCheckoutUI/useOrderSummary.tsx @@ -1,8 +1,8 @@ -import { compareAddress, formatDisplay, NetworkBadge } from '@0xsequence/connect' import { networkImageUrl } from '@0xsequence/design-system' import { useGetCoinPrices } from '@0xsequence/hooks' import type { ContractInfo, TokenMetadata } from '@0xsequence/metadata' import { findSupportedNetwork } from '@0xsequence/network' +import { compareAddress, formatDisplay, NetworkBadge } from '@0xsequence/web-sdk-core' import type { ReactNode } from 'react' import { formatUnits, zeroAddress } from 'viem' diff --git a/packages/checkout/src/hooks/useERC1155SaleContractCheckout.ts b/packages/checkout/src/hooks/useERC1155SaleContractCheckout.ts index 3d1a5b207..601ef1331 100644 --- a/packages/checkout/src/hooks/useERC1155SaleContractCheckout.ts +++ b/packages/checkout/src/hooks/useERC1155SaleContractCheckout.ts @@ -1,7 +1,7 @@ import { useFindVersion } from '@0xsequence/hooks' import { type CheckoutOptionsSalesContractArgs } from '@0xsequence/marketplace' import { findSupportedNetwork } from '@0xsequence/network' -import { encodeFunctionData, keccak256, sha256, toHex, zeroAddress, type Abi, type Hex } from 'viem' +import { encodeFunctionData, sha256, toHex, zeroAddress, type Hex } from 'viem' import { useBytecode, useReadContract, useReadContracts } from 'wagmi' import { ERC_1155_SALE_CONTRACT } from '../constants/abi.js' diff --git a/packages/checkout/src/views/Checkout/PaymentMethodSelect/OrderSummary/index.tsx b/packages/checkout/src/views/Checkout/PaymentMethodSelect/OrderSummary/index.tsx index 521b45a13..a4d9e2194 100644 --- a/packages/checkout/src/views/Checkout/PaymentMethodSelect/OrderSummary/index.tsx +++ b/packages/checkout/src/views/Checkout/PaymentMethodSelect/OrderSummary/index.tsx @@ -1,7 +1,7 @@ -import { CollectibleTileImage, formatDisplay } from '@0xsequence/connect' import { Spinner, Text, TokenImage } from '@0xsequence/design-system' import { useGetCoinPrices, useGetContractInfo, useGetTokenMetadata } from '@0xsequence/hooks' import { findSupportedNetwork } from '@0xsequence/network' +import { CollectibleTileImage, formatDisplay } from '@0xsequence/web-sdk-core' import { formatUnits } from 'viem' import { useSelectPaymentModal } from '../../../../hooks/useSelectPaymentModal.js' diff --git a/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/index.tsx b/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/index.tsx index c68168ef1..51450d625 100644 --- a/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/index.tsx +++ b/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/index.tsx @@ -1,11 +1,3 @@ -import { - compareAddress, - ContractVerificationStatus, - formatDisplay, - sendTransactions, - TRANSACTION_CONFIRMATIONS_DEFAULT, - useAnalyticsContext -} from '@0xsequence/connect' import { AddIcon, Button, ChevronDownIcon, Spinner, Text, TokenImage, WarningIcon } from '@0xsequence/design-system' import { useClearCachedBalances, @@ -17,6 +9,14 @@ import { } from '@0xsequence/hooks' import { TransactionOnRampProvider } from '@0xsequence/marketplace' import { findSupportedNetwork } from '@0xsequence/network' +import { + compareAddress, + ContractVerificationStatus, + formatDisplay, + sendTransactions, + TRANSACTION_CONFIRMATIONS_DEFAULT, + useAnalyticsContext +} from '@0xsequence/web-sdk-core' import { useState } from 'react' import { encodeFunctionData, formatUnits, zeroAddress, type Hex } from 'viem' import { useAccount, usePublicClient, useReadContract, useWalletClient } from 'wagmi' diff --git a/packages/checkout/src/views/Checkout/TokenSelection/index.tsx b/packages/checkout/src/views/Checkout/TokenSelection/index.tsx index f8dc2984f..e3ece56a7 100644 --- a/packages/checkout/src/views/Checkout/TokenSelection/index.tsx +++ b/packages/checkout/src/views/Checkout/TokenSelection/index.tsx @@ -1,7 +1,7 @@ -import { compareAddress, ContractVerificationStatus, formatDisplay } from '@0xsequence/connect' import { Card, Scroll, SearchInput, Spinner, Text, TokenImage } from '@0xsequence/design-system' import { useGetContractInfo, useGetSwapRoutes, useGetTokenBalancesSummary } from '@0xsequence/hooks' import { findSupportedNetwork } from '@0xsequence/network' +import { compareAddress, ContractVerificationStatus, formatDisplay } from '@0xsequence/web-sdk-core' import Fuse from 'fuse.js' import { useState } from 'react' import { formatUnits } from 'viem' diff --git a/packages/checkout/src/views/CheckoutSelection/component/OrderSummaryItem.tsx b/packages/checkout/src/views/CheckoutSelection/component/OrderSummaryItem.tsx index a98b71d1c..95261c25f 100644 --- a/packages/checkout/src/views/CheckoutSelection/component/OrderSummaryItem.tsx +++ b/packages/checkout/src/views/CheckoutSelection/component/OrderSummaryItem.tsx @@ -1,6 +1,6 @@ -import { formatDisplay } from '@0xsequence/connect' import { Card, Image, NetworkImage, Skeleton, Text, TokenImage } from '@0xsequence/design-system' import { useGetContractInfo, useGetTokenMetadata } from '@0xsequence/hooks' +import { formatDisplay } from '@0xsequence/web-sdk-core' import { formatUnits } from 'viem' interface OrderSummaryItem { diff --git a/packages/checkout/src/views/CheckoutSelection/index.tsx b/packages/checkout/src/views/CheckoutSelection/index.tsx index 8300e8dbb..c37077f97 100644 --- a/packages/checkout/src/views/CheckoutSelection/index.tsx +++ b/packages/checkout/src/views/CheckoutSelection/index.tsx @@ -1,4 +1,3 @@ -import { compareAddress, ContractVerificationStatus, formatDisplay, getNativeTokenInfoByChainId } from '@0xsequence/connect' import { Button, ChevronRightIcon, @@ -11,6 +10,8 @@ import { Tooltip } from '@0xsequence/design-system' import { useGetContractInfo, useGetTokenBalancesSummary } from '@0xsequence/hooks' +import { ContractVerificationStatus } from '@0xsequence/indexer' +import { compareAddress, formatDisplay, getNativeTokenInfoByChainId } from '@0xsequence/web-sdk-core' import { useEffect } from 'react' import { formatUnits, zeroAddress } from 'viem' import { useAccount, useConfig } from 'wagmi' diff --git a/packages/checkout/src/views/PendingCreditCardTransaction.tsx b/packages/checkout/src/views/PendingCreditCardTransaction.tsx index a295626b9..696fd7926 100644 --- a/packages/checkout/src/views/PendingCreditCardTransaction.tsx +++ b/packages/checkout/src/views/PendingCreditCardTransaction.tsx @@ -1,7 +1,8 @@ -import { useAnalyticsContext, useProjectAccessKey } from '@0xsequence/connect' +import { useProjectAccessKey } from '@0xsequence/connect' import { Spinner, Text } from '@0xsequence/design-system' import { useConfig, useGetContractInfo, useGetTokenMetadata } from '@0xsequence/hooks' import { findSupportedNetwork } from '@0xsequence/network' +import { useAnalyticsContext } from '@0xsequence/web-sdk-core' import pako from 'pako' import { useEffect, useRef } from 'react' import { formatUnits } from 'viem' diff --git a/packages/checkout/src/views/Swap/index.tsx b/packages/checkout/src/views/Swap/index.tsx index 6c1e2811f..ec3fc8fba 100644 --- a/packages/checkout/src/views/Swap/index.tsx +++ b/packages/checkout/src/views/Swap/index.tsx @@ -1,4 +1,3 @@ -import { compareAddress, CryptoOption, formatDisplay, sendTransactions } from '@0xsequence/connect' import { Button, Spinner, Text } from '@0xsequence/design-system' import { useGetContractInfo, @@ -8,6 +7,7 @@ import { useIndexerClient } from '@0xsequence/hooks' import { findSupportedNetwork } from '@0xsequence/network' +import { compareAddress, CryptoOption, formatDisplay, sendTransactions } from '@0xsequence/web-sdk-core' import { useEffect, useMemo, useState } from 'react' import { formatUnits, zeroAddress, type Hex } from 'viem' import { useAccount, usePublicClient, useWalletClient } from 'wagmi' diff --git a/packages/checkout/src/views/TransactionStatus/index.tsx b/packages/checkout/src/views/TransactionStatus/index.tsx index 14a18ebd6..7458b9b37 100644 --- a/packages/checkout/src/views/TransactionStatus/index.tsx +++ b/packages/checkout/src/views/TransactionStatus/index.tsx @@ -1,9 +1,3 @@ -import { - CollectibleTileImage, - formatDisplay, - TRANSACTION_CONFIRMATIONS_DEFAULT, - waitForTransactionReceipt -} from '@0xsequence/connect' import { ArrowDownIcon, Button, @@ -19,6 +13,12 @@ import { import { useGetContractInfo, useGetTokenMetadata, useIndexerClient } from '@0xsequence/hooks' import { TransactionStatus as TransactionStatusSequence } from '@0xsequence/indexer' import { findSupportedNetwork } from '@0xsequence/network' +import { + CollectibleTileImage, + formatDisplay, + TRANSACTION_CONFIRMATIONS_DEFAULT, + waitForTransactionReceipt +} from '@0xsequence/web-sdk-core' import { formatDistanceToNow } from 'date-fns' import { useEffect, useState } from 'react' import { formatUnits, type Hex, type PublicClient } from 'viem' diff --git a/packages/connect/package.json b/packages/connect/package.json index 31fc22434..8e358b159 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -60,6 +60,7 @@ "peerDependencies": { "0xsequence": ">= 2.3.23", "@0xsequence/hooks": "workspace:*", + "@0xsequence/web-sdk-core": "workspace:*", "@databeat/tracker": "^0.9.3", "@react-oauth/google": "^0.11.1", "@tanstack/react-query": ">= 5", diff --git a/packages/connect/src/components/Connect/Connect.tsx b/packages/connect/src/components/Connect/Connect.tsx index 64f021d60..f472478dd 100644 --- a/packages/connect/src/components/Connect/Connect.tsx +++ b/packages/connect/src/components/Connect/Connect.tsx @@ -3,6 +3,8 @@ import { ArrowRightIcon, Divider, IconButton, Image, ModalPrimitive, Spinner, Text, TextInput } from '@0xsequence/design-system' import { useGetWaasStatus } from '@0xsequence/hooks' import { SequenceWaaS } from '@0xsequence/waas' +import type { ExtendedConnector, LogoProps } from '@0xsequence/web-sdk-core' +import { isEmailValid, useAnalyticsContext } from '@0xsequence/web-sdk-core' import { genUserId } from '@databeat/tracker' import { clsx } from 'clsx' import { useEffect, useState, type ChangeEventHandler, type ReactNode } from 'react' @@ -12,15 +14,13 @@ import { useConnect, useConnections, useSignMessage } from 'wagmi' import { EVENT_SOURCE } from '../../constants/analytics.js' import { LocalStorageKey } from '../../constants/localStorage.js' import { CHAIN_ID_FOR_SIGNATURE } from '../../constants/walletLinking.js' -import { useAnalyticsContext } from '../../contexts/Analytics.js' import { useStorage } from '../../hooks/useStorage.js' import { useEmailAuth } from '../../hooks/useWaasEmailAuth.js' import type { FormattedEmailConflictInfo } from '../../hooks/useWaasEmailConflict.js' import { useWaasLinkWallet } from '../../hooks/useWaasLinkWallet.js' import { useWallets } from '../../hooks/useWallets.js' import { useWalletSettings } from '../../hooks/useWalletSettings.js' -import type { ConnectConfig, ExtendedConnector, LogoProps } from '../../types.js' -import { isEmailValid } from '../../utils/helpers.js' +import type { ConnectConfig } from '../../types.js' import { GuestWaasConnectButton, XWaasConnectButton } from '../ConnectButton/ConnectButton.js' import { AppleWaasConnectButton, @@ -92,8 +92,9 @@ export const Connect = (props: ConnectProps) => { try { analytics?.track({ - event: 'UNLINK_WALLET', + event: 'REQUEST', props: { + type: 'UNLINK_WALLET', parentWalletAddress: parentWallet ? getUserIdForEvent(parentWallet) : '', linkedWalletAddress: getUserIdForEvent(address), linkedWalletType: linkedWallets?.find(lw => lw.linkedWalletAddress === address)?.walletType || '', @@ -150,8 +151,9 @@ export const Connect = (props: ConnectProps) => { try { analytics?.track({ - event: 'LINK_WALLET', + event: 'REQUEST', props: { + type: 'LINK_WALLET', parentWalletAddress: getUserIdForEvent(waasWalletAddress), linkedWalletAddress: getUserIdForEvent(childWalletAddress), linkedWalletType: connections.find(c => c.accounts[0] === lastConnectedWallet)?.connector?.name || '', diff --git a/packages/connect/src/components/Connect/ExtendedWalletList.tsx b/packages/connect/src/components/Connect/ExtendedWalletList.tsx index c5011c289..dc5b2cb10 100644 --- a/packages/connect/src/components/Connect/ExtendedWalletList.tsx +++ b/packages/connect/src/components/Connect/ExtendedWalletList.tsx @@ -9,10 +9,10 @@ import { Text, useTheme } from '@0xsequence/design-system' +import type { ExtendedConnector } from '@0xsequence/web-sdk-core' import Fuse from 'fuse.js' import { useState } from 'react' -import type { ExtendedConnector } from '../../types.js' import { getLogo } from '../ConnectButton/index.js' interface ExtendedWalletListProps { diff --git a/packages/connect/src/components/ConnectButton/ConnectButton.tsx b/packages/connect/src/components/ConnectButton/ConnectButton.tsx index fb1a15f28..266a38815 100644 --- a/packages/connect/src/components/ConnectButton/ConnectButton.tsx +++ b/packages/connect/src/components/ConnectButton/ConnectButton.tsx @@ -1,4 +1,5 @@ import { Card, ContextMenuIcon, Text, Tooltip, useTheme } from '@0xsequence/design-system' +import type { ExtendedConnector, WalletProperties } from '@0xsequence/web-sdk-core' import { GoogleLogin } from '@react-oauth/google' import { useEffect, useState } from 'react' import { appleAuthHelpers } from 'react-apple-signin-auth' @@ -6,7 +7,6 @@ import { appleAuthHelpers } from 'react-apple-signin-auth' import { getXIdToken } from '../../connectors/X/XAuth.js' import { LocalStorageKey } from '../../constants/localStorage.js' import { useStorage, useStorageItem } from '../../hooks/useStorage.js' -import type { ExtendedConnector, WalletProperties } from '../../types.js' const BUTTON_HEIGHT = '52px' const BUTTON_HEIGHT_DESCRIPTIVE = '44px' diff --git a/packages/connect/src/components/EpicAuthProvider/EpicAuthProvider.tsx b/packages/connect/src/components/EpicAuthProvider/EpicAuthProvider.tsx index d0c66353e..bed02a283 100644 --- a/packages/connect/src/components/EpicAuthProvider/EpicAuthProvider.tsx +++ b/packages/connect/src/components/EpicAuthProvider/EpicAuthProvider.tsx @@ -1,11 +1,11 @@ import { Modal, ModalPrimitive, Spinner } from '@0xsequence/design-system' +import type { ExtendedConnector } from '@0xsequence/web-sdk-core' import { useEffect } from 'react' import { useAccount, useConnect } from 'wagmi' import { EpicLogo } from '../../connectors/epic/EpicLogo.js' import { LocalStorageKey } from '../../constants/localStorage.js' import { useStorage } from '../../hooks/useStorage.js' -import type { ExtendedConnector } from '../../types.js' // EpicAuthProvider handles Epic Games OAuth login redirects. // On mount, it checks the URL for Epic login results, stores the Epic JWT in storage, and triggers a connection with the Epic connector if found. diff --git a/packages/connect/src/components/SequenceConnectPreviewProvider/SequenceConnectPreviewProvider.tsx b/packages/connect/src/components/SequenceConnectPreviewProvider/SequenceConnectPreviewProvider.tsx index c6918b85c..6176d3f59 100644 --- a/packages/connect/src/components/SequenceConnectPreviewProvider/SequenceConnectPreviewProvider.tsx +++ b/packages/connect/src/components/SequenceConnectPreviewProvider/SequenceConnectPreviewProvider.tsx @@ -3,26 +3,21 @@ import { sequence } from '0xsequence' import { ThemeProvider, type Theme } from '@0xsequence/design-system' import { SequenceClient } from '@0xsequence/provider' +import { AnalyticsContextProvider } from '@0xsequence/web-sdk-core' +import type { ExtendedConnector, ModalPosition } from '@0xsequence/web-sdk-core' import { GoogleOAuthProvider } from '@react-oauth/google' import { useEffect, useState, type ReactNode } from 'react' import { useAccount, useConfig } from 'wagmi' import { DEFAULT_SESSION_EXPIRATION } from '../../constants/ethAuth.js' import { LocalStorageKey } from '../../constants/localStorage.js' -import { AnalyticsContextProvider } from '../../contexts/Analytics.js' import { ConnectConfigContextProvider } from '../../contexts/ConnectConfig.js' import { ConnectModalContextProvider } from '../../contexts/ConnectModal.js' import { ThemeContextProvider } from '../../contexts/Theme.js' import { WalletConfigContextProvider } from '../../contexts/WalletConfig.js' import { useStorage } from '../../hooks/useStorage.js' import { useEmailConflict } from '../../hooks/useWaasEmailConflict.js' -import { - type ConnectConfig, - type DisplayedAsset, - type EthAuthSettings, - type ExtendedConnector, - type ModalPosition -} from '../../types.js' +import { type ConnectConfig, type DisplayedAsset, type EthAuthSettings } from '../../types.js' import { Connect } from '../Connect/Connect.js' export type SequenceConnectProviderProps = { diff --git a/packages/connect/src/components/SequenceConnectProvider/SequenceConnectProvider.tsx b/packages/connect/src/components/SequenceConnectProvider/SequenceConnectProvider.tsx index 91712aa35..a4eeb794f 100644 --- a/packages/connect/src/components/SequenceConnectProvider/SequenceConnectProvider.tsx +++ b/packages/connect/src/components/SequenceConnectProvider/SequenceConnectProvider.tsx @@ -5,6 +5,8 @@ import { Button, Card, Collapsible, Modal, ModalPrimitive, Text, type Theme } fr import { SequenceHooksProvider } from '@0xsequence/hooks' import { ChainId } from '@0xsequence/network' import { SequenceClient } from '@0xsequence/provider' +import type { ExtendedConnector, ModalPosition } from '@0xsequence/web-sdk-core' +import { AnalyticsContextProvider, getModalPositionCss, isJSON, NetworkBadge } from '@0xsequence/web-sdk-core' import { GoogleOAuthProvider } from '@react-oauth/google' import { AnimatePresence } from 'motion/react' import React, { useEffect, useState } from 'react' @@ -12,7 +14,6 @@ import { hexToString, type Hex } from 'viem' import { useAccount, useConfig, useConnections, type Connector } from 'wagmi' import { DEFAULT_SESSION_EXPIRATION, LocalStorageKey, WEB_SDK_VERSION } from '../../constants/index.js' -import { AnalyticsContextProvider } from '../../contexts/Analytics.js' import { ConnectConfigContextProvider } from '../../contexts/ConnectConfig.js' import { ConnectModalContextProvider } from '../../contexts/ConnectModal.js' import { SocialLinkContextProvider } from '../../contexts/SocialLink.js' @@ -21,19 +22,10 @@ import { WalletConfigContextProvider } from '../../contexts/WalletConfig.js' import { useStorage } from '../../hooks/useStorage.js' import { useWaasConfirmationHandler } from '../../hooks/useWaasConfirmationHandler.js' import { useEmailConflict } from '../../hooks/useWaasEmailConflict.js' -import { - type ConnectConfig, - type DisplayedAsset, - type EthAuthSettings, - type ExtendedConnector, - type ModalPosition -} from '../../types.js' -import { isJSON } from '../../utils/helpers.js' -import { getModalPositionCss } from '../../utils/styling.js' +import { type ConnectConfig, type DisplayedAsset, type EthAuthSettings } from '../../types.js' import { Connect } from '../Connect/Connect.js' import { EpicAuthProvider } from '../EpicAuthProvider/index.js' import { JsonTreeViewer } from '../JsonTreeViewer.js' -import { NetworkBadge } from '../NetworkBadge/index.js' import { PageHeading } from '../PageHeading/index.js' import { PoweredBySequence } from '../SequenceLogo/index.js' import { ShadowRoot } from '../ShadowRoot/index.js' diff --git a/packages/connect/src/components/TxnDetails/TxnDetails.tsx b/packages/connect/src/components/TxnDetails/TxnDetails.tsx index d48591eb8..dd3058d27 100644 --- a/packages/connect/src/components/TxnDetails/TxnDetails.tsx +++ b/packages/connect/src/components/TxnDetails/TxnDetails.tsx @@ -2,14 +2,18 @@ import { commons } from '@0xsequence/core' import { Card, Collapsible, GradientAvatar, Skeleton, Text, TokenImage } from '@0xsequence/design-system' import { useAPIClient, useGetSingleTokenBalance, useGetTokenMetadata } from '@0xsequence/hooks' import { ContractType } from '@0xsequence/indexer' +import { + capitalize, + CollectibleTileImage, + compareAddress, + getNativeTokenInfoByChainId, + truncateAtMiddle +} from '@0xsequence/web-sdk-core' import { useEffect, useState } from 'react' import { formatUnits, zeroAddress } from 'viem' import { useConfig } from 'wagmi' -import { capitalize, compareAddress, truncateAtMiddle } from '../../utils/helpers.js' -import { getNativeTokenInfoByChainId } from '../../utils/tokens.js' import { decodeTransactions, DecodingType, type AwardItemProps, type TransferProps } from '../../utils/txnDecoding.js' -import { CollectibleTileImage } from '../CollectibleTileImage/index.js' interface TxnDetailsProps { address: string diff --git a/packages/connect/src/config/createConfig.ts b/packages/connect/src/config/createConfig.ts index 980c83fd4..d5dd2ade8 100644 --- a/packages/connect/src/config/createConfig.ts +++ b/packages/connect/src/config/createConfig.ts @@ -1,6 +1,7 @@ +import type { WalletType } from '@0xsequence/web-sdk-core' import { createConfig as createWagmiConfig, type Config, type CreateConfigParameters } from 'wagmi' -import type { ConnectConfig, WalletType } from '../types.js' +import type { ConnectConfig } from '../types.js' import { getDefaultChains } from './defaultChains.js' import { getDefaultConnectors, type DefaultConnectorOptions } from './defaultConnectors.js' diff --git a/packages/connect/src/config/defaultChains.ts b/packages/connect/src/config/defaultChains.ts index 1a55167e1..4fc078d0d 100644 --- a/packages/connect/src/config/defaultChains.ts +++ b/packages/connect/src/config/defaultChains.ts @@ -1,7 +1,6 @@ +import { chains } from '@0xsequence/web-sdk-core' import type { Chain } from 'viem' -import { chains } from '../chains/index.js' - // Sequence supported Chain configs // you may filter list of chains by passing chainIdsFilter export const getDefaultChains = (chainIdsFilter?: number[]): [Chain, ...Chain[]] => { diff --git a/packages/connect/src/config/defaultConnectors.ts b/packages/connect/src/config/defaultConnectors.ts index 00068bcbe..0d2cfd839 100644 --- a/packages/connect/src/config/defaultConnectors.ts +++ b/packages/connect/src/config/defaultConnectors.ts @@ -1,3 +1,4 @@ +import type { Wallet, WalletType } from '@0xsequence/web-sdk-core' import type { CreateConnectorFn } from 'wagmi' import { apple } from '../connectors/apple/apple.js' @@ -16,7 +17,6 @@ import { sequence } from '../connectors/sequence/sequence.js' import { twitch } from '../connectors/twitch/twitch.js' import { walletConnect } from '../connectors/walletConnect/walletConnect.js' import { XWaas } from '../connectors/X/XWaas.js' -import type { Wallet, WalletType } from '../types.js' import { getConnectWallets } from '../utils/getConnectWallets.js' export interface CommonConnectorOptions { diff --git a/packages/connect/src/connectors/X/XLogo.tsx b/packages/connect/src/connectors/X/XLogo.tsx index 086eb8b4c..0ddc01df3 100644 --- a/packages/connect/src/connectors/X/XLogo.tsx +++ b/packages/connect/src/connectors/X/XLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - interface GetXLogo { isDarkMode: boolean } diff --git a/packages/connect/src/connectors/X/XWaas.ts b/packages/connect/src/connectors/X/XWaas.ts index ac13707e9..91369f0c2 100644 --- a/packages/connect/src/connectors/X/XWaas.ts +++ b/packages/connect/src/connectors/X/XWaas.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWaasWallet, type BaseSequenceWaasConnectorOptions } from '../wagmiConnectors/index.js' import { getXLogo } from './XLogo.js' diff --git a/packages/connect/src/connectors/apple/AppleLogo.tsx b/packages/connect/src/connectors/apple/AppleLogo.tsx index 337d3f813..e45bb0c6a 100644 --- a/packages/connect/src/connectors/apple/AppleLogo.tsx +++ b/packages/connect/src/connectors/apple/AppleLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import React from 'react' -import type { LogoProps } from '../../types.js' - interface GetAppleLogo { isDarkMode: boolean } diff --git a/packages/connect/src/connectors/apple/apple.ts b/packages/connect/src/connectors/apple/apple.ts index 88a6629b9..b1c37a35c 100644 --- a/packages/connect/src/connectors/apple/apple.ts +++ b/packages/connect/src/connectors/apple/apple.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWallet, type BaseSequenceConnectorOptions } from '../wagmiConnectors/index.js' import { getAppleLogo, getAppleMonochromeLogo } from './AppleLogo.js' diff --git a/packages/connect/src/connectors/apple/appleWaas.ts b/packages/connect/src/connectors/apple/appleWaas.ts index d2a8af1a3..987293b86 100644 --- a/packages/connect/src/connectors/apple/appleWaas.ts +++ b/packages/connect/src/connectors/apple/appleWaas.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWaasWallet, type BaseSequenceWaasConnectorOptions } from '../wagmiConnectors/sequenceWaasConnector.js' import { getAppleLogo, getAppleMonochromeLogo } from './AppleLogo.js' diff --git a/packages/connect/src/connectors/coinbaseWallet/CoinbaseWalletLogo.tsx b/packages/connect/src/connectors/coinbaseWallet/CoinbaseWalletLogo.tsx index 263a32714..c78e5109e 100644 --- a/packages/connect/src/connectors/coinbaseWallet/CoinbaseWalletLogo.tsx +++ b/packages/connect/src/connectors/coinbaseWallet/CoinbaseWalletLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - export const CoinbaseWalletLogo: FunctionComponent = props => { return ( diff --git a/packages/connect/src/connectors/coinbaseWallet/coinbaseWallet.ts b/packages/connect/src/connectors/coinbaseWallet/coinbaseWallet.ts index 95a2fbf15..3d899b2f0 100644 --- a/packages/connect/src/connectors/coinbaseWallet/coinbaseWallet.ts +++ b/packages/connect/src/connectors/coinbaseWallet/coinbaseWallet.ts @@ -1,8 +1,7 @@ +import type { Wallet } from '@0xsequence/web-sdk-core' import type { CreateConnectorFn } from 'wagmi' import { coinbaseWallet as coinbaseWalletBase, type CoinbaseWalletParameters } from 'wagmi/connectors' -import type { Wallet } from '../../types.js' - import { CoinbaseWalletLogo } from './CoinbaseWalletLogo.js' export const coinbaseWallet = (params: CoinbaseWalletParameters): Wallet => ({ diff --git a/packages/connect/src/connectors/discord/DiscordLogo.tsx b/packages/connect/src/connectors/discord/DiscordLogo.tsx index 0edb23ce0..72d6cb2b0 100644 --- a/packages/connect/src/connectors/discord/DiscordLogo.tsx +++ b/packages/connect/src/connectors/discord/DiscordLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - interface GetDiscordLogo { isDarkMode: boolean } diff --git a/packages/connect/src/connectors/discord/discord.ts b/packages/connect/src/connectors/discord/discord.ts index 4b8c40257..af05163b6 100644 --- a/packages/connect/src/connectors/discord/discord.ts +++ b/packages/connect/src/connectors/discord/discord.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWallet, type BaseSequenceConnectorOptions } from '../wagmiConnectors/index.js' import { getDiscordLogo } from './DiscordLogo.js' diff --git a/packages/connect/src/connectors/ecosystem/ecosystemWallet.ts b/packages/connect/src/connectors/ecosystem/ecosystemWallet.ts index afd02648f..5ca06feeb 100644 --- a/packages/connect/src/connectors/ecosystem/ecosystemWallet.ts +++ b/packages/connect/src/connectors/ecosystem/ecosystemWallet.ts @@ -1,9 +1,8 @@ +import { normalizeChainId } from '@0xsequence/web-sdk-core' import { ethers } from 'ethers' import { getAddress } from 'viem' import { createConnector, type Connector } from 'wagmi' -import { normalizeChainId } from '../../utils/helpers.js' - import { EcosystemWalletTransportProvider } from './provider.js' export interface EcosystemConnector extends Connector { diff --git a/packages/connect/src/connectors/ecosystem/index.ts b/packages/connect/src/connectors/ecosystem/index.ts index bc3f89f23..0378829fc 100644 --- a/packages/connect/src/connectors/ecosystem/index.ts +++ b/packages/connect/src/connectors/ecosystem/index.ts @@ -1,4 +1,4 @@ -import type { Wallet, WalletProperties } from '../../types.js' +import type { Wallet, WalletProperties } from '@0xsequence/web-sdk-core' import { ecosystemWallet as baseEcosystemWallet, type BaseEcosystemConnectorOptions } from './ecosystemWallet.js' diff --git a/packages/connect/src/connectors/ecosystem/provider.ts b/packages/connect/src/connectors/ecosystem/provider.ts index 0872bd9ca..746263fd5 100644 --- a/packages/connect/src/connectors/ecosystem/provider.ts +++ b/packages/connect/src/connectors/ecosystem/provider.ts @@ -1,9 +1,8 @@ import { allNetworks, type EIP1193Provider } from '@0xsequence/network' +import { normalizeChainId } from '@0xsequence/web-sdk-core' import { ethers } from 'ethers' import { getAddress, TransactionRejectedRpcError } from 'viem' -import { normalizeChainId } from '../../utils/helpers.js' - import { ProviderTransport } from './providerTransport.js' export class EcosystemWalletTransportProvider extends ethers.AbstractProvider implements EIP1193Provider { diff --git a/packages/connect/src/connectors/email/EmailLogo.tsx b/packages/connect/src/connectors/email/EmailLogo.tsx index 74ae883ad..7a380d927 100644 --- a/packages/connect/src/connectors/email/EmailLogo.tsx +++ b/packages/connect/src/connectors/email/EmailLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - interface GetEmailLogo { isDarkMode: boolean } diff --git a/packages/connect/src/connectors/email/email.ts b/packages/connect/src/connectors/email/email.ts index 1d892071b..5ae628d4d 100644 --- a/packages/connect/src/connectors/email/email.ts +++ b/packages/connect/src/connectors/email/email.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWallet, type BaseSequenceConnectorOptions } from '../wagmiConnectors/index.js' import { getEmailLogo } from './EmailLogo.js' diff --git a/packages/connect/src/connectors/email/emailWaas.ts b/packages/connect/src/connectors/email/emailWaas.ts index 438402279..f9cebc2e8 100644 --- a/packages/connect/src/connectors/email/emailWaas.ts +++ b/packages/connect/src/connectors/email/emailWaas.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWaasWallet, type BaseSequenceWaasConnectorOptions } from '../wagmiConnectors/sequenceWaasConnector.js' import { getEmailLogo } from './EmailLogo.js' diff --git a/packages/connect/src/connectors/epic/EpicLogo.tsx b/packages/connect/src/connectors/epic/EpicLogo.tsx index ba93be912..9d32fe13b 100644 --- a/packages/connect/src/connectors/epic/EpicLogo.tsx +++ b/packages/connect/src/connectors/epic/EpicLogo.tsx @@ -1,8 +1,6 @@ import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - -export const EpicLogo: FunctionComponent = (props: LogoProps) => ( +export const EpicLogo: FunctionComponent = () => ( @@ -15,7 +13,7 @@ interface GetEpicMonochromeLogo { export const getMonochromeEpicLogo = ({ isDarkMode }: GetEpicMonochromeLogo) => { const fillColor = isDarkMode ? 'white' : 'black' - const EpicMonochromeLogo: FunctionComponent = (props: LogoProps) => { + const EpicMonochromeLogo: FunctionComponent = () => { return ( diff --git a/packages/connect/src/connectors/epic/epicWaas.ts b/packages/connect/src/connectors/epic/epicWaas.ts index f56ebf726..4f9cd4b76 100644 --- a/packages/connect/src/connectors/epic/epicWaas.ts +++ b/packages/connect/src/connectors/epic/epicWaas.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWaasWallet, type BaseSequenceWaasConnectorOptions } from '../wagmiConnectors/sequenceWaasConnector.js' import { getMonochromeEpicLogo } from './EpicLogo.js' diff --git a/packages/connect/src/connectors/facebook/FacebookLogo.tsx b/packages/connect/src/connectors/facebook/FacebookLogo.tsx index 89b8d1cad..8b6508dc6 100644 --- a/packages/connect/src/connectors/facebook/FacebookLogo.tsx +++ b/packages/connect/src/connectors/facebook/FacebookLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - export const FacebookLogo: FunctionComponent = props => { return ( diff --git a/packages/connect/src/connectors/facebook/facebook.ts b/packages/connect/src/connectors/facebook/facebook.ts index e2d03b06f..d4d725a61 100644 --- a/packages/connect/src/connectors/facebook/facebook.ts +++ b/packages/connect/src/connectors/facebook/facebook.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWallet, type BaseSequenceConnectorOptions } from '../wagmiConnectors/index.js' import { FacebookLogo, getFacebookMonochromeLogo } from './FacebookLogo.js' diff --git a/packages/connect/src/connectors/google/GoogleLogo.tsx b/packages/connect/src/connectors/google/GoogleLogo.tsx index 65038cbbd..411786226 100644 --- a/packages/connect/src/connectors/google/GoogleLogo.tsx +++ b/packages/connect/src/connectors/google/GoogleLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - export const GoogleLogo: FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connect/src/connectors/google/google.ts b/packages/connect/src/connectors/google/google.ts index 3934ef6fb..7006acf48 100644 --- a/packages/connect/src/connectors/google/google.ts +++ b/packages/connect/src/connectors/google/google.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWallet, type BaseSequenceConnectorOptions } from '../wagmiConnectors/index.js' import { getMonochromeGoogleLogo, GoogleLogo } from './GoogleLogo.js' diff --git a/packages/connect/src/connectors/google/googleWaas.ts b/packages/connect/src/connectors/google/googleWaas.ts index 36f5f71cd..333087c59 100644 --- a/packages/connect/src/connectors/google/googleWaas.ts +++ b/packages/connect/src/connectors/google/googleWaas.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWaasWallet, type BaseSequenceWaasConnectorOptions } from '../wagmiConnectors/sequenceWaasConnector.js' import { getMonochromeGoogleLogo, GoogleLogo } from './GoogleLogo.js' diff --git a/packages/connect/src/connectors/guest/GuestLogo.tsx b/packages/connect/src/connectors/guest/GuestLogo.tsx index 7a7b0fd10..bd25f534a 100644 --- a/packages/connect/src/connectors/guest/GuestLogo.tsx +++ b/packages/connect/src/connectors/guest/GuestLogo.tsx @@ -1,8 +1,7 @@ import { Text } from '@0xsequence/design-system' +import type { LogoProps } from '@0xsequence/web-sdk-core' import React from 'react' -import type { LogoProps } from '../../types.js' - interface GetGuestLogo { isDarkMode: boolean isTextDisplayed: boolean diff --git a/packages/connect/src/connectors/guest/guestWaas.ts b/packages/connect/src/connectors/guest/guestWaas.ts index 132f8c33f..5673a4760 100644 --- a/packages/connect/src/connectors/guest/guestWaas.ts +++ b/packages/connect/src/connectors/guest/guestWaas.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWaasWallet, type BaseSequenceWaasConnectorOptions } from '../wagmiConnectors/sequenceWaasConnector.js' import { getGuestLogo } from './GuestLogo.js' diff --git a/packages/connect/src/connectors/metaMask/MetaMaskLogo.tsx b/packages/connect/src/connectors/metaMask/MetaMaskLogo.tsx index 144684cf6..6c49f77fe 100644 --- a/packages/connect/src/connectors/metaMask/MetaMaskLogo.tsx +++ b/packages/connect/src/connectors/metaMask/MetaMaskLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - export const MetaMaskLogo: FunctionComponent = props => ( ({ diff --git a/packages/connect/src/connectors/mock/mock.ts b/packages/connect/src/connectors/mock/mock.ts index 1f591eb9c..16ca175fb 100644 --- a/packages/connect/src/connectors/mock/mock.ts +++ b/packages/connect/src/connectors/mock/mock.ts @@ -1,6 +1,6 @@ +import type { Wallet } from '@0xsequence/web-sdk-core' import { mock as mockBase, type MockParameters } from 'wagmi/connectors' -import type { Wallet } from '../../types.js' import { SequenceLogo } from '../sequence/SequenceLogo.js' export const mock = (options: MockParameters): Wallet => ({ diff --git a/packages/connect/src/connectors/sequence/SequenceLogo.tsx b/packages/connect/src/connectors/sequence/SequenceLogo.tsx index a74be7c12..cfde4931b 100644 --- a/packages/connect/src/connectors/sequence/SequenceLogo.tsx +++ b/packages/connect/src/connectors/sequence/SequenceLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - export const SequenceLogo: FunctionComponent = props => { return ( diff --git a/packages/connect/src/connectors/sequence/sequence.ts b/packages/connect/src/connectors/sequence/sequence.ts index 3d7c72981..52b845f53 100644 --- a/packages/connect/src/connectors/sequence/sequence.ts +++ b/packages/connect/src/connectors/sequence/sequence.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWallet, type BaseSequenceConnectorOptions } from '../wagmiConnectors/index.js' import { SequenceLogo } from './SequenceLogo.js' diff --git a/packages/connect/src/connectors/twitch/TwitchLogo.tsx b/packages/connect/src/connectors/twitch/TwitchLogo.tsx index 3a4cf5a1d..69f22ee84 100644 --- a/packages/connect/src/connectors/twitch/TwitchLogo.tsx +++ b/packages/connect/src/connectors/twitch/TwitchLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import type { FunctionComponent } from 'react' -import type { LogoProps } from '../../types.js' - interface GetTwitchLogo { isDarkMode?: boolean } diff --git a/packages/connect/src/connectors/twitch/twitch.ts b/packages/connect/src/connectors/twitch/twitch.ts index 17c471286..07142202e 100644 --- a/packages/connect/src/connectors/twitch/twitch.ts +++ b/packages/connect/src/connectors/twitch/twitch.ts @@ -1,4 +1,5 @@ -import type { Wallet } from '../../types.js' +import type { Wallet } from '@0xsequence/web-sdk-core' + import { sequenceWallet, type BaseSequenceConnectorOptions } from '../wagmiConnectors/index.js' import { getTwitchLogo } from './TwitchLogo.js' diff --git a/packages/connect/src/connectors/wagmiConnectors/sequenceConnector.ts b/packages/connect/src/connectors/wagmiConnectors/sequenceConnector.ts index a131a2ae7..8195fe3d7 100644 --- a/packages/connect/src/connectors/wagmiConnectors/sequenceConnector.ts +++ b/packages/connect/src/connectors/wagmiConnectors/sequenceConnector.ts @@ -2,12 +2,12 @@ import { sequence } from '0xsequence' import type { ETHAuthProof } from '@0xsequence/auth' import type { ChainIdLike } from '@0xsequence/network' import type { ConnectOptions, SequenceProvider } from '@0xsequence/provider' +import { normalizeChainId } from '@0xsequence/web-sdk-core' import { getAddress, UserRejectedRequestError } from 'viem' import { createConnector } from 'wagmi' import { LocalStorageKey } from '../../constants/localStorage.js' import type { EthAuthSettings } from '../../types.js' -import { normalizeChainId } from '../../utils/helpers.js' export interface BaseSequenceConnectorOptions { walletAppURL?: string diff --git a/packages/connect/src/connectors/wagmiConnectors/sequenceWaasConnector.ts b/packages/connect/src/connectors/wagmiConnectors/sequenceWaasConnector.ts index be91d4e93..a859d9341 100644 --- a/packages/connect/src/connectors/wagmiConnectors/sequenceWaasConnector.ts +++ b/packages/connect/src/connectors/wagmiConnectors/sequenceWaasConnector.ts @@ -8,6 +8,7 @@ import { type SignInResponse, type Transaction } from '@0xsequence/waas' +import { normalizeChainId } from '@0xsequence/web-sdk-core' import { ethers } from 'ethers' import { v4 as uuidv4 } from 'uuid' import { @@ -22,7 +23,6 @@ import { import { createConnector } from 'wagmi' import { LocalStorageKey } from '../../constants/localStorage.js' -import { normalizeChainId } from '../../utils/helpers.js' import { getPkcePair, getXOauthUrl } from '../X/XAuth.js' export interface SequenceWaasConnectConfig { diff --git a/packages/connect/src/connectors/walletConnect/WalletConnectLogo.tsx b/packages/connect/src/connectors/walletConnect/WalletConnectLogo.tsx index d335684cb..6c9bf906e 100644 --- a/packages/connect/src/connectors/walletConnect/WalletConnectLogo.tsx +++ b/packages/connect/src/connectors/walletConnect/WalletConnectLogo.tsx @@ -1,7 +1,6 @@ +import type { LogoProps } from '@0xsequence/web-sdk-core' import React from 'react' -import type { LogoProps } from '../../types.js' - export const WalletConnectLogo: React.FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connect/src/connectors/walletConnect/walletConnect.ts b/packages/connect/src/connectors/walletConnect/walletConnect.ts index b5d089763..3d180980b 100644 --- a/packages/connect/src/connectors/walletConnect/walletConnect.ts +++ b/packages/connect/src/connectors/walletConnect/walletConnect.ts @@ -1,8 +1,7 @@ +import type { Wallet } from '@0xsequence/web-sdk-core' import { createConnector } from 'wagmi' import { walletConnect as walletConnectbase, type WalletConnectParameters } from 'wagmi/connectors' -import type { Wallet } from '../../types.js' - import { WalletConnectLogo } from './WalletConnectLogo.js' interface WalletConnectOptions extends WalletConnectParameters { diff --git a/packages/connect/src/constants/index.ts b/packages/connect/src/constants/index.ts index 3f2fdbacb..17e71a820 100644 --- a/packages/connect/src/constants/index.ts +++ b/packages/connect/src/constants/index.ts @@ -1,6 +1,4 @@ export * from './ethAuth.js' export * from './localStorage.js' export * from './queryKeys.js' -export * from './swaps.js' -export * from './transactions.js' export * from './version.js' diff --git a/packages/connect/src/constants/swaps.ts b/packages/connect/src/constants/swaps.ts deleted file mode 100644 index 1758e9313..000000000 --- a/packages/connect/src/constants/swaps.ts +++ /dev/null @@ -1,2 +0,0 @@ -// Address displayed for native tokens by the swap API -export const NATIVE_TOKEN_ADDRESS_0X = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' diff --git a/packages/connect/src/contexts/ConnectConfig.ts b/packages/connect/src/contexts/ConnectConfig.ts index 069ec0242..5a880698b 100644 --- a/packages/connect/src/contexts/ConnectConfig.ts +++ b/packages/connect/src/contexts/ConnectConfig.ts @@ -1,8 +1,8 @@ 'use client' -import type { ConnectConfig } from '../types.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' -import { createGenericContext } from './genericContext.js' +import type { ConnectConfig } from '../types.js' const [useConnectConfigContext, ConnectConfigContextProvider] = createGenericContext() diff --git a/packages/connect/src/contexts/ConnectModal.ts b/packages/connect/src/contexts/ConnectModal.ts index 504f53906..7027d74cd 100644 --- a/packages/connect/src/contexts/ConnectModal.ts +++ b/packages/connect/src/contexts/ConnectModal.ts @@ -1,9 +1,8 @@ 'use client' +import { createGenericContext } from '@0xsequence/web-sdk-core' import type { Dispatch, SetStateAction } from 'react' -import { createGenericContext } from './genericContext.js' - type ConnectModalContext = { isConnectModalOpen: boolean setOpenConnectModal: Dispatch> diff --git a/packages/connect/src/contexts/SocialLink.ts b/packages/connect/src/contexts/SocialLink.ts index 0174c26ad..9937376e6 100644 --- a/packages/connect/src/contexts/SocialLink.ts +++ b/packages/connect/src/contexts/SocialLink.ts @@ -1,4 +1,4 @@ -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' type SocialLinkContext = { waasConfigKey: string diff --git a/packages/connect/src/contexts/Theme.ts b/packages/connect/src/contexts/Theme.ts index 6aca29551..770aea2a7 100644 --- a/packages/connect/src/contexts/Theme.ts +++ b/packages/connect/src/contexts/Theme.ts @@ -1,12 +1,9 @@ 'use client' import type { Theme } from '@0xsequence/design-system' +import { createGenericContext, type ModalPosition } from '@0xsequence/web-sdk-core' import type { Dispatch, SetStateAction } from 'react' -import type { ModalPosition } from '../index.js' - -import { createGenericContext } from './genericContext.js' - type ThemeContext = { setTheme: Dispatch> theme: Theme diff --git a/packages/connect/src/contexts/WalletConfig.ts b/packages/connect/src/contexts/WalletConfig.ts index 68d56a265..2d4fda037 100644 --- a/packages/connect/src/contexts/WalletConfig.ts +++ b/packages/connect/src/contexts/WalletConfig.ts @@ -1,8 +1,8 @@ 'use client' -import type { DisplayedAsset } from '../types.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' -import { createGenericContext } from './genericContext.js' +import type { DisplayedAsset } from '../types.js' type WalletConfigContext = { setDisplayedAssets: React.Dispatch> diff --git a/packages/connect/src/contexts/genericContext.ts b/packages/connect/src/contexts/genericContext.ts deleted file mode 100644 index 453a6e9af..000000000 --- a/packages/connect/src/contexts/genericContext.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { createContext, useContext } from 'react' - -// https://medium.com/@rivoltafilippo/typing-react-context-to-avoid-an-undefined-default-value-2c7c5a7d5947 - -export const createGenericContext = () => { - // Create a context with a generic parameter or undefined - const genericContext = createContext(undefined) - - // Check if the value provided to the context is defined or throw an error - const useGenericContext = () => { - const contextIsDefined = useContext(genericContext) - if (!contextIsDefined) { - throw new Error('useGenericContext must be used within a Provider') - } - return contextIsDefined - } - - return [useGenericContext, genericContext.Provider] as const -} diff --git a/packages/connect/src/hooks/useWaasEmailAuth.ts b/packages/connect/src/hooks/useWaasEmailAuth.ts index 4dc91a9bb..a23d299b9 100644 --- a/packages/connect/src/hooks/useWaasEmailAuth.ts +++ b/packages/connect/src/hooks/useWaasEmailAuth.ts @@ -1,9 +1,9 @@ import { SequenceWaaS, type SignInResponse } from '@0xsequence/waas' +import type { ExtendedConnector } from '@0xsequence/web-sdk-core' import { useState } from 'react' // import { EmailWaasOptions } from '../connectors/email/emailWaas' import { randomName } from '../connectors/wagmiConnectors/index.js' -import type { ExtendedConnector } from '../types.js' interface SuccessResultV1 { version: 1 diff --git a/packages/connect/src/hooks/useWallets.ts b/packages/connect/src/hooks/useWallets.ts index 2526ea24c..52c6cb873 100644 --- a/packages/connect/src/hooks/useWallets.ts +++ b/packages/connect/src/hooks/useWallets.ts @@ -2,11 +2,11 @@ import { SequenceAPIClient, type GetLinkedWalletsArgs, type LinkedWallet } from '@0xsequence/api' import { useAPIClient } from '@0xsequence/hooks' +import type { ExtendedConnector } from '@0xsequence/web-sdk-core' import { useCallback, useEffect, useRef, useState } from 'react' import { useAccount, useConnect, useConnections, useDisconnect, type Connector, type UseConnectionsReturnType } from 'wagmi' import { SEQUENCE_UNIVERSAL_CONNECTOR_NAME } from '../components/Connect/Connect.js' -import type { ExtendedConnector } from '../types.js' import { useWaasGetLinkedWalletsSignature } from './useWaasGetLinkedWalletsSignature.js' diff --git a/packages/connect/src/index.ts b/packages/connect/src/index.ts index dd7eec8ae..086804a06 100644 --- a/packages/connect/src/index.ts +++ b/packages/connect/src/index.ts @@ -5,19 +5,7 @@ export { SequenceConnectProvider } from './components/SequenceConnectProvider/in export { SequenceConnectPreviewProvider } from './components/SequenceConnectPreviewProvider/index.js' // Types -export type { - ConnectConfig, - DisplayedAsset, - EthAuthSettings, - ExtendedConnector, - LogoProps, - ModalPosition, - StorageItem, - Wallet, - WalletField, - WalletProperties, - WalletType -} from './types.js' +export type { ConnectConfig, DisplayedAsset, EthAuthSettings, StorageItem } from './types.js' // Config export { createConfig, type CreateConfigOptions } from './config/createConfig.js' @@ -33,36 +21,14 @@ export { getDefaultChains } from './config/defaultChains.js' export { getDefaultTransports } from './config/defaultTransports.js' // Constants -export { - DEFAULT_SESSION_EXPIRATION, - LocalStorageKey, - NATIVE_TOKEN_ADDRESS_0X, - QUERY_KEYS, - TRANSACTION_CONFIRMATIONS_DEFAULT, - WEB_SDK_VERSION -} from './constants/index.js' +export { DEFAULT_SESSION_EXPIRATION, LocalStorageKey, QUERY_KEYS, WEB_SDK_VERSION } from './constants/index.js' // Utils export { getConnectWallets } from './utils/getConnectWallets.js' -export { - capitalize, - compareAddress, - formatAddress, - formatDisplay, - isEmailValid, - truncateAtIndex, - truncateAtMiddle -} from './utils/helpers.js' -export { createNativeTokenBalance, getNativeTokenInfoByChainId } from './utils/tokens.js' -export { getModalPositionCss } from './utils/styling.js' -export { getNetwork, getNetworkBackgroundColor, getNetworkColor } from './utils/networks.js' -export { publicClientToProvider, walletClientToSigner } from './utils/adapters.js' export { signEthAuthProof, validateEthProof } from './utils/ethAuth.js' -export { sendTransactions, waitForTransactionReceipt } from './utils/transactions.js' // Contexts export { ConnectConfigContextProvider, useConnectConfigContext } from './contexts/ConnectConfig.js' -export { AnalyticsContextProvider, useAnalyticsContext } from './contexts/Analytics.js' export { ConnectModalContextProvider, useConnectModalContext } from './contexts/ConnectModal.js' export { ThemeContextProvider, useThemeContext } from './contexts/Theme.js' export { useWalletConfigContext, WalletConfigContextProvider } from './contexts/WalletConfig.js' @@ -112,11 +78,4 @@ export { useSocialLink } from './hooks/useSocialLink.js' export { useDirectEcosystemConnect } from './hooks/useDirectEcosystemConnect.js' // Components -export { NetworkBadge } from './components/NetworkBadge/index.js' -export { CollectibleTileImage } from './components/CollectibleTileImage/index.js' -export { CryptoOption } from './components/CryptoOption.js' -export { SelectedIndicator } from './components/SelectedIndicator.js' export { ShadowRoot } from './components/ShadowRoot/index.js' - -// Indexer -export { ContractVerificationStatus } from '@0xsequence/indexer' diff --git a/packages/connect/src/styles.ts b/packages/connect/src/styles.ts index 6a51e3e2b..33162fdff 100644 --- a/packages/connect/src/styles.ts +++ b/packages/connect/src/styles.ts @@ -334,15 +334,9 @@ export const styles = String.raw` .mt-10 { margin-top: calc(var(--spacing) * 10); } - .-mr-\[1px\] { - margin-right: calc(1px * -1); - } .mr-4 { margin-right: calc(var(--spacing) * 4); } - .-mb-\[1px\] { - margin-bottom: calc(1px * -1); - } .mb-1 { margin-bottom: calc(var(--spacing) * 1); } @@ -391,6 +385,9 @@ export const styles = String.raw` .inline-flex { display: inline-flex; } + .table { + display: table; + } .aspect-square { aspect-ratio: 1 / 1; } @@ -442,9 +439,6 @@ export const styles = String.raw` .h-\[2px\] { height: 2px; } - .h-\[17px\] { - height: 17px; - } .h-\[52px\] { height: 52px; } @@ -499,6 +493,9 @@ export const styles = String.raw` .min-h-full { min-height: 100%; } + .w-1 { + width: calc(var(--spacing) * 1); + } .w-1\/2 { width: calc(1/2 * 100%); } @@ -550,9 +547,6 @@ export const styles = String.raw` .w-\[1px\] { width: 1px; } - .w-\[17px\] { - width: 17px; - } .w-\[44px\] { width: 44px; } @@ -607,15 +601,28 @@ export const styles = String.raw` .min-w-full { min-width: 100%; } + .flex-shrink { + flex-shrink: 1; + } .shrink-0 { flex-shrink: 0; } + .flex-grow { + flex-grow: 1; + } .grow { flex-grow: 1; } + .border-collapse { + border-collapse: collapse; + } .origin-top { transform-origin: top; } + .-translate-x-1 { + --tw-translate-x: calc(var(--spacing) * -1); + translate: var(--tw-translate-x) var(--tw-translate-y); + } .-translate-x-1\/2 { --tw-translate-x: calc(calc(1/2 * 100%) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); @@ -624,6 +631,10 @@ export const styles = String.raw` --tw-translate-x: calc(var(--spacing) * 0); translate: var(--tw-translate-x) var(--tw-translate-y); } + .-translate-y-1 { + --tw-translate-y: calc(var(--spacing) * -1); + translate: var(--tw-translate-x) var(--tw-translate-y); + } .-translate-y-1\/2 { --tw-translate-y: calc(calc(1/2 * 100%) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); @@ -835,9 +846,6 @@ export const styles = String.raw` --tw-border-style: solid; border-style: solid; } - .border-background-primary { - border-color: var(--seq-color-background-primary); - } .border-border-error { border-color: var(--seq-color-border-error); } @@ -1003,6 +1011,9 @@ export const styles = String.raw` .pt-0 { padding-top: calc(var(--spacing) * 0); } + .pt-1 { + padding-top: calc(var(--spacing) * 1); + } .pt-1\.5 { padding-top: calc(var(--spacing) * 1.5); } @@ -1299,6 +1310,9 @@ export const styles = String.raw` .ring-border-normal { --tw-ring-color: var(--seq-color-border-normal); } + .ring-white { + --tw-ring-color: var(--color-white); + } .ring-white\/10 { --tw-ring-color: color-mix(in srgb, #fff 10%, transparent); @supports (color: color-mix(in lab, red, red)) { @@ -1337,6 +1351,10 @@ export const styles = String.raw` -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); } + .backdrop-filter { + -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); + backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); + } .transition { transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events; transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); diff --git a/packages/connect/src/types.ts b/packages/connect/src/types.ts index 342da85e4..5569fb980 100644 --- a/packages/connect/src/types.ts +++ b/packages/connect/src/types.ts @@ -1,41 +1,10 @@ import type { ETHAuthProof } from '@0xsequence/auth' import type { Theme } from '@0xsequence/design-system' import type { SequenceHooksEnv } from '@0xsequence/hooks' -import type { FunctionComponent } from 'react' -import type { Connector, CreateConnectorFn } from 'wagmi' +import type { ModalPosition } from '@0xsequence/web-sdk-core' import { LocalStorageKey } from './constants/localStorage.js' -export interface LogoProps { - className?: string - style?: React.CSSProperties -} - -export type WalletType = 'waas' | 'universal' - -export interface WalletProperties { - id: string - logoDark: FunctionComponent - logoLight: FunctionComponent - monochromeLogoDark?: FunctionComponent - monochromeLogoLight?: FunctionComponent - name: string - iconBackground?: string - hideConnectorId?: string | null - isSequenceBased?: boolean - type?: 'social' | 'wallet' -} - -export type Wallet = WalletProperties & { - createConnector: (projectAccessKey: string) => CreateConnectorFn -} - -export interface WalletField { - _wallet: WalletProperties -} - -export type ExtendedConnector = Connector & WalletField - export interface DisplayedAsset { contractAddress: string chainId: number @@ -52,17 +21,6 @@ export interface EthAuthSettings { nonce?: number } -export type ModalPosition = - | 'center' - | 'middle-right' - | 'middle-left' - | 'top-center' - | 'top-right' - | 'top-left' - | 'bottom-center' - | 'bottom-right' - | 'bottom-left' - export interface ConnectConfig { projectAccessKey: string waasConfigKey?: string diff --git a/packages/connect/src/utils/ethAuth.ts b/packages/connect/src/utils/ethAuth.ts index 0fb312d06..85c5fb4dd 100644 --- a/packages/connect/src/utils/ethAuth.ts +++ b/packages/connect/src/utils/ethAuth.ts @@ -1,14 +1,13 @@ import type { ETHAuthProof } from '@0xsequence/auth' import { ETHAuth, Proof } from '@0xsequence/ethauth' import { isValidTypedDataSignature } from '@0xsequence/provider' +import { publicClientToProvider, walletClientToSigner } from '@0xsequence/web-sdk-core' import type { Storage, UsePublicClientReturnType } from 'wagmi' import type { GetWalletClientData } from 'wagmi/query' import { DEFAULT_SESSION_EXPIRATION, LocalStorageKey } from '../constants/index.js' import type { StorageItem } from '../types.js' -import { publicClientToProvider, walletClientToSigner } from './adapters.js' - export const signEthAuthProof = async ( walletClient: GetWalletClientData, storage: Storage diff --git a/packages/connect/src/utils/getConnectWallets.ts b/packages/connect/src/utils/getConnectWallets.ts index 8efcbf79a..3e3df8fda 100644 --- a/packages/connect/src/utils/getConnectWallets.ts +++ b/packages/connect/src/utils/getConnectWallets.ts @@ -1,7 +1,6 @@ +import type { ExtendedConnector, Wallet } from '@0xsequence/web-sdk-core' import type { CreateConnectorFn } from 'wagmi' -import type { ExtendedConnector, Wallet } from '../types.js' - export const getConnectWallets = (projectAccessKey: string, wallets: Wallet[]): CreateConnectorFn[] => { const connectors: CreateConnectorFn[] = [] diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 795829b39..41ae84260 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -31,10 +31,10 @@ "typecheck": "tsc --noEmit" }, "peerDependencies": { - "@0xsequence/api": ">=2.3.23", - "@0xsequence/indexer": ">=2.3.23", - "@0xsequence/metadata": ">=2.3.23", - "@0xsequence/network": ">=2.3.23", + "@0xsequence/api": ">=2.3.11", + "@0xsequence/indexer": ">=2.3.7", + "@0xsequence/metadata": ">=2.3.7", + "@0xsequence/network": ">=2.3.7", "@tanstack/react-query": ">= 5", "react": ">= 17", "react-dom": ">= 17", diff --git a/packages/hooks/src/constants.ts b/packages/hooks/src/constants.ts index 375bcd5c4..56b4e9c95 100644 --- a/packages/hooks/src/constants.ts +++ b/packages/hooks/src/constants.ts @@ -25,9 +25,6 @@ export const time = { export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' -// Address displayed for native tokens by the swap API -export const NATIVE_TOKEN_ADDRESS_0X_SWAP = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' - export const ACCOUNT_ADDRESS = '0x345458cfD2F0c808455342CD0A6e07a09f893292' export const WAAS_STATUS_URL = 'https://waas.sequence.app/status' diff --git a/packages/immutable-connector/package.json b/packages/immutable-connector/package.json index f2df26540..2ffecd953 100644 --- a/packages/immutable-connector/package.json +++ b/packages/immutable-connector/package.json @@ -34,7 +34,8 @@ }, "peerDependencies": { "@0xsequence/connect": "workspace:*", - "0xsequence": ">= 2.3.23", + "@0xsequence/web-sdk-core": "workspace:*", + "0xsequence": ">= 2.3.7", "@imtbl/config": ">=2.1.2", "@imtbl/sdk": ">=2.1.2", "ethers": "^6.13.0", diff --git a/packages/immutable-connector/src/connectConnector/ImmutableLogo.tsx b/packages/immutable-connector/src/connectConnector/ImmutableLogo.tsx index c013e237f..89270ce42 100644 --- a/packages/immutable-connector/src/connectConnector/ImmutableLogo.tsx +++ b/packages/immutable-connector/src/connectConnector/ImmutableLogo.tsx @@ -1,4 +1,4 @@ -import type { LogoProps } from '@0xsequence/connect' +import type { LogoProps } from '@0xsequence/web-sdk-core' import React from 'react' export const ImmutableLogo: React.FunctionComponent = (props: LogoProps) => { diff --git a/packages/immutable-connector/src/connectConnector/immutable.ts b/packages/immutable-connector/src/connectConnector/immutable.ts index 6479e84f8..ea4446c35 100644 --- a/packages/immutable-connector/src/connectConnector/immutable.ts +++ b/packages/immutable-connector/src/connectConnector/immutable.ts @@ -1,4 +1,4 @@ -import type { Wallet } from '@0xsequence/connect' +import type { Wallet } from '@0xsequence/web-sdk-core' import { immutableConnector, type BaseImmutableConnectorOptions } from '../wagmiConnector/index.js' diff --git a/packages/wallet-widget/package.json b/packages/wallet-widget/package.json index a9c12b8c7..ca55479a9 100644 --- a/packages/wallet-widget/package.json +++ b/packages/wallet-widget/package.json @@ -42,6 +42,7 @@ "peerDependencies": { "@0xsequence/api": ">=2.3.23", "@0xsequence/checkout": "workspace:*", + "@0xsequence/web-sdk-core": "workspace:*", "@0xsequence/connect": "workspace:*", "@0xsequence/hooks": "workspace:*", "@0xsequence/indexer": ">=2.3.23", diff --git a/packages/wallet-widget/src/components/Filter/NetworkImageCustom.tsx b/packages/wallet-widget/src/components/Filter/NetworkImageCustom.tsx index 271192655..ae42896d8 100644 --- a/packages/wallet-widget/src/components/Filter/NetworkImageCustom.tsx +++ b/packages/wallet-widget/src/components/Filter/NetworkImageCustom.tsx @@ -1,5 +1,5 @@ -import { getNetwork } from '@0xsequence/connect' import { NetworkImage } from '@0xsequence/design-system' +import { getNetwork } from '@0xsequence/web-sdk-core' export const NetworkImageCustom = ({ chainId, diff --git a/packages/wallet-widget/src/components/ListCard/ListCardNetwork.tsx b/packages/wallet-widget/src/components/ListCard/ListCardNetwork.tsx index ea9456991..66bec3037 100644 --- a/packages/wallet-widget/src/components/ListCard/ListCardNetwork.tsx +++ b/packages/wallet-widget/src/components/ListCard/ListCardNetwork.tsx @@ -1,5 +1,5 @@ -import { getNetwork } from '@0xsequence/connect' import { Text } from '@0xsequence/design-system' +import { getNetwork } from '@0xsequence/web-sdk-core' import { NetworkImageCustom } from '../Filter/NetworkImageCustom.js' diff --git a/packages/wallet-widget/src/components/ListCard/ListCardWallet.tsx b/packages/wallet-widget/src/components/ListCard/ListCardWallet.tsx index 73ab1e781..3ce23311f 100644 --- a/packages/wallet-widget/src/components/ListCard/ListCardWallet.tsx +++ b/packages/wallet-widget/src/components/ListCard/ListCardWallet.tsx @@ -1,6 +1,6 @@ import type { ConnectedWallet } from '@0xsequence/connect' -import { truncateAtIndex } from '@0xsequence/connect' import { Text } from '@0xsequence/design-system' +import { truncateAtIndex } from '@0xsequence/web-sdk-core' import { useEffect, useState } from 'react' import { useConnections } from 'wagmi' diff --git a/packages/wallet-widget/src/components/NavigationHeader/content/TokenHeader.tsx b/packages/wallet-widget/src/components/NavigationHeader/content/TokenHeader.tsx index 384460fac..7db74ee12 100644 --- a/packages/wallet-widget/src/components/NavigationHeader/content/TokenHeader.tsx +++ b/packages/wallet-widget/src/components/NavigationHeader/content/TokenHeader.tsx @@ -1,6 +1,6 @@ -import { getNativeTokenInfoByChainId } from '@0xsequence/connect' import { compareAddress, Image, Skeleton, Text } from '@0xsequence/design-system' import { useGetSingleTokenBalance } from '@0xsequence/hooks' +import { getNativeTokenInfoByChainId } from '@0xsequence/web-sdk-core' import { zeroAddress } from 'viem' import { useConfig } from 'wagmi' diff --git a/packages/wallet-widget/src/components/NetworkBadge.tsx b/packages/wallet-widget/src/components/NetworkBadge.tsx index 5e2079823..9bca9788e 100644 --- a/packages/wallet-widget/src/components/NetworkBadge.tsx +++ b/packages/wallet-widget/src/components/NetworkBadge.tsx @@ -1,5 +1,5 @@ -import { getNetwork, getNetworkBackgroundColor, getNetworkColor } from '@0xsequence/connect' import { NetworkImage, Text } from '@0xsequence/design-system' +import { getNetwork, getNetworkBackgroundColor, getNetworkColor } from '@0xsequence/web-sdk-core' import React from 'react' interface NetworkBadgeProps { diff --git a/packages/wallet-widget/src/components/SearchLists/GeneralList.tsx b/packages/wallet-widget/src/components/SearchLists/GeneralList.tsx index d4f90a902..126fd4b11 100644 --- a/packages/wallet-widget/src/components/SearchLists/GeneralList.tsx +++ b/packages/wallet-widget/src/components/SearchLists/GeneralList.tsx @@ -1,7 +1,8 @@ -import { compareAddress, getNativeTokenInfoByChainId, useWallets } from '@0xsequence/connect' +import { useWallets } from '@0xsequence/connect' import { cn, Divider, SearchIcon, TabsContent, TabsHeader, TabsPrimitive, Text, TextInput } from '@0xsequence/design-system' import { useGetCoinPrices, useGetExchangeRate, useGetTransactionHistorySummary } from '@0xsequence/hooks' import type { ContractInfo, Transaction, TxnTransfer } from '@0xsequence/indexer' +import { compareAddress, getNativeTokenInfoByChainId } from '@0xsequence/web-sdk-core' import { ethers } from 'ethers' import Fuse from 'fuse.js' import { useObservable } from 'micro-observables' diff --git a/packages/wallet-widget/src/components/SearchLists/TokenList/CoinRow.tsx b/packages/wallet-widget/src/components/SearchLists/TokenList/CoinRow.tsx index 40749ed11..24ec49942 100644 --- a/packages/wallet-widget/src/components/SearchLists/TokenList/CoinRow.tsx +++ b/packages/wallet-widget/src/components/SearchLists/TokenList/CoinRow.tsx @@ -1,5 +1,5 @@ -import { formatAddress } from '@0xsequence/connect' import { GradientAvatar, Text } from '@0xsequence/design-system' +import { formatAddress } from '@0xsequence/web-sdk-core' import { getAddress } from 'viem' import { useChains } from 'wagmi' diff --git a/packages/wallet-widget/src/components/Select/WalletSelect.tsx b/packages/wallet-widget/src/components/Select/WalletSelect.tsx index 34929179c..2c12b1da5 100644 --- a/packages/wallet-widget/src/components/Select/WalletSelect.tsx +++ b/packages/wallet-widget/src/components/Select/WalletSelect.tsx @@ -1,5 +1,6 @@ -import { truncateAtIndex, useWallets } from '@0xsequence/connect' +import { useWallets } from '@0xsequence/connect' import { ChevronUpDownIcon, cn, GradientAvatar, Text } from '@0xsequence/design-system' +import { truncateAtIndex } from '@0xsequence/web-sdk-core' import { useState } from 'react' import { ListCardWallet } from '../ListCard/ListCardWallet.js' diff --git a/packages/wallet-widget/src/components/SendItemInfo.tsx b/packages/wallet-widget/src/components/SendItemInfo.tsx index 88ad44532..47a547a38 100644 --- a/packages/wallet-widget/src/components/SendItemInfo.tsx +++ b/packages/wallet-widget/src/components/SendItemInfo.tsx @@ -1,5 +1,5 @@ -import { formatDisplay } from '@0xsequence/connect' import { NetworkImage, Skeleton, Text, TokenImage } from '@0xsequence/design-system' +import { formatDisplay } from '@0xsequence/web-sdk-core' import React from 'react' import { formatUnits } from 'viem' diff --git a/packages/wallet-widget/src/components/SequenceWalletProvider/ProviderComponents/ValueRegistryProvider.tsx b/packages/wallet-widget/src/components/SequenceWalletProvider/ProviderComponents/ValueRegistryProvider.tsx index 3278030a4..df25adf13 100644 --- a/packages/wallet-widget/src/components/SequenceWalletProvider/ProviderComponents/ValueRegistryProvider.tsx +++ b/packages/wallet-widget/src/components/SequenceWalletProvider/ProviderComponents/ValueRegistryProvider.tsx @@ -1,5 +1,6 @@ -import { compareAddress, useWallets } from '@0xsequence/connect' +import { useWallets } from '@0xsequence/connect' import { useGetCoinPrices, useGetExchangeRate } from '@0xsequence/hooks' +import { compareAddress } from '@0xsequence/web-sdk-core' import { useEffect, useState, type ReactNode } from 'react' import { getAddress, zeroAddress } from 'viem' diff --git a/packages/wallet-widget/src/components/SequenceWalletProvider/SequenceWalletProvider.tsx b/packages/wallet-widget/src/components/SequenceWalletProvider/SequenceWalletProvider.tsx index 90b755032..b0cf8a604 100644 --- a/packages/wallet-widget/src/components/SequenceWalletProvider/SequenceWalletProvider.tsx +++ b/packages/wallet-widget/src/components/SequenceWalletProvider/SequenceWalletProvider.tsx @@ -1,15 +1,9 @@ 'use client' import { SequenceCheckoutProvider, useAddFundsModal } from '@0xsequence/checkout' -import { - getModalPositionCss, - ShadowRoot, - useConnectConfigContext, - useOpenConnectModal, - useSocialLink, - useTheme -} from '@0xsequence/connect' +import { ShadowRoot, useConnectConfigContext, useOpenConnectModal, useSocialLink, useTheme } from '@0xsequence/connect' import { Modal, Scroll } from '@0xsequence/design-system' +import { getModalPositionCss } from '@0xsequence/web-sdk-core' import { AnimatePresence } from 'motion/react' import { useContext, useEffect, useRef, useState, type ReactNode } from 'react' import { useAccount } from 'wagmi' diff --git a/packages/wallet-widget/src/components/TransactionConfirmation.tsx b/packages/wallet-widget/src/components/TransactionConfirmation.tsx index bc3d05525..a9cb2ff78 100644 --- a/packages/wallet-widget/src/components/TransactionConfirmation.tsx +++ b/packages/wallet-widget/src/components/TransactionConfirmation.tsx @@ -1,6 +1,6 @@ -import { truncateAtMiddle } from '@0xsequence/connect' import { Button, Card, ChevronRightIcon, GradientAvatar, Spinner, Text } from '@0xsequence/design-system' import { useIndexerClient } from '@0xsequence/hooks' +import { truncateAtMiddle } from '@0xsequence/web-sdk-core' import { useQuery } from '@tanstack/react-query' import React, { useState } from 'react' import { useAccount } from 'wagmi' diff --git a/packages/wallet-widget/src/components/TransactionHistoryList/TransactionHistoryItem.tsx b/packages/wallet-widget/src/components/TransactionHistoryList/TransactionHistoryItem.tsx index b94958901..48ca3f47d 100644 --- a/packages/wallet-widget/src/components/TransactionHistoryList/TransactionHistoryItem.tsx +++ b/packages/wallet-widget/src/components/TransactionHistoryList/TransactionHistoryItem.tsx @@ -1,8 +1,8 @@ import type { TokenPrice } from '@0xsequence/api' -import { compareAddress, formatDisplay, getNativeTokenInfoByChainId } from '@0xsequence/connect' import { ArrowRightIcon, NetworkImage, Skeleton, Text, TokenImage, TransactionIcon } from '@0xsequence/design-system' import { useGetCoinPrices, useGetExchangeRate } from '@0xsequence/hooks' import { TxnTransferType, type Transaction, type TxnTransfer } from '@0xsequence/indexer' +import { compareAddress, formatDisplay, getNativeTokenInfoByChainId } from '@0xsequence/web-sdk-core' import dayjs from 'dayjs' import { formatUnits, zeroAddress } from 'viem' import { useConfig } from 'wagmi' diff --git a/packages/wallet-widget/src/contexts/Navigation.ts b/packages/wallet-widget/src/contexts/Navigation.ts index ba72987af..b5f31c490 100644 --- a/packages/wallet-widget/src/contexts/Navigation.ts +++ b/packages/wallet-widget/src/contexts/Navigation.ts @@ -1,8 +1,7 @@ 'use client' import type { Transaction } from '@0xsequence/indexer' - -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' export interface CoinDetailsParams { contractAddress: string diff --git a/packages/wallet-widget/src/contexts/NavigationHeader.ts b/packages/wallet-widget/src/contexts/NavigationHeader.ts index d9c36287a..70530547a 100644 --- a/packages/wallet-widget/src/contexts/NavigationHeader.ts +++ b/packages/wallet-widget/src/contexts/NavigationHeader.ts @@ -1,4 +1,4 @@ -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' export interface NavigationHeaderContext { search: string diff --git a/packages/wallet-widget/src/contexts/Shared.ts b/packages/wallet-widget/src/contexts/Shared.ts index 606433544..8136557be 100644 --- a/packages/wallet-widget/src/contexts/Shared.ts +++ b/packages/wallet-widget/src/contexts/Shared.ts @@ -1,4 +1,4 @@ -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' export interface SharedContext { isGuest: boolean diff --git a/packages/wallet-widget/src/contexts/Swap.ts b/packages/wallet-widget/src/contexts/Swap.ts index ab435725c..2542f875d 100644 --- a/packages/wallet-widget/src/contexts/Swap.ts +++ b/packages/wallet-widget/src/contexts/Swap.ts @@ -1,6 +1,5 @@ import type { Token } from '@0xsequence/api' - -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' export interface SwapContext { lifiChains: number[] diff --git a/packages/wallet-widget/src/contexts/ValueRegistry.ts b/packages/wallet-widget/src/contexts/ValueRegistry.ts index da40eb276..6af9e5794 100644 --- a/packages/wallet-widget/src/contexts/ValueRegistry.ts +++ b/packages/wallet-widget/src/contexts/ValueRegistry.ts @@ -1,4 +1,4 @@ -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' export interface ValueRegistryPair { accountAddress: string diff --git a/packages/wallet-widget/src/contexts/WalletModal.ts b/packages/wallet-widget/src/contexts/WalletModal.ts index f6e053585..16cfa1714 100644 --- a/packages/wallet-widget/src/contexts/WalletModal.ts +++ b/packages/wallet-widget/src/contexts/WalletModal.ts @@ -1,6 +1,7 @@ 'use client' -import { createGenericContext } from './genericContext.js' +import { createGenericContext } from '@0xsequence/web-sdk-core' + import type { Navigation } from './Navigation.js' export interface WalletOptions { diff --git a/packages/wallet-widget/src/contexts/genericContext.ts b/packages/wallet-widget/src/contexts/genericContext.ts deleted file mode 100644 index 453a6e9af..000000000 --- a/packages/wallet-widget/src/contexts/genericContext.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { createContext, useContext } from 'react' - -// https://medium.com/@rivoltafilippo/typing-react-context-to-avoid-an-undefined-default-value-2c7c5a7d5947 - -export const createGenericContext = () => { - // Create a context with a generic parameter or undefined - const genericContext = createContext(undefined) - - // Check if the value provided to the context is defined or throw an error - const useGenericContext = () => { - const contextIsDefined = useContext(genericContext) - if (!contextIsDefined) { - throw new Error('useGenericContext must be used within a Provider') - } - return contextIsDefined - } - - return [useGenericContext, genericContext.Provider] as const -} diff --git a/packages/wallet-widget/src/hooks/useGetAllCollections.tsx b/packages/wallet-widget/src/hooks/useGetAllCollections.tsx index b44bfc9b9..90e578872 100644 --- a/packages/wallet-widget/src/hooks/useGetAllCollections.tsx +++ b/packages/wallet-widget/src/hooks/useGetAllCollections.tsx @@ -1,5 +1,6 @@ import { useGetMultipleContractsInfo, useGetTokenBalancesSummary } from '@0xsequence/hooks' import { ContractVerificationStatus } from '@0xsequence/indexer' +import type { ContractInfo } from '@0xsequence/metadata' import { useEffect } from 'react' export const useGetAllCollections = ({ @@ -10,7 +11,7 @@ export const useGetAllCollections = ({ accountAddresses: string[] chainIds: number[] hideUnlistedTokens: boolean -}) => { +}): { data: ContractInfo[]; isLoading: boolean } => { const { data: tokenBalancesData, isLoading, diff --git a/packages/wallet-widget/src/hooks/useGetAllTokensDetails.ts b/packages/wallet-widget/src/hooks/useGetAllTokensDetails.ts index 9aa5724a7..d0e403cd9 100644 --- a/packages/wallet-widget/src/hooks/useGetAllTokensDetails.ts +++ b/packages/wallet-widget/src/hooks/useGetAllTokensDetails.ts @@ -1,4 +1,5 @@ import { useGetTokenBalancesDetails } from '@0xsequence/hooks' +import type { TokenBalance } from '@0xsequence/indexer' import { ContractVerificationStatus } from '@0xsequence/indexer' import { useEffect } from 'react' @@ -10,7 +11,7 @@ export const useGetAllTokensDetails = ({ accountAddresses: string[] chainIds: number[] hideUnlistedTokens: boolean -}) => { +}): { data: TokenBalance[]; isLoading: boolean } => { const { data: tokenBalancesData, isLoading, diff --git a/packages/wallet-widget/src/utils/formatBalance.ts b/packages/wallet-widget/src/utils/formatBalance.ts index aa9923e8a..8b6fc3273 100644 --- a/packages/wallet-widget/src/utils/formatBalance.ts +++ b/packages/wallet-widget/src/utils/formatBalance.ts @@ -1,7 +1,6 @@ -import { formatDisplay } from '@0xsequence/connect' -import { getNativeTokenInfoByChainId } from '@0xsequence/connect' import { compareAddress } from '@0xsequence/design-system' import type { TokenBalance } from '@0xsequence/indexer' +import { formatDisplay, getNativeTokenInfoByChainId } from '@0xsequence/web-sdk-core' import { formatUnits, type Chain } from 'viem' import { zeroAddress } from 'viem' diff --git a/packages/wallet-widget/src/utils/tokens.ts b/packages/wallet-widget/src/utils/tokens.ts index 210e98b18..d7691cf2e 100644 --- a/packages/wallet-widget/src/utils/tokens.ts +++ b/packages/wallet-widget/src/utils/tokens.ts @@ -1,6 +1,6 @@ import type { Price, TokenPrice } from '@0xsequence/api' -import { compareAddress } from '@0xsequence/connect' import type { GetTransactionHistoryReturn, TokenBalance, Transaction } from '@0xsequence/indexer' +import { compareAddress } from '@0xsequence/web-sdk-core' import type { InfiniteData } from '@tanstack/react-query' import { formatUnits, zeroAddress } from 'viem' diff --git a/packages/wallet-widget/src/views/CoinDetails/index.tsx b/packages/wallet-widget/src/views/CoinDetails/index.tsx index 307345eda..4ceeccafb 100644 --- a/packages/wallet-widget/src/views/CoinDetails/index.tsx +++ b/packages/wallet-widget/src/views/CoinDetails/index.tsx @@ -1,6 +1,7 @@ -import { compareAddress, formatDisplay, getNativeTokenInfoByChainId, useWallets } from '@0xsequence/connect' +import { useWallets } from '@0xsequence/connect' import { AddIcon, Button, SendIcon, Text, TokenImage } from '@0xsequence/design-system' import { useGetCoinPrices, useGetExchangeRate, useGetSingleTokenBalance, useGetTransactionHistory } from '@0xsequence/hooks' +import { compareAddress, formatDisplay, getNativeTokenInfoByChainId } from '@0xsequence/web-sdk-core' import { useEffect } from 'react' import { formatUnits, zeroAddress } from 'viem' import { useConfig } from 'wagmi' diff --git a/packages/wallet-widget/src/views/CollectibleDetails/index.tsx b/packages/wallet-widget/src/views/CollectibleDetails/index.tsx index bcd30d834..e43343620 100644 --- a/packages/wallet-widget/src/views/CollectibleDetails/index.tsx +++ b/packages/wallet-widget/src/views/CollectibleDetails/index.tsx @@ -1,4 +1,3 @@ -import { formatDisplay, truncateAtIndex } from '@0xsequence/connect' import { ArrowUpIcon, Button, @@ -12,6 +11,7 @@ import { } from '@0xsequence/design-system' import { useGetSingleTokenBalance } from '@0xsequence/hooks' import { findSupportedNetwork } from '@0xsequence/network' +import { formatDisplay, truncateAtIndex } from '@0xsequence/web-sdk-core' import * as PopoverPrimitive from '@radix-ui/react-popover' import { useEffect, useRef, useState } from 'react' import { formatUnits, getAddress } from 'viem' @@ -35,7 +35,7 @@ export const CollectibleDetails = ({ contractAddress, chainId, tokenId, accountA const [triggerWidth, setTriggerWidth] = useState(0) const [isExternalPopoverOpen, setIsExternalPopoverOpen] = useState(false) - const [foundMarketplaceURL, setFoundMarketplaceURL] = useState(null) + const [foundMarketplaceURL] = useState(null) useEffect(() => { if (triggerRef.current) { diff --git a/packages/wallet-widget/src/views/CollectionDetails/index.tsx b/packages/wallet-widget/src/views/CollectionDetails/index.tsx index ccaca2171..1abaad3c0 100644 --- a/packages/wallet-widget/src/views/CollectionDetails/index.tsx +++ b/packages/wallet-widget/src/views/CollectionDetails/index.tsx @@ -1,7 +1,8 @@ -import { ContractVerificationStatus, useWallets } from '@0xsequence/connect' +import { useWallets } from '@0xsequence/connect' import { Divider, TabsContent, TabsPrimitive, Text } from '@0xsequence/design-system' import { useGetTokenBalancesByContract } from '@0xsequence/hooks' import type { TokenBalance } from '@0xsequence/indexer' +import { ContractVerificationStatus } from '@0xsequence/web-sdk-core' import { useState } from 'react' import type { TokenInfo } from '../../components/NavigationHeader/index.js' diff --git a/packages/wallet-widget/src/views/Home/index.tsx b/packages/wallet-widget/src/views/Home/index.tsx index 8ff3da318..909747655 100644 --- a/packages/wallet-widget/src/views/Home/index.tsx +++ b/packages/wallet-widget/src/views/Home/index.tsx @@ -1,5 +1,6 @@ -import { truncateAtIndex, useSocialLink, useWallets } from '@0xsequence/connect' +import { useSocialLink, useWallets } from '@0xsequence/connect' import { Text } from '@0xsequence/design-system' +import { truncateAtIndex } from '@0xsequence/web-sdk-core' import { useAccount } from 'wagmi' import { CopyButton } from '../../components/CopyButton.js' diff --git a/packages/wallet-widget/src/views/Send/SendCoin.tsx b/packages/wallet-widget/src/views/Send/SendCoin.tsx index a0c6da9c3..265968e69 100644 --- a/packages/wallet-widget/src/views/Send/SendCoin.tsx +++ b/packages/wallet-widget/src/views/Send/SendCoin.tsx @@ -1,16 +1,4 @@ -import { - compareAddress, - getNativeTokenInfoByChainId, - TRANSACTION_CONFIRMATIONS_DEFAULT, - truncateAtMiddle, - useAnalyticsContext, - useCheckWaasFeeOptions, - useWaasConfirmationHandler, - useWaasFeeOptions, - useWallets, - waitForTransactionReceipt, - type ExtendedConnector -} from '@0xsequence/connect' +import { useCheckWaasFeeOptions, useWaasConfirmationHandler, useWaasFeeOptions, useWallets } from '@0xsequence/connect' import { Button, Card, @@ -31,6 +19,15 @@ import { useIndexerClient } from '@0xsequence/hooks' import type { TokenBalance } from '@0xsequence/indexer' +import { + compareAddress, + getNativeTokenInfoByChainId, + TRANSACTION_CONFIRMATIONS_DEFAULT, + truncateAtMiddle, + useAnalyticsContext, + waitForTransactionReceipt, + type ExtendedConnector +} from '@0xsequence/web-sdk-core' import { useEffect, useRef, useState, type ChangeEvent } from 'react' import { encodeFunctionData, formatUnits, parseUnits, toHex, zeroAddress, type Hex } from 'viem' import { useAccount, useChainId, useConfig, useConnections, usePublicClient, useSwitchChain, useWalletClient } from 'wagmi' diff --git a/packages/wallet-widget/src/views/Send/SendCollectible.tsx b/packages/wallet-widget/src/views/Send/SendCollectible.tsx index b31973a7e..1ccdd6e85 100644 --- a/packages/wallet-widget/src/views/Send/SendCollectible.tsx +++ b/packages/wallet-widget/src/views/Send/SendCollectible.tsx @@ -1,14 +1,4 @@ -import { - TRANSACTION_CONFIRMATIONS_DEFAULT, - truncateAtMiddle, - useAnalyticsContext, - useCheckWaasFeeOptions, - useWaasConfirmationHandler, - useWaasFeeOptions, - useWallets, - waitForTransactionReceipt, - type ExtendedConnector -} from '@0xsequence/connect' +import { useCheckWaasFeeOptions, useWaasConfirmationHandler, useWaasFeeOptions, useWallets } from '@0xsequence/connect' import { AddIcon, Button, @@ -25,6 +15,13 @@ import { } from '@0xsequence/design-system' import { useClearCachedBalances, useGetSingleTokenBalance, useIndexerClient } from '@0xsequence/hooks' import type { ContractType, TokenBalance } from '@0xsequence/indexer' +import { + TRANSACTION_CONFIRMATIONS_DEFAULT, + truncateAtMiddle, + useAnalyticsContext, + waitForTransactionReceipt, + type ExtendedConnector +} from '@0xsequence/web-sdk-core' import { useEffect, useRef, useState, type ChangeEvent } from 'react' import { encodeFunctionData, formatUnits, parseUnits, toHex, type Hex } from 'viem' import { useAccount, useChainId, useConfig, useConnections, usePublicClient, useSwitchChain, useWalletClient } from 'wagmi' diff --git a/packages/wallet-widget/src/views/SwapCoin/SwapList.tsx b/packages/wallet-widget/src/views/SwapCoin/SwapList.tsx index 1a79aac22..2928eac31 100644 --- a/packages/wallet-widget/src/views/SwapCoin/SwapList.tsx +++ b/packages/wallet-widget/src/views/SwapCoin/SwapList.tsx @@ -1,12 +1,3 @@ -import { - compareAddress, - ContractVerificationStatus, - CryptoOption, - formatDisplay, - sendTransactions, - useAnalyticsContext, - type ExtendedConnector -} from '@0xsequence/connect' import { Button, Spinner, Text } from '@0xsequence/design-system' import { useClearCachedBalances, @@ -16,6 +7,15 @@ import { useGetTokenBalancesSummary, useIndexerClient } from '@0xsequence/hooks' +import { + compareAddress, + ContractVerificationStatus, + CryptoOption, + formatDisplay, + sendTransactions, + useAnalyticsContext, + type ExtendedConnector +} from '@0xsequence/web-sdk-core' import { useMemo, useState } from 'react' import { formatUnits, zeroAddress, type Hex } from 'viem' import { useAccount, useChainId, usePublicClient, useSwitchChain, useWalletClient } from 'wagmi' diff --git a/packages/wallet-widget/src/views/SwapCoin/index.tsx b/packages/wallet-widget/src/views/SwapCoin/index.tsx index 16fbea0db..cd8e8f2c5 100644 --- a/packages/wallet-widget/src/views/SwapCoin/index.tsx +++ b/packages/wallet-widget/src/views/SwapCoin/index.tsx @@ -1,7 +1,7 @@ -import { compareAddress, getNativeTokenInfoByChainId } from '@0xsequence/connect' import { Button, ChevronRightIcon, NumericInput, Text } from '@0xsequence/design-system' import { useGetCoinPrices, useGetExchangeRate, useGetSingleTokenBalance } from '@0xsequence/hooks' import type { TokenBalance } from '@0xsequence/indexer' +import { compareAddress, getNativeTokenInfoByChainId } from '@0xsequence/web-sdk-core' import { useRef, useState, type ChangeEvent } from 'react' import { parseUnits, zeroAddress } from 'viem' import { useAccount, useConfig } from 'wagmi' diff --git a/packages/wallet-widget/src/views/TransactionDetails/index.tsx b/packages/wallet-widget/src/views/TransactionDetails/index.tsx index 8e376ff27..e72eda51f 100644 --- a/packages/wallet-widget/src/views/TransactionDetails/index.tsx +++ b/packages/wallet-widget/src/views/TransactionDetails/index.tsx @@ -1,5 +1,4 @@ import type { Token } from '@0xsequence/api' -import { compareAddress, formatDisplay, getNativeTokenInfoByChainId, truncateAtIndex } from '@0xsequence/connect' import { ArrowRightIcon, Button, @@ -13,6 +12,7 @@ import { } from '@0xsequence/design-system' import { useGetCoinPrices, useGetCollectiblePrices, useGetExchangeRate } from '@0xsequence/hooks' import { TxnTransferType, type Transaction, type TxnTransfer } from '@0xsequence/indexer' +import { compareAddress, formatDisplay, getNativeTokenInfoByChainId, truncateAtIndex } from '@0xsequence/web-sdk-core' import dayjs from 'dayjs' import { formatUnits, zeroAddress } from 'viem' import { useConfig } from 'wagmi' diff --git a/packages/web-sdk-core/CHANGELOG.md b/packages/web-sdk-core/CHANGELOG.md new file mode 100644 index 000000000..d3571ffaf --- /dev/null +++ b/packages/web-sdk-core/CHANGELOG.md @@ -0,0 +1 @@ +# @0xsequence/web-sdk-cores diff --git a/packages/web-sdk-core/README.md b/packages/web-sdk-core/README.md new file mode 100644 index 000000000..cb2682bf5 --- /dev/null +++ b/packages/web-sdk-core/README.md @@ -0,0 +1,332 @@ +# @0xsequence/hooks + +React hooks to interface with Sequence services. + +Wrap your application with the `SequenceHooksProvider` to provide a config to the hooks. + +```tsx + + + +``` + +## Hooks: + +Sequence hooks are grouped into 5 categories, based on the sequence service they interact with: + +### API + +- useGetCoinPrices +- useGetCollectiblePrices +- useGetExchangeRate + +### Indexer + +- useGetTransactionHistory +- useGetTransactionHistorySummary + +### Indexer Gateway + +- useGetNativeTokenBalance +- useGetTokenBalancesSummary +- useGetTokenBalancesDetails +- useGetTokenBalancesByContract +- useGetSingleTokenBalance + +### Metadata + +- useGetContractInfo +- useGetMultipleContractInfo +- useGetTokenMetadata + +### Combination + +- useGetSwapQuote + +## Usage + +### useGetCoinPrices + +```tsx +import { useGetCoinPrices } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetCoinPrices( + [ + { + chainId: 1, + contractAddress: '0x0123456789012345678901234567890123456789' + } + ], + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetCollectiblePrices + +```tsx +import { useGetCollectiblePrices } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetCollectiblePrices( + [ + { + chainId: 1, + contractAddress: '0x0123456789012345678901234567890123456789', + tokenId: '1' + } + ], + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetExchangeRate + +```tsx +import { useGetExchangeRate } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetExchangeRate('CAD', { + // options param is optional and default values are below + disabled: false +}) +``` + +### useGetTransactionHistory + +```tsx +import { useGetTransactionHistory } from '@0xsequence/hooks' + +const { data, isLoading, fetchNextPage, hasNextPage, isFetchingNextPage, error } = useGetTransactionHistory({ + accountAddresses: ['0x0123456789012345678901234567890123456789'], + contractAddresses: ['0x0123456789012345678901234567890123456789'], // optional + tokenId: '1', // optional + chainId: 1, // optional + page: { // optional + pageSize: 10, + }, + { + // options param is optional and default values are below + disabled: false, + } +}) +``` + +### useGetTransactionHistorySummary + +```tsx +import { useGetTransactionHistorySummary } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetTransactionHistorySummary( + { + accountAddresses: ['0x0123456789012345678901234567890123456789'], + chainIds: [1] + }, + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetNativeTokenBalance + +```tsx +import { useGetNativeTokenBalance } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetNativeTokenBalance( + { + accountAddress: '0x0123456789012345678901234567890123456789', + chainIds: [1], // either use chainIds or networks name + networks: ['mainnet'] + }, + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetTokenBalancesSummary + +```tsx +import { ContractVerificationStatus } from '@0xsequence/indexer' +import { useGetTokenBalancesSummary } from '@0xsequence/hooks' + +const { data, isLoading, fetchNextPage, hasNextPage, isFetchingNextPage, error } = useGetTokenBalancesSummary( + { + chainIds: [1], // either use chainIds or networks name + networks: ['mainnet'], + filter: { + accountAddresses: ['0x0123456789012345678901234567890123456789'], + contractWhitelist: ['0x0123456789012345678901234567890123456789'], + contractBlacklist: ['0x0000000000000000000000000000000000000000'], + contractStatus: ContractVerificationStatus.VERIFIED, + omitNativeBalances: false + }, + omitMetadata: false, // optional + page: { + // optional + pageSize: 10 + } + }, + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetTokenBalancesDetails + +```tsx +import { ContractVerificationStatus } from '@0xsequence/indexer' +import { useGetTokenBalancesDetails } from '@0xsequence/hooks' + +const { data, isLoading, fetchNextPage, hasNextPage, isFetchingNextPage, error } = useGetTokenBalancesDetails( + { + chainIds: [1], // either use chainIds or networks name + networks: ['mainnet'], + filter: { + accountAddresses: ['0x0123456789012345678901234567890123456789'], + contractWhitelist: ['0x0123456789012345678901234567890123456789'], + contractBlacklist: ['0x0000000000000000000000000000000000000000'], + contractStatus: ContractVerificationStatus.VERIFIED, + omitNativeBalances: false + }, + omitMetadata: false, // optional + page: { + // optional + pageSize: 10 + } + }, + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetTokenBalancesByContract + +```tsx +import { ContractVerificationStatus } from '@0xsequence/indexer' +import { useGetTokenBalancesByContract } from '@0xsequence/hooks' + +const { data, isLoading, fetchNextPage, hasNextPage, isFetchingNextPage, error } = useGetTokenBalancesByContract( + { + chainIds: [1], // either use chainIds or networks name + networks: ['mainnet'], + filter: { + accountAddresses: ['0x0123456789012345678901234567890123456789'], + contractWhitelist: ['0x0123456789012345678901234567890123456789'], + contractBlacklist: ['0x0000000000000000000000000000000000000000'], + contractStatus: ContractVerificationStatus.VERIFIED, + omitNativeBalances: false + }, + omitMetadata: false, // optional + page: { + // optional + pageSize: 10 + } + }, + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetSingleTokenBalance + +```tsx +import { useGetSingleTokenBalance } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetSingleTokenBalance({ + chainId: 1, + accountAddress: '0x9876543210987654321098765432109876543210', + contractAddress: '0x0123456789012345678901234567890123456789' +}) +``` + +### useGetContractInfo + +```tsx +import { useGetContractInfo } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetContractInfo( + { + chainId: 1, + contractAddress: '0x0123456789012345678901234567890123456789' + }, + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetMultipleContractInfo + +```tsx +import { useGetMultipleContractInfo } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetMultipleContractInfo( + [ + { chainId: 1, contractAddress: '0x0123456789012345678901234567890123456789' }, + { chainId: 1, contractAddress: '0x0123456789012345678901234567890123456789' } + ], + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetTokenMetadata + +```tsx +import { useGetTokenMetadata } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetTokenMetadata( + { + chainId: '1', + contractAddress: '0x0123456789012345678901234567890123456789', + tokenIds: ['1'] + }, + { + // options param is optional and default values are below + disabled: false + } +) +``` + +### useGetSwapQuote + +```tsx +import { useGetSwapQuote } from '@0xsequence/hooks' + +const { data, isLoading, error } = useGetSwapQuote({ + userAddress: '0x9876543210987654321098765432109876543210', + buyCurrencyAddress: '0x0123456789012345678901234567890123456789', + sellCurrencyAddress: '0x0123456789012345678901234567890123456789', + buyAmount: '1', + chainId: 1, + includeApprove: true, + slippagePercentage: 5 // optional +}) +``` diff --git a/packages/web-sdk-core/package.json b/packages/web-sdk-core/package.json new file mode 100644 index 000000000..a14c06d9b --- /dev/null +++ b/packages/web-sdk-core/package.json @@ -0,0 +1,66 @@ +{ + "name": "@0xsequence/web-sdk-core", + "version": "5.3.6", + "description": "Common utilities and components used by Sequence Web SDK", + "repository": "https://github.com/0xsequence/web-sdk/tree/master/packages/common", + "author": "Horizon Blockchain Games", + "license": "Apache-2.0", + "type": "module", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "pnpm build:clean && pnpm build:esm && pnpm build:cjs", + "build:cjs": "tsc --module commonjs --moduleResolution node --verbatimModuleSyntax false --declaration --declarationMap --outDir dist/cjs && echo '{ \"type\": \"commonjs\" }' > dist/cjs/package.json", + "build:esm": "tsc --verbatimModuleSyntax false --declaration --declarationMap --outDir dist/esm", + "build:clean": "rimraf -g ./dist", + "build:check": "attw --pack .", + "dev": "tsc --watch --module es2022 --moduleResolution node --declaration --declarationMap --outDir dist/esm", + "test": "vitest --run", + "test:watch": "vitest", + "typecheck": "tsc --noEmit" + }, + "peerDependencies": { + "0xsequence": ">= 2.3.7", + "@0xsequence/api": ">=2.3.11", + "@0xsequence/design-system": "2.1.11", + "@0xsequence/indexer": ">=2.3.7", + "@0xsequence/metadata": ">=2.3.7", + "@0xsequence/network": ">=2.3.7", + "@0xsequence/provider": ">=2.3.7", + "@0xsequence/waas": ">=2.3.7", + "@tanstack/react-query": ">= 5", + "react": ">= 17", + "react-dom": ">= 17", + "viem": ">= 2.28.0" + }, + "devDependencies": { + "@0xsequence/api": "2.3.23", + "@0xsequence/indexer": "^2.3.23", + "@0xsequence/metadata": "^2.3.23", + "@0xsequence/network": "^2.3.23", + "@tanstack/react-query": "^5.74.11", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@vitejs/plugin-react": "^4.4.1", + "jsdom": "^25.0.1", + "msw": "^2.7.5", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "typescript": "^5.8.3", + "viem": "^2.28.1", + "vite": "^6.3.4", + "vitest": "^2.1.9" + } +} diff --git a/packages/connect/src/chains/index.ts b/packages/web-sdk-core/src/chains/index.ts similarity index 100% rename from packages/connect/src/chains/index.ts rename to packages/web-sdk-core/src/chains/index.ts diff --git a/packages/connect/src/components/CollectibleTileImage/CollectibleTileImage.tsx b/packages/web-sdk-core/src/components/CollectibleTileImage/CollectibleTileImage.tsx similarity index 100% rename from packages/connect/src/components/CollectibleTileImage/CollectibleTileImage.tsx rename to packages/web-sdk-core/src/components/CollectibleTileImage/CollectibleTileImage.tsx diff --git a/packages/connect/src/components/CollectibleTileImage/index.ts b/packages/web-sdk-core/src/components/CollectibleTileImage/index.ts similarity index 100% rename from packages/connect/src/components/CollectibleTileImage/index.ts rename to packages/web-sdk-core/src/components/CollectibleTileImage/index.ts diff --git a/packages/connect/src/components/CryptoOption.tsx b/packages/web-sdk-core/src/components/CryptoOption.tsx similarity index 100% rename from packages/connect/src/components/CryptoOption.tsx rename to packages/web-sdk-core/src/components/CryptoOption.tsx diff --git a/packages/connect/src/components/NetworkBadge/NetworkBadge.tsx b/packages/web-sdk-core/src/components/NetworkBadge/NetworkBadge.tsx similarity index 96% rename from packages/connect/src/components/NetworkBadge/NetworkBadge.tsx rename to packages/web-sdk-core/src/components/NetworkBadge/NetworkBadge.tsx index ef97347a7..9eb3d73e9 100644 --- a/packages/connect/src/components/NetworkBadge/NetworkBadge.tsx +++ b/packages/web-sdk-core/src/components/NetworkBadge/NetworkBadge.tsx @@ -1,7 +1,7 @@ import { NetworkImage, Text } from '@0xsequence/design-system' import React from 'react' -import { getNetwork, getNetworkBackgroundColor, getNetworkColor } from '../../utils/networks.js' +import { getNetwork, getNetworkBackgroundColor, getNetworkColor } from '../../utils/index.js' interface NetworkBadgeProps { chainId: number diff --git a/packages/connect/src/components/NetworkBadge/index.ts b/packages/web-sdk-core/src/components/NetworkBadge/index.ts similarity index 100% rename from packages/connect/src/components/NetworkBadge/index.ts rename to packages/web-sdk-core/src/components/NetworkBadge/index.ts diff --git a/packages/connect/src/components/SelectedIndicator.tsx b/packages/web-sdk-core/src/components/SelectedIndicator.tsx similarity index 100% rename from packages/connect/src/components/SelectedIndicator.tsx rename to packages/web-sdk-core/src/components/SelectedIndicator.tsx diff --git a/packages/web-sdk-core/src/constants/index.ts b/packages/web-sdk-core/src/constants/index.ts new file mode 100644 index 000000000..1c303b594 --- /dev/null +++ b/packages/web-sdk-core/src/constants/index.ts @@ -0,0 +1 @@ +export * from './transactions.js' diff --git a/packages/connect/src/constants/transactions.ts b/packages/web-sdk-core/src/constants/transactions.ts similarity index 100% rename from packages/connect/src/constants/transactions.ts rename to packages/web-sdk-core/src/constants/transactions.ts diff --git a/packages/connect/src/contexts/Analytics.ts b/packages/web-sdk-core/src/contexts/Analytics.ts similarity index 100% rename from packages/connect/src/contexts/Analytics.ts rename to packages/web-sdk-core/src/contexts/Analytics.ts diff --git a/packages/checkout/src/contexts/genericContext.ts b/packages/web-sdk-core/src/contexts/genericContext.ts similarity index 100% rename from packages/checkout/src/contexts/genericContext.ts rename to packages/web-sdk-core/src/contexts/genericContext.ts diff --git a/packages/web-sdk-core/src/index.ts b/packages/web-sdk-core/src/index.ts new file mode 100644 index 000000000..ae4ab3550 --- /dev/null +++ b/packages/web-sdk-core/src/index.ts @@ -0,0 +1,46 @@ +// Constants +export { TRANSACTION_CONFIRMATIONS_DEFAULT } from './constants/transactions.js' +export { chains } from './chains/index.js' + +// Utils +export { + capitalize, + compareAddress, + formatAddress, + formatDisplay, + isEmailValid, + isJSON, + normalizeChainId, + truncateAtIndex, + truncateAtMiddle +} from './utils/helpers.js' + +export { getNativeTokenInfoByChainId } from './utils/tokens.js' +export { getNetwork, getNetworkBackgroundColor, getNetworkColor } from './utils/networks.js' +export { getModalPositionCss } from './utils/styling.js' +export { publicClientToProvider, walletClientToSigner } from './utils/adapters.js' +export { sendTransactions, waitForTransactionReceipt } from './utils/transactions.js' + +// Types +export type { + ExtendedConnector, + LogoProps, + ModalPosition, + Wallet, + WalletField, + WalletProperties, + WalletType +} from './types/index.js' + +// Components +export { NetworkBadge } from './components/NetworkBadge/index.js' +export { CollectibleTileImage } from './components/CollectibleTileImage/index.js' +export { CryptoOption } from './components/CryptoOption.js' +export { SelectedIndicator } from './components/SelectedIndicator.js' + +// Contexts +export { AnalyticsContextProvider, useAnalyticsContext } from './contexts/Analytics.js' +export { createGenericContext } from './contexts/genericContext.js' + +// Indexer +export { ContractVerificationStatus } from '@0xsequence/indexer' diff --git a/packages/web-sdk-core/src/types/index.ts b/packages/web-sdk-core/src/types/index.ts new file mode 100644 index 000000000..b6731f9da --- /dev/null +++ b/packages/web-sdk-core/src/types/index.ts @@ -0,0 +1,43 @@ +import type { FunctionComponent } from 'react' +import type { Connector, CreateConnectorFn } from 'wagmi' + +export type ModalPosition = + | 'center' + | 'middle-right' + | 'middle-left' + | 'top-center' + | 'top-right' + | 'top-left' + | 'bottom-center' + | 'bottom-right' + | 'bottom-left' + +export interface LogoProps { + className?: string + style?: React.CSSProperties +} + +export type WalletType = 'waas' | 'universal' + +export interface WalletProperties { + id: string + logoDark: FunctionComponent + logoLight: FunctionComponent + monochromeLogoDark?: FunctionComponent + monochromeLogoLight?: FunctionComponent + name: string + iconBackground?: string + hideConnectorId?: string | null + isSequenceBased?: boolean + type?: 'social' | 'wallet' +} + +export type Wallet = WalletProperties & { + createConnector: (projectAccessKey: string) => CreateConnectorFn +} + +export interface WalletField { + _wallet: WalletProperties +} + +export type ExtendedConnector = Connector & WalletField diff --git a/packages/connect/src/utils/adapters.ts b/packages/web-sdk-core/src/utils/adapters.ts similarity index 100% rename from packages/connect/src/utils/adapters.ts rename to packages/web-sdk-core/src/utils/adapters.ts diff --git a/packages/connect/src/utils/helpers.ts b/packages/web-sdk-core/src/utils/helpers.ts similarity index 100% rename from packages/connect/src/utils/helpers.ts rename to packages/web-sdk-core/src/utils/helpers.ts diff --git a/packages/web-sdk-core/src/utils/index.ts b/packages/web-sdk-core/src/utils/index.ts new file mode 100644 index 000000000..1cef0b8ec --- /dev/null +++ b/packages/web-sdk-core/src/utils/index.ts @@ -0,0 +1,3 @@ +export * from './helpers.js' +export * from './tokens.js' +export * from './networks.js' diff --git a/packages/connect/src/utils/networks.ts b/packages/web-sdk-core/src/utils/networks.ts similarity index 100% rename from packages/connect/src/utils/networks.ts rename to packages/web-sdk-core/src/utils/networks.ts diff --git a/packages/connect/src/utils/styling.ts b/packages/web-sdk-core/src/utils/styling.ts similarity index 94% rename from packages/connect/src/utils/styling.ts rename to packages/web-sdk-core/src/utils/styling.ts index 833028dcf..4b846a186 100644 --- a/packages/connect/src/utils/styling.ts +++ b/packages/web-sdk-core/src/utils/styling.ts @@ -1,4 +1,4 @@ -import type { ModalPosition } from '../types.js' +import type { ModalPosition } from '../types/index.js' export interface modalPositionCss { top?: string diff --git a/packages/connect/src/utils/tokens.ts b/packages/web-sdk-core/src/utils/tokens.ts similarity index 68% rename from packages/connect/src/utils/tokens.ts rename to packages/web-sdk-core/src/utils/tokens.ts index d77b23d92..a2d1003ce 100644 --- a/packages/connect/src/utils/tokens.ts +++ b/packages/web-sdk-core/src/utils/tokens.ts @@ -1,6 +1,4 @@ import { nativeTokenImageUrl } from '@0xsequence/design-system' -import { ContractType, type TokenBalance } from '@0xsequence/indexer' -import { zeroAddress } from 'viem' import type { Chain } from 'wagmi/chains' import { chains } from '../chains/index.js' @@ -39,18 +37,3 @@ export const getNativeTokenInfoByChainId = (chainId: number, wagmiChains: readon logoURI: '' } } - -export const createNativeTokenBalance = (chainId: number, accountAddress: string, balance: string = '0'): TokenBalance => { - return { - chainId, - contractAddress: zeroAddress, - accountAddress, - contractType: ContractType.UNKNOWN, - balance, - blockHash: '', - blockNumber: 0, - tokenID: '', - isSummary: false, - uniqueCollectibles: '' - } -} diff --git a/packages/connect/src/utils/transactions.ts b/packages/web-sdk-core/src/utils/transactions.ts similarity index 98% rename from packages/connect/src/utils/transactions.ts rename to packages/web-sdk-core/src/utils/transactions.ts index c6ada46fd..c416de15b 100644 --- a/packages/connect/src/utils/transactions.ts +++ b/packages/web-sdk-core/src/utils/transactions.ts @@ -4,9 +4,10 @@ import { SequenceWaaS, type FeeOption } from '@0xsequence/waas' import type { Hex, PublicClient, WalletClient } from 'viem' import type { Connector } from 'wagmi' -import { TRANSACTION_CONFIRMATIONS_DEFAULT } from '../constants/index.js' -import type { ExtendedConnector } from '../types.js' -import { compareAddress } from '../utils/helpers.js' +import { TRANSACTION_CONFIRMATIONS_DEFAULT } from '../constants/transactions.js' +import type { ExtendedConnector } from '../types/index.js' + +import { compareAddress } from './helpers.js' class FeeOptionInsufficientFundsError extends Error { public readonly feeOptions: FeeOption[] diff --git a/packages/web-sdk-core/tsconfig.json b/packages/web-sdk-core/tsconfig.json new file mode 100644 index 000000000..99bf927a4 --- /dev/null +++ b/packages/web-sdk-core/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "skipLibCheck": true, + "target": "es2022", + "allowJs": true, + "resolveJsonModule": true, + "moduleDetection": "force", + "isolatedModules": true, + "verbatimModuleSyntax": true, + "strict": true, + // "noUncheckedIndexedAccess": true, + "module": "NodeNext", + "sourceMap": true, + "declaration": false, + "lib": ["es2022", "dom", "dom.iterable"], + "jsx": "react-jsx" + }, + "include": ["./src/**/*.ts", "./src/**/*.tsx"] +} diff --git a/packages/web-sdk-core/vite.config.ts b/packages/web-sdk-core/vite.config.ts new file mode 100644 index 000000000..6e8f4eb31 --- /dev/null +++ b/packages/web-sdk-core/vite.config.ts @@ -0,0 +1,9 @@ +/// +import react from '@vitejs/plugin-react' +import path from 'path' +import { defineConfig } from 'vite' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()] +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c036acef3..7462cf834 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,6 +83,9 @@ importers: '@0xsequence/network': specifier: '*' version: 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/web-sdk-core': + specifier: workspace:* + version: link:../../packages/web-sdk-core '@radix-ui/react-popover': specifier: ^1.1.11 version: 1.1.14(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -116,6 +119,9 @@ importers: '@0xsequence/wallet-widget': specifier: workspace:* version: link:../../packages/wallet-widget + '@0xsequence/web-sdk-core': + specifier: workspace:* + version: link:../../packages/web-sdk-core '@radix-ui/react-select': specifier: ^2.2.5 version: 2.2.5(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -195,6 +201,9 @@ importers: '@0xsequence/wallet-widget': specifier: workspace:* version: link:../../packages/wallet-widget + '@0xsequence/web-sdk-core': + specifier: workspace:* + version: link:../../packages/web-sdk-core '@imtbl/config': specifier: ^2.2.0 version: 2.2.4 @@ -298,6 +307,9 @@ importers: '@0xsequence/waas': specifier: '>= 2.3.23' version: 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/web-sdk-core': + specifier: workspace:* + version: link:../web-sdk-core date-fns: specifier: ^4.1.0 version: 4.1.0 @@ -377,6 +389,9 @@ importers: '@0xsequence/waas': specifier: ^2.3.23 version: 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/web-sdk-core': + specifier: workspace:* + version: link:../web-sdk-core '@databeat/tracker': specifier: ^0.9.3 version: 0.9.3 @@ -493,11 +508,14 @@ importers: packages/immutable-connector: dependencies: 0xsequence: - specifier: '>= 2.3.23' - version: 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + specifier: '>= 2.3.7' + version: 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@0xsequence/connect': specifier: workspace:* version: link:../connect + '@0xsequence/web-sdk-core': + specifier: workspace:* + version: link:../web-sdk-core '@imtbl/config': specifier: '>=2.1.2' version: 2.2.4 @@ -540,6 +558,9 @@ importers: '@0xsequence/network': specifier: '>=2.3.23' version: 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/web-sdk-core': + specifier: workspace:* + version: link:../web-sdk-core '@radix-ui/react-popover': specifier: ^1.1.11 version: 1.1.14(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -584,8 +605,80 @@ importers: specifier: ^2.15.1 version: 2.15.5(@tanstack/query-core@5.80.5)(@tanstack/react-query@5.80.5(react@19.1.0))(@types/react@19.1.6)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + packages/web-sdk-core: + dependencies: + 0xsequence: + specifier: '>= 2.3.7' + version: 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/design-system': + specifier: 2.1.11 + version: 2.1.11(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(motion@12.16.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@0xsequence/provider': + specifier: '>=2.3.7' + version: 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/waas': + specifier: '>=2.3.7' + version: 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + devDependencies: + '@0xsequence/api': + specifier: 2.3.23 + version: 2.3.23 + '@0xsequence/indexer': + specifier: ^2.3.23 + version: 2.3.23 + '@0xsequence/metadata': + specifier: ^2.3.23 + version: 2.3.23 + '@0xsequence/network': + specifier: ^2.3.23 + version: 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@tanstack/react-query': + specifier: ^5.74.11 + version: 5.80.5(react@19.1.0) + '@testing-library/jest-dom': + specifier: ^6.6.3 + version: 6.6.3 + '@testing-library/react': + specifier: ^16.3.0 + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.6(@types/react@19.1.6))(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@testing-library/user-event': + specifier: ^14.6.1 + version: 14.6.1(@testing-library/dom@10.4.0) + '@vitejs/plugin-react': + specifier: ^4.4.1 + version: 4.5.1(vite@6.3.5(@types/node@22.7.5)(jiti@2.4.2)(lightningcss@1.30.1)) + jsdom: + specifier: ^25.0.1 + version: 25.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + msw: + specifier: ^2.7.5 + version: 2.9.0(@types/node@22.7.5)(typescript@5.8.3) + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + typescript: + specifier: ^5.8.3 + version: 5.8.3 + viem: + specifier: ^2.28.1 + version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + vite: + specifier: ^6.3.4 + version: 6.3.5(@types/node@22.7.5)(jiti@2.4.2)(lightningcss@1.30.1) + vitest: + specifier: ^2.1.9 + version: 2.1.9(@types/node@22.7.5)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(msw@2.9.0(@types/node@22.7.5)(typescript@5.8.3)) + packages: + 0xsequence@2.3.17: + resolution: {integrity: sha512-/fkAFKT1I6r4H/gSmPZ4P2zP9TN84sL8PjzVUtcuKUetFJEjXYiZVRQTOdzjgNu1QTuAY+EeCZZoxyLag45aWA==} + peerDependencies: + ethers: '>=6' + 0xsequence@2.3.23: resolution: {integrity: sha512-h+BLPjTJsua3QmVGprgo5/2M4+teezXoZ//OSNNVVPm+Tk+yOUgEmJjGJB6J8xEyUtARPCEjOl7W5PVeDcrLgw==} peerDependencies: @@ -597,14 +690,27 @@ packages: '@0xsequence/abi@2.3.23': resolution: {integrity: sha512-N5bVeCAKaHQ6+M8lKVlPfNcbmp3s10BBLNiqM1XzIGuzl5BKxBj0S9h4Vb7cd//3ALxgqYjwRvxi760wIDnyCA==} + '@0xsequence/account@2.3.17': + resolution: {integrity: sha512-fEM0TXdBGXeKA4ooSuVRubhN8xe1O40d4FcTIGvrhj8VahUjcxjjf1ln3eCuF/3IrWna077EiELHXQHsSBlHYQ==} + peerDependencies: + ethers: '>=6' + '@0xsequence/account@2.3.23': resolution: {integrity: sha512-GW/I76VKhOvSHOivB1OVrVSLknqC34T6SYRecPrEEVHRbm6+Ntjb8jNzF+virMOHWIeA+QDjaDIw7vwsFia8GA==} peerDependencies: ethers: '>=6' + '@0xsequence/api@2.3.17': + resolution: {integrity: sha512-FC65y3VjIl7/stTK9Iy5804aqn0EUteBkYCW3ehbhksk7P46YyGPtNmaKMxTh7cHYuw1+Cmb0w7kffkyn2G3kw==} + '@0xsequence/api@2.3.23': resolution: {integrity: sha512-dzH/ZC0ukt8L10bb4Vie/lppU91prEFAOmrGvunXlh9VkN/A2pz3sn8TFfMlMM9d9j5Q3OP4Jzyw6hyabIo7hw==} + '@0xsequence/auth@2.3.17': + resolution: {integrity: sha512-afeL/idwM6jWHvP0lwDpug/BMxMRG7/1dn3olbO39fHoKNetIiQKTdGHLe+wEX44hAM5HCv4j3EVUSDTBORMOw==} + peerDependencies: + ethers: '>=6' + '@0xsequence/auth@2.3.23': resolution: {integrity: sha512-2yY0sp9N6fXiocSEqmLXvwLOQUhQ9MsvwcwAmr+76thg5aifnuzJJaEAaCRolo8sfyy9no6y8Ll8NHr4aduQEQ==} peerDependencies: @@ -632,6 +738,11 @@ packages: peerDependencies: ethers: '>=6' + '@0xsequence/guard@2.3.17': + resolution: {integrity: sha512-flG/XXAQkJulOtjt+DPdZwJZgzQX6m6iBn9g5mJDnZLIPvF0L+QLnR5hw6kzWyQ4P732DeJ/yTMhFHIa/aduJw==} + peerDependencies: + ethers: '>=6' + '@0xsequence/guard@2.3.23': resolution: {integrity: sha512-nMFChM4TMuyqzKWsDrRyCmF+rYpiCAFVgg2D6hHQnYFSVqzUW36H3yHswztUtNXYuLX4ZGuk7kWmJgS6GWxquA==} peerDependencies: @@ -646,9 +757,17 @@ packages: '@0xsequence/marketplace@2.3.23': resolution: {integrity: sha512-oJ8escRaa846mOgy27AqUdlnJmhQJL0Afp4nSlsQNBBjNBKq8+IB7CofSKcxRVIe4YQlfgnUwsRim19bmsAjBg==} + '@0xsequence/metadata@2.3.17': + resolution: {integrity: sha512-0/VQ8y3q8AIFTNL8vdQ1n1HNrf9+HrSZui7fMs1flITFGVU1+rQo4TYSETu/JeAKjfGkdoe07Z9BdtaL5k8fhg==} + '@0xsequence/metadata@2.3.23': resolution: {integrity: sha512-Jaz7JvOwLgyoKdghEUmAhNGXMnyeorsJYOKilVHUIg2zebCIf77QzGfoSK1uJJd9nZNO3THLz5LWNNTOb93bpA==} + '@0xsequence/migration@2.3.17': + resolution: {integrity: sha512-F727/qzRL/WvFbSD1sx1zR0Ous9yGdbYSdTBhqYJrECcCTHZ+jdLKUN8letsBG9J4CdReASLKiacHgUh5l1GTg==} + peerDependencies: + ethers: '>=6' + '@0xsequence/migration@2.3.23': resolution: {integrity: sha512-u2PzPw6fowDueh8pbiJfeM9nHgkLRhJk/xVMoyOUTQt69+yAW2PDIkNzqLEpb2XkxECx2tXTBpn1m/jL52ZDaQ==} peerDependencies: @@ -664,6 +783,11 @@ packages: peerDependencies: ethers: '>=6' + '@0xsequence/provider@2.3.17': + resolution: {integrity: sha512-CpNVUn/Fdzzkh0eXD8tXeBqgonGDOVGHshBYOkAFWv/UtyMyVDYXKXuVO1RoGXCaPd6gsy77djdV8xmUOWnyEQ==} + peerDependencies: + ethers: '>=6' + '@0xsequence/provider@2.3.23': resolution: {integrity: sha512-cBSugJw84x01eBjsyysnkpZJ9PaZG7JyVu//Pa4tkTEI5GpnVe2TUa/zpk/rExMkEdfTZPpBpRcMnEz0Vvuyqw==} peerDependencies: @@ -679,16 +803,31 @@ packages: peerDependencies: ethers: '>=6' + '@0xsequence/replacer@2.3.17': + resolution: {integrity: sha512-GhY9wUtkDYqZuw1CswHl6Nv5IYl3zZvl+GHQyRpHxytYtFweluHo3cBYne5k6i0rtgem2AnOtBCSJmPrapBRDg==} + peerDependencies: + ethers: '>=6' + '@0xsequence/replacer@2.3.23': resolution: {integrity: sha512-72+F6UYXlf196Vg72KEnCZiRkvw1QqmRbquqINJx2zI5z8GySql6aPvBfzSaWh53Z6ojS0SyVKD73hXagJjIDQ==} peerDependencies: ethers: '>=6' + '@0xsequence/sessions@2.3.17': + resolution: {integrity: sha512-laaA687//uiKybQwfhmSYjncQmfr1KOrRAY5iXLoaQQaK2Npe7amB/MIbymytx7zNCIcXulkoWg2sLiE4VE0Wg==} + peerDependencies: + ethers: '>=6' + '@0xsequence/sessions@2.3.23': resolution: {integrity: sha512-5XfzpnNFL0XvxL19+C+YGTzTo0OAnJYy+5NyDTublQ+2hmF+iRzTizZ1ETUW9aT68ttUbRPdW7HsiasjXEGOHg==} peerDependencies: ethers: '>=6' + '@0xsequence/signhub@2.3.17': + resolution: {integrity: sha512-AfrdHWD0g9CRH7pomxSZDFolRuQtN6dCOXeasXXGvfj/H+HT9PsVKeKw1QJ1Ub9/BhHzc+g07L0ZZs8aU6kQDg==} + peerDependencies: + ethers: '>=6' + '@0xsequence/signhub@2.3.23': resolution: {integrity: sha512-gPHtJ55DKN02D/6NsUKZ0zdCRxolR2N1eGUj7a1otioCM1MInTo2v3dttF3zip5sp9holw1kaYIeZrlrnbQXWQ==} peerDependencies: @@ -709,6 +848,11 @@ packages: peerDependencies: ethers: '>=6' + '@0xsequence/wallet@2.3.17': + resolution: {integrity: sha512-kPuxet2u9jej2jsXv4URPT21lsR2reQsFyyYI7OUhYlEhWpyEGZkoQGCp1HcK2XbBhL1RhA/i6BTnh0ewuu0Qw==} + peerDependencies: + ethers: '>=6' + '@0xsequence/wallet@2.3.23': resolution: {integrity: sha512-+oVM4bmVWLfK5UrLSBkwNTP2jlJxLRGM+3+8pdFAWb6znGRGvoXWVzUY5j7PFAJM8l3YnIwSjrtjugDwMxvJTg==} peerDependencies: @@ -7819,6 +7963,26 @@ packages: snapshots: + 0xsequence@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + '@0xsequence/abi': 2.3.17 + '@0xsequence/account': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/api': 2.3.17 + '@0xsequence/auth': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/guard': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/indexer': 2.3.17 + '@0xsequence/metadata': 2.3.17 + '@0xsequence/migration': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/network': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/provider': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/relayer': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/sessions': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/signhub': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/utils': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/wallet': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + 0xsequence@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: '@0xsequence/abi': 2.3.23 @@ -7843,6 +8007,18 @@ snapshots: '@0xsequence/abi@2.3.23': {} + '@0xsequence/account@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/abi': 2.3.17 + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/migration': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/network': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/relayer': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/sessions': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/utils': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/wallet': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/account@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/abi': 2.3.23 @@ -7855,8 +8031,27 @@ snapshots: '@0xsequence/wallet': 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/api@2.3.17': {} + '@0xsequence/api@2.3.23': {} + '@0xsequence/auth@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/abi': 2.3.17 + '@0xsequence/account': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/api': 2.3.17 + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/ethauth': 1.0.0(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/indexer': 2.3.17 + '@0xsequence/metadata': 2.3.17 + '@0xsequence/migration': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/network': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/sessions': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/signhub': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/utils': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/wallet': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/auth@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/abi': 2.3.23 @@ -7918,6 +8113,14 @@ snapshots: ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) js-base64: 3.7.7 + '@0xsequence/guard@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/account': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/signhub': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/utils': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/guard@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/account': 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) @@ -7932,8 +8135,17 @@ snapshots: '@0xsequence/marketplace@2.3.23': {} + '@0xsequence/metadata@2.3.17': {} + '@0xsequence/metadata@2.3.23': {} + '@0xsequence/migration@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/abi': 2.3.17 + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/wallet': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/migration@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/abi': 2.3.23 @@ -7957,6 +8169,22 @@ snapshots: '@0xsequence/utils': 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/provider@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/abi': 2.3.17 + '@0xsequence/account': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/auth': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/migration': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/network': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/relayer': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/utils': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/wallet': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@databeat/tracker': 0.9.3 + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + eventemitter2: 6.4.9 + webextension-polyfill: 0.10.0 + '@0xsequence/provider@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/abi': 2.3.23 @@ -7987,12 +8215,27 @@ snapshots: '@0xsequence/utils': 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/replacer@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/abi': 2.3.17 + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/replacer@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/abi': 2.3.23 '@0xsequence/core': 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/sessions@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/migration': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/replacer': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/utils': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + idb: 7.1.1 + '@0xsequence/sessions@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/core': 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) @@ -8002,6 +8245,11 @@ snapshots: ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) idb: 7.1.1 + '@0xsequence/signhub@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/signhub@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/core': 2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) @@ -8030,6 +8278,16 @@ snapshots: transitivePeerDependencies: - aws-crt + '@0xsequence/wallet@2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@0xsequence/abi': 2.3.17 + '@0xsequence/core': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/network': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/relayer': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/signhub': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@0xsequence/utils': 2.3.17(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ethers: 6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@0xsequence/wallet@2.3.23(ethers@6.14.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@0xsequence/abi': 2.3.23