{
  "version": 3,
  "sources": ["../../src/pages/sign/index.tsx", "../../src/pages/sign/components/evm-sign.tsx", "../../src/context/hooks/usePending.tsx", "../../src/pages/sign/evmContextProvider.tsx", "../../src/utils/ethereumUtils.ts", "../../src/pages/sign/riskReminder/index.tsx", "../../src/pages/sign/riskTypography/index.tsx", "../../src/pages/sign/components/NewErcTransfers.tsx", "../../src/components/icon-edit-pen.tsx", "../../src/components/icon-to.tsx", "../../src/pages/sign/components/gas-display.tsx", "../../src/pages/sign/components/no-gas.tsx", "../../src/pages/sign/components/evm-gas.tsx"],
  "sourcesContent": ["import { isNeedRestoreWallet, syncUserInfo } from '@particle-network/auth-core';\nimport React, { useEffect } from 'react';\nimport { AuthPage } from '../../components/customRouter';\nimport { useCustomNavigate } from '../../context';\nimport EvmSign from './components/evm-sign';\nimport { EVMContextProvider } from './evmContextProvider';\n\nexport type EvmSignProps = {\n  method: string;\n  param: unknown;\n  loginAuthorizationSign?: boolean;\n};\n\nfunction Sign(props: EvmSignProps) {\n  const navigate = useCustomNavigate();\n\n  useEffect(() => {\n    syncUserInfo().catch((e) => console.log('syncUserInfo', e));\n    if (isNeedRestoreWallet()) {\n      navigate(AuthPage.MasterPasswordVerify);\n    }\n  }, []);\n\n  return (\n    <EVMContextProvider {...props}>\n      <EvmSign {...props} />\n    </EVMContextProvider>\n  );\n}\n\nexport default Sign;\n", "import { addHexPrefix, stripHexPrefix } from '@ethereumjs/util';\nimport { RecordType } from '@particle-network/analytics';\nimport {\n  EvmEnhancedMethod,\n  EvmRpcMethod,\n  TransactionSmartType,\n  analyticsRecord,\n  defaultTokenIcon,\n  getChainIcon,\n  isConnected,\n  syncUserInfo,\n  type EVMDeserializeTransactionResult,\n  type EVMFunction,\n  type EVMNFTChange,\n  type EVMTransaction,\n} from '@particle-network/auth-core';\nimport { Button, Image, Modal, Tabs } from 'antd';\nimport { BigNumber } from 'bignumber.js';\nimport BN from 'bn.js';\n//@ts-ignore\nimport jt from 'json-toy';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\nimport { type EvmSignProps } from '..';\nimport { getEVMPublicAddress } from '../../../api/getPublicAddress';\nimport { AuthError } from '../../../api/model/authError';\nimport { PromptSettingType } from '../../../api/model/bundle';\nimport { AuthPage } from '../../../components/customRouter';\nimport CircleClose from '../../../components/icon/circle-close';\nimport IconCopy from '../../../components/icon/icon-copy';\nimport ParticleLoading from '../../../components/loading';\nimport PowerFooter from '../../../components/power-footer';\nimport { useAuthCoreModal, useCustomNavigate, useEvents, useParticleAuth, useTranslation } from '../../../context';\nimport { useEthereum } from '../../../context/hooks';\nimport { useError } from '../../../context/hooks/useError';\nimport useMessage from '../../../context/hooks/useMessage';\nimport { usePaymentPassword } from '../../../context/hooks/usePaymentPassword';\nimport usePending from '../../../context/hooks/usePending';\nimport { AuthCoreModalEvent } from '../../../context/types';\nimport { formatAddress, getChainDisplayName, getNativeSymbol } from '../../../utils/chain-utils';\nimport { shortString } from '../../../utils/common-utils';\nimport { ethereumUtils } from '../../../utils/ethereumUtils';\nimport { formatTokenAmount2, fromSunFormat, fromWeiFormat } from '../../../utils/number-utils';\nimport { isEIP1559Type, isEVMAddress, isTron, parseTransaction } from '../../../utils/transaction-utils';\nimport { useEVMTransaction } from '../evmContextProvider';\nimport riskModalStyle from '../riskModal/index.less';\nimport RiskReminder from '../riskReminder';\nimport RiskTypography from '../riskTypography';\nimport NewErcTransfers from './NewErcTransfers';\nimport EvmGas from './evm-gas';\nimport GasDisplay from './gas-display';\nimport styles from './info-sign.less';\nimport Menu from './menu';\nimport NoGas from './no-gas';\n\nimport biconomy000 from '../../../common/images/smartAccount/biconomy-000-icon.png';\nimport biconomyfff from '../../../common/images/smartAccount/biconomy-fff-icon.png';\nimport btc000 from '../../../common/images/smartAccount/btc-000-icon.png';\nimport btcfff from '../../../common/images/smartAccount/btc-fff-icon.png';\nimport cyberconnect000 from '../../../common/images/smartAccount/cyberconnect-000-icon.png';\nimport cyberconnectfff from '../../../common/images/smartAccount/cyberconnect-fff-icon.png';\nimport light000 from '../../../common/images/smartAccount/light-000-icon.png';\nimport lightfff from '../../../common/images/smartAccount/light-fff-icon.png';\nimport simple000 from '../../../common/images/smartAccount/simple-000-icon.png';\nimport simplefff from '../../../common/images/smartAccount/simple-fff-icon.png';\nimport universal000 from '../../../common/images/smartAccount/universal-000-icon.png';\nimport universalfff from '../../../common/images/smartAccount/universal-fff-icon.png';\nimport xterio from '../../../common/images/smartAccount/xterio-icon.png';\nimport { isTelegramWebApp } from '../../../utils/isTelegramWebApp';\n\nenum RenderPageType {\n  SIGN_MESSAGE,\n  SEND_TX,\n  SIGN_TYPE_DATA,\n}\n\nexport const getAAIcon = (aaType: string, theme: string) => {\n  aaType = (aaType ?? 'biconomy')?.toLowerCase();\n  const aaIcons: Record<string, any> = {\n    biconomyfff,\n    biconomy000,\n    cyberconnectfff,\n    cyberconnect000,\n    simplefff,\n    simple000,\n    lightfff,\n    light000,\n    btcfff,\n    btc000,\n    universal000,\n    universalfff,\n    xterio000: xterio,\n    xteriofff: xterio,\n  };\n  const key = `${aaType}${theme === 'light' ? 'fff' : '000'}`;\n  return aaIcons[key] ?? aaIcons['biconomyfff'];\n};\n\nfunction EvmSign(props: EvmSignProps) {\n  const { method, param, loginAuthorizationSign } = props;\n\n  const { t } = useTranslation();\n  const message = useMessage();\n  const [loading, setLoading] = useState(false);\n\n  const [transactionInfo, setTransactionInfo] = useState<EVMDeserializeTransactionResult>();\n\n  const infoSignRef = useRef(null);\n\n  const [headerTitle, setHeaderTitle] = useState<string>('');\n  const { authCoreModal } = useAuthCoreModal();\n  const [headerDes, setHeaderDes] = useState<string>('');\n\n  const [gasVis, setGasVis] = useState<boolean>(false);\n\n  const navigate = useCustomNavigate();\n\n  const [renderPageType, setRenderPageType] = useState<RenderPageType | ''>('');\n\n  const [changeApproveAmount, setChangeApproveAmount] = useState<string>('');\n\n  const { errorHandle } = useError();\n\n  const { transactionData, gasError, setTransaction, updateTransaction, currentChain: chainInfo } = useEVMTransaction();\n\n  const [riskPrompt, setRiskPrompt] = useState(false);\n\n  const { events } = useEvents();\n\n  const [addressDisplayed, setAddressDisplayed] = useState<string>();\n\n  const { hasSetPaymentPassword, showSetPaymentPasswordOrConfirm } = usePaymentPassword();\n\n  const { setPaymentVerify, setPaymentPassword, userInfo, modalOptions } = useParticleAuth();\n\n  const { address } = useEthereum();\n\n  const { checkPending } = usePending();\n\n  const loadsecurityAccounts = () => {\n    syncUserInfo()\n      .then(() => {\n        approveSign();\n      })\n      .catch((error) => {\n        setLoading(false);\n        message.error(error.message ?? 'Sign Error');\n      });\n  };\n\n  const { TabPane } = Tabs;\n\n  const isPersonalSign = useMemo(\n    () => method === EvmRpcMethod.personalSign || method === EvmRpcMethod.personalSignUniq,\n    [method]\n  );\n\n  const redirectToApp = ({ error, result }: { error?: AuthError; result?: unknown }) => {\n    events.emit(AuthCoreModalEvent.SignResponse, {\n      result,\n      error,\n    });\n  };\n\n  useEffect(() => {\n    getEVMPublicAddress({\n      erc4337: modalOptions.erc4337,\n      chainId: chainInfo.id,\n      method: method as EvmRpcMethod,\n    })\n      .then((addr) => {\n        setAddressDisplayed(addr);\n      })\n      .catch((error) => {\n        console.error('get public address error', error);\n      });\n  }, [chainInfo.id, modalOptions.erc4337, method]);\n\n  useEffect(() => {\n    let renderPageType: RenderPageType | '' = '';\n    console.log(`evm sign method: ${method}, chainId: ${chainInfo.id}`);\n    if (isPersonalSign) {\n      //sign message\n      setHeaderTitle(t('sign.signature_message') as string);\n      setHeaderDes(t('sign.signature_title') as string);\n\n      renderPageType = RenderPageType.SIGN_MESSAGE;\n    } else if (method === EvmRpcMethod.ethSendTransaction) {\n      //send tx\n      setHeaderTitle(t('sign.send_transaction') as string);\n      setHeaderDes(t('sign.approve_and').format(getChainDisplayName(chainInfo)));\n      setTransactionData();\n      renderPageType = RenderPageType.SEND_TX;\n    } else if (method === EvmRpcMethod.ethSignTypedDataV4 || method === EvmRpcMethod.ethSignTypedDataV4Uniq) {\n      deserializeTypedData(JSON.stringify(param)).then((res) => {\n        if (res?.type === TransactionSmartType.SEAPORT_NFT_LISTING) {\n          setHeaderTitle(t('sign.send_transaction') as string);\n          setHeaderDes(t('sign.approve_and').format(getChainDisplayName(chainInfo)));\n          renderPageType = RenderPageType.SEND_TX;\n        } else {\n          renderPageType = RenderPageType.SIGN_TYPE_DATA;\n          setHeaderTitle(t('sign.sign_typed_data') as string);\n          setHeaderDes(t('sign.signature_title') as string);\n        }\n        setRenderPageType(renderPageType);\n      });\n    } else if (method.includes(EvmRpcMethod.ethSignTypedData)) {\n      //sign typed data\n      setHeaderTitle(t('sign.sign_typed_data') as string);\n      setHeaderDes(t('sign.signature_title') as string);\n      renderPageType = RenderPageType.SIGN_TYPE_DATA;\n    }\n\n    setRenderPageType(renderPageType);\n  }, [chainInfo, t]);\n\n  const setTransactionData = () => {\n    console.log('setTransactionData', param);\n    const txData = parseTransaction(param as any, chainInfo);\n    console.log('setTransactionData\uFF0C after parse', txData);\n    setTransaction(txData);\n    deserializeTransaction(txData);\n  };\n\n  const deserializeTypedData = async (jsonStr: string) => {\n    const result = await window.particleAuth?.ethereum\n      .request({\n        chainId: chainInfo.id,\n        method: EvmEnhancedMethod.deserializeTypedData,\n        params: [jsonStr],\n      })\n      .catch((error) => {\n        console.log('deserializeTypedData error', error);\n        message.error(error.message ?? 'deserializeTypedData Error');\n      });\n    setTransactionInfo(result);\n    return result;\n  };\n\n  const deserializeTransaction = async (txData: EVMTransaction) => {\n    if (!checkTxData(txData)) {\n      return;\n    }\n\n    const module = await import('@ethereumjs/tx');\n    const { TransactionFactory } = module.default || module;\n    const tx = TransactionFactory.fromTxData(txData);\n    window.particleAuth?.ethereum\n      .request({\n        chainId: chainInfo.id,\n        method: EvmEnhancedMethod.deserializeTransaction,\n        params: [address, addHexPrefix(tx.serialize().toString('hex'))],\n      })\n      .then((result) => {\n        setTransactionInfo(result);\n      })\n      .catch((error) => {\n        console.log('deserializeTransaction error', error);\n        Modal.error({\n          title: error.message ?? 'Deserialize Transaction Error',\n          wrapClassName: 'auth-core-modal-error',\n          getContainer: () => {\n            return authCoreModal.rootBody as HTMLElement;\n          },\n          okCancel: true,\n          cancelText: t('common.cancel'),\n          okText: t('common.retry'),\n          onOk: () => {\n            deserializeTransaction(txData);\n          },\n        });\n      });\n  };\n\n  const hasSecurityRisk = useMemo(() => {\n    return transactionInfo?.securityDetection && transactionInfo?.securityDetection.length > 0;\n  }, [transactionInfo?.securityDetection]);\n\n  const checkTxData = (txData: EVMTransaction): boolean => {\n    if (isTron(chainInfo)) {\n      if (!txData.from || !txData.to || !txData.value) {\n        Modal.error({\n          title: 'Transaction error, see doc for more info',\n          wrapClassName: 'auth-core-modal-error',\n          getContainer: () => {\n            return authCoreModal.rootBody as HTMLElement;\n          },\n          onOk: () => {\n            redirectToApp({\n              error: AuthError.paramsError(),\n            });\n          },\n        });\n        return false;\n      }\n\n      return true;\n    }\n    if (Number(txData.type) !== 0 && Number(txData.type) !== 1 && Number(txData.type) !== 2) {\n      Modal.error({\n        title: 'Transaction type error, see doc for more info',\n        wrapClassName: 'auth-core-modal-error',\n        getContainer: () => {\n          return authCoreModal.rootBody as HTMLElement;\n        },\n        onOk: () => {\n          redirectToApp({\n            error: AuthError.paramsError(),\n          });\n        },\n      });\n      return false;\n    } else if (isEIP1559Type(txData.type) && txData.maxFeePerGas && txData.maxPriorityFeePerGas) {\n      const maxFeePerGasBN = new BN(stripHexPrefix(txData.maxFeePerGas), 16);\n      const maxPriorityFeePerGasBN = new BN(stripHexPrefix(txData.maxPriorityFeePerGas), 16);\n      if (maxFeePerGasBN.lte(maxPriorityFeePerGasBN)) {\n        // maxFeePerGas cannot be less than maxPriorityFeePerGas\n        Modal.error({\n          title: 'maxFeePerGas cannot be less than maxPriorityFeePerGas.',\n          wrapClassName: 'auth-core-modal-error',\n          getContainer: () => {\n            return authCoreModal.rootBody as HTMLElement;\n          },\n          onOk: () => {\n            redirectToApp({\n              error: AuthError.feeError(),\n            });\n          },\n        });\n        return false;\n      }\n    }\n    return true;\n  };\n\n  const decodeMessage = (message: string): string => {\n    const msg = Buffer.from(stripHexPrefix(message), 'hex').toString('utf-8');\n    if (isPersonalSign) {\n      if (/\uFFFD/.test(msg)) {\n        return message;\n      }\n    }\n    return msg;\n  };\n\n  const formatFunction = (evmFunction: EVMFunction): string => {\n    if (evmFunction.params.length > 0) {\n      const p = evmFunction.params.map((item) => item.type).join(', ');\n      return `${evmFunction.name}(${p})`;\n    }\n    return `${evmFunction.name}()`;\n  };\n\n  const approveSign = async (pendingConfirm = false) => {\n    if (!isConnected()) {\n      redirectToApp({\n        error: AuthError.notLogin(),\n      });\n      return;\n    }\n\n    analyticsRecord({\n      // eslint-disable-next-line camelcase\n      record_type: RecordType.PAGE_SIGN_CONFIRM_BUTTON_CLICK, // confirm\u6309\u94AE\u70B9\u51FB\n    });\n\n    if (method === EvmRpcMethod.ethSendTransaction) {\n      if (await checkPending(approveSign, pendingConfirm)) {\n        return;\n      } else if (userInfo?.security_account?.has_set_payment_password) {\n        setPaymentVerify({\n          visible: true,\n          onVerifyCompleted: signTx,\n        });\n      } else {\n        showSetPaymentPasswordOrConfirm(signTx);\n      }\n    } else if (method.includes(EvmRpcMethod.ethSignTypedData) || isPersonalSign) {\n      if (userInfo?.security_account?.has_set_payment_password) {\n        setPaymentVerify({\n          visible: true,\n          onVerifyCompleted: signData,\n        });\n      } else {\n        if (\n          method.includes(EvmRpcMethod.ethSignTypedData) ||\n          modalOptions.promptSettingConfig?.promptPaymentPasswordSettingWhenSign === PromptSettingType.everyAndNotSkip\n        ) {\n          // method\u662Feth_signTypedData \u6216\u8005 \u5F3A\u5236\u8BBE\u7F6E\u652F\u4ED8\u5BC6\u7801\n          showSetPaymentPasswordOrConfirm(signData);\n        } else {\n          signData();\n        }\n      }\n    } else {\n      Modal.error({\n        title: `method ${method} not support`,\n        wrapClassName: 'auth-core-modal-error',\n        getContainer: () => {\n          return authCoreModal.rootBody as HTMLElement;\n        },\n      });\n    }\n  };\n\n  const signTx = async () => {\n    if (!transactionData) return;\n\n    setLoading(true);\n\n    const unsigned = JSON.stringify(transactionData);\n    console.log('unsigned tx:', unsigned);\n\n    let result;\n    try {\n      result = await window.particleAuth?.ethereum.sendTransaction({ ...transactionData });\n      analyticsRecord({\n        // eslint-disable-next-line camelcase\n        record_type: RecordType.PAGE_SIGN_CONFIRM_BUTTON_CLICK_SUCCESS, // confirm\u6210\u529F\n      });\n    } catch (error: any) {\n      console.error(method, error);\n      analyticsRecord({\n        // eslint-disable-next-line camelcase\n        record_type: RecordType.PAGE_SIGN_CONFIRM_BUTTON_CLICK_FAILURE, // confirm\u5931\u8D25\n      });\n      if (error?.error_code === 50103 && !userInfo?.security_account?.has_set_payment_password) {\n        loadsecurityAccounts();\n      } else if (error?.message === 'Local Key not found' || error?.message === 'Master password decryption error') {\n        navigate(AuthPage.MasterPasswordVerify);\n      } else {\n        Modal.error({\n          title: error.message ?? 'Send Transaction Error',\n          wrapClassName: 'auth-core-modal-error',\n          getContainer: () => {\n            return authCoreModal.rootBody as HTMLElement;\n          },\n          okText: t('common.confirm'),\n          onOk: () => {\n            redirectToApp({\n              error: error,\n            });\n          },\n        });\n      }\n    } finally {\n      setLoading(false);\n    }\n    if (result) {\n      redirectToApp({\n        result,\n      });\n    }\n  };\n\n  const signData = async () => {\n    setLoading(true);\n    let result;\n    try {\n      if (isPersonalSign) {\n        result = await window.particleAuth?.ethereum.signMessage(param as string);\n      } else {\n        result = await window.particleAuth?.ethereum.signTypedData({\n          data: param as any,\n          version: ethereumUtils.getSignTypedVersion(method),\n          uniq: ethereumUtils.isSignTypedDataUniq(method),\n        });\n      }\n      analyticsRecord({\n        // eslint-disable-next-line camelcase\n        record_type: RecordType.PAGE_SIGN_CONFIRM_BUTTON_CLICK_SUCCESS, // confirm\u6210\u529F\n      });\n    } catch (error: any) {\n      console.error(method, error);\n      analyticsRecord({\n        // eslint-disable-next-line camelcase\n        record_type: RecordType.PAGE_SIGN_CONFIRM_BUTTON_CLICK_FAILURE, // confirm\u5931\u8D25\n      });\n      if (error?.error_code === 50103 && !userInfo?.security_account?.has_set_payment_password) {\n        loadsecurityAccounts();\n      } else if (error?.message === 'Local Key not found' || error?.message === 'Master password decryption error') {\n        navigate(AuthPage.MasterPasswordVerify);\n      } else {\n        message.error(error.message ?? (isPersonalSign ? 'Sign Message Error' : 'Sign Typed Data Error'));\n      }\n    } finally {\n      setLoading(false);\n    }\n\n    if (result) {\n      if (loginAuthorizationSign) {\n        events.emit(AuthCoreModalEvent.LoginSuccess, {\n          ...userInfo,\n          authorization: {\n            message: param,\n            signature: result,\n          },\n        });\n      } else {\n        redirectToApp({\n          result,\n        });\n      }\n    }\n  };\n\n  const cancelSign = async () => {\n    if (loading) {\n      return;\n    }\n\n    if (loginAuthorizationSign) {\n      events.emit(AuthCoreModalEvent.LoginSuccess, userInfo);\n    } else {\n      //\u8FD4\u56DEapp\n      redirectToApp({\n        error: AuthError.userRejectedRequest(),\n      });\n    }\n  };\n\n  const formatValue = (data: any) => {\n    if (isEVMAddress(data.value)) {\n      return shortString(formatAddress(data.value, chainInfo));\n    }\n    return data.value;\n  };\n\n  const signMessageTitle = useMemo(() => {\n    let title = '';\n    if (method.includes(EvmRpcMethod.ethSignTypedData)) {\n      try {\n        const { primaryType } = param as any;\n        title = primaryType;\n      } catch (error) {\n        // pase error\n      }\n    }\n    return title || 'Message';\n  }, [method, param]);\n\n  const sMessage = useMemo(() => {\n    if (method.includes(EvmRpcMethod.ethSignTypedData)) {\n      try {\n        const signQueryMessage = param as any;\n        let { message } = signQueryMessage;\n\n        if (!signQueryMessage.message) {\n          message = signQueryMessage;\n        }\n\n        return message;\n      } catch (error) {\n        // pase error\n      }\n    }\n    return {};\n  }, [method, param]);\n\n  const getRow = (key: string, index: number) => {\n    key = key.replace('ROOT.', '');\n    let value = jt.getValByKeyPath(sMessage, key);\n    let isTitle = false;\n    if (typeof value !== 'string' && typeof value !== 'number') {\n      value = '';\n      isTitle = true;\n    }\n    const indent = key.split('.').length;\n\n    return (\n      <div key={index} className='s-row'>\n        <div\n          className='label'\n          style={{\n            paddingLeft: 20 * indent,\n          }}\n          data-type={isTitle ? 'title' : ''}\n        >\n          {key.split('.').pop()}\uFF1A\n        </div>\n\n        {isEVMAddress(value) ? (\n          <CopyToClipboard text={value} onCopy={() => message.success(t('new.copied_to'))}>\n            <div className='value copy-text'>{formatValue({ value })}</div>\n          </CopyToClipboard>\n        ) : (\n          <div\n            className='value'\n            onClick={(e) => {\n              e.stopPropagation();\n            }}\n          >\n            {value}\n          </div>\n        )}\n      </div>\n    );\n  };\n  // sign message\n  const signMessage = () => {\n    return (\n      <div className='sign-message'>\n        <div\n          className={'message' + (hasSetPaymentPassword ? '' : ' no-password-tip')}\n          data-transaction-type={transactionInfo?.type}\n        >\n          {!method.includes(EvmRpcMethod.ethSignTypedData) && (\n            <div className='pre-wrap personal-message'>{decodeMessage(param as string)}</div>\n          )}\n\n          {method.includes(EvmRpcMethod.ethSignTypedData) && (\n            <>\n              <div className='s-row'>\n                <div className='label' data-type='title'>\n                  {signMessageTitle}\n                </div>\n              </div>\n              {jt.travelJson(sMessage).map((key: string, index: number) => {\n                return getRow(key, index);\n              })}\n            </>\n          )}\n        </div>\n      </div>\n    );\n  };\n\n  const getNFTName = (info: EVMNFTChange): string => {\n    if (info.name && info.name.length > 0) {\n      return info.name;\n    }\n\n    return `NFT#${info.tokenId}`;\n  };\n\n  const approveDisabled = (data?: EVMTransaction): boolean => {\n    if (method === EvmRpcMethod.ethSendTransaction) {\n      if (!data) {\n        return true;\n      }\n\n      if (isTron(chainInfo)) {\n        return false;\n      }\n\n      if (isEIP1559Type(data.type)) {\n        return !data.gasLimit || !data.maxPriorityFeePerGas || !data.maxFeePerGas;\n      } else {\n        return !data.gasLimit || !data.gasPrice;\n      }\n    }\n    return false;\n  };\n  const [displayDetail, setDisplayDetail] = useState<boolean>(false);\n\n  const isErc4361 = useMemo(() => {\n    // https://eips.ethereum.org/EIPS/eip-4361#example-message\n    let result = false;\n    if (isPersonalSign) {\n      const signMessage = decodeMessage(param as string);\n      const domain = signMessage.match(/^(.+)?\\swants you/)?.[1];\n      const address = signMessage.match(/wants you to sign in with your Ethereum account:\\n(.*)/)?.[1];\n      const uri = signMessage.match(/URI:(.*)/)?.[1];\n      const version = signMessage.match(/Version:(.*)/)?.[1];\n      const chainId = signMessage.match(/Chain ID:(.*)/)?.[1];\n      const nonce = signMessage.match(/Nonce:(.*)/)?.[1];\n      if (domain && address && uri && version && chainId && nonce) {\n        result = true;\n      }\n    }\n    return result;\n  }, [transactionData, isPersonalSign]);\n\n  useEffect(() => {\n    if (isErc4361) {\n      setHeaderTitle(t('new.sign_in_request') as string);\n      setHeaderDes(t('new.requesting_sign_4361') as string);\n    }\n  }, [isErc4361]);\n\n  // sign/send transaction\n  const signTransaction = () => {\n    return (\n      <Tabs defaultActiveKey='1'>\n        <TabPane tab={t('sign.details')} key='1'>\n          <div className='balance-change'>\n            <div className='title'>{t('sign.estimated_balance_change')}</div>\n            <div className='change-body'>\n              {transactionInfo?.estimatedChanges?.natives\n                ?.filter((info) => info.address.toLowerCase() === address?.toLowerCase())\n                ?.map((info, index) => {\n                  return (\n                    <div className='change-title' key={`native-change-${index}`}>\n                      {getNativeSymbol(chainInfo)}\n                      <div className='change-val' style={info.nativeChange.includes('-') ? { color: '#ea4335' } : {}}>\n                        {info.nativeChange.includes('-') || info.nativeChange === '0' ? '' : '+'}\n                        {isTron(chainInfo)\n                          ? fromSunFormat(info.nativeChange)\n                          : fromWeiFormat(info.nativeChange, 'ether', 18)}\n                      </div>\n                    </div>\n                  );\n                })}\n\n              {transactionInfo?.estimatedChanges?.nfts?.map((info, index) => {\n                return (\n                  <div className='change-title' key={`nft-change-${index}`}>\n                    {getNFTName(info)}\n                    <div className='change-val' style={info.amountChange < 0 ? { color: '#ea4335' } : {}}>\n                      {info.amountChange < 0 ? '' : '+'}\n                      {info.amountChange}\n                    </div>\n                  </div>\n                );\n              })}\n\n              {transactionInfo?.estimatedChanges?.tokens?.map((info, index) => {\n                return (\n                  <div className='change-title' key={`token-change-${index}`}>\n                    {info.name ? info.name : 'Unknown Token'}\n                    <div className='change-val' style={info.amountChange < 0 ? { color: '#ea4335' } : {}}>\n                      {info.amountChange < 0 ? '' : '+'}\n                      {formatTokenAmount2(info.amountChange, info.decimals)}\n                    </div>\n                  </div>\n                );\n              })}\n            </div>\n          </div>\n\n          {transactionInfo && (\n            <div className='from-to'>\n              <div className='address-item'>\n                <div>{t('sign.from')}</div>\n                <div>{shortString(formatAddress(transactionInfo.data.from, chainInfo))}</div>\n              </div>\n              <div className='address-item mt10'>\n                <div>{t('sign.to')}</div>\n                <div>{shortString(formatAddress(transactionInfo.data.to, chainInfo))}</div>\n              </div>\n              {!isTron(chainInfo) && (\n                <div className='address-item mt10'>\n                  <div>{t('sign.nonce')}</div>\n                  <div>#{parseInt(transactionInfo.data.nonce)}</div>\n                </div>\n              )}\n            </div>\n          )}\n\n          {!gasError && transactionData && !isTron(chainInfo) && (\n            <GasDisplay\n              openGasDrawer={() => setGasVis(true)}\n              signLoading={loading}\n              chainInfo={chainInfo}\n              signMethod={method}\n            />\n          )}\n\n          {gasError && !isTron(chainInfo) && <NoGas />}\n        </TabPane>\n        <TabPane tab={t('sign.data')} key='2'>\n          <div>\n            {transactionInfo && transactionInfo.data.function && (\n              <div className='inner-instruction' key={'instruction-function'}>\n                <div className='inner-content'>\n                  <div className='content-item'>\n                    <div className='item'>\n                      <div className='item-0'>\n                        {t('sign.function_type')} {formatFunction(transactionInfo.data.function)}\n                      </div>\n\n                      {transactionInfo.data.function.params.map((item) => (\n                        <div className='item-1 mt10' key={`instruction-function${item.name}`}>\n                          {shortString(item.name)}\n                          <span>{shortString(item.value)}</span>\n                        </div>\n                      ))}\n                    </div>\n                  </div>\n                </div>\n              </div>\n            )}\n\n            {/* hex data */}\n\n            {transactionInfo && (\n              <div className='inner-instruction' key={'instruction-hex-data'}>\n                <div className='inner-content'>\n                  <div className='content-item'>\n                    <div className='item'>\n                      <div className='item-0'>{t('sign.hex_data')}</div>\n                      <div className='item-1 mt10'>\n                        <div className='data'>{transactionInfo.data.data}</div>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            )}\n          </div>\n        </TabPane>\n      </Tabs>\n    );\n  };\n\n  const editApproveAmount = async (amount: string) => {\n    setChangeApproveAmount(amount);\n\n    if (amount && amount !== '' && transactionInfo) {\n      const { decimals = 18 } = transactionInfo?.estimatedChanges?.tokens?.[0] || {};\n\n      BigNumber.config({ EXPONENTIAL_AT: [-256, 256] });\n      const bn = new BigNumber(amount).multipliedBy(new BigNumber(10).pow(decimals));\n      const approveAmount = bn.toString();\n      BigNumber.config({ EXPONENTIAL_AT: [-7, 21] });\n\n      const spender = transactionInfo.data?.function?.params?.[0]?.value || '';\n\n      const encodeData = await window.particleAuth?.ethereum.request({\n        chainId: chainInfo.id,\n        method: 'particle_abi_encodeFunctionCall',\n        params: [transactionInfo.data.to, 'erc20_approve', [spender, approveAmount]],\n      });\n\n      updateTransaction({\n        data: encodeData,\n      });\n    }\n  };\n\n  return (\n    <>\n      <style>{styles as unknown as string}</style>\n      {transactionInfo?.type ||\n      renderPageType === RenderPageType.SIGN_TYPE_DATA ||\n      renderPageType === RenderPageType.SIGN_MESSAGE ? (\n        <div\n          className={`info-sign info-sign-${transactionInfo?.type}`}\n          data-type={transactionInfo?.type}\n          ref={infoSignRef}\n        >\n          {!hasSetPaymentPassword && (\n            <div className='has-payment-password' data-telegram={isTelegramWebApp()}>\n              <div className='has-payment-password-icon'></div>\n              <div className='has-payment-password-tip'>{t('account.waring_tip1')}</div>\n              <div className='has-payment-password-set' onClick={setPaymentPassword}>\n                {t('account.set')}\n              </div>\n            </div>\n          )}\n          <div className={'scroll-part' + (hasSetPaymentPassword ? '' : ' no-password-tip')}>\n            <Menu userInfo={userInfo} transactionInfo={transactionInfo} />\n            <div className='info-request'>\n              {modalOptions.erc4337 && method !== EvmRpcMethod.ethSendTransaction && (\n                // <div className=\"aa-tag\">AA</div>\n                <div className='aa-icon'>\n                  <Image\n                    src={getAAIcon(\n                      ((modalOptions.erc4337 as any)?.name ?? 'BICONOMY').toLowerCase(),\n                      modalOptions.themeType || 'light'\n                    )}\n                    fallback={defaultTokenIcon}\n                    preview={false}\n                  />\n                </div>\n              )}\n              {headerTitle}\n            </div>\n            <div className='info-title'>\n              <Image src={getChainIcon(chainInfo)} fallback={defaultTokenIcon} preview={false} />\n              {getChainDisplayName(chainInfo)}\n            </div>\n            <CopyToClipboard text={addressDisplayed || ''} onCopy={() => message.success(t('new.copied_to'))}>\n              <div className='info-address'>\n                {shortString(addressDisplayed)}\n                <div className='copy-icon'>\n                  <IconCopy />\n                </div>\n              </div>\n            </CopyToClipboard>\n            <div className='info-des'>{headerDes}</div>\n            <div className='apart-line'></div>\n            {transactionInfo?.type === TransactionSmartType.NativeTransfer ||\n            transactionInfo?.type === TransactionSmartType.ERC20_TRANSFER ||\n            transactionInfo?.type === TransactionSmartType.ERC20_APPROVE ||\n            transactionInfo?.type === TransactionSmartType.ERC721_TRANFER ||\n            transactionInfo?.type === TransactionSmartType.ERC1155_TRANFER ||\n            transactionInfo?.type === TransactionSmartType.SEAPORT_CANCEL_ORDER ||\n            transactionInfo?.type === TransactionSmartType.SEAPORT_FULFILL_ORDER ||\n            transactionInfo?.type === TransactionSmartType.SEAPORT_NFT_LISTING ? (\n              <NewErcTransfers\n                setDisplayDetail={setDisplayDetail}\n                displayDetail={displayDetail}\n                gasError={gasError}\n                setGasVis={setGasVis}\n                formatFunction={formatFunction}\n                transactionInfo={transactionInfo}\n                changeApproveAmount={changeApproveAmount}\n                setChangeApproveAmount={editApproveAmount}\n                signLoading={loading}\n                signMessage={signMessage}\n                chainInfo={chainInfo}\n                signMethod={method}\n              />\n            ) : method === EvmRpcMethod.ethSendTransaction ? (\n              signTransaction()\n            ) : method !== EvmRpcMethod.ethSendTransaction ? (\n              signMessage()\n            ) : (\n              ''\n            )}\n          </div>\n\n          <div className='btn-box'>\n            <div>\n              <Button className='btn-cancel' onClick={cancelSign}>\n                {t('common.cancel')}\n              </Button>\n              <Button\n                className={`btn-approve ${gasError || hasSecurityRisk ? 'still-confirm' : ''}`}\n                onClick={() => {\n                  if (hasSecurityRisk) {\n                    setRiskPrompt(true);\n                  } else {\n                    approveSign();\n                  }\n                }}\n                loading={loading}\n                disabled={approveDisabled(transactionData)}\n              >\n                {isErc4361\n                  ? t('new.sign_in')\n                  : gasError || hasSecurityRisk\n                  ? t('common.still_confirm')\n                  : t('common.confirm')}\n              </Button>\n            </div>\n\n            <PowerFooter></PowerFooter>\n          </div>\n\n          {hasSecurityRisk && transactionInfo?.securityDetection && (\n            <>\n              <RiskReminder securityDetection={transactionInfo?.securityDetection}></RiskReminder>\n              <Modal\n                className='risk-modal'\n                open={riskPrompt}\n                closeIcon={<CircleClose />}\n                centered\n                maskClosable={false}\n                onCancel={() => {\n                  setRiskPrompt(false);\n                }}\n                getContainer={() => {\n                  return authCoreModal.rootBody as HTMLDivElement;\n                }}\n              >\n                <style>{riskModalStyle as unknown as string}</style>\n                <div className='risk-modal-title'>{t('sign.risk_hint_title')}</div>\n                <RiskTypography\n                  className='risk-modal-content'\n                  securityDetection={transactionInfo?.securityDetection}\n                  title={t('sign.risk_identified') as string}\n                />\n                <div className='risk-bottom-btn-box'>\n                  <Button\n                    className='primary-antd-btn secondary'\n                    onClick={() => {\n                      setRiskPrompt(false);\n                    }}\n                  >\n                    {t('common.cancel')}\n                  </Button>\n                  <Button\n                    className='primary-antd-btn danger'\n                    onClick={() => {\n                      approveSign();\n                      setRiskPrompt(false);\n                    }}\n                  >\n                    {t('common.confirm')}\n                  </Button>\n                </div>\n              </Modal>\n            </>\n          )}\n\n          <EvmGas openGasDrawer={() => setGasVis(false)} visible={gasVis} />\n        </div>\n      ) : (\n        <ParticleLoading />\n      )}\n    </>\n  );\n}\n\nexport default EvmSign;\n", "import { Button, Modal } from 'antd';\nimport React from 'react';\nimport { useAuthCoreModal } from '..';\nimport { useTranslation } from '../../context';\nimport { useEVMTransaction } from '../../pages/sign/evmContextProvider';\nimport { useAuthCore } from './useAuthCore';\nimport { useEthereum } from './useEthereum';\n\nconst usePending = () => {\n  const { t } = useTranslation();\n  const { transactionData, fetchPendingTransactions } = useEVMTransaction();\n\n  const { address } = useEthereum();\n  const { openWallet } = useAuthCore();\n  const { authCoreModal } = useAuthCoreModal();\n\n  const pendingModalRef = React.useRef<any>();\n\n  const { authCoreModalClose } = useAuthCoreModal();\n\n  const checkPending = async (approveSign: any, pendingConfirm: boolean) => {\n    let pendingTransactions = [];\n\n    if (\n      transactionData &&\n      transactionData.action !== 'cancel' &&\n      transactionData.action !== 'speedup' &&\n      !pendingConfirm\n    ) {\n      pendingTransactions = await fetchPendingTransactions(address as string);\n    }\n\n    if (\n      transactionData &&\n      transactionData.action !== 'cancel' &&\n      transactionData.action !== 'speedup' &&\n      !pendingConfirm &&\n      (pendingTransactions?.length >= 3 ||\n        !!pendingTransactions.find((item: any) => {\n          const now = new Date().getTime();\n          const timestamp = new Date(item.timestamp * 1000).getTime();\n          return now - timestamp > 30 * 60 * 1000;\n        }))\n    ) {\n      // \u5F53\u8BE5\u5730\u5740\u6709\u8D85\u8FC73\u7B14\u4EA4\u6613\u6B63\u5728Pending\u6216\u4E00\u7B14\u4EA4\u6613timestamp\u8D85\u8FC730\u5206\u949F\u672A\u5B8C\u6210\u65F6\uFF0C\u7528\u6237\u518D\u6B21\u786E\u8BA4\u4EA4\u6613\u65F6\u5C06\u5F39\u51FA\u6B64\u5F39\u7A97\n      console.log('pendingTransactions', pendingTransactions);\n\n      pendingModalRef.current = Modal.warning({\n        className: 'pending-warning-modal  auth-core-modal-warning',\n        content: (\n          <div className='content-wrap'>\n            <div className='content'>{t('new.transaction_pending_v2')}</div>\n            <div className='footer-btns'>\n              <Button\n                className='cancel-btn continue-btn'\n                disabled={pendingTransactions?.length >= 10}\n                type='default'\n                onClick={() => {\n                  approveSign(true);\n                  pendingModalRef.current.destroy();\n                }}\n              >\n                {t('new.continue')}\n              </Button>\n              <Button\n                className='process-now-btn'\n                type='primary'\n                onClick={() => {\n                  // \u53D6\u6D88\u7B7E\u540D\uFF0C\u8DF3\u8F6C\u5230wallet\n                  console.log('>>>', '\u53D6\u6D88\u7B7E\u540D\uFF0C\u8DF3\u8F6C\u5230wallet');\n\n                  pendingModalRef.current.destroy();\n                  authCoreModalClose();\n\n                  setTimeout(() => {\n                    openWallet({\n                      pathName: '/tokenDetail.html',\n                      windowSize: 'small',\n                      query: {\n                        tokenAddress: 'native',\n                        pageMode: 'Simple',\n                      },\n                      topMenuType: 'close',\n                    });\n                    // \u5982\u679C\u4E0D\u8BBE\u7F6E\u5EF6\u8FDF\uFF0C\u4F1A\u51FA\u73B0\u6253\u5F00\u9A6C\u4E0A\u88AB\u5173\u95ED\u7684\u60C5\u51B5 wwl\n                  }, 300);\n                }}\n              >\n                {t('new.process_now')}\n              </Button>\n            </div>\n          </div>\n        ),\n        closable: true,\n        maskClosable: false,\n        getContainer: () => {\n          return (authCoreModal.rootBody as HTMLElement).querySelector('.info-sign') as HTMLElement;\n        },\n      });\n      return true;\n    }\n\n    return false;\n  };\n\n  return {\n    checkPending,\n  };\n};\n\nexport default usePending;\n", "import { intToHex } from '@ethereumjs/util';\nimport {\n  EvmEnhancedMethod,\n  EvmRpcMethod,\n  GasFeeMode,\n  getEVMChainInfoById,\n  type EVMTransaction,\n  type GasFee,\n  type GasFeeResult,\n  type TokenPrice,\n  type TotalAmount,\n  type TransactionData,\n  type TxData,\n} from '@particle-network/auth-core';\nimport { useSetState } from 'ahooks';\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react';\nimport type { Chain as ViemChain } from 'viem/chains';\nimport { mainnet } from 'viem/chains';\nimport { useModalOptions } from '../../context';\nimport { useEthereum } from '../../context/hooks';\nimport useMessage from '../../context/hooks/useMessage';\nimport { bnToHex } from '../../utils/common-utils';\nimport { ethereumUtils } from '../../utils/ethereumUtils';\nimport { toWei } from '../../utils/number-utils';\nimport { isEIP1559Type } from '../../utils/transaction-utils';\n\ninterface EVMState {\n  setTransaction: (tx: EVMTransaction) => void;\n  transactionData?: EVMTransaction;\n  updateTransaction: (tx: Partial<TransactionData>) => void;\n  gasFeeMode?: GasFeeMode;\n  setGasFeeMode: (mode: GasFeeMode) => void;\n  fetchGasAsync: (params: { addresses: string[]; from: string; to?: string; value?: string; data?: string }) => void;\n  gasFeeDisplay?: GasFee;\n  totalAmountDisplay?: TotalAmount;\n  tokenPrice?: TokenPrice[];\n  gasError?: { code: number; message: string };\n  gasFeeResult?: GasFeeResult;\n  latestGasLimit?: string;\n  currentChain: ViemChain;\n  fetchPendingTransactions: (account: string) => Promise<any[]>;\n}\n\nconst defaultData: EVMState = {\n  setTransaction: () => {},\n  updateTransaction: () => {},\n  setGasFeeMode: () => {},\n  fetchGasAsync: () => {},\n  currentChain: mainnet,\n  fetchPendingTransactions: () => Promise.resolve([]),\n};\n\nexport const EVMContext = createContext<EVMState>(defaultData);\n\nexport const EVMContextProvider = (props: { method: string; param: unknown; children: React.ReactNode }) => {\n  const { modalOptions } = useModalOptions();\n  const [evmTransaction, setEVMTransaction] = useSetState<EVMTransaction>({ from: '' });\n  const [latestGasLimit, setLatestGasLimit] = useState<string>();\n  const [tokenPrice, setTokenProce] = useState<TokenPrice[]>();\n  const [feeMode, setFeeMode] = useState<GasFeeMode>(GasFeeMode.custom);\n  const [gasError, setGasError] = useState<{ code: number; message: string }>();\n  const [gasFeeResult, setGasFeeResult] = useState<GasFeeResult>();\n  const [gasFeeDisplay, setGasFeeDisplay] = useState<GasFee>();\n  const [totalAmountDisplay, setTotalAmountDisplay] = useState<TotalAmount>();\n  const message = useMessage();\n  const { chainInfo } = useEthereum();\n\n  const getTxChain = () => {\n    if (props.method === EvmRpcMethod.ethSendTransaction && (props.param as TxData).chainId) {\n      const chainId = (props.param as TxData).chainId;\n      const chain = getEVMChainInfoById(Number(chainId));\n      return chain ?? chainInfo;\n    } else {\n      return chainInfo;\n    }\n  };\n  //\u4EA4\u6613\u8FC7\u7A0B\u4E2D\u5982\u679C\u5207\u6362\u4E86\u7F51\u7EDC\uFF0C\u4E0D\u5F71\u54CD\u5F53\u524D\u4EA4\u6613\n  const [currentChain] = useState<ViemChain>(getTxChain());\n\n  const updateTransaction = (data: Partial<TransactionData>) => {\n    if (evmTransaction) {\n      if (data.maxFeePerGas) {\n        setEVMTransaction({ maxFeePerGas: data.maxFeePerGas });\n      }\n\n      if (data.maxPriorityFeePerGas) {\n        setEVMTransaction({ maxPriorityFeePerGas: data.maxPriorityFeePerGas });\n      }\n\n      if (data.gasLimit) {\n        setEVMTransaction({ gasLimit: data.gasLimit });\n      }\n\n      if (data.gasPrice) {\n        setEVMTransaction({ gasPrice: data.gasPrice });\n      }\n\n      if (data.data) {\n        setEVMTransaction({ data: data.data });\n      }\n    }\n  };\n\n  useEffect(() => {\n    if (evmTransaction && gasFeeResult) {\n      const params = {\n        gasLimit: evmTransaction.gasLimit || '0x0',\n        baseFee: bnToHex(toWei(gasFeeResult.baseFee, 'gwei')),\n        maxFeePerGas: evmTransaction.maxFeePerGas,\n        maxPriorityFeePerGas: evmTransaction.maxPriorityFeePerGas,\n        gasPrice: evmTransaction.gasPrice,\n      };\n      const gasFeeDisplay = ethereumUtils.gasFee(params);\n      setGasFeeDisplay(gasFeeDisplay);\n\n      const totalAmountDisplay = ethereumUtils.totalAmount({\n        value: evmTransaction.value,\n        gasLimit: evmTransaction.gasLimit || '0x0',\n        baseFee: bnToHex(toWei(gasFeeResult.baseFee, 'gwei')),\n        maxFeePerGas: evmTransaction.maxFeePerGas,\n        maxPriorityFeePerGas: evmTransaction.maxPriorityFeePerGas,\n        gasPrice: evmTransaction.gasPrice,\n      });\n      setTotalAmountDisplay(totalAmountDisplay);\n    }\n  }, [evmTransaction, gasFeeResult]);\n\n  const setTransaction = (transaction: EVMTransaction) => {\n    setEVMTransaction(transaction);\n    if (transaction.gasLevel) {\n      setFeeMode(transaction.gasLevel as GasFeeMode);\n      console.log('update gas fee mode', transaction.gasLevel);\n    } else {\n      setFeeMode(GasFeeMode.custom);\n      console.log('update gas fee mode (default)', GasFeeMode.custom);\n    }\n  };\n\n  const setGasFeeMode = (gasFeeMode: GasFeeMode) => {\n    setFeeMode(gasFeeMode);\n    console.log('update gas fee mode (setGasFeeMode)', gasFeeMode);\n    if (evmTransaction && gasFeeResult && gasFeeMode !== GasFeeMode.custom) {\n      if (isEIP1559Type(evmTransaction.type)) {\n        setEVMTransaction({\n          maxFeePerGas: bnToHex(toWei(gasFeeResult[gasFeeMode].maxFeePerGas, 'gwei')),\n          maxPriorityFeePerGas: bnToHex(toWei(gasFeeResult[gasFeeMode].maxPriorityFeePerGas, 'gwei')),\n        });\n      } else {\n        setEVMTransaction({\n          gasPrice: bnToHex(toWei(gasFeeResult[gasFeeMode].maxFeePerGas, 'gwei')),\n        });\n      }\n    }\n  };\n\n  const fetchGasAsync = (params: { addresses: string[]; from: string; to?: string; value?: string; data?: string }) => {\n    fetchGas(params)\n      .then(({ gasFee, prices, gasLimit }) => {\n        setGasFeeResult(gasFee);\n        setTokenProce(prices);\n        let gasLimitValue: string;\n        if (typeof gasLimit === 'string') {\n          gasLimitValue = gasLimit;\n          setLatestGasLimit(gasLimit);\n          setGasError(undefined);\n        } else {\n          if (!latestGasLimit) {\n            gasLimitValue = intToHex(50000);\n            setLatestGasLimit(gasLimitValue);\n            setGasError({\n              message: gasLimit.message,\n              code: -32000,\n            });\n          } else {\n            gasLimitValue = latestGasLimit;\n          }\n        }\n\n        if (evmTransaction) {\n          if (isEIP1559Type(evmTransaction.type)) {\n            //eip 1559\n            if (feeMode && feeMode !== GasFeeMode.custom) {\n              evmTransaction.maxFeePerGas = bnToHex(toWei(gasFee[feeMode].maxFeePerGas, 'gwei'));\n              evmTransaction.maxPriorityFeePerGas = bnToHex(toWei(gasFee[feeMode].maxPriorityFeePerGas, 'gwei'));\n            } else if (!evmTransaction.maxFeePerGas || !evmTransaction.maxPriorityFeePerGas) {\n              evmTransaction.maxFeePerGas = bnToHex(toWei(gasFee.medium.maxFeePerGas, 'gwei'));\n              evmTransaction.maxPriorityFeePerGas = bnToHex(toWei(gasFee.medium.maxPriorityFeePerGas, 'gwei'));\n              if (!evmTransaction.gasLimit) {\n                setFeeMode(GasFeeMode.medium);\n                console.log('update gas fee mode (fulfilled)', GasFeeMode.medium);\n              }\n            }\n          } else {\n            if (feeMode && feeMode !== GasFeeMode.custom) {\n              evmTransaction.gasPrice = bnToHex(toWei(gasFee[feeMode].maxFeePerGas, 'gwei'));\n            } else if (!evmTransaction.gasPrice) {\n              evmTransaction.gasPrice = bnToHex(toWei(gasFee.medium.maxFeePerGas, 'gwei'));\n              if (!evmTransaction.gasLimit) {\n                setFeeMode(GasFeeMode.medium);\n                console.log('update gas fee mode (fulfilled)', GasFeeMode.medium);\n              }\n            }\n          }\n\n          if (\n            !evmTransaction.gasLimit ||\n            feeMode !== GasFeeMode.custom ||\n            Number(evmTransaction.gasLimit) < Number(gasLimitValue)\n          ) {\n            evmTransaction.gasLimit = gasLimitValue;\n            console.log('update gasLimit(state.value):', gasLimitValue);\n          }\n          setEVMTransaction(evmTransaction);\n        }\n      })\n      .catch((error) => {\n        if (error?.message) {\n          message.error(error?.message.replace('code:-32000,', ''));\n        }\n      });\n  };\n\n  const fetchSuggestedGasFee = useCallback(async (): Promise<GasFeeResult> => {\n    const result = await window.particleAuth?.ethereum.request({\n      chainId: currentChain.id,\n      method: EvmEnhancedMethod.suggestedGasFees,\n    });\n    return result;\n  }, [currentChain]);\n\n  const fetchPendingTransactions = useCallback(\n    async (account: string): Promise<any[]> => {\n      const result = await window.particleAuth?.ethereum.request({\n        chainId: currentChain.id,\n        method: EvmEnhancedMethod.getPendingTransactionsByAddress,\n        params: [account],\n      });\n      return result;\n    },\n    [currentChain]\n  );\n\n  const fetchPrice = useCallback(\n    async (addresses: string[]): Promise<TokenPrice[]> => {\n      const result = await window.particleAuth?.ethereum.request({\n        chainId: currentChain.id,\n        method: EvmEnhancedMethod.getPrice,\n        params: [addresses, [modalOptions.fiatCoin?.toLowerCase() || 'usd']],\n      });\n      return result;\n    },\n    [modalOptions.fiatCoin, currentChain]\n  );\n\n  const fetchEstimateGas = useCallback(\n    async (param: { from: string; to?: string; value?: string; data?: string }): Promise<string | Error> => {\n      if (!param.to || param.to.length === 0) {\n        delete param.to;\n      }\n      try {\n        const result = await window.particleAuth?.ethereum.request({\n          chainId: currentChain.id,\n          method: 'eth_estimateGas',\n          params: [param],\n        });\n        return result;\n      } catch (error: unknown) {\n        return error as Error;\n      }\n    },\n    [currentChain]\n  );\n\n  const fetchGas = useCallback(\n    async ({\n      addresses,\n      from,\n      to,\n      value,\n      data,\n    }: {\n      addresses: string[];\n      from: string;\n      to?: string;\n      value?: string;\n      data?: string;\n    }) => {\n      try {\n        const result = await Promise.all([\n          fetchSuggestedGasFee(),\n          fetchPrice(addresses),\n          fetchEstimateGas({\n            from,\n            to,\n            value,\n            data,\n          }),\n        ]);\n        // The value we return becomes the `fulfilled` action payload\n        return {\n          gasFee: result[0],\n          prices: result[1],\n          gasLimit: result[2],\n        };\n      } catch (error: any) {\n        if (error.code && error.message) {\n          return Promise.reject({\n            message: 'code:' + error.code + ', ' + error.message.toString(),\n          });\n        } else {\n          return Promise.reject(error);\n        }\n      }\n    },\n    [fetchSuggestedGasFee, fetchPrice, fetchEstimateGas]\n  );\n\n  return (\n    <EVMContext.Provider\n      value={{\n        setTransaction,\n        updateTransaction,\n        setGasFeeMode,\n        fetchGasAsync,\n        fetchPendingTransactions,\n        transactionData: evmTransaction,\n        gasFeeDisplay,\n        totalAmountDisplay,\n        tokenPrice,\n        gasError,\n        gasFeeMode: feeMode,\n        gasFeeResult,\n        latestGasLimit,\n        currentChain,\n      }}\n    >\n      {props.children}\n    </EVMContext.Provider>\n  );\n};\n\nexport const useEVMTransaction = () => useContext(EVMContext);\n", "import {\n  EvmRpcMethod,\n  SignTypedDataVersion,\n  type GasFee,\n  type PrefixedHexString,\n  type TotalAmount,\n} from '@particle-network/auth-core';\nimport { BigNumber } from 'bignumber.js';\nimport { fromWeiFormat } from './number-utils';\n\nexport const ethereumUtils = {\n  gasFee({\n    gasLimit,\n    baseFee,\n    maxFeePerGas,\n    maxPriorityFeePerGas,\n    gasPrice,\n  }: {\n    gasLimit: PrefixedHexString | number;\n    baseFee: PrefixedHexString | number;\n    maxFeePerGas?: PrefixedHexString | number;\n    maxPriorityFeePerGas?: PrefixedHexString | number;\n    gasPrice?: PrefixedHexString | number;\n  }): GasFee {\n    if (maxFeePerGas && maxPriorityFeePerGas && baseFee && gasLimit) {\n      //eip 1559\n      const fee = new BigNumber(maxPriorityFeePerGas)\n        .plus(new BigNumber(baseFee))\n        .multipliedBy(new BigNumber(gasLimit));\n\n      const maxFee = new BigNumber(maxFeePerGas).plus(new BigNumber(baseFee)).multipliedBy(new BigNumber(gasLimit));\n      return {\n        fee: fromWeiFormat(fee.toFixed()),\n        maxFee: fromWeiFormat(maxFee.toFixed()),\n      };\n    } else if (gasPrice) {\n      const fee = new BigNumber(gasPrice).multipliedBy(new BigNumber(gasLimit));\n      return {\n        maxFee: fromWeiFormat(fee.toFixed()),\n      };\n    }\n    return {\n      maxFee: '',\n    };\n  },\n\n  totalAmount({\n    value,\n    gasLimit,\n    baseFee,\n    maxFeePerGas,\n    maxPriorityFeePerGas,\n    gasPrice,\n  }: {\n    value?: PrefixedHexString | number;\n    gasLimit: PrefixedHexString | number;\n    baseFee: PrefixedHexString | number;\n    maxFeePerGas?: PrefixedHexString | number;\n    maxPriorityFeePerGas?: PrefixedHexString | number;\n    gasPrice?: PrefixedHexString | number;\n  }): TotalAmount {\n    if (!value) {\n      value = '0x0';\n    }\n    if (maxFeePerGas && maxPriorityFeePerGas) {\n      //eip 1559\n      const fee = new BigNumber(maxPriorityFeePerGas)\n        .plus(new BigNumber(baseFee))\n        .multipliedBy(new BigNumber(gasLimit));\n\n      const maxFee = new BigNumber(maxFeePerGas).plus(new BigNumber(baseFee)).multipliedBy(new BigNumber(gasLimit));\n      return {\n        amount: fromWeiFormat(new BigNumber(value).plus(fee).toString()),\n        maxAmount: fromWeiFormat(new BigNumber(value).plus(maxFee).toString()),\n      };\n    } else if (gasPrice) {\n      const fee = new BigNumber(gasPrice).multipliedBy(new BigNumber(gasLimit));\n      return {\n        maxAmount: fromWeiFormat(new BigNumber(value).plus(fee).toString()),\n      };\n    }\n    return {\n      maxAmount: '',\n    };\n  },\n\n  getSignTypedVersion(method: string): SignTypedDataVersion {\n    if (method === EvmRpcMethod.ethSignTypedData || method === EvmRpcMethod.ethSignTypedDataV1) {\n      return SignTypedDataVersion.V1;\n    } else if (method === EvmRpcMethod.ethSignTypedDataV3) {\n      return SignTypedDataVersion.V3;\n    } else {\n      return SignTypedDataVersion.V4;\n    }\n  },\n\n  isSignTypedDataUniq(method: string): boolean {\n    return method.includes('uniq');\n  },\n};\n", "import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { type SecurityDetection } from '@particle-network/auth-core';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from '../../../context';\nimport RiskTypography from '../riskTypography';\nimport styles from './index.less';\n\ninterface Prop {\n  securityDetection: SecurityDetection[];\n}\n\nconst RiskReminder = (prop: Prop) => {\n  const { securityDetection } = prop;\n\n  const { t } = useTranslation();\n\n  const [fold, setFold] = useState(false);\n\n  const toggleFold = () => {\n    setFold(!fold);\n  };\n\n  useEffect(() => {\n    const doc = document.documentElement;\n    doc.style.setProperty('--risk-bar-height', '36px');\n    return () => {\n      doc.style.setProperty('--risk-bar-height', '0px');\n    };\n  }, []);\n\n  return (\n    <div className='risk-reminder'>\n      <style>{styles as unknown as string}</style>\n      <div className='risk-header' onClick={toggleFold}>\n        <div className='risk-red-dot'></div>\n        <div className='risk-found'>{t('sign.risk_found')}</div>\n        {fold ? <UpOutlined className='btn-risk-fold' /> : <DownOutlined className='btn-risk-fold' />}\n      </div>\n      <RiskTypography\n        className={fold ? 'hide' : ''}\n        securityDetection={securityDetection}\n        title={t('sign.risk_hint_title') as string}\n      />\n    </div>\n  );\n};\n\nexport default RiskReminder;\n", "import { type SecurityDetection } from '@particle-network/auth-core';\nimport { Tree } from 'antd';\nimport type { DataNode } from 'antd/es/tree';\nimport React, { useMemo } from 'react';\nimport { useTranslation } from '../../../context';\nimport styles from './index.less';\n\ninterface Prop {\n  securityDetection: SecurityDetection[];\n  className?: string;\n  title?: string;\n}\n\nconst RiskTypography = (prop: Prop) => {\n  const { securityDetection, title } = prop;\n  const { t } = useTranslation();\n\n  const treeData = useMemo<DataNode[]>(() => {\n    const warningsTypes = securityDetection.filter((item) => item.warnings && item.warnings.length > 0);\n    const risksTypes = securityDetection.filter((item) => item.risks && item.risks.length > 0);\n\n    const data: DataNode[] = [];\n    if (risksTypes.length > 0) {\n      data.push({\n        title: t('sign.security_risk'),\n        key: '0-1',\n        icon: <div className='risk-icon danger'></div>,\n        children: risksTypes.map((item) => {\n          return {\n            title: t(`risk.${item.type}`),\n            key: item.type,\n            icon: <div className='risk-dot danger'></div>,\n            children: item.risks?.map((risk) => {\n              return {\n                title: t(`risk.${risk}`),\n                key: risk,\n                icon: <div className='risk-dot danger'></div>,\n              };\n            }),\n          };\n        }),\n      });\n    }\n\n    if (warningsTypes.length > 0) {\n      data.push({\n        title: t('sign.transaction_may_fail'),\n        key: '0-0',\n        icon: <div className='risk-icon warning'></div>,\n        children: warningsTypes.map((item) => {\n          return {\n            title: t(`risk.${item.type}`),\n            key: item.type,\n            icon: <div className='risk-dot warning'></div>,\n            children: item.warnings?.map((warning) => {\n              return {\n                title: t(`risk.${warning}`),\n                key: warning,\n                icon: <div className='risk-dot warning'></div>,\n              };\n            }),\n          };\n        }),\n      });\n    }\n\n    return data;\n  }, [securityDetection, t]);\n\n  return (\n    <>\n      <style>{styles as unknown as string}</style>\n      <div className={`risk-typography ${prop?.className}`}>\n        {title && <div className='risk-typography-title'>{title}</div>}\n        <Tree rootClassName='risk-tree' showIcon defaultExpandAll treeData={treeData} selectable={false} />\n      </div>\n    </>\n  );\n};\n\nexport default RiskTypography;\n", "import {\n  defaultTokenIcon,\n  EvmEnhancedMethod,\n  TransactionSmartType,\n  type EVMDeserializeTransactionResult,\n  type EVMFunction,\n  type EVMNFTChange,\n  type TokenPrice,\n} from '@particle-network/auth-core';\nimport { Form, Image, Input, Modal } from 'antd';\nimport { BigNumber } from 'bignumber.js';\nimport dayjs from 'dayjs';\nimport numbro from 'numbro';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { Chain as ViemChain } from 'viem/chains';\nimport type { AuthError } from '../../../api/model/authError';\nimport IconEditPen from '../../../components/icon-edit-pen';\nimport IconTo from '../../../components/icon-to';\nimport CircleClose from '../../../components/icon/circle-close';\nimport SVGIcon from '../../../components/icon/svg-icon';\nimport { useAuthCoreModal, useParticleAuth, useTranslation } from '../../../context';\nimport { formatAddress, formatPng, getNativeSymbol, getNativeTokenIcon } from '../../../utils/chain-utils';\nimport { isNullish, shortString } from '../../../utils/common-utils';\nimport { ipfsToSrc } from '../../../utils/index';\nimport { formatPrice } from '../../../utils/number-utils';\nimport { isTron } from '../../../utils/transaction-utils';\nimport { useEVMTransaction } from '../evmContextProvider';\nimport GasDisplay from './gas-display';\nimport NoGas from './no-gas';\nconst trimDecimals = (value: string, decimals = 10) => {\n  let [integerPart, decimalPart] = value.split('.');\n  if (decimalPart && decimalPart.length > decimals) {\n    decimalPart = decimalPart.slice(0, decimals + 1).slice(0, -1);\n  }\n  return `${integerPart}.${decimalPart ?? ''}`.replace(/0+$/, '').replace(/\\.$/, '');\n};\n\ninterface Props {\n  displayDetail: boolean;\n  gasError: AuthError | undefined;\n  setGasVis: React.Dispatch<React.SetStateAction<boolean>>;\n  formatFunction: (evmFunction: EVMFunction) => string;\n  setDisplayDetail: React.Dispatch<React.SetStateAction<boolean>>;\n  transactionInfo: EVMDeserializeTransactionResult | undefined;\n  changeApproveAmount: string;\n  setChangeApproveAmount: (amount: string) => Promise<void>;\n  signLoading: boolean;\n  signMessage: () => JSX.Element;\n  chainInfo: ViemChain;\n  signMethod: string;\n}\n\nconst NewErcTransfers = (props: Props) => {\n  const { t } = useTranslation();\n  const {\n    transactionInfo,\n    setDisplayDetail,\n    displayDetail,\n    gasError,\n    setGasVis,\n    formatFunction,\n    changeApproveAmount,\n    setChangeApproveAmount,\n    signLoading,\n    chainInfo,\n    signMethod,\n  } = props;\n\n  // const transaction = useAppSelector(selectTransaction);\n  const { transactionData, gasFeeDisplay, tokenPrice: nativeTokenPrice } = useEVMTransaction();\n  const [visibleModal, setVisibleModal] = useState<boolean>(false);\n  const [tokenPrice, setTokenPrice] = useState<number | undefined>(undefined);\n  const [editApproveAmountForm] = Form.useForm();\n\n  const { authCoreModal } = useAuthCoreModal();\n  const [changeApproveAmountLoading, setChangeApproveAmountLoading] = useState(false);\n  const { modalOptions } = useParticleAuth();\n\n  // to address\n  const to = useMemo(() => {\n    const params = transactionInfo?.data?.function?.params;\n    if (transactionInfo?.type == TransactionSmartType.ERC20_TRANSFER) {\n      return params ? (params[params.length === 3 ? 1 : 0].value as string) : '';\n    } else if (transactionInfo?.type == TransactionSmartType.ERC20_APPROVE) {\n      return params ? (params[0].value as string) : '';\n    } else if (transactionInfo?.type == TransactionSmartType.NativeTransfer) {\n      return transactionInfo.data.to;\n    } else if (\n      transactionInfo?.type == TransactionSmartType.ERC721_TRANFER ||\n      transactionInfo?.type == TransactionSmartType.ERC1155_TRANFER\n    ) {\n      return params ? (params[1].value as string) : '';\n    } else if (\n      transactionInfo?.type === TransactionSmartType.SEAPORT_CANCEL_ORDER ||\n      transactionInfo?.type === TransactionSmartType.SEAPORT_FULFILL_ORDER\n    ) {\n      return transactionInfo.data.to;\n    } else {\n      return '';\n    }\n  }, [transactionInfo?.data?.function?.params, transactionInfo?.data?.to]);\n\n  const contractAddress = useMemo(() => {\n    if (transactionInfo?.estimatedChanges?.tokens?.[0]?.address) {\n      return transactionInfo.estimatedChanges.tokens[0].address;\n    } else {\n      return '';\n    }\n  }, [transactionInfo?.estimatedChanges]);\n\n  const {\n    tokenIcon = '',\n    tokenSymbol = '',\n    tokenDecimals = 18,\n  } = useMemo(() => {\n    let tokenIcon = '';\n    let tokenSymbol = '';\n    let tokenDecimals = 18;\n    if (\n      transactionInfo?.type == TransactionSmartType.ERC20_TRANSFER ||\n      transactionInfo?.type == TransactionSmartType.ERC20_APPROVE\n    ) {\n      tokenIcon = transactionInfo?.estimatedChanges?.tokens[0].image;\n      tokenSymbol = transactionInfo?.estimatedChanges?.tokens[0].symbol;\n      tokenDecimals = transactionInfo?.estimatedChanges?.tokens[0].decimals;\n      if (!tokenIcon) {\n        tokenIcon = defaultTokenIcon;\n      }\n    } else if (transactionInfo?.type == TransactionSmartType.NativeTransfer) {\n      tokenIcon = getNativeTokenIcon(chainInfo);\n      tokenSymbol = chainInfo?.nativeCurrency?.symbol || '';\n    }\n\n    return {\n      tokenIcon: formatPng(tokenIcon),\n      tokenSymbol,\n      tokenDecimals,\n    };\n  }, [transactionInfo?.estimatedChanges?.tokens, chainInfo]);\n\n  // \u6839\u636E\u5408\u7EA6\u5730\u5740 \u83B7\u53D6\u5408\u7EA6token\u7684price  setTokenPrice(tokenPrice);\n  useEffect(() => {\n    let addresses: string[] | undefined = undefined;\n    if (\n      contractAddress &&\n      (transactionInfo?.type == TransactionSmartType.ERC20_APPROVE ||\n        transactionInfo?.type == TransactionSmartType.ERC20_TRANSFER)\n    ) {\n      addresses = [contractAddress];\n    } else if (transactionInfo?.type == TransactionSmartType.NativeTransfer) {\n      addresses = ['native'];\n    }\n\n    if (addresses) {\n      window.particleAuth?.ethereum\n        .request({\n          chainId: chainInfo.id,\n          method: EvmEnhancedMethod.getPrice,\n          params: [addresses, [modalOptions.fiatCoin?.toLowerCase() || 'usd']],\n        })\n        .then((res: TokenPrice[]) => {\n          const tokenPrice =\n            res.find((item) => item.address.toLowerCase() === addresses?.[0].toLowerCase())?.currencies?.[0]?.price ||\n            0;\n          setTokenPrice(tokenPrice);\n        })\n        .catch((err) => {\n          console.log('window.particleAuth?.ethereum', err);\n        });\n    }\n  }, [contractAddress]);\n\n  const amountChange = useMemo(() => {\n    let value = '';\n    const { decimals = 18, amountChange = 0 } = transactionInfo?.estimatedChanges?.tokens?.[0] || {};\n    if (transactionInfo?.type == TransactionSmartType.ERC20_APPROVE) {\n      const amount = transactionInfo.data?.function?.params?.[1]?.value as string;\n      value = new BigNumber(amount).dividedBy(new BigNumber(10).pow(decimals)).toString();\n    } else if (transactionInfo?.type == TransactionSmartType.ERC20_TRANSFER) {\n      value = new BigNumber(amountChange).dividedBy(new BigNumber(10).pow(decimals)).toString();\n    } else if (transactionInfo?.type == TransactionSmartType.NativeTransfer) {\n      const { nativeChange } = transactionInfo.estimatedChanges.natives[0];\n      value = new BigNumber(nativeChange)\n        .dividedBy(new BigNumber(10).pow(chainInfo.nativeCurrency.decimals))\n        .toString();\n    } else if (\n      transactionInfo?.type == TransactionSmartType.ERC721_TRANFER ||\n      transactionInfo?.type === TransactionSmartType.SEAPORT_FULFILL_ORDER ||\n      transactionInfo?.type === TransactionSmartType.SEAPORT_CANCEL_ORDER ||\n      transactionInfo?.type == TransactionSmartType.ERC1155_TRANFER\n    ) {\n      value = transactionInfo.estimatedChanges?.nfts?.[0]?.amountChange?.toString();\n    }\n    return value || '';\n  }, [transactionInfo?.estimatedChanges?.tokens]);\n\n  const amountChangeUSD = useMemo(() => {\n    if (amountChange && tokenPrice) {\n      return formatPrice({\n        amount: amountChange,\n        price: tokenPrice,\n        fiatCoin: modalOptions.fiatCoin ?? 'USD',\n      });\n    } else {\n      return '';\n    }\n  }, [amountChange, tokenPrice]);\n\n  const formartApproveAmount = (value: BigNumber): string => {\n    const amount = value.toString();\n    if (amount.length < 10) {\n      return amount;\n    } else {\n      return value.toPrecision(10);\n    }\n  };\n\n  const formatAmountChange = useMemo(() => {\n    let value = changeApproveAmount || amountChange || '0';\n    if (transactionInfo?.type === TransactionSmartType.ERC20_APPROVE) {\n      value = formartApproveAmount(new BigNumber(value));\n    } else {\n      value = numbro(value).format({\n        thousandSeparated: true,\n        trimMantissa: true,\n        mantissa: 9,\n      });\n    }\n    return value || '0';\n  }, [transactionInfo?.type, amountChange, changeApproveAmount]);\n\n  const amountFontSize = useMemo(() => {\n    let fontSize = 22;\n    const len = (formatAmountChange?.length || 0) + (tokenSymbol?.length || 0);\n    if (len > 26) {\n      fontSize = 14;\n    } else if (len > 22) {\n      fontSize = 16;\n    } else if (len > 18) {\n      fontSize = 18;\n    }\n    return `${fontSize}px`;\n  }, [formatAmountChange, tokenSymbol]);\n\n  const nftData: EVMNFTChange | undefined = useMemo(() => {\n    return transactionInfo?.estimatedChanges?.nfts?.[0] || transactionInfo?.data?.offer?.[0];\n  }, [transactionInfo?.estimatedChanges?.nfts, transactionInfo?.data?.offer]);\n\n  const contentTitle: string = useMemo(() => {\n    if (transactionInfo?.type === TransactionSmartType.ERC20_APPROVE) {\n      return t('new.token_per');\n    } else if (transactionInfo?.type === TransactionSmartType.SEAPORT_FULFILL_ORDER) {\n      return t('new.buy_nft');\n    } else if (transactionInfo?.type === TransactionSmartType.SEAPORT_CANCEL_ORDER) {\n      return t('new.cancel_nft_listing');\n    } else if (transactionInfo?.type === TransactionSmartType.SEAPORT_NFT_LISTING) {\n      return t('new.nft_listing');\n    } else {\n      return t('new.confirmation');\n    }\n  }, [transactionInfo?.type, t]);\n\n  const hexData = useMemo(() => {\n    return transactionInfo?.data?.data || '';\n  }, [transactionInfo?.data?.data]);\n\n  /**\n   * toTag\n   */\n  const contractTag = useMemo(() => {\n    if (\n      (transactionInfo?.type === TransactionSmartType.SEAPORT_FULFILL_ORDER ||\n        transactionInfo?.type === TransactionSmartType.SEAPORT_CANCEL_ORDER) &&\n      transactionInfo?.toTag\n    ) {\n      return ` (${transactionInfo?.toTag})`;\n    } else {\n      return '';\n    }\n  }, [transactionInfo?.type]);\n\n  const nftName = useMemo(() => {\n    if (nftData) {\n      if (nftData.name && nftData.name.length > 0) {\n        return nftData.name;\n      } else {\n        return `NFT#${nftData.tokenId}`;\n      }\n    }\n    return 'NFT';\n  }, [nftData]);\n\n  /**\n   * \u4EA4\u6613nonce\n   */\n  const nonce = useMemo(() => {\n    if (transactionInfo?.data?.nonce && !isTron(chainInfo)) {\n      return `#${parseInt(transactionInfo?.data?.nonce as string)}`;\n    } else {\n      return '';\n    }\n  }, [chainInfo, transactionInfo?.data?.nonce]);\n\n  /**\n   * NFT \u7C7B\u578B\n   */\n  const nftType = useMemo((): 'ERC1155' | 'ERC721' | '' => {\n    return transactionInfo?.estimatedChanges?.nfts?.[0]?.isSemiFungible === true\n      ? 'ERC1155'\n      : transactionInfo?.estimatedChanges?.nfts?.[0]?.isSemiFungible === false\n      ? 'ERC721'\n      : '';\n  }, [transactionInfo?.type, nftData?.isSemiFungible]);\n\n  /**\n   * nft \u4E0A\u67B6 \u6570\u91CF\n   */\n  const NFTListingQuantity = useMemo(() => {\n    return nftData?.amount || '';\n  }, [nftData]);\n\n  /**\n   * nft \u4EF7\u683C\n   */\n  const nftPrice = useMemo(() => {\n    const { symbol, decimals, amount } = transactionInfo?.price || {};\n    if (transactionInfo?.type === TransactionSmartType.SEAPORT_FULFILL_ORDER && symbol && decimals && amount) {\n      const price = new BigNumber(amount).dividedBy(new BigNumber(10).pow(decimals));\n      return `${trimDecimals(price.toString(10))} ${symbol}`;\n    } else {\n      return '';\n    }\n  }, [transactionInfo?.type, transactionInfo?.price]);\n\n  const NFTListingData = useMemo(() => {\n    if (transactionInfo?.type === TransactionSmartType.SEAPORT_NFT_LISTING) {\n      const seller = `${shortString(formatAddress(transactionInfo?.data?.offerer || '', chainInfo))}(${t('new.you')})`;\n      const symbol = transactionInfo?.data?.consideration?.[0]?.symbol || '';\n      let price = '';\n      let sellerEarnings = '';\n      let others = '';\n      const selfAddress = transactionInfo?.data?.offerer || '';\n      const startMS = Number(transactionInfo?.data?.startTime || 0) * 1000;\n      const startTime = dayjs(new Date(startMS)).format('MM/DD/YYYY hh:mm A');\n      let endTime = '';\n      if (transactionInfo?.data?.endTime && transactionInfo?.data?.endTime?.length > 10) {\n        // \u65E0\u9650\n        endTime = t('new.infinite');\n      } else {\n        const endMS = Number(transactionInfo?.data?.endTime || 0) * 1000;\n        endTime = dayjs(new Date(endMS)).format('MM/DD/YYYY hh:mm A');\n      }\n      if (transactionInfo?.data?.consideration) {\n        const list = transactionInfo?.data?.consideration;\n        let result = new BigNumber(0);\n        for (let i = 0; i < list.length; i++) {\n          const item = list[i];\n          result = result.plus(new BigNumber(item.amount));\n          const amount = `${trimDecimals(\n            new BigNumber(item.amount).dividedBy(new BigNumber(10).pow(list?.[0]?.decimals ?? 18)).toString(10)\n          )} ${symbol}`;\n          if (item.recipient.toLowerCase() === selfAddress.toLowerCase()) {\n            sellerEarnings = amount;\n          } else {\n            others = amount;\n          }\n        }\n        result = result.dividedBy(new BigNumber(10).pow(list?.[0]?.decimals ?? 18));\n        price = `${trimDecimals(result.toString(10))} ${symbol}`;\n      }\n      return {\n        seller,\n        price,\n        sellerEarnings,\n        others,\n        startTime,\n        endTime,\n      };\n    } else {\n      return {};\n    }\n  }, [transactionInfo, t]);\n\n  return (\n    <div className='transfer-content'>\n      {transactionInfo && (\n        <div className='less-box'>\n          <div className='groups'>\n            <div className='item item1'>\n              <div className='flex-sp-row row1'>\n                <div className='left'>{contentTitle}</div>\n                {nonce && <div className='right'>{nonce}</div>}\n              </div>\n              {/* ERC20_TRANSFER or NativeTransfer*/}\n              {(transactionInfo?.type === TransactionSmartType.ERC20_TRANSFER ||\n                transactionInfo?.type === TransactionSmartType.NativeTransfer) && (\n                <div className='flex-sp-row row2' data-feed-line={`${formatAmountChange}`.length > 13 ? true : false}>\n                  <div className='left'>\n                    <div className='icon'>\n                      {!!tokenIcon && (\n                        <Image className='icon' src={tokenIcon} fallback={defaultTokenIcon} preview={false} />\n                      )}\n                    </div>\n                  </div>\n                  <div className='right'>\n                    <div className='amount'>\n                      <div\n                        className='change-val'\n                        style={{\n                          color: formatAmountChange?.includes?.('-') ? '#ea4335' : 'var(--text-color)',\n                          fontSize: amountFontSize,\n                        }}\n                      >\n                        {formatAmountChange}\n                      </div>\n                      <div\n                        className='symbol'\n                        style={{\n                          fontSize: amountFontSize,\n                        }}\n                      >\n                        {tokenSymbol}\n                      </div>\n                    </div>\n                    <div className='amount-usd'>{amountChangeUSD}</div>\n                  </div>\n                </div>\n              )}\n              {/* ERC20_APPROVE */}\n              {transactionInfo?.type === TransactionSmartType.ERC20_APPROVE && (\n                <div className='row-erc20-approve-content'>\n                  <div className='flex-sp-row row-ac1'>\n                    <img className='token-icon' src={tokenIcon} alt='' />\n                    <div className='amount'>\n                      {formatAmountChange}&nbsp;{tokenSymbol}\n                    </div>\n                  </div>\n                  <div\n                    className='flex-sp-row row-ac2'\n                    onClick={() => {\n                      const amount = new BigNumber(changeApproveAmount || amountChange);\n                      editApproveAmountForm.setFieldsValue({\n                        amount: formartApproveAmount(amount),\n                      });\n                      setVisibleModal(true);\n                    }}\n                  >\n                    <div>{t('new.edit_approve')}</div>\n                    <div className='icon'>\n                      <IconEditPen />\n                    </div>\n                  </div>\n                  <div className='flex-sp-row row-ac3'>{t('new.by_granting')}</div>\n                </div>\n              )}\n              {/* ERC1155_TRANFER || ERC721_TRANFER || SEAPORT_FULFILL_ORDER || SEAPORT_CANCEL_ORDER*/}\n              {(transactionInfo?.type === TransactionSmartType.ERC1155_TRANFER ||\n                transactionInfo?.type === TransactionSmartType.SEAPORT_FULFILL_ORDER ||\n                transactionInfo?.type === TransactionSmartType.SEAPORT_CANCEL_ORDER ||\n                transactionInfo?.type === TransactionSmartType.SEAPORT_NFT_LISTING ||\n                transactionInfo?.type === TransactionSmartType.ERC721_TRANFER) && (\n                <>\n                  <div className='flex-sp-row row3'>\n                    <div className='left'>\n                      <Image\n                        width={32}\n                        height={32}\n                        src={ipfsToSrc(nftData?.image || '')}\n                        fallback={require('../../../common/images/default_nft.png').default}\n                        preview={false}\n                        // preview={{\n                        //     getContainer: () => {\n                        //         return authCoreModal.rootBody as HTMLElement;\n                        //     },\n                        // }}\n                      />\n                    </div>\n                    <div className='right'>\n                      <div className='name'>{nftName}</div>\n                    </div>\n                  </div>\n                  <div className='flex-sp-row row4'>{nftType}</div>\n                  {transactionInfo?.type === TransactionSmartType.SEAPORT_NFT_LISTING && NFTListingQuantity && (\n                    <div className='flex-sp-row row5'>\n                      <div className='left'>{t('new.amount')}</div>\n                      <div className='right'>{NFTListingQuantity}</div>\n                    </div>\n                  )}\n                  {nftPrice && (\n                    <div className='flex-sp-row row6'>\n                      <div className='left'>{t('new.nft_price')}</div>\n                      <div className='right'>{nftPrice}</div>\n                    </div>\n                  )}\n                </>\n              )}\n            </div>\n\n            {/* ERC1155_TRANFER */}\n            {transactionInfo?.type === TransactionSmartType.ERC1155_TRANFER && (\n              <div className='item item2-0'>\n                <div className='flex-sp-row'>\n                  <div className='left'>{t('new.amount')}</div>\n                  <div className='right'>\n                    {isNullish(nftData?.amountChange) ? t('program.unknown') : Math.abs(nftData?.amountChange || 1)}\n                  </div>\n                </div>\n              </div>\n            )}\n\n            {transactionInfo?.type !== TransactionSmartType.SEAPORT_NFT_LISTING && (\n              <div className='item item2'>\n                <div className='flex-sp-row'>\n                  <div className='left'>\n                    <div className='pn-row pn-row1'>\n                      {t('new.from')} ({t('new.you')})\n                    </div>\n                    <div className='pn-row pn-row2'>\n                      {shortString(formatAddress(transactionInfo.data.from, chainInfo))}\n                    </div>\n                  </div>\n                  <div className='middle'>\n                    <div className='icon'>\n                      <IconTo />\n                    </div>\n                  </div>\n                  <div className='right'>\n                    <div className='pn-row pn-row1'>\n                      {t('new.to')}\n                      {contractTag}\n                    </div>\n                    {/* <div className=\"pn-row pn-row2\">{shortString(transactionInfo.data.to)}</div> */}\n                    <div className='pn-row pn-row2'>{shortString(formatAddress(to, chainInfo))}</div>\n                  </div>\n                </div>\n              </div>\n            )}\n\n            {!isTron(chainInfo) && transactionInfo?.type !== TransactionSmartType.SEAPORT_NFT_LISTING && (\n              <div className='item item4'>\n                <div className='flex-sp-row'>\n                  <div className='left'>{t('new.network_fee')}</div>\n                  {gasError ? (\n                    <div className='gas-warning'>\n                      <img alt='' src={require('../../../common/images/no_warning.png').default} />\n                      <span>{t('sign.gas_fee_cannot')}</span>\n                    </div>\n                  ) : (\n                    <div className='right'>\n                      <div className='pn-row pn-row1'>\n                        {gasFeeDisplay?.maxFee} {getNativeSymbol(chainInfo)}\n                      </div>\n                      <div className='pn-row pn-row2'>\n                        {formatPrice({\n                          amount: gasFeeDisplay?.maxFee || '',\n                          price: nativeTokenPrice?.[0]?.currencies?.[0]?.price || 0,\n                          mantissa: 4,\n                          fiatCoin: modalOptions.fiatCoin ?? 'USD',\n                        })}\n                      </div>\n                    </div>\n                  )}\n                </div>\n              </div>\n            )}\n            {transactionInfo?.type === TransactionSmartType.SEAPORT_NFT_LISTING && (\n              <div className='item item5'>\n                <div className='flex-sp-row'>\n                  <div className='left'>{t('new.seller')}</div>\n                  <div className='right'>{NFTListingData.seller}</div>\n                </div>\n                <div className='flex-sp-row'>\n                  <div className='left'>{t('new.price')}</div>\n                  <div className='right'>{NFTListingData.price}</div>\n                </div>\n                <div className='flex-sp-row price-sub'>\n                  <div className='left'>{t('new.seller_earnings')}</div>\n                  <div className='right'>{NFTListingData.sellerEarnings}</div>\n                </div>\n                <div className='flex-sp-row price-sub'>\n                  <div className='left'>{t('new.others')}</div>\n                  <div className='right'>{NFTListingData.others}</div>\n                </div>\n                <div className='flex-sp-row'>\n                  <div className='left'>{t('new.start_time')}</div>\n                  <div className='right'>{NFTListingData.startTime}</div>\n                </div>\n                <div className='flex-sp-row'>\n                  <div className='left'>{t('new.end_time')}</div>\n                  <div className='right'>{NFTListingData.endTime}</div>\n                </div>\n              </div>\n            )}\n          </div>\n        </div>\n      )}\n      <div className='fold-content'>\n        <div\n          className='wrap'\n          onClick={() => {\n            setDisplayDetail(!displayDetail);\n          }}\n        >\n          {displayDetail ? (\n            <div className='fold' key='less'>\n              <span>{t('new.less')}</span>\n              <SVGIcon className='arrow-icon' name='arrow_icon' />\n            </div>\n          ) : (\n            <div className='unfold' key='more'>\n              <span>{t('new.details')}</span>\n              <SVGIcon className='arrow-icon' name='arrow_icon' />\n            </div>\n          )}\n        </div>\n      </div>\n      <div\n        className='details-box'\n        style={{\n          display: displayDetail ? '' : 'none',\n        }}\n      >\n        {!gasError && !isTron(chainInfo) && transactionData && (\n          <GasDisplay\n            openGasDrawer={() => setGasVis(true)}\n            signLoading={signLoading}\n            chainInfo={chainInfo}\n            signMethod={signMethod}\n          />\n        )}\n        {gasError && !isTron(chainInfo) && <NoGas />}\n        <div className='mg-bottom-15'></div>\n        <div>\n          {/* function */}\n          {transactionInfo && transactionInfo.data.function && (\n            <div className='inner-instruction' key={'instruction-function'}>\n              <div className='inner-content'>\n                <div className='content-item'>\n                  <div className='item'>\n                    <div className='item-0'>\n                      {t('sign.function_type')} {formatFunction(transactionInfo.data.function)}\n                    </div>\n\n                    {transactionInfo.data.function.params.map((item) => (\n                      <div className='item-1 mt10' key={`instruction-function${item.name}`}>\n                        {shortString(item.name)}\n                        <span>{shortString(item.value)}</span>\n                      </div>\n                    ))}\n                  </div>\n                </div>\n              </div>\n            </div>\n          )}\n          {/* hex data */}\n          {hexData && (\n            <div className='inner-instruction' key={'instruction-hex-data'}>\n              <div className='inner-content'>\n                <div className='content-item'>\n                  <div className='item'>\n                    <div className='item-0'>{t('sign.hex_data')}</div>\n                    <div className='item-1 mt10'>\n                      <div className='data'>{hexData}</div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          )}\n          {/* signMessage */}\n          {transactionInfo?.type === TransactionSmartType.SEAPORT_NFT_LISTING &&\n            !!props.signMessage &&\n            props.signMessage()}\n        </div>\n      </div>\n      <Modal\n        title={t('new.edit_approve')}\n        open={visibleModal}\n        centered={true}\n        wrapClassName='edit-approve-amount-modal'\n        okText={t('common.confirm')}\n        confirmLoading={changeApproveAmountLoading}\n        closeIcon={<CircleClose />}\n        onOk={() => {\n          setChangeApproveAmountLoading(true);\n          editApproveAmountForm\n            .validateFields()\n            .then((values) => {\n              const amount = values?.amount?.replace?.(/\\.+$/g, '') || '';\n              if (amount) {\n                return setChangeApproveAmount(amount);\n              }\n            })\n            .then(() => {\n              setChangeApproveAmountLoading(false);\n              setVisibleModal(false);\n            })\n            .catch((error) => {\n              setChangeApproveAmountLoading(false);\n              console.log('editApproveAmountForm', error);\n            });\n        }}\n        onCancel={() => {\n          setChangeApproveAmountLoading(false);\n          setVisibleModal(false);\n        }}\n        getContainer={() => {\n          return authCoreModal.rootBody as HTMLDivElement;\n        }}\n      >\n        <Form form={editApproveAmountForm} autoComplete='off'>\n          <Form.Item\n            label=''\n            name='amount'\n            rules={[\n              {\n                validator: (_, value) => {\n                  if (isNaN((value || '').replace(/\\.$/, '')) || !isFinite((value || '').replace(/\\.$/, ''))) {\n                    return Promise.reject(t('new.please_enter'));\n                  }\n                  if (!value || (value && new BigNumber(value).lte(new BigNumber(0)))) {\n                    return Promise.reject(t('new.the_amount'));\n                  }\n                  const amount = value?.replace?.(/\\.+$/g, '') || '';\n                  const bn = new BigNumber(amount);\n                  if ((bn.decimalPlaces() ?? 0) > tokenDecimals) {\n                    return Promise.reject(t('new.please_enter'));\n                  }\n                  return Promise.resolve();\n                },\n              },\n            ]}\n          >\n            <Input placeholder={t('new.please_enter') as string} />\n          </Form.Item>\n          <div className='icon'>\n            <img src={tokenIcon} alt='' />\n          </div>\n          <div className='symbol'>{tokenSymbol}</div>\n        </Form>\n      </Modal>\n    </div>\n  );\n};\n\nexport default NewErcTransfers;\n", "import React from 'react';\n\nconst IconEditPen = () => {\n  return (\n    <svg width={10.577} height={10.492} viewBox='0 0 10.577 10.492'>\n      <defs>\n        <style>\n          {\n            '.cls-1{fill:currentColor;stroke-width:0.2px}.cls-1,.cls-2{stroke:currentColor}.cls-2{fill:none;stroke-width:0.8px}'\n          }\n        </style>\n      </defs>\n      <g id='\u7EC4_120' transform='translate(-869.458 -38.834)'>\n        <path\n          id='Fill_583'\n          className='cls-1'\n          d='M2.337 10.292H.356A.356.356 0 0 1 0 9.936V7.955a1.29 1.29 0 0 1 .385-.924L7.033.382a1.3 1.3 0 0 1 1.843 0l1.035 1.031a1.311 1.311 0 0 1 0 1.847L3.262 9.909a1.306 1.306 0 0 1-.925.383Zm3.718-7.926L.888 7.534a.583.583 0 0 0-.176.421V9.58h1.625a.612.612 0 0 0 .423-.174l5.166-5.169-1.871-1.871Zm1.9-1.654a.583.583 0 0 0-.418.173l-.978.976 1.87 1.872.978-.976a.6.6 0 0 0 0-.84L8.373.886a.582.582 0 0 0-.418-.174Z'\n          transform='translate(869.558 38.934)'\n        />\n\n        <path id='\u8DEF\u5F84_2122' className='cls-2' d='m0 0 2.389 2.389' transform='translate(870.102 46.23)' />\n      </g>\n    </svg>\n  );\n};\nexport default React.memo(IconEditPen);\n", "import React from 'react';\n\nconst IconTo = ({ width = '34.2', height = '12.632', ...other }) => {\n  return (\n    <svg\n      xmlns='http://www.w3.org/2000/svg'\n      fill='none'\n      version='1.1'\n      width='36'\n      height='36'\n      viewBox='0 0 36 36'\n      {...other}\n    >\n      <g>\n        <g transform='matrix(0,-1,1,0,-36,36)'>\n          <ellipse cx='18' cy='54' rx='18' ry='18' fill='currentColor' fillOpacity='0.08' />\n        </g>\n        <g>\n          <g transform='matrix(0,1,-1,0,39.271209716796875,-15.271026611328125)'>\n            <path\n              d='M34.0711181640625,13.066761552734375L38.0711181640625,18.400091552734374C38.565518164062496,19.059331552734374,38.0951181640625,20.000091552734375,37.2711181640625,20.000091552734375L29.2711181640625,20.000091552734375C28.4470681640625,20.000091552734375,27.9766911640625,19.059331552734374,28.4711181640625,18.400091552734374L32.4711181640625,13.066761552734375C32.8711181640625,12.533424552734376,33.6711181640625,12.533424552734376,34.0711181640625,13.066761552734375'\n              fill='currentColor'\n              fillOpacity='1'\n            />\n          </g>\n          <g transform='matrix(0,1,-1,0,37.415496826171875,-1.415802001953125)'>\n            <path d='' fill='#181B1E' fillOpacity='1' />\n            <path\n              d='M18.5656494140625,28.686447412109374L18.5656494140625,24.011087412109376L18.5656494140625,22.638147412109376L18.5656494140625,17.999847412109375Q18.5656494140625,17.916129712109374,18.5819824140625,17.834020412109375Q18.5983144140625,17.751911412109376,18.6303514140625,17.674566412109375Q18.6623894140625,17.597221412109374,18.7089004140625,17.527612412109374Q18.7554114140625,17.458004412109375,18.8146084140625,17.398806412109376Q18.8738064140625,17.339609412109375,18.9434144140625,17.293098412109376Q19.0130234140625,17.246587412109374,19.0903684140625,17.214549412109374Q19.1677134140625,17.182512412109375,19.2498224140625,17.166180412109377Q19.3319317140625,17.149847412109374,19.4156494140625,17.149847412109374Q19.4993671140625,17.149847412109374,19.5814764140625,17.166180412109377Q19.6635854140625,17.182512412109375,19.7409304140625,17.214549412109374Q19.8182754140625,17.246587412109374,19.8878844140625,17.293098412109376Q19.9574924140625,17.339609412109375,20.0166904140625,17.398806412109376Q20.0758874140625,17.458004412109375,20.1223984140625,17.527612412109374Q20.1689094140625,17.597221412109374,20.2009474140625,17.674566412109375Q20.2329844140625,17.751911412109376,20.2493164140625,17.834020412109375Q20.2656494140625,17.916129712109374,20.2656494140625,17.999847412109375L20.2656494140625,22.638147412109376L20.2656494140625,24.011087412109376L20.2656494140625,28.686447412109374Q20.2656494140625,28.770247412109377,20.2493164140625,28.852347412109374Q20.2329844140625,28.934447412109375,20.2009474140625,29.011747412109376Q20.1689094140625,29.089147412109376,20.1223984140625,29.158747412109374Q20.0758874140625,29.228347412109375,20.0166904140625,29.287547412109376Q19.9574924140625,29.346747412109373,19.8878844140625,29.393247412109375Q19.8182754140625,29.439747412109377,19.7409304140625,29.471747412109373Q19.6635854140625,29.503847412109373,19.5814764140625,29.520147412109374Q19.4993671140625,29.536447412109375,19.4156494140625,29.536447412109375Q19.3319317140625,29.536447412109375,19.2498224140625,29.520147412109374Q19.1677134140625,29.503847412109373,19.0903684140625,29.471747412109373Q19.0130234140625,29.439747412109377,18.9434144140625,29.393247412109375Q18.8738064140625,29.346747412109373,18.8146084140625,29.287547412109376Q18.7554114140625,29.228347412109375,18.7089004140625,29.158747412109374Q18.6623894140625,29.089147412109376,18.6303514140625,29.011747412109376Q18.5983144140625,28.934447412109375,18.5819824140625,28.852347412109374Q18.5656494140625,28.770247412109377,18.5656494140625,28.686447412109374Z'\n              fillRule='evenodd'\n              fill='currentColor'\n              fillOpacity='1'\n            />\n          </g>\n        </g>\n      </g>\n    </svg>\n  );\n};\nexport default React.memo(IconTo);\n", "import { EvmRpcMethod, GasFeeMode, type EVMTransaction, type TokenPrice } from '@particle-network/auth-core';\nimport { useInterval } from 'ahooks';\nimport React, { useEffect, useState } from 'react';\nimport type { Chain as ViemChain } from 'viem/chains';\nimport SVGIcon from '../../../components/icon/svg-icon';\nimport { useParticleAuth, useTranslation } from '../../../context';\nimport { getNativeSymbol } from '../../../utils/chain-utils';\nimport { formatPrice } from '../../../utils/number-utils';\nimport { useEVMTransaction } from '../evmContextProvider';\nimport styles from './info-sign.less';\ntype IProps = {\n  openGasDrawer: () => void;\n  signLoading: boolean;\n  chainInfo: ViemChain;\n  signMethod: string;\n};\n\nfunction GasDisplay(props: IProps) {\n  const { openGasDrawer, signLoading, chainInfo, signMethod } = props;\n\n  const { t } = useTranslation();\n\n  const { gasFeeResult, gasFeeMode, fetchGasAsync, gasFeeDisplay, tokenPrice, totalAmountDisplay, transactionData } =\n    useEVMTransaction();\n\n  const [interval, setInterval] = useState<number | undefined>(undefined);\n\n  const [countdown, setCountdown] = useState(10);\n\n  const { modalOptions } = useParticleAuth();\n\n  useInterval(() => {\n    const result = countdown - 1;\n    if (result <= 0) {\n      setCountdown(10);\n      loadGasConfig();\n    } else {\n      setCountdown(result);\n    }\n  }, interval);\n\n  useEffect(() => {\n    if (signLoading) {\n      setInterval(undefined);\n      setCountdown(10);\n    } else {\n      setInterval(1000);\n      loadGasConfig();\n    }\n    return () => {\n      setInterval(undefined);\n      setCountdown(10);\n    };\n  }, [signLoading]);\n\n  const loadGasConfig = () => {\n    if (transactionData) {\n      fetchGasAsync({\n        addresses: ['native'],\n        from: transactionData.from,\n        to: transactionData.to,\n        value: transactionData.value,\n        data: transactionData.data,\n      });\n    }\n  };\n\n  const editGas = () => {\n    if (!gasFeeResult) {\n      return;\n    }\n    openGasDrawer();\n  };\n\n  const estimatedTime = (data?: EVMTransaction): string => {\n    if (!data || !gasFeeResult || !gasFeeMode) {\n      return '';\n    }\n    let time: number;\n    if (gasFeeMode == GasFeeMode.low) {\n      time = gasFeeResult.low.maxWaitTime;\n    } else if (gasFeeMode == GasFeeMode.medium) {\n      time = gasFeeResult.medium.maxWaitTime;\n    } else if (gasFeeMode == GasFeeMode.high) {\n      time = gasFeeResult.high.maxWaitTime;\n    } else {\n      time = gasFeeResult.low.maxWaitTime;\n    }\n    let displayTime: string;\n    if (time / 1000 >= 60) {\n      displayTime = `>${time / 1000 / 60}min`;\n    } else {\n      displayTime = `<${time / 1000}s`;\n    }\n\n    return displayTime;\n  };\n\n  const formatDisplayPrice = (fee: string, prices: TokenPrice[]): string => {\n    return prices.length > 0 && prices[0].currencies && prices[0].currencies.length > 0\n      ? formatPrice({\n          amount: fee,\n          price: prices[0].currencies[0].price,\n          fiatCoin: modalOptions.fiatCoin || 'USD',\n        })\n      : '';\n  };\n\n  return (\n    <div>\n      <style>{styles as unknown as string}</style>\n      <div className='net-fee' onClick={editGas}>\n        <div className='evm-fee'>\n          <div className='fee-title'>\n            {t('sign.evm_fee')}\n            {gasFeeDisplay && interval && (\n              <span>\n                {' '}\n                {t('sign.refresh_in')} {countdown}s\n              </span>\n            )}\n          </div>\n\n          {gasFeeDisplay && tokenPrice && (\n            <div className='fee-row'>\n              <div>\n                {gasFeeDisplay.fee && (\n                  <div>\n                    {gasFeeDisplay.fee} {getNativeSymbol(chainInfo)}\n                    <span className='approximately'> {formatDisplayPrice(gasFeeDisplay.fee, tokenPrice)}</span>\n                  </div>\n                )}\n                {t('sign.max_fee')}\n                {gasFeeDisplay.maxFee} {getNativeSymbol(chainInfo)}\n                <span className='approximately'> {formatDisplayPrice(gasFeeDisplay.maxFee, tokenPrice)}</span>\n              </div>\n              <div className='fee-right'>\n                <div>\n                  {gasFeeDisplay && <div className='fee-standard'>{t(`sign.gas_${gasFeeMode}`)}</div>}\n                  <div\n                    className='fee-time'\n                    style={estimatedTime(transactionData).search('min') !== -1 ? { color: '#F55F0D' } : {}}\n                  >\n                    {estimatedTime(transactionData)}\n                  </div>\n                </div>\n                <div>\n                  <SVGIcon className='arrow-right-icon' name='arrow_right_icon' />\n                </div>\n              </div>\n            </div>\n          )}\n        </div>\n      </div>\n\n      {signMethod !== EvmRpcMethod.ethSendTransaction && (\n        <div className='total'>\n          <div className='total-title'>{t('sign.total')}</div>\n          {totalAmountDisplay && tokenPrice && (\n            <div className='total-content mt8'>\n              {totalAmountDisplay.amount && (\n                <div>\n                  {totalAmountDisplay.amount} {getNativeSymbol(chainInfo)}\n                  <span> {formatDisplayPrice(totalAmountDisplay.amount, tokenPrice)}</span>\n                </div>\n              )}\n              <div>\n                {t('sign.max_amount')}: {totalAmountDisplay.maxAmount} {getNativeSymbol(chainInfo)}\n                <span> {formatDisplayPrice(totalAmountDisplay.maxAmount, tokenPrice)}</span>\n              </div>\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n}\n\nexport default GasDisplay;\n", "import React from 'react';\nimport { useTranslation } from '../../../context';\nimport { getNativeSymbol } from '../../../utils/chain-utils';\nimport { useEVMTransaction } from '../evmContextProvider';\nimport styles from './info-sign.less';\n\nfunction NoGas() {\n  const { t } = useTranslation();\n\n  const { totalAmountDisplay, currentChain: chainInfo } = useEVMTransaction();\n\n  return (\n    <>\n      <style>{styles as unknown as string}</style>\n      <div className='no-gas-fee'>\n        <div className='no-title'>{t('sign.network_fee')}</div>\n        <div className='no-warning'>\n          <img alt='' src={require('../../../common/images/no_warning.png').default} />\n          <span>{t('sign.gas_fee_cannot')}</span>\n        </div>\n        {totalAmountDisplay && (\n          <>\n            <div className='data-title'>{t('sign.total')}</div>\n            {totalAmountDisplay.amount && (\n              <div className='data-item'>\n                {totalAmountDisplay.amount} {getNativeSymbol(chainInfo)}\n              </div>\n            )}\n            <div className='data-item'>\n              {t('sign.max_amount')}:{' '}\n              <span>\n                {totalAmountDisplay.maxAmount} {getNativeSymbol(chainInfo)}\n              </span>\n            </div>\n          </>\n        )}\n      </div>\n    </>\n  );\n}\n\nexport default NoGas;\n", "import { MinusCircleFilled, PlusCircleFilled } from '@ant-design/icons';\nimport type { PrefixedHexString } from '@ethereumjs/util';\nimport { addHexPrefix } from '@ethereumjs/util';\nimport { GasFeeMode, type GasFee, type TokenPrice } from '@particle-network/auth-core';\nimport { Button, Form, Input, Radio } from 'antd';\nimport { BigNumber } from 'bignumber.js';\nimport React, { useEffect, useRef, useState } from 'react';\nimport ParticleDrawer from '../../..//components/particle-drawer';\nimport SVGIcon from '../../../components/icon/svg-icon';\nimport PowerFooter from '../../../components/power-footer';\nimport { useAuthCoreModal, useParticleAuth, useTranslation } from '../../../context';\nimport { getNativeSymbol } from '../../../utils/chain-utils';\nimport { bnToHex, toHexPrefixString } from '../../../utils/common-utils';\nimport { ethereumUtils } from '../../../utils/ethereumUtils';\nimport {\n  formatPrice,\n  fromWei,\n  fromWeiFormat,\n  toBigNumber,\n  toWei,\n  toWeiBigNumber,\n  trimDecimals,\n} from '../../../utils/number-utils';\nimport { isEIP1559Type } from '../../../utils/transaction-utils';\nimport { useEVMTransaction } from '../evmContextProvider';\nimport styles from './evm-gas.scss';\n\nfunction EvmGas(props: any) {\n  const { openGasDrawer, visible } = props;\n  const [moreDetails, setMoreDetails] = useState(false);\n  const [errorTip, setErrorTip] = useState(false);\n  const [errorTip1, setErrorTip1] = useState<string>();\n  const [errorTip2, setErrorTip2] = useState<string>();\n  const optionsForm = useRef<any>(null);\n  const { authCoreModal } = useAuthCoreModal();\n  const { t } = useTranslation();\n\n  const {\n    transactionData,\n    updateTransaction,\n    gasFeeMode,\n    setGasFeeMode,\n    gasFeeDisplay: gasFeeDisplayContext,\n    gasFeeResult,\n    tokenPrice,\n    latestGasLimit,\n    currentChain: chainInfo,\n  } = useEVMTransaction();\n\n  const [gasMode, setGasMode] = useState(gasFeeMode);\n  const [gasFeeDisplay, setGasFeeDisplay] = useState(gasFeeDisplayContext);\n  const [gasLimit, setGasLimit] = useState<string>(latestGasLimit || '');\n  const [maxPriorityFeePerGas, setMaxPriorityFeePerGas] = useState(transactionData?.maxPriorityFeePerGas);\n\n  const [maxFee, setMaxFee] = useState<string>('');\n\n  const [gasForm] = Form.useForm();\n\n  const { modalOptions } = useParticleAuth();\n\n  useEffect(() => {\n    if (gasFeeMode || visible) {\n      setGasMode(gasFeeMode);\n    }\n  }, [gasFeeMode, visible]);\n\n  useEffect(() => {\n    if (gasFeeDisplayContext || visible) {\n      setGasFeeDisplay(gasFeeDisplayContext);\n    }\n  }, [gasFeeDisplayContext, visible]);\n\n  useEffect(() => {\n    if (visible) {\n      setMaxPriorityFeePerGas(transactionData?.maxPriorityFeePerGas);\n    }\n  }, [transactionData?.maxPriorityFeePerGas, visible]);\n\n  useEffect(() => {\n    if (visible) {\n      setMaxFee(\n        (isEIP1559Type(transactionData?.type as string)\n          ? transactionData?.maxFeePerGas\n          : transactionData?.gasPrice) as string\n      );\n    }\n  }, [transactionData?.type, transactionData?.maxFeePerGas, transactionData?.gasPrice, visible]);\n\n  useEffect(() => {\n    if (transactionData?.gasLimit || visible) {\n      setGasLimit(transactionData?.gasLimit as any);\n    }\n  }, [transactionData?.gasLimit, visible]);\n\n  useEffect(() => {\n    if (transactionData && gasLimit) {\n      if (isEIP1559Type(transactionData.type)) {\n        setGasFeeDisplay(\n          ethereumUtils.gasFee({\n            gasLimit: gasLimit,\n            baseFee: bnToHex(toWei(gasFeeResult?.baseFee, 'gwei')),\n            maxFeePerGas: maxFee,\n            maxPriorityFeePerGas,\n          })\n        );\n      } else {\n        setGasFeeDisplay(\n          ethereumUtils.gasFee({\n            gasLimit: gasLimit,\n            baseFee: bnToHex(toWei(gasFeeResult?.baseFee, 'gwei')),\n            gasPrice: maxFee,\n          })\n        );\n      }\n    } else if (gasFeeDisplayContext) {\n      setGasFeeDisplay(gasFeeDisplayContext);\n    }\n  }, [gasMode, transactionData, gasFeeDisplayContext, maxFee, visible, gasLimit, gasFeeResult, maxPriorityFeePerGas]);\n\n  const estimatedTime = (mode?: GasFeeMode): string => {\n    if (!tokenPrice || !gasFeeResult) {\n      return '';\n    }\n    let time: number;\n    if (mode == GasFeeMode.low) {\n      time = gasFeeResult.low.maxWaitTime;\n    } else if (mode == GasFeeMode.medium) {\n      time = gasFeeResult.medium.maxWaitTime;\n    } else if (mode == GasFeeMode.high) {\n      time = gasFeeResult.high.maxWaitTime;\n    } else {\n      time = gasFeeResult.low.maxWaitTime;\n    }\n    let displayTime: string;\n    if (time / 1000 >= 60) {\n      displayTime = `>${time / 1000 / 60}min`;\n    } else {\n      displayTime = `<${time / 1000}s`;\n    }\n\n    return displayTime;\n  };\n\n  const usdDisplay = (gasFee?: GasFee): string => {\n    if (!transactionData || !tokenPrice || !gasFee) {\n      return '';\n    }\n    if (isEIP1559Type(transactionData.type)) {\n      //Max Fee: 0.00032 ETH(\u22480.01 $)\n\n      const maxFeeFormat = `${t('sign.max_fee')} ${gasFee.maxFee} ${getNativeSymbol(chainInfo)}`;\n      const price = formatDisplayPrice(gasFee.maxFee, tokenPrice);\n      if (price === '') {\n        return maxFeeFormat;\n      }\n      return maxFeeFormat + `(${price})`;\n    } else {\n      return formatDisplayPrice(gasFee.maxFee, tokenPrice);\n    }\n  };\n\n  const formatDisplayPrice = (fee: string, prices: TokenPrice[]): string => {\n    return prices.length > 0 && prices[0].currencies && prices[0].currencies.length > 0\n      ? formatPrice({\n          amount: fee,\n          price: prices[0].currencies[0].price,\n          fiatCoin: modalOptions.fiatCoin || 'USD',\n        })\n      : '';\n  };\n\n  const selectGasMode = (mode: GasFeeMode) => {\n    setErrorTip(false);\n    setErrorTip1(undefined);\n    setErrorTip2(undefined);\n    if (mode !== gasMode) {\n      setGasMode(mode);\n      applyGasMode(mode);\n    }\n  };\n\n  const applyGasMode = (mode: GasFeeMode) => {\n    if (gasFeeResult && mode != GasFeeMode.custom) {\n      const maxFeeValue = bnToHex(toWei(gasFeeResult[mode].maxFeePerGas, 'gwei'));\n      setMaxFee(maxFeeValue);\n      gasForm.setFieldsValue({ 'max-fee': feeDisplay(maxFeeValue) });\n      const maxPriorityFeePerGasValue = bnToHex(toWei(gasFeeResult[mode].maxPriorityFeePerGas, 'gwei'));\n      setMaxPriorityFeePerGas(maxPriorityFeePerGasValue);\n      gasForm.setFieldsValue({ 'max-priority-fee': feeDisplay(maxPriorityFeePerGasValue) });\n      if (latestGasLimit) {\n        setGasLimit(latestGasLimit);\n      }\n    }\n  };\n\n  const setCustomGasLimit = (value: string) => {\n    setErrorTip(false);\n    if (gasMode !== GasFeeMode.custom) {\n      setGasMode(GasFeeMode.custom);\n    }\n    const bn = Number(value);\n    value = isNaN(bn) ? '0x0' : toHexPrefixString(bn);\n    setGasLimit(value);\n    if (Number(value) < Number(latestGasLimit)) {\n      setErrorTip(true);\n    } else {\n      setErrorTip(false);\n    }\n  };\n\n  const setCustomMaxPriorityFee = (value: string) => {\n    setErrorTip1(undefined);\n    const bn = toBigNumber(value);\n    value = bn.isNaN() || value === '' ? '0' : bn.toString();\n    value = bnToHex(toWei(value, 'gwei'));\n    if (gasMode !== GasFeeMode.custom) {\n      setGasMode(GasFeeMode.custom);\n    }\n    setMaxPriorityFeePerGas(value);\n    maxPriorityFeeErrorTip(value);\n  };\n\n  const setCustomMaxFee = (value: string) => {\n    console.log('setCustomMaxFee', value);\n    setErrorTip2(undefined);\n    const bn = toBigNumber(value);\n    value = bn.isNaN() || value === '' ? '0' : bn.toString();\n    value = bnToHex(toWei(value, 'gwei'));\n    if (gasMode !== GasFeeMode.custom) {\n      setGasMode(GasFeeMode.custom);\n    }\n    setMaxFee(value);\n    maxFeeErrorTip(value);\n  };\n\n  const addGasLimit = () => {\n    if (latestGasLimit && Number(gasLimit) < Number(latestGasLimit)) {\n      setCustomGasLimit(Number(latestGasLimit).toString());\n    } else {\n      setCustomGasLimit((Number(gasLimit) + 1).toString());\n    }\n  };\n\n  const minusGasLimit = () => {\n    if (Number(gasLimit) >= Number(latestGasLimit) + 1) {\n      setCustomGasLimit((Number(gasLimit) - 1).toString());\n    }\n  };\n\n  const addMaxPriorityFee = () => {\n    const value = new BigNumber(maxPriorityFeePerGas ?? '0x0').plus(1000000000);\n    const hex = addHexPrefix(value.toString(16));\n    setCustomMaxPriorityFee(fromWei(hex, 'gwei'));\n    gasForm.setFieldsValue({ 'max-priority-fee': feeDisplay(hex) });\n  };\n\n  const minusMaxPriorityFee = () => {\n    let value = new BigNumber(maxPriorityFeePerGas ?? '0x0').minus(1000000000);\n    if (value.isNegative()) {\n      value = new BigNumber(0);\n    }\n    const hex = addHexPrefix(value.toString(16));\n    setCustomMaxPriorityFee(fromWei(hex, 'gwei'));\n    gasForm.setFieldsValue({ 'max-priority-fee': feeDisplay(hex) });\n  };\n\n  const addMaxFee = () => {\n    const value = new BigNumber(maxFee).plus(1000000000);\n    const hex = addHexPrefix(value.toString(16));\n    setCustomMaxFee(fromWei(hex, 'gwei'));\n    gasForm.setFieldsValue({ 'max-fee': feeDisplay(hex) });\n  };\n\n  const minusMaxFee = () => {\n    let value = new BigNumber(maxFee).minus(1000000000);\n    if (value.isNegative()) {\n      value = new BigNumber(0);\n    }\n    const hex = addHexPrefix(value.toString(16));\n    setCustomMaxFee(fromWei(hex, 'gwei'));\n    gasForm.setFieldsValue({ 'max-fee': feeDisplay(hex) });\n  };\n\n  useEffect(() => {\n    if (isEIP1559Type(transactionData?.type) && maxPriorityFeePerGas) {\n      maxPriorityFeeErrorTip(maxPriorityFeePerGas);\n    }\n\n    maxFeeErrorTip(maxFee);\n  }, []);\n\n  const maxPriorityFeeErrorTip = (value: PrefixedHexString) => {\n    if (!gasFeeResult) return;\n\n    if (\n      new BigNumber(value).isGreaterThan(\n        toWeiBigNumber(gasFeeResult.medium.maxPriorityFeePerGas, 'gwei').multipliedBy(10)\n      )\n    ) {\n      setErrorTip1(t('sign.pr_fee_is_high') as string);\n    } else if (new BigNumber(value).isLessThan(toWeiBigNumber(gasFeeResult.low.maxPriorityFeePerGas, 'gwei'))) {\n      setErrorTip1(t('sign.pr_fee_is_low') as string);\n    } else {\n      setErrorTip1(undefined);\n    }\n\n    if (toBigNumber(value).gte(toBigNumber(maxFee))) {\n      setErrorTip2(t('sign.fee_low_priority') as string);\n    } else {\n      if (toBigNumber(maxFee).gt(toWeiBigNumber(gasFeeResult.medium.maxFeePerGas, 'gwei').multipliedBy(10))) {\n        setErrorTip2(t('sign.fee_is_high') as string);\n      } else if (toBigNumber(maxFee).lt(toWeiBigNumber(gasFeeResult.low.maxFeePerGas, 'gwei'))) {\n        setErrorTip2(t('sign.fee_is_low') as string);\n      } else {\n        setErrorTip2(undefined);\n      }\n    }\n  };\n\n  const maxFeeErrorTip = (value: PrefixedHexString) => {\n    if (!gasFeeResult) return;\n\n    if (isEIP1559Type(transactionData?.type) && maxPriorityFeePerGas && toBigNumber(value).lte(maxPriorityFeePerGas)) {\n      setErrorTip2(t('sign.fee_low_priority') as string);\n    } else if (toBigNumber(value).gt(toWeiBigNumber(gasFeeResult.medium.maxFeePerGas, 'gwei').multipliedBy(10))) {\n      setErrorTip2(t('sign.fee_is_high') as string);\n    } else if (toBigNumber(value).lt(toWeiBigNumber(gasFeeResult.low.maxFeePerGas, 'gwei'))) {\n      setErrorTip2(t('sign.fee_is_low') as string);\n    } else {\n      setErrorTip2(undefined);\n    }\n  };\n\n  const checkSaveBtEnable = (\n    minPriorityFee: BigNumber,\n    minFee: BigNumber,\n    maxPriorityFee: BigNumber,\n    maxFee: BigNumber\n  ): boolean => {\n    if (errorTip && latestGasLimit) {\n      return false;\n    } else if (errorTip1 === t('sign.pr_fee_is_low')) {\n      return false;\n    } else if (errorTip2 === t('sign.fee_is_low') || errorTip2 === t('sign.fee_low_priority')) {\n      return false;\n    } else if (isEIP1559Type(transactionData?.type)) {\n      return maxFee.gte(minFee) && maxPriorityFee.gte(minPriorityFee) && maxFee.gt(maxPriorityFee);\n    } else {\n      return maxFee.gte(minFee);\n    }\n  };\n\n  const saveGas = (values: unknown) => {\n    console.log('saveGas', gasMode, gasLimit, maxPriorityFeePerGas, maxFee);\n    if (gasMode && gasMode !== gasFeeMode) {\n      setGasFeeMode(gasMode);\n    }\n    if (gasMode === GasFeeMode.custom && transactionData) {\n      if (isEIP1559Type(transactionData.type)) {\n        updateTransaction({\n          maxPriorityFeePerGas,\n          maxFeePerGas: maxFee,\n          gasLimit: gasLimit,\n        });\n      } else {\n        updateTransaction({\n          gasPrice: maxFee,\n          gasLimit: gasLimit,\n        });\n      }\n    }\n\n    openGasDrawer();\n  };\n\n  const estimateFee = (limit: PrefixedHexString, fee: PrefixedHexString): string => {\n    return fromWeiFormat(addHexPrefix(toBigNumber(limit).multipliedBy(fee).toString(16)), 'ether', 6);\n  };\n\n  const feeDisplay = (weiFee: PrefixedHexString): string => {\n    return fromWeiFormat(weiFee, 'gwei', 9);\n  };\n\n  useEffect(() => {\n    if (gasMode && gasMode !== GasFeeMode.custom) {\n      applyGasMode(gasMode);\n    }\n  }, [gasFeeResult, latestGasLimit]);\n\n  useEffect(() => {\n    if (maxFee && visible) {\n      gasForm.setFieldsValue({ 'max-fee': feeDisplay(maxFee) });\n    }\n  }, [visible, maxFee]);\n\n  return (\n    <>\n      <style>{styles as unknown as string}</style>\n      <ParticleDrawer\n        title={t('sign.edit_priority') as string}\n        visible={visible && !!gasFeeResult && !!transactionData && !!gasFeeMode && !!gasFeeDisplay}\n        push={false}\n        forceRender={true}\n        placement='bottom'\n        onClose={openGasDrawer}\n        className='evm-gas-drawer'\n        contentWrapperStyle={{ height: 'auto' }}\n        destroyOnClose={true}\n        getContainer={() => {\n          return authCoreModal.rootBody as HTMLElement;\n        }}\n      >\n        {!!gasFeeResult && !!transactionData && !!gasFeeMode && !!gasFeeDisplay && (\n          <>\n            <div className='gas-content-box'>\n              <div className='eth-amount'>\n                {gasFeeDisplay?.fee ?? gasFeeDisplay?.maxFee} {getNativeSymbol(chainInfo)}\n              </div>\n\n              <div className='eth-amount-about'>{usdDisplay(gasFeeDisplay)}</div>\n\n              <div\n                className='speed-time'\n                style={estimatedTime(gasMode).search('min') != -1 ? { color: '#F55F0D' } : {}}\n              >\n                {estimatedTime(gasMode)}\n              </div>\n              <div className='speed-situation'>\n                <div className='situation-img'>\n                  <Radio\n                    className='radio-item'\n                    checked={gasMode === GasFeeMode.low}\n                    onClick={() => selectGasMode(GasFeeMode.low)}\n                  />\n                  <Radio\n                    className='radio-item'\n                    checked={gasMode === GasFeeMode.medium}\n                    onClick={() => selectGasMode(GasFeeMode.medium)}\n                  />\n                  <Radio\n                    className='radio-item'\n                    checked={gasMode === GasFeeMode.high}\n                    onClick={() => selectGasMode(GasFeeMode.high)}\n                  />\n                </div>\n                <div className='situation-line' />\n                <div className='situation-text'>\n                  <span>{t('sign.gas_low')}</span>\n                  <span>{t('sign.gas_medium')}</span>\n                  <span>{t('sign.gas_high')}</span>\n                </div>\n              </div>\n              <div className='more-details' onClick={() => setMoreDetails(!moreDetails)}>\n                {t('sign.advanced_options')}\n                {moreDetails ? (\n                  <SVGIcon className='arrow-icon' name='arrow_icon' data-fold='true' />\n                ) : (\n                  <SVGIcon className='arrow-icon' name='arrow_icon' data-fold='false' />\n                )}\n              </div>\n\n              <div className='advanced-options'>\n                <Form className='options-form' onFinish={saveGas} form={gasForm} layout='vertical' ref={optionsForm}>\n                  {moreDetails && (\n                    <div className='form-son'>\n                      <div>\n                        <div className='img-box-minus' onClick={minusGasLimit}>\n                          <MinusCircleFilled className='minus-icon' />\n                        </div>\n                        <div className='img-box-add' onClick={addGasLimit}>\n                          <PlusCircleFilled className='add-icon' />\n                        </div>\n                        {errorTip && latestGasLimit && (\n                          <div className='error-tip mt-e0'>\n                            {t('sign.gas_limit_must').format(toBigNumber(latestGasLimit).toString())}\n                          </div>\n                        )}\n                        <Form.Item\n                          label={t('sign.gas_limit')}\n                          getValueFromEvent={(event) => {\n                            return event.target.value.replace(/[^\\d.]/g, '').replace(/(\\.)(\\d*)(\\1*)/g, '$1$2');\n                          }}\n                        >\n                          <Input\n                            value={toBigNumber(gasLimit).toString()}\n                            maxLength={9}\n                            onChange={(e) => setCustomGasLimit(e.target.value)}\n                          />\n                        </Form.Item>\n                      </div>\n\n                      {isEIP1559Type(transactionData?.type) && (\n                        <div>\n                          <div className='estimate mt1'>\n                            {t('sign.estimate')}\n                            <span className='estimate-val'>\n                              {' '}\n                              {trimDecimals(gasFeeResult?.medium?.maxPriorityFeePerGas || 0, 9)} GWEI\n                            </span>\n                          </div>\n                          <div className='about-val mt-a1'>\n                            {!!gasLimit && estimateFee(gasLimit, maxPriorityFeePerGas!)} {getNativeSymbol(chainInfo)}\n                          </div>\n                          <div className='img-box-minus' onClick={minusMaxPriorityFee}>\n                            <MinusCircleFilled className='minus-icon' />\n                          </div>\n                          <div className='img-box-add' onClick={addMaxPriorityFee}>\n                            <PlusCircleFilled className='add-icon' />\n                          </div>\n                          {errorTip1 && <div className='error-tip mt-e0'>{errorTip1}</div>}\n                          <Form.Item\n                            label={t('sign.max_priority_fee')}\n                            name='max-priority-fee'\n                            getValueFromEvent={(event) => {\n                              return event.target.value.replace(/[^\\d.]/g, '').replace(/(\\.)(\\d*)(\\1*)/g, '$1$2');\n                            }}\n                          >\n                            <Input\n                              maxLength={17}\n                              className='special-input'\n                              defaultValue={feeDisplay(maxPriorityFeePerGas!)}\n                              onInput={(e: any) => {\n                                const value = e.target.value;\n                                e.target.value = value\n                                  .replace(/[^\\d.]/g, '')\n                                  .replace(/\\D*(\\d*)(\\.?)(\\d{0,9})\\d*/, '$1$2$3');\n                              }}\n                              onChange={(e) => setCustomMaxPriorityFee(e.target.value)}\n                            />\n                          </Form.Item>\n                        </div>\n                      )}\n\n                      <div>\n                        <div className='estimate mt1'>\n                          {t('sign.estimate')}\n                          <span className='estimate-val'>\n                            {' '}\n                            {trimDecimals(gasFeeResult?.medium?.maxFeePerGas || 0, 9)} GWEI\n                          </span>\n                        </div>\n                        <div className='about-val mt-a1'>\n                          {!!gasLimit && estimateFee(gasLimit, maxFee)} {getNativeSymbol(chainInfo)}\n                        </div>\n                        <div className='img-box-minus' onClick={minusMaxFee}>\n                          <MinusCircleFilled className='minus-icon' />\n                        </div>\n                        <div className='img-box-add' onClick={addMaxFee}>\n                          <PlusCircleFilled className='add-icon' />\n                        </div>\n                        {errorTip2 && <div className='error-tip mt-e0'>{errorTip2}</div>}\n                        <Form.Item\n                          label={t('sign.max_fee')}\n                          name='max-fee'\n                          getValueFromEvent={(event) => {\n                            return event.target.value.replace(/[^\\d.]/g, '').replace(/(\\.)(\\d*)(\\1*)/g, '$1$2');\n                          }}\n                        >\n                          <Input\n                            maxLength={17}\n                            className='special-input'\n                            defaultValue={feeDisplay(maxFee)}\n                            onInput={(e: any) => {\n                              const value = e.target.value;\n                              e.target.value = value\n                                .replace(/[^\\d.]/g, '')\n                                .replace(/\\D*(\\d*)(\\.?)(\\d{0,9})\\d*/, '$1$2$3');\n                            }}\n                            onChange={(e) => setCustomMaxFee(e.target.value)}\n                          />\n                        </Form.Item>\n                      </div>\n                    </div>\n                  )}\n                </Form>\n              </div>\n            </div>\n            <div className='item-save-btn'>\n              <Button\n                className='save-btn'\n                type='primary'\n                disabled={\n                  !checkSaveBtEnable(\n                    toWeiBigNumber(gasFeeResult?.low.maxPriorityFeePerGas, 'gwei'),\n                    toWeiBigNumber(gasFeeResult?.low.maxFeePerGas, 'gwei'),\n                    toBigNumber(maxPriorityFeePerGas),\n                    toBigNumber(maxFee)\n                  ) || toBigNumber(gasLimit).lt(toBigNumber(latestGasLimit))\n                }\n                onClick={() => optionsForm.current.submit()}\n              >\n                {t('common.save')}\n              </Button>\n            </div>\n            <PowerFooter className='footer-box-v2' />\n          </>\n        )}\n      </ParticleDrawer>\n    </>\n  );\n}\n\nexport default EvmGas;\n"],
  "mappings": "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",
  "names": ["syncUserInfo", "React", "useEffect", "addHexPrefix", "EvmEnhancedMethod", "EvmRpcMethod", "TransactionSmartType", "defaultTokenIcon", "Button", "Image", "Modal", "BigNumber", "React", "useEffect", "useMemo", "useRef", "useState", "React", "EvmRpcMethod", "EvmRpcMethod", "gasFeeDisplay", "totalAmountDisplay", "React", "React", "useEffect", "useState", "React", "React", "riskTypography_default", "useState", "useEffect", "React", "riskTypography_default", "riskReminder_default", "EvmEnhancedMethod", "Modal", "BigNumber", "React", "useEffect", "useMemo", "useState", "React", "React", "EvmRpcMethod", "GasFeeMode", "React", "useEffect", "useState", "useState", "useEffect", "GasFeeMode", "React", "EvmRpcMethod", "React", "React", "trimDecimals", "useState", "useMemo", "_a", "_b", "_c", "_d", "tokenIcon", "tokenSymbol", "tokenDecimals", "useEffect", "EvmEnhancedMethod", "tokenPrice", "_e", "_f", "_g", "_h", "_i", "_j", "amountChange", "BigNumber", "_k", "_l", "_m", "_n", "React", "Modal", "GasFeeMode", "Button", "Form", "Input", "BigNumber", "React", "useEffect", "useState", "useState", "Form", "useEffect", "GasFeeMode", "BigNumber", "maxFee", "React", "Input", "Button", "evm_gas_default", "useState", "useRef", "_a", "useMemo", "EvmRpcMethod", "useEffect", "renderPageType", "TransactionSmartType", "EvmEnhancedMethod", "addHexPrefix", "Modal", "message", "_b", "React", "signMessage", "address", "BigNumber", "Image", "defaultTokenIcon", "Button", "riskReminder_default", "riskTypography_default", "evm_gas_default", "useEffect", "syncUserInfo", "React"]
}
