@kodiak-finance/orderly-wallet-connector-privy 2.7.4
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/README.md +91 -0
- package/dist/index.d.mts +112 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.js +3403 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3366 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx","../src/main.tsx","../src/components/connectDrawer.tsx","../src/providers/abstractWallet/abstractWalletProvider.tsx","../src/types.ts","../src/providers/privy/privyWalletProvider.tsx","../src/providers/solana/solanaWalletProvider.tsx","../src/stores/solanaWalletStore.ts","../src/providers/wagmi/wagmiWalletProvider.tsx","../src/components/icons.tsx","../src/components/pwaDilaog.tsx","../src/components/renderConnector/index.tsx","../src/hooks/useWallet.tsx","../src/util.ts","../src/components/renderConnector/abstractConnector.tsx","../src/components/renderConnector/privyConnector.tsx","../src/components/renderConnector/solanaConnector.tsx","../src/components/common.tsx","../src/components/renderConnector/wagmiConnector.tsx","../src/components/renderNonPrivyWallet/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/renderPrivyWallet.tsx","../src/components/userCenter.tsx","../src/components/linkDevice.tsx","../src/injectUsercenter.tsx","../src/providers/abstractWallet/index.tsx","../src/providers/abstractWallet/initAbstractProvider.tsx","../src/providers/privy/index.tsx","../src/providers/privy/initPrivyProvider.tsx","../src/providers/solana/index.tsx","../src/providers/solana/initSolanaProvider.tsx","../src/providers/wagmi/index.tsx","../src/providers/wagmi/initWagmiProvider.tsx","../src/index.ts"],"names":["React","useEffect","useRef","useState","createContext","useContext","useMemo","mainnet","AbstractChains","SolanaChains","useCallback","useLocalStorage","useTranslation","ConnectorKey","useScreen","cn","SimpleSheet","Flex","Text","modal","ChainNamespace","Network","WalletType","WalletConnectType","WalletChainTypeEnum","WalletAdapterNetwork","useAccount","wagmiConnectors","chainId","connector","useTrack","TrackerEventName","useWallet","walletType","Grid","useStorageChain","Tooltip","ChevronDownIcon","ChevronUpIcon","ExclamationFillIcon","windowGuard","ABSTRACT_CHAIN_ID_MAP","formatAddress","SimpleDialog","AbstractWalletProvider","mainnetChains","network"],"mappings":"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","sourcesContent":["import React, {\n type PropsWithChildren,\n useEffect,\n useRef,\n useState,\n createContext,\n useContext,\n type RefObject,\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 { Chains, fetcher, useSWR } from \"@kodiak-finance/orderly-hooks\";\nimport {\n AbstractChains,\n AbstractTestnetChainInfo,\n ArbitrumSepoliaChainInfo,\n ArbitrumSepoliaTokenInfo,\n ChainNamespace,\n SolanaChains,\n SolanaDevnetChainInfo,\n SolanaDevnetTokenInfo,\n TesntTokenFallback,\n} from \"@kodiak-finance/orderly-types\";\nimport { TooltipProvider } from \"@kodiak-finance/orderly-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 commonSwrOpts = {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n // If false, undefined data gets cached against the key.\n revalidateOnMount: true,\n // don't duplicate a request with the same key for 1hr\n dedupingInterval: 3_600_000,\n};\nconst testnetTokenFallback = TesntTokenFallback([\n ArbitrumSepoliaTokenInfo,\n SolanaDevnetTokenInfo,\n]);\n\nconst testnetChainFallback = [ArbitrumSepoliaChainInfo, SolanaDevnetChainInfo];\n\nconst fetchChainInfo = async (url: string) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch data from ${url}`);\n }\n return response.json();\n};\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\n const initRef = useRef(false);\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 { 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 const { data: mainnetChainInfos } = useSWR(\n !props.customChains ? \"https://api.orderly.org/v1/public/chain_info\" : null,\n fetcher,\n commonSwrOpts,\n );\n\n const { data: testChainInfos } = useSWR(\n !props.customChains\n ? \"https://testnet-api.orderly.org/v1/public/chain_info\"\n : null,\n fetcher,\n {\n ...commonSwrOpts,\n fallbackData: testnetChainFallback,\n },\n );\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 (props.customChains) {\n return;\n }\n\n if (!mainnetChainInfos || !testChainInfos || swapLoading) {\n return;\n }\n\n let testChainsList = [];\n let mainnetChainsList = [];\n try {\n testChainsList = testChainInfos;\n mainnetChainsList = mainnetChainInfos;\n\n const testChains = processChainInfo(testChainsList);\n const mainnetChains = processChainInfo(mainnetChainsList);\n\n const swapChains = processChainInfo(\n formatSwapChainInfo(swapChainInfoRes?.data || {}),\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 swapChainInfoRes,\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 React, { useMemo } from \"react\";\nimport { WalletConnectorContext } from \"@kodiak-finance/orderly-hooks\";\nimport type {\n WalletConnectorContextState,\n WalletState,\n} from \"@kodiak-finance/orderly-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, { useCallback, useMemo } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation, Trans } from \"@kodiak-finance/orderly-i18n\";\nimport { ConnectorKey } from \"@kodiak-finance/orderly-types\";\nimport {\n useScreen,\n cn,\n CloseIcon,\n SimpleSheet,\n Box,\n Flex,\n Text,\n modal,\n} from \"@kodiak-finance/orderly-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 <CloseIcon\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, { 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 \"@kodiak-finance/orderly-hooks\";\nimport { ABSTRACT_CHAIN_ID_MAP, ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport { windowGuard } from \"@kodiak-finance/orderly-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 console.log(\"xxx client\", {\n client,\n isClientLoading,\n connector,\n address,\n });\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 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 \"@kodiak-finance/orderly-hooks\";\nimport {\n ABSTRACT_MAINNET_CHAINID,\n ABSTRACT_TESTNET_CHAINID,\n ChainNamespace,\n SOLANA_MAINNET_CHAINID,\n SOLANA_TESTNET_CHAINID,\n} from \"@kodiak-finance/orderly-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, {\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 \"@kodiak-finance/orderly-hooks\";\nimport { ChainNamespace, TrackerEventName } from \"@kodiak-finance/orderly-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 }\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","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 \"@kodiak-finance/orderly-hooks\";\nimport { ChainNamespace } from \"@kodiak-finance/orderly-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","// stores/solanaWalletStore.ts\nimport { WalletAdapterNetwork, WalletName } from \"@solana/wallet-adapter-base\";\nimport { create } from \"zustand\";\nimport { ChainNamespace } from \"@kodiak-finance/orderly-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 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 \"@kodiak-finance/orderly-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 console.log(\"-- xxx wagmi wallet setundefine\", 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 \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n Divider,\n Flex,\n Grid,\n modal,\n SheetContent,\n SheetHeader,\n SimpleSheet,\n Text,\n useModal,\n} from \"@kodiak-finance/orderly-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 React from \"react\";\nimport { cn, Flex, ScrollArea } from \"@kodiak-finance/orderly-ui\";\nimport { useWallet } from \"../../hooks/useWallet\";\nimport { useWalletConnectorPrivy } from \"../../provider\";\nimport { WalletConnectType, WalletType } from \"../../types\";\nimport { ConnectProps } from \"../../types\";\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 { setOpenConnectDrawer, connectorWalletType, walletChainTypeConfig } =\n useWalletConnectorPrivy();\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 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 {renderWagmiConnectArea()}\n {renderSolanaConnectArea()}\n {renderAbstractConnectArea()}\n </div>\n </ScrollArea>\n );\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useLocalStorage,\n useStorageChain,\n useTrack,\n WalletState,\n} from \"@kodiak-finance/orderly-hooks\";\nimport {\n AbstractChains,\n ChainNamespace,\n ConnectorKey,\n TrackerEventName,\n} from \"@kodiak-finance/orderly-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 } = 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 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 } 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 setStorageChain(privyWalletEVM.chain.id);\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 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 { AbstractChains, SolanaChains } from \"@kodiak-finance/orderly-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 React from \"react\";\nimport { cn, useScreen } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-i18n\";\nimport { cn, Flex, Grid } from \"@kodiak-finance/orderly-ui\";\nimport { useScreen } from \"@kodiak-finance/orderly-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 isDesktop && \"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 {isDesktop && (\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.email\")}\n </div>\n )}\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 isDesktop && \"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 {isDesktop && (\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.google\")}\n </div>\n )}\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 isDesktop && \"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 {isDesktop && (\n <div className=\"oui-text-2xs oui-text-base-contrast\">\n {t(\"connector.privy.twitter\")}\n </div>\n )}\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={3} rows={1} 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 from \"react\";\nimport { WalletAdapter } from \"@solana/wallet-adapter-base\";\nimport { cn, useScreen } from \"@kodiak-finance/orderly-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, { useState } from \"react\";\nimport { WalletAdapter } from \"@solana/wallet-adapter-base\";\nimport { Connector } from \"wagmi\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n ChainIcon,\n cn,\n Popover,\n SimpleDialog,\n useScreen,\n} from \"@kodiak-finance/orderly-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 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 { Connector } from \"wagmi\";\nimport { useScreen, cn } from \"@kodiak-finance/orderly-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, { useEffect, useMemo, useState } from \"react\";\nimport { useStorageChain } from \"@kodiak-finance/orderly-hooks\";\nimport {\n AbstractChains,\n ChainNamespace,\n SolanaChains,\n} from \"@kodiak-finance/orderly-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, { useMemo } from \"react\";\nimport { useStorageChain } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AbstractChains,\n ChainNamespace,\n SolanaChains,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n ExclamationFillIcon,\n Flex,\n modal,\n useScreen,\n} from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-i18n\";\nimport { ChevronDownIcon, ChevronUpIcon, cn } from \"@kodiak-finance/orderly-ui\";\nimport { Tooltip } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-i18n\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport { Tooltip, ChevronDownIcon, ChevronUpIcon } from \"@kodiak-finance/orderly-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 \"@kodiak-finance/orderly-i18n\";\nimport { ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n cn,\n Tooltip,\n} from \"@kodiak-finance/orderly-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, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useStorageChain } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AbstractChains, ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport { cn, ExclamationFillIcon } from \"@kodiak-finance/orderly-ui\";\nimport { windowGuard } from \"@kodiak-finance/orderly-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, { useMemo } from \"react\";\nimport { useAccount, useWalletConnector } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n ABSTRACT_CHAIN_ID_MAP,\n ABSTRACT_TESTNET_CHAINID,\n AccountStatusEnum,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n cn,\n Flex,\n formatAddress,\n Text,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-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 React, {\n Children,\n FC,\n PropsWithChildren,\n SVGProps,\n useState,\n} from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, SimpleDialog, Text } from \"@kodiak-finance/orderly-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 { UserCenter } from \"./components/userCenter\";\n\nimport { installExtension } from \"@kodiak-finance/orderly-ui\";\nimport { ExtensionPositionEnum } from \"@kodiak-finance/orderly-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, { 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 { 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 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, useMemo, useState } from \"react\";\nimport { PrivyClientConfig, PrivyProvider } from \"@privy-io/react-auth\";\nimport { Chain } from \"viem/chains\";\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 config = useMemo((): PrivyClientConfig => {\n // const chains = initChains.filter((chain) => !SolanaChains.has(chain.id) )\n const chains = initChains;\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: chains[0],\n supportedChains: chains,\n };\n }, [initChains, privyConfig]);\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, { 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, 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 from \"react\";\nimport { Chain } from \"viem/chains\";\nimport { EMPTY_OBJECT } from \"@kodiak-finance/orderly-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, { 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","export { WalletConnectorPrivyProvider } from \"./provider\";\nexport { UserCenter, MwebUserCenter } from './components/userCenter'\nexport * from \"./types\";\nimport * as viemExport from 'viem'\nexport const viem = viemExport;\nimport * as WagmiConnectorsExport from 'wagmi/connectors'\nexport const wagmiConnectors = WagmiConnectorsExport;\nimport * as WagmiExport from 'wagmi'\nexport const wagmi = WagmiExport;\n"]}
|