@orderly.network/wallet-connector-privy 2.8.14 → 2.9.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts","../src/providers/abstractWallet/abstractWalletProvider.tsx","../src/providers/privy/privyWalletProvider.tsx","../src/stores/solanaWalletStore.ts","../src/providers/solana/solanaWalletProvider.tsx","../src/providers/wagmi/wagmiWalletProvider.tsx","../src/components/icons.tsx","../src/components/pwaDilaog.tsx","../src/util.ts","../src/hooks/useWallet.tsx","../src/components/renderConnector/abstractConnector.tsx","../src/components/renderConnector/privyConnector.tsx","../src/components/common.tsx","../src/components/renderConnector/solanaConnector.tsx","../src/components/renderConnector/wagmiConnector.tsx","../src/components/renderConnector/index.tsx","../src/components/switchNetworkTips.tsx","../src/components/walletCard.tsx","../src/components/renderNonPrivyWallet/addAbstractWallet.tsx","../src/components/renderNonPrivyWallet/addEvmWallet.tsx","../src/components/renderNonPrivyWallet/addSolanaWallet.tsx","../src/components/renderNonPrivyWallet/index.tsx","../src/components/renderPrivyWallet.tsx","../src/components/connectDrawer.tsx","../src/components/linkDevice.tsx","../src/components/userCenter.tsx","../src/injectUsercenter.tsx","../src/main.tsx","../src/providers/abstractWallet/initAbstractProvider.tsx","../src/providers/abstractWallet/index.tsx","../src/providers/privy/initPrivyProvider.tsx","../src/providers/privy/index.tsx","../src/providers/solana/initSolanaProvider.tsx","../src/providers/solana/index.tsx","../src/providers/wagmi/initWagmiProvider.tsx","../src/providers/wagmi/index.tsx","../src/provider.tsx","../src/index.ts"],"names":["Network","WalletType","WalletConnectType","WalletAdapterNetwork","SOLANA_TESTNET_CHAINID","SOLANA_MAINNET_CHAINID","ABSTRACT_TESTNET_CHAINID","ABSTRACT_MAINNET_CHAINID","WalletChainTypeEnum","createContext","useLoginWithAbstract","useState","useAbstractClient","useAccount","useGlobalWalletSignerAccount","useMemo","ChainNamespace","useEffect","windowGuard","useContext","usePrivy","useWallets","useRef","useSolanaWallets","useTrack","TrackerEventName","React","create","useStorageLedgerAddress","useWallet","wagmiConnectors","useConnect","useDisconnect","useSwitchChain","useCallback","chainId","connector","modal","useModal","useTranslation","SimpleSheet","SheetHeader","Text","Flex","Divider","cn","AbstractChains","SolanaChains","useLocalStorage","ConnectorKey","useStorageChain","defaultMainnetChains","defaultTestnetChains","walletType","useScreen","Grid","SimpleDialog","ChainIcon","Popover","ScrollArea","ExclamationFillIcon","toast","formatAddress","Tooltip","CopyIcon","Checkbox","DropdownMenuRoot","DropdownMenuTrigger","DropdownMenuPortal","DropdownMenuContent","DropdownMenuItem","ChevronDownIcon","ChevronUpIcon","CloseSquareFillIcon","Trans","useWalletConnector","ABSTRACT_CHAIN_ID_MAP","AccountStatusEnum","Button","AuthGuard","installExtension","ExtensionPositionEnum","WalletConnectorContext","abstract","abstractTestnet","AbstractWalletProvider","PrivyProvider","PhantomWalletAdapter","WalletProvider","QueryClient","createConfig","mainnet","createStorage","injected","http","WagmiProvider","QueryClientProvider","EMPTY_OBJECT","ArbitrumSepoliaChainInfo","SolanaDevnetChainInfo","defineChain","useMainnetChainsStore","useTestnetChainsStore","useSwapSupportStore","mainnetChains","network","TooltipProvider","viemExport","WagmiConnectorsExport","WagmiExport"],"mappings":"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","file":"index.js","sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport { PrivyClientConfig } from \"@privy-io/react-auth\";\nimport {\n Adapter,\n WalletAdapter,\n WalletAdapterNetwork,\n WalletError,\n} from \"@solana/wallet-adapter-base\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport { Connector, CreateConnectorFn, Storage } from \"wagmi\";\nimport { WalletState } from \"@orderly.network/hooks\";\nimport {\n ABSTRACT_MAINNET_CHAINID,\n ABSTRACT_TESTNET_CHAINID,\n ChainNamespace,\n SOLANA_MAINNET_CHAINID,\n SOLANA_TESTNET_CHAINID,\n} from \"@orderly.network/types\";\n\nexport type SolanaInitialProps = PropsWithChildren<{\n network?: WalletAdapterNetwork;\n endPoint?: string;\n mainnetRpc?: string;\n devnetRpc?: string;\n wallets?: Adapter[];\n // wallet not ready error handle\n onError?: (error: WalletError, adapter?: Adapter) => void;\n}>;\n\nexport enum Network {\n mainnet = \"mainnet\",\n testnet = \"testnet\",\n}\n\nexport enum WalletType {\n EVM = \"EVM\",\n SOL = \"SOL\",\n ABSTRACT = \"Abstract\",\n}\n\nexport enum WalletConnectType {\n EVM = \"EVM\",\n SOL = \"SOL\",\n PRIVY = \"privy\",\n ABSTRACT = \"Abstract\",\n}\n\nexport interface ConnectProps {\n walletType: WalletConnectType;\n extraType?: string;\n connector?: Connector;\n walletAdapter?: WalletAdapter;\n}\n\nexport interface InitPrivy {\n appid: string;\n config?: {\n appearance: Omit<\n PrivyClientConfig[\"appearance\"],\n \"walletChainType\" | \"walletList\"\n >;\n loginMethods?: PrivyClientConfig[\"loginMethods\"];\n };\n}\n\nexport interface InitWagmi {\n connectors?: CreateConnectorFn[];\n storage?: Storage;\n}\n\nexport interface InitSolana {\n mainnetRpc?: string;\n devnetRpc?: string;\n wallets: Adapter[];\n onError: (error: WalletError, adapter?: Adapter) => void;\n}\n\nexport interface InitAbstract {\n queryClient?: QueryClient;\n}\n\nexport const SolanaChains = new Map([\n [WalletAdapterNetwork.Devnet, SOLANA_TESTNET_CHAINID],\n [WalletAdapterNetwork.Mainnet, SOLANA_MAINNET_CHAINID],\n]);\n\nexport const SolanaChainsMap = new Map<Network | WalletAdapterNetwork, number>([\n [WalletAdapterNetwork.Devnet, SOLANA_TESTNET_CHAINID],\n [Network.testnet, SOLANA_TESTNET_CHAINID],\n [Network.mainnet, SOLANA_MAINNET_CHAINID],\n [WalletAdapterNetwork.Mainnet, SOLANA_MAINNET_CHAINID],\n]);\n\nexport const AbstractChainsMap = new Map<Network, number>([\n [Network.testnet, ABSTRACT_TESTNET_CHAINID],\n [Network.mainnet, ABSTRACT_MAINNET_CHAINID],\n]);\n\nexport interface ConnectorWalletType {\n disableWagmi?: boolean;\n disablePrivy?: boolean;\n disableSolana?: boolean;\n disableAGW?: boolean;\n}\nexport interface WalletChainTypeConfig {\n hasEvm: boolean;\n hasSol: boolean;\n hasAbstract: boolean;\n}\nexport enum WalletChainTypeEnum {\n onlyEVM = \"onlyEVM\",\n onlySOL = \"onlySOL\",\n EVM_SOL = \"EVM_SOL\",\n}\nexport type WalletChainType = WalletChainTypeEnum;\n\nexport type IWalletState = WalletState & {\n chain?: {\n namespace: ChainNamespace;\n id: number;\n };\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { createContext, PropsWithChildren, useContext, useMemo } from \"react\";\nimport { transformEIP1193Provider } from \"@abstract-foundation/agw-client\";\nimport {\n useAbstractClient,\n useGlobalWalletSignerAccount,\n useLoginWithAbstract,\n} from \"@abstract-foundation/agw-react\";\nimport { useAccount, useWalletClient } from \"wagmi\";\nimport { ConnectedChain, WalletState } from \"@orderly.network/hooks\";\nimport { ABSTRACT_CHAIN_ID_MAP, ChainNamespace } from \"@orderly.network/types\";\nimport { windowGuard } from \"@orderly.network/utils\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { AbstractChainsMap, IWalletState } from \"../../types\";\n\ninterface AbstractWalletContextValue {\n connect: () => void;\n isConnected: boolean;\n disconnect: () => void;\n wallet: IWalletState | null;\n connectedChain: ConnectedChain | undefined;\n}\n\nconst AbstractWalletContext = createContext<AbstractWalletContextValue | null>(\n null,\n);\n\nexport const AbstractWalletProvider = (props: PropsWithChildren) => {\n const { network } = useWalletConnectorPrivy();\n const { login, logout } = useLoginWithAbstract();\n const [wallet, setWallet] = useState<IWalletState | null>(null);\n const { data: client, isLoading: isClientLoading } = useAbstractClient();\n const { connector } = useAccount();\n const { address, status } = useGlobalWalletSignerAccount();\n\n const connect = () => {\n return login();\n };\n\n const disconnect = () => {\n return logout();\n };\n\n const isConnected = useMemo(() => {\n return !!(client && connector);\n }, [client, connector]);\n\n const connectedChain = useMemo(() => {\n if (!client || !connector) {\n return;\n }\n return {\n id: AbstractChainsMap.get(network)!,\n namespace: ChainNamespace.evm,\n };\n }, [client, connector]);\n\n const value = useMemo(\n () => ({\n isConnected,\n connect,\n disconnect,\n wallet,\n connectedChain,\n }),\n [connect, disconnect, isConnected, wallet, connectedChain],\n );\n\n useEffect(() => {\n if (!client || !connector || !address) {\n setWallet(null);\n return;\n }\n connector?.getProvider().then((provider: any) => {\n console.log(\"xxx abstract wallet in wagmi provider\", provider);\n const tempWallet: IWalletState = {\n label: \"AGW\",\n icon: \"\",\n provider: {\n ...provider,\n agwWallet: true,\n sendTransaction: async (params: any) => {\n console.log(\"--- agw wallet sendTransaction\", params);\n return client.sendTransaction(params);\n },\n writeContract: async (params: any) => {\n console.log(\"--- agw wallet writeContract\", params);\n return client.writeContract(params);\n },\n },\n accounts: [\n {\n address: address,\n },\n ],\n chains: [\n {\n id: AbstractChainsMap.get(network)!,\n namespace: ChainNamespace.evm,\n },\n ],\n chain: connectedChain,\n additionalInfo: {\n AGWAddress: client.account.address,\n },\n };\n console.log(\"-- abstract wallet tempWallet\", tempWallet);\n setWallet(tempWallet);\n });\n }, [client, connectedChain, connector, address, isClientLoading]);\n\n useEffect(() => {\n windowGuard(() => {\n const connection = localStorage.getItem(\n \"privy-caw:cm04asygd041fmry9zmcyn5o5:connection\",\n );\n if (connection) {\n login();\n }\n });\n }, []);\n return (\n <AbstractWalletContext.Provider value={value}>\n {props.children}\n </AbstractWalletContext.Provider>\n );\n};\n\nexport function useAbstractWallet() {\n const context = useContext(AbstractWalletContext);\n if (!context) {\n throw new Error(\n \"useAbstractWallet must be used within a AbstractWalletProvider\",\n );\n }\n return context;\n}\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n usePrivy,\n useSolanaWallets,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { useTrack, WalletState } from \"@orderly.network/hooks\";\nimport { ChainNamespace, TrackerEventName } from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { SolanaChainsMap } from \"../../types\";\n\ninterface WalletStatePrivy extends WalletState {\n chain: {\n id: number;\n namespace: ChainNamespace;\n };\n}\n\ninterface PrivyWalletContextValue {\n connect: () => void;\n walletEVM: WalletStatePrivy | null;\n walletSOL: WalletStatePrivy | null;\n isConnected: boolean;\n switchChain: (chainId: number) => Promise<any>;\n linkedAccount: { type: string; address: string | null } | null;\n exportWallet: any;\n createEvmWallet: any;\n createSolanaWallet: any;\n disconnect: () => Promise<void>;\n}\n\nconst getPrivyEmbeddedWalletChainId = (chainId: string) => {\n if (!chainId) {\n return null;\n }\n return parseInt(chainId.split(\"eip155:\")[1]);\n};\n\nconst defaultUseSolanaWallets = {\n ready: false,\n wallets: [],\n createWallet: () => Promise.resolve(),\n exportWallet: () => Promise.resolve(),\n};\nconst defaultUseWallets = { wallets: [] };\n\nconst PrivyWalletContext = createContext<PrivyWalletContextValue | null>(null);\n\nexport const PrivyWalletProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const { network, solanaInfo, setSolanaInfo, connectorWalletType } =\n useWalletConnectorPrivy();\n const {\n login,\n logout,\n ready,\n authenticated,\n user,\n exportWallet: exportEvmWallet,\n createWallet: createEvmWallet,\n } = usePrivy();\n const { wallets: walletsEVM } = connectorWalletType.disablePrivy\n ? defaultUseWallets\n : useWallets();\n const connectedRef = useRef(false);\n\n const {\n ready: solanaReady,\n wallets: walletsSOL,\n createWallet: createSolanaWallet,\n exportWallet: exportSolanaWallet,\n } = connectorWalletType.disablePrivy\n ? defaultUseSolanaWallets\n : useSolanaWallets();\n\n const [walletEVM, setWalletEVM] = useState<WalletStatePrivy | null>(null);\n const [walletSOL, setWalletSOL] = useState<WalletStatePrivy | null>(null);\n\n const { track } = useTrack();\n\n const linkedAccount = useMemo(() => {\n if (user && user.linkedAccounts) {\n const account = user.linkedAccounts\n .filter((item) => item.type !== \"wallet\")\n .sort(\n (a, b) =>\n (b.latestVerifiedAt?.getTime() ?? 0) -\n (a.latestVerifiedAt?.getTime() ?? 0),\n )[0];\n let address = null;\n if (account.type === \"email\") {\n address = account.address;\n } else if (account.type === \"twitter_oauth\") {\n address = `@${account.username}`;\n } else if (account.type === \"google_oauth\") {\n address = `@${account.name}`;\n } else if (account.type === \"telegram\") {\n address = `@${account.username}`;\n }\n return {\n type: account.type,\n address: address,\n };\n }\n return null;\n }, [user]);\n\n const switchChain = (chainId: number) => {\n const wallet = walletsEVM[0];\n if (wallet) {\n return wallet.switchChain(chainId);\n }\n return Promise.reject(\"no wallet\");\n };\n\n const connect = () => {\n login();\n };\n\n const disconnect = () => {\n return logout();\n };\n\n const exportWallet = (namespace: ChainNamespace) => {\n console.log(\"xxxx export wallet\", {\n namespace,\n });\n if (namespace === ChainNamespace.evm) {\n track(TrackerEventName.clickExportPrivateKey, {\n type: \"evm\",\n });\n return exportEvmWallet();\n } else if (namespace === ChainNamespace.solana) {\n track(TrackerEventName.clickExportPrivateKey, {\n type: \"solana\",\n });\n return exportSolanaWallet();\n }\n return Promise.reject(\"no namespace\");\n };\n\n const isConnected = useMemo(() => {\n if (ready && authenticated) {\n return true;\n }\n return false;\n }, [ready, authenticated]);\n\n useEffect(() => {\n if (!authenticated || !walletsEVM || !walletsEVM[0]) {\n setWalletEVM(null);\n return;\n }\n const wallet = walletsEVM[0];\n wallet.getEthereumProvider().then((provider: any) => {\n setWalletEVM({\n label: \"privy\",\n icon: \"\",\n provider: provider,\n accounts: [\n {\n address: wallet.address,\n },\n ],\n chains: [\n {\n id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,\n namespace: ChainNamespace.evm,\n },\n ],\n chain: {\n id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,\n namespace: ChainNamespace.evm,\n },\n });\n });\n }, [walletsEVM, authenticated]);\n\n useEffect(() => {\n // console.log('Solana wallet effect triggered:', {\n // authenticated,\n // solanaReady,\n // user,\n // walletsSOL,\n // });\n if (!authenticated) {\n setWalletSOL(null);\n return;\n }\n if (!solanaReady) {\n return;\n }\n if (!user) {\n return;\n }\n const embededSolanaWallet = (\n user?.linkedAccounts as WalletWithMetadata[]\n ).find(\n (item: WalletWithMetadata) =>\n item.chainType === \"solana\" && item.connectorType === \"embedded\",\n );\n\n if (!embededSolanaWallet) {\n createSolanaWallet().then();\n return;\n }\n\n if (!walletsSOL || !walletsSOL[0]) {\n return;\n }\n\n const wallet = walletsSOL.find((w: any) => w.connectorType === \"embedded\");\n if (wallet) {\n if (walletSOL && wallet.address === walletSOL.accounts[0].address) {\n if (walletSOL.chain.id === SolanaChainsMap.get(network)!) {\n return;\n }\n }\n\n setWalletSOL({\n label: \"privy\",\n icon: \"\",\n provider: {\n signMessage: wallet.signMessage,\n signTransaction: wallet.signTransaction,\n sendTransaction: wallet.sendTransaction,\n network: solanaInfo?.network ?? WalletAdapterNetwork.Devnet,\n rpcUrl: solanaInfo?.rpcUrl ?? undefined,\n },\n accounts: [\n {\n address: wallet.address,\n },\n ],\n chains: [\n {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n chain: {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n },\n });\n }\n }, [\n walletsSOL,\n authenticated,\n createSolanaWallet,\n solanaReady,\n user,\n walletSOL,\n network,\n solanaInfo,\n ]);\n\n useEffect(() => {\n if (isConnected && linkedAccount) {\n if (connectedRef.current) {\n return;\n }\n connectedRef.current = true;\n track(TrackerEventName.socialLoginSuccess, {\n type: linkedAccount.type,\n address: linkedAccount.address,\n });\n }\n }, [isConnected, linkedAccount, connectedRef]);\n\n const value = useMemo(\n () => ({\n connect,\n walletEVM,\n walletSOL,\n isConnected,\n disconnect,\n switchChain,\n linkedAccount,\n exportWallet,\n createEvmWallet,\n createSolanaWallet,\n }),\n [\n connect,\n walletEVM,\n walletSOL,\n isConnected,\n disconnect,\n switchChain,\n linkedAccount,\n exportWallet,\n createEvmWallet,\n createSolanaWallet,\n ],\n );\n\n return (\n <PrivyWalletContext.Provider value={value}>\n {children}\n </PrivyWalletContext.Provider>\n );\n};\n\nexport function usePrivyWallet() {\n const context = useContext(PrivyWalletContext);\n if (!context) {\n throw new Error(\"usePrivyWallet must be used within a PrivyWalletProvider\");\n }\n return context;\n}\n","// stores/solanaWalletStore.ts\nimport { WalletAdapterNetwork, WalletName } from \"@solana/wallet-adapter-base\";\nimport { create } from \"zustand\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { Network, SolanaChainsMap } from \"../types\";\n\ninterface WalletAccount {\n address: string;\n}\n\ninterface WalletChain {\n id: number;\n namespace: ChainNamespace;\n}\n\ninterface WalletProvider {\n rpcUrl: string | null;\n network: WalletAdapterNetwork;\n signMessage: any;\n signTransaction: any;\n sendTransaction: any;\n}\n\ninterface Wallet {\n label: string;\n icon: string;\n provider: WalletProvider;\n accounts: WalletAccount[];\n chains: WalletChain[];\n chain: WalletChain;\n}\n\ninterface WalletMethods {\n select: (walletName: WalletName) => void;\n connectSolana: () => Promise<void>;\n walletSolana: any;\n publicKey: any;\n signMessage: any;\n signTransaction: any;\n sendTransaction: any;\n disconnectSolana: () => Promise<void>;\n network: Network;\n solanaInfo: any;\n}\n\ninterface SolanaWalletState {\n // 状态\n wallet: Wallet | null;\n isConnecting: boolean;\n error: Error | null;\n isManual: boolean;\n walletMethods: WalletMethods | null;\n pendingWalletName: string | null;\n\n // 方法\n connect: (walletName: string) => Promise<Wallet>;\n disconnect: () => Promise<void>;\n setWallet: (wallet: Wallet | null) => void;\n setError: (error: Error | null) => void;\n setIsManual: (isManual: boolean) => void;\n setWalletMethods: (methods: WalletMethods) => void;\n setPendingWalletName: (name: string | null) => void;\n}\n\nexport const useSolanaWalletStore = create<SolanaWalletState>((set, get) => ({\n wallet: null,\n isConnecting: false,\n error: null,\n isManual: false,\n walletMethods: null,\n pendingWalletName: null,\n\n connect: async (walletName: string) => {\n const { setIsManual, walletMethods } = get();\n\n if (!walletMethods) {\n throw new Error(\"Wallet methods not initialized\");\n }\n\n setIsManual(true);\n set({ pendingWalletName: walletName });\n\n try {\n set({ isConnecting: true, error: null });\n\n const { walletSolana, select } = walletMethods;\n\n select(walletName as WalletName);\n await new Promise<void>((resolve) => {\n const checkWallet = () => {\n const currentWallet = get().walletMethods?.walletSolana;\n console.log(\"currentWallet\", currentWallet);\n if (currentWallet) {\n resolve();\n } else {\n setTimeout(checkWallet, 500);\n }\n };\n checkWallet();\n });\n\n const updatedWalletMethods = get().walletMethods;\n if (!updatedWalletMethods) {\n throw new Error(\"Wallet methods not initialized\");\n }\n\n if (!updatedWalletMethods.publicKey) {\n await updatedWalletMethods.connectSolana();\n }\n\n const lastestWalletMethods = get().walletMethods;\n if (!lastestWalletMethods) {\n throw new Error(\"Wallet methods not initialized\");\n }\n if (!lastestWalletMethods.publicKey) {\n throw new Error(\"Wallet not connected\");\n }\n\n const wallet: Wallet = {\n label: updatedWalletMethods.walletSolana.adapter.name,\n icon: \"\",\n provider: {\n rpcUrl: lastestWalletMethods.solanaInfo?.rpcUrl ?? null,\n network:\n lastestWalletMethods.solanaInfo?.network ??\n WalletAdapterNetwork.Devnet,\n signMessage: lastestWalletMethods.signMessage,\n signTransaction: lastestWalletMethods.signTransaction,\n sendTransaction: lastestWalletMethods.sendTransaction,\n },\n accounts: [\n {\n address: lastestWalletMethods.publicKey.toBase58(),\n },\n ],\n chains: [\n {\n id: SolanaChainsMap.get(lastestWalletMethods.network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n chain: {\n id: SolanaChainsMap.get(lastestWalletMethods.network)!,\n namespace: ChainNamespace.solana,\n },\n };\n\n set({\n wallet,\n isConnecting: false,\n isManual: false,\n pendingWalletName: null,\n });\n\n return wallet;\n } catch (error) {\n set({\n error: error as Error,\n isConnecting: false,\n isManual: false,\n pendingWalletName: null,\n });\n throw error;\n }\n },\n\n disconnect: async () => {\n const { walletMethods } = get();\n\n if (!walletMethods) {\n throw new Error(\"Wallet methods not initialized\");\n }\n\n try {\n await walletMethods.disconnectSolana();\n set({ wallet: null, error: null });\n } catch (error) {\n set({ error: error as Error });\n throw error;\n }\n },\n\n setWallet: (wallet: Wallet | null) => set({ wallet }),\n setError: (error: Error | null) => set({ error }),\n setIsManual: (isManual: boolean) => set({ isManual }),\n setWalletMethods: (methods: WalletMethods) => set({ walletMethods: methods }),\n setPendingWalletName: (name: string | null) =>\n set({ pendingWalletName: name }),\n}));\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { WalletAdapterNetwork, WalletName } from \"@solana/wallet-adapter-base\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useStorageLedgerAddress } from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useSolanaWalletStore } from \"../../stores/solanaWalletStore\";\nimport { SolanaChainsMap } from \"../../types\";\n\ninterface SolanaWalletContextValue {\n wallets: any[];\n connectedChain: { id: number; namespace: ChainNamespace } | null;\n connect: (walletName: string) => Promise<any>;\n wallet: any;\n disconnect: () => void;\n isConnected: boolean;\n}\n\nconst defaultUseSolanaWallet = {\n wallets: [],\n select: () => Promise.resolve(),\n connect: () => Promise.resolve(),\n wallet: null,\n publicKey: null,\n signMessage: () => Promise.resolve(),\n signTransaction: () => Promise.resolve(),\n sendTransaction: () => Promise.resolve(),\n disconnect: () => Promise.resolve(),\n};\n\nconst SolanaWalletContext = createContext<SolanaWalletContextValue | null>(\n null,\n);\n\nexport const SolanaWalletProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const { setLedgerAddress } = useStorageLedgerAddress();\n const { network, solanaInfo, connectorWalletType } =\n useWalletConnectorPrivy();\n\n const {\n wallets,\n select,\n connect: connectSolana,\n wallet: walletSolana,\n publicKey,\n signMessage,\n signTransaction,\n sendTransaction,\n disconnect: disconnectSolana,\n } = connectorWalletType.disableSolana ? defaultUseSolanaWallet : useWallet();\n\n const {\n wallet,\n connect,\n disconnect: disconnectWallet,\n setWallet,\n setWalletMethods,\n isManual,\n } = useSolanaWalletStore();\n\n useEffect(() => {\n if (!walletSolana || isManual) return;\n\n if (!publicKey) {\n return;\n }\n\n const newWallet = {\n label: walletSolana.adapter.name,\n icon: \"\",\n provider: {\n rpcUrl: solanaInfo?.rpcUrl ?? null,\n network: solanaInfo?.network ?? WalletAdapterNetwork.Devnet,\n signMessage,\n signTransaction,\n sendTransaction,\n },\n accounts: [\n {\n address: publicKey.toBase58(),\n },\n ],\n chains: [\n {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n chain: {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n },\n };\n\n if (walletSolana.adapter.name === \"Ledger\") {\n setLedgerAddress(publicKey.toBase58());\n }\n\n setWallet(newWallet);\n }, [\n publicKey,\n walletSolana,\n signMessage,\n signTransaction,\n sendTransaction,\n solanaInfo,\n isManual,\n ]);\n\n useEffect(() => {\n setWalletMethods({\n select,\n connectSolana,\n walletSolana,\n publicKey,\n signMessage,\n signTransaction,\n sendTransaction,\n disconnectSolana,\n network,\n solanaInfo,\n });\n }, [\n select,\n connectSolana,\n walletSolana,\n publicKey,\n signMessage,\n signTransaction,\n sendTransaction,\n disconnectSolana,\n network,\n solanaInfo,\n ]);\n\n const value = useMemo(\n () => ({\n wallets,\n connectedChain: publicKey\n ? {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n }\n : null,\n connect,\n wallet,\n disconnect: disconnectWallet,\n isConnected: !!publicKey,\n }),\n [wallets, publicKey, wallet, network],\n );\n\n return (\n <SolanaWalletContext.Provider value={value}>\n {children}\n </SolanaWalletContext.Provider>\n );\n};\n\nexport function useSolanaWallet() {\n const context = useContext(SolanaWalletContext);\n if (!context) {\n throw new Error(\n \"useSolanaWallet must be used within a SolanaWalletProvider\",\n );\n }\n return context;\n}\n","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n Connector,\n useAccount,\n useConnect,\n useDisconnect,\n useSwitchChain,\n} from \"wagmi\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\n\ninterface WagmiWalletContextValue {\n connectors: Connector[];\n connect: (args: any) => void;\n wallet: any;\n connectedChain: { id: number; namespace: ChainNamespace } | null;\n setChain: (chainId: number) => Promise<any>;\n disconnect: () => void;\n isConnected: boolean;\n}\n\nconst WagmiWalletContext = createContext<WagmiWalletContextValue | null>(null);\n\nexport const WagmiWalletProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const { connectorWalletType } = useWalletConnectorPrivy();\n const [wallet, setWallet] = useState<undefined | any>(undefined);\n const { connect, connectors: wagmiConnectors } =\n connectorWalletType.disableWagmi\n ? { connect: () => Promise.resolve(), connectors: [] }\n : useConnect();\n const { disconnect } = connectorWalletType.disableWagmi\n ? { disconnect: () => Promise.resolve() }\n : useDisconnect();\n const { connector, isConnected, address, chainId } =\n connectorWalletType.disableWagmi\n ? { connector: null, isConnected: false, address: null, chainId: null }\n : useAccount();\n const { switchChain } = connectorWalletType.disableWagmi\n ? { switchChain: () => Promise.resolve() }\n : useSwitchChain();\n\n const connectedChain = useMemo(() => {\n if (chainId) {\n return {\n id: chainId,\n namespace: ChainNamespace.evm,\n };\n }\n return null;\n }, [chainId]);\n\n const setChain = useCallback(\n (chainId: number) => {\n return new Promise((resolve, reject) => {\n switchChain(\n { chainId },\n {\n onSuccess: () => resolve(true),\n onError: (e) => {\n console.log(\"-- switch chain error\", e);\n return reject(e);\n },\n },\n );\n });\n },\n [switchChain],\n );\n\n useEffect(() => {\n if (!connector || !isConnected) {\n setWallet(undefined);\n return;\n }\n connector.getProvider?.().then((provider) => {\n setWallet({\n label: connector.name,\n icon: \"\",\n provider: provider,\n accounts: [\n {\n address: address,\n },\n ],\n chains: [\n {\n id: chainId,\n namespace: ChainNamespace.evm,\n },\n ],\n chain: connectedChain,\n });\n });\n }, [connector, chainId, isConnected, address, connectedChain]);\n\n const connectors = useMemo(() => {\n return wagmiConnectors\n .filter((connector: any) => connector.id !== \"injected\")\n .sort((a: any, b: any) =>\n a.type === \"injected\" ? -1 : 1,\n ) as Connector[];\n }, [wagmiConnectors]);\n\n const value = useMemo(\n () => ({\n connectors,\n connect,\n wallet,\n connectedChain,\n setChain,\n disconnect,\n isConnected,\n }),\n [\n connectors,\n connect,\n wallet,\n connectedChain,\n setChain,\n disconnect,\n isConnected,\n ],\n );\n\n return (\n <WagmiWalletContext.Provider value={value}>\n {children}\n </WagmiWalletContext.Provider>\n );\n};\n\nexport function useWagmiWallet() {\n const context = useContext(WagmiWalletContext);\n if (!context) {\n throw new Error(\"useWagmiWallet must be used within a WagmiWalletProvider\");\n }\n return context;\n}\n","import React, { FC, SVGProps } from \"react\";\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\nexport const MoreIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.00521 6.66797C8.74161 6.66797 9.33854 7.26464 9.33854 8.0013C9.33854 8.73797 8.74161 9.33464 8.00521 9.33464C7.26881 9.33464 6.67188 8.73797 6.67188 8.0013C6.67188 7.26464 7.26881 6.66797 8.00521 6.66797Z\" />\n <path d=\"M3.33333 6.66797C4.06973 6.66797 4.66667 7.26464 4.66667 8.0013C4.66667 8.73797 4.06973 9.33464 3.33333 9.33464C2.59693 9.33464 2 8.73797 2 8.0013C2 7.26464 2.59693 6.66797 3.33333 6.66797Z\" />\n <path d=\"M12.6666 6.66797C13.403 6.66797 14 7.26464 14 8.0013C14 8.73797 13.403 9.33464 12.6666 9.33464C11.9302 9.33464 11.3333 8.73797 11.3333 8.0013C11.3333 7.26464 11.9302 6.66797 12.6666 6.66797Z\" />\n </svg>\n);\nexport const DisconnectIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n {...props}\n >\n <g id=\"box-arrow-right\">\n <path\n id=\"Vector\"\n d=\"M1.99365 4.66056C1.99365 3.1879 3.18759 1.9939 4.66032 1.9939H7.32698C8.79965 1.9939 9.99365 3.1879 9.99365 4.66056C9.99365 5.02856 9.69498 5.32723 9.32698 5.32723C8.95898 5.32723 8.66032 5.02856 8.66032 4.66056C8.66032 3.92389 8.06365 3.32723 7.32698 3.32723H4.66032C3.92392 3.32723 3.32699 3.92389 3.32699 4.66056V11.3272C3.32699 12.0639 3.92392 12.6606 4.66032 12.6606H7.32698C8.06365 12.6606 8.66032 12.0639 8.66032 11.3272C8.66032 10.9592 8.95898 10.6606 9.32698 10.6606C9.69498 10.6606 9.99365 10.9592 9.99365 11.3272C9.99365 12.7999 8.79965 13.9939 7.32698 13.9939H4.66032C3.18759 13.9939 1.99365 12.7999 1.99365 11.3272V4.66056ZM6.66032 7.99389C6.66032 7.62589 6.95898 7.32722 7.32698 7.32722H12.369L11.0563 5.99389L11.9937 5.05656L14.473 7.51456C14.733 7.77523 14.733 8.21255 14.473 8.47322L11.9937 10.9312L11.0563 9.99389L12.369 8.66056H7.32698C6.95898 8.66056 6.66032 8.36189 6.66032 7.99389Z\"\n />\n </g>\n </svg>\n);\n\nexport const CloseIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g id=\"x-square-fill\">\n <path\n id=\"Vector\"\n d=\"M5.83834 2.44141C3.9975 2.44141 2.505 3.93391 2.505 5.77474V14.1081C2.505 15.9489 3.9975 17.4414 5.83834 17.4414H14.1717C16.0125 17.4414 17.505 15.9489 17.505 14.1081V5.77474C17.505 3.93391 16.0125 2.44141 14.1717 2.44141H5.83834ZM7.505 6.60807C7.71834 6.60807 7.94083 6.67974 8.10417 6.84224L10.005 8.74307L11.9058 6.84224C12.0683 6.67974 12.2917 6.60807 12.505 6.60807C12.7183 6.60807 12.9408 6.67974 13.1042 6.84224C13.4292 7.16808 13.4292 7.71473 13.1042 8.04057L11.2033 9.94141L13.1042 11.8422C13.4292 12.1681 13.4292 12.7147 13.1042 13.0406C12.7783 13.3656 12.2317 13.3656 11.9058 13.0406L10.005 11.1397L8.10417 13.0406C7.77833 13.3656 7.23168 13.3656 6.90584 13.0406C6.58084 12.7147 6.58084 12.1681 6.90584 11.8422L8.80668 9.94141L6.90584 8.04057C6.58084 7.71473 6.58084 7.16808 6.90584 6.84224C7.06834 6.67974 7.29167 6.60807 7.505 6.60807Z\"\n />\n </g>\n </svg>\n);\n\nexport const ArrowRightIcon: FC<IconProps> = ({ size, ...props }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 14 14\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M3.50696 6.9958C3.50696 6.6738 3.76788 6.41305 4.08971 6.41305C4.36842 6.41305 7.62762 6.41305 8.49679 6.41305L6.76662 4.6648L7.58621 3.84521L10.336 6.57697C10.4504 6.69072 10.507 6.84355 10.507 6.99639C10.507 7.14864 10.4498 7.30089 10.336 7.41464L7.58621 10.1464L6.76662 9.3268L8.49679 7.57854C7.62762 7.57854 4.36842 7.57854 4.08971 7.57854C3.76788 7.57854 3.50696 7.3178 3.50696 6.9958Z\" />\n </svg>\n);\n\nexport const ArrowRightLinearGradientIcon: FC<IconProps> = ({\n size,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n >\n <path\n d=\"M5.01001 9.994C5.01001 9.534 5.38276 9.1615 5.84251 9.1615C6.24068 9.1615 10.8967 9.1615 12.1383 9.1615L9.66667 6.664L10.8375 5.49316L14.7658 9.39568C14.9292 9.55818 15.01 9.7765 15.01 9.99484C15.01 10.2123 14.9283 10.4298 14.7658 10.5923L10.8375 14.4948L9.66667 13.324L12.1383 10.8265C10.8967 10.8265 6.24068 10.8265 5.84251 10.8265C5.38276 10.8265 5.01001 10.454 5.01001 9.994Z\"\n fill=\"url(#paint0_linear_2269_12077)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_2269_12077\"\n x1=\"15.01\"\n y1=\"9.994\"\n x2=\"5.01001\"\n y2=\"9.994\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n cn,\n Divider,\n Flex,\n Grid,\n modal,\n SheetContent,\n SheetHeader,\n SimpleSheet,\n Text,\n useModal,\n} from \"@orderly.network/ui\";\n\nexport const PwaDialog = modal.create((props) => {\n const { visible, hide, resolve, reject, onOpenChange } = useModal();\n const [domain, setDomain] = useState(\"\");\n const { t } = useTranslation();\n\n useEffect(() => {\n setDomain(window.location.hostname);\n }, []);\n\n return (\n <SimpleSheet open={visible} onOpenChange={onOpenChange}>\n <SheetHeader>\n <Text className=\"oui-text-base-contrast-80 oui-text \">\n {t(\"connector.privy.pwa.sheetTitle\")}\n </Text>\n </SheetHeader>\n <Flex direction=\"column\" gap={3} className=\"oui-w-full\">\n <Text className=\"oui-text-base-contrast-80 oui-text \">\n {t(\"connector.privy.pwa.description\")}\n </Text>\n <Flex direction=\"column\" gap={4} className=\"oui-w-full\">\n <StepItem\n index={1}\n title={t(\"connector.privy.pwa.step1\")}\n content={\n <Flex className=\"oui-w-full oui-bg-dark-8\">\n <Flex\n className=\"oui-bg-black/[0.08] oui-p-2 oui-h-[52px] oui-rounded-[44px] oui-w-full oui-px-4 oui-relative\"\n itemAlign={\"center\"}\n justify={\"center\"}\n >\n <Text className=\"oui-text-black/[0.88] oui-text-[18px] oui-leading-[36px] oui-flex-1 oui-text-center oui-whitespace-nowrap\">\n {domain}\n </Text>\n <ShareIcon className=\"oui-absolute oui-right-4 oui-top-1/2 oui-translate-y-[-50%]\" />\n </Flex>\n </Flex>\n }\n />\n <StepItem\n index={2}\n title={t(\"connector.privy.pwa.step2\")}\n classNames={{\n content: \"oui-bg-[#e9e9eb]\",\n }}\n content={\n <Flex\n className=\"oui-w-full oui-bg-base-contrast oui-rounded-[12px]\"\n direction=\"column\"\n >\n <Flex\n className=\"oui-w-full oui-px-4 oui-py-3\"\n justify={\"start\"}\n itemAlign={\"center\"}\n >\n <Text className=\"oui-text-black/[0.2] oui-text-[18px]\">\n {t(\"connector.privy.pwa.findOnPage\")}\n </Text>\n </Flex>\n <Divider className=\"oui-bg-black/[0.15] oui-w-full\" />\n <Flex\n className=\"oui-w-full oui-px-4 oui-py-3\"\n justify={\"between\"}\n itemAlign={\"center\"}\n >\n <Text className=\"oui-text-black/[0.88] oui-text-[18px] oui-col-span-2 oui-whitespace-nowrap\">\n {t(\"connector.privy.pwa.addToHomeScreen\")}\n </Text>\n <AddIcon />\n </Flex>\n </Flex>\n }\n />\n </Flex>\n </Flex>\n </SimpleSheet>\n );\n});\n\nconst ShareIcon = (props: { className?: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n className={props.className}\n >\n <path\n d=\"M5 23.3333V13.6667C5 12.1939 6.15127 11 7.57143 11H10.6744V12.7778H7.57143C7.09804 12.7778 6.71429 13.1757 6.71429 13.6667V23.3333C6.71429 23.8243 7.09804 24.2222 7.57143 24.2222H20.4286C20.902 24.2222 21.2857 23.8243 21.2857 23.3333V13.6667C21.2857 13.1757 20.902 12.7778 20.4286 12.7778H17.555V11H20.4286C21.8487 11 23 12.1939 23 13.6667V23.3333C23 24.8061 21.8487 26 20.4286 26H7.57143C6.15127 26 5 24.8061 5 23.3333Z\"\n fill=\"black\"\n fillOpacity=\"0.48\"\n />\n <path\n d=\"M13.3759 2.25933C13.7206 1.91356 14.2794 1.91356 14.6241 2.25933L20.2416 7.89432C20.586 8.24011 20.5862 8.80066 20.2416 9.14634C19.897 9.49203 19.3382 9.49185 18.9935 9.14634L14.8827 5.02278V19H13.1173V5.02278L9.00654 9.14634C8.66182 9.49185 8.10301 9.49203 7.7584 9.14634C7.41378 8.80066 7.41396 8.24011 7.7584 7.89432L13.3759 2.25933Z\"\n fill=\"black\"\n fillOpacity=\"0.48\"\n />\n </svg>\n );\n};\n\nconst AddIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M7.00598 3.92969H17.006C18.6627 3.92969 20.006 5.27297 20.006 6.92969V16.9297C20.006 18.5864 18.6627 19.9297 17.006 19.9297H7.00598C5.34927 19.9297 4.00598 18.5864 4.00598 16.9297V6.92969C4.00598 5.27297 5.34927 3.92969 7.00598 3.92969Z\"\n stroke=\"black\"\n strokeOpacity=\"0.88\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M8 12L16 12\"\n stroke=\"black\"\n strokeOpacity=\"0.88\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M12 8L12 16\"\n stroke=\"black\"\n strokeOpacity=\"0.88\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n};\n\nconst StepItem = (props: {\n index: number;\n title: string;\n content: React.ReactNode;\n classNames?: {\n content?: string;\n };\n}) => {\n return (\n <Flex\n className=\" oui-rounded-[12px] oui-w-full oui-overflow-hidden\"\n direction=\"column\"\n >\n <Flex className=\"oui-bg-base-4 oui-w-full oui-px-3 oui-py-3 oui-gap-[6px]\">\n <Text className=\"oui-text-base-contrast-80 oui-text-xs oui-w-[18px] oui-h-[18px] oui-rounded-[100%] oui-bg-[linear-gradient(270deg,#59B0FE_0%,#26FEFE_100%)] oui-text-center oui-text-black \">\n {props.index}\n </Text>\n <Text className=\"oui-text-base-contrast-80 oui-text-xs\">\n {props.title}\n </Text>\n </Flex>\n <Flex\n className={cn(\n \"oui-bg-base-contrast oui-h-[120px] oui-w-full oui-px-6\",\n props.classNames?.content,\n )}\n justify={\"center\"}\n itemAlign={\"center\"}\n >\n {props.content}\n </Flex>\n </Flex>\n );\n};\n","import { AbstractChains, SolanaChains } from \"@orderly.network/types\";\nimport { WalletType } from \"./types\";\n\nexport const OrderlyOSS = \"https://oss.orderly.network\";\nexport const PrivyConnectorImagePath = `${OrderlyOSS}/static/sdk/privy`;\nexport const EVMWalletImage = `${OrderlyOSS}/static/sdk/evm_wallet`;\n\n// evm wallets icon map\nconst WALLET_ICONS: Record<string, string> = {\n metamask: \"https://oss.orderly.network/static/sdk/evm_wallets/metamask.png\",\n walletconnect:\n \"https://oss.orderly.network/static/sdk/evm_wallets/walletConnect.png\",\n binance: \"https://oss.orderly.network/static/sdk/evm_wallets/binance.png\",\n ledger: \"https://oss.orderly.network/static/sdk/evm_wallets/ledger.png\",\n coinbase: \"https://oss.orderly.network/static/sdk/evm_wallets/coinbase.png\",\n magic: \"https://oss.orderly.network/static/sdk/evm_wallets/magic.png\",\n trezor: \"https://oss.orderly.network/static/sdk/evm_wallets/trezor.png\",\n exodus: \"https://oss.orderly.network/static/sdk/evm_wallets/exodus.png\",\n frame: \"https://oss.orderly.network/static/sdk/evm_wallets/frame.png\",\n rabby: \"https://oss.orderly.network/static/sdk/evm_wallets/rabby.png\",\n};\nexport const getWalletIcon = (type: string): string | undefined => {\n return WALLET_ICONS[type.toLowerCase()];\n};\n\nexport const getChainType = (chainId: number): WalletType => {\n if (AbstractChains.has(chainId)) {\n return WalletType.ABSTRACT;\n }\n if (SolanaChains.has(chainId)) {\n return WalletType.SOL;\n }\n return WalletType.EVM;\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useLocalStorage,\n useStorageChain,\n useTrack,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport {\n AbstractChains,\n ChainNamespace,\n ConnectorKey,\n SolanaChains,\n defaultMainnetChains,\n defaultTestnetChains,\n TrackerEventName,\n} from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { useAbstractWallet } from \"../providers/abstractWallet/abstractWalletProvider\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { useSolanaWallet } from \"../providers/solana/solanaWalletProvider\";\nimport { useWagmiWallet } from \"../providers/wagmi/wagmiWalletProvider\";\nimport { ConnectProps, WalletConnectType, WalletType } from \"../types\";\nimport { getChainType } from \"../util\";\n\nexport function useWallet() {\n const { track } = useTrack();\n const { walletChainTypeConfig, initChains, network } =\n useWalletConnectorPrivy();\n const [connectorKey, setConnectorKey] = useLocalStorage(ConnectorKey, \"\");\n const {\n disconnect: disconnectEVM,\n connect: connectEVM,\n wallet: walletEVM,\n connectedChain: connectedChainEvm,\n setChain: setChainEvm,\n isConnected: isConnectedEVM,\n } = useWagmiWallet();\n const {\n disconnect: disconnectSOL,\n connect: connectSOL,\n wallet: walletSOL,\n isConnected: isConnectedSOL,\n connectedChain: connectedChainSOL,\n } = useSolanaWallet();\n const {\n disconnect: disconnectPrivy,\n connect: connectPrivy,\n walletSOL: privyWalletSOL,\n walletEVM: privyWalletEVM,\n isConnected: isConnectedPrivy,\n switchChain: setChainPrivy,\n } = usePrivyWallet();\n\n const {\n connect: connectAbstract,\n wallet: walletAbstract,\n connectedChain: connectedChainAbstract,\n isConnected: isConnectedAbstract,\n disconnect: disconnectAbstract,\n } = useAbstractWallet();\n const [wallet, setWallet] = useState<WalletState | null>(null);\n const [namespace, setNamespace] = useState<ChainNamespace | null>(null);\n const [walletType, setWalletType] = useState<WalletConnectType | null>(null);\n const { storageChain, setStorageChain } = useStorageChain();\n const { setOpenConnectDrawer, targetWalletType, setTargetWalletType } =\n useWalletConnectorPrivy();\n\n const supportedEvmChainIds = useMemo(() => {\n const ids = initChains\n ?.map((c) => c.id)\n .filter((id) => !SolanaChains.has(id) && !AbstractChains.has(id));\n return new Set<number>(ids ?? []);\n }, [initChains]);\n\n const preferredEvmChainId = useMemo(() => {\n const preferredOrder =\n network === \"mainnet\" ? defaultMainnetChains : defaultTestnetChains;\n return preferredOrder\n .map((c) => c.id)\n .find((id) => supportedEvmChainIds.has(id));\n }, [network, supportedEvmChainIds]);\n\n const defaultEvmChainId = useMemo(() => {\n for (const chain of initChains ?? []) {\n if (!SolanaChains.has(chain.id) && !AbstractChains.has(chain.id)) {\n return chain.id;\n }\n }\n return undefined;\n }, [initChains]);\n\n const fallbackEvmChainId = preferredEvmChainId ?? defaultEvmChainId;\n\n const isManual = useRef<boolean>(false);\n\n const connect = (params: ConnectProps) => {\n setTargetWalletType(undefined);\n try {\n if (params.walletType === WalletConnectType.EVM) {\n setConnectorKey(WalletConnectType.EVM);\n connectEVM({ connector: params.connector! });\n }\n if (params.walletType === WalletConnectType.SOL) {\n setConnectorKey(WalletConnectType.SOL);\n connectSOL(params.walletAdapter!.name).then();\n }\n if (params.walletType === WalletConnectType.PRIVY) {\n setConnectorKey(WalletConnectType.PRIVY);\n connectPrivy();\n }\n if (params.walletType === WalletConnectType.ABSTRACT) {\n setConnectorKey(WalletConnectType.ABSTRACT);\n connectAbstract();\n }\n } catch (e) {\n console.log(\"-- e\", e);\n }\n };\n\n const isPrivy = useMemo(() => {\n if (connectorKey === WalletConnectType.PRIVY) {\n return true;\n }\n return false;\n }, [connectorKey]);\n\n const [connectedChain, setConnectedChain] = useState<any>();\n\n const setChain = async (chain: {\n chainId: number | string;\n }): Promise<boolean | undefined> => {\n const chainType = getChainType(parseInt(chain.chainId as string));\n\n if (isPrivy) {\n if (chainType === WalletType.EVM) {\n if (!walletChainTypeConfig.hasEvm) {\n return Promise.reject(new Error(\"No evm wallet found\"));\n }\n isManual.current = true;\n return setChainPrivy(parseInt(chain.chainId as string))\n .then((res) => {\n track(TrackerEventName.switchNetworkSuccess, {\n from_chain: storageChain?.chainId,\n to_chain: chain.chainId,\n });\n setStorageChain(parseInt(chain.chainId as string));\n\n return Promise.resolve(true);\n })\n .catch((e) => {\n console.log(\"xxxx switch network failed\", {\n error: e,\n });\n return Promise.reject(e);\n });\n }\n // current privy not support abstract chain\n if (chainType === WalletType.ABSTRACT) {\n setOpenConnectDrawer(true);\n setTargetWalletType(WalletType.ABSTRACT);\n }\n\n if (chainType === WalletType.SOL) {\n isManual.current = true;\n if (!walletChainTypeConfig.hasSol) {\n return Promise.reject(new Error(\"No solana wallet found\"));\n }\n if (privyWalletSOL) {\n setStorageChain(parseInt(chain.chainId as string));\n return Promise.resolve(true);\n } else {\n setOpenConnectDrawer(true);\n setTargetWalletType(WalletType.SOL);\n return Promise.reject(new Error(\"No solana wallet found\"));\n }\n }\n } else {\n // if current namespace is evm, switch chain\n if (chainType === WalletType.EVM) {\n if (isConnectedEVM && walletEVM) {\n await setChainEvm(parseInt(chain.chainId as string));\n setStorageChain(parseInt(chain.chainId as string));\n track(TrackerEventName.switchNetworkSuccess, {\n from_chain: storageChain?.chainId,\n to_chain: chain.chainId,\n });\n } else {\n setOpenConnectDrawer(true);\n setTargetWalletType(WalletType.EVM);\n return Promise.resolve(true);\n }\n\n return Promise.resolve(true);\n }\n if (chainType === WalletType.SOL) {\n if (isConnectedSOL && walletSOL) {\n setStorageChain(parseInt(chain.chainId as string));\n return Promise.resolve(true);\n } else {\n setOpenConnectDrawer(true);\n setTargetWalletType(WalletType.SOL);\n return Promise.resolve(true);\n }\n }\n if (chainType === WalletType.ABSTRACT) {\n if (isConnectedAbstract && walletAbstract) {\n setStorageChain(parseInt(chain.chainId as string));\n return Promise.resolve(true);\n } else {\n setOpenConnectDrawer(true);\n // TODO need send abstract type\n setTargetWalletType(WalletType.ABSTRACT);\n return Promise.reject(new Error(\"No abstract wallet found\"));\n }\n }\n }\n };\n\n const switchWallet = (walletType: WalletType) => {\n const fromWallet = wallet?.accounts[0].address;\n let toWallet: string | undefined;\n if (isPrivy) {\n switch (walletType) {\n case WalletType.EVM:\n if (privyWalletEVM) {\n const desired = privyWalletEVM.chain.id;\n const nextChainId = supportedEvmChainIds.has(desired)\n ? desired\n : fallbackEvmChainId;\n if (typeof nextChainId === \"number\") {\n setStorageChain(nextChainId);\n }\n toWallet = privyWalletEVM.accounts[0].address;\n }\n break;\n case WalletType.SOL:\n if (privyWalletSOL) {\n setStorageChain(privyWalletSOL.chain.id);\n toWallet = privyWalletSOL.accounts[0].address;\n }\n break;\n case WalletType.ABSTRACT:\n // privy don't support abstract wallet\n break;\n }\n } else {\n switch (walletType) {\n case WalletType.EVM:\n if (walletEVM) {\n setStorageChain(walletEVM.chain.id);\n toWallet = walletEVM.accounts[0].address;\n }\n break;\n case WalletType.SOL:\n if (walletSOL) {\n setStorageChain(walletSOL.chain.id);\n toWallet = walletSOL.accounts[0].address;\n }\n break;\n case WalletType.ABSTRACT:\n if (walletAbstract) {\n setStorageChain(walletAbstract.chain!.id);\n toWallet = walletAbstract.accounts[0].address;\n }\n break;\n }\n }\n track(TrackerEventName.clickSwitchWallet, {\n fromWallet,\n toWallet,\n });\n };\n\n const disconnect = async (walletType: WalletConnectType) => {\n switch (walletType) {\n case WalletConnectType.PRIVY:\n return await disconnectPrivy();\n case WalletConnectType.EVM:\n return disconnectEVM();\n case WalletConnectType.SOL:\n return disconnectSOL();\n case WalletConnectType.ABSTRACT:\n return disconnectAbstract();\n }\n };\n\n const onDisconnect = (parmas: any): Promise<any> => {\n if (!walletType) {\n throw new Error(\"No wallet type found\");\n }\n return new Promise((resolve, reject) => {\n disconnect(walletType)\n .then(() => {\n resolve(true);\n })\n .catch((e) => {\n reject(e);\n });\n });\n };\n\n const setNullWalletStatus = () => {\n setWallet(null);\n setWalletType(null);\n setConnectedChain(null);\n setNamespace(null);\n };\n\n useEffect(() => {\n // check current connector and chain form localstorage\n if (connectorKey !== WalletConnectType.PRIVY) {\n return;\n }\n // console.log('xxxx connector privy', {\n // connectorKey,\n // storageChain,\n // privyWalletEVM,\n // privyWalletSOL\n // });\n\n if (storageChain?.namespace === ChainNamespace.evm) {\n if (AbstractChains.has(storageChain.chainId)) {\n return setNullWalletStatus();\n }\n if (privyWalletEVM) {\n setWallet(privyWalletEVM);\n setWalletType(WalletConnectType.PRIVY);\n setConnectedChain(privyWalletEVM.chain);\n setNamespace(ChainNamespace.evm);\n } else {\n setNullWalletStatus();\n }\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n if (privyWalletSOL) {\n setWallet(privyWalletSOL);\n setWalletType(WalletConnectType.PRIVY);\n setConnectedChain(privyWalletSOL.chain);\n setNamespace(ChainNamespace.solana);\n } else {\n setNullWalletStatus();\n }\n }\n }, [connectorKey, privyWalletEVM, privyWalletSOL, storageChain]);\n\n // Auto-open drawer when Privy is connected and Abstract chain is selected\n useEffect(() => {\n if (\n connectorKey === WalletConnectType.PRIVY &&\n isConnectedPrivy &&\n AbstractChains.has(storageChain.chainId)\n ) {\n setOpenConnectDrawer(true);\n }\n }, [connectorKey, isConnectedPrivy, storageChain]);\n\n useEffect(() => {\n if (connectorKey === WalletConnectType.PRIVY) {\n return;\n }\n // handle non-privy wallet connect\n // console.log(\"xxxx non-privy\", {\n // connectorKey,\n // storageChain,\n // walletEVM,\n // walletSOL,\n // walletAbstract,\n // connectedChainAbstract,\n // isConnectedAbstract,\n // });\n\n if (storageChain?.namespace === ChainNamespace.evm) {\n if (AbstractChains.has(storageChain.chainId)) {\n if (isConnectedAbstract && walletAbstract) {\n setWallet(walletAbstract);\n setWalletType(WalletConnectType.ABSTRACT);\n setConnectedChain(connectedChainAbstract);\n setNamespace(ChainNamespace.evm);\n } else {\n setNullWalletStatus();\n }\n } else {\n if (isConnectedEVM && walletEVM) {\n setWallet(walletEVM);\n setWalletType(WalletConnectType.EVM);\n setConnectedChain(connectedChainEvm);\n setNamespace(ChainNamespace.evm);\n } else {\n setNullWalletStatus();\n }\n }\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n if (isConnectedSOL && walletSOL) {\n setWallet(walletSOL);\n setWalletType(WalletConnectType.SOL);\n setConnectedChain(connectedChainSOL);\n setNamespace(ChainNamespace.solana);\n } else {\n setNullWalletStatus();\n }\n }\n }, [\n connectorKey,\n storageChain,\n walletEVM,\n walletSOL,\n isConnectedEVM,\n isConnectedSOL,\n isConnectedAbstract,\n walletAbstract,\n connectedChainAbstract,\n ]);\n\n return {\n connect,\n wallet,\n connectedChain,\n setChain,\n namespace,\n switchWallet,\n disconnect,\n onDisconnect,\n };\n}\n","import React from \"react\";\nimport { cn, useScreen } from \"@orderly.network/ui\";\nimport { PrivyConnectorImagePath } from \"../../util\";\n\nexport function AbstractConnectArea({ connect }: { connect: () => void }) {\n const { isMobile } = useScreen();\n return (\n <div>\n <div className=\"oui-mb-2 oui-text-sm oui-font-semibold oui-text-base-contrast-80\">\n Abstract\n </div>\n <div className=\"oui-grid oui-grid-cols-2 oui-gap-2\">\n <div\n className={cn(\n \" oui-flex oui-flex-1 oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-rounded-[6px] oui-px-2 oui-py-[11px]\",\n isMobile ? \"oui-bg-base-5\" : \"oui-bg-[#07080A]\",\n )}\n onClick={() => connect()}\n >\n <div className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center\">\n <img\n className={cn(\"oui-size-[12px]\")}\n src={`${PrivyConnectorImagePath}/abstract.png`}\n alt=\"abstract wallet\"\n />\n </div>\n <div className=\"oui-text-2xs oui-text-base-contrast\">Abstract</div>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Grid } from \"@orderly.network/ui\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\n\nconst RenderLoginMethodsDom = ({\n connect,\n loginMethods,\n}: {\n connect: (type: any) => void;\n loginMethods?: PrivyClientConfig[\"loginMethods\"];\n}) => {\n const { t } = useTranslation();\n const { isDesktop } = useScreen();\n const arr = [];\n if (loginMethods?.includes(\"email\")) {\n arr.push(\n <div\n className={cn(\n \"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-rounded-[6px] oui-border oui-border-base-contrast-12 oui-px-2 oui-py-[11px]\",\n \"oui-border-none oui-bg-[#333948]\",\n )}\n onClick={() => connect({ walletType: \"privy\", extraType: \"email\" })}\n >\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/email.svg\"\n className=\"oui-size-[18px]\"\n />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.email\")}\n </div>\n </div>,\n );\n }\n if (loginMethods?.includes(\"google\")) {\n arr.push(\n <div\n className={cn(\n \"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-rounded-[6px] oui-border oui-border-base-contrast-12 oui-px-2 oui-py-[11px]\",\n \"oui-border-none oui-bg-[#335FFC]\",\n )}\n onClick={() => connect({ walletType: \"privy\", extraType: \"google\" })}\n >\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/google.svg\"\n className=\"oui-size-[18px]\"\n />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.google\")}\n </div>\n </div>,\n );\n }\n if (loginMethods?.includes(\"twitter\")) {\n arr.push(\n <div\n className={cn(\n \"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-rounded-[6px] oui-border oui-border-base-contrast-12 oui-px-2 oui-py-[11px]\",\n \"oui-border-none oui-bg-[#07080A]\",\n )}\n onClick={() => connect({ walletType: \"privy\", extraType: \"twitter\" })}\n >\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/twitter.svg\"\n className=\"oui-size-[18px]\"\n />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.twitter\")}\n </div>\n </div>,\n );\n }\n if (loginMethods?.includes(\"telegram\")) {\n arr.push(\n <div\n className={cn(\n \"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-rounded-[6px] oui-border oui-border-base-contrast-12 oui-px-2 oui-py-[11px]\",\n \"oui-border-none oui-bg-[#3D79A9]\",\n )}\n onClick={() => connect({ walletType: \"privy\", extraType: \"telegram\" })}\n >\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.652 8.12916L15.0683 4.04929C15.6468 3.87358 16.1499 4.16929 15.9587 4.91069L13.8458 13.3962C13.6898 13.9961 13.2672 14.1461 12.6836 13.859L9.46384 11.8362L7.90929 13.109C7.73824 13.2547 7.59234 13.379 7.2603 13.379L7.4867 10.5891L13.4584 5.99923C13.72 5.80638 13.398 5.69495 13.0559 5.8878L5.68061 9.8434L2.50107 8.99914C1.81687 8.81058 1.80178 8.41201 2.652 8.12916Z\"\n fill=\"white\"\n />\n </svg>\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.telegram\")}\n </div>\n </div>,\n );\n }\n return arr.map((item, index) => {\n return <div key={index}>{item}</div>;\n });\n};\n\nconst PrivyConnectAreaMobile = ({\n connect,\n}: {\n connect: (type: any) => void;\n}) => {\n const { t } = useTranslation();\n const { isMobile, isDesktop } = useScreen();\n const { connectorWalletType, privyConfig } = useWalletConnectorPrivy();\n const loginMethods = privyConfig.loginMethods;\n return (\n <Flex direction=\"column\" className=\"oui-w-full\">\n <Grid cols={2} rows={2} className=\"oui-w-full\" gap={2}>\n <RenderLoginMethodsDom connect={connect} loginMethods={loginMethods} />\n </Grid>\n {(!connectorWalletType.disableWagmi ||\n !connectorWalletType.disableSolana) && (\n <div className=\"oui-mt-4 oui-h-px oui-w-full oui-bg-line md:oui-mt-5\"></div>\n )}\n </Flex>\n );\n};\n\nconst PrivyConnectAreaDesktop = ({\n connect,\n}: {\n connect: (type: any) => void;\n}) => {\n const { t } = useTranslation();\n const { connectorWalletType, privyConfig } = useWalletConnectorPrivy();\n const loginMethods = privyConfig.loginMethods;\n return (\n <Flex direction=\"column\" itemAlign={\"start\"} className=\"oui-w-full\">\n <Grid cols={1} gap={2} className=\"oui-w-full\">\n <RenderLoginMethodsDom connect={connect} loginMethods={loginMethods} />\n </Grid>\n {(!connectorWalletType.disableWagmi ||\n !connectorWalletType.disableSolana) && (\n <div className=\"oui-mt-4 oui-h-px oui-w-full oui-bg-line md:oui-mt-5\"></div>\n )}\n </Flex>\n );\n};\n\nexport function PrivyConnectArea({\n connect,\n}: {\n connect: (type: any) => void;\n}) {\n const { isDesktop } = useScreen();\n if (isDesktop) {\n return <PrivyConnectAreaDesktop connect={connect} />;\n }\n return <PrivyConnectAreaMobile connect={connect} />;\n}\n","import React, { useState } from \"react\";\nimport { WalletAdapter } from \"@solana/wallet-adapter-base\";\nimport { Connector } from \"wagmi\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ChainIcon,\n cn,\n Popover,\n SimpleDialog,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { getWalletIcon } from \"../util\";\n\nexport function RenderPrivyTypeIcon({\n type,\n size,\n black,\n}: {\n type: string;\n size: number;\n black?: boolean;\n}) {\n if (type === \"email\") {\n return (\n <img\n src={`https://oss.orderly.network/static/sdk/privy/email${\n black ? \"-black\" : \"\"\n }.svg`}\n width={size}\n />\n );\n }\n if (type === \"google_oauth\") {\n return (\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/google.svg\"\n width={size}\n />\n );\n }\n if (type === \"twitter_oauth\") {\n return (\n <img\n src={`https://oss.orderly.network/static/sdk/privy/twitter${\n black ? \"-black\" : \"\"\n }.svg`}\n width={size}\n />\n );\n }\n if (type === \"telegram\") {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.652 8.12916L15.0683 4.04929C15.6468 3.87358 16.1499 4.16929 15.9587 4.91069L13.8458 13.3962C13.6898 13.9961 13.2672 14.1461 12.6836 13.859L9.46384 11.8362L7.90929 13.109C7.73824 13.2547 7.59234 13.379 7.2603 13.379L7.4867 10.5891L13.4584 5.99923C13.72 5.80638 13.398 5.69495 13.0559 5.8878L5.68061 9.8434L2.50107 8.99914C1.81687 8.81058 1.80178 8.41201 2.652 8.12916Z\"\n fill={black ? \"black\" : \"white\"}\n />\n </svg>\n );\n }\n return (\n <img\n src={`https://oss.orderly.network/static/sdk/privy/email${\n black ? \"-black\" : \"\"\n }.svg`}\n width={size}\n />\n );\n}\nexport function RenderWalletIcon({\n connector,\n}: {\n connector: Connector | WalletAdapter;\n}) {\n const icon = connector.icon\n ? connector.icon\n : getWalletIcon((connector as Connector).type);\n return (\n <div className=\"oui-w-[18px] oui-h-[18px] oui-flex oui-items-center oui-justify-center\">\n <img\n className={cn(\n connector.icon\n ? \"oui-w-[12px] oui-h-[12px]\"\n : \"oui-w-[18px] oui-h-[18px]\",\n )}\n src={icon}\n alt={connector.name}\n />\n </div>\n );\n}\n\nexport function EVMChainPopover({ children }: { children: React.ReactNode }) {\n const { getChainsByNetwork } = useWalletConnectorPrivy();\n const [chains] = useState(getChainsByNetwork(\"mainnet\"));\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const [open, setOpen] = useState(false);\n\n if (isMobile) {\n return (\n <>\n <SimpleDialog\n open={open}\n size=\"xs\"\n onOpenChange={setOpen}\n classNames={{\n content: \"oui-p-4 oui-z-[99]\",\n overlay: \"oui-z-[99]\",\n }}\n title={t(\"connector.privy.supportedEvmChain\")}\n >\n <div className=\"oui-p-1 oui-grid oui-grid-cols-2 oui-gap-x-2 oui-gap-y-3 oui-text-2xs oui-text-base-contrast-54\">\n {chains.map((item, key) => (\n <div\n key={key}\n className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\"\n >\n <ChainIcon chainId={item.id} size=\"2xs\" />\n <div>{item.name}</div>\n </div>\n ))}\n </div>\n </SimpleDialog>\n <button onClick={() => setOpen(true)}>{children}</button>\n </>\n );\n }\n\n return (\n <Popover\n content={\n <div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n {t(\"connector.privy.supportedEvmChain\")}\n </div>\n <div className=\"oui-mt-3 oui-grid oui-grid-cols-3 oui-gap-x-2 oui-gap-y-3 oui-text-2xs oui-text-base-contrast-54\">\n {chains.map((item, key) => (\n <div\n key={key}\n className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\"\n >\n <ChainIcon chainId={item.id} size=\"2xs\" />\n <div>{item.name}</div>\n </div>\n ))}\n </div>\n </div>\n }\n arrow={true}\n contentProps={{\n side: \"bottom\",\n align: \"center\",\n className: \"oui-p-2 oui-z-[65]\",\n }}\n >\n <button>{children}</button>\n </Popover>\n );\n}\n","import React from \"react\";\nimport { WalletAdapter } from \"@solana/wallet-adapter-base\";\nimport { cn, useScreen } from \"@orderly.network/ui\";\nimport { useSolanaWallet } from \"../../providers/solana/solanaWalletProvider\";\nimport { RenderWalletIcon } from \"../common\";\n\nexport function SOLConnectArea({\n connect,\n}: {\n connect: (walletAdapter: WalletAdapter) => void;\n}) {\n const { wallets } = useSolanaWallet();\n const { isMobile } = useScreen();\n return (\n <div>\n <div className=\"oui-mb-2 oui-text-sm oui-font-semibold oui-text-base-contrast-80\">\n Solana\n </div>\n <div className=\"oui-grid oui-grid-cols-2 oui-gap-2\">\n {wallets.map((item, key) => (\n <div\n key={key}\n className={cn(\n \" oui-flex oui-flex-1 oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-rounded-[6px] oui-px-2 oui-py-[11px]\",\n isMobile ? \"oui-bg-base-5\" : \"oui-bg-[#07080A]\",\n )}\n onClick={() => connect(item.adapter)}\n >\n <RenderWalletIcon connector={item.adapter} />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {item.adapter.name}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { Connector } from \"wagmi\";\nimport { useScreen, cn } from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useWagmiWallet } from \"../../providers/wagmi/wagmiWalletProvider\";\nimport { RenderWalletIcon } from \"../common\";\n\nexport function EVMConnectArea({\n connect,\n}: {\n connect: (type: Connector) => void;\n}) {\n const { connectors } = useWagmiWallet();\n const { setOpenConnectDrawer } = useWalletConnectorPrivy();\n const { isMobile } = useScreen();\n const onConnect = (item: Connector) => {\n if (isMobile) {\n if (item.id === \"walletConnect\") {\n setOpenConnectDrawer(false);\n }\n }\n connect(item);\n };\n return (\n <div className=\"\">\n <div className=\"oui-mb-2 oui-text-sm oui-font-semibold oui-text-base-contrast-80\">\n EVM\n </div>\n <div className=\"oui-grid oui-grid-cols-2 oui-gap-2\">\n {connectors.map((item, key) => (\n <div\n key={key}\n className={cn(\n \" oui-flex oui-flex-1 oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-rounded-[6px] oui-px-2 oui-py-[11px]\",\n isMobile ? \"oui-bg-base-5\" : \"oui-bg-[#07080A]\",\n )}\n onClick={() => onConnect(item)}\n >\n <RenderWalletIcon connector={item} />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {item.name}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { useStorageChain } from \"@orderly.network/hooks\";\nimport { cn, Flex, ScrollArea } from \"@orderly.network/ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { ConnectProps } from \"../../types\";\nimport { getChainType } from \"../../util\";\nimport { AbstractConnectArea } from \"./abstractConnector\";\nimport { PrivyConnectArea } from \"./privyConnector\";\nimport { SOLConnectArea } from \"./solanaConnector\";\nimport { EVMConnectArea } from \"./wagmiConnector\";\n\nexport function RenderConnector() {\n const { connect } = useWallet();\n const {\n setOpenConnectDrawer,\n connectorWalletType,\n walletChainTypeConfig,\n targetWalletType,\n } = useWalletConnectorPrivy();\n const { storageChain } = useStorageChain();\n\n const selectedWalletType: WalletType | undefined = (() => {\n if (targetWalletType) return targetWalletType;\n if (!storageChain?.chainId) return undefined;\n try {\n return getChainType(parseInt(storageChain.chainId as string));\n } catch {\n return undefined;\n }\n })();\n\n const handleConnect = (params: ConnectProps) => {\n connect(params);\n if (params.walletType === WalletConnectType.PRIVY) {\n setOpenConnectDrawer(false);\n }\n };\n const renderPrivyConnectArea = () => {\n if (connectorWalletType.disablePrivy) {\n return null;\n }\n return (\n <PrivyConnectArea\n connect={(type) =>\n handleConnect({\n walletType: WalletConnectType.PRIVY,\n extraType: type,\n })\n }\n />\n );\n };\n const renderWagmiConnectArea = () => {\n if (connectorWalletType.disableWagmi) {\n return null;\n }\n if (!walletChainTypeConfig.hasEvm) {\n return null;\n }\n return (\n <EVMConnectArea\n connect={(connector) =>\n handleConnect({\n walletType: WalletConnectType.EVM,\n connector: connector,\n })\n }\n />\n );\n };\n const renderSolanaConnectArea = () => {\n if (connectorWalletType.disableSolana) {\n return null;\n }\n if (!walletChainTypeConfig.hasSol) {\n return null;\n }\n\n return (\n <SOLConnectArea\n connect={(walletAdapter) =>\n handleConnect({\n walletType: WalletConnectType.SOL,\n walletAdapter: walletAdapter,\n })\n }\n />\n );\n };\n const renderAbstractConnectArea = () => {\n if (connectorWalletType.disableAGW) {\n return null;\n }\n if (!walletChainTypeConfig.hasAbstract) {\n return null;\n }\n return (\n <AbstractConnectArea\n connect={() =>\n handleConnect({ walletType: WalletConnectType.ABSTRACT })\n }\n />\n );\n };\n\n const walletOrder = [\"evm\", \"sol\", \"abstract\"] as const;\n\n const typeToKey: Record<WalletType, (typeof walletOrder)[number]> = {\n [WalletType.EVM]: \"evm\",\n [WalletType.SOL]: \"sol\",\n [WalletType.ABSTRACT]: \"abstract\",\n };\n\n const prioritizedKey = selectedWalletType\n ? typeToKey[selectedWalletType]\n : undefined;\n\n const orderedWalletKeys = prioritizedKey\n ? ([\n prioritizedKey,\n ...walletOrder.filter((k) => k !== prioritizedKey),\n ] as const)\n : walletOrder;\n\n const renderByKey = (key: (typeof walletOrder)[number]) => {\n switch (key) {\n case \"evm\":\n return renderWagmiConnectArea();\n case \"sol\":\n return renderSolanaConnectArea();\n case \"abstract\":\n return renderAbstractConnectArea();\n default:\n return null;\n }\n };\n return (\n <ScrollArea className=\"oui-flex oui-grow oui-shrik oui-basis-auto oui-custom-scrollbar\">\n <div className={cn(\"oui-flex oui-flex-col oui-gap-4\", \"md:oui-gap-5\")}>\n {renderPrivyConnectArea()}\n {orderedWalletKeys.map((key) => (\n <React.Fragment key={key}>{renderByKey(key)}</React.Fragment>\n ))}\n </div>\n </ScrollArea>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { useStorageChain } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AbstractChains,\n ChainNamespace,\n SolanaChains,\n} from \"@orderly.network/types\";\nimport {\n ExclamationFillIcon,\n Flex,\n modal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { WalletType } from \"../types\";\nimport { ArrowRightIcon } from \"./icons\";\n\nexport function SwitchNetworkTips({\n tipsContent,\n}: {\n tipsContent: string | null;\n}) {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const { network, setOpenConnectDrawer } = useWalletConnectorPrivy();\n if (!tipsContent) {\n return null;\n }\n\n const onSwitchNetwork = () => {\n setOpenConnectDrawer(false);\n modal\n .show<{\n wrongNetwork: boolean;\n }>(isMobile ? \"ChainSelectorSheetId\" : \"ChainSelectorDialogId\", {\n networkId: network,\n bridgeLessOnly: false,\n })\n .then(\n (r) => {\n console.log(\"[switchChain success]\", r);\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n return (\n <div\n onClick={onSwitchNetwork}\n className=\"oui-mb-3 oui-flex oui-cursor-pointer oui-items-center oui-justify-between oui-gap-1 oui-rounded-[8px] oui-bg-[rgba(255,125,0,0.1)] oui-px-2 oui-py-[6px] \"\n >\n <Flex gap={1}>\n <ExclamationFillIcon\n size={14}\n className=\" oui-shrink-0 oui-text-warning-darken\"\n />\n <div className=\"oui-text-2xs oui-text-warning-darken\">\n {t(\"connector.privy.switchNetwork.tips\", {\n chainName: tipsContent,\n })}\n </div>\n </Flex>\n <ArrowRightIcon size={14} className=\"oui-text-[#FF7D00]\" />\n </div>\n );\n}\nexport const StorageChainNotCurrentWalletType = ({\n currentWalletType,\n}: {\n currentWalletType: Set<WalletType>;\n}) => {\n const { storageChain } = useStorageChain();\n const tipsContent = useMemo(() => {\n if (!currentWalletType || currentWalletType.size === 0 || !storageChain) {\n return null;\n }\n let text = null;\n const isSolana = SolanaChains.has(parseInt(storageChain?.chainId));\n const isAbstract = AbstractChains.has(parseInt(storageChain?.chainId));\n const isEvm = !isSolana && !isAbstract;\n\n if (isSolana && currentWalletType.has(WalletType.SOL)) {\n return null;\n } else if (isAbstract && currentWalletType.has(WalletType.ABSTRACT)) {\n return null;\n } else if (isEvm && currentWalletType.has(WalletType.EVM)) {\n return null;\n }\n\n text = Array.from(currentWalletType)\n .map((item) => {\n if (item === WalletType.EVM) {\n return \"Evm\";\n } else if (item === WalletType.SOL) {\n return \"Solana\";\n } else if (item === WalletType.ABSTRACT) {\n return \"Abstract\";\n }\n })\n .join(\"/\");\n return text;\n }, [storageChain, currentWalletType]);\n\n return <SwitchNetworkTips tipsContent={tipsContent} />;\n};\n","import React, { useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ChainIcon,\n Checkbox,\n cn,\n CopyIcon,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n formatAddress,\n Popover,\n toast,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { useWallet } from \"../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { WalletConnectType, WalletType } from \"../types\";\nimport { PrivyConnectorImagePath } from \"../util\";\nimport { EVMChainPopover } from \"./common\";\nimport { DisconnectIcon, MoreIcon } from \"./icons\";\n\ninterface WalletCardProps {\n type: WalletType;\n address: string;\n isActive: boolean;\n isPrivy?: boolean;\n isMulti?: boolean;\n onActiveChange: (active: boolean) => void;\n}\n\nconst getCardBgClassName = (type: WalletType = WalletType.EVM) => {\n const cardBgColorMap: { [key in WalletType]: string } = {\n [WalletType.EVM]: \"oui-bg-[#283BEE]\",\n [WalletType.ABSTRACT]: \"oui-bg-[#00A858]\",\n [WalletType.SOL]: \"oui-bg-[#630EAD]\",\n };\n return cardBgColorMap[type];\n};\n\nconst getCardActiveClassName = (\n isActive: boolean,\n isMulti: boolean,\n type: WalletType = WalletType.EVM,\n) => {\n const cardActiveColorMap: { [key in WalletType]: string } = {\n [WalletType.EVM]: \"oui-border-[2px] oui-border-[#B9D1FF]\",\n [WalletType.ABSTRACT]: \"oui-border-[2px] oui-border-[#B9D1FF]\",\n [WalletType.SOL]: \"oui-border-[2px] oui-border-[#faedff]\",\n };\n return isActive && isMulti && cardActiveColorMap[type];\n};\n\nexport function WalletCard(props: WalletCardProps) {\n const { t } = useTranslation();\n const copyAddress = async (address: string) => {\n await navigator.clipboard.writeText(address);\n toast.success(t(\"common.copy.copied\"));\n };\n\n return (\n <div\n className={cn(\n \"oui-relative oui-h-[110px] oui-overflow-hidden oui-rounded-2xl oui-p-4\",\n getCardBgClassName(props.type),\n getCardActiveClassName(\n props.isActive,\n props.isMulti || false,\n props.type,\n ),\n )}\n >\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: -20,\n background:\n \"url('https://oss.orderly.network/static/sdk/wallet-card-bg.png')\",\n width: \"110px\",\n height: \"110px\",\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center\",\n zIndex: 0,\n }}\n />\n <div className=\"oui-relative oui-z-10 oui-flex oui-h-full oui-flex-col oui-justify-between\">\n <div className=\"oui-flex oui-items-center oui-justify-between\">\n <div className=\"oui-text-sm oui-font-semibold oui-text-base-contrast\">\n {formatAddress(props.address)}\n </div>\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-2\">\n <Tooltip content={t(\"common.copy\")} className=\"oui-z-[65]\">\n <CopyIcon\n size={16}\n opacity={1}\n className=\"oui-cursor-pointer oui-text-base-contrast-80 hover:oui-text-base-contrast\"\n onClick={() => copyAddress(props.address)}\n />\n </Tooltip>\n {props.isPrivy ? (\n <PrivyWalletHandleOption\n address={props.address}\n type={props.type}\n />\n ) : (\n <NonPrivyWalletHandleOption walletType={props.type} />\n )}\n </div>\n </div>\n\n <div className=\"oui-flex oui-items-center oui-justify-between\">\n <RenderWalletType walletType={props.type} />\n\n {props.isMulti && (\n <div>\n <Checkbox\n checked={props.isActive}\n onCheckedChange={props.onActiveChange}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\nfunction NonPrivyWalletHandleOption({\n walletType,\n}: {\n walletType: WalletType;\n}) {\n const { disconnect } = useWallet();\n const disconnectWallet = () => {\n let walletConnectType: WalletConnectType = WalletConnectType.EVM;\n switch (walletType) {\n case WalletType.EVM:\n walletConnectType = WalletConnectType.EVM;\n break;\n case WalletType.SOL:\n walletConnectType = WalletConnectType.SOL;\n break;\n case WalletType.ABSTRACT:\n walletConnectType = WalletConnectType.ABSTRACT;\n break;\n }\n disconnect(walletConnectType);\n };\n return (\n <div onClick={() => disconnectWallet()}>\n <DisconnectIcon className=\"oui-size-4 oui-cursor-pointer oui-text-base-contrast-80 hover:oui-text-base-contrast\" />\n </div>\n );\n}\n\nfunction PrivyWalletHandleOption({\n address,\n type,\n}: {\n address: string;\n type: WalletType;\n}) {\n const { t } = useTranslation();\n const { exportWallet } = usePrivyWallet();\n return (\n <DropdownMenuRoot>\n <DropdownMenuTrigger asChild>\n <button>\n <MoreIcon className=\"oui-cursor-pointer oui-text-base-contrast-80 hover:oui-text-base-contrast\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n size={\"xl\"}\n align={\"end\"}\n side=\"top\"\n style={{ width: \"100px\" }}\n className={\"oui-z-[65] oui-rounded oui-p-1 oui-font-semibold\"}\n sideOffset={0}\n >\n <DropdownMenuItem\n className=\"oui-cursor-pointer oui-px-2 oui-py-1 oui-text-2xs oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n onClick={() => {\n console.log(\"export wallet\");\n exportWallet(type);\n }}\n >\n <div>{t(\"common.export\")}</div>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n}\n\nconst RenderWalletType = ({ walletType }: { walletType: WalletType }) => {\n if (walletType === WalletType.SOL) {\n return (\n <div className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\">\n <div className=\"\">\n <img\n src=\"https://oss.orderly.network/static/sdk/solana-logo.png\"\n className=\"oui-w-4\"\n />\n </div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n Solana\n </div>\n </div>\n );\n }\n if (walletType === WalletType.ABSTRACT) {\n return (\n <div className=\"oui-flex oui-items-center oui-justify-start oui-gap-[6px]\">\n <img\n src={`${PrivyConnectorImagePath}/abstract-transparent.png`}\n className=\"oui-w-4\"\n />\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n Abstract\n </div>\n </div>\n );\n }\n if (walletType === WalletType.EVM) {\n return (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-relative oui-flex oui-items-center oui-justify-center\">\n <div className=\"oui-flex oui-h-[18px] oui-items-center oui-justify-center \">\n <img\n src=\"https://oss.orderly.network/static/sdk/chains.png\"\n className=\"oui-relative oui-z-0 oui-h-[18px] oui-w-[49px]\"\n />\n </div>\n <div className=\"oui-relative oui-left-[-9px] oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-[#282e3a]\">\n <EVMChainPopover>\n <MoreIcon\n className=\"oui-relative oui-z-10 oui-size-3 oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n style={{ zIndex: 1 }}\n />\n </EVMChainPopover>\n </div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n Evm\n </div>\n </div>\n </div>\n </div>\n );\n }\n return <></>;\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ChevronDownIcon, ChevronUpIcon, cn } from \"@orderly.network/ui\";\nimport { Tooltip } from \"@orderly.network/ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { PrivyConnectorImagePath } from \"../../util\";\n\nexport function AddAbstractWallet() {\n const [visible, setVisible] = useState(false);\n const onToggleVisibility = () => {\n setVisible(!visible);\n };\n const { connect } = useWallet();\n const { targetWalletType } = useWalletConnectorPrivy();\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n useEffect(() => {\n let timer = 0;\n if (targetWalletType === WalletType.ABSTRACT) {\n timer = window.setTimeout(() => {\n setOpen(true);\n }, 200);\n }\n return () => {\n if (timer) {\n window.clearTimeout(timer);\n }\n };\n }, [targetWalletType]);\n useEffect(() => {\n if (open === false) {\n return;\n }\n const timeId = window.setTimeout(() => {\n setOpen(false);\n }, 5000);\n return () => {\n if (timeId) {\n window.clearTimeout(timeId);\n }\n };\n }, [open]);\n\n return (\n <div className=\"oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <Tooltip\n className=\"oui-z-[65] oui-max-w-[200px] oui-text-warning-darken\"\n open={open}\n content={t(\"connector.privy.addAbstractWallet.tips\")}\n >\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <img\n src={`${PrivyConnectorImagePath}/abstract-transparent.png`}\n className=\"oui-size-[15px]\"\n />\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-80\">\n {t(\"connector.privy.addAbstractWallet\")}\n </div>\n\n <button onClick={onToggleVisibility}>\n {visible ? (\n <ChevronDownIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-36\"\n />\n ) : (\n <ChevronUpIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast\"\n />\n )}\n </button>\n </div>\n </Tooltip>\n <div\n className={cn(\n \"oui-transition-height oui-grid oui-grid-cols-2 oui-gap-2 oui-overflow-hidden oui-duration-150\",\n visible ? \"oui-mt-0 oui-max-h-0\" : \"oui-mt-3 oui-max-h-[400px]\",\n )}\n >\n <div\n className=\"oui-flex oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-bg-[#131519] oui-px-2 oui-py-[11px]\"\n onClick={() =>\n connect({\n walletType: WalletConnectType.ABSTRACT,\n })\n }\n >\n <img\n className={cn(\"oui-size-[12px]\")}\n src={`${PrivyConnectorImagePath}/abstract.png`}\n alt=\"abstract wallet\"\n />\n <div className=\"oui-text-2xs oui-text-base-contrast\">Abstract</div>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn } from \"@orderly.network/ui\";\nimport { Tooltip, ChevronDownIcon, ChevronUpIcon } from \"@orderly.network/ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useWagmiWallet } from \"../../providers/wagmi/wagmiWalletProvider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { RenderWalletIcon } from \"../common\";\nimport { EVMChainPopover } from \"../common\";\nimport { MoreIcon } from \"../icons\";\n\nexport function AddEvmWallet() {\n const { t } = useTranslation();\n const [visible, setVisible] = useState(false);\n const { connect } = useWallet();\n const [open, setOpen] = useState(false);\n const { connectors } = useWagmiWallet();\n const { targetWalletType } = useWalletConnectorPrivy();\n\n useEffect(() => {\n let timer = 0;\n if (targetWalletType === WalletType.EVM) {\n timer = window.setTimeout(() => {\n setOpen(true);\n }, 200);\n }\n return () => {\n if (timer) {\n window.clearTimeout(timer);\n }\n };\n }, [targetWalletType]);\n useEffect(() => {\n if (open === false) {\n return;\n }\n const timeId = window.setTimeout(() => {\n setOpen(false);\n }, 5000);\n return () => {\n if (timeId) {\n window.clearTimeout(timeId);\n }\n };\n }, [open]);\n\n return (\n <div className=\"oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <Tooltip\n className=\"oui-z-[65] oui-max-w-[200px] oui-text-warning-darken\"\n open={open}\n content={t(\"connector.privy.addEvmWallet.tips\")}\n >\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-relative oui-flex oui-w-[55px] oui-items-center oui-justify-start\">\n <img\n src=\"https://oss.orderly.network/static/sdk/chains.png\"\n className=\"oui-relative oui-z-0 oui-h-[18px]\"\n />\n <div className=\"oui-absolute oui-right-0 oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-[#282e3a]\">\n <EVMChainPopover>\n <MoreIcon\n className=\"oui-relative oui-z-10 oui-size-3 oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n style={{ zIndex: 1 }}\n />\n </EVMChainPopover>\n </div>\n </div>\n </div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-80\">\n {t(\"connector.privy.addEvmWallet\")}\n </div>\n\n <button onClick={() => setVisible(!visible)}>\n {visible ? (\n <ChevronDownIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-36\"\n />\n ) : (\n <ChevronUpIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast\"\n />\n )}\n </button>\n </div>\n </Tooltip>\n <div\n className={cn(\n \"oui-transition-height oui-grid oui-grid-cols-2 oui-gap-2 oui-overflow-hidden oui-duration-150\",\n visible ? \"oui-mt-0 oui-max-h-0\" : \"oui-mt-3 oui-max-h-[400px]\",\n )}\n >\n {connectors.map((item, index) => (\n <div\n key={index}\n className=\"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-bg-[#131519] oui-px-2 oui-py-[11px] oui-text-2xs\"\n onClick={() =>\n connect({ walletType: WalletConnectType.EVM, connector: item })\n }\n >\n <RenderWalletIcon connector={item} />\n <div className=\"oui-text-base-contrast\">{item.name}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n cn,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useSolanaWallet } from \"../../providers/solana/solanaWalletProvider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { RenderWalletIcon } from \"../common\";\n\nexport function AddSolanaWallet() {\n const { t } = useTranslation();\n const { wallets } = useSolanaWallet();\n const { connect } = useWallet();\n const [visible, setVisible] = useState(false);\n const onToggleVisibility = () => {\n setVisible(!visible);\n };\n const { targetWalletType } = useWalletConnectorPrivy();\n const [open, setOpen] = useState(false);\n console.log(\"-- open and targetNamespace\", open, targetWalletType);\n\n useEffect(() => {\n let timer = 0;\n if (targetWalletType === WalletType.SOL) {\n timer = window.setTimeout(() => {\n setOpen(true);\n }, 200);\n }\n return () => {\n if (timer) {\n window.clearTimeout(timer);\n }\n };\n }, [targetWalletType]);\n useEffect(() => {\n if (open === false) {\n return;\n }\n const timeId = window.setTimeout(() => {\n setOpen(false);\n }, 5000);\n return () => {\n if (timeId) {\n window.clearTimeout(timeId);\n }\n };\n }, [open]);\n\n return (\n <div className=\"oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <Tooltip\n className=\"oui-z-[65] oui-max-w-[200px] oui-text-warning-darken\"\n open={open}\n content={t(\"connector.privy.addSolanaWallet.tips\")}\n >\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <img\n src=\"https://oss.orderly.network/static/sdk/solana-logo.png\"\n className=\"oui-size-[15px]\"\n />\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-80\">\n {t(\"connector.privy.addSolanaWallet\")}\n </div>\n\n <button onClick={onToggleVisibility}>\n {visible ? (\n <ChevronDownIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-36\"\n />\n ) : (\n <ChevronUpIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast\"\n />\n )}\n </button>\n </div>\n </Tooltip>\n <div\n className={cn(\n \"oui-transition-height oui-grid oui-grid-cols-2 oui-gap-2 oui-overflow-hidden oui-duration-150\",\n visible ? \"oui-mt-0 oui-max-h-0\" : \"oui-mt-3 oui-max-h-[400px]\",\n )}\n >\n {wallets.map((item, index) => (\n <div\n key={index}\n className=\"oui-flex oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-bg-[#131519] oui-px-2 oui-py-[11px]\"\n onClick={() =>\n connect({\n walletType: WalletConnectType.SOL,\n walletAdapter: item.adapter,\n })\n }\n >\n <RenderWalletIcon connector={item.adapter} />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {item.adapter.name}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useStorageChain } from \"@orderly.network/hooks\";\nimport {\n AbstractChains,\n ChainNamespace,\n SolanaChains,\n} from \"@orderly.network/types\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useAbstractWallet } from \"../../providers/abstractWallet/abstractWalletProvider\";\nimport { useSolanaWallet } from \"../../providers/solana/solanaWalletProvider\";\nimport { useWagmiWallet } from \"../../providers/wagmi/wagmiWalletProvider\";\nimport { WalletType } from \"../../types\";\nimport { StorageChainNotCurrentWalletType } from \"../switchNetworkTips\";\nimport { WalletCard } from \"../walletCard\";\nimport { AddAbstractWallet } from \"./addAbstractWallet\";\nimport { AddEvmWallet } from \"./addEvmWallet\";\nimport { AddSolanaWallet } from \"./addSolanaWallet\";\n\ninterface ConnectWallet {\n type: WalletType;\n address: string;\n}\n\nexport function RenderNonPrivyWallet() {\n const [walletList, setWalletList] = useState<ConnectWallet[]>([]);\n const [addWalletList, setAddWalletList] = useState<WalletType[]>([]);\n const { storageChain } = useStorageChain();\n const { connectorWalletType, walletChainTypeConfig } =\n useWalletConnectorPrivy();\n const { wallet: walletInWagmi, isConnected: isConnectedEvm } =\n useWagmiWallet();\n const { wallet: walletInSolana, isConnected: isConnectedSolana } =\n useSolanaWallet();\n const { wallet: walletInAbstract, isConnected: isConnectedAbstract } =\n useAbstractWallet();\n const { namespace, switchWallet } = useWallet();\n\n const isActive = (walletType: WalletType) => {\n if (namespace === ChainNamespace.evm) {\n if (walletType === WalletType.ABSTRACT) {\n return AbstractChains.has(storageChain?.chainId);\n }\n if (walletType === WalletType.EVM) {\n return !AbstractChains.has(storageChain?.chainId);\n }\n return false;\n }\n if (namespace === ChainNamespace.solana) {\n return walletType === WalletType.SOL;\n }\n return false;\n };\n\n const currentConnectWalletType: Set<WalletType> = useMemo(() => {\n const temp = new Set<WalletType>();\n walletList.forEach((wallet) => {\n temp.add(wallet.type);\n });\n return temp;\n }, [walletList]);\n\n useEffect(() => {\n const tempWalletList = [];\n const tempAddWallet = [];\n if (!connectorWalletType.disableWagmi && walletChainTypeConfig.hasEvm) {\n if (isConnectedEvm) {\n tempWalletList.push({\n type: WalletType.EVM,\n address: walletInWagmi?.accounts[0].address,\n });\n } else {\n tempAddWallet.push(WalletType.EVM);\n }\n }\n if (!connectorWalletType.disableSolana && walletChainTypeConfig.hasSol) {\n if (isConnectedSolana) {\n tempWalletList.push({\n type: WalletType.SOL,\n address: walletInSolana?.accounts[0].address,\n });\n } else {\n tempAddWallet.push(WalletType.SOL);\n }\n }\n if (!connectorWalletType.disableAGW && walletChainTypeConfig.hasAbstract) {\n if (isConnectedAbstract) {\n tempWalletList.push({\n type: WalletType.ABSTRACT,\n address: walletInAbstract?.additionalInfo?.AGWAddress,\n });\n } else {\n tempAddWallet.push(WalletType.ABSTRACT);\n }\n }\n setWalletList(tempWalletList);\n setAddWalletList(tempAddWallet);\n }, [\n isConnectedEvm,\n isConnectedSolana,\n isConnectedAbstract,\n walletInWagmi,\n walletInSolana,\n walletInAbstract,\n walletChainTypeConfig,\n connectorWalletType,\n ]);\n return (\n <>\n {walletList.length && (\n <StorageChainNotCurrentWalletType\n currentWalletType={currentConnectWalletType}\n />\n )}\n <div className=\"oui-flex oui-flex-col oui-gap-5\">\n {walletList.map((wallet) => (\n <WalletCard\n key={wallet.type}\n type={wallet.type}\n address={wallet.address}\n isActive={isActive(wallet.type)}\n onActiveChange={() => {\n switchWallet(wallet.type);\n }}\n isPrivy={false}\n isMulti={walletList.length > 1}\n />\n ))}\n </div>\n <RenderAddWallet addWalletList={addWalletList} />\n </>\n );\n}\n\nfunction RenderAddWallet({ addWalletList }: { addWalletList: WalletType[] }) {\n if (addWalletList.length === 0) {\n return null;\n }\n return (\n <>\n <div className=\"oui-my-5 oui-h-px oui-bg-line\" />\n <div className=\"oui-flex oui-flex-col oui-gap-5\">\n {addWalletList.map((wallet, index) => {\n if (wallet === WalletType.EVM) {\n return <AddEvmWallet key={index} />;\n }\n if (wallet === WalletType.SOL) {\n return <AddSolanaWallet key={index} />;\n }\n if (wallet === WalletType.ABSTRACT) {\n return <AddAbstractWallet key={index} />;\n }\n })}\n </div>\n </>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useStorageChain } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AbstractChains, ChainNamespace } from \"@orderly.network/types\";\nimport { cn, ExclamationFillIcon } from \"@orderly.network/ui\";\nimport { windowGuard } from \"@orderly.network/utils\";\nimport { useWallet } from \"../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { WalletChainTypeEnum, WalletConnectType, WalletType } from \"../types\";\nimport { RenderPrivyTypeIcon, EVMChainPopover } from \"./common\";\nimport { MoreIcon } from \"./icons\";\nimport { WalletCard } from \"./walletCard\";\n\nfunction NoWallet() {\n const { walletChainType } = useWalletConnectorPrivy();\n const { t } = useTranslation();\n return (\n <div className=\"oui-mt-5 oui-flex oui-w-full oui-flex-col oui-items-center oui-justify-center\">\n <div className=\"oui-flex oui-w-full oui-flex-col oui-items-center oui-justify-center oui-gap-3\">\n <div className=\"oui-flex oui-w-full oui-flex-col oui-items-center oui-justify-center oui-gap-1 oui-rounded-[8px] oui-border oui-border-line-12 oui-px-2 oui-py-[13px] \">\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/no-wallet.png\"\n className=\"oui-size-[64px]\"\n />\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"connector.privy.noWallet\")}\n </div>\n </div>\n <div className=\"oui-flex oui-items-start oui-gap-1 oui-rounded-[4px] oui-bg-[rgba(232,136,0,0.15)] oui-px-2 oui-py-[6px] \">\n <ExclamationFillIcon\n size={10}\n className=\"oui-mt-1 oui-size-[10px] oui-shrink-0 oui-text-warning-darken\"\n />\n <div className=\"oui-text-2xs oui-text-warning-darken\">\n {t(\"connector.privy.noWallet.description\")}\n </div>\n </div>\n </div>\n <div className=\"oui-my-5 oui-h-px oui-w-full oui-bg-line\" />\n <div className=\"oui-flex oui-w-full oui-flex-col oui-gap-2\">\n {walletChainType === WalletChainTypeEnum.EVM_SOL && (\n <>\n <CreateEVMWallet />\n <CreateSOLWallet />\n </>\n )}\n {walletChainType === WalletChainTypeEnum.onlyEVM && <CreateEVMWallet />}\n {walletChainType === WalletChainTypeEnum.onlySOL && <CreateSOLWallet />}\n </div>\n </div>\n );\n}\n\nfunction CreateEVMWallet() {\n const { t } = useTranslation();\n const { createEvmWallet } = usePrivyWallet();\n const [loading, setLoading] = useState(false);\n const doCreate = () => {\n if (loading) {\n return;\n }\n setLoading(true);\n createEvmWallet()\n .then(() => {\n setLoading(false);\n })\n .catch((e: any) => {\n console.warn(\"createEvmWallet error\", e);\n setLoading(false);\n });\n };\n return (\n <div className=\"oui-w-full oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-relative oui-flex oui-w-[55px] oui-items-center oui-justify-start\">\n <img\n src=\"https://oss.orderly.network/static/sdk/chains.png\"\n className=\"oui-relative oui-z-0 oui-h-[18px]\"\n />\n <div className=\"oui-absolute oui-right-0 oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-[#282e3a]\">\n <EVMChainPopover>\n <MoreIcon\n className=\"oui-relative oui-z-10 oui-size-3 oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n style={{ zIndex: 1 }}\n />\n </EVMChainPopover>\n </div>\n </div>\n </div>\n <div\n className={cn(\n \"oui-cursor-pointer oui-text-2xs oui-font-semibold oui-text-base-contrast-80\",\n loading && \"oui-opacity-50\",\n )}\n onClick={doCreate}\n >\n {t(\"connector.privy.createEvmWallet\")}\n </div>\n </div>\n </div>\n );\n}\n\nfunction CreateSOLWallet() {\n const { t } = useTranslation();\n const { createSolanaWallet } = usePrivyWallet();\n const [loading, setLoading] = useState(false);\n const doCreate = () => {\n if (loading) {\n return;\n }\n setLoading(true);\n createSolanaWallet()\n .then(() => {\n setLoading(false);\n })\n .catch((e: any) => {\n console.warn(\"create solana wallet error\", e);\n setLoading(false);\n });\n };\n return (\n <div className=\"oui-w-full oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <img\n src=\"https://oss.orderly.network/static/sdk/solana-logo.png\"\n className=\"oui-size-[15px]\"\n />\n <div\n className={cn(\n \"oui-cursor-pointer oui-text-2xs oui-font-semibold oui-text-base-contrast-80\",\n loading && \"oui-opacity-50\",\n )}\n onClick={doCreate}\n >\n {t(\"connector.privy.createSolanaWallet\")}\n </div>\n </div>\n </div>\n );\n}\ninterface ConnectWallet {\n type: WalletType;\n address: string;\n}\n\nexport function RenderPrivyWallet() {\n const { t } = useTranslation();\n const {\n targetWalletType,\n setTargetWalletType,\n walletChainTypeConfig,\n connectorWalletType,\n } = useWalletConnectorPrivy();\n const { walletEVM, walletSOL, linkedAccount } = usePrivyWallet();\n const { namespace, switchWallet, disconnect } = useWallet();\n const { storageChain } = useStorageChain();\n const [walletList, setWalletList] = useState<ConnectWallet[]>([]);\n const [addWallet, setAddWallet] = useState<React.ReactNode[]>([]);\n const [loading, setLoading] = useState(true);\n\n const isActive = useCallback(\n (walletType: WalletType) => {\n if (storageChain?.namespace === ChainNamespace.evm) {\n if (walletType === WalletType.EVM) {\n return !AbstractChains.has(storageChain?.chainId);\n }\n return false;\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n return walletType === WalletType.SOL;\n }\n return false;\n },\n [storageChain],\n );\n\n const isHaveEvmWallet = useMemo(() => {\n return walletEVM && walletEVM.accounts.length;\n }, [walletEVM]);\n\n const isHaveSolWallet = useMemo(() => {\n return walletSOL && walletSOL.accounts.length;\n }, [walletSOL]);\n\n const renderWarning = useCallback(() => {\n let showWarning = false;\n if (AbstractChains.has(storageChain?.chainId)) {\n showWarning = true;\n }\n if (targetWalletType === WalletType.ABSTRACT) {\n showWarning = true;\n }\n if (!showWarning) {\n return;\n }\n return (\n <div className=\"oui-mt-5 oui-border-b oui-border-line oui-pb-5\">\n <div\n className={cn(\n \"oui-flex oui-items-start oui-justify-center oui-gap-1\",\n \"oui-w-full oui-rounded-[8px] oui-px-2 oui-py-[13px]\",\n \"oui-bg-warning-darken/10\",\n )}\n >\n <ExclamationFillIcon\n size={14}\n className=\"oui-mt-[2px] oui-size-[14px] oui-shrink-0 oui-text-warning-darken\"\n />\n <div className=\"oui-text-2xs oui-leading-[18px] oui-text-warning-darken\">\n Abstract Chain access requires Abstract Global Wallet. Privy\n connection is currently unsupported.\n </div>\n </div>\n </div>\n );\n // }\n }, [targetWalletType]);\n\n const renderWallet = useCallback(() => {\n if (loading) {\n return;\n }\n if (!walletList.length) {\n return <NoWallet />;\n }\n return (\n <div className=\"oui-mt-5 oui-flex oui-flex-col oui-gap-5\">\n {walletList.map((wallet) => (\n <WalletCard\n key={wallet.type}\n type={wallet.type}\n address={wallet.address}\n isActive={isActive(wallet.type)}\n isPrivy={true}\n isMulti={walletList.length > 1}\n onActiveChange={() => {\n switchWallet(wallet.type);\n }}\n />\n ))}\n {addWallet.map((node, index) => (\n <div key={index}>\n <div className=\"oui-my-5 oui-h-px oui-w-full oui-bg-line\" />\n <div className=\"oui-flex oui-w-full oui-flex-col oui-gap-2\">\n {node}\n </div>\n </div>\n ))}\n </div>\n );\n }, [walletList, addWallet, isActive, switchWallet, t, loading]);\n\n useEffect(() => {\n new Promise((resolve) =>\n setTimeout(() => {\n setLoading(false);\n resolve(true);\n }, 200),\n );\n }, []);\n\n useEffect(() => {\n const tempWalletList = [];\n const tempAddWallet = [];\n if (!connectorWalletType.disableWagmi && walletChainTypeConfig.hasEvm) {\n if (isHaveEvmWallet) {\n tempWalletList.push({\n type: WalletType.EVM,\n address: walletEVM!.accounts[0].address,\n });\n } else {\n tempAddWallet.push(<CreateEVMWallet />);\n }\n }\n if (!connectorWalletType.disableSolana && walletChainTypeConfig.hasSol) {\n if (isHaveSolWallet) {\n tempWalletList.push({\n type: WalletType.SOL,\n address: walletSOL!.accounts[0].address,\n });\n } else {\n tempAddWallet.push(<CreateSOLWallet />);\n }\n }\n setWalletList(tempWalletList);\n setAddWallet(tempAddWallet);\n }, [\n connectorWalletType,\n walletChainTypeConfig,\n walletEVM,\n walletSOL,\n isHaveEvmWallet,\n isHaveSolWallet,\n ]);\n\n useEffect(() => {\n if (targetWalletType === WalletType.ABSTRACT) {\n windowGuard(() => {\n setTimeout(() => {\n setTargetWalletType(undefined);\n }, 5000);\n });\n }\n }, [targetWalletType, setTargetWalletType]);\n\n return (\n <div>\n <div className=\"oui-flex oui-items-center oui-justify-between\">\n {linkedAccount && (\n <div className=\"oui-flex oui-items-center oui-justify-start oui-gap-2 oui-text-base-contrast\">\n <div>\n <RenderPrivyTypeIcon type={linkedAccount.type} size={24} />\n </div>\n <div className=\"oui-text-xs\">{linkedAccount.address}</div>\n </div>\n )}\n <div\n className=\"oui-cursor-pointer oui-text-2xs oui-font-semibold oui-text-primary\"\n onClick={() => disconnect(WalletConnectType.PRIVY)}\n >\n {t(\"connector.privy.logout\")}\n </div>\n </div>\n {renderWarning()}\n {renderWallet()}\n </div>\n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { ConnectorKey } from \"@orderly.network/types\";\nimport {\n useScreen,\n cn,\n CloseIcon,\n SimpleSheet,\n Box,\n Flex,\n Text,\n modal,\n CloseSquareFillIcon,\n} from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { useAbstractWallet } from \"../providers/abstractWallet/abstractWalletProvider\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { useSolanaWallet } from \"../providers/solana/solanaWalletProvider\";\nimport { useWagmiWallet } from \"../providers/wagmi/wagmiWalletProvider\";\nimport { WalletConnectType, WalletType } from \"../types\";\nimport { Drawer } from \"./drawer\";\nimport { ArrowRightIcon, ArrowRightLinearGradientIcon } from \"./icons\";\nimport { PwaDialog } from \"./pwaDilaog\";\nimport { RenderConnector } from \"./renderConnector\";\nimport { RenderNonPrivyWallet } from \"./renderNonPrivyWallet\";\nimport { RenderPrivyWallet } from \"./renderPrivyWallet\";\n\nfunction MyWallet() {\n const [connectorKey, setConnectorKey] = useLocalStorage(ConnectorKey, \"\");\n\n return (\n <div>\n {connectorKey === \"privy\" && <RenderPrivyWallet />}\n\n {connectorKey !== \"privy\" && <RenderNonPrivyWallet />}\n </div>\n );\n}\n\nexport function ConnectDrawer(props: {\n open: boolean;\n onChangeOpen: (open: boolean) => void;\n headerProps?: {\n mobile: React.ReactNode;\n };\n}) {\n const { t } = useTranslation();\n const { isConnected: isConnectedPrivy } = usePrivyWallet();\n const { isConnected: isConnectedEvm } = useWagmiWallet();\n const { isConnected: isConnectedSolana } = useSolanaWallet();\n const { isConnected: isConnectedAbstract } = useAbstractWallet();\n const { termsOfUse } = useWalletConnectorPrivy();\n const [connectorKey] = useLocalStorage(ConnectorKey, \"\");\n\n const isConnected = useMemo(() => {\n if (connectorKey === WalletConnectType.PRIVY && isConnectedPrivy) {\n return true;\n }\n if (connectorKey !== WalletConnectType.PRIVY) {\n if (isConnectedEvm) {\n return true;\n }\n if (isConnectedSolana) {\n return true;\n }\n if (isConnectedAbstract) {\n return true;\n }\n }\n return false;\n }, [\n isConnectedPrivy,\n isConnectedEvm,\n isConnectedSolana,\n isConnectedAbstract,\n connectorKey,\n ]);\n\n const { isMobile } = useScreen();\n\n const showPwaDialog = () => {\n modal.show(PwaDialog);\n };\n\n const renderHeader = useCallback(() => {\n return (\n <div\n className={cn(\n \"oui-font-semibold oui-text-base-contrast-80 \",\n \"oui-pb-2 oui-text-[20px]\",\n \"md:oui-py-0 md:oui-text-base\",\n )}\n >\n {isConnected\n ? t(\"connector.privy.myWallet\")\n : t(\"connector.connectWallet\")}\n </div>\n );\n }, [isConnected]);\n return (\n <SimpleSheet\n open={props.open}\n onOpenChange={props.onChangeOpen}\n classNames={{\n body: \"oui-h-full oui-py-0 oui-border-none oui-relative\",\n // overlay: \"!oui-bg-base-10/60\",\n content: cn(\n \"!oui-p-4 !oui-bg-[#131519] !oui-border !oui-border-solid !oui-border-line-12\",\n\n isMobile\n ? \"oui-inset-y-0 oui-right-0 oui-w-[280px] oui-rounded-none !oui-bg-[#181C23]\"\n : \"!oui-bottom-[30px] oui-right-3 oui-top-[48px] !oui-h-auto oui-w-[300px] oui-overflow-hidden oui-rounded-[16px] !oui-bg-[#131519] \",\n ),\n }}\n contentProps={{ side: \"right\", closeable: false }}\n >\n {!isMobile && (\n <div\n className=\"oui-absolute oui-inset-x-[50px] -oui-top-[calc(100vh/2)] oui-z-0 oui-h-screen\"\n style={{\n background:\n \"conic-gradient(from -41deg at 40.63% 50.41%, rgba(242, 98, 181, 0.00) 125.17920970916748deg, rgba(95, 197, 255, 0.20) 193.4119462966919deg, rgba(255, 172, 137, 0.20) 216.0206937789917deg, rgba(129, 85, 255, 0.20) 236.0708713531494deg, rgba(120, 157, 255, 0.20) 259.95326042175293deg, rgba(159, 115, 241, 0.00) 311.0780096054077deg)\",\n filter: \"blur(50px)\",\n }}\n />\n )}\n <div className=\"oui-relative oui-z-10 oui-flex oui-h-full oui-flex-col oui-gap-4 md:oui-gap-5\">\n <div className=\"oui-flex oui-flex-none oui-items-center oui-justify-between\">\n {renderHeader()}\n <CloseSquareFillIcon\n className=\"oui-size-5 oui-cursor-pointer oui-text-base-contrast-20 hover:oui-text-base-contrast-80\"\n onClick={() => props.onChangeOpen(false)}\n />\n </div>\n {isConnected ? <MyWallet /> : <RenderConnector />}\n\n {!isConnected && (\n <Flex gap={4} direction=\"column\">\n {isMobile && (\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n gap={4}\n className=\"oui-rounded-[8px] oui-px-3 oui-py-2 oui-text-2xs oui-bg-[linear-gradient(270deg,rgba(89,176,254,0.10)_0%,rgba(38,254,254,0.10)_100%)] oui-w-full\"\n onClick={() => showPwaDialog()}\n >\n <Text className=\"oui-bg-[linear-gradient(270deg,#59B0FE_0%,#26FEFE_100%)] oui-bg-clip-text oui-text-transparent\">\n {t(\"connector.privy.pwa.title\")}\n </Text>\n <ArrowRightLinearGradientIcon\n size={20}\n className=\"oui-flex-shrink-0\"\n />\n </Flex>\n )}\n {termsOfUse && (\n <div className=\"oui-flex-none oui-text-center oui-text-2xs oui-font-semibold oui-text-base-contrast-80\">\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"connector.privy.termsOfUse\"\n components={[\n <a\n key=\"termsOfUse\"\n href={termsOfUse}\n className=\"oui-cursor-pointer oui-text-primary oui-underline\"\n target=\"_blank\"\n rel=\"noreferrer\"\n />,\n ]}\n />\n </div>\n )}\n </Flex>\n )}\n </div>\n </SimpleSheet>\n );\n}\n","import React, {\n Children,\n FC,\n PropsWithChildren,\n SVGProps,\n useState,\n} from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, SimpleDialog, Text } from \"@orderly.network/ui\";\n\nexport const LinkDeviceMobile = (props: PropsWithChildren) => {\n const [open, setOpen] = useState(false);\n const { account } = useAccount();\n const { t } = useTranslation();\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n };\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n size=\"xs\"\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: t(\"connector.disconnect\"),\n onClick: async () => {\n await onDisconnect();\n hideDialog();\n },\n size: \"md\",\n variant: \"outlined\",\n color: \"danger\",\n },\n }}\n >\n <Text intensity={54} size=\"sm\">\n {t(\"linkDevice.scanQRCode.connected.description\")}\n </Text>\n </SimpleDialog>\n <Flex className=\"oui-gap-[6px]\" itemAlign={\"center\"} onClick={showDialog}>\n <Flex\n className=\"oui-text-base-contrast\"\n intensity={500}\n height={28}\n r=\"md\"\n >\n <DesktopIcon />\n <Dot />\n <LinkIcon />\n <Dot />\n <MobileIcon />\n </Flex>\n {props.children}\n </Flex>\n </>\n );\n};\nconst Dot = () => {\n return (\n <Flex className=\"oui-gap-x-[1px] oui-px-[1px]\">\n <DotIcon />\n <DotIcon />\n <DotIcon />\n </Flex>\n );\n};\n\nconst DesktopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M4.5 2.93a2.25 2.25 0 0 0-2.25 2.25v5.25a.75.75 0 0 0-.75.75v1.5c0 1.272.93 2.25 2.25 2.25h10.5c1.318 0 2.25-.978 2.25-2.25v-1.5a.75.75 0 0 0-.75-.75V5.18a2.25 2.25 0 0 0-2.25-2.25zm0 1.5h9a.75.75 0 0 1 .75.75v5.25H3.75V5.18a.75.75 0 0 1 .75-.75M3 11.93h12v.75c0 .46-.277.75-.75.75H3.75c-.474 0-.75-.29-.75-.75z\" />\n </svg>\n);\n\nconst MobileIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M13.498 3.715a2.25 2.25 0 0 0-2.25-2.25h-4.5a2.25 2.25 0 0 0-2.25 2.25v10.5a2.25 2.25 0 0 0 2.25 2.25h4.5a2.25 2.25 0 0 0 2.25-2.25zm-1.5 0v9.75h-6v-9.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75m-2.25 11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0\" />\n </svg>\n);\n\nconst LinkIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.007 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0m7.486-2.344A.6.6 0 0 1 8.91 3.5c.15 0 .305.048.418.156a.55.55 0 0 1 0 .798L5.254 8.337a.62.62 0 0 1-.837 0L2.67 6.673a.55.55 0 0 1 0-.798.62.62 0 0 1 .837 0l1.329 1.266z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"11.007\"\n y1=\"5.999\"\n x2=\"1.007\"\n y2=\"5.999\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nconst DotIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"2\"\n height=\"2\"\n viewBox=\"0 0 2 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M.667.334a.667.667 0 1 1 0 1.333.667.667 0 0 1 0-1.333\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"1.333\"\n y1=\"1.001\"\n x2=\"0\"\n y2=\"1.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React, { useMemo } from \"react\";\nimport { useAccount, useWalletConnector } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ABSTRACT_CHAIN_ID_MAP,\n ABSTRACT_TESTNET_CHAINID,\n AccountStatusEnum,\n} from \"@orderly.network/types\";\nimport {\n Button,\n cn,\n Flex,\n formatAddress,\n Text,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { RenderPrivyTypeIcon } from \"./common\";\nimport { LinkDeviceMobile } from \"./linkDevice\";\n\nexport function UserCenter(props: any) {\n const { accountState: state } = props;\n return (\n <RenderUserCenter state={state} disabledConnect={props.disabledConnect} />\n );\n}\n\nexport const MwebUserCenter = (props: any) => {\n const { state } = props;\n\n return (\n <RenderUserCenter state={state} disabledConnect={props.disabledConnect} />\n );\n};\n\nconst RenderUserCenter = (props: any) => {\n const { state } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const { connect, wallet } = useWalletConnector();\n const { linkedAccount } = usePrivyWallet();\n const { state: accountState, account } = useAccount();\n const { connectedChain } = useWalletConnector();\n\n const disabled = state.validating || props.disabledConnect;\n\n const userAddress = useMemo(() => {\n if (\n connectedChain?.id &&\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain?.id as string))\n ) {\n return account.getAdditionalInfo()?.AGWAddress;\n }\n return account.address;\n }, [account, connectedChain, accountState]);\n\n // if (accountStatus.status <= ) {}\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return (\n <Flex className=\"oui-bg-base-5 oui-px-[7px] oui-rounded-[6px] oui-gap-[6px]\">\n <LinkDeviceMobile>\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-base-contrast oui-text-xs\"\n >\n {formatAddress(userAddress!)}\n </Text.formatted>\n </LinkDeviceMobile>\n </Flex>\n );\n }\n if (state.status <= AccountStatusEnum.NotConnected || disabled) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant={disabled ? undefined : \"gradient\"}\n angle={45}\n className={cn(\n \"wallet-connect-button\",\n isMobile && \"oui-font-semibold oui-px-2\",\n )}\n loading={state.validating}\n disabled={disabled}\n onClick={() => {\n connect()\n .then((r: any) => {\n console.log(\"*****\", r);\n })\n .catch((e: any) => console.error(e));\n }}\n >\n {isMobile ? t(\"connector.connect\") : t(\"connector.connectWallet\")}\n </Button>\n );\n }\n\n if (!wallet) {\n return;\n }\n if (isMobile) {\n return (\n <AuthGuard\n buttonProps={{\n size: \"md\",\n }}\n >\n <div onClick={() => connect()}>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n className=\"oui-px-2 oui-flex oui-items-center oui-justify-center oui-gap-1\"\n >\n {linkedAccount && (\n <RenderPrivyTypeIcon\n type={linkedAccount.type}\n size={14}\n black={true}\n />\n )}\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-[rgba(0,0,0,.88)] oui-font-semibold\"\n >\n {formatAddress(userAddress!)}\n </Text.formatted>\n </Button>\n </div>\n </AuthGuard>\n );\n }\n return (\n <div onClick={() => connect()}>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n className=\"oui-flex oui-items-center oui-justify-center oui-gap-2\"\n >\n {linkedAccount && (\n <RenderPrivyTypeIcon\n type={linkedAccount.type}\n size={18}\n black={true}\n />\n )}\n <Text.formatted rule=\"address\" className=\"oui-text-[rgba(0,0,0,.88)]\">\n {formatAddress(userAddress!)}\n </Text.formatted>\n </Button>\n </div>\n );\n};\n","import { UserCenter } from \"./components/userCenter\";\n\nimport { installExtension } from \"@orderly.network/ui\";\nimport { ExtensionPositionEnum } from \"@orderly.network/ui\";\nimport { MwebUserCenter } from \"./components/userCenter\";\nimport React from \"react\";\n\ninstallExtension({\n name: \"account-menu-privy\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.AccountMenu],\n})((props: any) => {\n return <UserCenter {...props} />;\n});\n\ninstallExtension({\n name: \"mobile-account-menu-privy\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MobileAccountMenu],\n})((props: any) => {\n return <MwebUserCenter {...props} />;\n});\n","import React, { useMemo } from \"react\";\nimport { WalletConnectorContext } from \"@orderly.network/hooks\";\nimport type {\n WalletConnectorContextState,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport { ConnectDrawer } from \"./components/connectDrawer\";\nimport { useWallet } from \"./hooks/useWallet\";\nimport \"./injectUsercenter\";\nimport { useWalletConnectorPrivy } from \"./provider\";\n\ninterface MainProps {\n headerProps?: {\n mobile: React.ReactNode;\n };\n}\n\nexport const Main: React.FC<React.PropsWithChildren<MainProps>> = (props) => {\n const { headerProps, children } = props;\n\n const { wallet, connectedChain, setChain, namespace, onDisconnect } =\n useWallet();\n\n const { openConnectDrawer, setOpenConnectDrawer, setTargetWalletType } =\n useWalletConnectorPrivy();\n\n const connect = (options: any): Promise<WalletState[]> => {\n // fix wallet-connector package connect\n if (options && options.autoSelect) {\n return Promise.resolve([]);\n }\n setTargetWalletType(undefined);\n return new Promise((resolve) => {\n setOpenConnectDrawer(true);\n resolve([]);\n });\n };\n\n const memoizedValue = useMemo<WalletConnectorContextState>(\n () => ({\n connect,\n disconnect: onDisconnect,\n connecting: false,\n wallet,\n setChain,\n connectedChain,\n namespace,\n chains: [],\n settingChain: false,\n }),\n [connect, setChain, onDisconnect, connectedChain, wallet, namespace],\n );\n\n return (\n <WalletConnectorContext.Provider value={memoizedValue}>\n <ConnectDrawer\n open={openConnectDrawer}\n onChangeOpen={setOpenConnectDrawer}\n headerProps={headerProps}\n />\n {children}\n </WalletConnectorContext.Provider>\n );\n};\n","import React, { PropsWithChildren, useMemo, useState } from \"react\";\nimport { AbstractWalletProvider } from \"@abstract-foundation/agw-react\";\n// Use abstract for mainnet\nimport { abstractTestnet, abstract } from \"viem/chains\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { Network } from \"../../types\";\n\nexport const InitAbstractProvider = (props: PropsWithChildren) => {\n const { network } = useWalletConnectorPrivy();\n const chain = useMemo(() => {\n if (network === Network.mainnet) {\n return abstract;\n }\n return abstractTestnet;\n }, [network]);\n return (\n <AbstractWalletProvider chain={chain}>\n {props.children}\n </AbstractWalletProvider>\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { AbstractWalletProvider } from \"./abstractWalletProvider\";\nimport { InitAbstractProvider } from \"./initAbstractProvider\";\n\nexport function AbstractWallet({ children }: { children: React.ReactNode }) {\n return (\n <InitAbstractProvider>\n <AbstractWalletProvider>{children}</AbstractWalletProvider>\n </InitAbstractProvider>\n );\n}\n","import React, { PropsWithChildren, useMemo, useState } from \"react\";\nimport { PrivyClientConfig, PrivyProvider } from \"@privy-io/react-auth\";\nimport { Chain } from \"viem/chains\";\nimport {\n AbstractChains,\n SolanaChains,\n defaultMainnetChains,\n defaultTestnetChains,\n} from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { InitPrivy } from \"../../types\";\n\ninterface IProps extends PropsWithChildren {\n privyConfig?: InitPrivy;\n initChains: Chain[];\n}\n\nexport function InitPrivyProvider({\n privyConfig,\n initChains,\n children,\n}: IProps) {\n if (!privyConfig) {\n return children;\n }\n const { network } = useWalletConnectorPrivy();\n const config = useMemo((): PrivyClientConfig => {\n // const chains = initChains.filter((chain) => !SolanaChains.has(chain.id) )\n const chains = initChains;\n const preferredDefaultChainIds = (\n network === \"mainnet\" ? defaultMainnetChains : defaultTestnetChains\n ).map((c) => c.id);\n const preferredDefaultChain = preferredDefaultChainIds\n .map((id) => chains.find((c) => c.id === id))\n .find((c) => !!c);\n const firstEvmChain = chains.find(\n (chain) => !SolanaChains.has(chain.id) && !AbstractChains.has(chain.id),\n );\n const defaultEvmChain = preferredDefaultChain ?? firstEvmChain ?? chains[0];\n return {\n loginMethods: privyConfig.config?.loginMethods || [\n \"email\",\n \"google\",\n \"twitter\",\n ],\n appearance: {\n ...privyConfig.config?.appearance,\n walletChainType: \"ethereum-and-solana\",\n },\n\n embeddedWallets: {\n ethereum: {\n createOnLogin: \"all-users\",\n },\n solana: {\n createOnLogin: \"all-users\",\n },\n },\n externalWallets: {\n walletConnect: {\n enabled: false,\n },\n },\n\n defaultChain: defaultEvmChain,\n supportedChains: chains,\n };\n }, [initChains, privyConfig, network]);\n // const privyConfig = useMemo(():PrivyClientConfig => (\n // ), [props.initChains])\n // console.log('-- privyconfig', privyConfig);\n // return children;\n if (!initChains.length) {\n console.warn(\"initChains is empty\");\n return;\n }\n return (\n <PrivyProvider appId={privyConfig.appid} config={config}>\n {children}\n </PrivyProvider>\n );\n}\n","import React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { Chain } from \"viem/chains\";\nimport { InitPrivy } from \"../../types\";\nimport { InitPrivyProvider } from \"./initPrivyProvider\";\nimport { PrivyWalletProvider } from \"./privyWalletProvider\";\n\nexport function PrivyWallet(\n props: PropsWithChildren<{ privyConfig?: InitPrivy; initChains: Chain[] }>,\n) {\n return (\n <InitPrivyProvider\n privyConfig={props.privyConfig}\n initChains={props.initChains}\n >\n <PrivyWalletProvider>{props.children}</PrivyWalletProvider>\n </InitPrivyProvider>\n );\n}\n","import React, { PropsWithChildren, useEffect, useMemo, useState } from \"react\";\nimport {\n Adapter,\n WalletAdapterNetwork,\n WalletError,\n WalletNotReadyError,\n} from \"@solana/wallet-adapter-base\";\nimport { WalletProvider } from \"@solana/wallet-adapter-react\";\nimport { ConnectionProvider } from \"@solana/wallet-adapter-react\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { InitSolana } from \"../../types\";\n\ninterface IProps extends PropsWithChildren<InitSolana> {}\n\nexport function InitSolanaProvider({\n mainnetRpc,\n devnetRpc,\n wallets: walletsProp,\n onError,\n children,\n}: IProps) {\n const { network, setSolanaInfo, connectorWalletType } =\n useWalletConnectorPrivy();\n if (connectorWalletType.disableSolana) {\n return children;\n }\n\n const wallets = useMemo(() => {\n return walletsProp ?? [new PhantomWalletAdapter()];\n }, [walletsProp]);\n\n useEffect(() => {\n let rpcUrl = null;\n if (network === \"mainnet\") {\n rpcUrl = mainnetRpc ?? null;\n } else {\n rpcUrl = devnetRpc ?? null;\n }\n setSolanaInfo({\n rpcUrl: rpcUrl,\n network:\n network === \"mainnet\"\n ? WalletAdapterNetwork.Mainnet\n : WalletAdapterNetwork.Devnet,\n });\n }, [network, mainnetRpc, devnetRpc, setSolanaInfo]);\n return (\n <WalletProvider wallets={wallets} onError={onError} autoConnect>\n {children}\n </WalletProvider>\n );\n}\n","import React, { PropsWithChildren } from \"react\";\nimport { InitSolana } from \"../../types\";\nimport { InitSolanaProvider } from \"./initSolanaProvider\";\nimport { SolanaWalletProvider } from \"./solanaWalletProvider\";\n\nexport function SolanaWallet(props: {\n children: React.ReactNode;\n solanaConfig?: InitSolana;\n}) {\n return (\n <InitSolanaProvider\n {...(props.solanaConfig ?? { wallets: [], onError: () => {} })}\n >\n <SolanaWalletProvider>{props.children}</SolanaWalletProvider>\n </InitSolanaProvider>\n );\n}\n","import React, { PropsWithChildren, useState } from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport {\n abstractTestnet,\n arbitrum,\n Chain,\n mainnet,\n okc,\n sepolia,\n} from \"viem/chains\";\nimport {\n createConfig,\n createStorage,\n http,\n injected,\n WagmiProvider,\n} from \"wagmi\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { InitWagmi } from \"../../types\";\n\ninterface InitWagmiProps extends PropsWithChildren {\n initialState?: any;\n initChains: Chain[];\n wagmiConfig: InitWagmi;\n}\n\nexport function InitWagmiProvider({\n children,\n initialState,\n initChains,\n wagmiConfig,\n}: InitWagmiProps) {\n const { connectorWalletType } = useWalletConnectorPrivy();\n if (connectorWalletType.disableWagmi) {\n return children;\n }\n const [queryClient] = useState(() => new QueryClient());\n\n const [config] = useState(() =>\n createConfig({\n chains:\n initChains && initChains.length\n ? (initChains as unknown as [Chain, ...Chain[]])\n : [mainnet],\n multiInjectedProviderDiscovery: true,\n storage: wagmiConfig.storage\n ? wagmiConfig.storage\n : createStorage({\n storage: localStorage,\n key: \"wagmi\",\n }),\n connectors: wagmiConfig.connectors\n ? wagmiConfig.connectors\n : [injected()],\n transports: Object.fromEntries(\n initChains.map((chain) => [chain.id, http()]),\n ),\n }),\n );\n\n return (\n <WagmiProvider config={config} initialState={initialState}>\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n </WagmiProvider>\n );\n}\n","import React from \"react\";\nimport { Chain } from \"viem/chains\";\nimport { EMPTY_OBJECT } from \"@orderly.network/types\";\nimport { InitWagmi } from \"../../types\";\nimport { InitWagmiProvider } from \"./initWagmiProvider\";\nimport { WagmiWalletProvider } from \"./wagmiWalletProvider\";\n\nexport const WagmiWallet: React.FC<\n React.PropsWithChildren<{ wagmiConfig?: InitWagmi; initChains: Chain[] }>\n> = (props) => {\n return (\n <InitWagmiProvider\n initChains={props.initChains}\n wagmiConfig={props.wagmiConfig ?? EMPTY_OBJECT}\n >\n <WagmiWalletProvider>{props.children}</WagmiWalletProvider>\n </InitWagmiProvider>\n );\n};\n","import React, {\n type PropsWithChildren,\n useEffect,\n useRef,\n useState,\n createContext,\n useContext,\n useMemo,\n} from \"react\";\nimport { PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { type Chain, defineChain } from \"viem\";\nimport { mainnet } from \"viem/chains\";\nimport {\n Chains,\n useMainnetChainsStore,\n useSwapSupportStore,\n useTestnetChainsStore,\n} from \"@orderly.network/hooks\";\nimport {\n AbstractChains,\n API,\n ArbitrumSepoliaChainInfo,\n ArbitrumSepoliaTokenInfo,\n SolanaChains,\n SolanaDevnetChainInfo,\n SolanaDevnetTokenInfo,\n TesnetTokenFallback,\n} from \"@orderly.network/types\";\nimport { TooltipProvider } from \"@orderly.network/ui\";\nimport { Main } from \"./main\";\nimport { AbstractWallet } from \"./providers/abstractWallet\";\nimport { PrivyWallet } from \"./providers/privy\";\nimport { SolanaWallet } from \"./providers/solana\";\nimport { WagmiWallet } from \"./providers/wagmi\";\nimport {\n InitPrivy,\n InitWagmi,\n InitSolana,\n Network,\n WalletChainType,\n WalletChainTypeEnum,\n ConnectorWalletType,\n InitAbstract,\n WalletChainTypeConfig,\n WalletType,\n} from \"./types\";\n\nconst testnetChainFallback = [ArbitrumSepoliaChainInfo, SolanaDevnetChainInfo];\n\n// const fetcher = (url: string) => fetch(url).then((res) => res.json());\n\nconst formatSwapChainInfo = (data: any = {}) => {\n return Object.keys(data).map((key) => {\n const chain = data[key];\n const { network_infos, token_infos } = chain;\n\n const nativeToken = token_infos.find(\n (item: any) => item.symbol === network_infos.currency_symbol,\n );\n\n if (nativeToken) {\n network_infos.currency_decimal = nativeToken.decimals;\n } else {\n // default 18 decimals\n network_infos.currency_decimal = 18;\n }\n\n return network_infos;\n });\n};\n\nconst processChainInfo = (chainInfo: any) =>\n chainInfo.map((row: any) =>\n defineChain({\n id: Number(row.chain_id),\n name: row.name,\n nativeCurrency: {\n decimals: row.currency_decimal,\n name: \"Ether\",\n symbol: row.currency_symbol,\n },\n rpcUrls: {\n default: {\n http: [row.public_rpc_url],\n },\n },\n blockExplorers: {\n default: { name: \"Explorer\", url: row.explorer_base_url },\n },\n }),\n ) || [];\n\ninterface WalletConnectorPrivyContextType {\n initChains: Chain[];\n mainnetChains: Chain[];\n testnetChains: Chain[];\n getChainsByNetwork: (network: \"mainnet\" | \"testnet\") => Chain[];\n openConnectDrawer: boolean;\n setOpenConnectDrawer: (open: boolean) => void;\n targetWalletType: WalletType | undefined;\n setTargetWalletType: (walletType: WalletType | undefined) => void;\n network: Network;\n setNetwork: (network: Network) => void;\n solanaInfo: {\n rpcUrl: string | null;\n network: WalletAdapterNetwork | null;\n } | null;\n setSolanaInfo: (\n solanaInfo: {\n rpcUrl: string | null;\n network: WalletAdapterNetwork | null;\n } | null,\n ) => void;\n termsOfUse: string;\n // TODO deprecated\n walletChainType: WalletChainType;\n // TODO new chaintype config\n walletChainTypeConfig: WalletChainTypeConfig;\n connectorWalletType: ConnectorWalletType;\n privyConfig: {\n loginMethods?: PrivyClientConfig[\"loginMethods\"];\n };\n}\n\nconst WalletConnectorPrivyContext =\n createContext<WalletConnectorPrivyContextType>({\n initChains: [mainnet],\n mainnetChains: [],\n testnetChains: [],\n getChainsByNetwork: () => [],\n openConnectDrawer: false,\n setOpenConnectDrawer: () => {},\n targetWalletType: undefined,\n setTargetWalletType: () => {},\n network: Network.mainnet,\n setNetwork: () => {},\n solanaInfo: null,\n setSolanaInfo: () => {},\n termsOfUse: \"\",\n walletChainType: WalletChainTypeEnum.EVM_SOL,\n walletChainTypeConfig: {\n hasEvm: true,\n hasSol: true,\n hasAbstract: false,\n },\n connectorWalletType: {\n disableWagmi: false,\n disablePrivy: false,\n disableSolana: false,\n disableAGW: false,\n },\n privyConfig: {\n loginMethods: [],\n },\n });\n\nexport const useWalletConnectorPrivy = () =>\n useContext(WalletConnectorPrivyContext);\n\ninterface WalletConnectorPrivyProps extends PropsWithChildren {\n privyConfig?: InitPrivy;\n wagmiConfig?: InitWagmi;\n solanaConfig?: InitSolana;\n abstractConfig?: InitAbstract;\n network: Network;\n customChains?: Chains;\n termsOfUse?: string;\n headerProps?: {\n mobile: React.ReactNode;\n };\n enableSwapDeposit?: boolean;\n}\n\nconst defaultPrivyLoginMethod = [\n \"email\",\n \"google\",\n \"twitter\",\n] as PrivyClientConfig[\"loginMethods\"];\nexport function WalletConnectorPrivyProvider(props: WalletConnectorPrivyProps) {\n const [walletChainType, setWalletChainType] = useState<WalletChainType>(\n WalletChainTypeEnum.EVM_SOL,\n );\n const [termsOfUse] = useState<string>(props.termsOfUse || \"\");\n const [network, setNetwork] = useState<Network>(props.network);\n const [initChains, setInitChains] = useState<Chain[]>([]);\n const [mainnetChains, setMainnetChains] = useState<Chain[]>([]);\n const [testnetChains, setTestnetChains] = useState<Chain[]>([]);\n const [mainnetChainInfos, setMainnetChainInfos] = useState<\n API.Chain[] | null\n >(null);\n const [testChainInfos, setTestChainInfos] = useState<API.Chain[] | null>(\n null,\n );\n\n const fetchMainChains = useMainnetChainsStore((state) => state.fetchData);\n const fetchTestChains = useTestnetChainsStore((state) => state.fetchData);\n\n const mainnetChainsHydrated = useMainnetChainsStore(\n (state) => state.hydrated,\n );\n const testChainsHydrated = useTestnetChainsStore((state) => state.hydrated);\n\n const mainnetChainInfosFromStore = useMainnetChainsStore(\n (state) => state.data,\n );\n const testChainInfosFromStore = useTestnetChainsStore((state) => state.data);\n\n const hasCustomChains =\n Array.isArray(props.customChains) && props.customChains.length > 0;\n\n const initRef = useRef(hasCustomChains);\n const [openConnectDrawer, setOpenConnectDrawer] = useState(false);\n const [targetWalletType, setTargetWalletType] = useState<\n WalletType | undefined\n >();\n const [privyConfig, setPrivyConfig] = useState<PrivyClientConfig>({\n loginMethods: props.privyConfig\n ? (props.privyConfig?.config?.loginMethods ?? defaultPrivyLoginMethod)\n : defaultPrivyLoginMethod,\n });\n const [solanaInfo, setSolanaInfo] = useState<{\n rpcUrl: string | null;\n network: WalletAdapterNetwork | null;\n } | null>(null);\n\n const connectorWalletType = useMemo(() => {\n const type: ConnectorWalletType = {\n disableWagmi: false,\n disablePrivy: false,\n disableSolana: false,\n disableAGW: false,\n };\n if (!props.privyConfig) {\n type.disablePrivy = true;\n }\n if (!props.wagmiConfig) {\n type.disableWagmi = true;\n }\n if (!props.solanaConfig) {\n type.disableSolana = true;\n }\n if (!props.abstractConfig) {\n type.disableAGW = true;\n }\n return type;\n }, [props.privyConfig, props.wagmiConfig, props.solanaConfig]);\n\n const walletChainTypeConfig = useMemo(() => {\n const chainTypeObj: WalletChainTypeConfig = {\n hasEvm: false,\n hasSol: false,\n hasAbstract: false,\n };\n initChains.forEach((chain) => {\n if (SolanaChains.has(chain.id)) {\n chainTypeObj.hasSol = true;\n } else if (AbstractChains.has(chain.id)) {\n chainTypeObj.hasAbstract = true;\n } else {\n chainTypeObj.hasEvm = true;\n }\n });\n return chainTypeObj;\n }, [initChains]);\n\n const {\n data: swapChainInfoRes,\n // loading: swapLoading,\n fetchData: fetchSwapData,\n } = useSwapSupportStore();\n\n // const { data: swapChainInfoRes, isLoading: swapLoading } = useSWR(\n // !props.customChains && props.enableSwapDeposit\n // ? \"https://fi-api.woo.org/swap_support\"\n // : null,\n // fetcher,\n // commonSwrOpts,\n // );\n\n useEffect(() => {\n if (!props.enableSwapDeposit || !!props.customChains) return;\n fetchSwapData();\n }, [props.enableSwapDeposit, props.customChains]);\n\n useEffect(() => {\n if (!mainnetChainsHydrated || !testChainsHydrated) return;\n\n if (\n Array.isArray(useMainnetChainsStore.getState().data) &&\n useTestnetChainsStore.getState().data\n ) {\n return;\n }\n\n fetchMainChains().then((data) => {\n setMainnetChainInfos(data);\n });\n fetchTestChains().then((data) => {\n setTestChainInfos(data);\n });\n }, [mainnetChainsHydrated, testChainsHydrated]);\n\n const handleCustomerChains = () => {\n const testChains = processChainInfo(\n props.customChains!.testnet?.map((item) => item.network_infos),\n );\n const mainnetChains = processChainInfo(\n props.customChains!.mainnet?.map((item) => item.network_infos),\n );\n setTestnetChains(testChains);\n setMainnetChains(mainnetChains);\n setInitChains([...testChains, ...mainnetChains] as [Chain, ...Chain[]]);\n const chainTypeObj: {\n hasEvm: boolean;\n hasSol: boolean;\n hasAbstract: boolean;\n } = {\n hasEvm: false,\n hasSol: false,\n hasAbstract: false,\n };\n [...testChains, ...mainnetChains].forEach((chain) => {\n if (SolanaChains.has(chain.id)) {\n chainTypeObj.hasSol = true;\n } else if (AbstractChains.has(chain.id)) {\n chainTypeObj.hasAbstract = true;\n } else {\n chainTypeObj.hasEvm = true;\n }\n });\n initRef.current = true;\n if (chainTypeObj.hasEvm && chainTypeObj.hasSol) {\n setWalletChainType(WalletChainTypeEnum.EVM_SOL);\n } else if (chainTypeObj.hasEvm) {\n setWalletChainType(WalletChainTypeEnum.onlyEVM);\n } else if (chainTypeObj.hasSol) {\n setWalletChainType(WalletChainTypeEnum.onlySOL);\n }\n };\n if (\n connectorWalletType.disablePrivy &&\n connectorWalletType.disableWagmi &&\n connectorWalletType.disableSolana &&\n connectorWalletType.disableAGW\n ) {\n throw new Error(\n \"Privy, Wagmi, Solana, Abstract are all disabled. Please enable at least one of them.\",\n );\n }\n\n const getChainsByNetwork = (network: \"mainnet\" | \"testnet\"): Chain[] => {\n return network === \"mainnet\" ? mainnetChains : testnetChains;\n };\n\n const value = useMemo(\n () => ({\n initChains,\n mainnetChains,\n testnetChains,\n getChainsByNetwork,\n openConnectDrawer,\n setOpenConnectDrawer,\n targetWalletType,\n setTargetWalletType,\n network,\n setNetwork,\n solanaInfo,\n setSolanaInfo,\n termsOfUse,\n walletChainType,\n connectorWalletType,\n walletChainTypeConfig,\n privyConfig,\n }),\n [\n initChains,\n mainnetChains,\n testnetChains,\n getChainsByNetwork,\n openConnectDrawer,\n setOpenConnectDrawer,\n targetWalletType,\n setTargetWalletType,\n network,\n setNetwork,\n solanaInfo,\n setSolanaInfo,\n termsOfUse,\n walletChainType,\n connectorWalletType,\n walletChainTypeConfig,\n privyConfig,\n ],\n );\n\n useEffect(() => {\n if (initRef.current) return;\n if (hasCustomChains) {\n return;\n }\n\n // Check which data source is available first (store or API)\n const hasStoreData = mainnetChainInfosFromStore && testChainInfosFromStore;\n const hasApiData = mainnetChainInfos && testChainInfos;\n\n // If neither store nor API data is ready, wait\n if (!hasStoreData && !hasApiData) {\n return;\n }\n\n // Always wait for swap loading to complete when swap is enabled\n if (props.enableSwapDeposit && !swapChainInfoRes) {\n return;\n }\n\n let testChainsList = [];\n let mainnetChainsList = [];\n try {\n // Use data in pairs: either both from store or both from API\n // Priority: if store data is available, use store; otherwise use API\n if (hasStoreData) {\n testChainsList = testChainInfosFromStore;\n mainnetChainsList = mainnetChainInfosFromStore;\n } else {\n testChainsList = testChainInfos || testnetChainFallback;\n mainnetChainsList = mainnetChainInfos || [];\n }\n\n const testChains = processChainInfo(testChainsList);\n const mainnetChains = processChainInfo(mainnetChainsList);\n\n const swapChains = processChainInfo(\n formatSwapChainInfo(swapChainInfoRes || {}),\n );\n\n const chains = [...testChains, ...mainnetChains];\n\n const filterSwapChains = swapChains.filter(\n (item: any) => !chains.some((chain) => chain.id === item.id),\n );\n\n setTestnetChains(testChains);\n setMainnetChains(mainnetChains);\n\n setInitChains([...chains, ...filterSwapChains] as [Chain, ...Chain[]]);\n } catch (error) {\n console.error(\"Error initChains:\", error);\n testChainsList = [ArbitrumSepoliaChainInfo, SolanaDevnetChainInfo];\n mainnetChainsList = [];\n }\n\n initRef.current = true;\n }, [\n props.customChains,\n mainnetChainInfos,\n testChainInfos,\n mainnetChainInfosFromStore,\n testChainInfosFromStore,\n swapChainInfoRes,\n props.enableSwapDeposit,\n // swapLoading,\n ]);\n\n useEffect(() => {\n if (props.customChains) {\n handleCustomerChains();\n }\n }, [props.customChains]);\n\n if (!initRef.current) {\n return null;\n }\n\n return (\n <WalletConnectorPrivyContext.Provider value={value}>\n <TooltipProvider delayDuration={300}>\n <PrivyWallet privyConfig={props.privyConfig} initChains={initChains}>\n <WagmiWallet wagmiConfig={props.wagmiConfig} initChains={initChains}>\n <SolanaWallet solanaConfig={props.solanaConfig}>\n <AbstractWallet>\n <Main headerProps={props.headerProps}>{props.children}</Main>\n </AbstractWallet>\n </SolanaWallet>\n </WagmiWallet>\n </PrivyWallet>\n </TooltipProvider>\n </WalletConnectorPrivyContext.Provider>\n );\n}\n","import * as viemExport from \"viem\";\nimport * as WagmiExport from \"wagmi\";\nimport * as WagmiConnectorsExport from \"wagmi/connectors\";\n\nexport {\n WalletConnectorPrivyProvider,\n useWalletConnectorPrivy,\n} from \"./provider\";\nexport { UserCenter, MwebUserCenter } from \"./components/userCenter\";\nexport * from \"./types\";\n\nexport const viem = viemExport;\n\nexport const wagmiConnectors = WagmiConnectorsExport;\n\nexport const wagmi = WagmiExport;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types.ts","../src/providers/abstractWallet/abstractWalletProvider.tsx","../src/providers/privy/privyWalletProvider.tsx","../src/stores/solanaWalletStore.ts","../src/providers/solana/solanaWalletProvider.tsx","../src/providers/wagmi/wagmiWalletProvider.tsx","../src/components/icons.tsx","../src/components/pwaDilaog.tsx","../src/util.ts","../src/hooks/useWallet.tsx","../src/components/renderConnector/abstractConnector.tsx","../src/components/renderConnector/privyConnector.tsx","../src/components/common.tsx","../src/components/renderConnector/solanaConnector.tsx","../src/components/renderConnector/wagmiConnector.tsx","../src/components/renderConnector/index.tsx","../src/components/switchNetworkTips.tsx","../src/components/walletCard.tsx","../src/components/renderNonPrivyWallet/addAbstractWallet.tsx","../src/components/renderNonPrivyWallet/addEvmWallet.tsx","../src/components/renderNonPrivyWallet/addSolanaWallet.tsx","../src/components/renderNonPrivyWallet/index.tsx","../src/components/renderPrivyWallet.tsx","../src/components/connectDrawer.tsx","../src/components/linkDevice.tsx","../src/components/userCenter.tsx","../src/injectUsercenter.tsx","../src/main.tsx","../src/providers/abstractWallet/initAbstractProvider.tsx","../src/providers/abstractWallet/index.tsx","../src/providers/privy/initPrivyProvider.tsx","../src/providers/privy/index.tsx","../src/providers/solana/initSolanaProvider.tsx","../src/providers/solana/index.tsx","../src/providers/wagmi/initWagmiProvider.tsx","../src/providers/wagmi/index.tsx","../src/provider.tsx","../src/index.ts"],"names":["Network","WalletType","WalletConnectType","WalletAdapterNetwork","SOLANA_TESTNET_CHAINID","SOLANA_MAINNET_CHAINID","ABSTRACT_TESTNET_CHAINID","ABSTRACT_MAINNET_CHAINID","WalletChainTypeEnum","createContext","useLoginWithAbstract","useState","useAbstractClient","useAccount","useGlobalWalletSignerAccount","useMemo","ChainNamespace","useEffect","windowGuard","useContext","usePrivy","useWallets","useRef","useSolanaWallets","useTrack","TrackerEventName","React","create","useStorageLedgerAddress","useWallet","wagmiConnectors","useConnect","useDisconnect","useSwitchChain","useCallback","chainId","connector","modal","useModal","useTranslation","SimpleSheet","SheetHeader","Text","Flex","Divider","cn","AbstractChains","SolanaChains","useLocalStorage","ConnectorKey","useStorageChain","defaultMainnetChains","defaultTestnetChains","walletType","useScreen","Grid","SimpleDialog","ChainIcon","Popover","ScrollArea","ExclamationFillIcon","toast","formatAddress","Tooltip","CopyIcon","Checkbox","DropdownMenuRoot","DropdownMenuTrigger","DropdownMenuPortal","DropdownMenuContent","DropdownMenuItem","ChevronDownIcon","ChevronUpIcon","CloseSquareFillIcon","Trans","useWalletConnector","ABSTRACT_CHAIN_ID_MAP","AccountStatusEnum","Button","AuthGuard","installExtension","ExtensionPositionEnum","WalletConnectorContext","abstract","abstractTestnet","AbstractWalletProvider","PrivyProvider","PhantomWalletAdapter","WalletProvider","QueryClient","createConfig","mainnet","createStorage","injected","http","WagmiProvider","QueryClientProvider","EMPTY_OBJECT","ArbitrumSepoliaChainInfo","SolanaDevnetChainInfo","defineChain","useMainnetChainsStore","useTestnetChainsStore","useSwapSupportStore","mainnetChains","network","TooltipProvider","viemExport","WagmiConnectorsExport","WagmiExport"],"mappings":"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","file":"index.js","sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport { PrivyClientConfig } from \"@privy-io/react-auth\";\nimport {\n Adapter,\n WalletAdapter,\n WalletAdapterNetwork,\n WalletError,\n} from \"@solana/wallet-adapter-base\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport { Connector, CreateConnectorFn, Storage } from \"wagmi\";\nimport { WalletState } from \"@orderly.network/hooks\";\nimport {\n ABSTRACT_MAINNET_CHAINID,\n ABSTRACT_TESTNET_CHAINID,\n ChainNamespace,\n SOLANA_MAINNET_CHAINID,\n SOLANA_TESTNET_CHAINID,\n} from \"@orderly.network/types\";\n\nexport type SolanaInitialProps = PropsWithChildren<{\n network?: WalletAdapterNetwork;\n endPoint?: string;\n mainnetRpc?: string;\n devnetRpc?: string;\n wallets?: Adapter[];\n // wallet not ready error handle\n onError?: (error: WalletError, adapter?: Adapter) => void;\n}>;\n\nexport enum Network {\n mainnet = \"mainnet\",\n testnet = \"testnet\",\n}\n\nexport enum WalletType {\n EVM = \"EVM\",\n SOL = \"SOL\",\n ABSTRACT = \"Abstract\",\n}\n\nexport enum WalletConnectType {\n EVM = \"EVM\",\n SOL = \"SOL\",\n PRIVY = \"privy\",\n ABSTRACT = \"Abstract\",\n}\n\nexport interface ConnectProps {\n walletType: WalletConnectType;\n extraType?: string;\n connector?: Connector;\n walletAdapter?: WalletAdapter;\n}\n\nexport interface InitPrivy {\n appid: string;\n config?: {\n appearance: Omit<\n PrivyClientConfig[\"appearance\"],\n \"walletChainType\" | \"walletList\"\n >;\n loginMethods?: PrivyClientConfig[\"loginMethods\"];\n };\n}\n\nexport interface InitWagmi {\n connectors?: CreateConnectorFn[];\n storage?: Storage;\n}\n\nexport interface InitSolana {\n mainnetRpc?: string;\n devnetRpc?: string;\n wallets: Adapter[];\n onError: (error: WalletError, adapter?: Adapter) => void;\n}\n\nexport interface InitAbstract {\n queryClient?: QueryClient;\n}\n\nexport const SolanaChains = new Map([\n [WalletAdapterNetwork.Devnet, SOLANA_TESTNET_CHAINID],\n [WalletAdapterNetwork.Mainnet, SOLANA_MAINNET_CHAINID],\n]);\n\nexport const SolanaChainsMap = new Map<Network | WalletAdapterNetwork, number>([\n [WalletAdapterNetwork.Devnet, SOLANA_TESTNET_CHAINID],\n [Network.testnet, SOLANA_TESTNET_CHAINID],\n [Network.mainnet, SOLANA_MAINNET_CHAINID],\n [WalletAdapterNetwork.Mainnet, SOLANA_MAINNET_CHAINID],\n]);\n\nexport const AbstractChainsMap = new Map<Network, number>([\n [Network.testnet, ABSTRACT_TESTNET_CHAINID],\n [Network.mainnet, ABSTRACT_MAINNET_CHAINID],\n]);\n\nexport interface ConnectorWalletType {\n disableWagmi?: boolean;\n disablePrivy?: boolean;\n disableSolana?: boolean;\n disableAGW?: boolean;\n}\nexport interface WalletChainTypeConfig {\n hasEvm: boolean;\n hasSol: boolean;\n hasAbstract: boolean;\n}\nexport enum WalletChainTypeEnum {\n onlyEVM = \"onlyEVM\",\n onlySOL = \"onlySOL\",\n EVM_SOL = \"EVM_SOL\",\n}\nexport type WalletChainType = WalletChainTypeEnum;\n\nexport type IWalletState = WalletState & {\n chain?: {\n namespace: ChainNamespace;\n id: number;\n };\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { createContext, PropsWithChildren, useContext, useMemo } from \"react\";\nimport { transformEIP1193Provider } from \"@abstract-foundation/agw-client\";\nimport {\n useAbstractClient,\n useGlobalWalletSignerAccount,\n useLoginWithAbstract,\n} from \"@abstract-foundation/agw-react\";\nimport { useAccount, useWalletClient } from \"wagmi\";\nimport { ConnectedChain, WalletState } from \"@orderly.network/hooks\";\nimport { ABSTRACT_CHAIN_ID_MAP, ChainNamespace } from \"@orderly.network/types\";\nimport { windowGuard } from \"@orderly.network/utils\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { AbstractChainsMap, IWalletState } from \"../../types\";\n\ninterface AbstractWalletContextValue {\n connect: () => void;\n isConnected: boolean;\n disconnect: () => void;\n wallet: IWalletState | null;\n connectedChain: ConnectedChain | undefined;\n}\n\nconst AbstractWalletContext = createContext<AbstractWalletContextValue | null>(\n null,\n);\n\nexport const AbstractWalletProvider = (props: PropsWithChildren) => {\n const { network } = useWalletConnectorPrivy();\n const { login, logout } = useLoginWithAbstract();\n const [wallet, setWallet] = useState<IWalletState | null>(null);\n const { data: client, isLoading: isClientLoading } = useAbstractClient();\n const { connector } = useAccount();\n const { address, status } = useGlobalWalletSignerAccount();\n\n const connect = () => {\n return login();\n };\n\n const disconnect = () => {\n return logout();\n };\n\n const isConnected = useMemo(() => {\n return !!(client && connector);\n }, [client, connector]);\n\n const connectedChain = useMemo(() => {\n if (!client || !connector) {\n return;\n }\n return {\n id: AbstractChainsMap.get(network)!,\n namespace: ChainNamespace.evm,\n };\n }, [client, connector]);\n\n const value = useMemo(\n () => ({\n isConnected,\n connect,\n disconnect,\n wallet,\n connectedChain,\n }),\n [connect, disconnect, isConnected, wallet, connectedChain],\n );\n\n useEffect(() => {\n if (!client || !connector || !address) {\n setWallet(null);\n return;\n }\n connector?.getProvider().then((provider: any) => {\n console.log(\"xxx abstract wallet in wagmi provider\", provider);\n const tempWallet: IWalletState = {\n label: \"AGW\",\n icon: \"\",\n provider: {\n ...provider,\n agwWallet: true,\n sendTransaction: async (params: any) => {\n console.log(\"--- agw wallet sendTransaction\", params);\n return client.sendTransaction(params);\n },\n writeContract: async (params: any) => {\n console.log(\"--- agw wallet writeContract\", params);\n return client.writeContract(params);\n },\n },\n accounts: [\n {\n address: address,\n },\n ],\n chains: [\n {\n id: AbstractChainsMap.get(network)!,\n namespace: ChainNamespace.evm,\n },\n ],\n chain: connectedChain,\n additionalInfo: {\n AGWAddress: client.account.address,\n },\n };\n console.log(\"-- abstract wallet tempWallet\", tempWallet);\n setWallet(tempWallet);\n });\n }, [client, connectedChain, connector, address, isClientLoading]);\n\n useEffect(() => {\n windowGuard(() => {\n const connection = localStorage.getItem(\n \"privy-caw:cm04asygd041fmry9zmcyn5o5:connection\",\n );\n if (connection) {\n login();\n }\n });\n }, []);\n return (\n <AbstractWalletContext.Provider value={value}>\n {props.children}\n </AbstractWalletContext.Provider>\n );\n};\n\nexport function useAbstractWallet() {\n const context = useContext(AbstractWalletContext);\n if (!context) {\n throw new Error(\n \"useAbstractWallet must be used within a AbstractWalletProvider\",\n );\n }\n return context;\n}\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n usePrivy,\n useSolanaWallets,\n useWallets,\n WalletWithMetadata,\n} from \"@privy-io/react-auth\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { useTrack, WalletState } from \"@orderly.network/hooks\";\nimport { ChainNamespace, TrackerEventName } from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { SolanaChainsMap } from \"../../types\";\n\ninterface WalletStatePrivy extends WalletState {\n chain: {\n id: number;\n namespace: ChainNamespace;\n };\n}\n\ninterface PrivyWalletContextValue {\n connect: () => void;\n walletEVM: WalletStatePrivy | null;\n walletSOL: WalletStatePrivy | null;\n isConnected: boolean;\n switchChain: (chainId: number) => Promise<any>;\n linkedAccount: { type: string; address: string | null } | null;\n exportWallet: any;\n createEvmWallet: any;\n createSolanaWallet: any;\n disconnect: () => Promise<void>;\n}\n\nconst getPrivyEmbeddedWalletChainId = (chainId: string) => {\n if (!chainId) {\n return null;\n }\n return parseInt(chainId.split(\"eip155:\")[1]);\n};\n\nconst defaultUseSolanaWallets = {\n ready: false,\n wallets: [],\n createWallet: () => Promise.resolve(),\n exportWallet: () => Promise.resolve(),\n};\nconst defaultUseWallets = { wallets: [] };\n\nconst PrivyWalletContext = createContext<PrivyWalletContextValue | null>(null);\n\nexport const PrivyWalletProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const { network, solanaInfo, setSolanaInfo, connectorWalletType } =\n useWalletConnectorPrivy();\n const {\n login,\n logout,\n ready,\n authenticated,\n user,\n exportWallet: exportEvmWallet,\n createWallet: createEvmWallet,\n } = usePrivy();\n const { wallets: walletsEVM } = connectorWalletType.disablePrivy\n ? defaultUseWallets\n : useWallets();\n const connectedRef = useRef(false);\n\n const {\n ready: solanaReady,\n wallets: walletsSOL,\n createWallet: createSolanaWallet,\n exportWallet: exportSolanaWallet,\n } = connectorWalletType.disablePrivy\n ? defaultUseSolanaWallets\n : useSolanaWallets();\n\n const [walletEVM, setWalletEVM] = useState<WalletStatePrivy | null>(null);\n const [walletSOL, setWalletSOL] = useState<WalletStatePrivy | null>(null);\n\n const { track } = useTrack();\n\n const linkedAccount = useMemo(() => {\n if (user && user.linkedAccounts) {\n const account = user.linkedAccounts\n .filter((item) => item.type !== \"wallet\")\n .sort(\n (a, b) =>\n (b.latestVerifiedAt?.getTime() ?? 0) -\n (a.latestVerifiedAt?.getTime() ?? 0),\n )[0];\n let address = null;\n if (account.type === \"email\") {\n address = account.address;\n } else if (account.type === \"twitter_oauth\") {\n address = `@${account.username}`;\n } else if (account.type === \"google_oauth\") {\n address = `@${account.name}`;\n } else if (account.type === \"telegram\") {\n address = `@${account.username}`;\n }\n return {\n type: account.type,\n address: address,\n };\n }\n return null;\n }, [user]);\n\n const switchChain = (chainId: number) => {\n const wallet = walletsEVM[0];\n if (wallet) {\n return wallet.switchChain(chainId);\n }\n return Promise.reject(\"no wallet\");\n };\n\n const connect = () => {\n login();\n };\n\n const disconnect = () => {\n return logout();\n };\n\n const exportWallet = (namespace: ChainNamespace) => {\n console.log(\"xxxx export wallet\", {\n namespace,\n });\n if (namespace === ChainNamespace.evm) {\n track(TrackerEventName.clickExportPrivateKey, {\n type: \"evm\",\n });\n return exportEvmWallet();\n } else if (namespace === ChainNamespace.solana) {\n track(TrackerEventName.clickExportPrivateKey, {\n type: \"solana\",\n });\n return exportSolanaWallet();\n }\n return Promise.reject(\"no namespace\");\n };\n\n const isConnected = useMemo(() => {\n if (ready && authenticated) {\n return true;\n }\n return false;\n }, [ready, authenticated]);\n\n useEffect(() => {\n if (!authenticated || !walletsEVM || !walletsEVM[0]) {\n setWalletEVM(null);\n return;\n }\n const wallet = walletsEVM[0];\n wallet.getEthereumProvider().then((provider: any) => {\n setWalletEVM({\n label: \"privy\",\n icon: \"\",\n provider: provider,\n accounts: [\n {\n address: wallet.address,\n },\n ],\n chains: [\n {\n id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,\n namespace: ChainNamespace.evm,\n },\n ],\n chain: {\n id: getPrivyEmbeddedWalletChainId(wallet.chainId) ?? 1,\n namespace: ChainNamespace.evm,\n },\n });\n });\n }, [walletsEVM, authenticated]);\n\n useEffect(() => {\n // console.log('Solana wallet effect triggered:', {\n // authenticated,\n // solanaReady,\n // user,\n // walletsSOL,\n // });\n if (!authenticated) {\n setWalletSOL(null);\n return;\n }\n if (!solanaReady) {\n return;\n }\n if (!user) {\n return;\n }\n const embededSolanaWallet = (\n user?.linkedAccounts as WalletWithMetadata[]\n ).find(\n (item: WalletWithMetadata) =>\n item.chainType === \"solana\" && item.connectorType === \"embedded\",\n );\n\n if (!embededSolanaWallet) {\n createSolanaWallet().then();\n return;\n }\n\n if (!walletsSOL || !walletsSOL[0]) {\n return;\n }\n\n const wallet = walletsSOL.find((w: any) => w.connectorType === \"embedded\");\n if (wallet) {\n if (walletSOL && wallet.address === walletSOL.accounts[0].address) {\n if (walletSOL.chain.id === SolanaChainsMap.get(network)!) {\n return;\n }\n }\n\n setWalletSOL({\n label: \"privy\",\n icon: \"\",\n provider: {\n signMessage: wallet.signMessage,\n signTransaction: wallet.signTransaction,\n sendTransaction: wallet.sendTransaction,\n network: solanaInfo?.network ?? WalletAdapterNetwork.Devnet,\n rpcUrl: solanaInfo?.rpcUrl ?? undefined,\n },\n accounts: [\n {\n address: wallet.address,\n },\n ],\n chains: [\n {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n chain: {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n },\n });\n }\n }, [\n walletsSOL,\n authenticated,\n createSolanaWallet,\n solanaReady,\n user,\n walletSOL,\n network,\n solanaInfo,\n ]);\n\n useEffect(() => {\n if (isConnected && linkedAccount) {\n if (connectedRef.current) {\n return;\n }\n connectedRef.current = true;\n track(TrackerEventName.socialLoginSuccess, {\n type: linkedAccount.type,\n address: linkedAccount.address,\n });\n }\n }, [isConnected, linkedAccount, connectedRef]);\n\n const value = useMemo(\n () => ({\n connect,\n walletEVM,\n walletSOL,\n isConnected,\n disconnect,\n switchChain,\n linkedAccount,\n exportWallet,\n createEvmWallet,\n createSolanaWallet,\n }),\n [\n connect,\n walletEVM,\n walletSOL,\n isConnected,\n disconnect,\n switchChain,\n linkedAccount,\n exportWallet,\n createEvmWallet,\n createSolanaWallet,\n ],\n );\n\n return (\n <PrivyWalletContext.Provider value={value}>\n {children}\n </PrivyWalletContext.Provider>\n );\n};\n\nexport function usePrivyWallet() {\n const context = useContext(PrivyWalletContext);\n if (!context) {\n throw new Error(\"usePrivyWallet must be used within a PrivyWalletProvider\");\n }\n return context;\n}\n","// stores/solanaWalletStore.ts\nimport { WalletAdapterNetwork, WalletName } from \"@solana/wallet-adapter-base\";\nimport { create } from \"zustand\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { Network, SolanaChainsMap } from \"../types\";\n\ninterface WalletAccount {\n address: string;\n}\n\ninterface WalletChain {\n id: number;\n namespace: ChainNamespace;\n}\n\ninterface WalletProvider {\n rpcUrl: string | null;\n network: WalletAdapterNetwork;\n signMessage: any;\n signTransaction: any;\n sendTransaction: any;\n}\n\ninterface Wallet {\n label: string;\n icon: string;\n provider: WalletProvider;\n accounts: WalletAccount[];\n chains: WalletChain[];\n chain: WalletChain;\n}\n\ninterface WalletMethods {\n select: (walletName: WalletName) => void;\n connectSolana: () => Promise<void>;\n walletSolana: any;\n publicKey: any;\n signMessage: any;\n signTransaction: any;\n sendTransaction: any;\n disconnectSolana: () => Promise<void>;\n network: Network;\n solanaInfo: any;\n}\n\ninterface SolanaWalletState {\n // State\n wallet: Wallet | null;\n isConnecting: boolean;\n error: Error | null;\n isManual: boolean;\n walletMethods: WalletMethods | null;\n pendingWalletName: string | null;\n\n // Methods\n connect: (walletName: string) => Promise<Wallet>;\n disconnect: () => Promise<void>;\n setWallet: (wallet: Wallet | null) => void;\n setError: (error: Error | null) => void;\n setIsManual: (isManual: boolean) => void;\n setWalletMethods: (methods: WalletMethods) => void;\n setPendingWalletName: (name: string | null) => void;\n}\n\nexport const useSolanaWalletStore = create<SolanaWalletState>((set, get) => ({\n wallet: null,\n isConnecting: false,\n error: null,\n isManual: false,\n walletMethods: null,\n pendingWalletName: null,\n\n connect: async (walletName: string) => {\n const { setIsManual, walletMethods } = get();\n\n if (!walletMethods) {\n throw new Error(\"Wallet methods not initialized\");\n }\n\n setIsManual(true);\n set({ pendingWalletName: walletName });\n\n try {\n set({ isConnecting: true, error: null });\n\n const { walletSolana, select } = walletMethods;\n\n select(walletName as WalletName);\n await new Promise<void>((resolve) => {\n const checkWallet = () => {\n const currentWallet = get().walletMethods?.walletSolana;\n console.log(\"currentWallet\", currentWallet);\n if (currentWallet) {\n resolve();\n } else {\n setTimeout(checkWallet, 500);\n }\n };\n checkWallet();\n });\n\n const updatedWalletMethods = get().walletMethods;\n if (!updatedWalletMethods) {\n throw new Error(\"Wallet methods not initialized\");\n }\n\n if (!updatedWalletMethods.publicKey) {\n await updatedWalletMethods.connectSolana();\n }\n\n const lastestWalletMethods = get().walletMethods;\n if (!lastestWalletMethods) {\n throw new Error(\"Wallet methods not initialized\");\n }\n if (!lastestWalletMethods.publicKey) {\n throw new Error(\"Wallet not connected\");\n }\n\n const wallet: Wallet = {\n label: updatedWalletMethods.walletSolana.adapter.name,\n icon: \"\",\n provider: {\n rpcUrl: lastestWalletMethods.solanaInfo?.rpcUrl ?? null,\n network:\n lastestWalletMethods.solanaInfo?.network ??\n WalletAdapterNetwork.Devnet,\n signMessage: lastestWalletMethods.signMessage,\n signTransaction: lastestWalletMethods.signTransaction,\n sendTransaction: lastestWalletMethods.sendTransaction,\n },\n accounts: [\n {\n address: lastestWalletMethods.publicKey.toBase58(),\n },\n ],\n chains: [\n {\n id: SolanaChainsMap.get(lastestWalletMethods.network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n chain: {\n id: SolanaChainsMap.get(lastestWalletMethods.network)!,\n namespace: ChainNamespace.solana,\n },\n };\n\n set({\n wallet,\n isConnecting: false,\n isManual: false,\n pendingWalletName: null,\n });\n\n return wallet;\n } catch (error) {\n set({\n error: error as Error,\n isConnecting: false,\n isManual: false,\n pendingWalletName: null,\n });\n throw error;\n }\n },\n\n disconnect: async () => {\n const { walletMethods } = get();\n\n if (!walletMethods) {\n throw new Error(\"Wallet methods not initialized\");\n }\n\n try {\n await walletMethods.disconnectSolana();\n set({ wallet: null, error: null });\n } catch (error) {\n set({ error: error as Error });\n throw error;\n }\n },\n\n setWallet: (wallet: Wallet | null) => set({ wallet }),\n setError: (error: Error | null) => set({ error }),\n setIsManual: (isManual: boolean) => set({ isManual }),\n setWalletMethods: (methods: WalletMethods) => set({ walletMethods: methods }),\n setPendingWalletName: (name: string | null) =>\n set({ pendingWalletName: name }),\n}));\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { WalletAdapterNetwork, WalletName } from \"@solana/wallet-adapter-base\";\nimport { useConnection, useWallet } from \"@solana/wallet-adapter-react\";\nimport { useStorageLedgerAddress } from \"@orderly.network/hooks\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useSolanaWalletStore } from \"../../stores/solanaWalletStore\";\nimport { SolanaChainsMap } from \"../../types\";\n\ninterface SolanaWalletContextValue {\n wallets: any[];\n connectedChain: { id: number; namespace: ChainNamespace } | null;\n connect: (walletName: string) => Promise<any>;\n wallet: any;\n disconnect: () => void;\n isConnected: boolean;\n}\n\nconst defaultUseSolanaWallet = {\n wallets: [],\n select: () => Promise.resolve(),\n connect: () => Promise.resolve(),\n wallet: null,\n publicKey: null,\n signMessage: () => Promise.resolve(),\n signTransaction: () => Promise.resolve(),\n sendTransaction: () => Promise.resolve(),\n disconnect: () => Promise.resolve(),\n};\n\nconst SolanaWalletContext = createContext<SolanaWalletContextValue | null>(\n null,\n);\n\nexport const SolanaWalletProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const { setLedgerAddress } = useStorageLedgerAddress();\n const { network, solanaInfo, connectorWalletType } =\n useWalletConnectorPrivy();\n\n const {\n wallets,\n select,\n connect: connectSolana,\n wallet: walletSolana,\n publicKey,\n signMessage,\n signTransaction,\n sendTransaction,\n disconnect: disconnectSolana,\n } = connectorWalletType.disableSolana ? defaultUseSolanaWallet : useWallet();\n\n const {\n wallet,\n connect,\n disconnect: disconnectWallet,\n setWallet,\n setWalletMethods,\n isManual,\n } = useSolanaWalletStore();\n\n useEffect(() => {\n if (!walletSolana || isManual) return;\n\n if (!publicKey) {\n return;\n }\n\n const newWallet = {\n label: walletSolana.adapter.name,\n icon: \"\",\n provider: {\n rpcUrl: solanaInfo?.rpcUrl ?? null,\n network: solanaInfo?.network ?? WalletAdapterNetwork.Devnet,\n signMessage,\n signTransaction,\n sendTransaction,\n },\n accounts: [\n {\n address: publicKey.toBase58(),\n },\n ],\n chains: [\n {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n },\n ],\n chain: {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n },\n };\n\n if (walletSolana.adapter.name === \"Ledger\") {\n setLedgerAddress(publicKey.toBase58());\n }\n\n setWallet(newWallet);\n }, [\n publicKey,\n walletSolana,\n signMessage,\n signTransaction,\n sendTransaction,\n solanaInfo,\n isManual,\n ]);\n\n useEffect(() => {\n setWalletMethods({\n select,\n connectSolana,\n walletSolana,\n publicKey,\n signMessage,\n signTransaction,\n sendTransaction,\n disconnectSolana,\n network,\n solanaInfo,\n });\n }, [\n select,\n connectSolana,\n walletSolana,\n publicKey,\n signMessage,\n signTransaction,\n sendTransaction,\n disconnectSolana,\n network,\n solanaInfo,\n ]);\n\n const value = useMemo(\n () => ({\n wallets,\n connectedChain: publicKey\n ? {\n id: SolanaChainsMap.get(network)!,\n namespace: ChainNamespace.solana,\n }\n : null,\n connect,\n wallet,\n disconnect: disconnectWallet,\n isConnected: !!publicKey,\n }),\n [wallets, publicKey, wallet, network],\n );\n\n return (\n <SolanaWalletContext.Provider value={value}>\n {children}\n </SolanaWalletContext.Provider>\n );\n};\n\nexport function useSolanaWallet() {\n const context = useContext(SolanaWalletContext);\n if (!context) {\n throw new Error(\n \"useSolanaWallet must be used within a SolanaWalletProvider\",\n );\n }\n return context;\n}\n","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n Connector,\n useAccount,\n useConnect,\n useDisconnect,\n useSwitchChain,\n} from \"wagmi\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\n\ninterface WagmiWalletContextValue {\n connectors: Connector[];\n connect: (args: any) => void;\n wallet: any;\n connectedChain: { id: number; namespace: ChainNamespace } | null;\n setChain: (chainId: number) => Promise<any>;\n disconnect: () => void;\n isConnected: boolean;\n}\n\nconst WagmiWalletContext = createContext<WagmiWalletContextValue | null>(null);\n\nexport const WagmiWalletProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const { connectorWalletType } = useWalletConnectorPrivy();\n const [wallet, setWallet] = useState<undefined | any>(undefined);\n const { connect, connectors: wagmiConnectors } =\n connectorWalletType.disableWagmi\n ? { connect: () => Promise.resolve(), connectors: [] }\n : useConnect();\n const { disconnect } = connectorWalletType.disableWagmi\n ? { disconnect: () => Promise.resolve() }\n : useDisconnect();\n const { connector, isConnected, address, chainId } =\n connectorWalletType.disableWagmi\n ? { connector: null, isConnected: false, address: null, chainId: null }\n : useAccount();\n const { switchChain } = connectorWalletType.disableWagmi\n ? { switchChain: () => Promise.resolve() }\n : useSwitchChain();\n\n const connectedChain = useMemo(() => {\n if (chainId) {\n return {\n id: chainId,\n namespace: ChainNamespace.evm,\n };\n }\n return null;\n }, [chainId]);\n\n const setChain = useCallback(\n (chainId: number) => {\n return new Promise((resolve, reject) => {\n switchChain(\n { chainId },\n {\n onSuccess: () => resolve(true),\n onError: (e) => {\n console.log(\"-- switch chain error\", e);\n return reject(e);\n },\n },\n );\n });\n },\n [switchChain],\n );\n\n useEffect(() => {\n if (!connector || !isConnected) {\n setWallet(undefined);\n return;\n }\n connector.getProvider?.().then((provider) => {\n setWallet({\n label: connector.name,\n icon: \"\",\n provider: provider,\n accounts: [\n {\n address: address,\n },\n ],\n chains: [\n {\n id: chainId,\n namespace: ChainNamespace.evm,\n },\n ],\n chain: connectedChain,\n });\n });\n }, [connector, chainId, isConnected, address, connectedChain]);\n\n const connectors = useMemo(() => {\n return wagmiConnectors\n .filter((connector: any) => connector.id !== \"injected\")\n .sort((a: any, b: any) =>\n a.type === \"injected\" ? -1 : 1,\n ) as Connector[];\n }, [wagmiConnectors]);\n\n const value = useMemo(\n () => ({\n connectors,\n connect,\n wallet,\n connectedChain,\n setChain,\n disconnect,\n isConnected,\n }),\n [\n connectors,\n connect,\n wallet,\n connectedChain,\n setChain,\n disconnect,\n isConnected,\n ],\n );\n\n return (\n <WagmiWalletContext.Provider value={value}>\n {children}\n </WagmiWalletContext.Provider>\n );\n};\n\nexport function useWagmiWallet() {\n const context = useContext(WagmiWalletContext);\n if (!context) {\n throw new Error(\"useWagmiWallet must be used within a WagmiWalletProvider\");\n }\n return context;\n}\n","import React, { FC, SVGProps } from \"react\";\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\nexport const MoreIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.00521 6.66797C8.74161 6.66797 9.33854 7.26464 9.33854 8.0013C9.33854 8.73797 8.74161 9.33464 8.00521 9.33464C7.26881 9.33464 6.67188 8.73797 6.67188 8.0013C6.67188 7.26464 7.26881 6.66797 8.00521 6.66797Z\" />\n <path d=\"M3.33333 6.66797C4.06973 6.66797 4.66667 7.26464 4.66667 8.0013C4.66667 8.73797 4.06973 9.33464 3.33333 9.33464C2.59693 9.33464 2 8.73797 2 8.0013C2 7.26464 2.59693 6.66797 3.33333 6.66797Z\" />\n <path d=\"M12.6666 6.66797C13.403 6.66797 14 7.26464 14 8.0013C14 8.73797 13.403 9.33464 12.6666 9.33464C11.9302 9.33464 11.3333 8.73797 11.3333 8.0013C11.3333 7.26464 11.9302 6.66797 12.6666 6.66797Z\" />\n </svg>\n);\nexport const DisconnectIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n {...props}\n >\n <g id=\"box-arrow-right\">\n <path\n id=\"Vector\"\n d=\"M1.99365 4.66056C1.99365 3.1879 3.18759 1.9939 4.66032 1.9939H7.32698C8.79965 1.9939 9.99365 3.1879 9.99365 4.66056C9.99365 5.02856 9.69498 5.32723 9.32698 5.32723C8.95898 5.32723 8.66032 5.02856 8.66032 4.66056C8.66032 3.92389 8.06365 3.32723 7.32698 3.32723H4.66032C3.92392 3.32723 3.32699 3.92389 3.32699 4.66056V11.3272C3.32699 12.0639 3.92392 12.6606 4.66032 12.6606H7.32698C8.06365 12.6606 8.66032 12.0639 8.66032 11.3272C8.66032 10.9592 8.95898 10.6606 9.32698 10.6606C9.69498 10.6606 9.99365 10.9592 9.99365 11.3272C9.99365 12.7999 8.79965 13.9939 7.32698 13.9939H4.66032C3.18759 13.9939 1.99365 12.7999 1.99365 11.3272V4.66056ZM6.66032 7.99389C6.66032 7.62589 6.95898 7.32722 7.32698 7.32722H12.369L11.0563 5.99389L11.9937 5.05656L14.473 7.51456C14.733 7.77523 14.733 8.21255 14.473 8.47322L11.9937 10.9312L11.0563 9.99389L12.369 8.66056H7.32698C6.95898 8.66056 6.66032 8.36189 6.66032 7.99389Z\"\n />\n </g>\n </svg>\n);\n\nexport const CloseIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <g id=\"x-square-fill\">\n <path\n id=\"Vector\"\n d=\"M5.83834 2.44141C3.9975 2.44141 2.505 3.93391 2.505 5.77474V14.1081C2.505 15.9489 3.9975 17.4414 5.83834 17.4414H14.1717C16.0125 17.4414 17.505 15.9489 17.505 14.1081V5.77474C17.505 3.93391 16.0125 2.44141 14.1717 2.44141H5.83834ZM7.505 6.60807C7.71834 6.60807 7.94083 6.67974 8.10417 6.84224L10.005 8.74307L11.9058 6.84224C12.0683 6.67974 12.2917 6.60807 12.505 6.60807C12.7183 6.60807 12.9408 6.67974 13.1042 6.84224C13.4292 7.16808 13.4292 7.71473 13.1042 8.04057L11.2033 9.94141L13.1042 11.8422C13.4292 12.1681 13.4292 12.7147 13.1042 13.0406C12.7783 13.3656 12.2317 13.3656 11.9058 13.0406L10.005 11.1397L8.10417 13.0406C7.77833 13.3656 7.23168 13.3656 6.90584 13.0406C6.58084 12.7147 6.58084 12.1681 6.90584 11.8422L8.80668 9.94141L6.90584 8.04057C6.58084 7.71473 6.58084 7.16808 6.90584 6.84224C7.06834 6.67974 7.29167 6.60807 7.505 6.60807Z\"\n />\n </g>\n </svg>\n);\n\nexport const ArrowRightIcon: FC<IconProps> = ({ size, ...props }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 14 14\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M3.50696 6.9958C3.50696 6.6738 3.76788 6.41305 4.08971 6.41305C4.36842 6.41305 7.62762 6.41305 8.49679 6.41305L6.76662 4.6648L7.58621 3.84521L10.336 6.57697C10.4504 6.69072 10.507 6.84355 10.507 6.99639C10.507 7.14864 10.4498 7.30089 10.336 7.41464L7.58621 10.1464L6.76662 9.3268L8.49679 7.57854C7.62762 7.57854 4.36842 7.57854 4.08971 7.57854C3.76788 7.57854 3.50696 7.3178 3.50696 6.9958Z\" />\n </svg>\n);\n\nexport const ArrowRightLinearGradientIcon: FC<IconProps> = ({\n size,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n >\n <path\n d=\"M5.01001 9.994C5.01001 9.534 5.38276 9.1615 5.84251 9.1615C6.24068 9.1615 10.8967 9.1615 12.1383 9.1615L9.66667 6.664L10.8375 5.49316L14.7658 9.39568C14.9292 9.55818 15.01 9.7765 15.01 9.99484C15.01 10.2123 14.9283 10.4298 14.7658 10.5923L10.8375 14.4948L9.66667 13.324L12.1383 10.8265C10.8967 10.8265 6.24068 10.8265 5.84251 10.8265C5.38276 10.8265 5.01001 10.454 5.01001 9.994Z\"\n fill=\"url(#paint0_linear_2269_12077)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_2269_12077\"\n x1=\"15.01\"\n y1=\"9.994\"\n x2=\"5.01001\"\n y2=\"9.994\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n cn,\n Divider,\n Flex,\n Grid,\n modal,\n SheetContent,\n SheetHeader,\n SimpleSheet,\n Text,\n useModal,\n} from \"@orderly.network/ui\";\n\nexport const PwaDialog = modal.create((props) => {\n const { visible, hide, resolve, reject, onOpenChange } = useModal();\n const [domain, setDomain] = useState(\"\");\n const { t } = useTranslation();\n\n useEffect(() => {\n setDomain(window.location.hostname);\n }, []);\n\n return (\n <SimpleSheet open={visible} onOpenChange={onOpenChange}>\n <SheetHeader>\n <Text className=\"oui-text-base-contrast-80 oui-text \">\n {t(\"connector.privy.pwa.sheetTitle\")}\n </Text>\n </SheetHeader>\n <Flex direction=\"column\" gap={3} className=\"oui-w-full\">\n <Text className=\"oui-text-base-contrast-80 oui-text \">\n {t(\"connector.privy.pwa.description\")}\n </Text>\n <Flex direction=\"column\" gap={4} className=\"oui-w-full\">\n <StepItem\n index={1}\n title={t(\"connector.privy.pwa.step1\")}\n content={\n <Flex className=\"oui-w-full oui-bg-dark-8\">\n <Flex\n className=\"oui-bg-black/[0.08] oui-p-2 oui-h-[52px] oui-rounded-[44px] oui-w-full oui-px-4 oui-relative\"\n itemAlign={\"center\"}\n justify={\"center\"}\n >\n <Text className=\"oui-text-black/[0.88] oui-text-[18px] oui-leading-[36px] oui-flex-1 oui-text-center oui-whitespace-nowrap\">\n {domain}\n </Text>\n <ShareIcon className=\"oui-absolute oui-right-4 oui-top-1/2 oui-translate-y-[-50%]\" />\n </Flex>\n </Flex>\n }\n />\n <StepItem\n index={2}\n title={t(\"connector.privy.pwa.step2\")}\n classNames={{\n content: \"oui-bg-[#e9e9eb]\",\n }}\n content={\n <Flex\n className=\"oui-w-full oui-bg-base-contrast oui-rounded-[12px]\"\n direction=\"column\"\n >\n <Flex\n className=\"oui-w-full oui-px-4 oui-py-3\"\n justify={\"start\"}\n itemAlign={\"center\"}\n >\n <Text className=\"oui-text-black/[0.2] oui-text-[18px]\">\n {t(\"connector.privy.pwa.findOnPage\")}\n </Text>\n </Flex>\n <Divider className=\"oui-bg-black/[0.15] oui-w-full\" />\n <Flex\n className=\"oui-w-full oui-px-4 oui-py-3\"\n justify={\"between\"}\n itemAlign={\"center\"}\n >\n <Text className=\"oui-text-black/[0.88] oui-text-[18px] oui-col-span-2 oui-whitespace-nowrap\">\n {t(\"connector.privy.pwa.addToHomeScreen\")}\n </Text>\n <AddIcon />\n </Flex>\n </Flex>\n }\n />\n </Flex>\n </Flex>\n </SimpleSheet>\n );\n});\n\nconst ShareIcon = (props: { className?: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n className={props.className}\n >\n <path\n d=\"M5 23.3333V13.6667C5 12.1939 6.15127 11 7.57143 11H10.6744V12.7778H7.57143C7.09804 12.7778 6.71429 13.1757 6.71429 13.6667V23.3333C6.71429 23.8243 7.09804 24.2222 7.57143 24.2222H20.4286C20.902 24.2222 21.2857 23.8243 21.2857 23.3333V13.6667C21.2857 13.1757 20.902 12.7778 20.4286 12.7778H17.555V11H20.4286C21.8487 11 23 12.1939 23 13.6667V23.3333C23 24.8061 21.8487 26 20.4286 26H7.57143C6.15127 26 5 24.8061 5 23.3333Z\"\n fill=\"black\"\n fillOpacity=\"0.48\"\n />\n <path\n d=\"M13.3759 2.25933C13.7206 1.91356 14.2794 1.91356 14.6241 2.25933L20.2416 7.89432C20.586 8.24011 20.5862 8.80066 20.2416 9.14634C19.897 9.49203 19.3382 9.49185 18.9935 9.14634L14.8827 5.02278V19H13.1173V5.02278L9.00654 9.14634C8.66182 9.49185 8.10301 9.49203 7.7584 9.14634C7.41378 8.80066 7.41396 8.24011 7.7584 7.89432L13.3759 2.25933Z\"\n fill=\"black\"\n fillOpacity=\"0.48\"\n />\n </svg>\n );\n};\n\nconst AddIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M7.00598 3.92969H17.006C18.6627 3.92969 20.006 5.27297 20.006 6.92969V16.9297C20.006 18.5864 18.6627 19.9297 17.006 19.9297H7.00598C5.34927 19.9297 4.00598 18.5864 4.00598 16.9297V6.92969C4.00598 5.27297 5.34927 3.92969 7.00598 3.92969Z\"\n stroke=\"black\"\n strokeOpacity=\"0.88\"\n strokeWidth=\"2\"\n />\n <path\n d=\"M8 12L16 12\"\n stroke=\"black\"\n strokeOpacity=\"0.88\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M12 8L12 16\"\n stroke=\"black\"\n strokeOpacity=\"0.88\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n};\n\nconst StepItem = (props: {\n index: number;\n title: string;\n content: React.ReactNode;\n classNames?: {\n content?: string;\n };\n}) => {\n return (\n <Flex\n className=\" oui-rounded-[12px] oui-w-full oui-overflow-hidden\"\n direction=\"column\"\n >\n <Flex className=\"oui-bg-base-4 oui-w-full oui-px-3 oui-py-3 oui-gap-[6px]\">\n <Text className=\"oui-text-base-contrast-80 oui-text-xs oui-w-[18px] oui-h-[18px] oui-rounded-[100%] oui-bg-[linear-gradient(270deg,#59B0FE_0%,#26FEFE_100%)] oui-text-center oui-text-black \">\n {props.index}\n </Text>\n <Text className=\"oui-text-base-contrast-80 oui-text-xs\">\n {props.title}\n </Text>\n </Flex>\n <Flex\n className={cn(\n \"oui-bg-base-contrast oui-h-[120px] oui-w-full oui-px-6\",\n props.classNames?.content,\n )}\n justify={\"center\"}\n itemAlign={\"center\"}\n >\n {props.content}\n </Flex>\n </Flex>\n );\n};\n","import { AbstractChains, SolanaChains } from \"@orderly.network/types\";\nimport { WalletType } from \"./types\";\n\nexport const OrderlyOSS = \"https://oss.orderly.network\";\nexport const PrivyConnectorImagePath = `${OrderlyOSS}/static/sdk/privy`;\nexport const EVMWalletImage = `${OrderlyOSS}/static/sdk/evm_wallet`;\n\n// evm wallets icon map\nconst WALLET_ICONS: Record<string, string> = {\n metamask: \"https://oss.orderly.network/static/sdk/evm_wallets/metamask.png\",\n walletconnect:\n \"https://oss.orderly.network/static/sdk/evm_wallets/walletConnect.png\",\n binance: \"https://oss.orderly.network/static/sdk/evm_wallets/binance.png\",\n ledger: \"https://oss.orderly.network/static/sdk/evm_wallets/ledger.png\",\n coinbase: \"https://oss.orderly.network/static/sdk/evm_wallets/coinbase.png\",\n magic: \"https://oss.orderly.network/static/sdk/evm_wallets/magic.png\",\n trezor: \"https://oss.orderly.network/static/sdk/evm_wallets/trezor.png\",\n exodus: \"https://oss.orderly.network/static/sdk/evm_wallets/exodus.png\",\n frame: \"https://oss.orderly.network/static/sdk/evm_wallets/frame.png\",\n rabby: \"https://oss.orderly.network/static/sdk/evm_wallets/rabby.png\",\n};\nexport const getWalletIcon = (type: string): string | undefined => {\n return WALLET_ICONS[type.toLowerCase()];\n};\n\nexport const getChainType = (chainId: number): WalletType => {\n if (AbstractChains.has(chainId)) {\n return WalletType.ABSTRACT;\n }\n if (SolanaChains.has(chainId)) {\n return WalletType.SOL;\n }\n return WalletType.EVM;\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useLocalStorage,\n useStorageChain,\n useTrack,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport {\n AbstractChains,\n ChainNamespace,\n ConnectorKey,\n SolanaChains,\n defaultMainnetChains,\n defaultTestnetChains,\n TrackerEventName,\n} from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { useAbstractWallet } from \"../providers/abstractWallet/abstractWalletProvider\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { useSolanaWallet } from \"../providers/solana/solanaWalletProvider\";\nimport { useWagmiWallet } from \"../providers/wagmi/wagmiWalletProvider\";\nimport { ConnectProps, WalletConnectType, WalletType } from \"../types\";\nimport { getChainType } from \"../util\";\n\nexport function useWallet() {\n const { track } = useTrack();\n const { walletChainTypeConfig, initChains, network } =\n useWalletConnectorPrivy();\n const [connectorKey, setConnectorKey] = useLocalStorage(ConnectorKey, \"\");\n const {\n disconnect: disconnectEVM,\n connect: connectEVM,\n wallet: walletEVM,\n connectedChain: connectedChainEvm,\n setChain: setChainEvm,\n isConnected: isConnectedEVM,\n } = useWagmiWallet();\n const {\n disconnect: disconnectSOL,\n connect: connectSOL,\n wallet: walletSOL,\n isConnected: isConnectedSOL,\n connectedChain: connectedChainSOL,\n } = useSolanaWallet();\n const {\n disconnect: disconnectPrivy,\n connect: connectPrivy,\n walletSOL: privyWalletSOL,\n walletEVM: privyWalletEVM,\n isConnected: isConnectedPrivy,\n switchChain: setChainPrivy,\n } = usePrivyWallet();\n\n const {\n connect: connectAbstract,\n wallet: walletAbstract,\n connectedChain: connectedChainAbstract,\n isConnected: isConnectedAbstract,\n disconnect: disconnectAbstract,\n } = useAbstractWallet();\n const [wallet, setWallet] = useState<WalletState | null>(null);\n const [namespace, setNamespace] = useState<ChainNamespace | null>(null);\n const [walletType, setWalletType] = useState<WalletConnectType | null>(null);\n const { storageChain, setStorageChain } = useStorageChain();\n const { setOpenConnectDrawer, targetWalletType, setTargetWalletType } =\n useWalletConnectorPrivy();\n\n const supportedEvmChainIds = useMemo(() => {\n const ids = initChains\n ?.map((c) => c.id)\n .filter((id) => !SolanaChains.has(id) && !AbstractChains.has(id));\n return new Set<number>(ids ?? []);\n }, [initChains]);\n\n const preferredEvmChainId = useMemo(() => {\n const preferredOrder =\n network === \"mainnet\" ? defaultMainnetChains : defaultTestnetChains;\n return preferredOrder\n .map((c) => c.id)\n .find((id) => supportedEvmChainIds.has(id));\n }, [network, supportedEvmChainIds]);\n\n const defaultEvmChainId = useMemo(() => {\n for (const chain of initChains ?? []) {\n if (!SolanaChains.has(chain.id) && !AbstractChains.has(chain.id)) {\n return chain.id;\n }\n }\n return undefined;\n }, [initChains]);\n\n const fallbackEvmChainId = preferredEvmChainId ?? defaultEvmChainId;\n\n const isManual = useRef<boolean>(false);\n\n const connect = (params: ConnectProps) => {\n setTargetWalletType(undefined);\n try {\n if (params.walletType === WalletConnectType.EVM) {\n setConnectorKey(WalletConnectType.EVM);\n connectEVM({ connector: params.connector! });\n }\n if (params.walletType === WalletConnectType.SOL) {\n setConnectorKey(WalletConnectType.SOL);\n connectSOL(params.walletAdapter!.name).then();\n }\n if (params.walletType === WalletConnectType.PRIVY) {\n setConnectorKey(WalletConnectType.PRIVY);\n connectPrivy();\n }\n if (params.walletType === WalletConnectType.ABSTRACT) {\n setConnectorKey(WalletConnectType.ABSTRACT);\n connectAbstract();\n }\n } catch (e) {\n console.log(\"-- e\", e);\n }\n };\n\n const isPrivy = useMemo(() => {\n if (connectorKey === WalletConnectType.PRIVY) {\n return true;\n }\n return false;\n }, [connectorKey]);\n\n const [connectedChain, setConnectedChain] = useState<any>();\n\n const setChain = async (chain: {\n chainId: number | string;\n }): Promise<boolean | undefined> => {\n const chainType = getChainType(parseInt(chain.chainId as string));\n\n if (isPrivy) {\n if (chainType === WalletType.EVM) {\n if (!walletChainTypeConfig.hasEvm) {\n return Promise.reject(new Error(\"No evm wallet found\"));\n }\n isManual.current = true;\n return setChainPrivy(parseInt(chain.chainId as string))\n .then((res) => {\n track(TrackerEventName.switchNetworkSuccess, {\n from_chain: storageChain?.chainId,\n to_chain: chain.chainId,\n });\n setStorageChain(parseInt(chain.chainId as string));\n\n return Promise.resolve(true);\n })\n .catch((e) => {\n console.log(\"xxxx switch network failed\", {\n error: e,\n });\n return Promise.reject(e);\n });\n }\n // current privy not support abstract chain\n if (chainType === WalletType.ABSTRACT) {\n setOpenConnectDrawer(true);\n setTargetWalletType(WalletType.ABSTRACT);\n }\n\n if (chainType === WalletType.SOL) {\n isManual.current = true;\n if (!walletChainTypeConfig.hasSol) {\n return Promise.reject(new Error(\"No solana wallet found\"));\n }\n if (privyWalletSOL) {\n setStorageChain(parseInt(chain.chainId as string));\n return Promise.resolve(true);\n } else {\n setOpenConnectDrawer(true);\n setTargetWalletType(WalletType.SOL);\n return Promise.reject(new Error(\"No solana wallet found\"));\n }\n }\n } else {\n // if current namespace is evm, switch chain\n if (chainType === WalletType.EVM) {\n if (isConnectedEVM && walletEVM) {\n await setChainEvm(parseInt(chain.chainId as string));\n setStorageChain(parseInt(chain.chainId as string));\n track(TrackerEventName.switchNetworkSuccess, {\n from_chain: storageChain?.chainId,\n to_chain: chain.chainId,\n });\n } else {\n setOpenConnectDrawer(true);\n setTargetWalletType(WalletType.EVM);\n return Promise.resolve(true);\n }\n\n return Promise.resolve(true);\n }\n if (chainType === WalletType.SOL) {\n if (isConnectedSOL && walletSOL) {\n setStorageChain(parseInt(chain.chainId as string));\n return Promise.resolve(true);\n } else {\n setOpenConnectDrawer(true);\n setTargetWalletType(WalletType.SOL);\n return Promise.resolve(true);\n }\n }\n if (chainType === WalletType.ABSTRACT) {\n if (isConnectedAbstract && walletAbstract) {\n setStorageChain(parseInt(chain.chainId as string));\n return Promise.resolve(true);\n } else {\n setOpenConnectDrawer(true);\n // TODO need send abstract type\n setTargetWalletType(WalletType.ABSTRACT);\n return Promise.reject(new Error(\"No abstract wallet found\"));\n }\n }\n }\n };\n\n const switchWallet = (walletType: WalletType) => {\n const fromWallet = wallet?.accounts[0].address;\n let toWallet: string | undefined;\n if (isPrivy) {\n switch (walletType) {\n case WalletType.EVM:\n if (privyWalletEVM) {\n const desired = privyWalletEVM.chain.id;\n const nextChainId = supportedEvmChainIds.has(desired)\n ? desired\n : fallbackEvmChainId;\n if (typeof nextChainId === \"number\") {\n setStorageChain(nextChainId);\n }\n toWallet = privyWalletEVM.accounts[0].address;\n }\n break;\n case WalletType.SOL:\n if (privyWalletSOL) {\n setStorageChain(privyWalletSOL.chain.id);\n toWallet = privyWalletSOL.accounts[0].address;\n }\n break;\n case WalletType.ABSTRACT:\n // privy don't support abstract wallet\n break;\n }\n } else {\n switch (walletType) {\n case WalletType.EVM:\n if (walletEVM) {\n setStorageChain(walletEVM.chain.id);\n toWallet = walletEVM.accounts[0].address;\n }\n break;\n case WalletType.SOL:\n if (walletSOL) {\n setStorageChain(walletSOL.chain.id);\n toWallet = walletSOL.accounts[0].address;\n }\n break;\n case WalletType.ABSTRACT:\n if (walletAbstract) {\n setStorageChain(walletAbstract.chain!.id);\n toWallet = walletAbstract.accounts[0].address;\n }\n break;\n }\n }\n track(TrackerEventName.clickSwitchWallet, {\n fromWallet,\n toWallet,\n });\n };\n\n const disconnect = async (walletType: WalletConnectType) => {\n switch (walletType) {\n case WalletConnectType.PRIVY:\n return await disconnectPrivy();\n case WalletConnectType.EVM:\n return disconnectEVM();\n case WalletConnectType.SOL:\n return disconnectSOL();\n case WalletConnectType.ABSTRACT:\n return disconnectAbstract();\n }\n };\n\n const onDisconnect = (parmas: any): Promise<any> => {\n if (!walletType) {\n throw new Error(\"No wallet type found\");\n }\n return new Promise((resolve, reject) => {\n disconnect(walletType)\n .then(() => {\n resolve(true);\n })\n .catch((e) => {\n reject(e);\n });\n });\n };\n\n const setNullWalletStatus = () => {\n setWallet(null);\n setWalletType(null);\n setConnectedChain(null);\n setNamespace(null);\n };\n\n useEffect(() => {\n // check current connector and chain form localstorage\n if (connectorKey !== WalletConnectType.PRIVY) {\n return;\n }\n // console.log('xxxx connector privy', {\n // connectorKey,\n // storageChain,\n // privyWalletEVM,\n // privyWalletSOL\n // });\n\n if (storageChain?.namespace === ChainNamespace.evm) {\n if (AbstractChains.has(storageChain.chainId)) {\n return setNullWalletStatus();\n }\n if (privyWalletEVM) {\n setWallet(privyWalletEVM);\n setWalletType(WalletConnectType.PRIVY);\n setConnectedChain(privyWalletEVM.chain);\n setNamespace(ChainNamespace.evm);\n } else {\n setNullWalletStatus();\n }\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n if (privyWalletSOL) {\n setWallet(privyWalletSOL);\n setWalletType(WalletConnectType.PRIVY);\n setConnectedChain(privyWalletSOL.chain);\n setNamespace(ChainNamespace.solana);\n } else {\n setNullWalletStatus();\n }\n }\n }, [connectorKey, privyWalletEVM, privyWalletSOL, storageChain]);\n\n // Auto-open drawer when Privy is connected and Abstract chain is selected\n useEffect(() => {\n if (\n connectorKey === WalletConnectType.PRIVY &&\n isConnectedPrivy &&\n AbstractChains.has(storageChain.chainId)\n ) {\n setOpenConnectDrawer(true);\n }\n }, [connectorKey, isConnectedPrivy, storageChain]);\n\n useEffect(() => {\n if (connectorKey === WalletConnectType.PRIVY) {\n return;\n }\n // handle non-privy wallet connect\n // console.log(\"xxxx non-privy\", {\n // connectorKey,\n // storageChain,\n // walletEVM,\n // walletSOL,\n // walletAbstract,\n // connectedChainAbstract,\n // isConnectedAbstract,\n // });\n\n if (storageChain?.namespace === ChainNamespace.evm) {\n if (AbstractChains.has(storageChain.chainId)) {\n if (isConnectedAbstract && walletAbstract) {\n setWallet(walletAbstract);\n setWalletType(WalletConnectType.ABSTRACT);\n setConnectedChain(connectedChainAbstract);\n setNamespace(ChainNamespace.evm);\n } else {\n setNullWalletStatus();\n }\n } else {\n if (isConnectedEVM && walletEVM) {\n setWallet(walletEVM);\n setWalletType(WalletConnectType.EVM);\n setConnectedChain(connectedChainEvm);\n setNamespace(ChainNamespace.evm);\n } else {\n setNullWalletStatus();\n }\n }\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n if (isConnectedSOL && walletSOL) {\n setWallet(walletSOL);\n setWalletType(WalletConnectType.SOL);\n setConnectedChain(connectedChainSOL);\n setNamespace(ChainNamespace.solana);\n } else {\n setNullWalletStatus();\n }\n }\n }, [\n connectorKey,\n storageChain,\n walletEVM,\n walletSOL,\n isConnectedEVM,\n isConnectedSOL,\n isConnectedAbstract,\n walletAbstract,\n connectedChainAbstract,\n ]);\n\n return {\n connect,\n wallet,\n connectedChain,\n setChain,\n namespace,\n switchWallet,\n disconnect,\n onDisconnect,\n };\n}\n","import React from \"react\";\nimport { cn, useScreen } from \"@orderly.network/ui\";\nimport { PrivyConnectorImagePath } from \"../../util\";\n\nexport function AbstractConnectArea({ connect }: { connect: () => void }) {\n const { isMobile } = useScreen();\n return (\n <div>\n <div className=\"oui-mb-2 oui-text-sm oui-font-semibold oui-text-base-contrast-80\">\n Abstract\n </div>\n <div className=\"oui-grid oui-grid-cols-2 oui-gap-2\">\n <div\n className={cn(\n \" oui-flex oui-flex-1 oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-rounded-[6px] oui-px-2 oui-py-[11px]\",\n isMobile ? \"oui-bg-base-5\" : \"oui-bg-[#07080A]\",\n )}\n onClick={() => connect()}\n >\n <div className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center\">\n <img\n className={cn(\"oui-size-[12px]\")}\n src={`${PrivyConnectorImagePath}/abstract.png`}\n alt=\"abstract wallet\"\n />\n </div>\n <div className=\"oui-text-2xs oui-text-base-contrast\">Abstract</div>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, Grid } from \"@orderly.network/ui\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\n\nconst RenderLoginMethodsDom = ({\n connect,\n loginMethods,\n}: {\n connect: (type: any) => void;\n loginMethods?: PrivyClientConfig[\"loginMethods\"];\n}) => {\n const { t } = useTranslation();\n const { isDesktop } = useScreen();\n const arr = [];\n if (loginMethods?.includes(\"email\")) {\n arr.push(\n <div\n className={cn(\n \"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-rounded-[6px] oui-border oui-border-base-contrast-12 oui-px-2 oui-py-[11px]\",\n \"oui-border-none oui-bg-[#333948]\",\n )}\n onClick={() => connect({ walletType: \"privy\", extraType: \"email\" })}\n >\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/email.svg\"\n className=\"oui-size-[18px]\"\n />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.email\")}\n </div>\n </div>,\n );\n }\n if (loginMethods?.includes(\"google\")) {\n arr.push(\n <div\n className={cn(\n \"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-rounded-[6px] oui-border oui-border-base-contrast-12 oui-px-2 oui-py-[11px]\",\n \"oui-border-none oui-bg-[#335FFC]\",\n )}\n onClick={() => connect({ walletType: \"privy\", extraType: \"google\" })}\n >\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/google.svg\"\n className=\"oui-size-[18px]\"\n />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.google\")}\n </div>\n </div>,\n );\n }\n if (loginMethods?.includes(\"twitter\")) {\n arr.push(\n <div\n className={cn(\n \"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-rounded-[6px] oui-border oui-border-base-contrast-12 oui-px-2 oui-py-[11px]\",\n \"oui-border-none oui-bg-[#07080A]\",\n )}\n onClick={() => connect({ walletType: \"privy\", extraType: \"twitter\" })}\n >\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/twitter.svg\"\n className=\"oui-size-[18px]\"\n />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.twitter\")}\n </div>\n </div>,\n );\n }\n if (loginMethods?.includes(\"telegram\")) {\n arr.push(\n <div\n className={cn(\n \"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-rounded-[6px] oui-border oui-border-base-contrast-12 oui-px-2 oui-py-[11px]\",\n \"oui-border-none oui-bg-[#3D79A9]\",\n )}\n onClick={() => connect({ walletType: \"privy\", extraType: \"telegram\" })}\n >\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.652 8.12916L15.0683 4.04929C15.6468 3.87358 16.1499 4.16929 15.9587 4.91069L13.8458 13.3962C13.6898 13.9961 13.2672 14.1461 12.6836 13.859L9.46384 11.8362L7.90929 13.109C7.73824 13.2547 7.59234 13.379 7.2603 13.379L7.4867 10.5891L13.4584 5.99923C13.72 5.80638 13.398 5.69495 13.0559 5.8878L5.68061 9.8434L2.50107 8.99914C1.81687 8.81058 1.80178 8.41201 2.652 8.12916Z\"\n fill=\"white\"\n />\n </svg>\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.telegram\")}\n </div>\n </div>,\n );\n }\n return arr.map((item, index) => {\n return <div key={index}>{item}</div>;\n });\n};\n\nconst PrivyConnectAreaMobile = ({\n connect,\n}: {\n connect: (type: any) => void;\n}) => {\n const { t } = useTranslation();\n const { isMobile, isDesktop } = useScreen();\n const { connectorWalletType, privyConfig } = useWalletConnectorPrivy();\n const loginMethods = privyConfig.loginMethods;\n return (\n <Flex direction=\"column\" className=\"oui-w-full\">\n <Grid cols={2} rows={2} className=\"oui-w-full\" gap={2}>\n <RenderLoginMethodsDom connect={connect} loginMethods={loginMethods} />\n </Grid>\n {(!connectorWalletType.disableWagmi ||\n !connectorWalletType.disableSolana) && (\n <div className=\"oui-mt-4 oui-h-px oui-w-full oui-bg-line md:oui-mt-5\"></div>\n )}\n </Flex>\n );\n};\n\nconst PrivyConnectAreaDesktop = ({\n connect,\n}: {\n connect: (type: any) => void;\n}) => {\n const { t } = useTranslation();\n const { connectorWalletType, privyConfig } = useWalletConnectorPrivy();\n const loginMethods = privyConfig.loginMethods;\n return (\n <Flex direction=\"column\" itemAlign={\"start\"} className=\"oui-w-full\">\n <Grid cols={1} gap={2} className=\"oui-w-full\">\n <RenderLoginMethodsDom connect={connect} loginMethods={loginMethods} />\n </Grid>\n {(!connectorWalletType.disableWagmi ||\n !connectorWalletType.disableSolana) && (\n <div className=\"oui-mt-4 oui-h-px oui-w-full oui-bg-line md:oui-mt-5\"></div>\n )}\n </Flex>\n );\n};\n\nexport function PrivyConnectArea({\n connect,\n}: {\n connect: (type: any) => void;\n}) {\n const { isDesktop } = useScreen();\n if (isDesktop) {\n return <PrivyConnectAreaDesktop connect={connect} />;\n }\n return <PrivyConnectAreaMobile connect={connect} />;\n}\n","import React, { useState } from \"react\";\nimport { WalletAdapter } from \"@solana/wallet-adapter-base\";\nimport { Connector } from \"wagmi\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ChainIcon,\n cn,\n Popover,\n SimpleDialog,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { getWalletIcon } from \"../util\";\n\nexport function RenderPrivyTypeIcon({\n type,\n size,\n black,\n}: {\n type: string;\n size: number;\n black?: boolean;\n}) {\n if (type === \"email\") {\n return (\n <img\n src={`https://oss.orderly.network/static/sdk/privy/email${\n black ? \"-black\" : \"\"\n }.svg`}\n width={size}\n />\n );\n }\n if (type === \"google_oauth\") {\n return (\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/google.svg\"\n width={size}\n />\n );\n }\n if (type === \"twitter_oauth\") {\n return (\n <img\n src={`https://oss.orderly.network/static/sdk/privy/twitter${\n black ? \"-black\" : \"\"\n }.svg`}\n width={size}\n />\n );\n }\n if (type === \"telegram\") {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.652 8.12916L15.0683 4.04929C15.6468 3.87358 16.1499 4.16929 15.9587 4.91069L13.8458 13.3962C13.6898 13.9961 13.2672 14.1461 12.6836 13.859L9.46384 11.8362L7.90929 13.109C7.73824 13.2547 7.59234 13.379 7.2603 13.379L7.4867 10.5891L13.4584 5.99923C13.72 5.80638 13.398 5.69495 13.0559 5.8878L5.68061 9.8434L2.50107 8.99914C1.81687 8.81058 1.80178 8.41201 2.652 8.12916Z\"\n fill={black ? \"black\" : \"white\"}\n />\n </svg>\n );\n }\n return (\n <img\n src={`https://oss.orderly.network/static/sdk/privy/email${\n black ? \"-black\" : \"\"\n }.svg`}\n width={size}\n />\n );\n}\nexport function RenderWalletIcon({\n connector,\n}: {\n connector: Connector | WalletAdapter;\n}) {\n const icon = connector.icon\n ? connector.icon\n : getWalletIcon((connector as Connector).type);\n return (\n <div className=\"oui-w-[18px] oui-h-[18px] oui-flex oui-items-center oui-justify-center\">\n <img\n className={cn(\n connector.icon\n ? \"oui-w-[12px] oui-h-[12px]\"\n : \"oui-w-[18px] oui-h-[18px]\",\n )}\n src={icon}\n alt={connector.name}\n />\n </div>\n );\n}\n\nexport function EVMChainPopover({ children }: { children: React.ReactNode }) {\n const { getChainsByNetwork } = useWalletConnectorPrivy();\n const [chains] = useState(getChainsByNetwork(\"mainnet\"));\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const [open, setOpen] = useState(false);\n\n if (isMobile) {\n return (\n <>\n <SimpleDialog\n open={open}\n size=\"xs\"\n onOpenChange={setOpen}\n classNames={{\n content: \"oui-p-4 oui-z-[99]\",\n overlay: \"oui-z-[99]\",\n }}\n title={t(\"connector.privy.supportedEvmChain\")}\n >\n <div className=\"oui-p-1 oui-grid oui-grid-cols-2 oui-gap-x-2 oui-gap-y-3 oui-text-2xs oui-text-base-contrast-54\">\n {chains.map((item, key) => (\n <div\n key={key}\n className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\"\n >\n <ChainIcon chainId={item.id} size=\"2xs\" />\n <div>{item.name}</div>\n </div>\n ))}\n </div>\n </SimpleDialog>\n <button onClick={() => setOpen(true)}>{children}</button>\n </>\n );\n }\n\n return (\n <Popover\n content={\n <div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n {t(\"connector.privy.supportedEvmChain\")}\n </div>\n <div className=\"oui-mt-3 oui-grid oui-grid-cols-3 oui-gap-x-2 oui-gap-y-3 oui-text-2xs oui-text-base-contrast-54\">\n {chains.map((item, key) => (\n <div\n key={key}\n className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\"\n >\n <ChainIcon chainId={item.id} size=\"2xs\" />\n <div>{item.name}</div>\n </div>\n ))}\n </div>\n </div>\n }\n arrow={true}\n contentProps={{\n side: \"bottom\",\n align: \"center\",\n className: \"oui-p-2 oui-z-[65]\",\n }}\n >\n <button>{children}</button>\n </Popover>\n );\n}\n","import React from \"react\";\nimport { WalletAdapter } from \"@solana/wallet-adapter-base\";\nimport { cn, useScreen } from \"@orderly.network/ui\";\nimport { useSolanaWallet } from \"../../providers/solana/solanaWalletProvider\";\nimport { RenderWalletIcon } from \"../common\";\n\nexport function SOLConnectArea({\n connect,\n}: {\n connect: (walletAdapter: WalletAdapter) => void;\n}) {\n const { wallets } = useSolanaWallet();\n const { isMobile } = useScreen();\n return (\n <div>\n <div className=\"oui-mb-2 oui-text-sm oui-font-semibold oui-text-base-contrast-80\">\n Solana\n </div>\n <div className=\"oui-grid oui-grid-cols-2 oui-gap-2\">\n {wallets.map((item, key) => (\n <div\n key={key}\n className={cn(\n \" oui-flex oui-flex-1 oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-rounded-[6px] oui-px-2 oui-py-[11px]\",\n isMobile ? \"oui-bg-base-5\" : \"oui-bg-[#07080A]\",\n )}\n onClick={() => connect(item.adapter)}\n >\n <RenderWalletIcon connector={item.adapter} />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {item.adapter.name}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { Connector } from \"wagmi\";\nimport { useScreen, cn } from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useWagmiWallet } from \"../../providers/wagmi/wagmiWalletProvider\";\nimport { RenderWalletIcon } from \"../common\";\n\nexport function EVMConnectArea({\n connect,\n}: {\n connect: (type: Connector) => void;\n}) {\n const { connectors } = useWagmiWallet();\n const { setOpenConnectDrawer } = useWalletConnectorPrivy();\n const { isMobile } = useScreen();\n const onConnect = (item: Connector) => {\n if (isMobile) {\n if (item.id === \"walletConnect\") {\n setOpenConnectDrawer(false);\n }\n }\n connect(item);\n };\n return (\n <div className=\"\">\n <div className=\"oui-mb-2 oui-text-sm oui-font-semibold oui-text-base-contrast-80\">\n EVM\n </div>\n <div className=\"oui-grid oui-grid-cols-2 oui-gap-2\">\n {connectors.map((item, key) => (\n <div\n key={key}\n className={cn(\n \" oui-flex oui-flex-1 oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-rounded-[6px] oui-px-2 oui-py-[11px]\",\n isMobile ? \"oui-bg-base-5\" : \"oui-bg-[#07080A]\",\n )}\n onClick={() => onConnect(item)}\n >\n <RenderWalletIcon connector={item} />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {item.name}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { useStorageChain } from \"@orderly.network/hooks\";\nimport { cn, Flex, ScrollArea } from \"@orderly.network/ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { ConnectProps } from \"../../types\";\nimport { getChainType } from \"../../util\";\nimport { AbstractConnectArea } from \"./abstractConnector\";\nimport { PrivyConnectArea } from \"./privyConnector\";\nimport { SOLConnectArea } from \"./solanaConnector\";\nimport { EVMConnectArea } from \"./wagmiConnector\";\n\nexport function RenderConnector() {\n const { connect } = useWallet();\n const {\n setOpenConnectDrawer,\n connectorWalletType,\n walletChainTypeConfig,\n targetWalletType,\n } = useWalletConnectorPrivy();\n const { storageChain } = useStorageChain();\n\n const selectedWalletType: WalletType | undefined = (() => {\n if (targetWalletType) return targetWalletType;\n if (!storageChain?.chainId) return undefined;\n try {\n return getChainType(parseInt(storageChain.chainId as string));\n } catch {\n return undefined;\n }\n })();\n\n const handleConnect = (params: ConnectProps) => {\n connect(params);\n if (params.walletType === WalletConnectType.PRIVY) {\n setOpenConnectDrawer(false);\n }\n };\n const renderPrivyConnectArea = () => {\n if (connectorWalletType.disablePrivy) {\n return null;\n }\n return (\n <PrivyConnectArea\n connect={(type) =>\n handleConnect({\n walletType: WalletConnectType.PRIVY,\n extraType: type,\n })\n }\n />\n );\n };\n const renderWagmiConnectArea = () => {\n if (connectorWalletType.disableWagmi) {\n return null;\n }\n if (!walletChainTypeConfig.hasEvm) {\n return null;\n }\n return (\n <EVMConnectArea\n connect={(connector) =>\n handleConnect({\n walletType: WalletConnectType.EVM,\n connector: connector,\n })\n }\n />\n );\n };\n const renderSolanaConnectArea = () => {\n if (connectorWalletType.disableSolana) {\n return null;\n }\n if (!walletChainTypeConfig.hasSol) {\n return null;\n }\n\n return (\n <SOLConnectArea\n connect={(walletAdapter) =>\n handleConnect({\n walletType: WalletConnectType.SOL,\n walletAdapter: walletAdapter,\n })\n }\n />\n );\n };\n const renderAbstractConnectArea = () => {\n if (connectorWalletType.disableAGW) {\n return null;\n }\n if (!walletChainTypeConfig.hasAbstract) {\n return null;\n }\n return (\n <AbstractConnectArea\n connect={() =>\n handleConnect({ walletType: WalletConnectType.ABSTRACT })\n }\n />\n );\n };\n\n const walletOrder = [\"evm\", \"sol\", \"abstract\"] as const;\n\n const typeToKey: Record<WalletType, (typeof walletOrder)[number]> = {\n [WalletType.EVM]: \"evm\",\n [WalletType.SOL]: \"sol\",\n [WalletType.ABSTRACT]: \"abstract\",\n };\n\n const prioritizedKey = selectedWalletType\n ? typeToKey[selectedWalletType]\n : undefined;\n\n const orderedWalletKeys = prioritizedKey\n ? ([\n prioritizedKey,\n ...walletOrder.filter((k) => k !== prioritizedKey),\n ] as const)\n : walletOrder;\n\n const renderByKey = (key: (typeof walletOrder)[number]) => {\n switch (key) {\n case \"evm\":\n return renderWagmiConnectArea();\n case \"sol\":\n return renderSolanaConnectArea();\n case \"abstract\":\n return renderAbstractConnectArea();\n default:\n return null;\n }\n };\n return (\n <ScrollArea className=\"oui-flex oui-grow oui-shrik oui-basis-auto oui-custom-scrollbar\">\n <div className={cn(\"oui-flex oui-flex-col oui-gap-4\", \"md:oui-gap-5\")}>\n {renderPrivyConnectArea()}\n {orderedWalletKeys.map((key) => (\n <React.Fragment key={key}>{renderByKey(key)}</React.Fragment>\n ))}\n </div>\n </ScrollArea>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { useStorageChain } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n AbstractChains,\n ChainNamespace,\n SolanaChains,\n} from \"@orderly.network/types\";\nimport {\n ExclamationFillIcon,\n Flex,\n modal,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { WalletType } from \"../types\";\nimport { ArrowRightIcon } from \"./icons\";\n\nexport function SwitchNetworkTips({\n tipsContent,\n}: {\n tipsContent: string | null;\n}) {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const { network, setOpenConnectDrawer } = useWalletConnectorPrivy();\n if (!tipsContent) {\n return null;\n }\n\n const onSwitchNetwork = () => {\n setOpenConnectDrawer(false);\n modal\n .show<{\n wrongNetwork: boolean;\n }>(isMobile ? \"ChainSelectorSheetId\" : \"ChainSelectorDialogId\", {\n networkId: network,\n bridgeLessOnly: false,\n })\n .then(\n (r) => {\n console.log(\"[switchChain success]\", r);\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n return (\n <div\n onClick={onSwitchNetwork}\n className=\"oui-mb-3 oui-flex oui-cursor-pointer oui-items-center oui-justify-between oui-gap-1 oui-rounded-[8px] oui-bg-[rgba(255,125,0,0.1)] oui-px-2 oui-py-[6px] \"\n >\n <Flex gap={1}>\n <ExclamationFillIcon\n size={14}\n className=\" oui-shrink-0 oui-text-warning-darken\"\n />\n <div className=\"oui-text-2xs oui-text-warning-darken\">\n {t(\"connector.privy.switchNetwork.tips\", {\n chainName: tipsContent,\n })}\n </div>\n </Flex>\n <ArrowRightIcon size={14} className=\"oui-text-[#FF7D00]\" />\n </div>\n );\n}\nexport const StorageChainNotCurrentWalletType = ({\n currentWalletType,\n}: {\n currentWalletType: Set<WalletType>;\n}) => {\n const { storageChain } = useStorageChain();\n const tipsContent = useMemo(() => {\n if (!currentWalletType || currentWalletType.size === 0 || !storageChain) {\n return null;\n }\n let text = null;\n const isSolana = SolanaChains.has(parseInt(storageChain?.chainId));\n const isAbstract = AbstractChains.has(parseInt(storageChain?.chainId));\n const isEvm = !isSolana && !isAbstract;\n\n if (isSolana && currentWalletType.has(WalletType.SOL)) {\n return null;\n } else if (isAbstract && currentWalletType.has(WalletType.ABSTRACT)) {\n return null;\n } else if (isEvm && currentWalletType.has(WalletType.EVM)) {\n return null;\n }\n\n text = Array.from(currentWalletType)\n .map((item) => {\n if (item === WalletType.EVM) {\n return \"Evm\";\n } else if (item === WalletType.SOL) {\n return \"Solana\";\n } else if (item === WalletType.ABSTRACT) {\n return \"Abstract\";\n }\n })\n .join(\"/\");\n return text;\n }, [storageChain, currentWalletType]);\n\n return <SwitchNetworkTips tipsContent={tipsContent} />;\n};\n","import React, { useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ChainIcon,\n Checkbox,\n cn,\n CopyIcon,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n formatAddress,\n Popover,\n toast,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { useWallet } from \"../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { WalletConnectType, WalletType } from \"../types\";\nimport { PrivyConnectorImagePath } from \"../util\";\nimport { EVMChainPopover } from \"./common\";\nimport { DisconnectIcon, MoreIcon } from \"./icons\";\n\ninterface WalletCardProps {\n type: WalletType;\n address: string;\n isActive: boolean;\n isPrivy?: boolean;\n isMulti?: boolean;\n onActiveChange: (active: boolean) => void;\n}\n\nconst getCardBgClassName = (type: WalletType = WalletType.EVM) => {\n const cardBgColorMap: { [key in WalletType]: string } = {\n [WalletType.EVM]: \"oui-bg-[#283BEE]\",\n [WalletType.ABSTRACT]: \"oui-bg-[#00A858]\",\n [WalletType.SOL]: \"oui-bg-[#630EAD]\",\n };\n return cardBgColorMap[type];\n};\n\nconst getCardActiveClassName = (\n isActive: boolean,\n isMulti: boolean,\n type: WalletType = WalletType.EVM,\n) => {\n const cardActiveColorMap: { [key in WalletType]: string } = {\n [WalletType.EVM]: \"oui-border-[2px] oui-border-[#B9D1FF]\",\n [WalletType.ABSTRACT]: \"oui-border-[2px] oui-border-[#B9D1FF]\",\n [WalletType.SOL]: \"oui-border-[2px] oui-border-[#faedff]\",\n };\n return isActive && isMulti && cardActiveColorMap[type];\n};\n\nexport function WalletCard(props: WalletCardProps) {\n const { t } = useTranslation();\n const copyAddress = async (address: string) => {\n await navigator.clipboard.writeText(address);\n toast.success(t(\"common.copy.copied\"));\n };\n\n return (\n <div\n className={cn(\n \"oui-relative oui-h-[110px] oui-overflow-hidden oui-rounded-2xl oui-p-4\",\n getCardBgClassName(props.type),\n getCardActiveClassName(\n props.isActive,\n props.isMulti || false,\n props.type,\n ),\n )}\n >\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: -20,\n background:\n \"url('https://oss.orderly.network/static/sdk/wallet-card-bg.png')\",\n width: \"110px\",\n height: \"110px\",\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center\",\n zIndex: 0,\n }}\n />\n <div className=\"oui-relative oui-z-10 oui-flex oui-h-full oui-flex-col oui-justify-between\">\n <div className=\"oui-flex oui-items-center oui-justify-between\">\n <div className=\"oui-text-sm oui-font-semibold oui-text-base-contrast\">\n {formatAddress(props.address)}\n </div>\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-2\">\n <Tooltip content={t(\"common.copy\")} className=\"oui-z-[65]\">\n <CopyIcon\n size={16}\n opacity={1}\n className=\"oui-cursor-pointer oui-text-base-contrast-80 hover:oui-text-base-contrast\"\n onClick={() => copyAddress(props.address)}\n />\n </Tooltip>\n {props.isPrivy ? (\n <PrivyWalletHandleOption\n address={props.address}\n type={props.type}\n />\n ) : (\n <NonPrivyWalletHandleOption walletType={props.type} />\n )}\n </div>\n </div>\n\n <div className=\"oui-flex oui-items-center oui-justify-between\">\n <RenderWalletType walletType={props.type} />\n\n {props.isMulti && (\n <div>\n <Checkbox\n checked={props.isActive}\n onCheckedChange={props.onActiveChange}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\nfunction NonPrivyWalletHandleOption({\n walletType,\n}: {\n walletType: WalletType;\n}) {\n const { disconnect } = useWallet();\n const disconnectWallet = () => {\n let walletConnectType: WalletConnectType = WalletConnectType.EVM;\n switch (walletType) {\n case WalletType.EVM:\n walletConnectType = WalletConnectType.EVM;\n break;\n case WalletType.SOL:\n walletConnectType = WalletConnectType.SOL;\n break;\n case WalletType.ABSTRACT:\n walletConnectType = WalletConnectType.ABSTRACT;\n break;\n }\n disconnect(walletConnectType);\n };\n return (\n <div onClick={() => disconnectWallet()}>\n <DisconnectIcon className=\"oui-size-4 oui-cursor-pointer oui-text-base-contrast-80 hover:oui-text-base-contrast\" />\n </div>\n );\n}\n\nfunction PrivyWalletHandleOption({\n address,\n type,\n}: {\n address: string;\n type: WalletType;\n}) {\n const { t } = useTranslation();\n const { exportWallet } = usePrivyWallet();\n return (\n <DropdownMenuRoot>\n <DropdownMenuTrigger asChild>\n <button>\n <MoreIcon className=\"oui-cursor-pointer oui-text-base-contrast-80 hover:oui-text-base-contrast\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n size={\"xl\"}\n align={\"end\"}\n side=\"top\"\n style={{ width: \"100px\" }}\n className={\"oui-z-[65] oui-rounded oui-p-1 oui-font-semibold\"}\n sideOffset={0}\n >\n <DropdownMenuItem\n className=\"oui-cursor-pointer oui-px-2 oui-py-1 oui-text-2xs oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n onClick={() => {\n console.log(\"export wallet\");\n exportWallet(type);\n }}\n >\n <div>{t(\"common.export\")}</div>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n}\n\nconst RenderWalletType = ({ walletType }: { walletType: WalletType }) => {\n if (walletType === WalletType.SOL) {\n return (\n <div className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\">\n <div className=\"\">\n <img\n src=\"https://oss.orderly.network/static/sdk/solana-logo.png\"\n className=\"oui-w-4\"\n />\n </div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n Solana\n </div>\n </div>\n );\n }\n if (walletType === WalletType.ABSTRACT) {\n return (\n <div className=\"oui-flex oui-items-center oui-justify-start oui-gap-[6px]\">\n <img\n src={`${PrivyConnectorImagePath}/abstract-transparent.png`}\n className=\"oui-w-4\"\n />\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n Abstract\n </div>\n </div>\n );\n }\n if (walletType === WalletType.EVM) {\n return (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-relative oui-flex oui-items-center oui-justify-center\">\n <div className=\"oui-flex oui-h-[18px] oui-items-center oui-justify-center \">\n <img\n src=\"https://oss.orderly.network/static/sdk/chains.png\"\n className=\"oui-relative oui-z-0 oui-h-[18px] oui-w-[49px]\"\n />\n </div>\n <div className=\"oui-relative oui-left-[-9px] oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-[#282e3a]\">\n <EVMChainPopover>\n <MoreIcon\n className=\"oui-relative oui-z-10 oui-size-3 oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n style={{ zIndex: 1 }}\n />\n </EVMChainPopover>\n </div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n Evm\n </div>\n </div>\n </div>\n </div>\n );\n }\n return <></>;\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ChevronDownIcon, ChevronUpIcon, cn } from \"@orderly.network/ui\";\nimport { Tooltip } from \"@orderly.network/ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { PrivyConnectorImagePath } from \"../../util\";\n\nexport function AddAbstractWallet() {\n const [visible, setVisible] = useState(false);\n const onToggleVisibility = () => {\n setVisible(!visible);\n };\n const { connect } = useWallet();\n const { targetWalletType } = useWalletConnectorPrivy();\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n useEffect(() => {\n let timer = 0;\n if (targetWalletType === WalletType.ABSTRACT) {\n timer = window.setTimeout(() => {\n setOpen(true);\n }, 200);\n }\n return () => {\n if (timer) {\n window.clearTimeout(timer);\n }\n };\n }, [targetWalletType]);\n useEffect(() => {\n if (open === false) {\n return;\n }\n const timeId = window.setTimeout(() => {\n setOpen(false);\n }, 5000);\n return () => {\n if (timeId) {\n window.clearTimeout(timeId);\n }\n };\n }, [open]);\n\n return (\n <div className=\"oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <Tooltip\n className=\"oui-z-[65] oui-max-w-[200px] oui-text-warning-darken\"\n open={open}\n content={t(\"connector.privy.addAbstractWallet.tips\")}\n >\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <img\n src={`${PrivyConnectorImagePath}/abstract-transparent.png`}\n className=\"oui-size-[15px]\"\n />\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-80\">\n {t(\"connector.privy.addAbstractWallet\")}\n </div>\n\n <button onClick={onToggleVisibility}>\n {visible ? (\n <ChevronDownIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-36\"\n />\n ) : (\n <ChevronUpIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast\"\n />\n )}\n </button>\n </div>\n </Tooltip>\n <div\n className={cn(\n \"oui-transition-height oui-grid oui-grid-cols-2 oui-gap-2 oui-overflow-hidden oui-duration-150\",\n visible ? \"oui-mt-0 oui-max-h-0\" : \"oui-mt-3 oui-max-h-[400px]\",\n )}\n >\n <div\n className=\"oui-flex oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-bg-[#131519] oui-px-2 oui-py-[11px]\"\n onClick={() =>\n connect({\n walletType: WalletConnectType.ABSTRACT,\n })\n }\n >\n <img\n className={cn(\"oui-size-[12px]\")}\n src={`${PrivyConnectorImagePath}/abstract.png`}\n alt=\"abstract wallet\"\n />\n <div className=\"oui-text-2xs oui-text-base-contrast\">Abstract</div>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn } from \"@orderly.network/ui\";\nimport { Tooltip, ChevronDownIcon, ChevronUpIcon } from \"@orderly.network/ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useWagmiWallet } from \"../../providers/wagmi/wagmiWalletProvider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { RenderWalletIcon } from \"../common\";\nimport { EVMChainPopover } from \"../common\";\nimport { MoreIcon } from \"../icons\";\n\nexport function AddEvmWallet() {\n const { t } = useTranslation();\n const [visible, setVisible] = useState(false);\n const { connect } = useWallet();\n const [open, setOpen] = useState(false);\n const { connectors } = useWagmiWallet();\n const { targetWalletType } = useWalletConnectorPrivy();\n\n useEffect(() => {\n let timer = 0;\n if (targetWalletType === WalletType.EVM) {\n timer = window.setTimeout(() => {\n setOpen(true);\n }, 200);\n }\n return () => {\n if (timer) {\n window.clearTimeout(timer);\n }\n };\n }, [targetWalletType]);\n useEffect(() => {\n if (open === false) {\n return;\n }\n const timeId = window.setTimeout(() => {\n setOpen(false);\n }, 5000);\n return () => {\n if (timeId) {\n window.clearTimeout(timeId);\n }\n };\n }, [open]);\n\n return (\n <div className=\"oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <Tooltip\n className=\"oui-z-[65] oui-max-w-[200px] oui-text-warning-darken\"\n open={open}\n content={t(\"connector.privy.addEvmWallet.tips\")}\n >\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-relative oui-flex oui-w-[55px] oui-items-center oui-justify-start\">\n <img\n src=\"https://oss.orderly.network/static/sdk/chains.png\"\n className=\"oui-relative oui-z-0 oui-h-[18px]\"\n />\n <div className=\"oui-absolute oui-right-0 oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-[#282e3a]\">\n <EVMChainPopover>\n <MoreIcon\n className=\"oui-relative oui-z-10 oui-size-3 oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n style={{ zIndex: 1 }}\n />\n </EVMChainPopover>\n </div>\n </div>\n </div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-80\">\n {t(\"connector.privy.addEvmWallet\")}\n </div>\n\n <button onClick={() => setVisible(!visible)}>\n {visible ? (\n <ChevronDownIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-36\"\n />\n ) : (\n <ChevronUpIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast\"\n />\n )}\n </button>\n </div>\n </Tooltip>\n <div\n className={cn(\n \"oui-transition-height oui-grid oui-grid-cols-2 oui-gap-2 oui-overflow-hidden oui-duration-150\",\n visible ? \"oui-mt-0 oui-max-h-0\" : \"oui-mt-3 oui-max-h-[400px]\",\n )}\n >\n {connectors.map((item, index) => (\n <div\n key={index}\n className=\"oui-flex oui-cursor-pointer oui-items-center oui-justify-center oui-gap-1 oui-bg-[#131519] oui-px-2 oui-py-[11px] oui-text-2xs\"\n onClick={() =>\n connect({ walletType: WalletConnectType.EVM, connector: item })\n }\n >\n <RenderWalletIcon connector={item} />\n <div className=\"oui-text-base-contrast\">{item.name}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { ChainNamespace } from \"@orderly.network/types\";\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n cn,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useSolanaWallet } from \"../../providers/solana/solanaWalletProvider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { RenderWalletIcon } from \"../common\";\n\nexport function AddSolanaWallet() {\n const { t } = useTranslation();\n const { wallets } = useSolanaWallet();\n const { connect } = useWallet();\n const [visible, setVisible] = useState(false);\n const onToggleVisibility = () => {\n setVisible(!visible);\n };\n const { targetWalletType } = useWalletConnectorPrivy();\n const [open, setOpen] = useState(false);\n console.log(\"-- open and targetNamespace\", open, targetWalletType);\n\n useEffect(() => {\n let timer = 0;\n if (targetWalletType === WalletType.SOL) {\n timer = window.setTimeout(() => {\n setOpen(true);\n }, 200);\n }\n return () => {\n if (timer) {\n window.clearTimeout(timer);\n }\n };\n }, [targetWalletType]);\n useEffect(() => {\n if (open === false) {\n return;\n }\n const timeId = window.setTimeout(() => {\n setOpen(false);\n }, 5000);\n return () => {\n if (timeId) {\n window.clearTimeout(timeId);\n }\n };\n }, [open]);\n\n return (\n <div className=\"oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <Tooltip\n className=\"oui-z-[65] oui-max-w-[200px] oui-text-warning-darken\"\n open={open}\n content={t(\"connector.privy.addSolanaWallet.tips\")}\n >\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <img\n src=\"https://oss.orderly.network/static/sdk/solana-logo.png\"\n className=\"oui-size-[15px]\"\n />\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-80\">\n {t(\"connector.privy.addSolanaWallet\")}\n </div>\n\n <button onClick={onToggleVisibility}>\n {visible ? (\n <ChevronDownIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-36\"\n />\n ) : (\n <ChevronUpIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast\"\n />\n )}\n </button>\n </div>\n </Tooltip>\n <div\n className={cn(\n \"oui-transition-height oui-grid oui-grid-cols-2 oui-gap-2 oui-overflow-hidden oui-duration-150\",\n visible ? \"oui-mt-0 oui-max-h-0\" : \"oui-mt-3 oui-max-h-[400px]\",\n )}\n >\n {wallets.map((item, index) => (\n <div\n key={index}\n className=\"oui-flex oui-cursor-pointer oui-items-center oui-justify-start oui-gap-1 oui-bg-[#131519] oui-px-2 oui-py-[11px]\"\n onClick={() =>\n connect({\n walletType: WalletConnectType.SOL,\n walletAdapter: item.adapter,\n })\n }\n >\n <RenderWalletIcon connector={item.adapter} />\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {item.adapter.name}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useStorageChain } from \"@orderly.network/hooks\";\nimport {\n AbstractChains,\n ChainNamespace,\n SolanaChains,\n} from \"@orderly.network/types\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { useAbstractWallet } from \"../../providers/abstractWallet/abstractWalletProvider\";\nimport { useSolanaWallet } from \"../../providers/solana/solanaWalletProvider\";\nimport { useWagmiWallet } from \"../../providers/wagmi/wagmiWalletProvider\";\nimport { WalletType } from \"../../types\";\nimport { StorageChainNotCurrentWalletType } from \"../switchNetworkTips\";\nimport { WalletCard } from \"../walletCard\";\nimport { AddAbstractWallet } from \"./addAbstractWallet\";\nimport { AddEvmWallet } from \"./addEvmWallet\";\nimport { AddSolanaWallet } from \"./addSolanaWallet\";\n\ninterface ConnectWallet {\n type: WalletType;\n address: string;\n}\n\nexport function RenderNonPrivyWallet() {\n const [walletList, setWalletList] = useState<ConnectWallet[]>([]);\n const [addWalletList, setAddWalletList] = useState<WalletType[]>([]);\n const { storageChain } = useStorageChain();\n const { connectorWalletType, walletChainTypeConfig } =\n useWalletConnectorPrivy();\n const { wallet: walletInWagmi, isConnected: isConnectedEvm } =\n useWagmiWallet();\n const { wallet: walletInSolana, isConnected: isConnectedSolana } =\n useSolanaWallet();\n const { wallet: walletInAbstract, isConnected: isConnectedAbstract } =\n useAbstractWallet();\n const { namespace, switchWallet } = useWallet();\n\n const isActive = (walletType: WalletType) => {\n if (namespace === ChainNamespace.evm) {\n if (walletType === WalletType.ABSTRACT) {\n return AbstractChains.has(storageChain?.chainId);\n }\n if (walletType === WalletType.EVM) {\n return !AbstractChains.has(storageChain?.chainId);\n }\n return false;\n }\n if (namespace === ChainNamespace.solana) {\n return walletType === WalletType.SOL;\n }\n return false;\n };\n\n const currentConnectWalletType: Set<WalletType> = useMemo(() => {\n const temp = new Set<WalletType>();\n walletList.forEach((wallet) => {\n temp.add(wallet.type);\n });\n return temp;\n }, [walletList]);\n\n useEffect(() => {\n const tempWalletList = [];\n const tempAddWallet = [];\n if (!connectorWalletType.disableWagmi && walletChainTypeConfig.hasEvm) {\n if (isConnectedEvm) {\n tempWalletList.push({\n type: WalletType.EVM,\n address: walletInWagmi?.accounts[0].address,\n });\n } else {\n tempAddWallet.push(WalletType.EVM);\n }\n }\n if (!connectorWalletType.disableSolana && walletChainTypeConfig.hasSol) {\n if (isConnectedSolana) {\n tempWalletList.push({\n type: WalletType.SOL,\n address: walletInSolana?.accounts[0].address,\n });\n } else {\n tempAddWallet.push(WalletType.SOL);\n }\n }\n if (!connectorWalletType.disableAGW && walletChainTypeConfig.hasAbstract) {\n if (isConnectedAbstract) {\n tempWalletList.push({\n type: WalletType.ABSTRACT,\n address: walletInAbstract?.additionalInfo?.AGWAddress,\n });\n } else {\n tempAddWallet.push(WalletType.ABSTRACT);\n }\n }\n setWalletList(tempWalletList);\n setAddWalletList(tempAddWallet);\n }, [\n isConnectedEvm,\n isConnectedSolana,\n isConnectedAbstract,\n walletInWagmi,\n walletInSolana,\n walletInAbstract,\n walletChainTypeConfig,\n connectorWalletType,\n ]);\n return (\n <>\n {walletList.length && (\n <StorageChainNotCurrentWalletType\n currentWalletType={currentConnectWalletType}\n />\n )}\n <div className=\"oui-flex oui-flex-col oui-gap-5\">\n {walletList.map((wallet) => (\n <WalletCard\n key={wallet.type}\n type={wallet.type}\n address={wallet.address}\n isActive={isActive(wallet.type)}\n onActiveChange={() => {\n switchWallet(wallet.type);\n }}\n isPrivy={false}\n isMulti={walletList.length > 1}\n />\n ))}\n </div>\n <RenderAddWallet addWalletList={addWalletList} />\n </>\n );\n}\n\nfunction RenderAddWallet({ addWalletList }: { addWalletList: WalletType[] }) {\n if (addWalletList.length === 0) {\n return null;\n }\n return (\n <>\n <div className=\"oui-my-5 oui-h-px oui-bg-line\" />\n <div className=\"oui-flex oui-flex-col oui-gap-5\">\n {addWalletList.map((wallet, index) => {\n if (wallet === WalletType.EVM) {\n return <AddEvmWallet key={index} />;\n }\n if (wallet === WalletType.SOL) {\n return <AddSolanaWallet key={index} />;\n }\n if (wallet === WalletType.ABSTRACT) {\n return <AddAbstractWallet key={index} />;\n }\n })}\n </div>\n </>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useStorageChain } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { AbstractChains, ChainNamespace } from \"@orderly.network/types\";\nimport { cn, ExclamationFillIcon } from \"@orderly.network/ui\";\nimport { windowGuard } from \"@orderly.network/utils\";\nimport { useWallet } from \"../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { WalletChainTypeEnum, WalletConnectType, WalletType } from \"../types\";\nimport { RenderPrivyTypeIcon, EVMChainPopover } from \"./common\";\nimport { MoreIcon } from \"./icons\";\nimport { WalletCard } from \"./walletCard\";\n\nfunction NoWallet() {\n const { walletChainType } = useWalletConnectorPrivy();\n const { t } = useTranslation();\n return (\n <div className=\"oui-mt-5 oui-flex oui-w-full oui-flex-col oui-items-center oui-justify-center\">\n <div className=\"oui-flex oui-w-full oui-flex-col oui-items-center oui-justify-center oui-gap-3\">\n <div className=\"oui-flex oui-w-full oui-flex-col oui-items-center oui-justify-center oui-gap-1 oui-rounded-[8px] oui-border oui-border-line-12 oui-px-2 oui-py-[13px] \">\n <img\n src=\"https://oss.orderly.network/static/sdk/privy/no-wallet.png\"\n className=\"oui-size-[64px]\"\n />\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"connector.privy.noWallet\")}\n </div>\n </div>\n <div className=\"oui-flex oui-items-start oui-gap-1 oui-rounded-[4px] oui-bg-[rgba(232,136,0,0.15)] oui-px-2 oui-py-[6px] \">\n <ExclamationFillIcon\n size={10}\n className=\"oui-mt-1 oui-size-[10px] oui-shrink-0 oui-text-warning-darken\"\n />\n <div className=\"oui-text-2xs oui-text-warning-darken\">\n {t(\"connector.privy.noWallet.description\")}\n </div>\n </div>\n </div>\n <div className=\"oui-my-5 oui-h-px oui-w-full oui-bg-line\" />\n <div className=\"oui-flex oui-w-full oui-flex-col oui-gap-2\">\n {walletChainType === WalletChainTypeEnum.EVM_SOL && (\n <>\n <CreateEVMWallet />\n <CreateSOLWallet />\n </>\n )}\n {walletChainType === WalletChainTypeEnum.onlyEVM && <CreateEVMWallet />}\n {walletChainType === WalletChainTypeEnum.onlySOL && <CreateSOLWallet />}\n </div>\n </div>\n );\n}\n\nfunction CreateEVMWallet() {\n const { t } = useTranslation();\n const { createEvmWallet } = usePrivyWallet();\n const [loading, setLoading] = useState(false);\n const doCreate = () => {\n if (loading) {\n return;\n }\n setLoading(true);\n createEvmWallet()\n .then(() => {\n setLoading(false);\n })\n .catch((e: any) => {\n console.warn(\"createEvmWallet error\", e);\n setLoading(false);\n });\n };\n return (\n <div className=\"oui-w-full oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-relative oui-flex oui-w-[55px] oui-items-center oui-justify-start\">\n <img\n src=\"https://oss.orderly.network/static/sdk/chains.png\"\n className=\"oui-relative oui-z-0 oui-h-[18px]\"\n />\n <div className=\"oui-absolute oui-right-0 oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-[#282e3a]\">\n <EVMChainPopover>\n <MoreIcon\n className=\"oui-relative oui-z-10 oui-size-3 oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n style={{ zIndex: 1 }}\n />\n </EVMChainPopover>\n </div>\n </div>\n </div>\n <div\n className={cn(\n \"oui-cursor-pointer oui-text-2xs oui-font-semibold oui-text-base-contrast-80\",\n loading && \"oui-opacity-50\",\n )}\n onClick={doCreate}\n >\n {t(\"connector.privy.createEvmWallet\")}\n </div>\n </div>\n </div>\n );\n}\n\nfunction CreateSOLWallet() {\n const { t } = useTranslation();\n const { createSolanaWallet } = usePrivyWallet();\n const [loading, setLoading] = useState(false);\n const doCreate = () => {\n if (loading) {\n return;\n }\n setLoading(true);\n createSolanaWallet()\n .then(() => {\n setLoading(false);\n })\n .catch((e: any) => {\n console.warn(\"create solana wallet error\", e);\n setLoading(false);\n });\n };\n return (\n <div className=\"oui-w-full oui-rounded-[8px] oui-bg-[#07080A] oui-px-2 oui-py-[11px]\">\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 \">\n <img\n src=\"https://oss.orderly.network/static/sdk/solana-logo.png\"\n className=\"oui-size-[15px]\"\n />\n <div\n className={cn(\n \"oui-cursor-pointer oui-text-2xs oui-font-semibold oui-text-base-contrast-80\",\n loading && \"oui-opacity-50\",\n )}\n onClick={doCreate}\n >\n {t(\"connector.privy.createSolanaWallet\")}\n </div>\n </div>\n </div>\n );\n}\ninterface ConnectWallet {\n type: WalletType;\n address: string;\n}\n\nexport function RenderPrivyWallet() {\n const { t } = useTranslation();\n const {\n targetWalletType,\n setTargetWalletType,\n walletChainTypeConfig,\n connectorWalletType,\n } = useWalletConnectorPrivy();\n const { walletEVM, walletSOL, linkedAccount } = usePrivyWallet();\n const { namespace, switchWallet, disconnect } = useWallet();\n const { storageChain } = useStorageChain();\n const [walletList, setWalletList] = useState<ConnectWallet[]>([]);\n const [addWallet, setAddWallet] = useState<React.ReactNode[]>([]);\n const [loading, setLoading] = useState(true);\n\n const isActive = useCallback(\n (walletType: WalletType) => {\n if (storageChain?.namespace === ChainNamespace.evm) {\n if (walletType === WalletType.EVM) {\n return !AbstractChains.has(storageChain?.chainId);\n }\n return false;\n }\n if (storageChain?.namespace === ChainNamespace.solana) {\n return walletType === WalletType.SOL;\n }\n return false;\n },\n [storageChain],\n );\n\n const isHaveEvmWallet = useMemo(() => {\n return walletEVM && walletEVM.accounts.length;\n }, [walletEVM]);\n\n const isHaveSolWallet = useMemo(() => {\n return walletSOL && walletSOL.accounts.length;\n }, [walletSOL]);\n\n const renderWarning = useCallback(() => {\n let showWarning = false;\n if (AbstractChains.has(storageChain?.chainId)) {\n showWarning = true;\n }\n if (targetWalletType === WalletType.ABSTRACT) {\n showWarning = true;\n }\n if (!showWarning) {\n return;\n }\n return (\n <div className=\"oui-mt-5 oui-border-b oui-border-line oui-pb-5\">\n <div\n className={cn(\n \"oui-flex oui-items-start oui-justify-center oui-gap-1\",\n \"oui-w-full oui-rounded-[8px] oui-px-2 oui-py-[13px]\",\n \"oui-bg-warning-darken/10\",\n )}\n >\n <ExclamationFillIcon\n size={14}\n className=\"oui-mt-[2px] oui-size-[14px] oui-shrink-0 oui-text-warning-darken\"\n />\n <div className=\"oui-text-2xs oui-leading-[18px] oui-text-warning-darken\">\n Abstract Chain access requires Abstract Global Wallet. Privy\n connection is currently unsupported.\n </div>\n </div>\n </div>\n );\n // }\n }, [targetWalletType]);\n\n const renderWallet = useCallback(() => {\n if (loading) {\n return;\n }\n if (!walletList.length) {\n return <NoWallet />;\n }\n return (\n <div className=\"oui-mt-5 oui-flex oui-flex-col oui-gap-5\">\n {walletList.map((wallet) => (\n <WalletCard\n key={wallet.type}\n type={wallet.type}\n address={wallet.address}\n isActive={isActive(wallet.type)}\n isPrivy={true}\n isMulti={walletList.length > 1}\n onActiveChange={() => {\n switchWallet(wallet.type);\n }}\n />\n ))}\n {addWallet.map((node, index) => (\n <div key={index}>\n <div className=\"oui-my-5 oui-h-px oui-w-full oui-bg-line\" />\n <div className=\"oui-flex oui-w-full oui-flex-col oui-gap-2\">\n {node}\n </div>\n </div>\n ))}\n </div>\n );\n }, [walletList, addWallet, isActive, switchWallet, t, loading]);\n\n useEffect(() => {\n new Promise((resolve) =>\n setTimeout(() => {\n setLoading(false);\n resolve(true);\n }, 200),\n );\n }, []);\n\n useEffect(() => {\n const tempWalletList = [];\n const tempAddWallet = [];\n if (!connectorWalletType.disableWagmi && walletChainTypeConfig.hasEvm) {\n if (isHaveEvmWallet) {\n tempWalletList.push({\n type: WalletType.EVM,\n address: walletEVM!.accounts[0].address,\n });\n } else {\n tempAddWallet.push(<CreateEVMWallet />);\n }\n }\n if (!connectorWalletType.disableSolana && walletChainTypeConfig.hasSol) {\n if (isHaveSolWallet) {\n tempWalletList.push({\n type: WalletType.SOL,\n address: walletSOL!.accounts[0].address,\n });\n } else {\n tempAddWallet.push(<CreateSOLWallet />);\n }\n }\n setWalletList(tempWalletList);\n setAddWallet(tempAddWallet);\n }, [\n connectorWalletType,\n walletChainTypeConfig,\n walletEVM,\n walletSOL,\n isHaveEvmWallet,\n isHaveSolWallet,\n ]);\n\n useEffect(() => {\n if (targetWalletType === WalletType.ABSTRACT) {\n windowGuard(() => {\n setTimeout(() => {\n setTargetWalletType(undefined);\n }, 5000);\n });\n }\n }, [targetWalletType, setTargetWalletType]);\n\n return (\n <div>\n <div className=\"oui-flex oui-items-center oui-justify-between\">\n {linkedAccount && (\n <div className=\"oui-flex oui-items-center oui-justify-start oui-gap-2 oui-text-base-contrast\">\n <div>\n <RenderPrivyTypeIcon type={linkedAccount.type} size={24} />\n </div>\n <div className=\"oui-text-xs\">{linkedAccount.address}</div>\n </div>\n )}\n <div\n className=\"oui-cursor-pointer oui-text-2xs oui-font-semibold oui-text-primary\"\n onClick={() => disconnect(WalletConnectType.PRIVY)}\n >\n {t(\"connector.privy.logout\")}\n </div>\n </div>\n {renderWarning()}\n {renderWallet()}\n </div>\n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation, Trans } from \"@orderly.network/i18n\";\nimport { ConnectorKey } from \"@orderly.network/types\";\nimport {\n useScreen,\n cn,\n CloseIcon,\n SimpleSheet,\n Box,\n Flex,\n Text,\n modal,\n CloseSquareFillIcon,\n} from \"@orderly.network/ui\";\nimport { useWalletConnectorPrivy } from \"../provider\";\nimport { useAbstractWallet } from \"../providers/abstractWallet/abstractWalletProvider\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { useSolanaWallet } from \"../providers/solana/solanaWalletProvider\";\nimport { useWagmiWallet } from \"../providers/wagmi/wagmiWalletProvider\";\nimport { WalletConnectType, WalletType } from \"../types\";\nimport { Drawer } from \"./drawer\";\nimport { ArrowRightIcon, ArrowRightLinearGradientIcon } from \"./icons\";\nimport { PwaDialog } from \"./pwaDilaog\";\nimport { RenderConnector } from \"./renderConnector\";\nimport { RenderNonPrivyWallet } from \"./renderNonPrivyWallet\";\nimport { RenderPrivyWallet } from \"./renderPrivyWallet\";\n\nfunction MyWallet() {\n const [connectorKey, setConnectorKey] = useLocalStorage(ConnectorKey, \"\");\n\n return (\n <div>\n {connectorKey === \"privy\" && <RenderPrivyWallet />}\n\n {connectorKey !== \"privy\" && <RenderNonPrivyWallet />}\n </div>\n );\n}\n\nexport function ConnectDrawer(props: {\n open: boolean;\n onChangeOpen: (open: boolean) => void;\n headerProps?: {\n mobile: React.ReactNode;\n };\n}) {\n const { t } = useTranslation();\n const { isConnected: isConnectedPrivy } = usePrivyWallet();\n const { isConnected: isConnectedEvm } = useWagmiWallet();\n const { isConnected: isConnectedSolana } = useSolanaWallet();\n const { isConnected: isConnectedAbstract } = useAbstractWallet();\n const { termsOfUse } = useWalletConnectorPrivy();\n const [connectorKey] = useLocalStorage(ConnectorKey, \"\");\n\n const isConnected = useMemo(() => {\n if (connectorKey === WalletConnectType.PRIVY && isConnectedPrivy) {\n return true;\n }\n if (connectorKey !== WalletConnectType.PRIVY) {\n if (isConnectedEvm) {\n return true;\n }\n if (isConnectedSolana) {\n return true;\n }\n if (isConnectedAbstract) {\n return true;\n }\n }\n return false;\n }, [\n isConnectedPrivy,\n isConnectedEvm,\n isConnectedSolana,\n isConnectedAbstract,\n connectorKey,\n ]);\n\n const { isMobile } = useScreen();\n\n const showPwaDialog = () => {\n modal.show(PwaDialog);\n };\n\n const renderHeader = useCallback(() => {\n return (\n <div\n className={cn(\n \"oui-font-semibold oui-text-base-contrast-80 \",\n \"oui-pb-2 oui-text-[20px]\",\n \"md:oui-py-0 md:oui-text-base\",\n )}\n >\n {isConnected\n ? t(\"connector.privy.myWallet\")\n : t(\"connector.connectWallet\")}\n </div>\n );\n }, [isConnected]);\n return (\n <SimpleSheet\n open={props.open}\n onOpenChange={props.onChangeOpen}\n classNames={{\n body: \"oui-h-full oui-py-0 oui-border-none oui-relative\",\n // overlay: \"!oui-bg-base-10/60\",\n content: cn(\n \"!oui-p-4 !oui-bg-[#131519] !oui-border !oui-border-solid !oui-border-line-12\",\n\n isMobile\n ? \"oui-inset-y-0 oui-right-0 oui-w-[280px] oui-rounded-none !oui-bg-[#181C23]\"\n : \"!oui-bottom-[30px] oui-right-3 oui-top-[48px] !oui-h-auto oui-w-[300px] oui-overflow-hidden oui-rounded-[16px] !oui-bg-[#131519] \",\n ),\n }}\n contentProps={{ side: \"right\", closeable: false }}\n >\n {!isMobile && (\n <div\n className=\"oui-absolute oui-inset-x-[50px] -oui-top-[calc(100vh/2)] oui-z-0 oui-h-screen\"\n style={{\n background:\n \"conic-gradient(from -41deg at 40.63% 50.41%, rgba(242, 98, 181, 0.00) 125.17920970916748deg, rgba(95, 197, 255, 0.20) 193.4119462966919deg, rgba(255, 172, 137, 0.20) 216.0206937789917deg, rgba(129, 85, 255, 0.20) 236.0708713531494deg, rgba(120, 157, 255, 0.20) 259.95326042175293deg, rgba(159, 115, 241, 0.00) 311.0780096054077deg)\",\n filter: \"blur(50px)\",\n }}\n />\n )}\n <div className=\"oui-relative oui-z-10 oui-flex oui-h-full oui-flex-col oui-gap-4 md:oui-gap-5\">\n <div className=\"oui-flex oui-flex-none oui-items-center oui-justify-between\">\n {renderHeader()}\n <CloseSquareFillIcon\n className=\"oui-size-5 oui-cursor-pointer oui-text-base-contrast-20 hover:oui-text-base-contrast-80\"\n onClick={() => props.onChangeOpen(false)}\n />\n </div>\n {isConnected ? <MyWallet /> : <RenderConnector />}\n\n {!isConnected && (\n <Flex gap={4} direction=\"column\">\n {isMobile && (\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n gap={4}\n className=\"oui-rounded-[8px] oui-px-3 oui-py-2 oui-text-2xs oui-bg-[linear-gradient(270deg,rgba(89,176,254,0.10)_0%,rgba(38,254,254,0.10)_100%)] oui-w-full\"\n onClick={() => showPwaDialog()}\n >\n <Text className=\"oui-bg-[linear-gradient(270deg,#59B0FE_0%,#26FEFE_100%)] oui-bg-clip-text oui-text-transparent\">\n {t(\"connector.privy.pwa.title\")}\n </Text>\n <ArrowRightLinearGradientIcon\n size={20}\n className=\"oui-flex-shrink-0\"\n />\n </Flex>\n )}\n {termsOfUse && (\n <div className=\"oui-flex-none oui-text-center oui-text-2xs oui-font-semibold oui-text-base-contrast-80\">\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"connector.privy.termsOfUse\"\n components={[\n <a\n key=\"termsOfUse\"\n href={termsOfUse}\n className=\"oui-cursor-pointer oui-text-primary oui-underline\"\n target=\"_blank\"\n rel=\"noreferrer\"\n />,\n ]}\n />\n </div>\n )}\n </Flex>\n )}\n </div>\n </SimpleSheet>\n );\n}\n","import React, {\n Children,\n FC,\n PropsWithChildren,\n SVGProps,\n useState,\n} from \"react\";\nimport { useAccount } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, SimpleDialog, Text } from \"@orderly.network/ui\";\n\nexport const LinkDeviceMobile = (props: PropsWithChildren) => {\n const [open, setOpen] = useState(false);\n const { account } = useAccount();\n const { t } = useTranslation();\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n };\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n size=\"xs\"\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: t(\"connector.disconnect\"),\n onClick: async () => {\n await onDisconnect();\n hideDialog();\n },\n size: \"md\",\n variant: \"outlined\",\n color: \"danger\",\n },\n }}\n >\n <Text intensity={54} size=\"sm\">\n {t(\"linkDevice.scanQRCode.connected.description\")}\n </Text>\n </SimpleDialog>\n <Flex className=\"oui-gap-[6px]\" itemAlign={\"center\"} onClick={showDialog}>\n <Flex\n className=\"oui-text-base-contrast\"\n intensity={500}\n height={28}\n r=\"md\"\n >\n <DesktopIcon />\n <Dot />\n <LinkIcon />\n <Dot />\n <MobileIcon />\n </Flex>\n {props.children}\n </Flex>\n </>\n );\n};\nconst Dot = () => {\n return (\n <Flex className=\"oui-gap-x-[1px] oui-px-[1px]\">\n <DotIcon />\n <DotIcon />\n <DotIcon />\n </Flex>\n );\n};\n\nconst DesktopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M4.5 2.93a2.25 2.25 0 0 0-2.25 2.25v5.25a.75.75 0 0 0-.75.75v1.5c0 1.272.93 2.25 2.25 2.25h10.5c1.318 0 2.25-.978 2.25-2.25v-1.5a.75.75 0 0 0-.75-.75V5.18a2.25 2.25 0 0 0-2.25-2.25zm0 1.5h9a.75.75 0 0 1 .75.75v5.25H3.75V5.18a.75.75 0 0 1 .75-.75M3 11.93h12v.75c0 .46-.277.75-.75.75H3.75c-.474 0-.75-.29-.75-.75z\" />\n </svg>\n);\n\nconst MobileIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M13.498 3.715a2.25 2.25 0 0 0-2.25-2.25h-4.5a2.25 2.25 0 0 0-2.25 2.25v10.5a2.25 2.25 0 0 0 2.25 2.25h4.5a2.25 2.25 0 0 0 2.25-2.25zm-1.5 0v9.75h-6v-9.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75m-2.25 11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0\" />\n </svg>\n);\n\nconst LinkIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.007 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0m7.486-2.344A.6.6 0 0 1 8.91 3.5c.15 0 .305.048.418.156a.55.55 0 0 1 0 .798L5.254 8.337a.62.62 0 0 1-.837 0L2.67 6.673a.55.55 0 0 1 0-.798.62.62 0 0 1 .837 0l1.329 1.266z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"11.007\"\n y1=\"5.999\"\n x2=\"1.007\"\n y2=\"5.999\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nconst DotIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"2\"\n height=\"2\"\n viewBox=\"0 0 2 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M.667.334a.667.667 0 1 1 0 1.333.667.667 0 0 1 0-1.333\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"1.333\"\n y1=\"1.001\"\n x2=\"0\"\n y2=\"1.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React, { useMemo } from \"react\";\nimport { useAccount, useWalletConnector } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n ABSTRACT_CHAIN_ID_MAP,\n ABSTRACT_TESTNET_CHAINID,\n AccountStatusEnum,\n} from \"@orderly.network/types\";\nimport {\n Button,\n cn,\n Flex,\n formatAddress,\n Text,\n useScreen,\n} from \"@orderly.network/ui\";\nimport { AuthGuard } from \"@orderly.network/ui-connector\";\nimport { usePrivyWallet } from \"../providers/privy/privyWalletProvider\";\nimport { RenderPrivyTypeIcon } from \"./common\";\nimport { LinkDeviceMobile } from \"./linkDevice\";\n\nexport function UserCenter(props: any) {\n const { accountState: state } = props;\n return (\n <RenderUserCenter state={state} disabledConnect={props.disabledConnect} />\n );\n}\n\nexport const MwebUserCenter = (props: any) => {\n const { state } = props;\n\n return (\n <RenderUserCenter state={state} disabledConnect={props.disabledConnect} />\n );\n};\n\nconst RenderUserCenter = (props: any) => {\n const { state } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const { connect, wallet } = useWalletConnector();\n const { linkedAccount } = usePrivyWallet();\n const { state: accountState, account } = useAccount();\n const { connectedChain } = useWalletConnector();\n\n const disabled = state.validating || props.disabledConnect;\n\n const userAddress = useMemo(() => {\n if (\n connectedChain?.id &&\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain?.id as string))\n ) {\n return account.getAdditionalInfo()?.AGWAddress;\n }\n return account.address;\n }, [account, connectedChain, accountState]);\n\n // if (accountStatus.status <= ) {}\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return (\n <Flex className=\"oui-bg-base-5 oui-px-[7px] oui-rounded-[6px] oui-gap-[6px]\">\n <LinkDeviceMobile>\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-base-contrast oui-text-xs\"\n >\n {formatAddress(userAddress!)}\n </Text.formatted>\n </LinkDeviceMobile>\n </Flex>\n );\n }\n if (state.status <= AccountStatusEnum.NotConnected || disabled) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant={disabled ? undefined : \"gradient\"}\n angle={45}\n className={cn(\n \"wallet-connect-button\",\n isMobile && \"oui-font-semibold oui-px-2\",\n )}\n loading={state.validating}\n disabled={disabled}\n onClick={() => {\n connect()\n .then((r: any) => {\n console.log(\"*****\", r);\n })\n .catch((e: any) => console.error(e));\n }}\n >\n {isMobile ? t(\"connector.connect\") : t(\"connector.connectWallet\")}\n </Button>\n );\n }\n\n if (!wallet) {\n return;\n }\n if (isMobile) {\n return (\n <AuthGuard\n buttonProps={{\n size: \"md\",\n }}\n >\n <div onClick={() => connect()}>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n className=\"oui-px-2 oui-flex oui-items-center oui-justify-center oui-gap-1\"\n >\n {linkedAccount && (\n <RenderPrivyTypeIcon\n type={linkedAccount.type}\n size={14}\n black={true}\n />\n )}\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-[rgba(0,0,0,.88)] oui-font-semibold\"\n >\n {formatAddress(userAddress!)}\n </Text.formatted>\n </Button>\n </div>\n </AuthGuard>\n );\n }\n return (\n <div onClick={() => connect()}>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n className=\"oui-flex oui-items-center oui-justify-center oui-gap-2\"\n >\n {linkedAccount && (\n <RenderPrivyTypeIcon\n type={linkedAccount.type}\n size={18}\n black={true}\n />\n )}\n <Text.formatted rule=\"address\" className=\"oui-text-[rgba(0,0,0,.88)]\">\n {formatAddress(userAddress!)}\n </Text.formatted>\n </Button>\n </div>\n );\n};\n","import { UserCenter } from \"./components/userCenter\";\n\nimport { installExtension } from \"@orderly.network/ui\";\nimport { ExtensionPositionEnum } from \"@orderly.network/ui\";\nimport { MwebUserCenter } from \"./components/userCenter\";\nimport React from \"react\";\n\ninstallExtension({\n name: \"account-menu-privy\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.AccountMenu],\n})((props: any) => {\n return <UserCenter {...props} />;\n});\n\ninstallExtension({\n name: \"mobile-account-menu-privy\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MobileAccountMenu],\n})((props: any) => {\n return <MwebUserCenter {...props} />;\n});\n","import React, { useMemo } from \"react\";\nimport { WalletConnectorContext } from \"@orderly.network/hooks\";\nimport type {\n WalletConnectorContextState,\n WalletState,\n} from \"@orderly.network/hooks\";\nimport { ConnectDrawer } from \"./components/connectDrawer\";\nimport { useWallet } from \"./hooks/useWallet\";\nimport \"./injectUsercenter\";\nimport { useWalletConnectorPrivy } from \"./provider\";\n\ninterface MainProps {\n headerProps?: {\n mobile: React.ReactNode;\n };\n}\n\nexport const Main: React.FC<React.PropsWithChildren<MainProps>> = (props) => {\n const { headerProps, children } = props;\n\n const { wallet, connectedChain, setChain, namespace, onDisconnect } =\n useWallet();\n\n const { openConnectDrawer, setOpenConnectDrawer, setTargetWalletType } =\n useWalletConnectorPrivy();\n\n const connect = (options: any): Promise<WalletState[]> => {\n // fix wallet-connector package connect\n if (options && options.autoSelect) {\n return Promise.resolve([]);\n }\n setTargetWalletType(undefined);\n return new Promise((resolve) => {\n setOpenConnectDrawer(true);\n resolve([]);\n });\n };\n\n const memoizedValue = useMemo<WalletConnectorContextState>(\n () => ({\n connect,\n disconnect: onDisconnect,\n connecting: false,\n wallet,\n setChain,\n connectedChain,\n namespace,\n chains: [],\n settingChain: false,\n }),\n [connect, setChain, onDisconnect, connectedChain, wallet, namespace],\n );\n\n return (\n <WalletConnectorContext.Provider value={memoizedValue}>\n <ConnectDrawer\n open={openConnectDrawer}\n onChangeOpen={setOpenConnectDrawer}\n headerProps={headerProps}\n />\n {children}\n </WalletConnectorContext.Provider>\n );\n};\n","import React, { PropsWithChildren, useMemo, useState } from \"react\";\nimport { AbstractWalletProvider } from \"@abstract-foundation/agw-react\";\n// Use abstract for mainnet\nimport { abstractTestnet, abstract } from \"viem/chains\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { Network } from \"../../types\";\n\nexport const InitAbstractProvider = (props: PropsWithChildren) => {\n const { network } = useWalletConnectorPrivy();\n const chain = useMemo(() => {\n if (network === Network.mainnet) {\n return abstract;\n }\n return abstractTestnet;\n }, [network]);\n return (\n <AbstractWalletProvider chain={chain}>\n {props.children}\n </AbstractWalletProvider>\n );\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { AbstractWalletProvider } from \"./abstractWalletProvider\";\nimport { InitAbstractProvider } from \"./initAbstractProvider\";\n\nexport function AbstractWallet({ children }: { children: React.ReactNode }) {\n return (\n <InitAbstractProvider>\n <AbstractWalletProvider>{children}</AbstractWalletProvider>\n </InitAbstractProvider>\n );\n}\n","import React, { PropsWithChildren, useMemo, useState } from \"react\";\nimport { PrivyClientConfig, PrivyProvider } from \"@privy-io/react-auth\";\nimport { Chain } from \"viem/chains\";\nimport {\n AbstractChains,\n SolanaChains,\n defaultMainnetChains,\n defaultTestnetChains,\n} from \"@orderly.network/types\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { InitPrivy } from \"../../types\";\n\ninterface IProps extends PropsWithChildren {\n privyConfig?: InitPrivy;\n initChains: Chain[];\n}\n\nexport function InitPrivyProvider({\n privyConfig,\n initChains,\n children,\n}: IProps) {\n if (!privyConfig) {\n return children;\n }\n const { network } = useWalletConnectorPrivy();\n const config = useMemo((): PrivyClientConfig => {\n // const chains = initChains.filter((chain) => !SolanaChains.has(chain.id) )\n const chains = initChains;\n const preferredDefaultChainIds = (\n network === \"mainnet\" ? defaultMainnetChains : defaultTestnetChains\n ).map((c) => c.id);\n const preferredDefaultChain = preferredDefaultChainIds\n .map((id) => chains.find((c) => c.id === id))\n .find((c) => !!c);\n const firstEvmChain = chains.find(\n (chain) => !SolanaChains.has(chain.id) && !AbstractChains.has(chain.id),\n );\n const defaultEvmChain = preferredDefaultChain ?? firstEvmChain ?? chains[0];\n return {\n loginMethods: privyConfig.config?.loginMethods || [\n \"email\",\n \"google\",\n \"twitter\",\n ],\n appearance: {\n ...privyConfig.config?.appearance,\n walletChainType: \"ethereum-and-solana\",\n },\n\n embeddedWallets: {\n ethereum: {\n createOnLogin: \"all-users\",\n },\n solana: {\n createOnLogin: \"all-users\",\n },\n },\n externalWallets: {\n walletConnect: {\n enabled: false,\n },\n },\n\n defaultChain: defaultEvmChain,\n supportedChains: chains,\n };\n }, [initChains, privyConfig, network]);\n // const privyConfig = useMemo(():PrivyClientConfig => (\n // ), [props.initChains])\n // console.log('-- privyconfig', privyConfig);\n // return children;\n if (!initChains.length) {\n console.warn(\"initChains is empty\");\n return;\n }\n return (\n <PrivyProvider appId={privyConfig.appid} config={config}>\n {children}\n </PrivyProvider>\n );\n}\n","import React from \"react\";\nimport { PropsWithChildren } from \"react\";\nimport { Chain } from \"viem/chains\";\nimport { InitPrivy } from \"../../types\";\nimport { InitPrivyProvider } from \"./initPrivyProvider\";\nimport { PrivyWalletProvider } from \"./privyWalletProvider\";\n\nexport function PrivyWallet(\n props: PropsWithChildren<{ privyConfig?: InitPrivy; initChains: Chain[] }>,\n) {\n return (\n <InitPrivyProvider\n privyConfig={props.privyConfig}\n initChains={props.initChains}\n >\n <PrivyWalletProvider>{props.children}</PrivyWalletProvider>\n </InitPrivyProvider>\n );\n}\n","import React, { PropsWithChildren, useEffect, useMemo, useState } from \"react\";\nimport {\n Adapter,\n WalletAdapterNetwork,\n WalletError,\n WalletNotReadyError,\n} from \"@solana/wallet-adapter-base\";\nimport { WalletProvider } from \"@solana/wallet-adapter-react\";\nimport { ConnectionProvider } from \"@solana/wallet-adapter-react\";\nimport { PhantomWalletAdapter } from \"@solana/wallet-adapter-wallets\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { InitSolana } from \"../../types\";\n\ninterface IProps extends PropsWithChildren<InitSolana> {}\n\nexport function InitSolanaProvider({\n mainnetRpc,\n devnetRpc,\n wallets: walletsProp,\n onError,\n children,\n}: IProps) {\n const { network, setSolanaInfo, connectorWalletType } =\n useWalletConnectorPrivy();\n if (connectorWalletType.disableSolana) {\n return children;\n }\n\n const wallets = useMemo(() => {\n return walletsProp ?? [new PhantomWalletAdapter()];\n }, [walletsProp]);\n\n useEffect(() => {\n let rpcUrl = null;\n if (network === \"mainnet\") {\n rpcUrl = mainnetRpc ?? null;\n } else {\n rpcUrl = devnetRpc ?? null;\n }\n setSolanaInfo({\n rpcUrl: rpcUrl,\n network:\n network === \"mainnet\"\n ? WalletAdapterNetwork.Mainnet\n : WalletAdapterNetwork.Devnet,\n });\n }, [network, mainnetRpc, devnetRpc, setSolanaInfo]);\n return (\n <WalletProvider wallets={wallets} onError={onError} autoConnect>\n {children}\n </WalletProvider>\n );\n}\n","import React, { PropsWithChildren } from \"react\";\nimport { InitSolana } from \"../../types\";\nimport { InitSolanaProvider } from \"./initSolanaProvider\";\nimport { SolanaWalletProvider } from \"./solanaWalletProvider\";\n\nexport function SolanaWallet(props: {\n children: React.ReactNode;\n solanaConfig?: InitSolana;\n}) {\n return (\n <InitSolanaProvider\n {...(props.solanaConfig ?? { wallets: [], onError: () => {} })}\n >\n <SolanaWalletProvider>{props.children}</SolanaWalletProvider>\n </InitSolanaProvider>\n );\n}\n","import React, { PropsWithChildren, useState } from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport {\n abstractTestnet,\n arbitrum,\n Chain,\n mainnet,\n okc,\n sepolia,\n} from \"viem/chains\";\nimport {\n createConfig,\n createStorage,\n http,\n injected,\n WagmiProvider,\n} from \"wagmi\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { InitWagmi } from \"../../types\";\n\ninterface InitWagmiProps extends PropsWithChildren {\n initialState?: any;\n initChains: Chain[];\n wagmiConfig: InitWagmi;\n}\n\nexport function InitWagmiProvider({\n children,\n initialState,\n initChains,\n wagmiConfig,\n}: InitWagmiProps) {\n const { connectorWalletType } = useWalletConnectorPrivy();\n if (connectorWalletType.disableWagmi) {\n return children;\n }\n const [queryClient] = useState(() => new QueryClient());\n\n const [config] = useState(() =>\n createConfig({\n chains:\n initChains && initChains.length\n ? (initChains as unknown as [Chain, ...Chain[]])\n : [mainnet],\n multiInjectedProviderDiscovery: true,\n storage: wagmiConfig.storage\n ? wagmiConfig.storage\n : createStorage({\n storage: localStorage,\n key: \"wagmi\",\n }),\n connectors: wagmiConfig.connectors\n ? wagmiConfig.connectors\n : [injected()],\n transports: Object.fromEntries(\n initChains.map((chain) => [chain.id, http()]),\n ),\n }),\n );\n\n return (\n <WagmiProvider config={config} initialState={initialState}>\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n </WagmiProvider>\n );\n}\n","import React from \"react\";\nimport { Chain } from \"viem/chains\";\nimport { EMPTY_OBJECT } from \"@orderly.network/types\";\nimport { InitWagmi } from \"../../types\";\nimport { InitWagmiProvider } from \"./initWagmiProvider\";\nimport { WagmiWalletProvider } from \"./wagmiWalletProvider\";\n\nexport const WagmiWallet: React.FC<\n React.PropsWithChildren<{ wagmiConfig?: InitWagmi; initChains: Chain[] }>\n> = (props) => {\n return (\n <InitWagmiProvider\n initChains={props.initChains}\n wagmiConfig={props.wagmiConfig ?? EMPTY_OBJECT}\n >\n <WagmiWalletProvider>{props.children}</WagmiWalletProvider>\n </InitWagmiProvider>\n );\n};\n","import React, {\n type PropsWithChildren,\n useEffect,\n useRef,\n useState,\n createContext,\n useContext,\n useMemo,\n} from \"react\";\nimport { PrivyClientConfig } from \"@privy-io/react-auth\";\nimport { WalletAdapterNetwork } from \"@solana/wallet-adapter-base\";\nimport { type Chain, defineChain } from \"viem\";\nimport { mainnet } from \"viem/chains\";\nimport {\n Chains,\n useMainnetChainsStore,\n useSwapSupportStore,\n useTestnetChainsStore,\n} from \"@orderly.network/hooks\";\nimport {\n AbstractChains,\n API,\n ArbitrumSepoliaChainInfo,\n ArbitrumSepoliaTokenInfo,\n SolanaChains,\n SolanaDevnetChainInfo,\n SolanaDevnetTokenInfo,\n TesnetTokenFallback,\n} from \"@orderly.network/types\";\nimport { TooltipProvider } from \"@orderly.network/ui\";\nimport { Main } from \"./main\";\nimport { AbstractWallet } from \"./providers/abstractWallet\";\nimport { PrivyWallet } from \"./providers/privy\";\nimport { SolanaWallet } from \"./providers/solana\";\nimport { WagmiWallet } from \"./providers/wagmi\";\nimport {\n InitPrivy,\n InitWagmi,\n InitSolana,\n Network,\n WalletChainType,\n WalletChainTypeEnum,\n ConnectorWalletType,\n InitAbstract,\n WalletChainTypeConfig,\n WalletType,\n} from \"./types\";\n\nconst testnetChainFallback = [ArbitrumSepoliaChainInfo, SolanaDevnetChainInfo];\n\n// const fetcher = (url: string) => fetch(url).then((res) => res.json());\n\nconst formatSwapChainInfo = (data: any = {}) => {\n return Object.keys(data).map((key) => {\n const chain = data[key];\n const { network_infos, token_infos } = chain;\n\n const nativeToken = token_infos.find(\n (item: any) => item.symbol === network_infos.currency_symbol,\n );\n\n if (nativeToken) {\n network_infos.currency_decimal = nativeToken.decimals;\n } else {\n // default 18 decimals\n network_infos.currency_decimal = 18;\n }\n\n return network_infos;\n });\n};\n\nconst processChainInfo = (chainInfo: any) =>\n chainInfo.map((row: any) =>\n defineChain({\n id: Number(row.chain_id),\n name: row.name,\n nativeCurrency: {\n decimals: row.currency_decimal,\n name: \"Ether\",\n symbol: row.currency_symbol,\n },\n rpcUrls: {\n default: {\n http: [row.public_rpc_url],\n },\n },\n blockExplorers: {\n default: { name: \"Explorer\", url: row.explorer_base_url },\n },\n }),\n ) || [];\n\ninterface WalletConnectorPrivyContextType {\n initChains: Chain[];\n mainnetChains: Chain[];\n testnetChains: Chain[];\n getChainsByNetwork: (network: \"mainnet\" | \"testnet\") => Chain[];\n openConnectDrawer: boolean;\n setOpenConnectDrawer: (open: boolean) => void;\n targetWalletType: WalletType | undefined;\n setTargetWalletType: (walletType: WalletType | undefined) => void;\n network: Network;\n setNetwork: (network: Network) => void;\n solanaInfo: {\n rpcUrl: string | null;\n network: WalletAdapterNetwork | null;\n } | null;\n setSolanaInfo: (\n solanaInfo: {\n rpcUrl: string | null;\n network: WalletAdapterNetwork | null;\n } | null,\n ) => void;\n termsOfUse: string;\n // TODO deprecated\n walletChainType: WalletChainType;\n // TODO new chaintype config\n walletChainTypeConfig: WalletChainTypeConfig;\n connectorWalletType: ConnectorWalletType;\n privyConfig: {\n loginMethods?: PrivyClientConfig[\"loginMethods\"];\n };\n}\n\nconst WalletConnectorPrivyContext =\n createContext<WalletConnectorPrivyContextType>({\n initChains: [mainnet],\n mainnetChains: [],\n testnetChains: [],\n getChainsByNetwork: () => [],\n openConnectDrawer: false,\n setOpenConnectDrawer: () => {},\n targetWalletType: undefined,\n setTargetWalletType: () => {},\n network: Network.mainnet,\n setNetwork: () => {},\n solanaInfo: null,\n setSolanaInfo: () => {},\n termsOfUse: \"\",\n walletChainType: WalletChainTypeEnum.EVM_SOL,\n walletChainTypeConfig: {\n hasEvm: true,\n hasSol: true,\n hasAbstract: false,\n },\n connectorWalletType: {\n disableWagmi: false,\n disablePrivy: false,\n disableSolana: false,\n disableAGW: false,\n },\n privyConfig: {\n loginMethods: [],\n },\n });\n\nexport const useWalletConnectorPrivy = () =>\n useContext(WalletConnectorPrivyContext);\n\ninterface WalletConnectorPrivyProps extends PropsWithChildren {\n privyConfig?: InitPrivy;\n wagmiConfig?: InitWagmi;\n solanaConfig?: InitSolana;\n abstractConfig?: InitAbstract;\n network: Network;\n customChains?: Chains;\n termsOfUse?: string;\n headerProps?: {\n mobile: React.ReactNode;\n };\n enableSwapDeposit?: boolean;\n}\n\nconst defaultPrivyLoginMethod = [\n \"email\",\n \"google\",\n \"twitter\",\n] as PrivyClientConfig[\"loginMethods\"];\nexport function WalletConnectorPrivyProvider(props: WalletConnectorPrivyProps) {\n const [walletChainType, setWalletChainType] = useState<WalletChainType>(\n WalletChainTypeEnum.EVM_SOL,\n );\n const [termsOfUse] = useState<string>(props.termsOfUse || \"\");\n const [network, setNetwork] = useState<Network>(props.network);\n const [initChains, setInitChains] = useState<Chain[]>([]);\n const [mainnetChains, setMainnetChains] = useState<Chain[]>([]);\n const [testnetChains, setTestnetChains] = useState<Chain[]>([]);\n const [mainnetChainInfos, setMainnetChainInfos] = useState<\n API.Chain[] | null\n >(null);\n const [testChainInfos, setTestChainInfos] = useState<API.Chain[] | null>(\n null,\n );\n\n const fetchMainChains = useMainnetChainsStore((state) => state.fetchData);\n const fetchTestChains = useTestnetChainsStore((state) => state.fetchData);\n\n const mainnetChainsHydrated = useMainnetChainsStore(\n (state) => state.hydrated,\n );\n const testChainsHydrated = useTestnetChainsStore((state) => state.hydrated);\n\n const mainnetChainInfosFromStore = useMainnetChainsStore(\n (state) => state.data,\n );\n const testChainInfosFromStore = useTestnetChainsStore((state) => state.data);\n\n const hasCustomChains =\n Array.isArray(props.customChains) && props.customChains.length > 0;\n\n const initRef = useRef(hasCustomChains);\n const [openConnectDrawer, setOpenConnectDrawer] = useState(false);\n const [targetWalletType, setTargetWalletType] = useState<\n WalletType | undefined\n >();\n const [privyConfig, setPrivyConfig] = useState<PrivyClientConfig>({\n loginMethods: props.privyConfig\n ? (props.privyConfig?.config?.loginMethods ?? defaultPrivyLoginMethod)\n : defaultPrivyLoginMethod,\n });\n const [solanaInfo, setSolanaInfo] = useState<{\n rpcUrl: string | null;\n network: WalletAdapterNetwork | null;\n } | null>(null);\n\n const connectorWalletType = useMemo(() => {\n const type: ConnectorWalletType = {\n disableWagmi: false,\n disablePrivy: false,\n disableSolana: false,\n disableAGW: false,\n };\n if (!props.privyConfig) {\n type.disablePrivy = true;\n }\n if (!props.wagmiConfig) {\n type.disableWagmi = true;\n }\n if (!props.solanaConfig) {\n type.disableSolana = true;\n }\n if (!props.abstractConfig) {\n type.disableAGW = true;\n }\n return type;\n }, [props.privyConfig, props.wagmiConfig, props.solanaConfig]);\n\n const walletChainTypeConfig = useMemo(() => {\n const chainTypeObj: WalletChainTypeConfig = {\n hasEvm: false,\n hasSol: false,\n hasAbstract: false,\n };\n initChains.forEach((chain) => {\n if (SolanaChains.has(chain.id)) {\n chainTypeObj.hasSol = true;\n } else if (AbstractChains.has(chain.id)) {\n chainTypeObj.hasAbstract = true;\n } else {\n chainTypeObj.hasEvm = true;\n }\n });\n return chainTypeObj;\n }, [initChains]);\n\n const {\n data: swapChainInfoRes,\n // loading: swapLoading,\n fetchData: fetchSwapData,\n } = useSwapSupportStore();\n\n // const { data: swapChainInfoRes, isLoading: swapLoading } = useSWR(\n // !props.customChains && props.enableSwapDeposit\n // ? \"https://fi-api.woo.org/swap_support\"\n // : null,\n // fetcher,\n // commonSwrOpts,\n // );\n\n useEffect(() => {\n if (!props.enableSwapDeposit || !!props.customChains) return;\n fetchSwapData();\n }, [props.enableSwapDeposit, props.customChains]);\n\n useEffect(() => {\n if (!mainnetChainsHydrated || !testChainsHydrated) return;\n\n if (\n Array.isArray(useMainnetChainsStore.getState().data) &&\n useTestnetChainsStore.getState().data\n ) {\n return;\n }\n\n fetchMainChains().then((data) => {\n setMainnetChainInfos(data);\n });\n fetchTestChains().then((data) => {\n setTestChainInfos(data);\n });\n }, [mainnetChainsHydrated, testChainsHydrated]);\n\n const handleCustomerChains = () => {\n const testChains = processChainInfo(\n props.customChains!.testnet?.map((item) => item.network_infos),\n );\n const mainnetChains = processChainInfo(\n props.customChains!.mainnet?.map((item) => item.network_infos),\n );\n setTestnetChains(testChains);\n setMainnetChains(mainnetChains);\n setInitChains([...testChains, ...mainnetChains] as [Chain, ...Chain[]]);\n const chainTypeObj: {\n hasEvm: boolean;\n hasSol: boolean;\n hasAbstract: boolean;\n } = {\n hasEvm: false,\n hasSol: false,\n hasAbstract: false,\n };\n [...testChains, ...mainnetChains].forEach((chain) => {\n if (SolanaChains.has(chain.id)) {\n chainTypeObj.hasSol = true;\n } else if (AbstractChains.has(chain.id)) {\n chainTypeObj.hasAbstract = true;\n } else {\n chainTypeObj.hasEvm = true;\n }\n });\n initRef.current = true;\n if (chainTypeObj.hasEvm && chainTypeObj.hasSol) {\n setWalletChainType(WalletChainTypeEnum.EVM_SOL);\n } else if (chainTypeObj.hasEvm) {\n setWalletChainType(WalletChainTypeEnum.onlyEVM);\n } else if (chainTypeObj.hasSol) {\n setWalletChainType(WalletChainTypeEnum.onlySOL);\n }\n };\n if (\n connectorWalletType.disablePrivy &&\n connectorWalletType.disableWagmi &&\n connectorWalletType.disableSolana &&\n connectorWalletType.disableAGW\n ) {\n throw new Error(\n \"Privy, Wagmi, Solana, Abstract are all disabled. Please enable at least one of them.\",\n );\n }\n\n const getChainsByNetwork = (network: \"mainnet\" | \"testnet\"): Chain[] => {\n return network === \"mainnet\" ? mainnetChains : testnetChains;\n };\n\n const value = useMemo(\n () => ({\n initChains,\n mainnetChains,\n testnetChains,\n getChainsByNetwork,\n openConnectDrawer,\n setOpenConnectDrawer,\n targetWalletType,\n setTargetWalletType,\n network,\n setNetwork,\n solanaInfo,\n setSolanaInfo,\n termsOfUse,\n walletChainType,\n connectorWalletType,\n walletChainTypeConfig,\n privyConfig,\n }),\n [\n initChains,\n mainnetChains,\n testnetChains,\n getChainsByNetwork,\n openConnectDrawer,\n setOpenConnectDrawer,\n targetWalletType,\n setTargetWalletType,\n network,\n setNetwork,\n solanaInfo,\n setSolanaInfo,\n termsOfUse,\n walletChainType,\n connectorWalletType,\n walletChainTypeConfig,\n privyConfig,\n ],\n );\n\n useEffect(() => {\n if (initRef.current) return;\n if (hasCustomChains) {\n return;\n }\n\n // Check which data source is available first (store or API)\n const hasStoreData = mainnetChainInfosFromStore && testChainInfosFromStore;\n const hasApiData = mainnetChainInfos && testChainInfos;\n\n // If neither store nor API data is ready, wait\n if (!hasStoreData && !hasApiData) {\n return;\n }\n\n // Always wait for swap loading to complete when swap is enabled\n if (props.enableSwapDeposit && !swapChainInfoRes) {\n return;\n }\n\n let testChainsList = [];\n let mainnetChainsList = [];\n try {\n // Use data in pairs: either both from store or both from API\n // Priority: if store data is available, use store; otherwise use API\n if (hasStoreData) {\n testChainsList = testChainInfosFromStore;\n mainnetChainsList = mainnetChainInfosFromStore;\n } else {\n testChainsList = testChainInfos || testnetChainFallback;\n mainnetChainsList = mainnetChainInfos || [];\n }\n\n const testChains = processChainInfo(testChainsList);\n const mainnetChains = processChainInfo(mainnetChainsList);\n\n const swapChains = processChainInfo(\n formatSwapChainInfo(swapChainInfoRes || {}),\n );\n\n const chains = [...testChains, ...mainnetChains];\n\n const filterSwapChains = swapChains.filter(\n (item: any) => !chains.some((chain) => chain.id === item.id),\n );\n\n setTestnetChains(testChains);\n setMainnetChains(mainnetChains);\n\n setInitChains([...chains, ...filterSwapChains] as [Chain, ...Chain[]]);\n } catch (error) {\n console.error(\"Error initChains:\", error);\n testChainsList = [ArbitrumSepoliaChainInfo, SolanaDevnetChainInfo];\n mainnetChainsList = [];\n }\n\n initRef.current = true;\n }, [\n props.customChains,\n mainnetChainInfos,\n testChainInfos,\n mainnetChainInfosFromStore,\n testChainInfosFromStore,\n swapChainInfoRes,\n props.enableSwapDeposit,\n // swapLoading,\n ]);\n\n useEffect(() => {\n if (props.customChains) {\n handleCustomerChains();\n }\n }, [props.customChains]);\n\n if (!initRef.current) {\n return null;\n }\n\n return (\n <WalletConnectorPrivyContext.Provider value={value}>\n <TooltipProvider delayDuration={300}>\n <PrivyWallet privyConfig={props.privyConfig} initChains={initChains}>\n <WagmiWallet wagmiConfig={props.wagmiConfig} initChains={initChains}>\n <SolanaWallet solanaConfig={props.solanaConfig}>\n <AbstractWallet>\n <Main headerProps={props.headerProps}>{props.children}</Main>\n </AbstractWallet>\n </SolanaWallet>\n </WagmiWallet>\n </PrivyWallet>\n </TooltipProvider>\n </WalletConnectorPrivyContext.Provider>\n );\n}\n","import * as viemExport from \"viem\";\nimport * as WagmiExport from \"wagmi\";\nimport * as WagmiConnectorsExport from \"wagmi/connectors\";\n\nexport {\n WalletConnectorPrivyProvider,\n useWalletConnectorPrivy,\n} from \"./provider\";\nexport { UserCenter, MwebUserCenter } from \"./components/userCenter\";\nexport * from \"./types\";\n\nexport const viem = viemExport;\n\nexport const wagmiConnectors = WagmiConnectorsExport;\n\nexport const wagmi = WagmiExport;\n"]}
|