@dappworks/kit 0.4.215 → 0.4.217

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/utils.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/endpoint.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/config.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/types/safe-info.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/types/safe-apps.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/types/transactions.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/types/chains.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/types/common.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/dist/types/master-copies.js","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/types/decoded-data.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/types/safe-messages.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/types/notifications.ts","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/dist/types/relay.js","../../../node_modules/@safe-global/safe-gateway-typescript-sdk/src/index.ts","../module/Wallet/provider.tsx","../module/Wallet/index.tsx","../module/Wallet/walletPluginStore.tsx","../../../node_modules/@safe-global/safe-apps-sdk/src/version.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/communication/utils.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/communication/messageFormatter.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/communication/methods.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/communication/index.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/types/sdk.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/types/gateway.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/txs/index.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/eth/constants.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/eth/index.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/safe/index.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/safe/signatures.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/types/permissions.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/wallet/index.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/decorators/requirePermissions.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/sdk.ts","../../../node_modules/@safe-global/safe-apps-sdk/src/index.ts","../module/Wallet/SuccessTxDialog/index.tsx","../module/Wallet/walletConfigStore.ts","../module/Wallet/type.ts","../module/Wallet/RpcList/index.tsx"],"names":["ImplementationVersionState","SafeAppAccessPolicyTypes","SafeAppFeatures","SafeAppSocialPlatforms","Operation","TransactionStatus","TransferDirection","TransactionTokenType","SettingsInfoType","TransactionInfoType","ConflictType","TransactionListItemType","DetailedExecutionInfoType","DurationType","StartTimeValue","LabelValue","RPC_AUTHENTICATION","GAS_PRICE_TYPE","FEATURES","TokenType","ConfirmationViewTypes","SafeMessageListItemType","SafeMessageStatus","DeviceType","React","useEffect","useReconnect","useConnectModal","Methods","RestrictedMethods","Icon","_a","observer"],"mappings":"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","sourcesContent":[null,null,null,null,null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=master-copies.js.map",null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=relay.js.map",null,"import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect, useState } from 'react';\nimport { useReconnect, WagmiProvider } from 'wagmi';\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from '.';\nimport { WalletConfigStore } from './walletConfigStore'\nimport { reaction } from 'mobx';\nimport { type Chain } from \"viem/chains\";\nimport { iotex } from './type';\nimport { useRouter } from 'next/router';\n\nconst queryClient = new QueryClient();\nexport const WalletProvider = (({\n children,\n theme,\n appName,\n supportedChains,\n compatibleMode = true,\n router\n}: {\n children: React.ReactNode,\n theme?: 'dark' | 'light',\n appName?: string,\n supportedChains?: Chain[],\n compatibleMode?: boolean,\n router?: any\n}) => {\n //@ts-ignore\n const walletConfig = RootStore.Get(WalletConfigStore, { args: { supportedChains: supportedChains ?? [iotex] } });\n\n const [config, setConfig] = useState(walletConfig.rainbowKitConfig)\n\n useEffect(() => {\n const disposer = reaction(\n () => walletConfig.updateTicker,\n () => {\n setConfig(walletConfig.rainbowKitConfig)\n }\n )\n return () => disposer()\n })\n\n useEffect(() => {\n try {\n if (typeof window != 'undefined') {\n window.addEventListener('message', (msg) => {\n if (msg.origin.includes('safe')) {\n walletConfig.isInSafeApp = true\n }\n })\n }\n } catch (error) {\n }\n }, [])\n\n useEffect(() => {\n if (appName) {\n walletConfig.appName = appName\n }\n if (compatibleMode != undefined) {\n walletConfig.compatibleMode = compatibleMode\n }\n }, [appName, compatibleMode])\n return (\n //@ts-ignore\n <WagmiProvider config={config} reconnectOnMount={compatibleMode ? false : true}>\n <QueryClientProvider client={queryClient} >\n <RainbowKitProvider locale=\"en\" theme={theme == 'dark' ? darkTheme() : lightTheme()}>\n {/* @ts-ignore */}\n {children}\n <WalletConnect compatibleMode={compatibleMode} router={router} />\n </RainbowKitProvider>\n </QueryClientProvider>\n </WagmiProvider>\n );\n});\n\nexport const WalletConnect = ({ compatibleMode = true, router }) => {\n const { reconnect } = useReconnect()\n const wallet = RootStore.Get(WalletStore);\n wallet.use();\n\n if (router && compatibleMode) {\n useEffect(() => {\n if (!wallet.account) {\n reconnect()\n }\n }, [router])\n }\n\n return <></>;\n};\n","import React, { useEffect } from \"react\";\nimport { Store } from \"../../store/standard/base\";\nimport { Account, PublicClient, type HttpTransport, WalletClient, TransactionReceipt } from \"viem\";\nimport { PromiseHook } from '../../store/standard/PromiseHook';\nimport { BigNumberState } from '../../store/standard/BigNumberState';\nimport BigNumber from 'bignumber.js';\nimport { AddressMode, WalletTransactionHistoryType } from \"./type\";\nimport EventEmitter from \"events\";\nimport { SwitchChainMutate } from \"wagmi/query\";\nimport { Config, useAccount, useConnect, useDisconnect, useReconnect, useSwitchChain, useWalletClient, } from \"wagmi\";\nimport { Chain, useConnectModal, WalletDetailsParams } from '@rainbow-me/rainbowkit';\nimport { RootStore } from \"../../store\";\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { http, createPublicClient } from 'viem';\nimport { WalletHistoryStore, WalletRpcStore } from './walletPluginStore';\nimport SafeAppsSDK, { TransactionStatus } from '@safe-global/safe-apps-sdk';\nimport { ShowSuccessTxDialog } from './SuccessTxDialog'\nimport { WalletConfigStore } from \"./walletConfigStore\";\nimport { AIem } from \"../../aiem\";\nimport { helper } from \"../../lib/helper\";\n\nexport class WalletStore implements Store {\n sid = 'wallet';\n autoObservable = true;\n account: `0x${string}` = null;\n isSuccessDialogOpen = false;\n // isInSafeApp = false;\n get isInSafeApp() {\n return RootStore.Get(WalletConfigStore).isInSafeApp\n }\n isConnect = false;\n walletClient: WalletClient;\n event = new EventEmitter();\n switchChain: SwitchChainMutate<Config, unknown> | undefined;\n updateTicker = 0;\n addressMode: AddressMode = '0x';\n get isIoTeXChain(): boolean {\n if (this.chain && this.chain.id == 4689) {\n return true\n }\n return false\n }\n setAddressMode(mode: AddressMode) {\n this.addressMode = mode;\n localStorage.setItem('addressMode', mode);\n }\n get accountFormat() {\n return this.account ? helper.address.convertAddress(this.addressMode, this.account) : '-';\n }\n get connectAccountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 11, '...') : '-';\n }\n get accountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 16, '...') : '-';\n }\n get supportedChains() {\n return RootStore.Get(WalletConfigStore).supportedChains\n }\n chain: Chain | undefined;\n openConnectModal: any;\n disconnect: any;\n balance = PromiseHook.wrap({\n func: async () => {\n if (!this.publicClient || !this.account) return helper.number.warpBigNumber('0');\n const balance = await this.publicClient.getBalance({\n address: this.account,\n });\n if (balance) {\n return helper.number.warpBigNumber(balance?.toString() ?? '0');\n }\n },\n });\n\n constructor(args?: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n use(router?: any) {\n const { data: walletClient, isSuccess } = useWalletClient();\n const { chain, address, isConnected } = useAccount();\n\n const { switchChain } = useSwitchChain();\n const { openConnectModal } = useConnectModal();\n const { connect } = useConnect();\n const { disconnect } = useDisconnect();\n const walletConfigStore = RootStore.Get(WalletConfigStore);\n this.set({\n //@ts-ignore\n connect,\n // @ts-ignore \n walletClient,\n openConnectModal,\n switchChain,\n disconnect\n })\n\n useEffect(() => {\n RootStore.Get(WalletHistoryStore).set({ isRender: true })\n this.set({\n isConnect: isConnected,\n account: address,\n // @ts-ignore \n chain,\n })\n walletConfigStore.set({\n isConnect: isConnected,\n })\n if (this.account) {\n this.updateTicker++;\n walletConfigStore.set({\n walletUpdateTick: this.updateTicker,\n })\n this.event.emit('walletAccount:ready');\n }\n }, [address, isConnected, chain])\n\n\n\n useEffect(() => {\n setTimeout(() => {\n this.balance.call()\n }, 1500)\n }, [this.updateTicker])\n }\n\n //always return or return default chain\n get publicClient(): PublicClient<HttpTransport, Chain, any, any> {\n if (this.chain && this.supportedChains.some(i => i.id === this.chain.id)) {\n if (this.chain.id == 4689) {\n return AIem.PubClient('4689', { rpcUrls: { default: { http: [RootStore.Get(WalletRpcStore).curRpc.value] } }, multicall: true })\n }\n return AIem.PubClient(this.chain.id.toString())\n } else {\n return AIem.PubClient('4689')\n }\n }\n\n set(args: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n toJSON() {\n const { account } = this;\n return { account };\n }\n\n async prepare(chainId?: number): Promise<WalletStore> {\n return new Promise<WalletStore>(async (res, rej) => {\n try {\n if (this.account) {\n if (!chainId) {\n res(this);\n }\n if (Number(this.chain?.id) == Number(chainId)) {\n console.log('has and return ')\n res(this);\n }\n this.switchChain?.({ chainId: chainId ?? 4689 });\n const interval = setInterval(() => {\n if (this.switchChain) {\n if (this.chain?.id == chainId) {\n try {\n // //@ts-ignore\n // const provider = new ethers.providers.Web3Provider(window?.ethereum);\n // this.signer = provider.getSigner();\n res(this);\n } catch (error) {\n }\n clearInterval(interval);\n }\n }\n }, 1000);\n } else {\n this.openConnectModal();\n // this.connect?.({ chainId, connector: this.rainbowkitParams.connectors()[0] }) connect success but ui not change so\n const interval = setInterval(() => {\n if (this.account) {\n clearInterval(interval);\n res(this);\n }\n }, 1000);\n }\n } catch (error) {\n rej(error);\n }\n });\n }\n\n\n async waitForTransactionReceipt({ hash }) {\n // https://github.com/wevm/wagmi/discussions/3463#discussioncomment-8139187\n if (this.isInSafeApp) {\n // console.log('isInSafeApp', this.isInSafeApp);\n const sdk = new SafeAppsSDK();\n while (true) {\n const queued = await sdk.txs.getBySafeTxHash(hash);\n if (queued.txStatus === TransactionStatus.AWAITING_CONFIRMATIONS || queued.txStatus === TransactionStatus.AWAITING_EXECUTION || queued.txStatus === TransactionStatus.CANCELLED) {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash: queued.txHash! as `0x${string}` });\n }\n }\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash });\n }\n }\n\n static async SendTx(...args: Parameters<WalletStore['sendTx']>) {\n return RootStore.Get(WalletStore).sendTx(...args);\n }\n static async SendRawTx(...args: Parameters<WalletStore['sendRawTx']>) {\n return RootStore.Get(WalletStore).sendRawTx(...args);\n }\n async sendTx({\n chainId,\n tx,\n autoAlert = true,\n loadingText,\n successText,\n onError,\n historyItem,\n showSuccessDialog = false,\n }: {\n chainId: number | string;\n tx: any;\n autoAlert?: boolean;\n loadingText?: string;\n successText?: string;\n showSuccessDialog?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n onError?: (error: any) => void;\n }) {\n const toast = RootStore.Get(ToastPlugin);\n let hash;\n const historyStore = RootStore.Get(WalletHistoryStore)\n try {\n if (loadingText) toast.loading(loadingText);\n if (!chainId) throw new Error('chainId, address, data is required');\n await RootStore.Get(WalletStore).prepare(Number(chainId));\n hash = await tx();\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: hash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n const receipt = await this.waitForTransactionReceipt({ hash });\n if (receipt.status == 'success') {\n toast.dismiss();\n toast.success('The transaction was successful');\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n } else {\n toast.dismiss();\n toast.error('The transaction failed');\n historyStore.updateHistoryStatusByTx(hash, 'fail');\n }\n if (successText) toast.success(successText);\n this.updateTicker++;\n return receipt;\n } catch (error) {\n console.log(error);\n toast.dismiss();\n if (autoAlert) {\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n console.log('sendTx', error?.message);\n if (error?.message?.includes('user rejected transaction') || String(error).toLowerCase().includes('user rejected') || String(error).toLowerCase().includes('user denied')) {\n toast.error('user rejected transaction');\n onError?.(error);\n return;\n }\n if (error?.message?.includes('The Transaction may not be processed on a block yet') || error?.message?.includes('could not be found')) {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n toast.success('The transaction was successful');\n return;\n }\n\n if (msg) {\n toast.error(msg as unknown as string);\n onError?.(msg);\n } else {\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n toast.error(messageArr[0]);\n onError?.(messageArr[0]);\n }\n } else {\n toast.error(String(error?.message || error));\n onError?.(String(error?.message || error));\n }\n }\n } else {\n throw error;\n }\n }\n }\n async sendRawTx({\n chainId,\n address,\n data,\n value = '0',\n autoAlert = true,\n onSended,\n onSuccess,\n onError,\n historyItem,\n loadingText,\n showSuccessDialog = false,\n }: {\n loadingText?: string;\n chainId: number | string;\n address: string;\n data: string | null;\n value?: string;\n autoRefresh?: boolean;\n autoAlert?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n showTransactionSubmitDialog?: boolean;\n showSuccessDialog?: boolean;\n onSended?: ({ res }: { res: TransactionReceipt }) => void;\n onSuccess?: ({ res }: { res: TransactionReceipt }) => void;\n onError?: ({ res }: { res: TransactionReceipt }) => void;\n }): Promise<TransactionReceipt | undefined> {\n chainId = Number(chainId);\n const toast = RootStore.Get(ToastPlugin);\n try {\n if (!chainId || !address) throw new Error('chainId, address, is required');\n await RootStore.Get(WalletStore).prepare(chainId);\n if (loadingText) toast.loading(loadingText);\n const historyStore = RootStore.Get(WalletHistoryStore)\n // @ts-ignore\n const hash = await this.walletClient.sendTransaction({\n account: this.account,\n to: address as `0x${string}`,\n data: data as `0x${string}`,\n value: value ? BigInt(value) : undefined,\n });\n // console.log(hash)\n let receipt = await this.waitForTransactionReceipt({ hash });\n console.log(receipt);\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: receipt.transactionHash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n onSended ? onSended({ res: receipt }) : null;\n if (receipt.status == 'success') {\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'success');\n }\n onSuccess && onSuccess({ res: receipt });\n toast.dismiss();\n toast.success('The transaction was successful');\n } else {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'fail');\n }\n onError && onError({ res: receipt });\n toast.dismiss();\n toast.error('The transaction failed');\n }\n return receipt;\n } catch (error) {\n toast.dismiss();\n console.log(error.message);\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n // Details: Transaction was rejected\n if (error?.message?.includes('user rejected transaction') || error?.message?.includes('cancel') || String(error).toLowerCase().includes('user rejected') || String(error).toLowerCase().includes('user denied')) {\n autoAlert && toast.error('user rejected transaction');\n return;\n }\n if (error?.message?.includes('Price slippage check')) {\n autoAlert && toast.error('The latest pool price has changed, please try to increase the slippage tolerance or reload the page.');\n return;\n }\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n toast.error(messageArr[0]);\n onError?.(messageArr[0]);\n return;\n }\n }\n\n if (msg) {\n autoAlert && toast.error(msg as unknown as string);\n } else {\n autoAlert && toast.error(String(error.message));\n }\n if (!autoAlert) {\n throw error;\n }\n }\n }\n}","import React from 'react';\nimport { Icon } from \"@iconify/react\";\nimport { RootStore } from \"../../store\";\nimport { Store } from \"../../store/standard/base\";\nimport { StorageState } from '../../store/standard/StorageState';\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { WalletTransactionHistoryType } from \"./type\";\nimport { WalletStore } from \".\";\nimport { helper } from \"../../lib/helper\";\n\nconst defaultRPCList = [\n { name: 'https://babel-api.fastblocks.io', latency: 0, height: 0, custom: false },\n { name: 'https://babel-api.mainnet.iotex.one', latency: 0, height: 0, },\n { name: 'https://babel-api.mainnet.iotex.io', latency: 0, height: 0, },\n { name: 'https://iotex-network.rpc.thirdweb.com', latency: 0, height: 0, },\n { name: 'https://iotexrpc.com', latency: 0, height: 0, },\n { name: 'https://iotex.api.onfinality.io/public', latency: 0, height: 0, },\n { name: 'https://rpc.ankr.com/iotex', latency: 0, height: 0, },\n]\nexport class WalletRpcStore implements Store {\n sid = 'WalletPluginStore';\n autoObservable = true\n curRpc = new StorageState({ default: 'https://babel-api.mainnet.iotex.one', key: 'curRPC-v2', value: 'https://babel-api.mainnet.iotex.one' });\n isAutoSelectRpc = new StorageState({ key: 'isAutoSelectRpc', default: true });\n customRpc = '';\n rpcList = new StorageState({ key: 'customRpcList-v2', default: defaultRPCList, value: [] })\n showCustomRpc = false;\n get currentRpc() {\n console.log(this.rpcList.value?.find(i => i.name == this.curRpc))\n return this.rpcList.value?.find(i => i.name == this.curRpc.value) || null\n }\n addCustomRpc() {\n const item = { name: this.customRpc, latency: 0, height: 0, custom: true }\n if (defaultRPCList.find(i => i.name === item.name)) {\n return RootStore.Get(ToastPlugin).error('Rpc already exists')\n }\n if (this.rpcList.value) {\n this.rpcList.save([...this.rpcList.value, item])\n this.refresh()\n return\n }\n this.rpcList.save([...defaultRPCList, item])\n this.refresh()\n }\n async addToMetamask(url) {\n try {\n if (typeof window == 'undefined') return;\n await window?.ethereum?.request({\n method: 'wallet_addEthereumChain',\n params: [{\n chainId: `0x${(4689).toString(16)}`,\n chainName: 'IoTeX Mainnet',\n nativeCurrency: {\n name: 'IoTeX',\n symbol: 'IOTX',\n decimals: 18,\n },\n rpcUrls: [url],\n blockExplorerUrls: ['https://iotexscan.io'],\n }]\n });\n RootStore.Get(ToastPlugin).success('Network added');\n console.log('Network added');\n } catch (error) {\n console.error('Failed to add network', error);\n }\n }\n refresh() {\n this.showCustomRpc = false\n this.customRpc = ''\n setTimeout(() => {\n this.testRpc()\n }, 500)\n }\n latencyColor(latency: number) {\n if (latency < 0) {\n return 'text-red-500'\n }\n if (latency < 1) {\n return 'text-green-500'\n }\n if (latency < 2) {\n return 'text-yellow-500'\n }\n return 'text-red-500'\n }\n async testRpcFunction(url: string): Promise<{ url: string, lentency: number, height: number }> {\n const start = performance.now();\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n method: 'eth_getBlockByNumber',\n params: [\"latest\", false],\n id: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Error from server: ${response.status}`);\n }\n const res = await response.json();\n console.log(res)\n const end = performance.now();\n return { url, lentency: Number(helper.number.numberFormat(((end - start) / 1000), '0.000', { fallback: '-1' })), height: parseInt(res.result.number, 16) };\n } catch (error) {\n console.error('RPC Latency Test Failed:', error);\n return { url, lentency: -1, height: -1 };\n }\n }\n testRpc() {\n this.rpcList?.value.forEach(i => {\n this.testRpcFunction(i.name).then(res => {\n i.latency = res.lentency\n i.height = res.height\n })\n })\n this.rpcList.save(this.rpcList.value)\n }\n removeRpc(name: string) {\n this.rpcList.save(this.rpcList.value.filter(i => i.name !== name))\n }\n scoreIcon(score: number) {\n if (score < 0) {\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n if (score < 1) {\n return <Icon icon=\"icon-park-solid:check-one\" width=\"18\" height=\"18\" style={{ color: \"#289726\" }} />\n }\n if (score < 2) {\n return <Icon icon=\"bxs:error\" width=\"18\" height=\"18\" style={{ color: \"#FFA500\" }} />\n }\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n get wallet() {\n return RootStore.Get(WalletStore)\n }\n // debounceAutoSelectRpc = pDebounce(this.autoSelectRpc, 3000)\n async autoSelectRpc() {\n console.log('autoSelectRpc')\n for (let i = 0; i < this.rpcList.value.length; i++) {\n const item = this.rpcList.value[i]\n const res = await this.testRpcFunction(item.name)\n if (res.lentency != -1 || res.height > 0) {\n this.curRpc.save(item.name)\n break;\n }\n }\n }\n}\n\nexport class WalletHistoryStore implements Store {\n sid = 'WalletHistoryStore';\n isRender = false\n autoObservable = true\n set(params: Partial<WalletHistoryStore>) {\n Object.assign(this, params);\n }\n private history = new StorageState<WalletTransactionHistoryType[] | null>({ value: [], key: 'history' });\n get historyList(): WalletTransactionHistoryType[] {\n if (this.isRender) {\n return this.history.value\n }\n return []\n }\n recordHistory(item: WalletTransactionHistoryType) {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n value = [item];\n } else {\n value = [...value, item];\n }\n this.history.setValue(value);\n }\n updateHistoryStatusByTx(tx: string | null, status: 'loading' | 'success' | 'fail') {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n return;\n }\n value = value.map((i) => {\n if (i.tx == tx) {\n i.status = status;\n return i;\n }\n if (!tx) {\n i.status = status;\n }\n return i;\n });\n this.history.setValue(value);\n }\n clearHistory() {\n this.history.setValue(null);\n }\n}\n","export const getSDKVersion = () => '9.1.0';\n","// i.e. 0-255 -> '00'-'ff'\nconst dec2hex = (dec: number): string => dec.toString(16).padStart(2, '0');\n\nconst generateId = (len: number): string => {\n const arr = new Uint8Array((len || 40) / 2);\n window.crypto.getRandomValues(arr);\n return Array.from(arr, dec2hex).join('');\n};\n\nconst generateRequestId = (): string => {\n if (typeof window !== 'undefined') {\n return generateId(10);\n }\n\n return new Date().getTime().toString(36);\n};\n\nexport { generateRequestId };\n","import { ErrorResponse, SDKRequestData, RequestId, SuccessResponse, MethodToResponse } from '../types/index.js';\nimport { getSDKVersion } from '../version.js';\nimport { Methods } from './methods.js';\nimport { generateRequestId } from './utils.js';\n\nclass MessageFormatter {\n static makeRequest = <M extends Methods = Methods, P = unknown>(method: M, params: P): SDKRequestData<M, P> => {\n const id = generateRequestId();\n\n return {\n id,\n method,\n params,\n env: {\n sdkVersion: getSDKVersion(),\n },\n };\n };\n\n static makeResponse = (id: RequestId, data: MethodToResponse[Methods], version: string): SuccessResponse => ({\n id,\n success: true,\n version,\n data,\n });\n\n static makeErrorResponse = (id: RequestId, error: string, version: string): ErrorResponse => ({\n id,\n success: false,\n error,\n version,\n });\n}\n\nexport { MessageFormatter };\n","export enum Methods {\n sendTransactions = 'sendTransactions',\n rpcCall = 'rpcCall',\n getChainInfo = 'getChainInfo',\n getSafeInfo = 'getSafeInfo',\n getTxBySafeTxHash = 'getTxBySafeTxHash',\n getSafeBalances = 'getSafeBalances',\n signMessage = 'signMessage',\n signTypedMessage = 'signTypedMessage',\n getEnvironmentInfo = 'getEnvironmentInfo',\n getOffChainSignature = 'getOffChainSignature',\n requestAddressBook = 'requestAddressBook',\n wallet_getPermissions = 'wallet_getPermissions',\n wallet_requestPermissions = 'wallet_requestPermissions',\n}\n\nexport enum RestrictedMethods {\n requestAddressBook = 'requestAddressBook',\n}\n","import { MessageFormatter } from './messageFormatter.js';\nimport { Methods } from './methods.js';\nimport { InterfaceMessageEvent, Communicator, Response, SuccessResponse } from '../types/index.js';\n\n// eslint-disable-next-line\ntype Callback = (response: any) => void;\n\nclass PostMessageCommunicator implements Communicator {\n private readonly allowedOrigins: RegExp[] | null = null;\n private callbacks = new Map<string, Callback>();\n private debugMode = false;\n private isServer = typeof window === 'undefined';\n\n constructor(allowedOrigins: RegExp[] | null = null, debugMode = false) {\n this.allowedOrigins = allowedOrigins;\n this.debugMode = debugMode;\n\n if (!this.isServer) {\n window.addEventListener('message', this.onParentMessage);\n }\n }\n\n private isValidMessage = ({ origin, data, source }: InterfaceMessageEvent): boolean => {\n const emptyOrMalformed = !data;\n const sentFromParentEl = !this.isServer && source === window.parent;\n const majorVersionNumber = typeof data.version !== 'undefined' && parseInt(data.version.split('.')[0]);\n const allowedSDKVersion = typeof majorVersionNumber === 'number' && majorVersionNumber >= 1;\n let validOrigin = true;\n if (Array.isArray(this.allowedOrigins)) {\n validOrigin = this.allowedOrigins.find((regExp) => regExp.test(origin)) !== undefined;\n }\n\n return !emptyOrMalformed && sentFromParentEl && allowedSDKVersion && validOrigin;\n };\n\n private logIncomingMessage = (msg: InterfaceMessageEvent): void => {\n console.info(`Safe Apps SDK v1: A message was received from origin ${msg.origin}. `, msg.data);\n };\n\n private onParentMessage = (msg: InterfaceMessageEvent): void => {\n if (this.isValidMessage(msg)) {\n this.debugMode && this.logIncomingMessage(msg);\n this.handleIncomingMessage(msg.data);\n }\n };\n\n private handleIncomingMessage = (payload: InterfaceMessageEvent['data']): void => {\n const { id } = payload;\n\n const cb = this.callbacks.get(id);\n if (cb) {\n cb(payload);\n\n this.callbacks.delete(id);\n }\n };\n\n public send = <M extends Methods, P, R>(method: M, params: P): Promise<SuccessResponse<R>> => {\n const request = MessageFormatter.makeRequest(method, params);\n\n if (this.isServer) {\n throw new Error(\"Window doesn't exist\");\n }\n\n window.parent.postMessage(request, '*');\n return new Promise((resolve, reject) => {\n this.callbacks.set(request.id, (response: Response<R>) => {\n if (!response.success) {\n reject(new Error(response.error));\n return;\n }\n\n resolve(response);\n });\n });\n };\n}\n\nexport default PostMessageCommunicator;\nexport * from './methods.js';\n","import { ChainInfo as _ChainInfo } from '@safe-global/safe-gateway-typescript-sdk';\n\nexport type ChainInfo = Pick<\n _ChainInfo,\n 'chainName' | 'chainId' | 'shortName' | 'nativeCurrency' | 'blockExplorerUriTemplate'\n>;\n\nexport { NativeCurrency } from '@safe-global/safe-gateway-typescript-sdk';\n\nexport type BaseTransaction = {\n to: string;\n value: string;\n data: string;\n};\n\nexport type GetTxBySafeTxHashParams = {\n safeTxHash: string;\n};\n\nexport interface SendTransactionRequestParams {\n safeTxGas?: number;\n}\n\nexport interface SendTransactionsParams {\n txs: BaseTransaction[];\n params?: SendTransactionRequestParams;\n}\n\nexport type GetBalanceParams = { currency?: string };\n\nexport type SignMessageParams = {\n message: string;\n};\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: string | number | bigint | { toNumber: () => number };\n verifyingContract?: string;\n salt?: string;\n}\n\nexport interface TypedDataTypes {\n name: string;\n type: string;\n}\n\nexport type TypedMessageTypes = { [key: string]: TypedDataTypes[] };\n\nexport type EIP712TypedData = {\n domain: TypedDataDomain;\n types: TypedMessageTypes;\n message: Record<string, any>;\n primaryType?: string;\n};\n\nexport type SignTypedMessageParams = {\n typedData: EIP712TypedData;\n};\n\nexport type SendTransactionsResponse = {\n safeTxHash: string;\n};\n\nexport type OffChainSignMessageResponse = {\n messageHash: string;\n};\n\nexport type SignMessageResponse = SendTransactionsResponse | OffChainSignMessageResponse;\n\nexport type SafeInfo = {\n safeAddress: string;\n chainId: number;\n threshold: number;\n owners: string[];\n isReadOnly: boolean;\n};\n\nexport type SafeInfoExtended = SafeInfo & {\n nonce: number;\n implementation: string;\n modules: string[] | null;\n fallbackHandler: string | null;\n guard: string | null;\n version: string | null;\n};\n\nexport type EnvironmentInfo = {\n origin: string;\n};\n\nexport type PostMessageOptions = {\n transfer?: any[];\n};\n\nexport type AddressBookItem = {\n address: string;\n chainId: string;\n name: string;\n};\n\nexport const isObjectEIP712TypedData = (obj?: unknown): obj is EIP712TypedData => {\n return typeof obj === 'object' && obj != null && 'domain' in obj && 'types' in obj && 'message' in obj;\n};\n","import { SafeBalanceResponse, TransactionDetails, TokenInfo } from '@safe-global/safe-gateway-typescript-sdk';\n\nexport {\n AddOwner,\n ChangeImplementation,\n ChangeThreshold,\n Creation,\n Custom,\n DataDecoded,\n DetailedExecutionInfo,\n DisableModule,\n EnableModule,\n Erc20Transfer,\n Erc721Transfer,\n InternalTransaction,\n ModuleExecutionDetails,\n MultiSend,\n MultisigConfirmation,\n MultisigExecutionDetails,\n NativeCoinTransfer,\n Operation,\n Parameter,\n RemoveOwner,\n SafeAppInfo,\n SetFallbackHandler,\n SettingsChange,\n SettingsInfo,\n SwapOwner,\n TokenInfo,\n TokenType,\n TransactionData,\n TransactionInfo,\n TransactionStatus,\n Transfer,\n TransferDirection,\n TransferInfo,\n} from '@safe-global/safe-gateway-typescript-sdk';\n\nexport type GatewayTransactionDetails = TransactionDetails;\n\nexport type TokenBalance = {\n tokenInfo: TokenInfo;\n balance: string;\n fiatBalance: string;\n fiatConversion: string;\n};\n\nexport type SafeBalances = SafeBalanceResponse;\n","import { Methods } from '../communication/methods.js';\nimport {\n GatewayTransactionDetails,\n SignMessageParams,\n SendTransactionsParams,\n GetTxBySafeTxHashParams,\n Communicator,\n SendTransactionsResponse,\n SignTypedMessageParams,\n EIP712TypedData,\n isObjectEIP712TypedData,\n SignMessageResponse,\n} from '../types/index.js';\n\nclass TXs {\n private readonly communicator: Communicator;\n\n constructor(communicator: Communicator) {\n this.communicator = communicator;\n }\n\n async getBySafeTxHash(safeTxHash: string): Promise<GatewayTransactionDetails> {\n if (!safeTxHash) {\n throw new Error('Invalid safeTxHash');\n }\n\n const response = await this.communicator.send<\n Methods.getTxBySafeTxHash,\n GetTxBySafeTxHashParams,\n GatewayTransactionDetails\n >(Methods.getTxBySafeTxHash, { safeTxHash });\n\n return response.data;\n }\n\n async signMessage(message: string): Promise<SignMessageResponse> {\n const messagePayload = {\n message,\n };\n\n const response = await this.communicator.send<Methods.signMessage, SignMessageParams, SignMessageResponse>(\n Methods.signMessage,\n messagePayload,\n );\n\n return response.data;\n }\n\n async signTypedMessage(typedData: EIP712TypedData): Promise<SignMessageResponse> {\n if (!isObjectEIP712TypedData(typedData)) {\n throw new Error('Invalid typed data');\n }\n\n const response = await this.communicator.send<\n Methods.signTypedMessage,\n SignTypedMessageParams,\n SignMessageResponse\n >(Methods.signTypedMessage, { typedData });\n\n return response.data;\n }\n\n async send({ txs, params }: SendTransactionsParams): Promise<SendTransactionsResponse> {\n if (!txs || !txs.length) {\n throw new Error('No transactions were passed');\n }\n\n const messagePayload = {\n txs,\n params,\n };\n\n const response = await this.communicator.send<\n Methods.sendTransactions,\n SendTransactionsParams,\n SendTransactionsResponse\n >(Methods.sendTransactions, messagePayload);\n\n return response.data;\n }\n}\n\nexport { TXs };\n","export const RPC_CALLS = {\n eth_call: 'eth_call',\n eth_gasPrice: 'eth_gasPrice',\n eth_getLogs: 'eth_getLogs',\n eth_getBalance: 'eth_getBalance',\n eth_getCode: 'eth_getCode',\n eth_getBlockByHash: 'eth_getBlockByHash',\n eth_getBlockByNumber: 'eth_getBlockByNumber',\n eth_getStorageAt: 'eth_getStorageAt',\n eth_getTransactionByHash: 'eth_getTransactionByHash',\n eth_getTransactionReceipt: 'eth_getTransactionReceipt',\n eth_getTransactionCount: 'eth_getTransactionCount',\n eth_estimateGas: 'eth_estimateGas',\n safe_setSettings: 'safe_setSettings',\n} as const;\n","import { RPC_CALLS } from '../eth/constants.js';\nimport {\n BlockNumberArg,\n RpcCallNames,\n Communicator,\n Log,\n BlockTransactionString,\n BlockTransactionObject,\n Web3TransactionObject,\n RPCPayload,\n TransactionConfig,\n Web3TransactionReceiptObject,\n PastLogsOptions,\n SafeSettings,\n} from '../types/index.js';\nimport { Methods } from '../communication/methods.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Formatter = (arg: any) => any;\n\nconst inputFormatters: Record<string, Formatter> = {\n defaultBlockParam: (arg = 'latest') => arg,\n returnFullTxObjectParam: (arg = false): boolean => arg,\n blockNumberToHex: (arg: BlockNumberArg): string =>\n Number.isInteger(arg) ? `0x${arg.toString(16)}` : (arg as string),\n};\n\ntype BuildRequestArgs = {\n call: RpcCallNames;\n formatters?: (Formatter | null)[];\n};\n\nclass Eth {\n public call;\n public getBalance;\n public getCode;\n public getStorageAt;\n public getPastLogs;\n public getBlockByHash;\n public getBlockByNumber;\n public getTransactionByHash;\n public getTransactionReceipt;\n public getTransactionCount;\n public getGasPrice;\n public getEstimateGas;\n public setSafeSettings;\n\n private readonly communicator: Communicator;\n\n constructor(communicator: Communicator) {\n this.communicator = communicator;\n this.call = this.buildRequest<[TransactionConfig, string?], string>({\n call: RPC_CALLS.eth_call,\n formatters: [null, inputFormatters.defaultBlockParam],\n });\n this.getBalance = this.buildRequest<[string, string?], string>({\n call: RPC_CALLS.eth_getBalance,\n formatters: [null, inputFormatters.defaultBlockParam],\n });\n this.getCode = this.buildRequest<[string, string?], string>({\n call: RPC_CALLS.eth_getCode,\n formatters: [null, inputFormatters.defaultBlockParam],\n });\n this.getStorageAt = this.buildRequest<[string, number, string?], string>({\n call: RPC_CALLS.eth_getStorageAt,\n formatters: [null, inputFormatters.blockNumberToHex, inputFormatters.defaultBlockParam],\n });\n this.getPastLogs = this.buildRequest<[PastLogsOptions], Log[]>({\n call: RPC_CALLS.eth_getLogs,\n });\n this.getBlockByHash = this.buildRequest<[string, boolean?], BlockTransactionString | BlockTransactionObject>({\n call: RPC_CALLS.eth_getBlockByHash,\n formatters: [null, inputFormatters.returnFullTxObjectParam],\n });\n this.getBlockByNumber = this.buildRequest<\n [BlockNumberArg, boolean?],\n BlockTransactionString | BlockTransactionObject\n >({\n call: RPC_CALLS.eth_getBlockByNumber,\n formatters: [inputFormatters.blockNumberToHex, inputFormatters.returnFullTxObjectParam],\n });\n this.getTransactionByHash = this.buildRequest<[string], Web3TransactionObject>({\n call: RPC_CALLS.eth_getTransactionByHash,\n });\n this.getTransactionReceipt = this.buildRequest<[string], Web3TransactionReceiptObject>({\n call: RPC_CALLS.eth_getTransactionReceipt,\n });\n this.getTransactionCount = this.buildRequest<[string, string?], string>({\n call: RPC_CALLS.eth_getTransactionCount,\n formatters: [null, inputFormatters.defaultBlockParam],\n });\n this.getGasPrice = this.buildRequest<never[], string>({\n call: RPC_CALLS.eth_gasPrice,\n });\n this.getEstimateGas = (transaction: TransactionConfig): Promise<number> =>\n this.buildRequest<[TransactionConfig], number>({\n call: RPC_CALLS.eth_estimateGas,\n })([transaction]);\n this.setSafeSettings = this.buildRequest<[SafeSettings], SafeSettings>({\n call: RPC_CALLS.safe_setSettings,\n });\n }\n\n private buildRequest<P = never[], R = unknown>(args: BuildRequestArgs) {\n const { call, formatters } = args;\n\n return async (params?: P): Promise<R> => {\n if (formatters && Array.isArray(params)) {\n formatters.forEach((formatter: ((...args: unknown[]) => unknown) | null, i) => {\n if (formatter) {\n params[i] = formatter(params[i]);\n }\n });\n }\n\n const payload: RPCPayload<P> = {\n call,\n params: params || [],\n };\n\n const response = await this.communicator.send<Methods.rpcCall, RPCPayload<P>, R>(Methods.rpcCall, payload);\n\n return response.data;\n };\n }\n}\n\nexport { Eth };\n","import { encodeFunctionData, Address, hashMessage, hashTypedData } from 'viem';\nimport { MAGIC_VALUE_BYTES, MAGIC_VALUE } from './signatures.js';\nimport { Methods } from '../communication/methods.js';\nimport { RPC_CALLS } from '../eth/constants.js';\nimport {\n Communicator,\n ChainInfo,\n SafeBalances,\n GetBalanceParams,\n RPCPayload,\n TransactionConfig,\n EnvironmentInfo,\n AddressBookItem,\n isObjectEIP712TypedData,\n EIP712TypedData,\n SafeInfoExtended,\n} from '../types/index.js';\nimport requirePermission from '../decorators/requirePermissions.js';\n\nclass Safe {\n private readonly communicator: Communicator;\n\n constructor(communicator: Communicator) {\n this.communicator = communicator;\n }\n\n async getChainInfo(): Promise<ChainInfo> {\n const response = await this.communicator.send<Methods.getChainInfo, undefined, ChainInfo>(\n Methods.getChainInfo,\n undefined,\n );\n\n return response.data;\n }\n\n async getInfo(): Promise<SafeInfoExtended> {\n const response = await this.communicator.send<Methods.getSafeInfo, undefined, SafeInfoExtended>(\n Methods.getSafeInfo,\n undefined,\n );\n\n return response.data;\n }\n\n // There is a possibility that this method will change because we may add pagination to the endpoint\n async experimental_getBalances({ currency = 'usd' }: GetBalanceParams = {}): Promise<SafeBalances> {\n const response = await this.communicator.send<Methods.getSafeBalances, { currency: string }, SafeBalances>(\n Methods.getSafeBalances,\n {\n currency,\n },\n );\n\n return response.data;\n }\n\n private async check1271Signature(messageHash: string, signature = '0x'): Promise<boolean> {\n const safeInfo = await this.getInfo();\n\n const encodedIsValidSignatureCall = encodeFunctionData({\n abi: [\n {\n constant: false,\n inputs: [\n {\n name: '_dataHash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n name: 'isValidSignature',\n outputs: [\n {\n name: '',\n type: 'bytes4',\n },\n ],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n ] as const,\n functionName: 'isValidSignature',\n args: [messageHash as Address, signature as Address],\n });\n\n const payload = {\n call: RPC_CALLS.eth_call,\n params: [\n {\n to: safeInfo.safeAddress,\n data: encodedIsValidSignatureCall,\n },\n 'latest',\n ],\n };\n try {\n const response = await this.communicator.send<Methods.rpcCall, RPCPayload<[TransactionConfig, string]>, string>(\n Methods.rpcCall,\n payload,\n );\n\n return response.data.slice(0, 10).toLowerCase() === MAGIC_VALUE;\n } catch (err) {\n return false;\n }\n }\n\n private async check1271SignatureBytes(messageHash: string, signature = '0x'): Promise<boolean> {\n const safeInfo = await this.getInfo();\n\n const encodedIsValidSignatureCall = encodeFunctionData({\n abi: [\n {\n constant: false,\n inputs: [\n {\n name: '_data',\n type: 'bytes',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n name: 'isValidSignature',\n outputs: [\n {\n name: '',\n type: 'bytes4',\n },\n ],\n payable: false,\n stateMutability: 'nonpayable',\n type: 'function',\n },\n ] as const,\n functionName: 'isValidSignature',\n args: [messageHash as Address, signature as Address],\n });\n\n const payload = {\n call: RPC_CALLS.eth_call,\n params: [\n {\n to: safeInfo.safeAddress,\n data: encodedIsValidSignatureCall,\n },\n 'latest',\n ],\n };\n\n try {\n const response = await this.communicator.send<Methods.rpcCall, RPCPayload<[TransactionConfig, string]>, string>(\n Methods.rpcCall,\n payload,\n );\n\n return response.data.slice(0, 10).toLowerCase() === MAGIC_VALUE_BYTES;\n } catch (err) {\n return false;\n }\n }\n\n calculateMessageHash(message: string): string {\n return hashMessage(message);\n }\n\n calculateTypedMessageHash(typedMessage: EIP712TypedData): string {\n const chainId =\n typeof typedMessage.domain.chainId === 'object'\n ? typedMessage.domain.chainId.toNumber()\n : Number(typedMessage.domain.chainId);\n\n let primaryType = typedMessage.primaryType;\n if (!primaryType) {\n const fields = Object.values(typedMessage.types);\n // We try to infer primaryType (simplified ether's version)\n const primaryTypes = Object.keys(typedMessage.types).filter((typeName) =>\n fields.every((dataTypes) => dataTypes.every(({ type }) => type.replace('[', '').replace(']', '') !== typeName)),\n );\n if (primaryTypes.length === 0 || primaryTypes.length > 1) throw new Error('Please specify primaryType');\n primaryType = primaryTypes[0];\n }\n\n return hashTypedData({\n message: typedMessage.message,\n domain: {\n ...typedMessage.domain,\n chainId,\n verifyingContract: typedMessage.domain.verifyingContract as Address,\n salt: typedMessage.domain.salt as Address,\n },\n types: typedMessage.types,\n primaryType,\n });\n }\n\n async getOffChainSignature(messageHash: string): Promise<string> {\n const response = await this.communicator.send<Methods.getOffChainSignature, string, string>(\n Methods.getOffChainSignature,\n messageHash,\n );\n\n return response.data;\n }\n\n async isMessageSigned(message: string | EIP712TypedData, signature = '0x'): Promise<boolean> {\n let check: (() => Promise<boolean>) | undefined;\n if (typeof message === 'string') {\n check = async (): Promise<boolean> => {\n const messageHash = this.calculateMessageHash(message);\n const messageHashSigned = await this.isMessageHashSigned(messageHash, signature);\n return messageHashSigned;\n };\n }\n\n if (isObjectEIP712TypedData(message)) {\n check = async (): Promise<boolean> => {\n const messageHash = this.calculateTypedMessageHash(message);\n const messageHashSigned = await this.isMessageHashSigned(messageHash, signature);\n return messageHashSigned;\n };\n }\n if (check) {\n const isValid = await check();\n\n return isValid;\n }\n\n throw new Error('Invalid message type');\n }\n\n async isMessageHashSigned(messageHash: string, signature = '0x'): Promise<boolean> {\n const checks = [this.check1271Signature.bind(this), this.check1271SignatureBytes.bind(this)];\n\n for (const check of checks) {\n const isValid = await check(messageHash, signature);\n if (isValid) {\n return true;\n }\n }\n\n return false;\n }\n\n async getEnvironmentInfo(): Promise<EnvironmentInfo> {\n const response = await this.communicator.send<Methods.getEnvironmentInfo, undefined, EnvironmentInfo>(\n Methods.getEnvironmentInfo,\n undefined,\n );\n\n return response.data;\n }\n\n @requirePermission()\n async requestAddressBook(): Promise<AddressBookItem[]> {\n const response = await this.communicator.send<Methods.requestAddressBook, undefined, AddressBookItem[]>(\n Methods.requestAddressBook,\n undefined,\n );\n\n return response.data;\n }\n}\n\nexport { Safe };\n","const MAGIC_VALUE = '0x1626ba7e';\nconst MAGIC_VALUE_BYTES = '0x20c13b0b';\n\nexport { MAGIC_VALUE, MAGIC_VALUE_BYTES };\n","export type Permission = {\n parentCapability: string;\n invoker: string;\n date?: number;\n caveats?: PermissionCaveat[];\n};\n\nexport type PermissionRequest = {\n [method: string]: Record<string, unknown>;\n};\n\nexport type PermissionCaveat = {\n type: string;\n value?: unknown;\n name?: string;\n};\n\nexport const PERMISSIONS_REQUEST_REJECTED = 4001;\n\nexport class PermissionsError extends Error {\n public code: number;\n public data?: unknown;\n\n constructor(message: string, code: number, data?: unknown) {\n super(message);\n\n this.code = code;\n this.data = data;\n\n // Should adjust prototype manually because how TS handles the type extension compilation\n // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, PermissionsError.prototype);\n }\n}\n","import { Methods, RestrictedMethods } from '../communication/methods.js';\nimport { Communicator } from '../types/index.js';\nimport { PermissionRequest, Permission, PermissionsError, PERMISSIONS_REQUEST_REJECTED } from '../types/permissions.js';\n\nclass Wallet {\n private readonly communicator: Communicator;\n\n constructor(communicator: Communicator) {\n this.communicator = communicator;\n }\n\n async getPermissions(): Promise<Permission[]> {\n const response = await this.communicator.send<Methods.wallet_getPermissions, undefined, Permission[]>(\n Methods.wallet_getPermissions,\n undefined,\n );\n\n return response.data;\n }\n\n async requestPermissions(permissions: PermissionRequest[]): Promise<Permission[]> {\n if (!this.isPermissionRequestValid(permissions)) {\n throw new PermissionsError('Permissions request is invalid', PERMISSIONS_REQUEST_REJECTED);\n }\n\n try {\n const response = await this.communicator.send<\n Methods.wallet_requestPermissions,\n PermissionRequest[],\n Permission[]\n >(Methods.wallet_requestPermissions, permissions);\n\n return response.data;\n } catch {\n throw new PermissionsError('Permissions rejected', PERMISSIONS_REQUEST_REJECTED);\n }\n }\n\n isPermissionRequestValid(permissions: PermissionRequest[]): boolean {\n return permissions.every((pr: PermissionRequest) => {\n if (typeof pr === 'object') {\n return Object.keys(pr).every((method) => {\n if (Object.values(RestrictedMethods).includes(method as RestrictedMethods)) {\n return true;\n }\n\n return false;\n });\n }\n\n return false;\n });\n }\n}\n\nexport { Wallet };\n","import { Methods } from '../communication/index.js';\nimport { Safe } from '../safe/index.js';\nimport { Wallet } from '../wallet/index.js';\n\nimport { Permission, PermissionsError, PERMISSIONS_REQUEST_REJECTED } from '../types/permissions.js';\n\nconst hasPermission = (required: Methods, permissions: Permission[]): boolean =>\n permissions.some((permission) => permission.parentCapability === required);\n\nconst requirePermission = () => (_: unknown, propertyKey: string, descriptor: PropertyDescriptor) => {\n const originalMethod = descriptor.value;\n\n descriptor.value = async function () {\n // @ts-expect-error accessing private property from decorator. 'this' context is the class instance\n const wallet = new Wallet((this as Safe).communicator);\n\n let currentPermissions = await wallet.getPermissions();\n\n if (!hasPermission(propertyKey as Methods, currentPermissions)) {\n currentPermissions = await wallet.requestPermissions([{ [propertyKey as Methods]: {} }]);\n }\n\n if (!hasPermission(propertyKey as Methods, currentPermissions)) {\n throw new PermissionsError('Permissions rejected', PERMISSIONS_REQUEST_REJECTED);\n }\n\n return originalMethod.apply(this);\n };\n\n return descriptor;\n};\n\nexport default requirePermission;\n","import { Communicator } from './types/index.js';\nimport InterfaceCommunicator from './communication/index.js';\nimport { TXs } from './txs/index.js';\nimport { Eth } from './eth/index.js';\nimport { Safe } from './safe/index.js';\nimport { Wallet } from './wallet/index.js';\n\nexport type Opts = {\n allowedDomains?: RegExp[];\n debug?: boolean;\n};\n\nclass SafeAppsSDK {\n private readonly communicator: Communicator;\n public readonly eth: Eth;\n public readonly txs: TXs;\n public readonly safe: Safe;\n public readonly wallet: Wallet;\n\n constructor(opts: Opts = {}) {\n const { allowedDomains = null, debug = false } = opts;\n\n this.communicator = new InterfaceCommunicator(allowedDomains, debug);\n this.eth = new Eth(this.communicator);\n this.txs = new TXs(this.communicator);\n this.safe = new Safe(this.communicator);\n this.wallet = new Wallet(this.communicator);\n }\n}\n\nexport default SafeAppsSDK;\n","import SDK from './sdk.js';\n\nexport default SDK;\nexport * from './sdk.js';\nexport * from './types/index.js';\nexport * from './communication/methods.js';\nexport * from './communication/messageFormatter.js';\nexport { getSDKVersion } from './version.js';\nexport * from './eth/constants.js';\n","import { Icon } from \"@iconify/react\";\nimport { observer } from \"mobx-react-lite\";\nimport React from \"react\";\nimport { RootStore } from \"../../../store\";\nimport { DialogStore } from \"../../../module/Dialog\";\ninterface IProps {\n msg: string,\n hash: string,\n}\n\nconst SuccessTxDialog = observer((props: IProps) => {\n return <div className='flex-col gap-4 py-10'>\n <div className='w-full flex items-center justify-center'>\n <Icon icon=\"icon-park-solid:check-one\" width=\"48\" height=\"48\" className='text-green-500' /></div>\n <div className='text-2xl font-[900] text-center mt-4'>{props.msg}</div>\n <div className='flex items-center justify-center text-green-500 text-sm mt-6 gap-2 cursor-pointer hover:text-green-600 transition'\n onClick={e => window.open(`https://iotexscan.io/tx/${props.hash}`, '_blank')}>View on IoTeXScan <Icon icon=\"material-symbols:chip-extraction-rounded\" width=\"18\" height=\"18\" /></div>\n </div>\n})\nexport const ShowSuccessTxDialog = ({ msg, hash }) => {\n RootStore.Get(DialogStore).setData({\n title: '',\n content: <SuccessTxDialog msg={msg} hash={hash} />,\n isOpen: true,\n })\n}","import { Chain, Wallet, useConnectModal, getDefaultConfig, WalletDetailsParams } from '@rainbow-me/rainbowkit';\nimport { walletConnectWallet, metaMaskWallet, iopayWallet, okxWallet, binanceWallet, safeWallet } from '@rainbow-me/rainbowkit/wallets';\nimport { iotex } from 'viem/chains';\nimport { ObjectPool, Store } from '../..';\n\nexport class WalletConfigStore implements Store {\n sid = 'WalletConfigStore';\n autoObservable = true\n\n appName = 'Dappkit';\n projectId = 'b69e844f38265667350efd78e3e1a5fb'\n // @ts-ignore\n supportedChains: Chain[];\n defaultChainId = 4689;\n updateTicker = 1\n walletUpdateTick = 0;\n isConnect = false;\n isInSafeApp = false;\n // This mode to resolve and walletClient and nextui in some extreme cases cause page infinite redraw bugs\n compatibleMode = true;\n\n constructor(args: Partial<WalletConfigStore>) {\n Object.assign(this, args);\n }\n\n set(params: Partial<WalletConfigStore>) {\n Object.assign(this, params);\n this.updateTicker += 1\n }\n\n get reconnectOnMount() {\n if (!this.compatibleMode)\n return true\n\n if (!this.isConnect && this.walletUpdateTick == 0) {\n return true\n }\n if (!this.isConnect && this.walletUpdateTick != 0) {\n return false\n }\n if (this.isConnect) {\n return true\n }\n }\n\n get rainbowKitConfig() {\n return ObjectPool.get(`rainbowKitConfig-${this.supportedChains?.map(i => i.id).join('-')}`, () => {\n return getDefaultConfig({\n appName: this.appName,\n projectId: this.projectId,\n //@ts-ignore\n chains: this.supportedChains,\n wallets: [{\n groupName: 'Recommended',\n wallets: [iopayWallet, metaMaskWallet],\n },\n {\n groupName: 'Others',\n wallets: [metaMaskWallet, walletConnectWallet, iopayWallet, okxWallet, binanceWallet, safeWallet],\n }]\n });\n });\n }\n}","import { iotex as _iotex, iotexTestnet as _iotexTestnet, type Chain } from \"viem/chains\";\n\nexport type NetworkObject = {\n name: string;\n chainId: number;\n rpcUrl: string;\n logoUrl: string;\n explorerUrl: string;\n explorerName: string;\n nativeCoin: string;\n type: 'mainnet' | 'testnet';\n};\n\nexport type WalletTransactionHistoryType = {\n chainId: number;\n tx?: string;\n msg: string;\n timestamp: number;\n type: string;\n status: 'loading' | 'success' | 'fail';\n};\n\nexport type AddressMode = 'io' | '0x';\n\nexport const iotex = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotex,\n} as Chain;\nexport const iotexTestnet = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotexTestnet,\n} as Chain;;","import { Icon } from '@iconify/react';\nimport { Button, Checkbox, Chip, Input, Listbox, ListboxItem, Popover, PopoverContent, PopoverTrigger, Radio, RadioGroup, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';\nimport { observer, useLocalObservable } from 'mobx-react-lite';\nimport React from 'react';\nimport { useEffect } from 'react';\nimport { RootStore } from \"../../../store\";\nimport { WalletStore } from \"..\";\nimport { WalletRpcStore } from '../walletPluginStore';\nimport { ToastPlugin } from '../../Toast/Toast';\n\n\nconst RpcList = observer(() => {\n const wallet = RootStore.Get(WalletStore)\n const rpcStore = RootStore.Get(WalletRpcStore)\n useEffect(() => {\n rpcStore.testRpc()\n }, [])\n\n return (\n <div className='mb-3 mt-4'>\n <div className='w-full flex mb-2 mt-2'>\n <div className='flex items-center justify-center gap-2'>\n <Checkbox size='sm' isSelected={rpcStore.isAutoSelectRpc.value} onValueChange={e => rpcStore.isAutoSelectRpc.save(e)}>Auto select rpc</Checkbox>\n <Tooltip content={<div className='w-[300px]'>Once selected, if the current RPC cannot send a request, an available RPC will be automatically chosen.</div>}>\n <Icon icon=\"ph:question\" width=\"18\" height=\"18\" className='text-gray-500' />\n </Tooltip>\n </div>\n\n <Button startContent={<Icon icon=\"tabler:test-pipe\" width=\"18\" height=\"18\" />} className='ml-auto' onClick={e => {\n rpcStore.testRpc()\n }}>Test</Button>\n <Popover placement=\"bottom\" offset={20} showArrow isOpen={rpcStore.showCustomRpc} onOpenChange={(open) => rpcStore.showCustomRpc = (open)}>\n <PopoverTrigger>\n <Button color=\"primary\" startContent={<Icon icon=\"basil:add-solid\" width=\"18\" height=\"18\" />} className='ml-4'>Add custom rpc</Button>\n </PopoverTrigger>\n <PopoverContent>\n <div className=\"px-1 py-2\">\n <Input\n type=\"url\"\n className='mb-4'\n placeholder=\"https://rpc.com\"\n value={rpcStore.customRpc}\n onValueChange={(value) => {\n rpcStore.customRpc = value;\n }}\n />\n <Button color='primary' isDisabled={!rpcStore.customRpc} onClick={e => rpcStore.addCustomRpc()}>Save</Button>\n </div>\n </PopoverContent>\n </Popover>\n\n </div>\n\n <Table\n color=\"success\"\n selectionMode=\"single\"\n defaultSelectedKeys={[rpcStore.curRpc.value]}\n aria-label=\"Example static collection table\"\n >\n <TableHeader>\n <TableColumn>RPC Server Address</TableColumn>\n <TableColumn align='center'>Score</TableColumn>\n <TableColumn align='center'>Height</TableColumn>\n <TableColumn align='center'>Latency</TableColumn>\n <TableColumn align='center'>Action</TableColumn>\n </TableHeader>\n <TableBody >\n {\n rpcStore.rpcList?.value?.map((item, index) => {\n return <TableRow className='cursor-pointer' key={item.name} onClick={e => {\n rpcStore.curRpc.save(item.name)\n RootStore.Get(ToastPlugin).success('Set rpc success')\n }} >\n <TableCell >{item.name}</TableCell>\n <TableCell >{rpcStore.scoreIcon(item.latency)}</TableCell>\n <TableCell>{item.height}</TableCell>\n <TableCell className={rpcStore.latencyColor(item.latency)}>{item.latency}s</TableCell>\n <TableCell>\n <div className=\"relative flex items-center gap-2\">\n <Tooltip content=\"Add to metamask\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.addToMetamask(item.name)\n }}>\n <Icon icon=\"logos:metamask-icon\" width=\"18\" height=\"18\" />\n </span>\n </Tooltip>\n {\n item.custom && <Tooltip content=\"Remove\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.removeRpc(item.name)\n }}>\n <Icon icon=\"solar:trash-bin-minimalistic-broken\" width=\"20\" height=\"20\" />\n </span>\n </Tooltip>\n }\n </div>\n </TableCell>\n </TableRow>\n })\n }\n </TableBody>\n </Table>\n </div>\n );\n});\n\nexport { RpcList };\n"]}
1
+ {"version":3,"sources":["../module/Wallet/provider.tsx","../module/Wallet/index.tsx","../module/Wallet/walletPluginStore.tsx","../module/Wallet/SuccessTxDialog/index.tsx","../module/Wallet/walletConfigStore.ts","../module/Wallet/type.ts","../module/Wallet/RpcList/index.tsx"],"names":["React","useEffect","useReconnect","useConnectModal","Icon","_a","SafeAppsSDK","observer"],"mappings":"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","sourcesContent":["import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect, useState } from 'react';\nimport { useReconnect, WagmiProvider } from 'wagmi';\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from '.';\nimport { WalletConfigStore } from './walletConfigStore'\nimport { reaction } from 'mobx';\nimport { type Chain } from \"viem/chains\";\nimport { iotex } from './type';\nimport SafeAppsSDK from '@safe-global/safe-apps-sdk';\nconst queryClient = new QueryClient();\nexport const WalletProvider = (({\n children,\n theme,\n appName,\n supportedChains,\n compatibleMode = true,\n router\n}: {\n children: React.ReactNode,\n theme?: 'dark' | 'light',\n appName?: string,\n supportedChains?: Chain[],\n compatibleMode?: boolean,\n router?: any\n}) => {\n //@ts-ignore\n const walletConfig = RootStore.Get(WalletConfigStore, { args: { supportedChains: supportedChains ?? [iotex] } });\n const [config, setConfig] = useState(walletConfig.rainbowKitConfig)\n useEffect(() => {\n const disposer = reaction(\n () => walletConfig.updateTicker,\n () => {\n setConfig(walletConfig.rainbowKitConfig)\n }\n )\n return () => disposer()\n })\n\n useEffect(() => {\n if (appName) {\n walletConfig.appName = appName\n }\n if (compatibleMode != undefined) {\n walletConfig.compatibleMode = compatibleMode\n }\n }, [appName, compatibleMode])\n\n useEffect(() => {\n const sdk = new SafeAppsSDK()\n // sdk.safe.getInfo().then(res => {\n // console.log(res)\n // })\n sdk.safe.getEnvironmentInfo().then(({ origin }) => {\n if (origin) {\n walletConfig.isInSafeApp = true\n }\n })\n }, [])\n\n return (\n <WagmiProvider config={config} reconnectOnMount={compatibleMode ? false : true}>\n <QueryClientProvider client={queryClient} >\n <RainbowKitProvider locale=\"en\" theme={theme == 'dark' ? darkTheme() : lightTheme()}>\n {children}\n <WalletConnect compatibleMode={compatibleMode} router={router} />\n {/* <SafeProviderWrapper /> */}\n </RainbowKitProvider>\n </QueryClientProvider>\n </WagmiProvider>\n );\n});\n\nexport const WalletConnect = ({ compatibleMode = true, router }) => {\n const { reconnect } = useReconnect()\n const wallet = RootStore.Get(WalletStore);\n wallet.use();\n if (router && compatibleMode) {\n useEffect(() => {\n if (!wallet.account) {\n reconnect()\n }\n }, [router])\n }\n return <></>;\n};\n","import React, { useEffect } from \"react\";\nimport { Store } from \"../../store/standard/base\";\nimport { Account, PublicClient, type HttpTransport, WalletClient, TransactionReceipt, createWalletClient, custom, publicActions } from \"viem\";\nimport { PromiseHook } from '../../store/standard/PromiseHook';\nimport { BigNumberState } from '../../store/standard/BigNumberState';\nimport BigNumber from 'bignumber.js';\nimport { AddressMode, WalletTransactionHistoryType } from \"./type\";\nimport EventEmitter from \"events\";\nimport { SwitchChainMutate } from \"wagmi/query\";\nimport { Config, useAccount, useConnect, useDisconnect, useReconnect, useSwitchChain, useWalletClient, } from \"wagmi\";\nimport { Chain, useConnectModal, WalletDetailsParams } from '@rainbow-me/rainbowkit';\nimport { RootStore } from \"../../store\";\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { http, createPublicClient } from 'viem';\nimport { WalletHistoryStore, WalletRpcStore } from './walletPluginStore';\nimport SafeAppsSDK, { TransactionStatus } from '@safe-global/safe-apps-sdk';\nimport { ShowSuccessTxDialog } from './SuccessTxDialog'\nimport { WalletConfigStore } from \"./walletConfigStore\";\nimport { AIem } from \"../../aiem\";\nimport { helper } from \"../../lib/helper\";\nimport { iotex } from \"viem/chains\";\n\nexport class WalletStore implements Store {\n sid = 'wallet';\n autoObservable = true;\n account: `0x${string}` = null;\n isSuccessDialogOpen = false;\n // isInSafeApp = false;\n get isInSafeApp() {\n return RootStore.Get(WalletConfigStore).isInSafeApp\n }\n isConnect = false;\n walletClient: WalletClient;\n event = new EventEmitter();\n switchChain: SwitchChainMutate<Config, unknown> | undefined;\n updateTicker = 0;\n addressMode: AddressMode = '0x';\n get isIoTeXChain(): boolean {\n if (this.chain && this.chain.id == 4689) {\n return true\n }\n return false\n }\n setAddressMode(mode: AddressMode) {\n this.addressMode = mode;\n localStorage.setItem('addressMode', mode);\n }\n get accountFormat() {\n return this.account ? helper.address.convertAddress(this.addressMode, this.account) : '-';\n }\n get connectAccountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 11, '...') : '-';\n }\n get accountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 16, '...') : '-';\n }\n get supportedChains() {\n return RootStore.Get(WalletConfigStore).supportedChains\n }\n chain: Chain | undefined;\n openConnectModal: any;\n disconnect: any;\n balance = PromiseHook.wrap({\n func: async () => {\n if (!this.publicClient || !this.account) return helper.number.warpBigNumber('0');\n const balance = await this.publicClient.getBalance({\n address: this.account,\n });\n if (balance) {\n return helper.number.warpBigNumber(balance?.toString() ?? '0');\n }\n },\n });\n\n constructor(args?: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n use(router?: any) {\n // const { data: walletClient, isSuccess } = useWalletClient();\n const { chain, address, isConnected } = useAccount();\n\n const { switchChain } = useSwitchChain();\n const { openConnectModal } = useConnectModal();\n const { connect } = useConnect();\n const { disconnect } = useDisconnect();\n const walletConfigStore = RootStore.Get(WalletConfigStore);\n this.set({\n //@ts-ignore\n connect,\n // @ts-ignore \n // walletClient,\n openConnectModal,\n switchChain,\n disconnect\n })\n\n useEffect(() => {\n if (address) {\n this.walletClient = createWalletClient({\n account: address,\n chain: this.chain,\n transport: custom(window.ethereum!)\n }).extend(publicActions)\n } else {\n this.walletClient = null\n }\n RootStore.Get(WalletHistoryStore).set({ isRender: true })\n this.set({\n isConnect: isConnected,\n account: address,\n // @ts-ignore \n chain,\n })\n walletConfigStore.set({\n isConnect: isConnected,\n })\n if (this.account) {\n this.updateTicker++;\n walletConfigStore.set({\n walletUpdateTick: this.updateTicker,\n })\n this.event.emit('walletAccount:ready');\n }\n }, [address, isConnected, chain])\n\n\n\n useEffect(() => {\n setTimeout(() => {\n this.balance.call()\n }, 1500)\n }, [this.updateTicker])\n }\n\n //always return or return default chain\n get publicClient(): PublicClient<HttpTransport, Chain, any, any> {\n if (this.chain && this.supportedChains.some(i => i.id === this.chain.id)) {\n if (this.chain.id == 4689) {\n return AIem.PubClient('4689', { rpcUrls: { default: { http: [RootStore.Get(WalletRpcStore).curRpc.value] } }, multicall: true })\n }\n return AIem.PubClient(this.chain.id.toString())\n } else {\n return AIem.PubClient('4689')\n }\n }\n\n set(args: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n toJSON() {\n const { account } = this;\n return { account };\n }\n\n async prepare(chainId?: number): Promise<WalletStore> {\n return new Promise<WalletStore>(async (res, rej) => {\n try {\n if (this.account) {\n if (!chainId) {\n res(this);\n }\n if (Number(this.chain?.id) == Number(chainId)) {\n console.log('has and return ')\n res(this);\n }\n this.switchChain?.({ chainId: chainId ?? 4689 });\n const interval = setInterval(() => {\n if (this.switchChain) {\n if (this.chain?.id == chainId) {\n try {\n // //@ts-ignore\n // const provider = new ethers.providers.Web3Provider(window?.ethereum);\n // this.signer = provider.getSigner();\n res(this);\n } catch (error) {\n }\n clearInterval(interval);\n }\n }\n }, 1000);\n } else {\n this.openConnectModal();\n // this.connect?.({ chainId, connector: this.rainbowkitParams.connectors()[0] }) connect success but ui not change so\n const interval = setInterval(() => {\n if (this.account) {\n clearInterval(interval);\n res(this);\n }\n }, 1000);\n }\n } catch (error) {\n rej(error);\n }\n });\n }\n\n\n async waitForTransactionReceipt({ hash }) {\n // https://github.com/wevm/wagmi/discussions/3463#discussioncomment-8139187\n if (this.isInSafeApp) {\n // console.log('isInSafeApp', this.isInSafeApp);\n const sdk = new SafeAppsSDK();\n while (true) {\n const queued = await sdk.txs.getBySafeTxHash(hash);\n if (queued.txStatus === TransactionStatus.AWAITING_CONFIRMATIONS || queued.txStatus === TransactionStatus.AWAITING_EXECUTION || queued.txStatus === TransactionStatus.CANCELLED) {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash: queued.txHash! as `0x${string}` });\n }\n }\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash });\n }\n }\n\n static async SendTx(...args: Parameters<WalletStore['sendTx']>) {\n return RootStore.Get(WalletStore).sendTx(...args);\n }\n static async SendRawTx(...args: Parameters<WalletStore['sendRawTx']>) {\n return RootStore.Get(WalletStore).sendRawTx(...args);\n }\n async sendTx({\n chainId,\n tx,\n autoAlert = true,\n loadingText,\n successText,\n onError,\n historyItem,\n showSuccessDialog = false,\n }: {\n chainId: number | string;\n tx: any;\n autoAlert?: boolean;\n loadingText?: string;\n successText?: string;\n showSuccessDialog?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n onError?: (error: any) => void;\n }) {\n const toast = RootStore.Get(ToastPlugin);\n let hash;\n const historyStore = RootStore.Get(WalletHistoryStore)\n try {\n if (loadingText) toast.loading(loadingText);\n if (!chainId) throw new Error('chainId, address, data is required');\n await RootStore.Get(WalletStore).prepare(Number(chainId));\n hash = await tx();\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: hash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n const receipt = await this.waitForTransactionReceipt({ hash });\n if (receipt.status == 'success') {\n toast.dismiss();\n toast.success('The transaction was successful');\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n } else {\n toast.dismiss();\n toast.error('The transaction failed');\n historyStore.updateHistoryStatusByTx(hash, 'fail');\n }\n if (successText) toast.success(successText);\n this.updateTicker++;\n return receipt;\n } catch (error) {\n console.log(error);\n toast.dismiss();\n if (autoAlert) {\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n console.log('sendTx', error?.message);\n if (error?.message?.includes('user rejected transaction') || String(error).toLowerCase().includes('user rejected') || String(error).toLowerCase().includes('user denied')) {\n toast.error('user rejected transaction');\n onError?.(error);\n return;\n }\n if (error?.message?.includes('The Transaction may not be processed on a block yet') || error?.message?.includes('could not be found')) {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n toast.success('The transaction was successful');\n return;\n }\n\n if (msg) {\n toast.error(msg as unknown as string);\n onError?.(msg);\n } else {\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n toast.error(messageArr[0]);\n onError?.(messageArr[0]);\n }\n } else {\n toast.error(String(error?.message || error));\n onError?.(String(error?.message || error));\n }\n }\n } else {\n throw error;\n }\n }\n }\n async sendRawTx({\n chainId,\n address,\n data,\n value = '0',\n autoAlert = true,\n onSended,\n onSuccess,\n onError,\n historyItem,\n loadingText,\n showSuccessDialog = false,\n }: {\n loadingText?: string;\n chainId: number | string;\n address: string;\n data: string | null;\n value?: string;\n autoRefresh?: boolean;\n autoAlert?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n showTransactionSubmitDialog?: boolean;\n showSuccessDialog?: boolean;\n onSended?: ({ res }: { res: TransactionReceipt }) => void;\n onSuccess?: ({ res }: { res: TransactionReceipt }) => void;\n onError?: ({ res }: { res: TransactionReceipt }) => void;\n }): Promise<TransactionReceipt | undefined> {\n chainId = Number(chainId);\n const toast = RootStore.Get(ToastPlugin);\n try {\n if (!chainId || !address) throw new Error('chainId, address, is required');\n await RootStore.Get(WalletStore).prepare(chainId);\n if (loadingText) toast.loading(loadingText);\n const historyStore = RootStore.Get(WalletHistoryStore)\n // @ts-ignore\n const hash = await this.walletClient.sendTransaction({\n account: this.account,\n to: address as `0x${string}`,\n data: data as `0x${string}`,\n value: value ? BigInt(value) : undefined,\n });\n // console.log(hash)\n let receipt = await this.waitForTransactionReceipt({ hash });\n console.log(receipt);\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: receipt.transactionHash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n onSended ? onSended({ res: receipt }) : null;\n if (receipt.status == 'success') {\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'success');\n }\n onSuccess && onSuccess({ res: receipt });\n toast.dismiss();\n toast.success('The transaction was successful');\n } else {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'fail');\n }\n onError && onError({ res: receipt });\n toast.dismiss();\n toast.error('The transaction failed');\n }\n return receipt;\n } catch (error) {\n toast.dismiss();\n console.log(error.message);\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n // Details: Transaction was rejected\n if (error?.message?.includes('user rejected transaction') || error?.message?.includes('cancel') || String(error).toLowerCase().includes('user rejected') || String(error).toLowerCase().includes('user denied')) {\n autoAlert && toast.error('user rejected transaction');\n return;\n }\n if (error?.message?.includes('Price slippage check')) {\n autoAlert && toast.error('The latest pool price has changed, please try to increase the slippage tolerance or reload the page.');\n return;\n }\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n toast.error(messageArr[0]);\n onError?.(messageArr[0]);\n return;\n }\n }\n\n if (msg) {\n autoAlert && toast.error(msg as unknown as string);\n } else {\n autoAlert && toast.error(String(error.message));\n }\n if (!autoAlert) {\n throw error;\n }\n }\n }\n}","import React from 'react';\nimport { Icon } from \"@iconify/react\";\nimport { RootStore } from \"../../store\";\nimport { Store } from \"../../store/standard/base\";\nimport { StorageState } from '../../store/standard/StorageState';\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { WalletTransactionHistoryType } from \"./type\";\nimport { WalletStore } from \".\";\nimport { helper } from \"../../lib/helper\";\n\nconst defaultRPCList = [\n { name: 'https://babel-api.fastblocks.io', latency: 0, height: 0, custom: false },\n { name: 'https://babel-api.mainnet.iotex.one', latency: 0, height: 0, },\n { name: 'https://babel-api.mainnet.iotex.io', latency: 0, height: 0, },\n { name: 'https://iotex-network.rpc.thirdweb.com', latency: 0, height: 0, },\n { name: 'https://iotexrpc.com', latency: 0, height: 0, },\n { name: 'https://iotex.api.onfinality.io/public', latency: 0, height: 0, },\n { name: 'https://rpc.ankr.com/iotex', latency: 0, height: 0, },\n]\nexport class WalletRpcStore implements Store {\n sid = 'WalletPluginStore';\n autoObservable = true\n curRpc = new StorageState({ default: 'https://babel-api.mainnet.iotex.one', key: 'curRPC-v2', value: 'https://babel-api.mainnet.iotex.one' });\n isAutoSelectRpc = new StorageState({ key: 'isAutoSelectRpc', default: true });\n customRpc = '';\n rpcList = new StorageState({ key: 'customRpcList-v2', default: defaultRPCList, value: [] })\n showCustomRpc = false;\n get currentRpc() {\n console.log(this.rpcList.value?.find(i => i.name == this.curRpc))\n return this.rpcList.value?.find(i => i.name == this.curRpc.value) || null\n }\n addCustomRpc() {\n const item = { name: this.customRpc, latency: 0, height: 0, custom: true }\n if (defaultRPCList.find(i => i.name === item.name)) {\n return RootStore.Get(ToastPlugin).error('Rpc already exists')\n }\n if (this.rpcList.value) {\n this.rpcList.save([...this.rpcList.value, item])\n this.refresh()\n return\n }\n this.rpcList.save([...defaultRPCList, item])\n this.refresh()\n }\n async addToMetamask(url) {\n try {\n if (typeof window == 'undefined') return;\n await window?.ethereum?.request({\n method: 'wallet_addEthereumChain',\n params: [{\n chainId: `0x${(4689).toString(16)}`,\n chainName: 'IoTeX Mainnet',\n nativeCurrency: {\n name: 'IoTeX',\n symbol: 'IOTX',\n decimals: 18,\n },\n rpcUrls: [url],\n blockExplorerUrls: ['https://iotexscan.io'],\n }]\n });\n RootStore.Get(ToastPlugin).success('Network added');\n console.log('Network added');\n } catch (error) {\n console.error('Failed to add network', error);\n }\n }\n refresh() {\n this.showCustomRpc = false\n this.customRpc = ''\n setTimeout(() => {\n this.testRpc()\n }, 500)\n }\n latencyColor(latency: number) {\n if (latency < 0) {\n return 'text-red-500'\n }\n if (latency < 1) {\n return 'text-green-500'\n }\n if (latency < 2) {\n return 'text-yellow-500'\n }\n return 'text-red-500'\n }\n async testRpcFunction(url: string): Promise<{ url: string, lentency: number, height: number }> {\n const start = performance.now();\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n method: 'eth_getBlockByNumber',\n params: [\"latest\", false],\n id: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Error from server: ${response.status}`);\n }\n const res = await response.json();\n console.log(res)\n const end = performance.now();\n return { url, lentency: Number(helper.number.numberFormat(((end - start) / 1000), '0.000', { fallback: '-1' })), height: parseInt(res.result.number, 16) };\n } catch (error) {\n console.error('RPC Latency Test Failed:', error);\n return { url, lentency: -1, height: -1 };\n }\n }\n testRpc() {\n this.rpcList?.value.forEach(i => {\n this.testRpcFunction(i.name).then(res => {\n i.latency = res.lentency\n i.height = res.height\n })\n })\n this.rpcList.save(this.rpcList.value)\n }\n removeRpc(name: string) {\n this.rpcList.save(this.rpcList.value.filter(i => i.name !== name))\n }\n scoreIcon(score: number) {\n if (score < 0) {\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n if (score < 1) {\n return <Icon icon=\"icon-park-solid:check-one\" width=\"18\" height=\"18\" style={{ color: \"#289726\" }} />\n }\n if (score < 2) {\n return <Icon icon=\"bxs:error\" width=\"18\" height=\"18\" style={{ color: \"#FFA500\" }} />\n }\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n get wallet() {\n return RootStore.Get(WalletStore)\n }\n // debounceAutoSelectRpc = pDebounce(this.autoSelectRpc, 3000)\n async autoSelectRpc() {\n console.log('autoSelectRpc')\n for (let i = 0; i < this.rpcList.value.length; i++) {\n const item = this.rpcList.value[i]\n const res = await this.testRpcFunction(item.name)\n if (res.lentency != -1 || res.height > 0) {\n this.curRpc.save(item.name)\n break;\n }\n }\n }\n}\n\nexport class WalletHistoryStore implements Store {\n sid = 'WalletHistoryStore';\n isRender = false\n autoObservable = true\n set(params: Partial<WalletHistoryStore>) {\n Object.assign(this, params);\n }\n private history = new StorageState<WalletTransactionHistoryType[] | null>({ value: [], key: 'history' });\n get historyList(): WalletTransactionHistoryType[] {\n if (this.isRender) {\n return this.history.value\n }\n return []\n }\n recordHistory(item: WalletTransactionHistoryType) {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n value = [item];\n } else {\n value = [...value, item];\n }\n this.history.setValue(value);\n }\n updateHistoryStatusByTx(tx: string | null, status: 'loading' | 'success' | 'fail') {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n return;\n }\n value = value.map((i) => {\n if (i.tx == tx) {\n i.status = status;\n return i;\n }\n if (!tx) {\n i.status = status;\n }\n return i;\n });\n this.history.setValue(value);\n }\n clearHistory() {\n this.history.setValue(null);\n }\n}\n","import { Icon } from \"@iconify/react\";\nimport { observer } from \"mobx-react-lite\";\nimport React from \"react\";\nimport { RootStore } from \"../../../store\";\nimport { DialogStore } from \"../../../module/Dialog\";\ninterface IProps {\n msg: string,\n hash: string,\n}\n\nconst SuccessTxDialog = observer((props: IProps) => {\n return <div className='flex-col gap-4 py-10'>\n <div className='w-full flex items-center justify-center'>\n <Icon icon=\"icon-park-solid:check-one\" width=\"48\" height=\"48\" className='text-green-500' /></div>\n <div className='text-2xl font-[900] text-center mt-4'>{props.msg}</div>\n <div className='flex items-center justify-center text-green-500 text-sm mt-6 gap-2 cursor-pointer hover:text-green-600 transition'\n onClick={e => window.open(`https://iotexscan.io/tx/${props.hash}`, '_blank')}>View on IoTeXScan <Icon icon=\"material-symbols:chip-extraction-rounded\" width=\"18\" height=\"18\" /></div>\n </div>\n})\nexport const ShowSuccessTxDialog = ({ msg, hash }) => {\n RootStore.Get(DialogStore).setData({\n title: '',\n content: <SuccessTxDialog msg={msg} hash={hash} />,\n isOpen: true,\n })\n}","import { Chain, Wallet, useConnectModal, getDefaultConfig, WalletDetailsParams } from '@rainbow-me/rainbowkit';\nimport { walletConnectWallet, metaMaskWallet, iopayWallet, okxWallet, binanceWallet, safeWallet } from '@rainbow-me/rainbowkit/wallets';\nimport { iotex } from 'viem/chains';\nimport { ObjectPool, Store } from '../..';\n\nexport class WalletConfigStore implements Store {\n sid = 'WalletConfigStore';\n autoObservable = true\n\n appName = 'Dappkit';\n projectId = 'b69e844f38265667350efd78e3e1a5fb'\n // @ts-ignore\n supportedChains: Chain[];\n defaultChainId = 4689;\n updateTicker = 1\n walletUpdateTick = 0;\n isConnect = false;\n isInSafeApp = false;\n // This mode to resolve and walletClient and nextui in some extreme cases cause page infinite redraw bugs\n compatibleMode = true;\n\n constructor(args: Partial<WalletConfigStore>) {\n Object.assign(this, args);\n }\n\n set(params: Partial<WalletConfigStore>) {\n Object.assign(this, params);\n this.updateTicker += 1\n }\n\n get reconnectOnMount() {\n if (!this.compatibleMode)\n return true\n\n if (!this.isConnect && this.walletUpdateTick == 0) {\n return true\n }\n if (!this.isConnect && this.walletUpdateTick != 0) {\n return false\n }\n if (this.isConnect) {\n return true\n }\n }\n\n get rainbowKitConfig() {\n return ObjectPool.get(`rainbowKitConfig-${this.supportedChains?.map(i => i.id).join('-')}`, () => {\n return getDefaultConfig({\n appName: this.appName,\n projectId: this.projectId,\n //@ts-ignore\n chains: this.supportedChains,\n wallets: [{\n groupName: 'Recommended',\n wallets: [iopayWallet, metaMaskWallet],\n },\n {\n groupName: 'Others',\n wallets: [metaMaskWallet, walletConnectWallet, iopayWallet, okxWallet, binanceWallet, safeWallet],\n }]\n });\n });\n }\n}","import { iotex as _iotex, iotexTestnet as _iotexTestnet, type Chain } from \"viem/chains\";\n\nexport type NetworkObject = {\n name: string;\n chainId: number;\n rpcUrl: string;\n logoUrl: string;\n explorerUrl: string;\n explorerName: string;\n nativeCoin: string;\n type: 'mainnet' | 'testnet';\n};\n\nexport type WalletTransactionHistoryType = {\n chainId: number;\n tx?: string;\n msg: string;\n timestamp: number;\n type: string;\n status: 'loading' | 'success' | 'fail';\n};\n\nexport type AddressMode = 'io' | '0x';\n\nexport const iotex = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotex,\n} as Chain;\nexport const iotexTestnet = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotexTestnet,\n} as Chain;;","import { Icon } from '@iconify/react';\nimport { Button, Checkbox, Chip, Input, Listbox, ListboxItem, Popover, PopoverContent, PopoverTrigger, Radio, RadioGroup, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';\nimport { observer, useLocalObservable } from 'mobx-react-lite';\nimport React from 'react';\nimport { useEffect } from 'react';\nimport { RootStore } from \"../../../store\";\nimport { WalletStore } from \"..\";\nimport { WalletRpcStore } from '../walletPluginStore';\nimport { ToastPlugin } from '../../Toast/Toast';\n\n\nconst RpcList = observer(() => {\n const wallet = RootStore.Get(WalletStore)\n const rpcStore = RootStore.Get(WalletRpcStore)\n useEffect(() => {\n rpcStore.testRpc()\n }, [])\n\n return (\n <div className='mb-3 mt-4'>\n <div className='w-full flex mb-2 mt-2'>\n <div className='flex items-center justify-center gap-2'>\n <Checkbox size='sm' isSelected={rpcStore.isAutoSelectRpc.value} onValueChange={e => rpcStore.isAutoSelectRpc.save(e)}>Auto select rpc</Checkbox>\n <Tooltip content={<div className='w-[300px]'>Once selected, if the current RPC cannot send a request, an available RPC will be automatically chosen.</div>}>\n <Icon icon=\"ph:question\" width=\"18\" height=\"18\" className='text-gray-500' />\n </Tooltip>\n </div>\n\n <Button startContent={<Icon icon=\"tabler:test-pipe\" width=\"18\" height=\"18\" />} className='ml-auto' onClick={e => {\n rpcStore.testRpc()\n }}>Test</Button>\n <Popover placement=\"bottom\" offset={20} showArrow isOpen={rpcStore.showCustomRpc} onOpenChange={(open) => rpcStore.showCustomRpc = (open)}>\n <PopoverTrigger>\n <Button color=\"primary\" startContent={<Icon icon=\"basil:add-solid\" width=\"18\" height=\"18\" />} className='ml-4'>Add custom rpc</Button>\n </PopoverTrigger>\n <PopoverContent>\n <div className=\"px-1 py-2\">\n <Input\n type=\"url\"\n className='mb-4'\n placeholder=\"https://rpc.com\"\n value={rpcStore.customRpc}\n onValueChange={(value) => {\n rpcStore.customRpc = value;\n }}\n />\n <Button color='primary' isDisabled={!rpcStore.customRpc} onClick={e => rpcStore.addCustomRpc()}>Save</Button>\n </div>\n </PopoverContent>\n </Popover>\n\n </div>\n\n <Table\n color=\"success\"\n selectionMode=\"single\"\n defaultSelectedKeys={[rpcStore.curRpc.value]}\n aria-label=\"Example static collection table\"\n >\n <TableHeader>\n <TableColumn>RPC Server Address</TableColumn>\n <TableColumn align='center'>Score</TableColumn>\n <TableColumn align='center'>Height</TableColumn>\n <TableColumn align='center'>Latency</TableColumn>\n <TableColumn align='center'>Action</TableColumn>\n </TableHeader>\n <TableBody >\n {\n rpcStore.rpcList?.value?.map((item, index) => {\n return <TableRow className='cursor-pointer' key={item.name} onClick={e => {\n rpcStore.curRpc.save(item.name)\n RootStore.Get(ToastPlugin).success('Set rpc success')\n }} >\n <TableCell >{item.name}</TableCell>\n <TableCell >{rpcStore.scoreIcon(item.latency)}</TableCell>\n <TableCell>{item.height}</TableCell>\n <TableCell className={rpcStore.latencyColor(item.latency)}>{item.latency}s</TableCell>\n <TableCell>\n <div className=\"relative flex items-center gap-2\">\n <Tooltip content=\"Add to metamask\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.addToMetamask(item.name)\n }}>\n <Icon icon=\"logos:metamask-icon\" width=\"18\" height=\"18\" />\n </span>\n </Tooltip>\n {\n item.custom && <Tooltip content=\"Remove\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.removeRpc(item.name)\n }}>\n <Icon icon=\"solar:trash-bin-minimalistic-broken\" width=\"20\" height=\"20\" />\n </span>\n </Tooltip>\n }\n </div>\n </TableCell>\n </TableRow>\n })\n }\n </TableBody>\n </Table>\n </div>\n );\n});\n\nexport { RpcList };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dappworks/kit",
3
- "version": "0.4.215",
3
+ "version": "0.4.217",
4
4
  "description": "",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.mts",
@@ -108,6 +108,7 @@
108
108
  "prepublishOnly": "npm run build"
109
109
  },
110
110
  "peerDependencies": {
111
+ "@iconify/react": ">=5.0.2",
111
112
  "@iotexproject/iotex-address-ts": "^1.0.4",
112
113
  "@monaco-editor/react": ">=4.0.0",
113
114
  "@nextui-org/react": ">=2.4.2",
@@ -117,6 +118,7 @@
117
118
  "@rjsf/core": ">=5.19.4",
118
119
  "@rjsf/utils": ">=5.19.4",
119
120
  "@rjsf/validator-ajv8": ">=5.19.4",
121
+ "@safe-global/safe-apps-sdk": ">=9.1.0",
120
122
  "@tanstack/react-query": ">=5.45.1",
121
123
  "@tremor/react": ">=3.0.0",
122
124
  "axios": ">=1.4.0",
@@ -141,7 +143,7 @@
141
143
  "react-hot-toast": ">=2.0.0",
142
144
  "typed-emitter": ">=2.0.0",
143
145
  "wagmi": ">=2.12.7",
144
- "@iconify/react": ">=5.0.2"
146
+ "viem": ">=2.21.1"
145
147
  },
146
148
  "author": "uuz",
147
149
  "license": "ISC",
@@ -1,58 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __getProtoOf = Object.getPrototypeOf;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __objRest = (source, exclude) => {
25
- var target = {};
26
- for (var prop in source)
27
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
- target[prop] = source[prop];
29
- if (source != null && __getOwnPropSymbols)
30
- for (var prop of __getOwnPropSymbols(source)) {
31
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
- target[prop] = source[prop];
33
- }
34
- return target;
35
- };
36
- var __commonJS = (cb, mod) => function __require() {
37
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
38
- };
39
- var __copyProps = (to, from, except, desc) => {
40
- if (from && typeof from === "object" || typeof from === "function") {
41
- for (let key of __getOwnPropNames(from))
42
- if (!__hasOwnProp.call(to, key) && key !== except)
43
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
44
- }
45
- return to;
46
- };
47
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
48
- // If the importer is in node compatibility mode or this is not an ESM
49
- // file that has been converted to a CommonJS file using a Babel-
50
- // compatible transform (i.e. "__esModule" has not been set), then set
51
- // "default" to the CommonJS "module.exports" for node compatibility.
52
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
53
- mod
54
- ));
55
-
56
- export { __commonJS, __objRest, __spreadProps, __spreadValues, __toESM };
57
- //# sourceMappingURL=out.js.map
58
- //# sourceMappingURL=chunk-2EXDWOHY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../aiem.ts","../lib/decorators.ts","../constants/abi.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Chain,\n type GetContractReturnType,\n type Abi,\n type PublicClient,\n type HttpTransport,\n type WalletClient,\n type Transport,\n type Account,\n encodeFunctionData,\n http,\n getContract,\n createPublicClient,\n} from \"viem\";\nimport { iotex, mainnet, bsc, polygon, iotexTestnet } from \"viem/chains\";\nimport TTLCache from \"@isaacs/ttlcache\";\nimport { ClassType } from \"./lib/interface\";\nimport { getFieldMetadata } from \"./lib/decorators\";\nimport { helper } from \"./utils\";\nimport BigNumber from \"bignumber.js\";\nimport { ERC20ABI } from \"./constants/abi\";\n\n//@ts-ignore\nBigInt.prototype.toJSON = function () {\n return this.toString();\n};\n\n(iotexTestnet.contracts = {\n multicall3: {\n //@ts-ignore\n address: \"0xb5cecd6894c6f473ec726a176f1512399a2e355d\",\n blockCreated: 24347592,\n },\n}),\n //@ts-ignore\n (mainnet.rpcUrls.default.http = [\"https://rpc.ankr.com/eth\"]);\n//@ts-ignore\nmainnet.rpcUrls.default.webSocket = [\"wss://ethereum-rpc.publicnode.com\"];\n\nexport { Fields } from \"./lib/decorators\";\n\nexport class Cache {\n kv = new TTLCache<string, any>({ max: 10000, ttl: 1000 * 60 });\n\n wrap<T>(key: string, fn: () => T | Promise<T>, config: TTLCache.Options<any, any> = {}): T | Promise<T> {\n if (this.kv.has(key)) {\n // console.log(`load ${key} from cache`)\n return this.kv.get(key);\n }\n\n const result = fn();\n if (result instanceof Promise) {\n const promiseResult = result.then((res) => {\n this.kv.set(key, res, config);\n return res;\n });\n this.kv.set(key, promiseResult, config);\n return promiseResult;\n } else {\n this.kv.set(key, result, config);\n return result;\n }\n }\n}\n\nexport type GetOptions = {\n multicall?: boolean;\n rpcUrls?: Chain[\"rpcUrls\"]\n};\n\nexport class AIem<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }> {\n static cache?: Cache = new Cache();\n cache?: Cache = new Cache();\n contractMap?: Contracts;\n //@ts-ignore\n chainMap?: Chains = {\n [iotex.id]: iotex,\n [mainnet.id]: mainnet,\n [bsc.id]: bsc,\n [polygon.id]: polygon,\n [iotexTestnet.id]: iotexTestnet,\n };\n nameMap?: Addrs;\n contracts: {\n [K in keyof Addrs & keyof Contracts]: {\n //@ts-ignore\n [KK in keyof Addrs[K]]: GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>, any, any>;\n };\n };\n static defaultFuncMap = {\n totalSupply: { ttl: 15 * 1000 },\n symbol: { ttl: 60 * 1000 },\n name: { ttl: 60 * 1000 },\n decimals: { ttl: 60 * 1000 },\n balanceOf: { ttl: 5 * 1000 },\n };\n funcMap?: { [key: string]: { ttl?: number } } = {};\n\n get _cache() {\n return AIem.cache;\n }\n\n //@ts-ignore\n getWallet?: () => WalletClient;\n\n static Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }>(\n args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\">,\n ) {\n return this.init().Set(args);\n }\n\n Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }>(\n args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\">,\n ): AIem<Contracts, Chains, Addrs> {\n const { chainMap = {}, contractMap = {}, funcMap, ...rest } = args || {};\n //@ts-ignore\n this.chainMap = Object.assign({}, this.chainMap || {}, chainMap);\n //@ts-ignore\n this.contractMap = Object.assign({}, this.contractMap || {}, contractMap);\n //@ts-ignore\n this.funcMap = Object.assign({}, this.funcMap || {}, funcMap);\n\n Object.assign(this, rest);\n return this as any;\n }\n\n constructor(args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\"> = {}) {\n this.Set(args);\n\n this.contracts = new Proxy(\n {},\n {\n //@ts-ignore\n get: (target: any, contractName: keyof Addrs & keyof Contracts) => {\n if (target[contractName]) return target[contractName];\n\n if (!this.nameMap[contractName]) {\n throw new Error(`Contract ${String(contractName)} not found`);\n }\n\n target[contractName] = new Proxy(\n {},\n {\n //@ts-ignore\n get: (innerTarget: any, contractAlias: keyof Addrs[keyof Addrs]) => {\n const addressStr = this.nameMap[contractName]?.[contractAlias];\n if (!addressStr) {\n throw new Error(`Alias ${String(contractAlias)} for contract ${String(contractName)} not found`);\n }\n const [chainId, address] = addressStr.split(\"-\");\n\n // Assuming getContractInstance is a function that retrieves a contract instance\n return this.Get(contractName, String(chainId), address as `0x${string}`);\n },\n },\n );\n return target[contractName];\n },\n },\n ) as any;\n }\n\n // WsClient<C extends keyof Chains>(chainId: C): PublicClient<WebSocketTransport, Chain, any, any> {\n // //@ts-ignore\n // return this.cache.wrap(`wsClient-${String(chainId)}`, () => {\n // // const wsUrl = this.chainMap[chainId]?.rpcUrls?.default?.webSocket?.[0]\n // // if (!wsUrl) throw new Error(`rpcUrls.default.webSocket[0] is not defined for chainId ${String(chainId)}`)\n // // //@ts-ignore\n // return createPublicClient({\n // //@ts-ignore\n // chain: this.chainMap[chainId],\n // transport: webSocket()\n // }) as PublicClient<WebSocketTransport, Chain, any, any>\n // })\n // }\n\n static PubClient(chainId: string, options: GetOptions = { multicall: true }): PublicClient<HttpTransport, Chain, any, any> {\n //@ts-ignore\n return this.init().PubClient(chainId, options);\n }\n\n PubClient<C extends keyof Chains>(chainId: C, options: GetOptions = { multicall: true }): PublicClient<HttpTransport, Chain, any, any> {\n const chain = this.chainMap[chainId]\n if (options.rpcUrls) {\n chain.rpcUrls = options.rpcUrls\n }\n //@ts-ignore\n return this._cache.wrap(`publicClient-${String(chainId)}-${chain.rpcUrls.default.http}-${options?.multicall}`, () => {\n //@ts-ignore\n return createPublicClient({\n //@ts-ignore\n chain,\n ...(options?.multicall\n ? {\n batch: {\n multicall: true,\n },\n }\n : {}),\n\n //@ts-ignore\n transport: http(),\n });\n });\n }\n\n //@ts-ignore\n static Get<TAbi extends Abi = any, ReturnType extends GetContractReturnType<TAbi, WalletClient<Transport, Chain, Account>>>(\n abi: TAbi,\n chainId: any,\n address: any,\n wallet?: WalletClient,\n //@ts-ignore\n options?: GetOptions = { multicall: true },\n //@ts-ignore\n ): ReturnType & { encode: ReturnType[\"write\"] } {\n const aiem = this.init();\n if (!wallet) {\n wallet = aiem.getWallet ? aiem.getWallet() : null;\n }\n\n const cacheKey = `contract ${chainId}-${address}-${wallet ? wallet.account.address : null}`;\n return aiem._cache.wrap(cacheKey, () => {\n //@ts-ignore\n const pubClient = aiem.PubClient(chainId, options);\n\n //@ts-ignore\n return aiem.getContract({\n client: {\n //@ts-ignore\n public: pubClient,\n //@ts-ignore\n wallet,\n },\n address,\n abi,\n });\n }) as any;\n }\n\n //@ts-ignore\n Get<K extends keyof Contracts, C extends keyof Chains, Addr extends `0x${string}`>(\n contractName: K,\n chainId: C,\n address: Addr,\n options: GetOptions = { multicall: true },\n //@ts-ignore\n ): GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>> & { encode: GetContractReturnType<Contracts[K], WalletClient<HttpTransport, Chain, Account, any>>[\"write\"] } {\n const wallet = this.getWallet ? this.getWallet() : null;\n //@ts-ignore\n const cacheKey = `contract ${chainId}-${address}-${wallet ? wallet.account.address : null}`;\n return this._cache.wrap(cacheKey, () => {\n //@ts-ignore\n const contract = this.contractMap[contractName];\n //@ts-ignore\n const pubClient = this.PubClient(chainId, options);\n\n //@ts-ignore\n return this.getContract({\n client: {\n //@ts-ignore\n public: pubClient,\n //@ts-ignore\n wallet,\n },\n address,\n abi: contract,\n });\n }) as any;\n }\n\n getContract({\n client,\n address,\n abi,\n }: {\n client: {\n public: PublicClient<HttpTransport, Chain, any, any>;\n wallet?: WalletClient;\n };\n address: `0x${string}`;\n abi: any;\n }) {\n const handler = {\n get: (target: any, funcName: any) => {\n if (funcName == \"encode\") {\n return new Proxy(\n {},\n {\n get(t1, f1) {\n return async (args: any) => {\n // @ts-ignore\n return encodeFunctionData({\n abi,\n functionName: f1,\n args,\n });\n };\n },\n },\n );\n }\n\n if (typeof target[funcName] === \"function\") {\n return async (...args: any[]) => {\n const methodConfig = this.funcMap?.[funcName as string];\n // const cacheKey = `method:${client.public.chain.id}-${address}-${String(funcName)}-${JSON.stringify(args)}`;\n const cacheKey = `call ${client.public.chain.id}-${address}-${funcName}-${JSON.stringify(args)}`;\n\n if (methodConfig) {\n return this.cache.wrap(\n cacheKey,\n () => {\n return target[funcName](...args);\n },\n methodConfig,\n );\n }\n\n return target[funcName](...args);\n };\n }\n return new Proxy(target[funcName], handler);\n },\n };\n\n //@ts-ignore\n const contract = getContract({\n //@ts-ignore\n client,\n address,\n abi,\n });\n return new Proxy(contract, handler) as any;\n }\n\n static init(): AIem<any, any, any> {\n if (!globalThis.aiem) {\n //@ts-ignore\n globalThis.aiem = new AIem();\n }\n\n return globalThis.aiem;\n }\n\n static async getPrice({ chainId = \"4689\", address }: { chainId?: string; address: string }) {\n const priceMap = await this.cache.wrap(\n `token-price`,\n async () => {\n const res = await (await fetch(\"https://api.iopay.me/api/rest/price\")).json();\n return Object.values(res)\n .flat()\n .reduce((p, c: { platforms: string; current_price: number }) => {\n p[`${4689}-${c.platforms.toLowerCase()}`] = c.current_price;\n return p;\n }, {});\n },\n { ttl: 1000 * 60 },\n );\n return priceMap[`${chainId}-${address}`];\n }\n\n static utils = {\n autoFormat: async ({ value, decimals, chainId, address }: { value: string; decimals?: number; chainId: string; address: string }) => {\n if (!decimals) {\n //@ts-ignore\n decimals = await this.cache.wrap(`${chainId}-${address}-decimals`, async () => {\n //@ts-ignore\n return this.Get(ERC20ABI, chainId, address).read.decimals()\n })\n }\n const wrap = helper.number.warpBigNumber(value, decimals, { format: \"0,0.000000\", fallback: \"\" });\n const price = await this.getPrice({ chainId, address: address.toLowerCase() });\n const usd = new BigNumber(wrap.originFormat).multipliedBy(price || 0).toFixed(2);\n return { ...wrap, usd, price };\n },\n };\n\n static QueryMany<E, S extends QuerySelect<E>>(entity: ClassType<E>, select: S) {\n return async (_entities: Partial<E>[]): Promise<QueryReturnType<E, S>[]> => {\n //@ts-ignore\n return this.Query(entity, select)(_entities) as any;\n };\n }\n\n static Query<E, S extends QuerySelect<E>>(entity: ClassType<E>, select: S) {\n return async (entities: Partial<E>): Promise<QueryReturnType<E, S>> => {\n const isArrayInput = Array.isArray(entities);\n\n try {\n const results: Array<QueryReturnType<E, S>> = [];\n\n if (!isArrayInput) {\n //@ts-ignore\n entities = [entities];\n }\n //@ts-ignore\n for (const entityData of entities) {\n const instance = Object.assign(new entity(), entityData);\n // const result: any = {};\n\n const fetchFields = async (obj: any, sel: any) => {\n const promises = [];\n for (const key in sel) {\n // return console.log(key, getFieldMetadata(obj, key))\n // Check if the property is annotated with @Fields.read(), @Fields.custom(), or @Fields.contract()\n const fieldMetadata = getFieldMetadata(obj, key);\n let call: any;\n //@ts-ignore\n const enableMulticall = entity.multicall == false ? false : true;\n // console.log(key, fieldMetadata, instance)\n if (sel[key] == false) {\n call = async () => null;\n } else {\n switch (fieldMetadata?.type) {\n case \"read\":\n if (Array.isArray(sel[key])) {\n //@ts-ignore\n call = () => this.Get(entity.abi, instance.chainId, instance.address, null, { multicall: enableMulticall }).read[key](sel[key]);\n } else {\n //@ts-ignore\n call = () => this.Get(entity.abi, instance.chainId, instance.address, null, { multicall: enableMulticall }).read[key]();\n }\n break;\n case \"write\":\n // @ts-ignore\n obj[key] = encodeFunctionData({\n //@ts-ignore\n abi: entity.abi,\n functionName: key,\n args: sel[key],\n });\n\n break;\n case \"custom\":\n const func = fieldMetadata.func\n call = () => func(instance)\n break;\n case \"entity\":\n const targetMetadata = getFieldMetadata(instance, fieldMetadata.targetKey);\n\n if (typeof fieldMetadata.targetKey == \"string\") {\n if (targetMetadata?.options?.ttl) {\n //@ts-ignore\n const cacheKey = `call ${instance.chainId}-${instance.address}-${fieldMetadata.targetKey}`;\n //@ts-ignore\n call = () =>\n new Promise(async (resolve) => {\n //@ts-ignore\n const address = await this.cache.wrap(cacheKey, async () =>\n //@ts-ignore\n this.Get(entity.abi, instance.chainId, instance.address, null, { multicall: enableMulticall }).read[fieldMetadata.targetKey](),\n );\n //@ts-ignore\n resolve(this.Query(fieldMetadata.entity(), sel[key])({ address, chainId: instance.chainId }));\n });\n } else {\n call = () =>\n //@ts-ignore\n this.Get(entity.abi, instance.chainId, instance.address, null, { multicall: enableMulticall })\n //@ts-ignore\n .read[fieldMetadata.targetKey]()\n .then((address: any) => {\n // console.log({ address, sel: sel[key] })\n //@ts-ignore\n return this.Query(fieldMetadata.entity(), sel[key])({ address, chainId: instance.chainId });\n });\n }\n } else {\n //@ts-ignore\n call = () =>\n fieldMetadata.targetKey(instance).then((args) => {\n // console.log(args)\n return Array.isArray(args) ? this.QueryMany(fieldMetadata.entity(), sel[key])(args) : this.Query(fieldMetadata.entity(), sel[key])(args);\n });\n }\n break;\n default:\n if (typeof obj[key] == \"function\") {\n call = () => obj[key](...(Array.isArray(sel[key]) ? sel[key] : []));\n }\n break;\n }\n }\n\n if (call) {\n if (fieldMetadata?.options?.ttl) {\n //@ts-ignore\n const cacheKey = `call ${instance.chainId}-${instance.address}-${key}-${JSON.stringify(sel[key])}`;\n promises.push(\n new Promise(async (resolve) => {\n const value = await this.cache.wrap(cacheKey, async () => call().catch(i => null), fieldMetadata.options)\n obj[key] = value;\n resolve(value);\n })\n );\n } else {\n promises.push(\n call()\n .then((value) => {\n obj[key] = value;\n })\n .catch((i) => (obj[key] = null)),\n );\n }\n }\n }\n\n await Promise.all(promises);\n };\n\n await fetchFields(instance, select);\n //@ts-ignore\n results.push(instance);\n }\n\n if (isArrayInput) {\n return results as any;\n } else {\n return results[0] as any;\n }\n } catch (error) {\n if (isArrayInput) {\n return [] as any;\n } else {\n return null as any;\n }\n }\n };\n }\n}\nexport type Item<T> = T extends (infer U)[] ? U : T;\n\n// export type QueryResult<E, S extends QuerySelect<E>> =\n// E extends Array<any> ? Promise<Array<QueryReturnType<E[number], S>>> :\n// E extends object ? Promise<QueryReturnType<E, S>> :\n// never;\n\ntype QuerySelect<E> = {\n [K in keyof E]?: E[K] extends (...args: any[]) => any ? Parameters<E[K]> | boolean : E[K] extends object ? QuerySelect<Item<E[K]>> | boolean : boolean;\n};\n\n// type FunctionReturn<T> = T extends (...args: any[]) => any ? Awaited<ReturnType<T>> : T;\n// type NestedReturn<E, S> = E extends object ? S extends object ? QueryReturnType<E, S> : E : E;\n\nexport type QueryReturnType<E, S extends QuerySelect<E>> = {\n [K in keyof E]: K extends keyof S\n ? E[K] extends (...args: any[]) => any\n ? Awaited<ReturnType<E[K]>>\n : E[K] extends object\n ? S[K] extends object\n ? QueryReturnType<E[K], S[K]>\n : E[K]\n : E[K]\n : E[K];\n\n};\n\n","import \"reflect-metadata\";\nimport { ClassType } from \"./interface\";\n\nexport const FIELD_KEY = Symbol(\"aiem_field\");\n\nexport interface FieldParams {\n ttl?: number;\n}\n\nexport type ContractParams<T extends any = any, K extends keyof T = keyof T> = K;\n\nconst metadataCache = new WeakMap<any, Map<any, any>>();\n\nexport class Fields {\n static hide(options: any = {}) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"hide\", options });\n };\n }\n\n static read(options: any = {}) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"read\", options });\n };\n }\n\n static write(options: any = {}) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"write\", options });\n };\n }\n\n static custom(func: any = {}) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"custom\", func });\n };\n }\n\n static relation<T = any, R = any>(entity: () => ClassType<R>, options: ((e: T) => Promise<Partial<R> | Partial<R>[]>) | string) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"entity\", entity, targetKey: options });\n };\n }\n\n static contract<T = any, R = any>(entity: () => ClassType<R>, options: ((e: T) => Promise<Partial<R> | Partial<R>[]>) | string) {\n return function (target: any, propertyKey: any, descriptor?: PropertyDescriptor) {\n Fields.setMetadata(target, propertyKey, { type: \"entity\", entity, targetKey: options });\n };\n }\n private static setMetadata(target: any, propertyKey: any, metadata: any) {\n let targetMetadata = metadataCache.get(target);\n if (!targetMetadata) {\n targetMetadata = new Map<any, any>();\n metadataCache.set(target, targetMetadata);\n }\n targetMetadata.set(propertyKey, metadata);\n // @ts-ignore \n Reflect.defineMetadata(FIELD_KEY, metadata, target, propertyKey);\n }\n}\n\nexport function getFieldMetadata(target: any, propertyKey: string) {\n const targetMetadata = metadataCache.get(target);\n if (targetMetadata) {\n return targetMetadata.get(propertyKey);\n }\n // @ts-ignore \n return Reflect.getMetadata(FIELD_KEY, target, propertyKey);\n}\n","export const ERC20ABI = [{ \"inputs\": [{ \"internalType\": \"string\", \"name\": \"name\", \"type\": \"string\" }, { \"internalType\": \"string\", \"name\": \"symbol\", \"type\": \"string\" }, { \"internalType\": \"uint256\", \"name\": \"initialSupply\", \"type\": \"uint256\" }, { \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }], \"stateMutability\": \"nonpayable\", \"type\": \"constructor\" }, { \"anonymous\": false, \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }, { \"indexed\": true, \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }, { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" }], \"name\": \"Approval\", \"type\": \"event\" }, { \"anonymous\": false, \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"from\", \"type\": \"address\" }, { \"indexed\": true, \"internalType\": \"address\", \"name\": \"to\", \"type\": \"address\" }, { \"indexed\": false, \"internalType\": \"uint256\", \"name\": \"value\", \"type\": \"uint256\" }], \"name\": \"Transfer\", \"type\": \"event\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }, { \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }], \"name\": \"allowance\", \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"approve\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }], \"name\": \"balanceOf\", \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"burn\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"burnFrom\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"decimals\", \"outputs\": [{ \"internalType\": \"uint8\", \"name\": \"\", \"type\": \"uint8\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"subtractedValue\", \"type\": \"uint256\" }], \"name\": \"decreaseAllowance\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"spender\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"addedValue\", \"type\": \"uint256\" }], \"name\": \"increaseAllowance\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"name\", \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"symbol\", \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [], \"name\": \"totalSupply\", \"outputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }], \"stateMutability\": \"view\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"recipient\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"transfer\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }, { \"inputs\": [{ \"internalType\": \"address\", \"name\": \"sender\", \"type\": \"address\" }, { \"internalType\": \"address\", \"name\": \"recipient\", \"type\": \"address\" }, { \"internalType\": \"uint256\", \"name\": \"amount\", \"type\": \"uint256\" }], \"name\": \"transferFrom\", \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }], \"stateMutability\": \"nonpayable\", \"type\": \"function\" }] as const;"]}