keyring-chatbot-agent-sdk-test 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-widget-wc.es.js +1 -38651
- package/dist/chat-widget-wc.umd.js +1 -756
- package/dist/chat-widget.es.js +62 -9574
- package/dist/chat-widget.umd.js +2 -514
- package/package.json +2 -1
package/dist/chat-widget.umd.js
CHANGED
|
@@ -1,514 +1,2 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".chat-button{cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000026;transition:all .3s ease;border-radius:16px}.chat-button:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003}.chat-button:active{transform:scale(.95)}.chat-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:transparent;display:flex;align-items:flex-end;justify-content:flex-end;z-index:9999;pointer-events:all;animation:fadeIn .2s ease}#chat-modal-title{color:#0b3988;font-weight:900;font-style:Regular;font-size:18px}.chat-modal-overlay.chat-modal-overlay--left{justify-content:flex-start}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.chat-modal{width:90%;max-width:480px;height:700px;max-height:calc(100dvh - 64px);background:#f5f5f7;border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #0000004d;margin:20px;pointer-events:all;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.chat-modal-header{background:#fff;padding:8px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e5e5e7}.chat-modal-header-left{display:flex;align-items:center;gap:12px}.keyring-logo{width:32px;height:32px}.chat-modal-header h3{margin:0;font-size:18px;font-weight:700;color:#1a1a1d}.close-button{background:transparent;border:none;cursor:pointer;padding:8px;border-radius:8px;color:#666;transition:all .2s}.close-button:hover{background:#f5f5f7;color:#000}.chat-user-info{background:#fff;padding:12px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #e5e5e7}.user-avatar{width:20px;height:20px;border-radius:50%}.user-avatar img{border-radius:50%}.user-wallet,.user-wallet a{font-size:14px;font-weight:500;color:#0b3988}.copy-address-btn{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:3px;color:#999;border-radius:4px;transition:color .15s,background .15s;line-height:0}@media(min-width:640px){.copy-address-btn:hover{color:#1a1a1d;background:#f0f0f0}}.chat-modal-messages-wrapper{position:relative;flex:1;overflow:hidden;display:flex;flex-direction:column}.chat-modal-messages{flex:1;padding:16px;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px}.date-separator{text-align:center;font-size:12px;font-weight:600;color:#666;background:#e5e5e7;padding:6px 16px;border-radius:12px;align-self:center;width:fit-content;margin:8px auto}.message{display:flex;animation:messageSlide .3s ease;position:relative}@media(min-width:640px){.message:hover .message-reply-button{opacity:1}}@keyframes messageSlide{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-reply-button{position:absolute;top:50%;transform:translateY(-50%);background:#fff;border:1px solid #e5e5e7;border-radius:8px;padding:6px;cursor:pointer;opacity:0;transition:all .2s;box-shadow:0 2px 8px #0000001a;z-index:10}.message-bot .message-reply-button{right:20px}.message-user .message-reply-button{left:20px}.message-reply-button:hover{background:#f5f5f7;transform:translateY(-50%) scale(1.1)}.message-reply-button svg{display:block;width:16px;height:16px;color:#666}.message-bot{justify-content:flex-start}.message-user{justify-content:flex-end}.message-bubble{max-width:85%;padding:8px 16px;border-radius:20px}.message-bot .message-bubble{background:#fff;box-shadow:0 2px 8px #0000000f;border-bottom-left-radius:4px}.message-user .message-bubble{background:#5b7fff;color:#fff;border-bottom-right-radius:4px}.message-user .message-bubble a{color:#fff}.message-reply-to{background:#0000000d;padding:8px 12px;border-radius:6px;margin-bottom:8px;border-left:3px solid #5b7fff}.message-bot .message-reply-to{background:#f5f5f7}.message-user .message-reply-to{background:#ffffff26;border-left-color:#ffffff80}.message-reply-to-label{font-size:11px;font-weight:600;margin-bottom:4px}.message-bot .message-reply-to-label{color:#5b7fff}.message-user .message-reply-to-label{color:#ffffffe6}.message-reply-to-text{font-size:12px;opacity:.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-text{font-size:14px;line-height:1.5;word-wrap:break-word;white-space:pre-line}.message-bot .message-text{color:#1a1a1d}.message-user .message-text{color:#fff}.message-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;margin-bottom:8px}.message-button{flex:1 1 calc(50% - 4px);min-width:100px;padding:8px 16px;background:#fffffff2;border:1px solid #e0e0e0;border-radius:12px;font-size:13px;font-weight:500;color:#1a1a1d;cursor:pointer;transition:all .2s ease;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-button.full-width{flex:1 1 100%;text-align:center;white-space:normal;padding:8px 16px;font-size:14px}@media(min-width:640px){.message-button:hover{background:#fff;border-color:#007aff;color:#007aff;transform:translateY(-1px);box-shadow:0 2px 8px #007aff26}.message-button:active{transform:translateY(0);box-shadow:0 1px 4px #007aff1a}}.message-user .message-button{background:#fff3;border-color:#ffffff4d;color:#fff}.message-user .message-button:hover{background:#ffffff4d;border-color:#ffffff80}.message-timestamp{line-height:1;font-size:11px;color:#999;display:flex;align-items:center;gap:4px;justify-content:flex-end}.message-user .message-timestamp{color:#ffffffb3}.check-icon{width:14px;height:14px}.typing-indicator .message-bubble{padding:12px 18px;display:flex;gap:6px;min-width:60px}.typing-dot{width:8px;height:8px;border-radius:50%;background:#999;animation:typingDot 1.4s infinite ease-in-out}.typing-dot:nth-child(1){animation-delay:0s}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typingDot{0%,60%,to{transform:translateY(0);opacity:.7}30%{transform:translateY(-8px);opacity:1}}.suggestions-container{display:flex;flex-direction:column;gap:10px;margin-top:8px}.suggestion-button{background:#d4d8f0;border:none;padding:8px 16px;border-radius:16px;display:flex;gap:12px;cursor:pointer;transition:all .2s;font-size:14px;font-weight:500;color:#1a1a1d;width:100%;text-align:center;align-items:center;justify-content:center}.suggestion-button:hover{background:#c5caeb;transform:translateY(-1px)}.suggestion-icon{font-size:18px}.chat-modal-input{padding:8px 16px;background:#fff;border-top:1px solid #e5e5e7;display:flex;flex-direction:column;gap:8px;box-shadow:0 -5px 8px 4px #0000000d}.reply-preview{background:#f5f5f7;padding:10px 14px;border-radius:6px;border-left:3px solid #5b7fff;display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.reply-preview-content{flex:1;min-width:0}.reply-preview-label{font-size:11px;color:#5b7fff;font-weight:600;margin-bottom:4px}.reply-preview-text{font-size:13px;color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reply-preview-close{background:transparent;border:none;cursor:pointer;padding:2px;color:#999;transition:color .2s;flex-shrink:0}.reply-preview-close:hover{color:#666}.chat-modal-input-row{display:flex;gap:12px;align-items:center}.chat-modal-input input{flex:1;padding:14px 18px;border:1px solid #e5e5e7;border-radius:24px;outline:none;font-size:16px;color:#1a1a1d;transition:all .2s}.chat-modal-input input::placeholder{color:#999}.chat-modal-input input:focus{border-color:#5b7fff;box-shadow:0 0 0 3px #5b7fff1a}.chat-modal-input input:disabled{opacity:.6;cursor:not-allowed;background:#f5f5f7}.send-button{width:44px;height:44px;border-radius:50%;background:#5b7fff;border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.send-button:hover:not(:disabled){background:#4a6fee;transform:scale(1.05)}.send-button:disabled{opacity:.4;cursor:not-allowed}.chat-modal-messages::-webkit-scrollbar{width:6px}.chat-modal-messages::-webkit-scrollbar-thumb{background:#d1d1d6;border-radius:3px}@media(max-width:640px){.chat-modal{width:100%;height:100dvh;max-height:100dvh;border-radius:0;margin:0}}.action-status{margin-top:8px;padding:6px 10px;border-radius:6px;font-size:.8em;font-weight:500}.action-status-submitted{background:#fef3c7;color:#92400e;border:1px solid #fde68a}.action-status-success{background:#d1fae5;color:#065f46;border:1px solid #a7f3d0}.action-status-fail{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.message-content{display:block;word-wrap:break-word;overflow-wrap:break-word;max-width:100%;overflow:hidden;font-size:inherit;line-height:1.5}.mc-line{min-height:1.2em;word-break:break-word}.mc-empty-line{height:.5em}.mc-heading{font-weight:600;margin:.3em 0;word-break:break-word}.mc-h1{font-size:1.4em}.mc-h2{font-size:1.2em}.mc-h3{font-size:1.05em}.mc-inline-code{background:#afb8c133;padding:1px 5px;border-radius:3px;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,monospace;font-size:.88em}.mc-codeblock{background:#f6f8fa;border:1px solid #d0d7de;border-radius:6px;margin:6px 0;overflow:hidden;max-width:100%}.mc-codeblock-lang{background:#e8ecf0;padding:3px 10px;font-size:.75em;font-weight:600;color:#57606a;text-transform:uppercase;font-family:Monaco,Menlo,monospace;border-bottom:1px solid #d0d7de}.mc-codeblock pre{margin:0;padding:10px;overflow-x:auto}.mc-codeblock code{font-family:Monaco,Menlo,Ubuntu Mono,Consolas,monospace;font-size:.85em;line-height:1.5;color:#24292f;white-space:pre}.mc-link{color:#0969da;text-decoration:none;word-break:break-word}.mc-link:hover{text-decoration:underline}.mc-image{max-width:150px;width:150px;height:150px;object-fit:contain;border-radius:8px;margin:8px 0;display:block}.mc-image-inline{width:20px;height:20px;border-radius:50%;margin:0 4px;display:inline-block;vertical-align:middle;object-fit:cover}.mc-blockquote{margin:4px 0;padding:2px 0 2px 12px;color:#57606a;border-left:3px solid #d0d7de}.mc-hr{height:1px;border:0;background:#d0d7de;margin:.4em 0}.message-content strong{font-weight:600}.message-content del{text-decoration:line-through}.action-form{background:#f8f9fb;border:1px solid #e2e6ea;border-radius:10px;padding:12px;margin-top:8px;margin-bottom:8px}.action-form-title{font-weight:600;font-size:.9em;margin-bottom:10px;color:#1a1a2e;display:flex;align-items:center;gap:6px}.action-form-general-error{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 12px;margin-bottom:10px;font-size:.8em;color:#dc2626;font-weight:500;display:flex;align-items:center;gap:6px}.action-form-fields{display:flex;flex-direction:column;gap:8px}.action-form-field{display:flex;flex-direction:column;gap:3px}.action-form-field label{font-size:.75em;font-weight:500;color:#6b7280}.action-form-field input,.action-form-field textarea{padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:16px;background:#fff;color:#1a1a2e;outline:none;transition:border-color .2s;font-family:inherit}.action-form-field textarea{resize:none;word-break:break-all}.action-form-field input:focus,.action-form-field textarea:focus{border-color:#0b3988;box-shadow:0 0 0 2px #6c5ce726}.action-form-field input.error,.action-form-field textarea.error{border-color:#ef4444}.action-form-field input.readonly,.action-form-field textarea.readonly{background:#f3f4f6;color:#6b7280;cursor:not-allowed;border-color:#e5e7eb}.action-form-field .field-error{font-size:.7em;color:#ef4444;margin-top:1px}.action-form-actions{display:flex;gap:8px;margin-top:10px}.action-form-submit{flex:1;padding:8px 14px;background:#0b3988;color:#fff;border:none;border-radius:6px;font-size:.85em;font-weight:500;cursor:pointer;transition:background .2s}.action-form-submit:hover:not(:disabled){background:#5a4bd1}.action-form-submit:disabled{background:#a5b4fc;cursor:not-allowed}.action-form-cancel{padding:8px 14px;background:transparent;color:#6b7280;border:1px solid #d1d5db;border-radius:6px;font-size:.85em;font-weight:500;cursor:pointer;transition:all .2s}.action-form-cancel:hover{background:#f3f4f6;color:#374151}.action-form-token-info{background:#eef2ff;border:1px solid #c7d2fe;border-radius:8px;padding:8px 10px;margin-bottom:10px}.token-info-row{display:flex;align-items:center;gap:8px}.token-info-logo{border-radius:50%;flex-shrink:0}.token-info-details{display:flex;flex-direction:column;gap:2px;min-width:0}.token-info-name{font-size:.8em;font-weight:600;color:#1a1a2e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.token-info-balance{font-size:.75em;color:#4b5563}.token-info-usd{color:#0b3988;font-weight:500}.action-form-field-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.action-form-field-header .action-form-field-label{margin-bottom:0;font-size:12px}.action-form-pct-btns{display:inline-flex;gap:4px}.action-form-pct-btn{padding:1px 6px;font-size:.7em;font-weight:600;color:#0b3988;background:#eef2ff;border:1px solid #c7d2fe;border-radius:4px;cursor:pointer;transition:all .15s}@media(min-width:640px){.action-form-pct-btn:hover:not(:disabled){background:#0b3988;color:#fff}}.action-form-pct-btn:disabled{opacity:.5;cursor:not-allowed}.action-form-max-btn{font-weight:700}.action-form-nft-info{margin-bottom:10px;text-align:center;display:flex;align-items:center;justify-content:center}.nft-info-image{width:80px;height:80px;border-radius:8px;object-fit:contain;background:#e5e7eb;padding:4px}.scroll-to-bottom-btn{position:absolute;bottom:16px;right:20px;background:#1a1a1dd6;color:#fff;border:1px solid rgba(255,255,255,.12);border-radius:50%;width:36px;height:36px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000040;z-index:20;transition:background .15s,transform .15s,box-shadow .15s;animation:fadeInUp .18s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(min-width:640px){.scroll-to-bottom-btn:hover{background:#2d2d35;box-shadow:0 6px 16px #0000004d;transform:scale(1.08)}}.scroll-to-bottom-btn:active{transform:scale(.96)}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
|
-
(function(wt,O){typeof exports=="object"&&typeof module<"u"?O(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],O):(wt=typeof globalThis<"u"?globalThis:wt||self,O(wt.ChatWidgetSDK={},wt.jsxRuntime,wt.React))})(this,(function(wt,O,te){"use strict";const Ws="data:image/png;base64,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",ho={en:{chatTitle:"Keyring Agent",closeChat:"Close chat",messagePlaceholder:"Message ....",sendMessage:"Send message",botIsTyping:"Bot is typing",canIHelpYou:"Can I help you with anything?",replyToMessage:"Reply to message",replyingTo:"Replying to",replyingToYou:"You",replyingToAgent:"Keyring Agent",cancelReply:"Cancel reply",suggestionAskText:"Ask a question",suggestionAskUserMessage:"I have a question",suggestionAskBotReply:"Ask me anything",suggestionBuyText:"Buy trending token",walletConnectedChainUnsupported:"Your wallet is connected but the chain is not supported for trading. Please switch to a supported chain to see trending tokens.",walletNotConnected:"Please connect your wallet to see trending tokens.",actionProcessing:"⏳ Processing transaction...",actionSuccess:"✅ Transaction completed",actionFail:"❌ Action cancelled or failed",txSubmitted:"⏳ Transaction submitted. Waiting for confirmation...",txConfirmed:"✅ Transaction confirmed!",txReverted:"❌ Transaction reverted on-chain.",txTimeout:"⚠️ Transaction submitted but confirmation timed out. Please check manually.",txSuccessful:"✅ Transaction successful!",txFailed:"❌ Transaction failed. Please try again.",txNoHandler:"⚠️ No transaction handler configured.",txInsufficientGas:"⚠️ **Insufficient {symbol} for gas!** You have {balance} {symbol} but need ~{fee} {symbol} for the transaction fee. Please top up your wallet and try again.",txError:"❌ Error: {message}",swapConfirmButton:"Confirm",swapConfirmValue:"Confirm swap",swapReadyToProceed:"Ready to proceed with the swap?",swapEstimationError:"⚠️ Unable to get swap estimation. Error: {error}",formCancel:"Cancel",formExecute:"Execute",formProcessing:"⏳ Processing...",formBalance:"Balance:",formTokenNotFound:"Token not found in your wallet.",formNoBalance:"You have no {symbol} balance in your wallet.",formInsufficientBalance:"Insufficient balance. Spendable: {balance} {symbol}",formFieldRequired:"{field} is required",formInvalidAddress:"Invalid address (0x + 40 hex chars)",formMustBePositive:"Must be a positive number",formMustBeValidNumber:"Must be a valid number",openChat:"Open chat",openChatTitle:"Open chat support",walletBalanceSpendable:"This is the spendable balance of your wallet on {chain} chain. Please choose the coins you want to use for this trade.",walletNoTokensFound:"Sorry, I couldn't find any tokens in your wallet on {chain} chain. Please make sure you have some tokens to trade.",walletFetchFailed:"Sorry, I could not fetch your wallet balance. Please try again.",walletFetchError:"Sorry, I encountered an error fetching your wallet balance.",insufficientFeeToken:"Insufficient fee. Please ensure you have enough {symbol} to cover the transaction fees, or select a different token.",selectAmountOf:`Select the amount of {symbol} to use:
|
|
3
|
-
|
|
4
|
-
Spendable: {balance} {symbol}`,swapFeeWarning:`
|
|
5
|
-
⚠️ **Insufficient {symbol} for fees!**
|
|
6
|
-
You have {balance} {symbol} but need ~{needed} {symbol}.
|
|
7
|
-
`,swapNeedApprove:"You need to approve {symbol} first before swapping.",swapApproveButton:"Approve {symbol}",swapApproveValue:"Approve {symbol} for swap",swapNoSourceToken:"⚠️ You don't have the source token in your wallet or balance is 0.",swapSelectAmount:`Swap {from} → {to}
|
|
8
|
-
|
|
9
|
-
Select the amount of {from} to swap:
|
|
10
|
-
|
|
11
|
-
Spendable: {balance} {from}`,swapApprovalRequired:`⚠️ Token approval required before swapping.
|
|
12
|
-
|
|
13
|
-
Step 1: Approve {symbol}
|
|
14
|
-
Step 2: Confirm Swap`,swapEstimationFailed:"⚠️ Failed to get swap estimation. Please try again.",swapInsufficientNativeBalance:"⚠️ Insufficient balance! You have {balance} {symbol} but need {amount}. Please top up your wallet or reduce the amount.",swapTokenNotInWallet:"⚠️ You don't have {symbol} in your wallet. Please acquire some first before swapping.",swapInsufficientTokenBalance:"⚠️ Insufficient balance! You have {balance} {symbol} but need {amount}. Please reduce the amount or add more tokens.",selectAmountToSwap:`Select the amount of {symbol} to swap:
|
|
15
|
-
|
|
16
|
-
Spendable: {balance} {symbol}`,couldNotLoadTokenList:"⚠️ Could not load token list. Please specify the destination token.",trendingTokensForReceive:"📈 Trending tokens on {chain} chain. Pick the token you want to receive or type the token you want to receive:",txProcessing:"⏳ Transaction processing... Please confirm in your wallet.",txConfirmedSwap:"✅ Transaction confirmed! Your swap has been completed.",txRevertedSwap:"❌ Transaction reverted on-chain. Please try again.",txSuccessfulSwap:"✅ Transaction successful! Your swap has been completed.",txDataNotAvailable:"⚠️ Transaction data not available.",approvalDataNotAvailable:"⚠️ Approval data not available.",approving:"Approving {symbol}... Please confirm in your wallet.",approvalSuccess:"✅ {symbol} approved successfully!",approvalConfirmSwap:"Now you can execute the swap.",confirmSwapButton:"Confirm Swap",approvalFailed:"❌ Approval failed. Please try again.",couldNotFetchBalance:"⚠️ Could not fetch your wallet balance.",couldNotLoadBalance:"⚠️ Could not load balance. Please try again.",couldNotFetchBalanceRetry:"⚠️ Could not fetch your balance. Please try again.",nftSendReview:`📤 Send **{name}** ({standard} #{tokenId})
|
|
17
|
-
|
|
18
|
-
Please review and fill in the recipient address below:`,nftCollectionHeader:`Your NFTs :
|
|
19
|
-
|
|
20
|
-
{list}`,nftMoreItems:`
|
|
21
|
-
|
|
22
|
-
And {count} more NFTs...`,nftSelectBelow:`
|
|
23
|
-
|
|
24
|
-
Select an NFT below to send`,nftNoCollection:"You don't have any NFTs in your wallet on this chain.",nftMultipleMatchesForTokenId:"I found {count} NFTs with Token ID #{tokenId} in your wallet. Please select the one you want to send:",nftNotFoundInWallet:`I couldn't find "{name}" in your NFT collection. Here are your NFTs:`,nftFetchError:"Sorry, I encountered an error fetching your NFTs.",trendingTokensHeader:"📈 Here is the list of tokens that are currently trending upwards on {chain} chain",trendingTokensQuestion:`
|
|
25
|
-
Is there any token you want to buy?`,trendingTokensError:"Sorry, I encountered an error fetching trending tokens.",errorProcessingRequest:"Sorry, I encountered an error processing your request.",buttonBuyWith:"Buy with {symbol}",buttonUsePercent:"Use {percent}% of {symbol}",buttonBuyToken:"Buy {name} ({symbol})",buttonSendNft:"Send {name}",buttonSwapTo:"Swap to {name} ({symbol})",buttonBuySymbol:"Buy {symbol}",viewBalancesLoading:"Fetching your wallet balances...",viewBalancesHeader:`Your token balances on {chain}:
|
|
26
|
-
|
|
27
|
-
{list}
|
|
28
|
-
|
|
29
|
-
Select a token to interact with:`,viewBalancesEmpty:"You don't have any tokens in your wallet on this chain.",viewBalancesFetchError:"Sorry, I encountered an error fetching your balances.",buttonSendToken:"Send {symbol}",buttonSwapToken:"Swap {symbol}",buttonBuyMoreToken:"Buy more {symbol}",actionSendNativeLabel:"Send Native Token",actionSendNativeDesc:"Send native token (ETH, BNB, MATIC, etc.) to an address",actionSendTokenLabel:"Send Token (ERC20)",actionSendTokenDesc:"Send an ERC20 token to an address",actionSwapTokenLabel:"Swap Token",actionSwapTokenDesc:"Swap one token for another",actionApproveTokenLabel:"Approve Token",actionApproveTokenDesc:"Approve a spender to use your tokens",actionWrapNativeLabel:"Wrap Native Token",actionWrapNativeDesc:"Wrap native token (ETH → WETH)",actionUnwrapNativeLabel:"Unwrap Native Token",actionUnwrapNativeDesc:"Unwrap native token (WETH → ETH)",actionSendNftLabel:"Send NFT",actionSendNftDesc:"Transfer an ERC721 or ERC1155 NFT to another address",fieldToAddress:"Recipient Address",fieldAmount:"Amount",fieldTokenContract:"Token Contract",fieldTokenSymbol:"Token Symbol",fieldDecimals:"Decimals",fieldTokenIn:"From Token",fieldTokenInSymbol:"From Symbol",fieldTokenOut:"To Token",fieldTokenOutSymbol:"To Symbol",fieldTokenInDecimals:"From Decimals",fieldTokenOutDecimals:"To Decimals",fieldSpenderAddress:"Spender Address",fieldAmountUnlimited:"Amount (empty = unlimited)",fieldNftContract:"NFT Contract",fieldTokenId:"Token ID",fieldTokenStandard:"Token Standard",fieldNftName:"NFT Name",formMustBePositiveInteger:"Must be a positive integer",formAmountExceedsNft:"Amount cannot exceed available balance {max}",receivedButtonValue:"Received: {value}",actionExecutedFor:'Action "{action}" executed for: {value}',buyTokenHelp:"I'll help you buy {symbol}. Let me show your available tokens to trade with.",tokenNotFoundOnChain:`I couldn't find the token "{symbol}" on this chain. Here are the trending tokens you can buy:`,swapPreparing:"Preparing your swap...",swapConfirmYes:"Yes",swapChooseFrom:"Please choose which token you want to swap from:",swapChooseTo:"You want to swap {symbol}. Please choose which token you want to receive:",swapNeedDetails:'I need more details for your swap. Please specify which tokens you want to swap (e.g. "Swap 1 ETH to USDC").',viewNftsLoading:"Let me show you your NFT collection!",sendTokenChoose:"Which token would you like to send?",sendNftChoose:"Which NFT would you like to send?",swapChooseToken:"Which token would you like to swap? Here are your current balances:",spendable:"Spendable",welcomeMessage:`**Welcome! 🚀**
|
|
30
|
-
You're connected and ready to explore DeFi! I can help you trade, check prices, and analyze your portfolio when you need it.`,sendOtherNfts:`
|
|
31
|
-
If the NFT you want to send is not in the list above, please visit our website to send it.
|
|
32
|
-
{link}`},ja:{chatTitle:"Keyring Agent",closeChat:"チャットを閉じる",messagePlaceholder:"メッセージを入力...",sendMessage:"メッセージを送信",botIsTyping:"ボットが入力中...",canIHelpYou:"なにかお手伝いできることはありますか?",replyToMessage:"メッセージに返信",replyingTo:"返信先:",replyingToYou:"あなた",replyingToAgent:"Keyring Agent",cancelReply:"返信をキャンセル",suggestionAskText:"質問・調査のお願い",suggestionAskUserMessage:"質問があります",suggestionAskBotReply:"何でも聞いてください",suggestionBuyText:"トレンドトークンを購入",walletConnectedChainUnsupported:"ウォレットは接続されていますが、このチェーンは取引に対応していません。トレンドのトークンを表示するには、対応しているチェーンに切り替えてください。",walletNotConnected:"トレンドのトークンを表示するには、ウォレットを接続してください。",actionProcessing:"⏳ トランザクションを処理中...",actionSuccess:"✅ トランザクションが完了しました",actionFail:"❌ アクションがキャンセルされたか、失敗しました",txSubmitted:"⏳ トランザクションを送信しました。確認を待機中...",txConfirmed:"✅ トランザクションが確認されました!",txReverted:"❌ オンチェーンでトランザクションがリバートされました。",txTimeout:"⚠️ トランザクションは送信されましたが、タイムアウトしました。手動で確認してください。",txSuccessful:"✅ トランザクションに成功しました!",txFailed:"❌ トランザクションに失敗しました。もう一度お試しください。",txNoHandler:"⚠️ トランザクションハンドラーが設定されていません。",txInsufficientGas:"⚠️ **ガス代({symbol})が不足しています!** 保有量は {balance} {symbol} ですが、手数料に約 {fee} {symbol} 必要です。ウォレットにチャージして再試行してください。",txError:"❌ エラー: {message}",swapConfirmButton:"確定",swapConfirmValue:"スワップを確定する",swapReadyToProceed:"スワップを実行しますか?",swapEstimationError:"⚠️ スワップの見積もりを取得できません。エラー: {error}",formCancel:"キャンセル",formExecute:"実行",formProcessing:"⏳ 処理中...",formBalance:"残高:",formTokenNotFound:"ウォレット内にトークンが見つかりません。",formNoBalance:"ウォレットに {symbol} の残高がありません。",formInsufficientBalance:"残高不足です。利用可能: {balance} {symbol}",formFieldRequired:"{field} は必須項目です",formInvalidAddress:"無効なアドレスです (0x + 40文字の16進数)",formMustBePositive:"正の数値を入力してください",formMustBeValidNumber:"有効な数値を入力してください",openChat:"チャットを開く",openChatTitle:"チャットサポートを開く",walletBalanceSpendable:"これは {chain} チェーン上のウォレットの利用可能な残高です。この取引に使用するコインを選択してください。",walletNoTokensFound:"申し訳ありませんが、{chain} チェーン上のウォレットにトークンが見つかりませんでした。取引するためのトークンを保有しているかご確認ください。",walletFetchFailed:"ウォレット残高を取得できませんでした。もう一度お試しください。",walletFetchError:"ウォレット残高の取得中にエラーが発生しました。",insufficientFeeToken:"手数料が不足しています。取引手数料をカバーするのに十分な {symbol} を保有しているか、別のトークンを選択してください。",selectAmountOf:`使用する {symbol} の数量を選択してください:
|
|
33
|
-
|
|
34
|
-
利用可能: {balance} {symbol}`,swapFeeWarning:`
|
|
35
|
-
⚠️ **手数料の {symbol} が不足しています!**
|
|
36
|
-
保有量は {balance} {symbol} ですが、~{needed} {symbol} 必要です。
|
|
37
|
-
`,swapNeedApprove:"スワップを行う前に、まず {symbol} の承認(Approve)が必要です。",swapApproveButton:"{symbol} を承認する",swapApproveValue:"スワップのために {symbol} を承認",swapNoSourceToken:"⚠️ ウォレットにソーストークンがないか、残高が 0 です。",swapSelectAmount:`スワップ {from} → {to}
|
|
38
|
-
|
|
39
|
-
スワップする {from} の数量を選択してください:
|
|
40
|
-
|
|
41
|
-
利用可能: {balance} {from}`,swapApprovalRequired:`⚠️ スワップの前にトークンの承認が必要です。
|
|
42
|
-
|
|
43
|
-
ステップ 1: {symbol} を承認
|
|
44
|
-
ステップ 2: スワップを確定`,swapEstimationFailed:"⚠️ スワップの見積もり取得に失敗しました。もう一度お試しください。",swapInsufficientNativeBalance:"⚠️ 残高不足です! 保有量は {balance} {symbol} ですが、{amount} 必要です。ウォレットにチャージするか、数量を減らしてください。",swapTokenNotInWallet:"⚠️ ウォレットに {symbol} がありません。スワップする前にまず入手してください。",swapInsufficientTokenBalance:"⚠️ 残高不足です! 保有量は {balance} {symbol} ですが、{amount} 必要です。数量を減らすか、トークンを追加してください。",selectAmountToSwap:`スwaップする {symbol} の数量を選択してください:
|
|
45
|
-
|
|
46
|
-
利用可能: {balance} {symbol}`,couldNotLoadTokenList:"⚠️ トークンリストを読み込めませんでした。受け取り希望のトークンを指定してください。",trendingTokensForReceive:"📈 {chain} チェーンのトレンドトークン。受け取りたいトークンを選択するか、入力してください:",txProcessing:"⏳ トランザクション処理中... ウォレットで承認してください。",txConfirmedSwap:"✅ トランザクションが確認されました!スワップが完了しました。",txRevertedSwap:"❌ オンチェーンでトランザクションがリバートされました。もう一度お試しください。",txSuccessfulSwap:"✅ トランザクションに成功しました!スワップが完了しました。",txDataNotAvailable:"⚠️ トランザクションデータが利用できません。",approvalDataNotAvailable:"⚠️ 承認データが利用できません。",approving:"{symbol} を承認中... ウォレットで確認してください。",approvalSuccess:"✅ {symbol} の承認に成功しました!",approvalConfirmSwap:"これでスワップを実行できます。",confirmSwapButton:"スワップを確定する",approvalFailed:"❌ 承認に失敗しました。もう一度お試しください。",couldNotFetchBalance:"⚠️ ウォレット残高を取得できませんでした。",couldNotLoadBalance:"⚠️ 残高を読み込めませんでした。もう一度お試しください。",couldNotFetchBalanceRetry:"⚠️ 残高を取得できませんでした。もう一度お試しください。",nftSendReview:`📤 **{name}** ({standard} #{tokenId}) を送信
|
|
47
|
-
|
|
48
|
-
内容を確認し、以下に受信者のアドレスを入力してください:`,nftCollectionHeader:`您的 NFT 资产:
|
|
49
|
-
|
|
50
|
-
{list}`,nftMoreItems:`
|
|
51
|
-
|
|
52
|
-
以及其他 {count} 件 NFT...`,nftSelectBelow:`
|
|
53
|
-
|
|
54
|
-
请在下方选择要发送的 NFT`,nftNoCollection:"このチェーン上のウォレットにNFTは見つかりませんでした。",nftMultipleMatchesForTokenId:"ウォレット内にToken ID #{tokenId} のNFTが{count}件見つかりました。送信したいNFTを選択してください:",nftNotFoundInWallet:'あなたのNFTコレクションの中に "{name}" が見つかりませんでした。保有中のNFTはこちらです:',nftFetchError:"申し訳ありませんが、NFTの取得中にエラーが発生しました。",trendingTokensHeader:"📈 {chain} チェーンで現在価格が上昇中のトレンドトークン一覧です:",trendingTokensQuestion:`
|
|
55
|
-
購入したいトークンはありますか?`,trendingTokensError:"トレンドトークンの取得中にエラーが発生しました。",errorProcessingRequest:"リクエストの処理中にエラーが発生しました。",buttonBuyWith:"{symbol} で購入",buttonUsePercent:"{symbol} の {percent}% を使用",buttonBuyToken:"{name} ({symbol}) を購入",buttonSendNft:"{name} を送信",buttonSwapTo:"{name} ({symbol}) にスワップ",buttonBuySymbol:"{symbol} を購入",viewBalancesLoading:"ウォレットの残高を取得中...",viewBalancesHeader:`{chain} 上のトークン残高:
|
|
56
|
-
|
|
57
|
-
{list}
|
|
58
|
-
|
|
59
|
-
操作するトークンを選択してください:`,viewBalancesEmpty:"このチェーン上のウォレットにトークンは見つかりませんでした。",viewBalancesFetchError:"残高の取得中にエラーが発生しました。",buttonSendToken:"{symbol} を送信",buttonSwapToken:"{symbol} をスワップ",buttonBuyMoreToken:"{symbol} をさらに入手",actionSendNativeLabel:"ネイティブトークンを送信",actionSendNativeDesc:"ネイティブトークン (ETH, BNB, MATIC など) をアドレスに送信します",actionSendTokenLabel:"トークンを送信 (ERC20)",actionSendTokenDesc:"ERC20トークンをアドレスに送信します",actionSwapTokenLabel:"トークンをスワップ",actionSwapTokenDesc:"トークンを別のトークンに交換します",actionApproveTokenLabel:"トークンを承認",actionApproveTokenDesc:"支出元(Spender)によるトークンの使用を許可します",actionWrapNativeLabel:"ネイティブトークンをラップ",actionWrapNativeDesc:"ネイティブトークンをラップします (ETH → WETH)",actionUnwrapNativeLabel:"ネイティブトークンをアンラップ",actionUnwrapNativeDesc:"ネイティブトークンをアンラップします (WETH → ETH)",actionSendNftLabel:"NFTを送信",actionSendNftDesc:"ERC721またはERC1155 NFTを別のアドレスに転送します",fieldToAddress:"受信者アドレス",fieldAmount:"数量",fieldTokenContract:"トークンコントラクト",fieldTokenSymbol:"トークンシンボル",fieldDecimals:"デシマル (小数桁数)",fieldTokenIn:"元のトークン",fieldTokenInSymbol:"元のシンボル",fieldTokenOut:"先のトークン",fieldTokenOutSymbol:"先のシンボル",fieldTokenInDecimals:"元のデシマル",fieldTokenOutDecimals:"先のデシマル",fieldSpenderAddress:"支出元 (Spender) アドレス",fieldAmountUnlimited:"数量 (空欄 = 無制限)",fieldNftContract:"NFTコントラクト",fieldTokenId:"トークンID",fieldTokenStandard:"トークン規格",fieldNftName:"NFT名",formMustBePositiveInteger:"正の整数を入力してください",formAmountExceedsNft:"数量は利用可能な残高 {max} を超えることはできません",receivedButtonValue:"受取額: {value}",actionExecutedFor:"アクション「{action}」が {value} に対して実行されました",buyTokenHelp:"{symbol} の購入をお手伝いします。まず、交換に使用可能なトークンを表示します。",tokenNotFoundOnChain:"このチェーン上でトークン「{symbol}」が見つかりませんでした。購入可能なトレンドトークンはこちらです:",swapPreparing:"スワップの準備中...",swapConfirmYes:"はい",swapChooseFrom:"交換元(支払う)トークンを選択してください:",swapChooseTo:"{symbol} をスワップします。受け取りたいトークンを選択してください:",swapNeedDetails:"スワップの詳細が必要です。交換したいトークンを指定してください(例:「1 ETH を USDC にスワップ」)。",viewNftsLoading:"あなたのNFTコレクションを表示します!",sendTokenChoose:"どのトークンを送信しますか?",sendNftChoose:"どのNFTを送信しますか?",swapChooseToken:"どのトークンをスワップしますか?現在の残高はこちらです:",spendable:"利用可能",welcomeMessage:`**ようこそ! 🚀**
|
|
60
|
-
接続が完了し、DeFiを探索する準備が整いました!トレード、価格チェック、ポートフォリオ分析など、いつでもお手伝いします。`,sendOtherNfts:`
|
|
61
|
-
送信したいNFTが上のリストにない場合は、ウェブサイトから送信してください。
|
|
62
|
-
{link}`},cn:{chatTitle:"Keyring Agent",closeChat:"关闭聊天",messagePlaceholder:"请输入消息....",sendMessage:"发送消息",botIsTyping:"机器人正在输入",canIHelpYou:"有什么我可以帮您的吗?",replyToMessage:"回复消息",replyingTo:"正在回复",replyingToYou:"您",replyingToAgent:"Keyring Agent",cancelReply:"取消回复",suggestionAskText:"提问",suggestionAskUserMessage:"我有一个问题",suggestionAskBotReply:"随便问我任何事情",suggestionBuyText:"购买热门代币",walletConnectedChainUnsupported:"您的钱包已连接,但当前链不支持交易。请切换到支持的链以查看热门代币。",walletNotConnected:"请连接您的钱包以查看热门代币。",actionProcessing:"⏳ 正在处理交易...",actionSuccess:"✅ 交易已完成",actionFail:"❌ 操作取消或失败",txSubmitted:"⏳ 交易已提交。正在等待确认...",txConfirmed:"✅ 交易已确认!",txReverted:"❌ 交易在链上被退回(Reverted)。",txTimeout:"⚠️ 交易已提交但确认超时。请手动检查。",txSuccessful:"✅ 交易成功!",txFailed:"❌ 交易失败。请重试。",txNoHandler:"⚠️ 未配置交易处理器。",txInsufficientGas:"⚠️ **{symbol} 余额不足以支付 Gas 费!** 您当前有 {balance} {symbol},但交易费预计需要 ~{fee} {symbol}。请充值钱包后重试。",txError:"❌ 错误: {message}",swapConfirmButton:"确认",swapConfirmValue:"确认兑换",swapReadyToProceed:"准备好进行兑换了吗?",swapEstimationError:"⚠️ 无法获取兑换估算。错误: {error}",formCancel:"取消",formExecute:"执行",formProcessing:"⏳ 正在处理...",formBalance:"余额:",formTokenNotFound:"您的钱包中未找到该代币。",formNoBalance:"您的钱包中没有 {symbol} 余额。",formInsufficientBalance:"余额不足。可用余额: {balance} {symbol}",formFieldRequired:"{field} 是必填项",formInvalidAddress:"地址无效 (0x + 40位十六进制字符)",formMustBePositive:"必须为正数",formMustBeValidNumber:"必须为有效数字",openChat:"打开聊天",openChatTitle:"打开聊天支持",walletBalanceSpendable:"这是您在 {chain} 链上钱包的可选余额。请选择您想用于此次交易的代币。",walletNoTokensFound:"抱歉,我在 {chain} 链上的钱包中没找到任何代币。请确保您有代币可以进行交易。",walletFetchFailed:"抱歉,无法获取您的钱包余额。请重试。",walletFetchError:"抱歉,获取钱包余额时出错。",insufficientFeeToken:"手续费不足。请确保您有足够的 {symbol} 来支付交易费用,或选择其他代币。",selectAmountOf:`选择要使用的 {symbol} 数量:
|
|
63
|
-
|
|
64
|
-
可用余额: {balance} {symbol}`,swapFeeWarning:`
|
|
65
|
-
⚠️ **手续费所需的 {symbol} 不足!**
|
|
66
|
-
您当前有 {balance} {symbol},但需要 ~{needed} {symbol}。
|
|
67
|
-
`,swapNeedApprove:"在兑换之前,您需要先授权 {symbol}。",swapApproveButton:"授权 {symbol}",swapApproveValue:"授权 {symbol} 以进行兑换",swapNoSourceToken:"⚠️ 您的钱包中没有源代币或余额为 0。",swapSelectAmount:`兑换 {from} → {to}
|
|
68
|
-
|
|
69
|
-
选择要兑换的 {from} 数量:
|
|
70
|
-
|
|
71
|
-
可用余额: {balance} {from}`,swapApprovalRequired:`⚠️ 兑换前需要代币授权。
|
|
72
|
-
|
|
73
|
-
第 1 步:授权 {symbol}
|
|
74
|
-
第 2 步:确认兑换`,swapEstimationFailed:"⚠️ 获取兑换估算失败。请重试。",swapInsufficientNativeBalance:"⚠️ 余额不足!您有 {balance} {symbol} 但需要 {amount}。请充值钱包或减少金额。",swapTokenNotInWallet:"⚠️ 您的钱包中没有 {symbol}。请在兑换前先获取一些代币。",swapInsufficientTokenBalance:"⚠️ 余额不足!您有 {balance} {symbol} 但需要 {amount}。请减少金额或添加更多代币。",selectAmountToSwap:`选择要兑换的 {symbol} 数量:
|
|
75
|
-
|
|
76
|
-
可用余额: {balance} {symbol}`,couldNotLoadTokenList:"⚠️ 无法加载代币列表。请指定目标代币。",trendingTokensForReceive:"📈 {chain} 链上的热门代币。请选择您想收到的代币或输入代币名称:",txProcessing:"⏳ 交易处理中... 请在钱包中确认。",txConfirmedSwap:"✅ 交易已确认!您的兑换已完成。",txRevertedSwap:"❌ 交易在链上被退回。请重试。",txSuccessfulSwap:"✅ 交易成功!您的兑换已完成。",txDataNotAvailable:"⚠️ 交易数据不可用。",approvalDataNotAvailable:"⚠️ 授权数据不可用。",approving:"正在授权 {symbol}... 请在钱包中确认。",approvalSuccess:"✅ {symbol} 授权成功!",approvalConfirmSwap:"现在您可以执行兑换了。",confirmSwapButton:"确认兑换",approvalFailed:"❌ 授权失败。请重试。",couldNotFetchBalance:"⚠️ 无法获取您的钱包余额。",couldNotLoadBalance:"⚠️ 无法加载余额。请重试。",couldNotFetchBalanceRetry:"⚠️ 无法获取您的余额。请重试。",nftSendReview:`📤 发送 **{name}** ({standard} #{tokenId})
|
|
77
|
-
|
|
78
|
-
请核对并在下方填写接收者地址:`,nftCollectionHeader:`保有中のNFT一覧 :
|
|
79
|
-
|
|
80
|
-
{list}`,nftMoreItems:`
|
|
81
|
-
|
|
82
|
-
他 {count} 件のNFT...`,nftSelectBelow:`
|
|
83
|
-
|
|
84
|
-
送信するNFTを以下から選択してください`,nftNoCollection:"您在该链的钱包中没有任何 NFT。",nftMultipleMatchesForTokenId:"在您的钱包中找到了 {count} 个 Token ID #{tokenId} 的 NFT。请选择您要发送的 NFT:",nftNotFoundInWallet:'我在您的 NFT 收藏中没找到 "{name}"。以下是您的 NFT:',nftFetchError:"抱歉,获取您的 NFT 时出错。",trendingTokensHeader:"📈 以下是 {chain} 链上目前呈上升趋势的热门代币列表",trendingTokensQuestion:`
|
|
85
|
-
有您想购买的代币吗?`,trendingTokensError:"抱歉,获取热门代币时出错。",errorProcessingRequest:"抱歉,处理您的请求时出错。",buttonBuyWith:"使用 {symbol} 购买",buttonUsePercent:"使用 {percent}% 的 {symbol}",buttonBuyToken:"购买 {name} ({symbol})",buttonSendNft:"发送 {name}",buttonSwapTo:"兑换为 {name} ({symbol})",buttonBuySymbol:"购买 {symbol}",viewBalancesLoading:"正在获取您的钱包余额...",viewBalancesHeader:`您在 {chain} 上的代币余额:
|
|
86
|
-
|
|
87
|
-
{list}
|
|
88
|
-
|
|
89
|
-
选择一个代币进行操作:`,viewBalancesEmpty:"您在该链的钱包中没有任何代币。",viewBalancesFetchError:"抱歉,获取您的余额时出错。",buttonSendToken:"发送 {symbol}",buttonSwapToken:"兑换 {symbol}",buttonBuyMoreToken:"购买更多 {symbol}",actionSendNativeLabel:"发送原生代币",actionSendNativeDesc:"将原生代币 (ETH, BNB, MATIC 等) 发送到指定地址",actionSendTokenLabel:"发送代币 (ERC20)",actionSendTokenDesc:"将 ERC20 代币发送到指定地址",actionSwapTokenLabel:"兑换代币",actionSwapTokenDesc:"将一种代币兑换为另一种",actionApproveTokenLabel:"授权代币",actionApproveTokenDesc:"授权支出方使用您的代币",actionWrapNativeLabel:"包装 (Wrap) 原生代币",actionWrapNativeDesc:"包装原生代币 (例如 ETH → WETH)",actionUnwrapNativeLabel:"解包 (Unwrap) 原生代币",actionUnwrapNativeDesc:"解包原生代币 (例如 WETH → ETH)",actionSendNftLabel:"发送 NFT",actionSendNftDesc:"将 ERC721 或 ERC1155 NFT 转移到另一个地址",fieldToAddress:"接收者地址",fieldAmount:"金额",fieldTokenContract:"代币合约",fieldTokenSymbol:"代币符号",fieldDecimals:"精度 (Decimals)",fieldTokenIn:"源代币 (From)",fieldTokenInSymbol:"源代币符号",fieldTokenOut:"目标代币 (To)",fieldTokenOutSymbol:"目标代币符号",fieldTokenInDecimals:"源代币精度",fieldTokenOutDecimals:"目标代币精度",fieldSpenderAddress:"支出方 (Spender) 地址",fieldAmountUnlimited:"金额 (留空 = 无限制)",fieldNftContract:"NFT 合约",fieldTokenId:"代币 ID",fieldTokenStandard:"代币标准",fieldNftName:"NFT 名称",formMustBePositiveInteger:"必须为正整数",formAmountExceedsNft:"金额不能超过可用余额 {max}",receivedButtonValue:"收到: {value}",actionExecutedFor:'操作 "{action}" 已执行,对象为: {value}',buyTokenHelp:"我会帮您购买 {symbol}。让我为您显示可用于交易的代币。",tokenNotFoundOnChain:'我在该链上没找到代币 "{symbol}"。以下是您可以购买的热门代币:',swapPreparing:"正在准备兑换...",swapConfirmYes:"是",swapChooseFrom:"请选择您想从哪个代币进行兑换:",swapChooseTo:"您想兑换 {symbol}。请选择您想收到的代币:",swapNeedDetails:"我需要更多关于兑换的细节。请指定您想兑换的代币(例如 “将 1 ETH 兑换为 USDC”)。",viewNftsLoading:"正在为您展示 NFT 收藏!",sendTokenChoose:"您想发送哪个代币?",sendNftChoose:"您想发送哪个 NFT?",swapChooseToken:"您想兑换哪个代币?以下是您的当前余额:",spendable:"可用余额",welcomeMessage:`**欢迎! 🚀**
|
|
90
|
-
您已连接并准备好探索 DeFi!我可以帮您进行交易、查询价格,并在需要时分析您的资产组合。`,sendOtherNfts:`
|
|
91
|
-
如果您想发送的 NFT 不在上方列表中,请访问我们的网站进行发送。
|
|
92
|
-
{link}`}};function go(e,t){return ho[t]?.[e]??ho.en[e]??e}function Vs(e,t){return e.replace(/\{(\w+)\}/g,(n,s)=>t[s]??`{${s}}`)}const wo=te.createContext(void 0),Gs=({children:e,initialLanguage:t="en"})=>{const[n,s]=te.useState(t);te.useEffect(()=>{t&&s(t)},[t]);const o=te.useCallback(r=>go(r,n),[n]),a=te.useCallback((r,i)=>Vs(go(r,n),i),[n]);return O.jsx(wo.Provider,{value:{language:n,setLanguage:s,t:o,ti:a},children:e})},cn=()=>{const e=te.useContext(wo);if(!e)throw new Error("useLanguage must be used within a LanguageProvider");return e},Ys=te.memo(({onClick:e,buttonSize:t=56})=>{const{t:n}=cn(),s=o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),e())};return O.jsx("button",{className:"chat-button",onClick:e,onKeyDown:s,"aria-label":n("openChat"),title:n("openChatTitle"),type:"button",children:O.jsx("img",{src:Ws,width:t,height:t,alt:"Ask AI"})})});function ut(e){const t={formatters:void 0,fees:void 0,serializers:void 0,...e};function n(s){return o=>{const a=typeof o=="function"?o(s):o,r={...s,...a};return Object.assign(r,{extend:n(r)})}}return Object.assign(t,{extend:n(t)})}const bo="2.46.3";let Nn={getDocsUrl:({docsBaseUrl:e,docsPath:t="",docsSlug:n})=>t?`${e??"https://viem.sh"}${t}${n?`#${n}`:""}`:void 0,version:`viem@${bo}`};class me extends Error{constructor(t,n={}){const s=n.cause instanceof me?n.cause.details:n.cause?.message?n.cause.message:n.details,o=n.cause instanceof me&&n.cause.docsPath||n.docsPath,a=Nn.getDocsUrl?.({...n,docsPath:o}),r=[t||"An error occurred.","",...n.metaMessages?[...n.metaMessages,""]:[],...a?[`Docs: ${a}`]:[],...s?[`Details: ${s}`]:[],...Nn.version?[`Version: ${Nn.version}`]:[]].join(`
|
|
93
|
-
`);super(r,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=s,this.docsPath=o,this.metaMessages=n.metaMessages,this.name=n.name??this.name,this.shortMessage=t,this.version=bo}walk(t){return yo(this,t)}}function yo(e,t){return t?.(e)?e:e&&typeof e=="object"&&"cause"in e&&e.cause!==void 0?yo(e.cause,t):t?null:e}class Bn extends me{constructor({max:t,min:n,signed:s,size:o,value:a}){super(`Number "${a}" is not in safe ${o?`${o*8}-bit ${s?"signed":"unsigned"} `:""}integer range ${t?`(${n} to ${t})`:`(above ${n})`}`,{name:"IntegerOutOfRangeError"})}}class Js extends me{constructor({givenSize:t,maxSize:n}){super(`Size cannot exceed ${n} bytes. Given size: ${t} bytes.`,{name:"SizeOverflowError"})}}function Ot(e,{strict:t=!0}={}){return!e||typeof e!="string"?!1:t?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith("0x")}function Je(e){return Ot(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}function ln(e,{dir:t="left"}={}){let n=typeof e=="string"?e.replace("0x",""):e,s=0;for(let o=0;o<n.length-1&&n[t==="left"?o:n.length-o-1].toString()==="0";o++)s++;return n=t==="left"?n.slice(s):n.slice(0,n.length-s),typeof e=="string"?(n.length===1&&t==="right"&&(n=`${n}0`),`0x${n.length%2===1?`0${n}`:n}`):n}class Ao extends me{constructor({offset:t,position:n,size:s}){super(`Slice ${n==="start"?"starting":"ending"} at offset "${t}" is out-of-bounds (size: ${s}).`,{name:"SliceOffsetOutOfBoundsError"})}}class ko extends me{constructor({size:t,targetSize:n,type:s}){super(`${s.charAt(0).toUpperCase()}${s.slice(1).toLowerCase()} size (${t}) exceeds padding size (${n}).`,{name:"SizeExceedsPaddingSizeError"})}}function Dt(e,{dir:t,size:n=32}={}){return typeof e=="string"?bt(e,{dir:t,size:n}):zs(e,{dir:t,size:n})}function bt(e,{dir:t,size:n=32}={}){if(n===null)return e;const s=e.replace("0x","");if(s.length>n*2)throw new ko({size:Math.ceil(s.length/2),targetSize:n,type:"hex"});return`0x${s[t==="right"?"padEnd":"padStart"](n*2,"0")}`}function zs(e,{dir:t,size:n=32}={}){if(n===null)return e;if(e.length>n)throw new ko({size:e.length,targetSize:n,type:"bytes"});const s=new Uint8Array(n);for(let o=0;o<n;o++){const a=t==="right";s[a?o:n-o-1]=e[a?o:e.length-o-1]}return s}const js=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function Lt(e,t={}){return typeof e=="number"||typeof e=="bigint"?pe(e,t):typeof e=="string"?To(e,t):typeof e=="boolean"?vo(e,t):ft(e,t)}function vo(e,t={}){const n=`0x${Number(e)}`;return typeof t.size=="number"?(Ut(n,{size:t.size}),Dt(n,{size:t.size})):n}function ft(e,t={}){let n="";for(let o=0;o<e.length;o++)n+=js[e[o]];const s=`0x${n}`;return typeof t.size=="number"?(Ut(s,{size:t.size}),Dt(s,{dir:"right",size:t.size})):s}function pe(e,t={}){const{signed:n,size:s}=t,o=BigInt(e);let a;s?n?a=(1n<<BigInt(s)*8n-1n)-1n:a=2n**(BigInt(s)*8n)-1n:typeof e=="number"&&(a=BigInt(Number.MAX_SAFE_INTEGER));const r=typeof a=="bigint"&&n?-a-1n:0;if(a&&o>a||o<r){const l=typeof e=="bigint"?"n":"";throw new Bn({max:a?`${a}${l}`:void 0,min:`${r}${l}`,signed:n,size:s,value:`${e}${l}`})}const i=`0x${(n&&o<0?(1n<<BigInt(s*8))+BigInt(o):o).toString(16)}`;return s?Dt(i,{size:s}):i}const qs=new TextEncoder;function To(e,t={}){const n=qs.encode(e);return ft(n,t)}const Qs=new TextEncoder;function Fn(e,t={}){return typeof e=="number"||typeof e=="bigint"?Xs(e,t):typeof e=="boolean"?Ks(e,t):Ot(e)?Ct(e,t):Eo(e,t)}function Ks(e,t={}){const n=new Uint8Array(1);return n[0]=Number(e),typeof t.size=="number"?(Ut(n,{size:t.size}),Dt(n,{size:t.size})):n}const pt={zero:48,nine:57,A:65,F:70,a:97,f:102};function Co(e){if(e>=pt.zero&&e<=pt.nine)return e-pt.zero;if(e>=pt.A&&e<=pt.F)return e-(pt.A-10);if(e>=pt.a&&e<=pt.f)return e-(pt.a-10)}function Ct(e,t={}){let n=e;t.size&&(Ut(n,{size:t.size}),n=Dt(n,{dir:"right",size:t.size}));let s=n.slice(2);s.length%2&&(s=`0${s}`);const o=s.length/2,a=new Uint8Array(o);for(let r=0,i=0;r<o;r++){const l=Co(s.charCodeAt(i++)),b=Co(s.charCodeAt(i++));if(l===void 0||b===void 0)throw new me(`Invalid byte sequence ("${s[i-2]}${s[i-1]}" in "${s}").`);a[r]=l*16+b}return a}function Xs(e,t){const n=pe(e,t);return Ct(n)}function Eo(e,t={}){const n=Qs.encode(e);return typeof t.size=="number"?(Ut(n,{size:t.size}),Dt(n,{dir:"right",size:t.size})):n}function Ut(e,{size:t}){if(Je(e)>t)throw new Js({givenSize:Je(e),maxSize:t})}function Mt(e,t={}){const{signed:n}=t;t.size&&Ut(e,{size:t.size});const s=BigInt(e);if(!n)return s;const o=(e.length-2)/2,a=(1n<<BigInt(o)*8n-1n)-1n;return s<=a?s:s-BigInt(`0x${"f".padStart(o*2,"f")}`)-1n}function dn(e,t={}){const n=Mt(e,t),s=Number(n);if(!Number.isSafeInteger(s))throw new Bn({max:`${Number.MAX_SAFE_INTEGER}`,min:`${Number.MIN_SAFE_INTEGER}`,signed:t.signed,size:t.size,value:`${n}n`});return s}function Pn(e,t){return({exclude:n,format:s})=>({exclude:n,format:(o,a)=>{const r=t(o,a);if(n)for(const i of n)delete r[i];return{...r,...s(o,a)}},type:e})}const So={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function On(e,t){const n={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?dn(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?dn(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?So[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return e.authorizationList&&(n.authorizationList=Zs(e.authorizationList)),n.yParity=(()=>{if(e.yParity)return Number(e.yParity);if(typeof n.v=="bigint"){if(n.v===0n||n.v===27n)return 0;if(n.v===1n||n.v===28n)return 1;if(n.v>=35n)return n.v%2n===0n?1:0}})(),n.type==="legacy"&&(delete n.accessList,delete n.maxFeePerBlobGas,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.yParity),n.type==="eip2930"&&(delete n.maxFeePerBlobGas,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas),n.type==="eip1559"&&delete n.maxFeePerBlobGas,n}const _s=Pn("transaction",On);function Zs(e){return e.map(t=>({address:t.address,chainId:Number(t.chainId),nonce:Number(t.nonce),r:t.r,s:t.s,yParity:Number(t.yParity)}))}function $s(e,t){const n=(e.transactions??[]).map(s=>typeof s=="string"?s:On(s));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:n,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}const ea=Pn("block",$s);function ta(e,{args:t,eventName:n}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,blockTimestamp:e.blockTimestamp?BigInt(e.blockTimestamp):e.blockTimestamp===null?null:void 0,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...n?{args:t,eventName:n}:{}}}const na={"0x0":"reverted","0x1":"success"};function oa(e,t){const n={...e,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,contractAddress:e.contractAddress?e.contractAddress:null,cumulativeGasUsed:e.cumulativeGasUsed?BigInt(e.cumulativeGasUsed):null,effectiveGasPrice:e.effectiveGasPrice?BigInt(e.effectiveGasPrice):null,gasUsed:e.gasUsed?BigInt(e.gasUsed):null,logs:e.logs?e.logs.map(s=>ta(s)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?dn(e.transactionIndex):null,status:e.status?na[e.status]:null,type:e.type?So[e.type]||e.type:null};return e.blobGasPrice&&(n.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(n.blobGasUsed=BigInt(e.blobGasUsed)),n}const sa=Pn("transactionReceipt",oa),aa={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function ra(e,t){const n={};return typeof e.authorizationList<"u"&&(n.authorizationList=ia(e.authorizationList)),typeof e.accessList<"u"&&(n.accessList=e.accessList),typeof e.blobVersionedHashes<"u"&&(n.blobVersionedHashes=e.blobVersionedHashes),typeof e.blobs<"u"&&(typeof e.blobs[0]!="string"?n.blobs=e.blobs.map(s=>ft(s)):n.blobs=e.blobs),typeof e.data<"u"&&(n.data=e.data),e.account&&(n.from=e.account.address),typeof e.from<"u"&&(n.from=e.from),typeof e.gas<"u"&&(n.gas=pe(e.gas)),typeof e.gasPrice<"u"&&(n.gasPrice=pe(e.gasPrice)),typeof e.maxFeePerBlobGas<"u"&&(n.maxFeePerBlobGas=pe(e.maxFeePerBlobGas)),typeof e.maxFeePerGas<"u"&&(n.maxFeePerGas=pe(e.maxFeePerGas)),typeof e.maxPriorityFeePerGas<"u"&&(n.maxPriorityFeePerGas=pe(e.maxPriorityFeePerGas)),typeof e.nonce<"u"&&(n.nonce=pe(e.nonce)),typeof e.to<"u"&&(n.to=e.to),typeof e.type<"u"&&(n.type=aa[e.type]),typeof e.value<"u"&&(n.value=pe(e.value)),n}function ia(e){return e.map(t=>({address:t.address,r:t.r?pe(BigInt(t.r)):t.r,s:t.s?pe(BigInt(t.s)):t.s,chainId:pe(t.chainId),nonce:pe(t.nonce),...typeof t.yParity<"u"?{yParity:pe(t.yParity)}:{},...typeof t.v<"u"&&typeof t.yParity>"u"?{v:pe(t.v)}:{}}))}const Rt=2n**256n-1n;function Ht(e){return typeof e[0]=="string"?Et(e):ca(e)}function ca(e){let t=0;for(const o of e)t+=o.length;const n=new Uint8Array(t);let s=0;for(const o of e)n.set(o,s),s+=o.length;return n}function Et(e){return`0x${e.reduce((t,n)=>t+n.replace("0x",""),"")}`}class xo extends me{constructor({offset:t}){super(`Offset \`${t}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class la extends me{constructor({length:t,position:n}){super(`Position \`${n}\` is out of bounds (\`0 < position < ${t}\`).`,{name:"PositionOutOfBoundsError"})}}class da extends me{constructor({count:t,limit:n}){super(`Recursive read limit of \`${n}\` exceeded (recursive read count: \`${t}\`).`,{name:"RecursiveReadLimitExceededError"})}}const ua={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new da({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new la({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new xo({offset:e});const t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new xo({offset:e});const t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){const t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){const n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){const t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){const t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){const t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){const t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();const n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();const e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();const e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();const e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();const e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){const t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function Io(e,{recursiveReadLimit:t=8192}={}){const n=Object.create(ua);return n.bytes=e,n.dataView=new DataView(e.buffer??e,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}function St(e,t="hex"){const n=No(e),s=Io(new Uint8Array(n.length));return n.encode(s),t==="hex"?ft(s.bytes):s.bytes}function No(e){return Array.isArray(e)?fa(e.map(t=>No(t))):pa(e)}function fa(e){const t=e.reduce((o,a)=>o+a.length,0),n=Bo(t);return{length:t<=55?1+t:1+n+t,encode(o){t<=55?o.pushByte(192+t):(o.pushByte(247+n),n===1?o.pushUint8(t):n===2?o.pushUint16(t):n===3?o.pushUint24(t):o.pushUint32(t));for(const{encode:a}of e)a(o)}}}function pa(e){const t=typeof e=="string"?Ct(e):e,n=Bo(t.length);return{length:t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length,encode(o){t.length===1&&t[0]<128?o.pushBytes(t):t.length<=55?(o.pushByte(128+t.length),o.pushBytes(t)):(o.pushByte(183+n),n===1?o.pushUint8(t.length):n===2?o.pushUint16(t.length):n===3?o.pushUint24(t.length):o.pushUint32(t.length),o.pushBytes(t))}}}function Bo(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new me("Length is too large.")}const ma={gwei:9,wei:18},ha={ether:-9,wei:9};function Le(e,t){let n=e.toString();const s=n.startsWith("-");s&&(n=n.slice(1)),n=n.padStart(t,"0");let[o,a]=[n.slice(0,n.length-t),n.slice(n.length-t)];return a=a.replace(/(0+)$/,""),`${s?"-":""}${o||"0"}${a?`.${a}`:""}`}function ga(e,t="wei"){return Le(e,ma[t])}function xt(e,t="wei"){return Le(e,ha[t])}function Fo(e){const t=Object.entries(e).map(([s,o])=>o===void 0||o===!1?null:[s,o]).filter(Boolean),n=t.reduce((s,[o])=>Math.max(s,o.length),0);return t.map(([s,o])=>` ${`${s}:`.padEnd(n+1)} ${o}`).join(`
|
|
94
|
-
`)}class wa extends me{constructor({v:t}){super(`Invalid \`v\` value "${t}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class ba extends me{constructor({transaction:t}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",Fo(t),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class ya extends me{constructor({storageKey:t}){super(`Size for storage key "${t}" is invalid. Expected 32 bytes. Got ${Math.floor((t.length-2)/2)} bytes.`,{name:"InvalidStorageKeySizeError"})}}function Aa(e){if(!e||e.length===0)return[];const t=[];for(const n of e){const{chainId:s,nonce:o,...a}=n,r=n.address;t.push([s?Lt(s):"0x",r,o?Lt(o):"0x",...Kt({},a)])}return t}function Po(e){const{kzg:t}=e,n=e.to??(typeof e.blobs[0]=="string"?"hex":"bytes"),s=typeof e.blobs[0]=="string"?e.blobs.map(a=>Ct(a)):e.blobs,o=[];for(const a of s)o.push(Uint8Array.from(t.blobToKzgCommitment(a)));return n==="bytes"?o:o.map(a=>ft(a))}function Oo(e){const{kzg:t}=e,n=e.to??(typeof e.blobs[0]=="string"?"hex":"bytes"),s=typeof e.blobs[0]=="string"?e.blobs.map(r=>Ct(r)):e.blobs,o=typeof e.commitments[0]=="string"?e.commitments.map(r=>Ct(r)):e.commitments,a=[];for(let r=0;r<s.length;r++){const i=s[r],l=o[r];a.push(Uint8Array.from(t.computeBlobKzgProof(i,l)))}return n==="bytes"?a:a.map(r=>ft(r))}function ka(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Do(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function zt(e,...t){if(!ka(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function un(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Lo(e,t){zt(e);const n=t.outputLen;if(e.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function va(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function jt(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function Dn(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function rt(e,t){return e<<32-t|e>>>t}const Ta=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ca(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function Ea(e){for(let t=0;t<e.length;t++)e[t]=Ca(e[t]);return e}const Uo=Ta?e=>e:Ea;function Sa(e){if(typeof e!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(e))}function Ln(e){return typeof e=="string"&&(e=Sa(e)),zt(e),e}class Mo{}function Ro(e){const t=s=>e().update(Ln(s)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function xa(e,t,n,s){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,s);const o=BigInt(32),a=BigInt(4294967295),r=Number(n>>o&a),i=Number(n&a),l=s?4:0,b=s?0:4;e.setUint32(t+l,r,s),e.setUint32(t+b,i,s)}function Ia(e,t,n){return e&t^~e&n}function Na(e,t,n){return e&t^e&n^t&n}class Ba extends Mo{constructor(t,n,s,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=n,this.padOffset=s,this.isLE=o,this.buffer=new Uint8Array(t),this.view=Dn(this.buffer)}update(t){un(this),t=Ln(t),zt(t);const{view:n,buffer:s,blockLen:o}=this,a=t.length;for(let r=0;r<a;){const i=Math.min(o-this.pos,a-r);if(i===o){const l=Dn(t);for(;o<=a-r;r+=o)this.process(l,r);continue}s.set(t.subarray(r,r+i),this.pos),this.pos+=i,r+=i,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){un(this),Lo(t,this),this.finished=!0;const{buffer:n,view:s,blockLen:o,isLE:a}=this;let{pos:r}=this;n[r++]=128,jt(this.buffer.subarray(r)),this.padOffset>o-r&&(this.process(s,0),r=0);for(let z=r;z<o;z++)n[z]=0;xa(s,o-8,BigInt(this.length*8),a),this.process(s,0);const i=Dn(t),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const b=l/4,D=this.get();if(b>D.length)throw new Error("_sha2: outputLen bigger than state");for(let z=0;z<b;z++)i.setUint32(4*z,D[z],a)}digest(){const{buffer:t,outputLen:n}=this;this.digestInto(t);const s=t.slice(0,n);return this.destroy(),s}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:n,buffer:s,length:o,finished:a,destroyed:r,pos:i}=this;return t.destroyed=r,t.finished=a,t.length=o,t.pos=i,o%n&&t.buffer.set(s),t}clone(){return this._cloneInto()}}const yt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),fn=BigInt(2**32-1),Ho=BigInt(32);function Fa(e,t=!1){return t?{h:Number(e&fn),l:Number(e>>Ho&fn)}:{h:Number(e>>Ho&fn)|0,l:Number(e&fn)|0}}function Pa(e,t=!1){const n=e.length;let s=new Uint32Array(n),o=new Uint32Array(n);for(let a=0;a<n;a++){const{h:r,l:i}=Fa(e[a],t);[s[a],o[a]]=[r,i]}return[s,o]}const Oa=(e,t,n)=>e<<n|t>>>32-n,Da=(e,t,n)=>t<<n|e>>>32-n,La=(e,t,n)=>t<<n-32|e>>>64-n,Ua=(e,t,n)=>e<<n-32|t>>>64-n,Ma=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),At=new Uint32Array(64);class Ra extends Ba{constructor(t=32){super(64,t,8,!1),this.A=yt[0]|0,this.B=yt[1]|0,this.C=yt[2]|0,this.D=yt[3]|0,this.E=yt[4]|0,this.F=yt[5]|0,this.G=yt[6]|0,this.H=yt[7]|0}get(){const{A:t,B:n,C:s,D:o,E:a,F:r,G:i,H:l}=this;return[t,n,s,o,a,r,i,l]}set(t,n,s,o,a,r,i,l){this.A=t|0,this.B=n|0,this.C=s|0,this.D=o|0,this.E=a|0,this.F=r|0,this.G=i|0,this.H=l|0}process(t,n){for(let z=0;z<16;z++,n+=4)At[z]=t.getUint32(n,!1);for(let z=16;z<64;z++){const k=At[z-15],x=At[z-2],B=rt(k,7)^rt(k,18)^k>>>3,S=rt(x,17)^rt(x,19)^x>>>10;At[z]=S+At[z-7]+B+At[z-16]|0}let{A:s,B:o,C:a,D:r,E:i,F:l,G:b,H:D}=this;for(let z=0;z<64;z++){const k=rt(i,6)^rt(i,11)^rt(i,25),x=D+k+Ia(i,l,b)+Ma[z]+At[z]|0,S=(rt(s,2)^rt(s,13)^rt(s,22))+Na(s,o,a)|0;D=b,b=l,l=i,i=r+x|0,r=a,a=o,o=s,s=x+S|0}s=s+this.A|0,o=o+this.B|0,a=a+this.C|0,r=r+this.D|0,i=i+this.E|0,l=l+this.F|0,b=b+this.G|0,D=D+this.H|0,this.set(s,o,a,r,i,l,b,D)}roundClean(){jt(At)}destroy(){this.set(0,0,0,0,0,0,0,0),jt(this.buffer)}}const Ha=Ro(()=>new Ra);function Wa(e,t){return Ha(Ot(e,{strict:!1})?Fn(e):e)}function Va(e){const{commitment:t,version:n=1}=e,s=e.to??(typeof t=="string"?"hex":"bytes"),o=Wa(t);return o.set([n],0),s==="bytes"?o:ft(o)}function Ga(e){const{commitments:t,version:n}=e,s=e.to??(typeof t[0]=="string"?"hex":"bytes"),o=[];for(const a of t)o.push(Va({commitment:a,to:s,version:n}));return o}const Wo=6,Vo=32,Un=4096,Go=Vo*Un,Yo=Go*Wo-1-1*Un*Wo,Jo=1;class Ya extends me{constructor({maxSize:t,size:n}){super("Blob size is too large.",{metaMessages:[`Max: ${t} bytes`,`Given: ${n} bytes`],name:"BlobSizeTooLargeError"})}}class zo extends me{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class Ja extends me{constructor({hash:t,size:n}){super(`Versioned hash "${t}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${n}`],name:"InvalidVersionedHashSizeError"})}}class za extends me{constructor({hash:t,version:n}){super(`Versioned hash "${t}" version is invalid.`,{metaMessages:[`Expected: ${Jo}`,`Received: ${n}`],name:"InvalidVersionedHashVersionError"})}}function ja(e){const t=e.to??(typeof e.data=="string"?"hex":"bytes"),n=typeof e.data=="string"?Ct(e.data):e.data,s=Je(n);if(!s)throw new zo;if(s>Yo)throw new Ya({maxSize:Yo,size:s});const o=[];let a=!0,r=0;for(;a;){const i=Io(new Uint8Array(Go));let l=0;for(;l<Un;){const b=n.slice(r,r+(Vo-1));if(i.pushByte(0),i.pushBytes(b),b.length<31){i.pushByte(128),a=!1;break}l++,r+=31}o.push(i)}return t==="bytes"?o.map(i=>i.bytes):o.map(i=>ft(i.bytes))}function qa(e){const{data:t,kzg:n,to:s}=e,o=e.blobs??ja({data:t,to:s}),a=e.commitments??Po({blobs:o,kzg:n,to:s}),r=e.proofs??Oo({blobs:o,commitments:a,kzg:n,to:s}),i=[];for(let l=0;l<o.length;l++)i.push({blob:o[l],commitment:a[l],proof:r[l]});return i}class it extends me{constructor({address:t}){super(`Address "${t}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}class pn extends me{constructor({chainId:t}){super(typeof t=="number"?`Chain ID "${t}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class Wt extends me{constructor({cause:t,message:n}={}){const s=n?.replace("execution reverted: ","")?.replace("execution reverted","");super(`Execution reverted ${s?`with reason: ${s}`:"for an unknown reason"}.`,{cause:t,name:"ExecutionRevertedError"})}}Object.defineProperty(Wt,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(Wt,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted|gas required exceeds allowance/});class It extends me{constructor({cause:t,maxFeePerGas:n}={}){super(`The fee cap (\`maxFeePerGas\`${n?` = ${xt(n)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:t,name:"FeeCapTooHighError"})}}Object.defineProperty(It,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class Mn extends me{constructor({cause:t,maxFeePerGas:n}={}){super(`The fee cap (\`maxFeePerGas\`${n?` = ${xt(n)}`:""} gwei) cannot be lower than the block base fee.`,{cause:t,name:"FeeCapTooLowError"})}}Object.defineProperty(Mn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});class Rn extends me{constructor({cause:t,nonce:n}={}){super(`Nonce provided for the transaction ${n?`(${n}) `:""}is higher than the next one expected.`,{cause:t,name:"NonceTooHighError"})}}Object.defineProperty(Rn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});class Hn extends me{constructor({cause:t,nonce:n}={}){super([`Nonce provided for the transaction ${n?`(${n}) `:""}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(`
|
|
95
|
-
`),{cause:t,name:"NonceTooLowError"})}}Object.defineProperty(Hn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});class Wn extends me{constructor({cause:t,nonce:n}={}){super(`Nonce provided for the transaction ${n?`(${n}) `:""}exceeds the maximum allowed nonce.`,{cause:t,name:"NonceMaxValueError"})}}Object.defineProperty(Wn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});class Vn extends me{constructor({cause:t}={}){super(["The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account."].join(`
|
|
96
|
-
`),{cause:t,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:"InsufficientFundsError"})}}Object.defineProperty(Vn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class Gn extends me{constructor({cause:t,gas:n}={}){super(`The amount of gas ${n?`(${n}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:t,name:"IntrinsicGasTooHighError"})}}Object.defineProperty(Gn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class Yn extends me{constructor({cause:t,gas:n}={}){super(`The amount of gas ${n?`(${n}) `:""}provided for the transaction is too low.`,{cause:t,name:"IntrinsicGasTooLowError"})}}Object.defineProperty(Yn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class Jn extends me{constructor({cause:t}){super("The transaction type is not supported for this chain.",{cause:t,name:"TransactionTypeNotSupportedError"})}}Object.defineProperty(Jn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class qt extends me{constructor({cause:t,maxPriorityFeePerGas:n,maxFeePerGas:s}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${n?` = ${xt(n)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${s?` = ${xt(s)} gwei`:""}).`].join(`
|
|
97
|
-
`),{cause:t,name:"TipAboveFeeCapError"})}}Object.defineProperty(qt,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class jo extends me{constructor({cause:t}){super(`An error occurred while executing: ${t?.shortMessage}`,{cause:t,name:"UnknownNodeError"})}}class qo extends Map{constructor(t){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=t}get(t){const n=super.get(t);return super.has(t)&&n!==void 0&&(this.delete(t),super.set(t,n)),n}set(t,n){if(super.set(t,n),this.maxSize&&this.size>this.maxSize){const s=this.keys().next().value;s&&this.delete(s)}return this}}const Qa=BigInt(0),Qt=BigInt(1),Ka=BigInt(2),Xa=BigInt(7),_a=BigInt(256),Za=BigInt(113),Qo=[],Ko=[],Xo=[];for(let e=0,t=Qt,n=1,s=0;e<24;e++){[n,s]=[s,(2*n+3*s)%5],Qo.push(2*(5*s+n)),Ko.push((e+1)*(e+2)/2%64);let o=Qa;for(let a=0;a<7;a++)t=(t<<Qt^(t>>Xa)*Za)%_a,t&Ka&&(o^=Qt<<(Qt<<BigInt(a))-Qt);Xo.push(o)}const _o=Pa(Xo,!0),$a=_o[0],er=_o[1],Zo=(e,t,n)=>n>32?La(e,t,n):Oa(e,t,n),$o=(e,t,n)=>n>32?Ua(e,t,n):Da(e,t,n);function tr(e,t=24){const n=new Uint32Array(10);for(let s=24-t;s<24;s++){for(let r=0;r<10;r++)n[r]=e[r]^e[r+10]^e[r+20]^e[r+30]^e[r+40];for(let r=0;r<10;r+=2){const i=(r+8)%10,l=(r+2)%10,b=n[l],D=n[l+1],z=Zo(b,D,1)^n[i],k=$o(b,D,1)^n[i+1];for(let x=0;x<50;x+=10)e[r+x]^=z,e[r+x+1]^=k}let o=e[2],a=e[3];for(let r=0;r<24;r++){const i=Ko[r],l=Zo(o,a,i),b=$o(o,a,i),D=Qo[r];o=e[D],a=e[D+1],e[D]=l,e[D+1]=b}for(let r=0;r<50;r+=10){for(let i=0;i<10;i++)n[i]=e[r+i];for(let i=0;i<10;i++)e[r+i]^=~n[(i+2)%10]&n[(i+4)%10]}e[0]^=$a[s],e[1]^=er[s]}jt(n)}class zn extends Mo{constructor(t,n,s,o=!1,a=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=t,this.suffix=n,this.outputLen=s,this.enableXOF=o,this.rounds=a,Do(s),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=va(this.state)}clone(){return this._cloneInto()}keccak(){Uo(this.state32),tr(this.state32,this.rounds),Uo(this.state32),this.posOut=0,this.pos=0}update(t){un(this),t=Ln(t),zt(t);const{blockLen:n,state:s}=this,o=t.length;for(let a=0;a<o;){const r=Math.min(n-this.pos,o-a);for(let i=0;i<r;i++)s[this.pos++]^=t[a++];this.pos===n&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:t,suffix:n,pos:s,blockLen:o}=this;t[s]^=n,(n&128)!==0&&s===o-1&&this.keccak(),t[o-1]^=128,this.keccak()}writeInto(t){un(this,!1),zt(t),this.finish();const n=this.state,{blockLen:s}=this;for(let o=0,a=t.length;o<a;){this.posOut>=s&&this.keccak();const r=Math.min(s-this.posOut,a-o);t.set(n.subarray(this.posOut,this.posOut+r),o),this.posOut+=r,o+=r}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return Do(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(Lo(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,jt(this.state)}_cloneInto(t){const{blockLen:n,suffix:s,outputLen:o,rounds:a,enableXOF:r}=this;return t||(t=new zn(n,s,o,r,a)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=s,t.outputLen=o,t.enableXOF=r,t.destroyed=this.destroyed,t}}const nr=(e,t,n)=>Ro(()=>new zn(t,e,n)),or=nr(1,136,256/8);function es(e,t){const n=t||"hex",s=or(Ot(e,{strict:!1})?Fn(e):e);return n==="bytes"?s:Lt(s)}const jn=new qo(8192);function sr(e,t){if(jn.has(`${e}.${t}`))return jn.get(`${e}.${t}`);const n=e.substring(2).toLowerCase(),s=es(Eo(n),"bytes"),o=n.split("");for(let r=0;r<40;r+=2)s[r>>1]>>4>=8&&o[r]&&(o[r]=o[r].toUpperCase()),(s[r>>1]&15)>=8&&o[r+1]&&(o[r+1]=o[r+1].toUpperCase());const a=`0x${o.join("")}`;return jn.set(`${e}.${t}`,a),a}const ar=/^0x[a-fA-F0-9]{40}$/,qn=new qo(8192);function Re(e,t){const{strict:n=!0}=t??{},s=`${e}.${n}`;if(qn.has(s))return qn.get(s);const o=ar.test(e)?e.toLowerCase()===e?!0:n?sr(e)===e:!0:!1;return qn.set(s,o),o}function Qn(e,t,n,{strict:s}={}){return Ot(e,{strict:!1})?ir(e,t,n,{strict:s}):rr(e,t,n,{strict:s})}function ts(e,t){if(typeof t=="number"&&t>0&&t>Je(e)-1)throw new Ao({offset:t,position:"start",size:Je(e)})}function ns(e,t,n){if(typeof t=="number"&&typeof n=="number"&&Je(e)!==n-t)throw new Ao({offset:n,position:"end",size:Je(e)})}function rr(e,t,n,{strict:s}={}){ts(e,t);const o=e.slice(t,n);return s&&ns(o,t,n),o}function ir(e,t,n,{strict:s}={}){ts(e,t);const o=`0x${e.replace("0x","").slice((t??0)*2,(n??e.length)*2)}`;return s&&ns(o,t,n),o}function cr(e){const{authorizationList:t}=e;if(t)for(const n of t){const{chainId:s}=n,o=n.address;if(!Re(o))throw new it({address:o});if(s<0)throw new pn({chainId:s})}Kn(e)}function lr(e){const{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new zo;for(const n of t){const s=Je(n),o=dn(Qn(n,0,1));if(s!==32)throw new Ja({hash:n,size:s});if(o!==Jo)throw new za({hash:n,version:o})}}Kn(e)}function Kn(e){const{chainId:t,maxPriorityFeePerGas:n,maxFeePerGas:s,to:o}=e;if(t<=0)throw new pn({chainId:t});if(o&&!Re(o))throw new it({address:o});if(s&&s>Rt)throw new It({maxFeePerGas:s});if(n&&s&&n>s)throw new qt({maxFeePerGas:s,maxPriorityFeePerGas:n})}function dr(e){const{chainId:t,maxPriorityFeePerGas:n,gasPrice:s,maxFeePerGas:o,to:a}=e;if(t<=0)throw new pn({chainId:t});if(a&&!Re(a))throw new it({address:a});if(n||o)throw new me("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(s&&s>Rt)throw new It({maxFeePerGas:s})}function ur(e){const{chainId:t,maxPriorityFeePerGas:n,gasPrice:s,maxFeePerGas:o,to:a}=e;if(a&&!Re(a))throw new it({address:a});if(typeof t<"u"&&t<=0)throw new pn({chainId:t});if(n||o)throw new me("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(s&&s>Rt)throw new It({maxFeePerGas:s})}function fr(e){if(e.type)return e.type;if(typeof e.authorizationList<"u")return"eip7702";if(typeof e.blobs<"u"||typeof e.blobVersionedHashes<"u"||typeof e.maxFeePerBlobGas<"u"||typeof e.sidecars<"u")return"eip4844";if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")return"eip1559";if(typeof e.gasPrice<"u")return typeof e.accessList<"u"?"eip2930":"legacy";throw new ba({transaction:e})}function mn(e){if(!e||e.length===0)return[];const t=[];for(let n=0;n<e.length;n++){const{address:s,storageKeys:o}=e[n];for(let a=0;a<o.length;a++)if(o[a].length-2!==64)throw new ya({storageKey:o[a]});if(!Re(s,{strict:!1}))throw new it({address:s});t.push([s,o])}return t}function pr(e,t){const n=fr(e);return n==="eip1559"?gr(e,t):n==="eip2930"?wr(e,t):n==="eip4844"?hr(e,t):n==="eip7702"?mr(e,t):br(e,t)}function mr(e,t){const{authorizationList:n,chainId:s,gas:o,nonce:a,to:r,value:i,maxFeePerGas:l,maxPriorityFeePerGas:b,accessList:D,data:z}=e;cr(e);const k=mn(D),x=Aa(n);return Et(["0x04",St([pe(s),a?pe(a):"0x",b?pe(b):"0x",l?pe(l):"0x",o?pe(o):"0x",r??"0x",i?pe(i):"0x",z??"0x",k,x,...Kt(e,t)])])}function hr(e,t){const{chainId:n,gas:s,nonce:o,to:a,value:r,maxFeePerBlobGas:i,maxFeePerGas:l,maxPriorityFeePerGas:b,accessList:D,data:z}=e;lr(e);let k=e.blobVersionedHashes,x=e.sidecars;if(e.blobs&&(typeof k>"u"||typeof x>"u")){const J=typeof e.blobs[0]=="string"?e.blobs:e.blobs.map(we=>ft(we)),Q=e.kzg,he=Po({blobs:J,kzg:Q});if(typeof k>"u"&&(k=Ga({commitments:he})),typeof x>"u"){const we=Oo({blobs:J,commitments:he,kzg:Q});x=qa({blobs:J,commitments:he,proofs:we})}}const B=mn(D),S=[pe(n),o?pe(o):"0x",b?pe(b):"0x",l?pe(l):"0x",s?pe(s):"0x",a??"0x",r?pe(r):"0x",z??"0x",B,i?pe(i):"0x",k??[],...Kt(e,t)],v=[],ge=[],y=[];if(x)for(let J=0;J<x.length;J++){const{blob:Q,commitment:he,proof:we}=x[J];v.push(Q),ge.push(he),y.push(we)}return Et(["0x03",St(x?[S,v,ge,y]:S)])}function gr(e,t){const{chainId:n,gas:s,nonce:o,to:a,value:r,maxFeePerGas:i,maxPriorityFeePerGas:l,accessList:b,data:D}=e;Kn(e);const z=mn(b),k=[pe(n),o?pe(o):"0x",l?pe(l):"0x",i?pe(i):"0x",s?pe(s):"0x",a??"0x",r?pe(r):"0x",D??"0x",z,...Kt(e,t)];return Et(["0x02",St(k)])}function wr(e,t){const{chainId:n,gas:s,data:o,nonce:a,to:r,value:i,accessList:l,gasPrice:b}=e;dr(e);const D=mn(l),z=[pe(n),a?pe(a):"0x",b?pe(b):"0x",s?pe(s):"0x",r??"0x",i?pe(i):"0x",o??"0x",D,...Kt(e,t)];return Et(["0x01",St(z)])}function br(e,t){const{chainId:n=0,gas:s,data:o,nonce:a,to:r,value:i,gasPrice:l}=e;ur(e);let b=[a?pe(a):"0x",l?pe(l):"0x",s?pe(s):"0x",r??"0x",i?pe(i):"0x",o??"0x"];if(t){const D=(()=>{if(t.v>=35n)return(t.v-35n)/2n>0?t.v:27n+(t.v===35n?0n:1n);if(n>0)return BigInt(n*2)+BigInt(35n+t.v-27n);const x=27n+(t.v===27n?0n:1n);if(t.v!==x)throw new wa({v:t.v});return x})(),z=ln(t.r),k=ln(t.s);b=[...b,pe(D),z==="0x00"?"0x":z,k==="0x00"?"0x":k]}else n>0&&(b=[...b,pe(n),"0x","0x"]);return St(b)}function Kt(e,t){const n=t??e,{v:s,yParity:o}=n;if(typeof n.r>"u")return[];if(typeof n.s>"u")return[];if(typeof s>"u"&&typeof o>"u")return[];const a=ln(n.r),r=ln(n.s);return[typeof o=="number"?o?pe(1):"0x":s===0n?"0x":s===1n?pe(1):s===27n?"0x":pe(1),a==="0x00"?"0x":a,r==="0x00"?"0x":r]}const yr={gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}},Ar={block:ea({format(e){return{transactions:e.transactions?.map(n=>{if(typeof n=="string")return n;const s=On(n);return s.typeHex==="0x7e"&&(s.isSystemTx=n.isSystemTx,s.mint=n.mint?Mt(n.mint):void 0,s.sourceHash=n.sourceHash,s.type="deposit"),s}),stateRoot:e.stateRoot}}}),transaction:_s({format(e){const t={};return e.type==="0x7e"&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?Mt(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t}}),transactionReceipt:sa({format(e){return{l1GasPrice:e.l1GasPrice?Mt(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?Mt(e.l1GasUsed):null,l1Fee:e.l1Fee?Mt(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null}}})};function kr(e,t){return Cr(e)?Tr(e):pr(e,t)}const vr={transaction:kr};function Tr(e){Er(e);const{sourceHash:t,data:n,from:s,gas:o,isSystemTx:a,mint:r,to:i,value:l}=e,b=[t,s,i??"0x",r?Lt(r):"0x",l?Lt(l):"0x",o?Lt(o):"0x",a?"0x1":"0x",n??"0x"];return Et(["0x7e",St(b)])}function Cr(e){return e.type==="deposit"||typeof e.sourceHash<"u"}function Er(e){const{from:t,to:n}=e;if(t&&!Re(t))throw new it({address:t});if(n&&!Re(n))throw new it({address:n})}const hn={blockTime:2e3,contracts:yr,formatters:Ar,serializers:vr},Sr=ut({id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},blockTime:250,rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io",apiUrl:"https://api.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}}}),xr=ut({id:43114,name:"Avalanche",blockTime:1700,nativeCurrency:{decimals:18,name:"Avalanche",symbol:"AVAX"},rpcUrls:{default:{http:["https://api.avax.network/ext/bc/C/rpc"]}},blockExplorers:{default:{name:"SnowTrace",url:"https://snowtrace.io",apiUrl:"https://api.snowtrace.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11907934}}}),Xt=1,os=ut({...hn,id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://basescan.org",apiUrl:"https://api.basescan.org/api"}},contracts:{...hn.contracts,disputeGameFactory:{[Xt]:{address:"0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e"}},l2OutputOracle:{[Xt]:{address:"0x56315b90c40730925ec5485cf004d835058518A0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022},portal:{[Xt]:{address:"0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",blockCreated:17482143}},l1StandardBridge:{[Xt]:{address:"0x3154Cf16ccdb4C6d922629664174b904d80F2C35",blockCreated:17482143}}},sourceId:Xt});({...os});const Ir=ut({id:56,name:"BNB Smart Chain",blockTime:750,nativeCurrency:{decimals:18,name:"BNB",symbol:"BNB"},rpcUrls:{default:{http:["https://56.rpc.thirdweb.com"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com",apiUrl:"https://api.bscscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15921452}}});function Xn(e){return typeof e=="string"?{address:e,type:"json-rpc"}:e}class Nr extends me{constructor({docsPath:t}={}){super(["Could not find an Account to execute with this Action.","Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(`
|
|
98
|
-
`),{docsPath:t,docsSlug:"account",name:"AccountNotFoundError"})}}function _n(e,{includeName:t=!1}={}){if(e.type!=="function"&&e.type!=="event"&&e.type!=="error")throw new Mr(e.type);return`${e.name}(${ss(e.inputs,{includeName:t})})`}function ss(e,{includeName:t=!1}={}){return e?e.map(n=>Br(n,{includeName:t})).join(t?", ":","):""}function Br(e,{includeName:t}){return e.type.startsWith("tuple")?`(${ss(e.components,{includeName:t})})${e.type.slice(5)}`:e.type+(t&&e.name?` ${e.name}`:"")}class Fr extends me{constructor({expectedLength:t,givenLength:n,type:s}){super([`ABI encoding array length mismatch for type ${s}.`,`Expected length: ${t}`,`Given length: ${n}`].join(`
|
|
99
|
-
`),{name:"AbiEncodingArrayLengthMismatchError"})}}class Pr extends me{constructor({expectedSize:t,value:n}){super(`Size of bytes "${n}" (bytes${Je(n)}) does not match expected size (bytes${t}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class Or extends me{constructor({expectedLength:t,givenLength:n}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${t}`,`Given length (values): ${n}`].join(`
|
|
100
|
-
`),{name:"AbiEncodingLengthMismatchError"})}}class as extends me{constructor(t,{docsPath:n}={}){super([`Function ${t?`"${t}" `:""}not found on ABI.`,"Make sure you are using the correct ABI and that the function exists on it."].join(`
|
|
101
|
-
`),{docsPath:n,name:"AbiFunctionNotFoundError"})}}class Dr extends me{constructor(t,n){super("Found ambiguous types in overloaded ABI items.",{metaMessages:[`\`${t.type}\` in \`${_n(t.abiItem)}\`, and`,`\`${n.type}\` in \`${_n(n.abiItem)}\``,"","These types encode differently and cannot be distinguished at runtime.","Remove one of the ambiguous items in the ABI."],name:"AbiItemAmbiguityError"})}}class Lr extends me{constructor(t,{docsPath:n}){super([`Type "${t}" is not a valid encoding type.`,"Please provide a valid ABI type."].join(`
|
|
102
|
-
`),{docsPath:n,name:"InvalidAbiEncodingType"})}}class Ur extends me{constructor(t){super([`Value "${t}" is not a valid array.`].join(`
|
|
103
|
-
`),{name:"InvalidArrayError"})}}class Mr extends me{constructor(t){super([`"${t}" is not a valid definition type.`,'Valid types: "function", "event", "error"'].join(`
|
|
104
|
-
`),{name:"InvalidDefinitionTypeError"})}}const Rr=e=>es(Fn(e));function Hr(e){return Rr(e)}function Wr(e,t){return e.exec(t)?.groups}const rs=/^tuple(?<array>(\[(\d*)\])*)$/;function Zn(e){let t=e.type;if(rs.test(e.type)&&"components"in e){t="(";const n=e.components.length;for(let o=0;o<n;o++){const a=e.components[o];t+=Zn(a),o<n-1&&(t+=", ")}const s=Wr(rs,e.type);return t+=`)${s?.array||""}`,Zn({...e,type:t})}return"indexed"in e&&e.indexed&&(t=`${t} indexed`),e.name?`${t} ${e.name}`:t}function _t(e){let t="";const n=e.length;for(let s=0;s<n;s++){const o=e[s];t+=Zn(o),s!==n-1&&(t+=", ")}return t}function Vr(e){return e.type==="function"?`function ${e.name}(${_t(e.inputs)})${e.stateMutability&&e.stateMutability!=="nonpayable"?` ${e.stateMutability}`:""}${e.outputs?.length?` returns (${_t(e.outputs)})`:""}`:e.type==="event"?`event ${e.name}(${_t(e.inputs)})`:e.type==="error"?`error ${e.name}(${_t(e.inputs)})`:e.type==="constructor"?`constructor(${_t(e.inputs)})${e.stateMutability==="payable"?" payable":""}`:e.type==="fallback"?`fallback() external${e.stateMutability==="payable"?" payable":""}`:"receive() external payable"}function Gr(e){let t=!0,n="",s=0,o="",a=!1;for(let r=0;r<e.length;r++){const i=e[r];if(["(",")",","].includes(i)&&(t=!0),i==="("&&s++,i===")"&&s--,!!t){if(s===0){if(i===" "&&["event","function",""].includes(o))o="";else if(o+=i,i===")"){a=!0;break}continue}if(i===" "){e[r-1]!==","&&n!==","&&n!==",("&&(n="",t=!1);continue}o+=i,n+=i}}if(!a)throw new me("Unable to normalize signature.");return o}const Yr=e=>{const t=typeof e=="string"?e:Vr(e);return Gr(t)};function is(e){return Hr(Yr(e))}const cs=e=>Qn(is(e),0,4),Jr=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;function zr(e,t){if(e.length!==t.length)throw new Or({expectedLength:e.length,givenLength:t.length});const n=jr({params:e,values:t}),s=eo(n);return s.length===0?"0x":s}function jr({params:e,values:t}){const n=[];for(let s=0;s<e.length;s++)n.push($n({param:e[s],value:t[s]}));return n}function $n({param:e,value:t}){const n=ei(e.type);if(n){const[s,o]=n;return Qr(t,{length:s,param:{...e,type:o}})}if(e.type==="tuple")return $r(t,{param:e});if(e.type==="address")return qr(t);if(e.type==="bool")return Xr(t);if(e.type.startsWith("uint")||e.type.startsWith("int")){const s=e.type.startsWith("int"),[,,o="256"]=Jr.exec(e.type)??[];return _r(t,{signed:s,size:Number(o)})}if(e.type.startsWith("bytes"))return Kr(t,{param:e});if(e.type==="string")return Zr(t);throw new Lr(e.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function eo(e){let t=0;for(let a=0;a<e.length;a++){const{dynamic:r,encoded:i}=e[a];r?t+=32:t+=Je(i)}const n=[],s=[];let o=0;for(let a=0;a<e.length;a++){const{dynamic:r,encoded:i}=e[a];r?(n.push(pe(t+o,{size:32})),s.push(i),o+=Je(i)):n.push(i)}return Ht([...n,...s])}function qr(e){if(!Re(e))throw new it({address:e});return{dynamic:!1,encoded:bt(e.toLowerCase())}}function Qr(e,{length:t,param:n}){const s=t===null;if(!Array.isArray(e))throw new Ur(e);if(!s&&e.length!==t)throw new Fr({expectedLength:t,givenLength:e.length,type:`${n.type}[${t}]`});let o=!1;const a=[];for(let r=0;r<e.length;r++){const i=$n({param:n,value:e[r]});i.dynamic&&(o=!0),a.push(i)}if(s||o){const r=eo(a);if(s){const i=pe(a.length,{size:32});return{dynamic:!0,encoded:a.length>0?Ht([i,r]):i}}if(o)return{dynamic:!0,encoded:r}}return{dynamic:!1,encoded:Ht(a.map(({encoded:r})=>r))}}function Kr(e,{param:t}){const[,n]=t.type.split("bytes"),s=Je(e);if(!n){let o=e;return s%32!==0&&(o=bt(o,{dir:"right",size:Math.ceil((e.length-2)/2/32)*32})),{dynamic:!0,encoded:Ht([bt(pe(s,{size:32})),o])}}if(s!==Number.parseInt(n,10))throw new Pr({expectedSize:Number.parseInt(n,10),value:e});return{dynamic:!1,encoded:bt(e,{dir:"right"})}}function Xr(e){if(typeof e!="boolean")throw new me(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:bt(vo(e))}}function _r(e,{signed:t,size:n=256}){if(typeof n=="number"){const s=2n**(BigInt(n)-(t?1n:0n))-1n,o=t?-s-1n:0n;if(e>s||e<o)throw new Bn({max:s.toString(),min:o.toString(),signed:t,size:n/8,value:e.toString()})}return{dynamic:!1,encoded:pe(e,{size:32,signed:t})}}function Zr(e){const t=To(e),n=Math.ceil(Je(t)/32),s=[];for(let o=0;o<n;o++)s.push(bt(Qn(t,o*32,(o+1)*32),{dir:"right"}));return{dynamic:!0,encoded:Ht([bt(pe(Je(t),{size:32})),...s])}}function $r(e,{param:t}){let n=!1;const s=[];for(let o=0;o<t.components.length;o++){const a=t.components[o],r=Array.isArray(e)?o:a.name,i=$n({param:a,value:e[r]});s.push(i),i.dynamic&&(n=!0)}return{dynamic:n,encoded:n?eo(s):Ht(s.map(({encoded:o})=>o))}}function ei(e){const t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}const ti=is;function ni(e){const{abi:t,args:n=[],name:s}=e,o=Ot(s,{strict:!1}),a=t.filter(i=>o?i.type==="function"?cs(i)===s:i.type==="event"?ti(i)===s:!1:"name"in i&&i.name===s);if(a.length===0)return;if(a.length===1)return a[0];let r;for(const i of a){if(!("inputs"in i))continue;if(!n||n.length===0){if(!i.inputs||i.inputs.length===0)return i;continue}if(!i.inputs||i.inputs.length===0||i.inputs.length!==n.length)continue;if(n.every((b,D)=>{const z="inputs"in i&&i.inputs[D];return z?to(b,z):!1})){if(r&&"inputs"in r&&r.inputs){const b=ls(i.inputs,r.inputs,n);if(b)throw new Dr({abiItem:i,type:b[0]},{abiItem:r,type:b[1]})}r=i}}return r||a[0]}function to(e,t){const n=typeof e,s=t.type;switch(s){case"address":return Re(e,{strict:!1});case"bool":return n==="boolean";case"function":return n==="string";case"string":return n==="string";default:return s==="tuple"&&"components"in t?Object.values(t.components).every((o,a)=>n==="object"&&to(Object.values(e)[a],o)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(s)?n==="number"||n==="bigint":/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(s)?n==="string"||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(s)?Array.isArray(e)&&e.every(o=>to(o,{...t,type:s.replace(/(\[[0-9]{0,}\])$/,"")})):!1}}function ls(e,t,n){for(const s in e){const o=e[s],a=t[s];if(o.type==="tuple"&&a.type==="tuple"&&"components"in o&&"components"in a)return ls(o.components,a.components,n[s]);const r=[o.type,a.type];if(r.includes("address")&&r.includes("bytes20")?!0:r.includes("address")&&r.includes("string")?Re(n[s],{strict:!1}):r.includes("address")&&r.includes("bytes")?Re(n[s],{strict:!1}):!1)return r}}function ds(e){return e.reduce((t,{slot:n,value:s})=>`${t} ${n}: ${s}
|
|
105
|
-
`,"")}function oi(e){return e.reduce((t,{address:n,...s})=>{let o=`${t} ${n}:
|
|
106
|
-
`;return s.nonce&&(o+=` nonce: ${s.nonce}
|
|
107
|
-
`),s.balance&&(o+=` balance: ${s.balance}
|
|
108
|
-
`),s.code&&(o+=` code: ${s.code}
|
|
109
|
-
`),s.state&&(o+=` state:
|
|
110
|
-
`,o+=ds(s.state)),s.stateDiff&&(o+=` stateDiff:
|
|
111
|
-
`,o+=ds(s.stateDiff)),o},` State Override:
|
|
112
|
-
`).slice(0,-1)}class si extends me{constructor(t,{account:n,docsPath:s,chain:o,data:a,gas:r,gasPrice:i,maxFeePerGas:l,maxPriorityFeePerGas:b,nonce:D,to:z,value:k,stateOverride:x}){const B=n?Xn(n):void 0;let S=Fo({from:B?.address,to:z,value:typeof k<"u"&&`${ga(k)} ${o?.nativeCurrency?.symbol||"ETH"}`,data:a,gas:r,gasPrice:typeof i<"u"&&`${xt(i)} gwei`,maxFeePerGas:typeof l<"u"&&`${xt(l)} gwei`,maxPriorityFeePerGas:typeof b<"u"&&`${xt(b)} gwei`,nonce:D});x&&(S+=`
|
|
113
|
-
${oi(x)}`),super(t.shortMessage,{cause:t,docsPath:s,metaMessages:[...t.metaMessages?[...t.metaMessages," "]:[],"Raw Call Arguments:",S].filter(Boolean),name:"CallExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=t}}function ai(e,t){const n=(e.details||"").toLowerCase(),s=e instanceof me?e.walk(o=>o?.code===Wt.code):e;return s instanceof me?new Wt({cause:e,message:s.details}):Wt.nodeMessage.test(n)?new Wt({cause:e,message:e.details}):It.nodeMessage.test(n)?new It({cause:e,maxFeePerGas:t?.maxFeePerGas}):Mn.nodeMessage.test(n)?new Mn({cause:e,maxFeePerGas:t?.maxFeePerGas}):Rn.nodeMessage.test(n)?new Rn({cause:e,nonce:t?.nonce}):Hn.nodeMessage.test(n)?new Hn({cause:e,nonce:t?.nonce}):Wn.nodeMessage.test(n)?new Wn({cause:e,nonce:t?.nonce}):Vn.nodeMessage.test(n)?new Vn({cause:e}):Gn.nodeMessage.test(n)?new Gn({cause:e,gas:t?.gas}):Yn.nodeMessage.test(n)?new Yn({cause:e,gas:t?.gas}):Jn.nodeMessage.test(n)?new Jn({cause:e}):qt.nodeMessage.test(n)?new qt({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new jo({cause:e})}function ri(e,{docsPath:t,...n}){const s=(()=>{const o=ai(e,n);return o instanceof jo?e:o})();return new si(s,{docsPath:t,...n})}function ii(e,{format:t}){if(!t)return{};const n={};function s(a){const r=Object.keys(a);for(const i of r)i in e&&(n[i]=e[i]),a[i]&&typeof a[i]=="object"&&!Array.isArray(a[i])&&s(a[i])}const o=t(e||{});return s(o),n}function ci(e){const{account:t,maxFeePerGas:n,maxPriorityFeePerGas:s,to:o}=e,a=t?Xn(t):void 0;if(a&&!Re(a.address))throw new it({address:a.address});if(o&&!Re(o))throw new it({address:o});if(n&&n>Rt)throw new It({maxFeePerGas:n});if(s&&n&&s>n)throw new qt({maxFeePerGas:n,maxPriorityFeePerGas:s})}async function li(e,t){const{account:n=e.account}=t;if(!n)throw new Nr;const s=Xn(n);try{const{accessList:o,blockNumber:a,blockTag:r,data:i,gas:l,gasPrice:b,maxFeePerGas:D,maxPriorityFeePerGas:z,nonce:k,to:x,value:B,...S}=t,ge=(typeof a=="bigint"?pe(a):void 0)||r;ci(t);const y=e.chain?.formatters?.transactionRequest?.format,Q=(y||ra)({...ii(S,{format:y}),account:s,accessList:o,data:i,gas:l,gasPrice:b,maxFeePerGas:D,maxPriorityFeePerGas:z,nonce:k,to:x,value:B},"estimateGas"),{baseFeePerGas:he,gasLimit:we,priorityFeePerGas:Ee}=await e.request({method:"linea_estimateGas",params:ge?[Q,ge]:[Q]});return{baseFeePerGas:BigInt(he),gasLimit:BigInt(we),priorityFeePerGas:BigInt(Ee)}}catch(o){throw ri(o,{...t,account:s,chain:e.chain})}}const di={fees:{estimateFeesPerGas:us,async maxPriorityFeePerGas({block:e,client:t,request:n}){const s=await us({block:e,client:t,multiply:o=>o,request:n,type:"eip1559"});return s?.maxPriorityFeePerGas?s.maxPriorityFeePerGas:null}}};async function us({client:e,multiply:t,request:n,type:s}){try{const o=await li(e,{...n,account:n?.account}),{priorityFeePerGas:a}=o,i=t(BigInt(o.baseFeePerGas))+a;return s==="legacy"?{gasPrice:i}:{maxFeePerGas:i,maxPriorityFeePerGas:a}}catch{return null}}const ui=ut({...di,id:59144,name:"Linea Mainnet",blockTime:2e3,nativeCurrency:{name:"Linea Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.linea.build"],webSocket:["wss://rpc.linea.build"]}},blockExplorers:{default:{name:"Etherscan",url:"https://lineascan.build",apiUrl:"https://api.lineascan.build/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:42},ensRegistry:{address:"0x50130b669B28C339991d8676FA73CF122a121267",blockCreated:6682888},ensUniversalResolver:{address:"0x4D41762915F83c76EcaF6776d9b08076aA32b492",blockCreated:22222151}},ensTlds:[".linea.eth"],testnet:!1}),fi=ut({id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},blockTime:12e3,rpcUrls:{default:{http:["https://eth.merkle.io"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io",apiUrl:"https://api.etherscan.io/api"}},contracts:{ensUniversalResolver:{address:"0xeeeeeeee14d718c2b47d9923deab1335e144eeee",blockCreated:23085558},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}}),Zt=1,pi=ut({...hn,id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimism Explorer",url:"https://optimistic.etherscan.io",apiUrl:"https://api-optimistic.etherscan.io/api"}},contracts:{...hn.contracts,disputeGameFactory:{[Zt]:{address:"0xe5965Ab5962eDc7477C8520243A95517CD252fA9"}},l2OutputOracle:{[Zt]:{address:"0xdfe97868233d1aa22e815a266982f2cf17685a27"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:4286263},portal:{[Zt]:{address:"0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"}},l1StandardBridge:{[Zt]:{address:"0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1"}}},sourceId:Zt}),mi=ut({id:137,name:"Polygon",blockTime:2e3,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon.drpc.org"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com",apiUrl:"https://api.etherscan.io/v2/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}}}),fs="/docs/contract/encodeFunctionData";function hi(e){const{abi:t,args:n,functionName:s}=e;let o=t[0];if(s){const a=ni({abi:t,args:n,name:s});if(!a)throw new as(s,{docsPath:fs});o=a}if(o.type!=="function")throw new as(void 0,{docsPath:fs});return{abi:[o],functionName:cs(_n(o))}}function kt(e){const{args:t}=e,{abi:n,functionName:s}=e.abi.length===1&&e.functionName?.startsWith("0x")?e:hi(e),o=n[0],a=s,r="inputs"in o&&o.inputs?zr(o.inputs,t??[]):void 0;return Et([a,r??"0x"])}const ct={1:{...fi,logo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAYAAAAdHLWhAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAJalJREFUeAHVfQl4HNWZ4F/V96Vu3ZItS7IlMLLNEWTAGAwGAjmGhJ1JyHwQIGQ3B2ENhOwm2Xgg6xwfJGQIuwMTNiwTjswZhhyETABD4jiEK8YH2JIPWdjWZVmybqmvqnrz/+9Vtaqrq7pbp81vl6r61Tv///3H+99REry/QTLdmSXc+M3gfQwSnP5AdZTufrwrFpHClwOTGyUJGpmmNYDGGpnEYvg+yhjemaankEGSpBHG1FFZ8hyRXS7QNPUdSfZ0qqmJd4bV4T1/v6llSM//tCbg6UggXqf/9aPjy72uwHVMhvOYplyuqUqDpqVBVdOIUgaaquavPYOs90gwkF0ekGU3vyTJddTl8e5mavo5Na3tvm9T5S5TytMGThcCcS6559HBjZLbcx1TlOtUTWlQlAQgApFR7HEmyy5MiP9kmSiA/2UdvZpIQ89MJe5xxLrb7cXLD5LbfdTl8mzT0qmnv/ulim08k9MATjWBpP/+SHtZhXfJnYqmXqcqyXOVVJwj1AxECBkRiQjkxOCcILkccgRbHtCQUAzzRU7kXKjxS8lOiuW4PT7weINHNU37tsbS2753e817cAq56lQQiJe5+ZGBD2DXvVXStJuTqYmYqqSmIyA3UK8mohDCOGcsADDUWVSumk4i0VLTHQPJgeIPPJ4A3n1PK0r8W6eKUItJIF7W3T/saAqFyh9PpxKXp5FbmIEUJIqOECSODwgX2WaZxEMMBsm9S1lpzA0zxwNLXHO4IFYCFLzQ6ODhxL1ef5g6ytPJxOi3H7hjWSd2oEUj1GIRiIuyqLvqf6uKckcqPs4RQEAI8PiC4PYGdMSBo5iyYFkAszzbxcuHTisl6YZ1I/2XSkzis8rDJU6oELhd3p+q8eSW731lcThqMQgkf+ORk1/GttybTE3GNOyl1Co36hHqmSTGjIrk9nQBdgMcp4pb8yiUphBNSSemkpOc0w2O8gdKjqJW+45v4EdPbNmyZUGNiYUiEM/3qw8cW+EKhX+ipOOXpZNT4gU20OePcN3yfgISx2kklKGniOM9Hv92dWrqv/7ga/WdsEDctFAEkr9OXMOQaxJjMa5nSMd4g1yc4YjEvvR8rANQXBoepgdKkmO+9IoZ7yTn/CQjO/13KjHBRR+l18XeqORyf/v7t5f/Hz31vBJqvgkkfWHLjvKyiuXfTKcTdxhcQ+axLxjl4sEJhAFQuDpm08HOMCDLbPXSfmjvKQMm+TIGRG667DKdnu2AuCg+OayLPSaMCJfv4c7tt939zDPPaDCPRJo3AqFile78QdeKgD/wc5TZ5xhmsy8Q4ZyzGEDKvaVBgnVnHIdfvtwFw+x83ssXCkg3EUcR0NiMdNNUfOiqh792xryJvPkaYEi3fXd3cyAQeiURHztHQeIQYvyhUpTVwayamj2YWRebvoPxm2XLjMw7sL/T4PNjG0L8OeY+DF7WxzmKOZQNlrLBUo+su006jy8EgXA5bysNfuNTIw2BQNkrt9/X0QTz1Pnng0DS3d8/2loSrX8rPjnUQOxPvq5AsBRFmzfTKgPhYLrbthqmCZEJY9mEA5u8qNyrLvBDack0x5S62pFomm38rGfILsORojZ5UFv92Fa6C9E31BAKR3fcdf/+tTAPRJoTgUis3XX/4bWS17s1PjUU0zSG1pmfVxjQFcNMhFnIi/5EQwyuWRfOql/QdRJK5P1CVyxg+eh4hUCoHAfYASAcxCdHom5f6VbquDBHIs2FQNJXHjrW6vZHXkrGx9FSQ2WJLO/zR21dM8zB4WkHxcYV8RiKFxU+eEHANk65+wD6S+N50meX51R2MeG+QAnHAYUlEqNRdPy+TB0Y5kCkWRGIOOeL39nVLLtCW5PxkRh1I25Ce0Xl7C6jMcVcxcbl8bBjnH+WCy5YbU8gWUpDhWcPd4w6lWMuz6nsYsMJB9wowudUciLq9pdsJVzBLIk0YwIRcW77bntzOLxsa2JCiDVSlh5vuDhxBLN7Zx8Hudat5Ig2K0TdXeCDPh2Js6+jNXwaJ9kX4YJwQrhJTA1HCVezJdJMCYR+QskdDldtTaLFQg0mnUMVKhYYm907uzg4JQBXXxSAspLCpnSNdycmiM+4DPNvu3Cn/AgnbnT+cnEXH2kIhpf+O40RYYZEmukgwX33D088hN6Ba7i15hIWzKkBBrGQCjf/RSznzcmTJ+HIkSNZYS5JQYJKEGdVsFg+YhmtWJrK4BOGmlYdDFcH6kree6mtra1ohVw0B5Fo+/KDfV/GAegmkudkCPgCMbBTnoV6nH04y4pjfWcth+pw+6dm1jlKvZ3g0kYtZTFbEaa32bHORlzzPbc9EscR4YoG7qlU/I66ix9Bx3HxeC8qIhHnC5vfOkNT2T00cqbCjYKnG2JWnNl3c7hx5YZDVhzrO3M51CNbz/IUJdrM4EKDocb3dsZgAMtARyDaXP/p39Y6F26nSEszwF5/CQ8nZytT2b1fvGdX0QPZoghEeidUVv84FhAFrgRDWLAbjLqYcZ/V4yzvmc0zcwh3SksNjeGY58Pri9d7Zgi5T0JI7iKRY1MGK6qeM31Hos6LHnwKTybGo6FY3eNQpHopSCCc75DvuK/r1nQ6tYG72vkEWzjTSTJ9hUGWq8YcBlaxZX6wxM8itDWcbojYay4OQll09j62av9ezCguerwepjFTWdZ65vwo8h2bvrs9QU4owmEKp1/ufKCPizqSTpAHChFI6kx+pBkHXPfw6WksyB8ozSIGY7nEsQ0Dm95mDQfLZQ1HLNaUMbhoTQDmAl45jmMjdAORn45Z6g0OnAF5uKdQGv1Ooo4kW4p7+aV7/vK2n1cUmj4vRCC5tLTxXvQU1FMuZNvbuXDAqeJ6mMayucMpXr670D0KfO4v58dqLPd1goedzIg1J5Hq9A5sngvlQS4h4iT6iUSK1i1ff+/111+fVxTkI5B009debVZV5SZCDBkEHk/ItqYMsu/mi1meWYF4WXdm+o29/UMXB+Yk2qxQ439n2sPg0A5rnVmhMJPRYJcHefdlIKsuiXHUTYHm/9lEasSpjo4vWltb3aWlK+7l8/FMGAacF21Y144T7DjKrlexfBcYcYVhcHnr/M4rhT1DUOY5qCM2f1uKvvLgRohSnFn2RfgzSiYoiS1/fNu2bTI4WHW2BCLF1XLV/12hMfZpUmp8QR96aoHZs3QWewNkId+O9e0Ilbkg97eKdfjw+iAE/fO/Pq4qcBALmAI7Jcjy1csprIjL5fbxqRjiMlVJbGi65JHzYSYEQsXlipY2C+6Bae4p6mKzqrNzerTaLlzlhXXnLMysLI2NKn3t3G0043bNoa1uHae0Bs8XLP0MzIBA0i3feHMFzqEI7kHF5tK5p9jLTpnacQ4r0EJuGOBUwkcund2Yp1ioDLwHAfl41tioUJuc2ljIgMhwEXIQLV8WmwCkT9/wuV9V2JncdgSSff7yK9JpNKuB6esJ2LQiNd/NF5iUJDMreciKn2VYMMjNC8z5ayjaAlAeXbh1BQYsC+0SPjNm30ZguQbAdBun04ApPYC1XWD6TcuLhTM1nZqKxhpb75RsJtLsCOT2ekKbyXdEK1tkl89e+YENuzPL70yF8sR1eofEiYU0+IvLIrAY4HXFocrXJhbZO7URINcAAIe22OGDmexDfCbJROvQdVx/DIR3IYuLrASSP7u5fWM6nawXbOgTa9jysOpsL1YgnHTCFz+5uJ7yymAnuGEc5q5Ii7uIAYhIVJyqKWd/9pvtV0ABAkn+UOwmcpFnWHA+6mLTXgCw5ThOHOSeC9d4oK7aA4sJNCWxLLQTkaUVlgxQRJtZnjD9ThKKIJ1K4ORj5ONgoUnWj8bGRg/OAl6m6saBLHtNImfmF1grZL3AJg7+Kw0zuHbD4og2K0S8QxDUDYZMHW3qCQ7tNcIBstsNDp2R/HPENGJJsXwt0sANJi4yE0ja+KlnabthPeVAC/HYXKhjNgpmEIehVfPRDUEoj7nhVEFDyW4gZ6q5jqyItuUYFEXEpzupEvFbqb/oo/9/OTgQyCX7IucpKN74C1nsOjBTHSCXRXPC9cxYEReANS/knogG688NwakEHzcYOrjBAGDfRjtRB5ZnMMdluXGNPDkzAI2JkhCuaiZjIUOXzAO6diS3O3QtrQqlRBJSVbPkaGZNgOxwc+1YHqowu2c9E2Lzu2+phNMBaiOHwM3GwDz7Kh4gq/3W9hi/zQ5iUxPBKhoJZJdfpFHTaMa5zwUbAklvv/22G+Xu2dy6kNxi8XguV9qGOV5QfHpaAXPFWh9UxOY+5unt7YXx8XGYKzSiqKOBZL42gsNvsAsDJyJJXOdrnCPkS2trazN6yMCGdOW1P6yK1a76lqamxIZdt1+8EPmB06Yo4xkc3pu3b9htkhLvSbQx+Dya1R737BZ0JJNJ2LNnD2zduhVeffVVeP755zmRysvLweeb3V4knzsOiuaGSaVM7CIHZ1wYwMBhhwzLH4mOGKBZA5fLE3VLpY9+5saLJ9CJyrgmxjkJ2bPsinON3iJLnkyuLLMlw6bQzN9cpDJrPGaOZ+SrD9zQYrr28tCsnKFEhIMHD8LevXs5kcxA4XRVVVXBhRdeCEuWLIGZwpLwQRiML8N6Bi24mMbyNG5EGMuigOmZGW+kHIQKnCdAQTG3pOWay7ZsWfMzCucEeuaZZ6RbN3/vbKIiRyN6r5lVwVi7TRaY4pggk4RZ4vGX0/mvO8cDl5w3M8Ogr68PduzYwe+F4MSJE5yjIpEI6Vo488wzoVhwyWmoDe6H7slzxVaWLBHAskWB3h79wQ4BPGx6QQpk4jD08gjfY5q4qNHI0bBlZSy9UaODI5iY+XNgmfzAZpBEf0kTZh/bWLzHoL29HTo6OooijBWI21BsAOpbaGlpgaamJk60QlATOQIjyVqYUKqn151niwj7xhYTpv92yYIUfPmwx78MdPuAhzY3N0voXT2blgVx0Ke1FxrI3/YxFG0VBcY8JLpIhNmJsdkAEeqtt97iF3ETcVUhQtWXYPmDFTj84IeiwLyDsZSAvNseqUEvROLWwuTkpMvYxWzsSBOcBJnnTD5S9rtCcc3vs+MxKMMxz8evKAEnmG/C2IGhp4hQdDnpqaB3HKqDHXAivpI7OA2wtt2KB8lCS3O4GS88jFQL96jL9SA4SBgJ6JiUVAb1xG8yl4VGZrk2V/Y7yVKwOb45TMo2M0nDYUX++iP2xCHxtX37dhgdHYXFAoNQ+fTU0pJDMBSvBYVFwQ4nBCxL30o5eJqOZ35vgCSMJokXQJwiBF9/fz8ZkSXT4xfmoAwtck+yxjNXDuyVpF6Ni8/xwvkt2bOkM1H8CwVmPUWEwjFJRvy5ZQUaonvh0NBFfOGmACtOTM8Z1mDTUfPiSScYg0zP5aVUVFRQFlERWcq12c13MLEyy302snBKw0VbCYPrrhR1MMQY9d75GFzOFxiEojFUQ0NDRk+VBU9AeLwfDYYlWaKOwOjHWb+pzZpJpIGNmDMSSJIxwCdaZIwEaXBwUMp4b5lUlIFgz9b2v83hZBh8cF0IIkEVe+meBdUv8wFUN6ueaq56F97pL0V3Di2gzCWS3W/r3T5M5EUeBWQahnQRHFRWVqbHNCWwGw7bDpHB3t1gE5cWUco4GPOm98NTTx2E9xsYhCJDouKMGEDowlyJU4yBZ8aV1Q2hA9kFdOeWwtDQEMu45ZhJXpovpzAAWzFoF5dcTSlFgif/IwTxlBfejyDjDGjSvwFS7ha+FNl2XGOIe6cLwBanmUMIkWpIk6yBKhkGY/iuxHyugJPzwFb3S/b+N2tKUq5pJQZ/Ongu1ESPQ1P1cQh40/B+gEjNRiirvw68gXIcD3kyyjYHR3rbTUZsVjg4xdcyaxZGUcRpmzZtmiYQYnSMrAdzrxCRs49FYRZP07Sfydo5KCBXzlHD3Hz7igdOTPpguDMKtbET0FxzAk5X8EXOgIqmW8AfXsqX7pIjmRMIrPrahJksaWKSacxBdzCYtp5VbYz0z5YtW8BwaxNdRjFCnVjxzyxZ5PIRs3mCPLHMQNMZbo/MD39QVR8cHQpD73A5rKjqhbryxRv7FAKXtwzKm26CUOnZfL+psYVEWG+SZexngBM+WJ73epfWl30hBbqMQLf+gEac2oVPq+0OYHUSdY4sa0lnTh/0S/waHBHT6jR6pt6opH2wvy8Mw1P90Fzdd0rFnuQKoDi7AmJLrgavv4JvlKYpGGPsQ6tR3ehETajCwes0/WANc1IXBmS8OabzWA0Rh/op3QXcSSpOyZVNnlsGRZQEueF2fWZySoHrNoZ5L3zxtTicHJGw8TK4kasICQOTfujdXwH1ZX3QUDkIQd/iEipUcRGUNVwPngCdHBLkR3TKnDAyHyJUh45BFV7v9q/POe3MAGcecQ6nkx3FuEnCzhrfV1dXp3Z3d7MMBynp9DFaispA5UchM5tTdSU9R5an5Hz0ExUBePpXA3Dfl5dA66pS+MUrE/DHnUlxxLKMIkTy8qVIPaN+ODFWikZEH4q9YVho8EWaIVp3LYqzNUKUoZ7hZw3pg8eo7wTUlx6AqP8kvPHeJXxpmMuVv61WyIcbLXOio5vWyB1F4vBjzYwZMi2dGDtmzHdoDmuU+dS0Tbg1Tr73wN31Lvjbf+iCAIq6z38yBg9+tQLqakTZEoo9Wszn8UdBdVVDW+8ZsG3fWTA2tTAnNJI4K1v+aahZ9VWIVLSiSKMTuiJipQ0tLIQkLC/dA2fXvsaJc6BvOcST4iTigm2dAW74EdEcPx6YnOjfu2rVKk5LziYbN26UevtPjlYtW38XHU9MSDSmvBcAJZyNxyfTkEwk4AOrSiAUkOGqi4I47SDD0Z40TCWAy3u+wNzlRuekD44NlsFkQoaSQBynxfMfE2p3TkJOLVx+KKm9Ggecn+dGgMdfguIsqJvPLq6sG2L74ayqtyEWEF8R6Bkqg47BJm7JSboVN1+AYk1MeaO+O7Tz/92zb+cLIxiscQJhY6TU2H6tufW2m9R0qoQvmte36jk5CeyUYsaSdIiXiYsdQEYi7T88BgGfCiuXC2dkwxIPfPhSsYuvvTPFlx0bRoSExJpIhOE9dLGQW6o8MglOUIhAXjSbq868A8KV63BMU4YiLcz37EiSUMkkzs5FjikP9WM9RWeYSnphX08z1iOmrwaVc9ulgxU3zBIn89s01aCkJrmOw07Z/buf3fJDDCL/F8sYCSMjIzgdrryOvft6fkI7IoH2+BuWJLPM/5hrxKwPTsaFEUaiDJHuwvHQz357Ei46twyqyqdF2F99MAIbWoPw7NZx1E8Jzk1uSRCKzNz3TvqhB81ysvaWVYxAsUBmc9nymyEQE2Yz5xiXmwsyapTPPQErK3chx5zMSftuVyOkWCl4iDh2p3mZH0y92hzOLBQy8EhjHLHcAAkhSXvxphixzCWpqpp8h2QgJVT4HkowvKtQaDlVznvrlfNe5j0xqQTg/h8fzmlwZakLbvtUDP7m86VQHhXyXpK9vLd7/TFQpWrY230mvH5wBfbu/Gu4Sc9E6z4BtefeB+GKtTy921uiL7tFcS4loD7WDhfVv2xLnEPHa2E0Uc2JWvAcPCgCZxa8kFrhi3WwAybGB14wE8hsqskllSvHSqtWf4GWXkmyVFAPkZyWJClzt77LIMhwiVjiG9fwWBrGxqfg/NXRnDIqy9zwERR7laWon3pRPyWFfqKeT+OohOKHzuOkn1xQEhT6ySziQpWXQ/kZX4Jg+Xl8byh5MfhgUxZ6Zmn0MKyp/TNOIwzYtpFE2+5jq/jZELJuOBhtM7fFCRdOuDGHKakp5CKF12106MADAXXv0YGBAdVKIOg59MLU6vV3fVpVUA+hXU7m5kIDDcpI17R3jsLq5iBUl9tba6Sf1q7283HUESQUWVHiUzNe3vPG40HoGw7xAaQS74HeQQ/EGm9BQ+AarmdoG6cLDQMxCGRokQ2gAbALCXQso2eskFZkeL1jFWIpxr8lMZ9GQVY5qQnurcExV/fzj63fgsSJgw0HUenulWu/2ISP55MO4iN9QqB53txhjt0MUoF2ZCb5Mglk7u97p/0kXLmuDLwe+/VxZO2tXROAy9cGYGAoDb0nNM4JxFGk0zTww/HRGA52l3NPQCDcAG7s+bQBmt5TmT7XBJxVvRuayvdDwBPPW8+9XfUwllrCO6rguPxtdHpvxZ3Rfj5s0eh7EXH9EzvyC+1vPPxLjEJHJucQiEP9ymslX6j6r4XSkrh1s/AgvgE0OaWimT0Kl11Qljc2EWr9eUGoRLP8SE8KpuK62OOiz4c9McyRyp2a+mDTLaVQzxyClprdEPEVnrntOlkGhwea+LlvwjG6MJBOTXLzmtZnjw923Nv57j8dAKGDOGQR6Prrr4fn/mVz/6qL774W9VAljp74Jq7MXIIO5mlbx4m9mdx5PjIXW13H4+jeQdN7ReGNw41LPfDRDWEg9+LRHgVSqiw8EmSZ0fpyWRgXFaEeOGfJDqgM9zuKMzOQ3tn13kqQPVH0KPimzS/JZqrFrv12kGNjC12kpERn8XhC3b9+bO038JHYOlPJLAK1tbVRNq6Vrf+tDkXCxWKXt/igkpF3sfa+lQ75YHpcIERde8cIXLo2CuFgcXuEVjf5kKMCun5SeIkSNj4WGISW6l3QWNYJbpcCxcL29hZQ5XLOgdxjYNTPVF+7Z7t2SXnCNLSU6cQR4tD45PEth3b95C0wiTcCu60ELJVSDi9tuvIzaHb7GOeiYHbudr1EcqiF3UjVkYskzkmpNIPXdvTDB9eXO+ojK5DYuwD108a1fti5bwRqw22oa/YW1DNWONhbC4NTS7k5L3Fnm1V05GkLOLTVLhzoOxCjII6HCcHxjlfu6el8sRdM4o3Adq/HcP/OdPP5n6sjY4GPbnX3h1N5UGSdi0nPVyEjkSbjKiTQFdS6JgozASJUU3U/tmE3zBQGx0Kwp+tM1Dsl3CfIORFmhnvzezNY46pKAmiptTCQ4JmdL97yJLY3aY1q1z3J/k6N9u38N+MAC1JkGWefURozZWX6zSz3nHeQG269SH+40NX/622j8MauhfdkE9Bgd8/RJs45XKQzybEd+cLN782X9b1w7YgTR47te/bB4eHhFGMsR0Hayo/W1lblD7+4ZSei6g0SO/RdAn46E4DtSLhAXWcRX+JmMSHroaeOQf/gwi/LOtC7BJJaqdjtBvLM2jTDi77uxTcN01mmqcSzb/9+cwc6rNN2Z8fZEmjHjh0kB+NH2v71K4Qkwmo6Oa4flSK6xEw3GLOZxqPhK5rIyXQAHnriCCwkHD5eAT0jS6eNAoc6z7bN1nQKDkzp7vYg97Q982BtbW1827Ztql3dnA5TIgyld72y+RAS5gk+CETPgpKeypZsRpkABTkEWOE4hgjMpOHnBPlhX6cCv3z5OCwEkEm9t3sFHzuRry+rztY2QBFtsIlvTsfHPargHuSkZ3f94ZsH+vr6siw3MziaSEh14qLJAzt+8AN0kYxThYhAmvlDFebKmsPsOpReyyzPg+k9mOKAKQ/goi4Ej/+sHw4fc55imA2QK+fV/Wfy/MnUZSABODBEjm5xameei3BHBKK0qGN7+g489wCIcY/qVEdHAulclBro/HVfPHHiIVLa4mjhMZgtZPUmlt1lrO9MNeH+NhdOkn3nR518rDNfsB9N6qRWJk7z0qf4mUO9mcO7mUAqLqZGSCpMjXU/tON3XyevgdjW6ACFBhk0TxR/9V+vehQp9gZXakpaiDoGi3bxCT6cMjg54oF//FUvzAccHSiFzhPLMsTJW/48tEG4dIRoQ05987Wff/SfMGe0syFvjytEILZly5b05OTkxNGDz97tdoe4XyKdnACaksiKaOkDjOWG2cUrBigNP7cO3U7P/X4UfvHS3LankEm9v3eZGIwWmLrOV99i39FUApnVBOi4HT+y75+/QjhF11pBcVDwUALaCk5l9He+PFG/6gbm8UYvF1vG07ZTvwsH+sfUJeEKuvwCZ1dQoSnv1w82wWS6io+1JGlhz6KjaRvuMWDCY5CaHHxg37bbn1+zZs3Uyy+/XJBAxWKXMpra+tS6HynK5JNcoSK7JuOj4ihJc2+xKhand6YwI9yO61iWAhCzsImUH771cO4sbDHQ1lUDQ1NVwglsszLHWpd8UsA2rkW0EXHIaiNvu5qeeuLFp9f9/djY2JQ+lCkIxRKIRB3JtPH2N+9/QHJ523njOOtOZCqpWSsMkGXtWBvjRNisODB9ifzdfM3akV4JHv3nozATmEST+kBvA3JOCDlHnDLFy7NeDuLa2g6wi2t6JoPK+BAJ+jO7f/v4Od/EYEJYqtjvgRfN37qo01xKX4LJodfLqi/4ME42ldBcBrWTH77k5IjLOz8BlkT6PWuXrSkeTy5W+7QdGoGzV4agpiJ7zspOxE0mPLC9bSU2oFSf45ItdZNy3e9WFGZV0VQ3G8ccShpuTPHzxr2RnqNtP/3UiaO/70K9E8dZg6I/Lz1TAczi8biGBY3hTOX28tp11zMt7dNU4YqRLBNbVpc8cwizQj7HuEgjiX/Y+N37BuHqS3AW1jstDOwItOdIHYq2GjE7atI7Of0IcqdO8gGzpCVQ00ScSf0w+Mh457uP/VXPuw/vW716dbwYvWOG2WhIviR1oOuP49GKltcjpWd8XFOJSGneoYxjzBx7YTFQTFo+NSHBBM7C7js4CB/aMH1KlpVAB3vLoeP4chQzocy2kVnVieX5rYNBHALsDON9Hb+98Z0/bN6Fnuop9BjMeKH5bE2wdHNz8/iOF257E627G9A6GSdkkSlJcjcjx2dInCwdwCDHXWKNbBwZva9DhZ+/aG96k2hr767nxHHpUwgzqVqmDqzQbw3HOmOCODTFjsQ53vGbG3e+sulN0PUOzKK7ztbG1LdNgtrX+ZsT0bLVb0QqViEnpXykk0jkGWvOcsCOO+ymY4uCadO77dAorF0ThrKYN4uDtu5uAUXSvQVUn3xTv4WLy607CFM6nRwFY7maG8Xa8cMv3Hjwzc1vplJ8TjsNsyAOwVwGAdxowEsZH/jDAJPcW0tr11+D4yO+ZIsfa+byZFwoCweCSDQL+8auE/ChSytgfHyYE2jvsRroH1siZoSlnBOPc1szC8nHsJ1cajCxPAAHvz1H9j72iXe3/83u+vr6MezIRJyijQIrzAf2NOwl6kDXq6Nef3B7Wc26a3BwxImkphPCONL1kmT8KSTLC/Rs/sr0jnGrTugj2ja/YqkCf9pxEna9dwbfqSD0opRTBmPTdcrN01JfG8sBxzU6ccRmNJfLt/9Y25OfaX/t/jZSAR0dHXMijqmoOYOMFfJghWjxQuTKm3d8x+OL3mIoS9IVHl9s+jiv2ZaaNy3jXEurZK67TIGXXk9CilWI1bF2XGxnHhZZHnU+JTXGjw4jIPGJxsFTB//8/b/tav+3HgyiLzjNmTgA80cgIy/yvdCUZMllN/zxS4FQzZ2qEo/w/Ub0khS1ZyEPjNU4kWi1jMSXBvvn1ZVDhoCmxNFhPAVi+S6JtNB4fLL377b/y4ZHMco4zoxO6ZNvs9I5VphvBaHhQEzFgZhydO8Tu3yB8IuRyg+sRtN2KXkduA9PXyghy3M4dtmRk4Q+ogUfJNbmRBxmEnsAfMpfcI0Y83GjQ3a/1d3+5Gf3b9/0H2VlZWPoAE2g7ps34hDMJweZgcw3EvxkOoXXf/KlG0MljchNiSWgn8Mg3B8h8f0CMFpkN4zPFv65aik3jaSb0pDzJpey2fnlmndMS3HTWXjvJV3X+McTE71/9+fnrvkxDtwnGhsb40gYijBnkWaFhTKxqHU0YlYqKyuVAzt+3IbWze9LyleXurzhs/iyYhIX2BsFR+nmMucAyOm9PEMGBdd8z1vled3i3AAQ4kwVYxs0OJCLfrr/tXu+sHf7119RFIVmL+M4ZzZrM7oQLLQNrE1NTSloQKQPvfvc8PFDT70suVzPlVScHcOxwlk0ZqKFKIJQcd1UlRbBNHeorJrilhkZGvRFEtD1DE1LoJh+88i7j92084Vbn5HVvkG0FmnwSRNuKiwgLFKfBAmVpwuVJ4k9fyAQCC5dfXtzXcvNdyFn/RdaxIc+PZNpa+ym8+nLjuW8Nc0Re3bOPyvwBHrnIN2Id6a748UCVw95zceV1Mgvhntf+/d3fnfnThDrB+gijplXXeMEi0WgTHlmQuEVOmvd/2iK1lx5cbh05SbkqCVcCVvW7xk7F/id9pHSAvkiuWza+ayKndSgguDclFhGZi6Hcwt98UU7kE4Mbe3Ycd8TfR3P90ej0anR0VHiFsN0nndd4wSLTSBzua66ujpPd3c3EYpf51/9k0si1ed/wu0OXsgkaQmZy3ys4TBgpd0LGUJxBZU5VYCLJ7ETTsshRCa9JOm79fh0RY+SGn1lbHDvS7tfuvVPIDbxJvQ7GQCLwjE5dYRTCPTNNv2zYO6KigovynUfKl4fhnubLrpvTTi6ck0gtvwqWXK1ICaX8CVf1PtpRdgMFzcIn53MlxXT9klM36uqibdSiaH2gSO/fqljx4NHMFo6EokkfD5fanBwkIhi7BVdNI7JqTecHiDpFycWXSUlJV5VVb04tiAl5Kmov6Z0WcsNq/yR5S0eT3gpWlQt4gO87qWI8QgawJFpPNLKGW1cYto4HbOGYrMXuRE5ZLxbSQ93d7f95M2+w7+hww/SNhcRhU+pwCngGCucLgSyAre5W1tb5d7eXk86nXZhj3Zj73ahV8JNx0jje5ff75dxnsUgroQ9XzKO18Rnhs+GvtDQMNFwzKJiHsr4+LhQRvpQALIJcsqJ8n4DiT6lrH/zmrjLMDAC1dXV5DcKo3iM4EieTqktsdzphIygflEa4ka3npcYeJ3mcNpXMA9IDmFOHPC+5Iz/BElwM6GmmQapAAAAAElFTkSuQmCC",chainId:1,chainType:"ether",chainTypeMoralis:"eth",tokenTrendingDefault:["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"]},10:{...pi,logo:"data:image/png;base64,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",chainId:10,chainType:"optimism",chainTypeMoralis:"optimism",tokenTrendingDefault:["0x4200000000000000000000000000000000000006","0x68f180fcce6836688e9084f035309e29bf0a2095","0xc47da4cb96ce65a96844a01bfae509f9d5454534"]},56:{...Ir,logo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAACcRJREFUeAHlnU2IHMcVgF9V9+iPWTMbSJyIEGmTgwOJtR3QIZegWYgVmUBWOoQEQmIZcsjNziEHX6KNIaccvL75EIh0yCEnaQOJ7ZVhxxfjg8GzBoNtsLW66GBjdrVrS5Zmusr1eqbGPbszPdX1273+YFczy/z09KdXr+p1TRWBirN9PWnBCWjHETsFfVgASk6JP5/mAC1CoAVc/OQhsMM57BCArew+45sQw60+p5vwGXTnL3V3oMIQqBjbLyen4wZbJowkDKAtDvA0WARFCZldQvmNHqOb8+e7XagQlRCyfTNpxym7yClZti1gFsNI6vQIuTb/RLcDgQkmBJuiuMmeAU4uirsJVIBMDuUrvR59ff7J7hYEwLuQ7fUkiRm7DBF56kD7XyHEibnaS8nffIvxJiTLDRH/l7jZhhrhW4xzIdg0RU12hXDyLNQYX2KcCtl77QzmiJUqN01lkDmm+fN3roEjnAipa/NUgk4/JU+7iBYKlsGoiGP+NhxeGYgYqPK3775yxnozbC1CDkuuKAshfLX5xDt/BktYEYJNVCPi13lFxhO+wdwiEv6SjSbMWMhQxgb3PMLOc+QHf8r+ffjhSxAKW1KMhGSDPMI3QvaiUMaR7w+FfPRSUCkCUdQkS02D+pi2kKrJkNRdipaQqsqQ1FlKaSHZGAO7tRWVIamCFDFW+UnZnFJqHCITeNVlZI8Tj5HJPhAtPFd4zso8qZSQKvSmVGSMHh9YCp4rMYC8nl31VERZyO7NMy/UScboeeEjJWmIAbPqg5WEYDkk5AhcV8bo+aEjRZw71TLLzKQeOombysgTONErJfmZEZJVbQ+BjOz1wkZKa1gBL6RQyO7645chUNXWtozR64aV0p7VdE1tskLWqFzJyBOw+drpf04Wps0PmxohEWUrh1VG9j7hIqVV1OuaGCHDK363wDO+ZOQJFSkiwS9MSvATIwSjAzwTQkb2voEiZVqCPxAhIaIjlIw8ISKlD6IbvK8AeSBCfEeHDRm9O//NfoyOI0CkUJwwuI+xCPEdHbZkPHj3r9ntoz96HhonfwUmeI6UAz2usQiJorQNnrAtA8HbNYuUFj3BxsYldPwOVS6CmeBChqRuUiJClvP3R0JEc9X2Me5wKUNSJyk4U2fvZtKW90dCRDK/DI7xIUNSJyksZRfl7ZEQSsg5cAg5dhIa3/sdmKAqQ2JDCh4ziefAJRH9qtnKhGz/L0lcN1f8iztw/60/Au/vgQ5lZUhMpOCxmhyz8vuIcy8v9WZCokbqZcYh23tf6wPqypDoSJEy8Jh9QMmg2cqEEE6XwRNlpZjKkJSR4lsGIpqtRfx3IIT4nZOrKsWWDImKlBAyhrTxF9neSFpxj29DAOjcY3D87D8nJk3bMvJMG9EHlJEhRu3zFL6wGx3xt5aUHzstUsrKQLH4o8qkSNGRUeazqnCkCecojZk1IdhnP7b4QvY/UJX9UnRkYJThj64UHRlHf/x89lltjlP6KVuInvv9o78lQH4KhuQHfZE4MeT4SUg/2VB6Ln/4KaSfvgGQPoQH7/0dVMk3eYQehfjbF7LXwddTAY8Pn/vgg3+UltH4zqDJi+bPZiXadPstMIVzeJ/srS/iWWuDAdNG4C7zwLT84zoP5GXksVEl5pyvGX/HsKgcgomzTPOlSlFnAP9WtvlSZZoMxEaZhRByipqM0FVqU7alFMmQuJBSJENiKoVgOT5b4kiDMoVCW1JUZEhsSlGRITGRgktOUZ1ZiTpVW1MpZWRIbEgpI0NiIKVVOoeYlNB1pejIkJhI0ZEh0ZVSPqlz+Ppg+lk1nl9aiEn3TrcbrFslRky6wSalezxHeK7KQnGNQiiJjhTTMYmOFBtjEh0pujIEOxQXjAQNykixNUAsI8XmALGMFAMZ2O3dofgLNFGRYnu0riLFxWhdRYqJDESknC3s9m6BAUVSXJVOiqS4LJ0USTGVIaGM8NtgyCQpOlXbo4/9Rfnxk6RoVW3Fe5qW7m3JYIxvRs/94dEfimrvBTBEVjujb5zVLqFj5VSnSoxVXmAPtUroje/+Wq9KLI4Tq9q2ZCAin/+H7L76+EVC6HWwRPzNJegrnlBk0qBPRyiiW0JHdC9Q9T9W/6wzIWTp63kJd8oIvBKXcOeXujsczBK7DrPKIa5K90XlEJel+1mI5moLZ8HTwR3+OnhEtTZlW4pKbSqcFL6JvwelEwreFqQvWyi0JaVMoTCEFAqDPJ4JYX16AzygW7U1laJTtfUtpUcgi5DRN6h21xdvudyZAD/giZ/932jisk6iNymhI5jo7735G+D374ArMH888ovNBbw9qvZy4GvgEPxgvdv/BhPKRoqpDASP2aUMRNSvOqPboxup+2bLxswMVSk2ZNgc9BXBCRktXT72pc+99UVckdr5PF8bMzSKmq9aycg1V8jYBSrG3TZbEpeRUicZiLggtTJ+Pwc7Qld1Lljp4EJK3WQgPQZjY8ADKzncXT+zKqw9A56w1XzhJ6mbDNyTpHl+8+l9fxsHv94WN7LdDbxRgXURvctAJi1Ac2CSw/wvs7U3OuCR0GvshpCB0aG8GhBuVgKeCSUlhAwEt0+a9PeJQgbm+IvgGd9SQsmYFh3I1HlZ/QZd8dXjyuNLSigZOO6YFh3IVCF4nYQVPNElrqWEkoHguKNoqdiZ6/ba+EKPLi56XyFlCDpz5zcLv5g4cyppluADNF2I7UgJKYMPFlKe2VmaKQTDK1TThdiSEjgycL6V0qaUyvuH7IkRPHgcwe/HpPkKLQMYeXHuQldp7Xfl2e9Zrwv8Xerdj26khJaBvSpVGYiyEOx1iTbwEuf+Z6hIykqpgoyUkVKrC9RzyyOF5iu4DJHEU9dbHiH4BoQL64F6XsisSKmEDNDb01Brlzbks/Uk4aF3apsQKZWR4XPbPEnVpNRdBmIkBMGcElG+QUjA/alyO32GQibwoFuvSqogJSgcun1GLlVic+I8oQePQRCDvv59WJm2QUtZrApB7r6SPEsjfiVkXvEB5gsshzQvdFfBItaFIMNF/XF/jDYcTjpYKLTRRO3HiRDJ7npyWWS7K4clt7iKijzG62UV8cj57lXseXDOr0HdEbki/ZwsuJSBOI2QPIOeGFshhDwF9cJZ8zQJb0IkdRCDTRNh/Bqh9GrTYJCng3chkkxMJJJ+tXJMFzhZ69+DVVvd2LIEE5JnD/cuybbLIOd8y8EvvIpoWANOb8w92e1AYCohJA/WxxhAQoAvi3JEYlvQYD0R6HAg3TiFteOecoMqlROyH9wcPj4GCUSwCIwtwHDR+uHinS1cODL/eD5YTGdnuKjOFjB+Gyi9JeTeTu9BJ1RTpMqXLiNpVjp6y9MAAAAASUVORK5CYII=",chainId:56,chainType:"bsc",chainTypeMoralis:"bsc",tokenTrendingDefault:["0x2170ed0880ac9a755fd29b2688956bd959f933f8","0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c"]},137:{...mi,rpcUrls:{default:{http:["https://polygon-bor-rpc.publicnode.com"]}},logo:"data:image/png;base64,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",chainId:137,chainType:"matic",chainTypeMoralis:"polygon",tokenTrendingDefault:["0x7ceb23fd6bc0add59e62ac25578270cff1b9f619","0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6"]},8453:{...os,logo:"data:image/png;base64,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",chainId:8453,chainType:"base",chainTypeMoralis:"base",tokenTrendingDefault:["0x4200000000000000000000000000000000000006","0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf","0xc47da4cb96ce65a96844a01bfae509f9d5454534"]},42161:{...Sr,logo:"data:image/png;base64,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",chainId:42161,chainType:"arbitrum",chainTypeMoralis:"arbitrum",tokenTrendingDefault:["0x82af49447d8a07e3bd95bd0d56f35241523fbab1","0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"]},43114:{...xr,logo:"data:image/png;base64,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",chainId:43114,chainType:"avax",chainTypeMoralis:"avalanche",tokenTrendingDefault:["0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB","0x0555E30da8f98308EdB960aa94C0Db47230d2B9c"]},59144:{...ui,logo:"data:image/png;base64,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",chainId:59144,chainType:"linea",chainTypeMoralis:"linea",tokenTrendingDefault:["0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f","0x3aab2285ddcddad8edf438c1bab47e1a9d05a9b4"]}},ps=e=>Object.values(ct).find(n=>n.chainTypeMoralis===e)?.chainType||null,gi=e=>{const t=new Date,n=new Date(t);n.setDate(n.getDate()-1);const s=new Date(e);return s.setHours(0,0,0,0),t.setHours(0,0,0,0),n.setHours(0,0,0,0),s.getTime()===t.getTime()?"Today":s.getTime()===n.getTime()?"Yesterday":s.toLocaleDateString("en-US",{month:"short",day:"numeric",year:s.getFullYear()!==t.getFullYear()?"numeric":void 0})},Xe=e=>new Promise(t=>setTimeout(t,e||0)),wi=(e,t=5,n=5)=>(e=e||"",e?.length<=t+n?e:`${e.substr(0,t)}...${e.substr(e.length-n,n)}`),bi=e=>{if(!e)return"";const t=ct[e];return t?t.chainTypeMoralis:""},yi=e=>{if(!e)return"";const t=ct[e];return t?t.chainType:""},Nt={getItem(e){if(typeof window>"u")return null;try{return window.localStorage.getItem(e)}catch{return null}},setItem(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,t)}catch{}},removeItem(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(e)}catch{}},get length(){if(typeof window>"u")return 0;try{return window.localStorage.length}catch{return 0}},key(e){if(typeof window>"u")return null;try{return window.localStorage.key(e)}catch{return null}}};class Ai extends me{constructor({value:t}){super(`Number \`${t}\` is not a valid decimal number.`,{name:"InvalidDecimalNumberError"})}}function mt(e,t){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new Ai({value:e});let[n,s="0"]=e.split(".");const o=n.startsWith("-");if(o&&(n=n.slice(1)),s=s.replace(/(0+)$/,""),t===0)Math.round(+`.${s}`)===1&&(n=`${BigInt(n)+1n}`),s="";else if(s.length>t){const[a,r,i]=[s.slice(0,t-1),s.slice(t-1,t),s.slice(t)],l=Math.round(+`${r}.${i}`);l>9?s=`${BigInt(a)+BigInt(1)}0`.padStart(a.length+1,"0"):s=`${a}${l}`,s.length>t&&(s=s.slice(1),n=`${BigInt(n)+1n}`),s=s.slice(0,t)}else s=s.padEnd(t,"0");return BigInt(`${o?"-":""}${n}${s}`)}const ki="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",We="0x0000000000000000000000000000000000000000",ms=te.createContext(void 0),gn=()=>{const e=te.useContext(ms);if(!e)throw new Error("useConnect must be used within ConnectProvider");return{...e,chainData:ct[e.account?.chainId]||void 0,chainId:e.account?.chainId||void 0,chainType:yi(e.account?.chainId||void 0),chainTypeMoralis:bi(e.account?.chainId||void 0),isChainSupported:!!ct[e.account?.chainId]}},vi=({children:e,initialAccount:t})=>O.jsx(ms.Provider,{value:{account:t||null},children:e}),Ti=({address:e,chainId:t})=>{const[n,s]=te.useState(!1),{isChainSupported:o}=gn(),a=te.useCallback(()=>{if(!e)return;const r=e,i=()=>{s(!0),setTimeout(()=>s(!1),2e3)};try{navigator.clipboard.writeText(r).then(i).catch(()=>{const l=document.createElement("input");l.value=r,document.body.appendChild(l),l.select(),document.execCommand("copy"),l.remove(),i()})}catch{const l=document.createElement("input");l.value=r,document.body.appendChild(l),l.select(),document.execCommand("copy"),l.remove(),i()}},[e]);return O.jsx(O.Fragment,{children:Re(e||"")&&O.jsxs("div",{className:"chat-user-info",children:[t&&ct[t]?.logo&&O.jsx("div",{className:"user-avatar",children:O.jsx("img",{src:ct[t].logo||"",alt:"Chain",width:20,height:20})}),O.jsx("span",{className:"user-wallet",children:O.jsx("a",{style:{pointerEvents:o?"auto":"none"},href:ct[t]?.blockExplorers?.default?.url+"/address/"+e,target:"_blank",rel:"noopener noreferrer",children:wi(e)||"Not connected"})}),O.jsx("button",{className:"copy-address-btn",onClick:a,"aria-label":"Copy wallet address",type:"button",title:n?"Copied!":"Copy address",children:n?O.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:O.jsx("path",{d:"M13.3333 4L6 11.3333L2.66667 8",stroke:"#0B3988",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):O.jsx("svg",{width:"14",height:"14",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:O.jsx("path",{d:"M8.1 15.75H13.23C12.9638 16.4152 12.5041 16.9852 11.9105 17.3863C11.3168 17.7874 10.6165 18.0012 9.9 18H3.6C2.64522 18 1.72955 17.6207 1.05442 16.9456C0.379285 16.2704 0 15.3548 0 14.4V7.2C0.00104929 6.32332 0.321408 5.47704 0.901163 4.81944C1.48092 4.16183 2.28037 3.73792 3.15 3.627V10.8C3.15238 12.1121 3.67466 13.3698 4.60245 14.2975C5.53024 15.2253 6.78791 15.7476 8.1 15.75ZM15.75 3.825H17.658C17.6027 3.74389 17.5393 3.66852 17.469 3.6L14.4 0.531C14.3337 0.460854 14.258 0.400274 14.175 0.351V2.25C14.1769 2.66713 14.3434 3.06664 14.6384 3.3616C14.9334 3.65656 15.3329 3.8231 15.75 3.825ZM15.75 5.175C14.9747 5.17357 14.2315 4.86494 13.6833 4.31671C13.1351 3.76847 12.8264 3.02532 12.825 2.25V0H8.1C7.14522 0 6.22955 0.379285 5.55442 1.05442C4.87928 1.72955 4.5 2.64522 4.5 3.6V10.8C4.5 11.7548 4.87928 12.6704 5.55442 13.3456C6.22955 14.0207 7.14522 14.4 8.1 14.4H14.4C15.3548 14.4 16.2705 14.0207 16.9456 13.3456C17.6207 12.6704 18 11.7548 18 10.8V5.175H15.75Z",fill:"#0B3988"})})})]})})},no="chat_widget_messages",wn=200,Ci=()=>Math.random().toString(36).substring(2,12),hs="welcome-message";function oo(e){return[{id:hs,text:e,sender:"bot",timestamp:new Date}]}function Ei(e,t){return e&&t?`${e}_${t}`:""}function gs(e){return e.map(t=>({...t,timestamp:new Date(t.timestamp)}))}function ws(){const e=Nt.getItem(no);if(!e)return null;try{const t=JSON.parse(e);if(t&&t.owner!==void 0&&Array.isArray(t.messages))return{owner:t.owner,messages:gs(t.messages)};if(Array.isArray(t))return{owner:"",messages:gs(t)}}catch{}return null}function bn(e,t){Nt.setItem(no,JSON.stringify({owner:e,messages:t}))}function Si(){const{account:e}=gn(),{t}=cn(),n=Ei(e?.address,e?.chainId),s=te.useMemo(()=>oo(t("welcomeMessage")),[t]),[o,a]=te.useState(()=>n||"pending"),[r,i]=te.useState(()=>{const S=ws();return n?S&&S.owner===n?S.messages:oo(t("welcomeMessage")):S?.messages??oo(t("welcomeMessage"))});if(o==="pending"&&n){const S=ws();S&&S.owner===n?i(S.messages):bn(n,r),a(n)}else o!=="pending"&&n&&o!==n&&(i(s),bn(n,s),a(n));const l=te.useMemo(()=>r.map(S=>S.id===hs?{...S,text:t("welcomeMessage")}:S),[r,t]);te.useEffect(()=>{o!=="pending"&&bn(o,r)},[r,o]),te.useEffect(()=>{const S=[];for(let v=0;v<Nt.length;v++){const ge=Nt.key(v);ge&&ge.startsWith(no+"_")&&S.push(ge)}S.forEach(v=>Nt.removeItem(v))},[]);const b=(S,v,ge,y,J)=>{const Q=ge?r.find(we=>we.id===ge):void 0,he={id:Ci(),text:S,sender:v,timestamp:new Date,...Q&&{replyTo:{id:Q.id,text:Q.text,sender:Q.sender}},...y&&{buttons:y},...J&&{actionData:J}};return i(we=>{const Ee=[...we,he];return Ee.length>wn?Ee.slice(Ee.length-wn):Ee}),he},D=(S,v)=>{i(ge=>ge.map(y=>y.id===S&&y.actionData?{...y,actionData:{...y.actionData,status:v}}:y))},z=(S,v)=>{i(ge=>ge.map(y=>y.id===S?{...y,text:v}:y))},k=S=>r.find(v=>v.id===S),x=te.useCallback(()=>{i(s),bn(n,s)},[n,s]),B=te.useCallback(S=>{i(v=>{const ge=v.filter(y=>!S.includes(y.id));return ge.length>wn?ge.slice(ge.length-wn):ge})},[]);return{messages:l,setMessages:i,addMessage:b,updateMessageAction:D,updateMessageText:z,getMessageById:k,clearMessages:x,clearMessagesById:B}}const bs=te.createContext(void 0),xi=()=>{const e=te.useContext(bs);if(!e)throw new Error("useConfig must be used within ConfigProvider");return e},Ii=({children:e,initialConfig:t})=>O.jsx(bs.Provider,{value:{config:t||null},children:e});var Ni=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,so=Math.ceil,Ze=Math.floor,ze="[BigNumber Error] ",ys=ze+"Number primitive has more than 15 significant digits: ",nt=1e14,be=14,ao=9007199254740991,ro=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],vt=1e7,He=1e9;function As(e){var t,n,s,o=y.prototype={constructor:y,toString:null,valueOf:null},a=new y(1),r=20,i=4,l=-7,b=21,D=-1e7,z=1e7,k=!1,x=1,B=0,S={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},v="0123456789abcdefghijklmnopqrstuvwxyz",ge=!0;function y(c,d){var p,C,u,g,E,h,w,I,N=this;if(!(N instanceof y))return new y(c,d);if(d==null){if(c&&c._isBigNumber===!0){N.s=c.s,!c.c||c.e>z?N.c=N.e=null:c.e<D?N.c=[N.e=0]:(N.e=c.e,N.c=c.c.slice());return}if((h=typeof c=="number")&&c*0==0){if(N.s=1/c<0?(c=-c,-1):1,c===~~c){for(g=0,E=c;E>=10;E/=10,g++);g>z?N.c=N.e=null:(N.e=g,N.c=[c]);return}I=String(c)}else{if(!Ni.test(I=String(c)))return s(N,I,h);N.s=I.charCodeAt(0)==45?(I=I.slice(1),-1):1}(g=I.indexOf("."))>-1&&(I=I.replace(".","")),(E=I.search(/e/i))>0?(g<0&&(g=E),g+=+I.slice(E+1),I=I.substring(0,E)):g<0&&(g=I.length)}else{if(Pe(d,2,v.length,"Base"),d==10&&ge)return N=new y(c),we(N,r+N.e+1,i);if(I=String(c),h=typeof c=="number"){if(c*0!=0)return s(N,I,h,d);if(N.s=1/c<0?(I=I.slice(1),-1):1,y.DEBUG&&I.replace(/^0\.0*|\./,"").length>15)throw Error(ys+c)}else N.s=I.charCodeAt(0)===45?(I=I.slice(1),-1):1;for(p=v.slice(0,d),g=E=0,w=I.length;E<w;E++)if(p.indexOf(C=I.charAt(E))<0){if(C=="."){if(E>g){g=w;continue}}else if(!u&&(I==I.toUpperCase()&&(I=I.toLowerCase())||I==I.toLowerCase()&&(I=I.toUpperCase()))){u=!0,E=-1,g=0;continue}return s(N,String(c),h,d)}h=!1,I=n(I,d,10,N.s),(g=I.indexOf("."))>-1?I=I.replace(".",""):g=I.length}for(E=0;I.charCodeAt(E)===48;E++);for(w=I.length;I.charCodeAt(--w)===48;);if(I=I.slice(E,++w)){if(w-=E,h&&y.DEBUG&&w>15&&(c>ao||c!==Ze(c)))throw Error(ys+N.s*c);if((g=g-E-1)>z)N.c=N.e=null;else if(g<D)N.c=[N.e=0];else{if(N.e=g,N.c=[],E=(g+1)%be,g<0&&(E+=be),E<w){for(E&&N.c.push(+I.slice(0,E)),w-=be;E<w;)N.c.push(+I.slice(E,E+=be));E=be-(I=I.slice(E)).length}else E-=w;for(;E--;I+="0");N.c.push(+I)}}else N.c=[N.e=0]}y.clone=As,y.ROUND_UP=0,y.ROUND_DOWN=1,y.ROUND_CEIL=2,y.ROUND_FLOOR=3,y.ROUND_HALF_UP=4,y.ROUND_HALF_DOWN=5,y.ROUND_HALF_EVEN=6,y.ROUND_HALF_CEIL=7,y.ROUND_HALF_FLOOR=8,y.EUCLID=9,y.config=y.set=function(c){var d,p;if(c!=null)if(typeof c=="object"){if(c.hasOwnProperty(d="DECIMAL_PLACES")&&(p=c[d],Pe(p,0,He,d),r=p),c.hasOwnProperty(d="ROUNDING_MODE")&&(p=c[d],Pe(p,0,8,d),i=p),c.hasOwnProperty(d="EXPONENTIAL_AT")&&(p=c[d],p&&p.pop?(Pe(p[0],-He,0,d),Pe(p[1],0,He,d),l=p[0],b=p[1]):(Pe(p,-He,He,d),l=-(b=p<0?-p:p))),c.hasOwnProperty(d="RANGE"))if(p=c[d],p&&p.pop)Pe(p[0],-He,-1,d),Pe(p[1],1,He,d),D=p[0],z=p[1];else if(Pe(p,-He,He,d),p)D=-(z=p<0?-p:p);else throw Error(ze+d+" cannot be zero: "+p);if(c.hasOwnProperty(d="CRYPTO"))if(p=c[d],p===!!p)if(p)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))k=p;else throw k=!p,Error(ze+"crypto unavailable");else k=p;else throw Error(ze+d+" not true or false: "+p);if(c.hasOwnProperty(d="MODULO_MODE")&&(p=c[d],Pe(p,0,9,d),x=p),c.hasOwnProperty(d="POW_PRECISION")&&(p=c[d],Pe(p,0,He,d),B=p),c.hasOwnProperty(d="FORMAT"))if(p=c[d],typeof p=="object")S=p;else throw Error(ze+d+" not an object: "+p);if(c.hasOwnProperty(d="ALPHABET"))if(p=c[d],typeof p=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(p))ge=p.slice(0,10)=="0123456789",v=p;else throw Error(ze+d+" invalid: "+p)}else throw Error(ze+"Object expected: "+c);return{DECIMAL_PLACES:r,ROUNDING_MODE:i,EXPONENTIAL_AT:[l,b],RANGE:[D,z],CRYPTO:k,MODULO_MODE:x,POW_PRECISION:B,FORMAT:S,ALPHABET:v}},y.isBigNumber=function(c){if(!c||c._isBigNumber!==!0)return!1;if(!y.DEBUG)return!0;var d,p,C=c.c,u=c.e,g=c.s;e:if({}.toString.call(C)=="[object Array]"){if((g===1||g===-1)&&u>=-He&&u<=He&&u===Ze(u)){if(C[0]===0){if(u===0&&C.length===1)return!0;break e}if(d=(u+1)%be,d<1&&(d+=be),String(C[0]).length==d){for(d=0;d<C.length;d++)if(p=C[d],p<0||p>=nt||p!==Ze(p))break e;if(p!==0)return!0}}}else if(C===null&&u===null&&(g===null||g===1||g===-1))return!0;throw Error(ze+"Invalid BigNumber: "+c)},y.maximum=y.max=function(){return Q(arguments,-1)},y.minimum=y.min=function(){return Q(arguments,1)},y.random=(function(){var c=9007199254740992,d=Math.random()*c&2097151?function(){return Ze(Math.random()*c)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(p){var C,u,g,E,h,w=0,I=[],N=new y(a);if(p==null?p=r:Pe(p,0,He),E=so(p/be),k)if(crypto.getRandomValues){for(C=crypto.getRandomValues(new Uint32Array(E*=2));w<E;)h=C[w]*131072+(C[w+1]>>>11),h>=9e15?(u=crypto.getRandomValues(new Uint32Array(2)),C[w]=u[0],C[w+1]=u[1]):(I.push(h%1e14),w+=2);w=E/2}else if(crypto.randomBytes){for(C=crypto.randomBytes(E*=7);w<E;)h=(C[w]&31)*281474976710656+C[w+1]*1099511627776+C[w+2]*4294967296+C[w+3]*16777216+(C[w+4]<<16)+(C[w+5]<<8)+C[w+6],h>=9e15?crypto.randomBytes(7).copy(C,w):(I.push(h%1e14),w+=7);w=E/7}else throw k=!1,Error(ze+"crypto unavailable");if(!k)for(;w<E;)h=d(),h<9e15&&(I[w++]=h%1e14);for(E=I[--w],p%=be,E&&p&&(h=ro[be-p],I[w]=Ze(E/h)*h);I[w]===0;I.pop(),w--);if(w<0)I=[g=0];else{for(g=-1;I[0]===0;I.splice(0,1),g-=be);for(w=1,h=I[0];h>=10;h/=10,w++);w<be&&(g-=be-w)}return N.e=g,N.c=I,N}})(),y.sum=function(){for(var c=1,d=arguments,p=new y(d[0]);c<d.length;)p=p.plus(d[c++]);return p},n=(function(){var c="0123456789";function d(p,C,u,g){for(var E,h=[0],w,I=0,N=p.length;I<N;){for(w=h.length;w--;h[w]*=C);for(h[0]+=g.indexOf(p.charAt(I++)),E=0;E<h.length;E++)h[E]>u-1&&(h[E+1]==null&&(h[E+1]=0),h[E+1]+=h[E]/u|0,h[E]%=u)}return h.reverse()}return function(p,C,u,g,E){var h,w,I,N,F,X,se,ue,Ce=p.indexOf("."),Se=r,q=i;for(Ce>=0&&(N=B,B=0,p=p.replace(".",""),ue=new y(C),X=ue.pow(p.length-Ce),B=N,ue.c=d(ht(et(X.c),X.e,"0"),10,u,c),ue.e=ue.c.length),se=d(p,C,u,E?(h=v,c):(h=c,v)),I=N=se.length;se[--N]==0;se.pop());if(!se[0])return h.charAt(0);if(Ce<0?--I:(X.c=se,X.e=I,X.s=g,X=t(X,ue,Se,q,u),se=X.c,F=X.r,I=X.e),w=I+Se+1,Ce=se[w],N=u/2,F=F||w<0||se[w+1]!=null,F=q<4?(Ce!=null||F)&&(q==0||q==(X.s<0?3:2)):Ce>N||Ce==N&&(q==4||F||q==6&&se[w-1]&1||q==(X.s<0?8:7)),w<1||!se[0])p=F?ht(h.charAt(1),-Se,h.charAt(0)):h.charAt(0);else{if(se.length=w,F)for(--u;++se[--w]>u;)se[w]=0,w||(++I,se=[1].concat(se));for(N=se.length;!se[--N];);for(Ce=0,p="";Ce<=N;p+=h.charAt(se[Ce++]));p=ht(p,I,h.charAt(0))}return p}})(),t=(function(){function c(C,u,g){var E,h,w,I,N=0,F=C.length,X=u%vt,se=u/vt|0;for(C=C.slice();F--;)w=C[F]%vt,I=C[F]/vt|0,E=se*w+I*X,h=X*w+E%vt*vt+N,N=(h/g|0)+(E/vt|0)+se*I,C[F]=h%g;return N&&(C=[N].concat(C)),C}function d(C,u,g,E){var h,w;if(g!=E)w=g>E?1:-1;else for(h=w=0;h<g;h++)if(C[h]!=u[h]){w=C[h]>u[h]?1:-1;break}return w}function p(C,u,g,E){for(var h=0;g--;)C[g]-=h,h=C[g]<u[g]?1:0,C[g]=h*E+C[g]-u[g];for(;!C[0]&&C.length>1;C.splice(0,1));}return function(C,u,g,E,h){var w,I,N,F,X,se,ue,Ce,Se,q,ye,Ne,qe,Qe,ot,Ve,st,Be=C.s==u.s?1:-1,Oe=C.c,ke=u.c;if(!Oe||!Oe[0]||!ke||!ke[0])return new y(!C.s||!u.s||(Oe?ke&&Oe[0]==ke[0]:!ke)?NaN:Oe&&Oe[0]==0||!ke?Be*0:Be/0);for(Ce=new y(Be),Se=Ce.c=[],I=C.e-u.e,Be=g+I+1,h||(h=nt,I=$e(C.e/be)-$e(u.e/be),Be=Be/be|0),N=0;ke[N]==(Oe[N]||0);N++);if(ke[N]>(Oe[N]||0)&&I--,Be<0)Se.push(1),F=!0;else{for(Qe=Oe.length,Ve=ke.length,N=0,Be+=2,X=Ze(h/(ke[0]+1)),X>1&&(ke=c(ke,X,h),Oe=c(Oe,X,h),Ve=ke.length,Qe=Oe.length),qe=Ve,q=Oe.slice(0,Ve),ye=q.length;ye<Ve;q[ye++]=0);st=ke.slice(),st=[0].concat(st),ot=ke[0],ke[1]>=h/2&&ot++;do{if(X=0,w=d(ke,q,Ve,ye),w<0){if(Ne=q[0],Ve!=ye&&(Ne=Ne*h+(q[1]||0)),X=Ze(Ne/ot),X>1)for(X>=h&&(X=h-1),se=c(ke,X,h),ue=se.length,ye=q.length;d(se,q,ue,ye)==1;)X--,p(se,Ve<ue?st:ke,ue,h),ue=se.length,w=1;else X==0&&(w=X=1),se=ke.slice(),ue=se.length;if(ue<ye&&(se=[0].concat(se)),p(q,se,ye,h),ye=q.length,w==-1)for(;d(ke,q,Ve,ye)<1;)X++,p(q,Ve<ye?st:ke,ye,h),ye=q.length}else w===0&&(X++,q=[0]);Se[N++]=X,q[0]?q[ye++]=Oe[qe]||0:(q=[Oe[qe]],ye=1)}while((qe++<Qe||q[0]!=null)&&Be--);F=q[0]!=null,Se[0]||Se.splice(0,1)}if(h==nt){for(N=1,Be=Se[0];Be>=10;Be/=10,N++);we(Ce,g+(Ce.e=N+I*be-1)+1,E,F)}else Ce.e=I,Ce.r=+F;return Ce}})();function J(c,d,p,C){var u,g,E,h,w;if(p==null?p=i:Pe(p,0,8),!c.c)return c.toString();if(u=c.c[0],E=c.e,d==null)w=et(c.c),w=C==1||C==2&&(E<=l||E>=b)?An(w,E):ht(w,E,"0");else if(c=we(new y(c),d,p),g=c.e,w=et(c.c),h=w.length,C==1||C==2&&(d<=g||g<=l)){for(;h<d;w+="0",h++);w=An(w,g)}else if(d-=E+(C===2&&g>E),w=ht(w,g,"0"),g+1>h){if(--d>0)for(w+=".";d--;w+="0");}else if(d+=g-h,d>0)for(g+1==h&&(w+=".");d--;w+="0");return c.s<0&&u?"-"+w:w}function Q(c,d){for(var p,C,u=1,g=new y(c[0]);u<c.length;u++)C=new y(c[u]),(!C.s||(p=Bt(g,C))===d||p===0&&g.s===d)&&(g=C);return g}function he(c,d,p){for(var C=1,u=d.length;!d[--u];d.pop());for(u=d[0];u>=10;u/=10,C++);return(p=C+p*be-1)>z?c.c=c.e=null:p<D?c.c=[c.e=0]:(c.e=p,c.c=d),c}s=(function(){var c=/^(-?)0([xbo])(?=\w[\w.]*$)/i,d=/^([^.]+)\.$/,p=/^\.([^.]+)$/,C=/^-?(Infinity|NaN)$/,u=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(g,E,h,w){var I,N=h?E:E.replace(u,"");if(C.test(N))g.s=isNaN(N)?null:N<0?-1:1;else{if(!h&&(N=N.replace(c,function(F,X,se){return I=(se=se.toLowerCase())=="x"?16:se=="b"?2:8,!w||w==I?X:F}),w&&(I=w,N=N.replace(d,"$1").replace(p,"0.$1")),E!=N))return new y(N,I);if(y.DEBUG)throw Error(ze+"Not a"+(w?" base "+w:"")+" number: "+E);g.s=null}g.c=g.e=null}})();function we(c,d,p,C){var u,g,E,h,w,I,N,F=c.c,X=ro;if(F){e:{for(u=1,h=F[0];h>=10;h/=10,u++);if(g=d-u,g<0)g+=be,E=d,w=F[I=0],N=Ze(w/X[u-E-1]%10);else if(I=so((g+1)/be),I>=F.length)if(C){for(;F.length<=I;F.push(0));w=N=0,u=1,g%=be,E=g-be+1}else break e;else{for(w=h=F[I],u=1;h>=10;h/=10,u++);g%=be,E=g-be+u,N=E<0?0:Ze(w/X[u-E-1]%10)}if(C=C||d<0||F[I+1]!=null||(E<0?w:w%X[u-E-1]),C=p<4?(N||C)&&(p==0||p==(c.s<0?3:2)):N>5||N==5&&(p==4||C||p==6&&(g>0?E>0?w/X[u-E]:0:F[I-1])%10&1||p==(c.s<0?8:7)),d<1||!F[0])return F.length=0,C?(d-=c.e+1,F[0]=X[(be-d%be)%be],c.e=-d||0):F[0]=c.e=0,c;if(g==0?(F.length=I,h=1,I--):(F.length=I+1,h=X[be-g],F[I]=E>0?Ze(w/X[u-E]%X[E])*h:0),C)for(;;)if(I==0){for(g=1,E=F[0];E>=10;E/=10,g++);for(E=F[0]+=h,h=1;E>=10;E/=10,h++);g!=h&&(c.e++,F[0]==nt&&(F[0]=1));break}else{if(F[I]+=h,F[I]!=nt)break;F[I--]=0,h=1}for(g=F.length;F[--g]===0;F.pop());}c.e>z?c.c=c.e=null:c.e<D&&(c.c=[c.e=0])}return c}function Ee(c){var d,p=c.e;return p===null?c.toString():(d=et(c.c),d=p<=l||p>=b?An(d,p):ht(d,p,"0"),c.s<0?"-"+d:d)}return o.absoluteValue=o.abs=function(){var c=new y(this);return c.s<0&&(c.s=1),c},o.comparedTo=function(c,d){return Bt(this,new y(c,d))},o.decimalPlaces=o.dp=function(c,d){var p,C,u,g=this;if(c!=null)return Pe(c,0,He),d==null?d=i:Pe(d,0,8),we(new y(g),c+g.e+1,d);if(!(p=g.c))return null;if(C=((u=p.length-1)-$e(this.e/be))*be,u=p[u])for(;u%10==0;u/=10,C--);return C<0&&(C=0),C},o.dividedBy=o.div=function(c,d){return t(this,new y(c,d),r,i)},o.dividedToIntegerBy=o.idiv=function(c,d){return t(this,new y(c,d),0,1)},o.exponentiatedBy=o.pow=function(c,d){var p,C,u,g,E,h,w,I,N,F=this;if(c=new y(c),c.c&&!c.isInteger())throw Error(ze+"Exponent not an integer: "+Ee(c));if(d!=null&&(d=new y(d)),h=c.e>14,!F.c||!F.c[0]||F.c[0]==1&&!F.e&&F.c.length==1||!c.c||!c.c[0])return N=new y(Math.pow(+Ee(F),h?c.s*(2-yn(c)):+Ee(c))),d?N.mod(d):N;if(w=c.s<0,d){if(d.c?!d.c[0]:!d.s)return new y(NaN);C=!w&&F.isInteger()&&d.isInteger(),C&&(F=F.mod(d))}else{if(c.e>9&&(F.e>0||F.e<-1||(F.e==0?F.c[0]>1||h&&F.c[1]>=24e7:F.c[0]<8e13||h&&F.c[0]<=9999975e7)))return g=F.s<0&&yn(c)?-0:0,F.e>-1&&(g=1/g),new y(w?1/g:g);B&&(g=so(B/be+2))}for(h?(p=new y(.5),w&&(c.s=1),I=yn(c)):(u=Math.abs(+Ee(c)),I=u%2),N=new y(a);;){if(I){if(N=N.times(F),!N.c)break;g?N.c.length>g&&(N.c.length=g):C&&(N=N.mod(d))}if(u){if(u=Ze(u/2),u===0)break;I=u%2}else if(c=c.times(p),we(c,c.e+1,1),c.e>14)I=yn(c);else{if(u=+Ee(c),u===0)break;I=u%2}F=F.times(F),g?F.c&&F.c.length>g&&(F.c.length=g):C&&(F=F.mod(d))}return C?N:(w&&(N=a.div(N)),d?N.mod(d):g?we(N,B,i,E):N)},o.integerValue=function(c){var d=new y(this);return c==null?c=i:Pe(c,0,8),we(d,d.e+1,c)},o.isEqualTo=o.eq=function(c,d){return Bt(this,new y(c,d))===0},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(c,d){return Bt(this,new y(c,d))>0},o.isGreaterThanOrEqualTo=o.gte=function(c,d){return(d=Bt(this,new y(c,d)))===1||d===0},o.isInteger=function(){return!!this.c&&$e(this.e/be)>this.c.length-2},o.isLessThan=o.lt=function(c,d){return Bt(this,new y(c,d))<0},o.isLessThanOrEqualTo=o.lte=function(c,d){return(d=Bt(this,new y(c,d)))===-1||d===0},o.isNaN=function(){return!this.s},o.isNegative=function(){return this.s<0},o.isPositive=function(){return this.s>0},o.isZero=function(){return!!this.c&&this.c[0]==0},o.minus=function(c,d){var p,C,u,g,E=this,h=E.s;if(c=new y(c,d),d=c.s,!h||!d)return new y(NaN);if(h!=d)return c.s=-d,E.plus(c);var w=E.e/be,I=c.e/be,N=E.c,F=c.c;if(!w||!I){if(!N||!F)return N?(c.s=-d,c):new y(F?E:NaN);if(!N[0]||!F[0])return F[0]?(c.s=-d,c):new y(N[0]?E:i==3?-0:0)}if(w=$e(w),I=$e(I),N=N.slice(),h=w-I){for((g=h<0)?(h=-h,u=N):(I=w,u=F),u.reverse(),d=h;d--;u.push(0));u.reverse()}else for(C=(g=(h=N.length)<(d=F.length))?h:d,h=d=0;d<C;d++)if(N[d]!=F[d]){g=N[d]<F[d];break}if(g&&(u=N,N=F,F=u,c.s=-c.s),d=(C=F.length)-(p=N.length),d>0)for(;d--;N[p++]=0);for(d=nt-1;C>h;){if(N[--C]<F[C]){for(p=C;p&&!N[--p];N[p]=d);--N[p],N[C]+=nt}N[C]-=F[C]}for(;N[0]==0;N.splice(0,1),--I);return N[0]?he(c,N,I):(c.s=i==3?-1:1,c.c=[c.e=0],c)},o.modulo=o.mod=function(c,d){var p,C,u=this;return c=new y(c,d),!u.c||!c.s||c.c&&!c.c[0]?new y(NaN):!c.c||u.c&&!u.c[0]?new y(u):(x==9?(C=c.s,c.s=1,p=t(u,c,0,3),c.s=C,p.s*=C):p=t(u,c,0,x),c=u.minus(p.times(c)),!c.c[0]&&x==1&&(c.s=u.s),c)},o.multipliedBy=o.times=function(c,d){var p,C,u,g,E,h,w,I,N,F,X,se,ue,Ce,Se,q=this,ye=q.c,Ne=(c=new y(c,d)).c;if(!ye||!Ne||!ye[0]||!Ne[0])return!q.s||!c.s||ye&&!ye[0]&&!Ne||Ne&&!Ne[0]&&!ye?c.c=c.e=c.s=null:(c.s*=q.s,!ye||!Ne?c.c=c.e=null:(c.c=[0],c.e=0)),c;for(C=$e(q.e/be)+$e(c.e/be),c.s*=q.s,w=ye.length,F=Ne.length,w<F&&(ue=ye,ye=Ne,Ne=ue,u=w,w=F,F=u),u=w+F,ue=[];u--;ue.push(0));for(Ce=nt,Se=vt,u=F;--u>=0;){for(p=0,X=Ne[u]%Se,se=Ne[u]/Se|0,E=w,g=u+E;g>u;)I=ye[--E]%Se,N=ye[E]/Se|0,h=se*I+N*X,I=X*I+h%Se*Se+ue[g]+p,p=(I/Ce|0)+(h/Se|0)+se*N,ue[g--]=I%Ce;ue[g]=p}return p?++C:ue.splice(0,1),he(c,ue,C)},o.negated=function(){var c=new y(this);return c.s=-c.s||null,c},o.plus=function(c,d){var p,C=this,u=C.s;if(c=new y(c,d),d=c.s,!u||!d)return new y(NaN);if(u!=d)return c.s=-d,C.minus(c);var g=C.e/be,E=c.e/be,h=C.c,w=c.c;if(!g||!E){if(!h||!w)return new y(u/0);if(!h[0]||!w[0])return w[0]?c:new y(h[0]?C:u*0)}if(g=$e(g),E=$e(E),h=h.slice(),u=g-E){for(u>0?(E=g,p=w):(u=-u,p=h),p.reverse();u--;p.push(0));p.reverse()}for(u=h.length,d=w.length,u-d<0&&(p=w,w=h,h=p,d=u),u=0;d;)u=(h[--d]=h[d]+w[d]+u)/nt|0,h[d]=nt===h[d]?0:h[d]%nt;return u&&(h=[u].concat(h),++E),he(c,h,E)},o.precision=o.sd=function(c,d){var p,C,u,g=this;if(c!=null&&c!==!!c)return Pe(c,1,He),d==null?d=i:Pe(d,0,8),we(new y(g),c,d);if(!(p=g.c))return null;if(u=p.length-1,C=u*be+1,u=p[u]){for(;u%10==0;u/=10,C--);for(u=p[0];u>=10;u/=10,C++);}return c&&g.e+1>C&&(C=g.e+1),C},o.shiftedBy=function(c){return Pe(c,-ao,ao),this.times("1e"+c)},o.squareRoot=o.sqrt=function(){var c,d,p,C,u,g=this,E=g.c,h=g.s,w=g.e,I=r+4,N=new y("0.5");if(h!==1||!E||!E[0])return new y(!h||h<0&&(!E||E[0])?NaN:E?g:1/0);if(h=Math.sqrt(+Ee(g)),h==0||h==1/0?(d=et(E),(d.length+w)%2==0&&(d+="0"),h=Math.sqrt(+d),w=$e((w+1)/2)-(w<0||w%2),h==1/0?d="5e"+w:(d=h.toExponential(),d=d.slice(0,d.indexOf("e")+1)+w),p=new y(d)):p=new y(h+""),p.c[0]){for(w=p.e,h=w+I,h<3&&(h=0);;)if(u=p,p=N.times(u.plus(t(g,u,I,1))),et(u.c).slice(0,h)===(d=et(p.c)).slice(0,h))if(p.e<w&&--h,d=d.slice(h-3,h+1),d=="9999"||!C&&d=="4999"){if(!C&&(we(u,u.e+r+2,0),u.times(u).eq(g))){p=u;break}I+=4,h+=4,C=1}else{(!+d||!+d.slice(1)&&d.charAt(0)=="5")&&(we(p,p.e+r+2,1),c=!p.times(p).eq(g));break}}return we(p,p.e+r+1,i,c)},o.toExponential=function(c,d){return c!=null&&(Pe(c,0,He),c++),J(this,c,d,1)},o.toFixed=function(c,d){return c!=null&&(Pe(c,0,He),c=c+this.e+1),J(this,c,d)},o.toFormat=function(c,d,p){var C,u=this;if(p==null)c!=null&&d&&typeof d=="object"?(p=d,d=null):c&&typeof c=="object"?(p=c,c=d=null):p=S;else if(typeof p!="object")throw Error(ze+"Argument not an object: "+p);if(C=u.toFixed(c,d),u.c){var g,E=C.split("."),h=+p.groupSize,w=+p.secondaryGroupSize,I=p.groupSeparator||"",N=E[0],F=E[1],X=u.s<0,se=X?N.slice(1):N,ue=se.length;if(w&&(g=h,h=w,w=g,ue-=g),h>0&&ue>0){for(g=ue%h||h,N=se.substr(0,g);g<ue;g+=h)N+=I+se.substr(g,h);w>0&&(N+=I+se.slice(g)),X&&(N="-"+N)}C=F?N+(p.decimalSeparator||"")+((w=+p.fractionGroupSize)?F.replace(new RegExp("\\d{"+w+"}\\B","g"),"$&"+(p.fractionGroupSeparator||"")):F):N}return(p.prefix||"")+C+(p.suffix||"")},o.toFraction=function(c){var d,p,C,u,g,E,h,w,I,N,F,X,se=this,ue=se.c;if(c!=null&&(h=new y(c),!h.isInteger()&&(h.c||h.s!==1)||h.lt(a)))throw Error(ze+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+Ee(h));if(!ue)return new y(se);for(d=new y(a),I=p=new y(a),C=w=new y(a),X=et(ue),g=d.e=X.length-se.e-1,d.c[0]=ro[(E=g%be)<0?be+E:E],c=!c||h.comparedTo(d)>0?g>0?d:I:h,E=z,z=1/0,h=new y(X),w.c[0]=0;N=t(h,d,0,1),u=p.plus(N.times(C)),u.comparedTo(c)!=1;)p=C,C=u,I=w.plus(N.times(u=I)),w=u,d=h.minus(N.times(u=d)),h=u;return u=t(c.minus(p),C,0,1),w=w.plus(u.times(I)),p=p.plus(u.times(C)),w.s=I.s=se.s,g=g*2,F=t(I,C,g,i).minus(se).abs().comparedTo(t(w,p,g,i).minus(se).abs())<1?[I,C]:[w,p],z=E,F},o.toNumber=function(){return+Ee(this)},o.toPrecision=function(c,d){return c!=null&&Pe(c,1,He),J(this,c,d,2)},o.toString=function(c){var d,p=this,C=p.s,u=p.e;return u===null?C?(d="Infinity",C<0&&(d="-"+d)):d="NaN":(c==null?d=u<=l||u>=b?An(et(p.c),u):ht(et(p.c),u,"0"):c===10&&ge?(p=we(new y(p),r+u+1,i),d=ht(et(p.c),p.e,"0")):(Pe(c,2,v.length,"Base"),d=n(ht(et(p.c),u,"0"),10,c,C,!0)),C<0&&p.c[0]&&(d="-"+d)),d},o.valueOf=o.toJSON=function(){return Ee(this)},o._isBigNumber=!0,o[Symbol.toStringTag]="BigNumber",o[Symbol.for("nodejs.util.inspect.custom")]=o.valueOf,e!=null&&y.set(e),y}function $e(e){var t=e|0;return e>0||e===t?t:t-1}function et(e){for(var t,n,s=1,o=e.length,a=e[0]+"";s<o;){for(t=e[s++]+"",n=be-t.length;n--;t="0"+t);a+=t}for(o=a.length;a.charCodeAt(--o)===48;);return a.slice(0,o+1||1)}function Bt(e,t){var n,s,o=e.c,a=t.c,r=e.s,i=t.s,l=e.e,b=t.e;if(!r||!i)return null;if(n=o&&!o[0],s=a&&!a[0],n||s)return n?s?0:-i:r;if(r!=i)return r;if(n=r<0,s=l==b,!o||!a)return s?0:!o^n?1:-1;if(!s)return l>b^n?1:-1;for(i=(l=o.length)<(b=a.length)?l:b,r=0;r<i;r++)if(o[r]!=a[r])return o[r]>a[r]^n?1:-1;return l==b?0:l>b^n?1:-1}function Pe(e,t,n,s){if(e<t||e>n||e!==Ze(e))throw Error(ze+(s||"Argument")+(typeof e=="number"?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function yn(e){var t=e.c.length-1;return $e(e.e/be)==t&&e.c[t]%2!=0}function An(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function ht(e,t,n){var s,o;if(t<0){for(o=n+".";++t;o+=n);e=o+e}else if(s=e.length,++t>s){for(o=n,t-=s;--t;o+=n);e+=o}else t<s&&(e=e.slice(0,t)+"."+e.slice(t));return e}var re=As();class Vt{baseUrl;constructor(t){this.baseUrl=t}buildUrl(t,n){const s=new URL(t,this.baseUrl);return n&&Object.entries(n).forEach(([o,a])=>{a!=null&&s.searchParams.append(o,String(a))}),s.toString()}async get(t,n={}){const s=this.buildUrl(t,n.query),o=await fetch(s,{method:"GET",headers:n.headers||{}});if(!o.ok){let r=null;try{r=await o.json()}catch{try{const l=await o.text();l&&(r={message:l})}catch{}}const i=new Error(r?.message||r?.errorMessage||`HTTP ${o.status}: ${o.statusText}`);throw i.status=o.status,i.statusText=o.statusText,r&&(i.data=r),i}return{data:await o.json(),status:o.status}}async post(t,n,s={}){const o=this.buildUrl(t,s.query),a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",...s.headers},body:JSON.stringify(n)});if(!a.ok){let i=null;try{i=await a.json()}catch{try{const b=await a.text();b&&(i={message:b})}catch{}}const l=new Error(i?.message||i?.errorMessage||`HTTP ${a.status}: ${a.statusText}`);throw l.status=a.status,l.statusText=a.statusText,i&&(l.data=i),l}return{data:await a.json(),status:a.status}}}const Bi=.01,ks=new Vt("https://wallet-api.pantograph.app"),Fi="https://deep-index.moralis.io";function $t(){return"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImY4NmY0Yzc2LTA3MDQtNGEwZS04YTA0LWUwODllOGQxMGZjZCIsIm9yZ0lkIjoiMzk0MDAyIiwidXNlcklkIjoiNDA0ODUzIiwidHlwZUlkIjoiYjQyODExOTQtOGQ0Yi00NjkxLTlhZjItNjU4ODE2NzExYmRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MTY4NjQyNTYsImV4cCI6NDg3MjYyNDI1Nn0.V8crfBIBardAnZkc05FD0hQIJBeZxMqvzRnYExVtnF8"}function en(e){return{"X-API-Key":e,Accept:"application/json"}}const tn=new Vt(Fi);async function je(e){const{address:t,chain:n="base",token_addresses:s,exclude_spam:o,exclude_unverified_contracts:a}=e;if(!t)throw new Error("Address is required");try{const r=$t(),i={chain:n,exclude_spam:o??!1,exclude_unverified_contracts:a??!1};s&&(i.token_addresses=s);const b=(await tn.get(`/api/v2.2/wallets/${encodeURIComponent(t)}/tokens`,{query:i,headers:en(r)})).data;if(b?.result?.length>0){b.result=b.result.filter(D=>new re(D?.balance||0).gt(0)),b.result=b.result.map(D=>({...D,token_address:D.token_address===ki?We:D.token_address}));try{if(b.result.length>0){const D=ps(n)??n,z=b.result.map(x=>x.token_address),k=await ks.get(`/keyrings/tokens/${D}/v2`,{query:{addresses:z.join(",")}});if(Array.isArray(k.data)){const x=new Map;for(const B of k.data)B.address&&B.price!=null&&x.set(B.address.toLowerCase(),parseFloat(String(B.price)));b.result=b.result.map(B=>{const S=x.get(B.token_address.toLowerCase());if(S==null)return B;const v=re(B.balance_formatted||"0").multipliedBy(S).toNumber();return{...B,usd_price:S,usd_value:v}}),b.result=b.result.filter(B=>B.usd_value==null||new re(B.usd_value).gte(Bi))}}}catch(D){console.warn("⚠️ Failed to fetch Pantograph prices:",D)}}return{success:!0,data:b}}catch(r){const i=r instanceof Error?r.message:"Unknown error";return console.error("❌ Error fetching token balances:",i),{success:!1,error:i}}}async function vs(e){const{address:t,chain:n="base"}=e;if(!t)throw new Error("Token address is required");try{const s=ps(n)??n,o=await ks.get(`/keyrings/tokens/${s}/v2`,{query:{addresses:t}}),a=t===We,i=(Array.isArray(o.data)?o.data:[]).find(B=>B.address?.toLowerCase()===t.toLowerCase()||a&&B.address==="")??null;if(i)return{success:!0,data:{token_address:i.address??t,name:i.name??"",symbol:i.symbol??"",decimals:i.decimals!=null?Number(i.decimals):18,logo:i.icon_image||i.logo,thumbnail:i.icon_image||i.logo,usd_price:i.price!=null?parseFloat(i.price):void 0,usd_price_24hr_percent_change:i.price_change_percentage_24h??void 0,usd_price_24hr_usd_change:i.price_change_24h??void 0}};console.warn("⚠️ Pantograph returned no result, falling back to Moralis API");const l=$t(),[b,D]=await Promise.allSettled([tn.get("/api/v2.2/erc20/metadata",{query:{chain:n,addresses:[t]},headers:en(l)}),tn.get(`/api/v2.2/erc20/${encodeURIComponent(t)}/price`,{query:{chain:n,include:"percent_change"},headers:en(l)})]),z=b.status==="fulfilled"?b.value.data:[];if(!z||z.length===0)return{success:!1,error:"Token metadata not found"};const k=z[0],x=D.status==="fulfilled"?D.value.data:void 0;return{success:!0,data:{token_address:k.token_address,name:k.name,symbol:k.symbol,decimals:k.decimals,logo:k.logo||k.thumbnail,thumbnail:k.thumbnail,usd_price:x?.usdPrice??void 0,usd_price_24hr_percent_change:x?.["24hrPercentChange"]?parseFloat(x["24hrPercentChange"]):void 0,usd_price_24hr_usd_change:x?.usdPriceChange24hr??void 0}}}catch(s){const o=s instanceof Error?s.message:"Unknown error";return console.error("❌ Error fetching token metadata:",o),{success:!1,error:o}}}async function Pi(e){const{prompt:t,model:n="gpt-4.1-mini",stream:s=!1,systemPrompt:o}=e;if(!t)throw new Error("Prompt is required");try{const a=$t(),r=new Vt("https://cortex-api.moralis.io"),i=o?`${o}
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
User: ${t}`:t;return{success:!0,data:(await r.post("/chat",{prompt:i,model:n,stream:s},{headers:{"X-API-Key":a,Accept:"application/json","Content-Type":"application/json"}})).data}}catch(a){const r=a instanceof Error?a.message:"Unknown error";return console.error("❌ Error chatting with Cortex AI:",r),{success:!1,error:r}}}async function Oi(e){const{address:t,chain:n="base"}=e;if(!t)throw new Error("Contract address is required");try{const s=$t();return{success:!0,data:(await tn.get(`/api/v2.2/nft/${encodeURIComponent(t)}/metadata`,{query:{chain:n},headers:en(s)})).data}}catch(s){const o=s instanceof Error?s.message:"Unknown error";return console.error("❌ Error fetching NFT contract metadata:",o),{success:!1,error:o}}}async function kn(e){const{address:t,chain:n="base",limit:s=100,exclude_spam:o=!0,cursor:a}=e;if(!t)throw new Error("Address is required");try{const r=$t(),i={chain:n,format:"decimal",limit:s,exclude_spam:o,media_items:!0,normalizeMetadata:!0};return a&&(i.cursor=a),{success:!0,data:(await tn.get(`/api/v2.2/${encodeURIComponent(t)}/nft`,{query:i,headers:en(r)})).data}}catch(r){const i=r instanceof Error?r.message:"Unknown error";return console.error("❌ Error fetching NFTs:",i),{success:!1,error:i}}}const Di="data:image/png;base64,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",Li="data:image/svg+xml,%3csvg%20width='36'%20height='36'%20viewBox='0%200%2036%2036'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3crect%20width='36'%20height='36'%20rx='18'%20fill='%232358B2'/%3e%3cmask%20id='mask0_1924_16177'%20style='mask-type:alpha'%20maskUnits='userSpaceOnUse'%20x='11'%20y='10'%20width='17'%20height='16'%3e%3crect%20x='11.334'%20y='10'%20width='16'%20height='16'%20fill='url(%23pattern0_1924_16177)'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1924_16177)'%3e%3crect%20x='11.334'%20y='10'%20width='16'%20height='16'%20fill='white'/%3e%3c/g%3e%3cdefs%3e%3cpattern%20id='pattern0_1924_16177'%20patternContentUnits='objectBoundingBox'%20width='1'%20height='1'%3e%3cuse%20xlink:href='%23image0_1924_16177'%20transform='scale(0.00195312)'/%3e%3c/pattern%3e%3cimage%20id='image0_1924_16177'%20width='512'%20height='512'%20preserveAspectRatio='none'%20xlink:href='data:image/png;base64,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'/%3e%3c/defs%3e%3c/svg%3e";class Ui extends Vt{constructor(){super("https://wallet-api.pantograph.app")}async getTokensDetails(t,n="base"){try{if(!t||!Array.isArray(t)||t.length===0)throw new Error("Addresses must be a non-empty array");const s=t.join(","),o=await this.get(`/keyrings/tokens/${n}/v2`,{query:{addresses:s}});return Array.isArray(o.data)&&(o.data=o.data.filter((a,r,i)=>r===i.findIndex(l=>l.address.toLowerCase()===a.address.toLowerCase())),Array.isArray(t)&&t.length>0&&(o.data=o.data.filter(a=>t.some(r=>r.toLowerCase()===a.address.toLowerCase())),o.data.sort((a,r)=>t.findIndex(i=>i.toLowerCase()===a.address.toLowerCase())-t.findIndex(i=>i.toLowerCase()===r.address.toLowerCase())))),o}catch(s){throw console.error("❌ Error getting tokens details:",s instanceof Error?s.message:s),s}}async getTokenDetail(t,n="base"){try{if(!t)throw new Error("Address is required");const s=await this.getTokensDetails([t],n);return{data:s.data[0]||null,status:s.status}}catch(s){throw console.error(`❌ Error getting token detail for ${t}:`,s instanceof Error?s.message:s),s}}async getTopGainers(t="base",n="24h",s=3){try{return await this.get(`/token-list/top-gainers/${t}`,{query:{duration:n,limit:s}})}catch(o){throw console.error("❌ Error getting top gainers:",o instanceof Error?o.message:o),o}}}const tt=new Ui,Mi="https://dln.debridge.finance",Ri=new Vt(Mi);async function io(e){const{chainId:t,tokenIn:n,tokenInAmount:s,tokenOut:o,accesstoken:a,slippage:r="auto",tokenOutRecipient:i}=e;if(!t||!n||!s||!o)throw new Error("Missing required parameters: chainId, tokenIn, tokenInAmount, tokenOut");try{const D=(await(await fetch("https://exchange-api.keyring.app/admin/setting?configs=others",{method:"GET"})).json())?.others||{},z=D?.AFFILIATE_FEE_PERENT,k=D?.AFFILIATE_FEE_RECIPIENT,x=await Ri.get("/v1.0/chain/transaction",{query:{chainId:String(t),tokenIn:n,tokenInAmount:s,tokenOut:o,slippage:String(r),tokenOutRecipient:i,accesstoken:a,affiliateFeePercent:z,affiliateFeeRecipient:k}});if(x.data?.error)throw new Error(`DeBridge API Error: ${x.data.error}`);return console.log("✅ Quote retrieved successfully"),{success:!0,data:x.data}}catch(l){let b=l instanceof Error?l.message:"Unknown error";const D=l;D.data?.errorMessage?b=D.data.errorMessage:D.response?.data?.errorMessage?b=D.response.data.errorMessage:D.data?.message?b=D.data.message:D.response?.data?.message&&(b=D.response.data.message);const z=D.status||D.response?.status||D.statusCode||D.data?.status;return console.error("📋 Error details:",{errorMessage:b,errorCode:D.data?.errorCode,errorId:D.data?.errorId,status:z,reqId:D.data?.reqId,fullError:{message:D.message,status:D.status,statusCode:D.statusCode}}),{success:!1,error:l instanceof Error?l.message:"Unknown error",status:z,errorMessage:b,errorCode:D.data?.errorCode,errorId:D.data?.errorId}}}const Hi="data:image/svg+xml,%3csvg%20width='180'%20height='180'%20viewBox='0%200%20180%20180'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20opacity='0.1'%3e%3cpath%20d='M102.392%20118.157L102.417%20109.35L89.7594%20102.042C89.5768%20101.937%2089.3953%20101.826%2089.2149%20101.71L89.1861%20101.692C89.012%20101.581%2088.839%20101.47%2088.666%20101.346C88.6061%20101.305%2088.5473%20101.262%2088.4874%20101.22C88.3765%20101.139%2088.259%20101.057%2088.1459%20100.972C88.0749%20100.919%2088.0051%20100.861%2087.9352%20100.811C87.8321%20100.733%2087.73%20100.653%2087.6291%20100.571C87.5552%20100.51%2087.4813%20100.449%2087.4073%20100.387C87.3098%20100.306%2087.2125%20100.224%2087.1157%20100.141C87.0418%20100.075%2086.9678%20100.009%2086.8939%2099.9421C86.7985%2099.8578%2086.7039%2099.772%2086.61%2099.6848C86.5346%2099.6149%2086.4592%2099.5462%2086.3882%2099.4752C86.2929%2099.3843%2086.1986%2099.2922%2086.1044%2099.2002C86.0356%2099.1325%2085.9657%2099.0649%2085.897%2098.9961C85.7983%2098.8963%2085.7007%2098.7954%2085.6031%2098.6934C85.541%2098.628%2085.4778%2098.5637%2085.4168%2098.4982C85.3059%2098.3763%2085.195%2098.2521%2085.0786%2098.1267L84.9533%2097.9881C84.7995%2097.8137%2084.648%2097.6366%2084.4986%2097.457C84.4643%2097.4159%2084.4321%2097.3738%2084.3977%2097.3328C84.2868%2097.1919%2084.1671%2097.05%2084.054%2096.9069C83.9172%2096.7325%2083.7826%2096.5558%2083.6503%2096.3769L83.5827%2096.2881C83.3675%2095.9965%2083.1591%2095.6971%2082.955%2095.3943L82.8441%2095.228C82.5876%2094.8421%2082.341%2094.4495%2082.1045%2094.0503L82.0135%2093.8984C81.8487%2093.616%2081.6886%2093.3306%2081.5334%2093.0423C81.4768%2092.937%2081.4225%2092.8316%2081.3681%2092.7263C81.3138%2092.6209%2081.2572%2092.5045%2081.1952%2092.3936C81.1164%2092.2361%2081.0399%2092.0787%2080.9634%2091.9201C80.939%2091.8691%2080.9135%2091.8181%2080.8891%2091.7671C80.793%2091.5623%2080.6995%2091.3564%2080.6085%2091.1494C80.5852%2091.095%2080.562%2091.0385%2080.5398%2090.9875C80.4732%2090.8337%2080.4082%2090.6792%2080.3446%2090.524L80.2592%2090.3121C80.2008%2090.1643%2080.1435%2090.0164%2080.0873%2089.8686C80.0629%2089.8043%2080.0385%2089.7388%2080.0141%2089.6745C79.9454%2089.486%2079.8789%2089.2971%2079.8145%2089.1079L79.789%2089.0347C79.7151%2088.8218%2079.6471%2088.6088%2079.585%2088.3959C79.5639%2088.3283%2079.5451%2088.2606%2079.5262%2088.193C79.483%2088.0444%2079.4397%2087.8958%2079.3998%2087.7494C79.3776%2087.6685%2079.3566%2087.5875%2079.3355%2087.5066C79.3%2087.3691%2079.2656%2087.2319%2079.2324%2087.0952C79.2131%2087.0138%2079.1943%2086.9325%2079.1758%2086.8512C79.1436%2086.7104%2079.1137%2086.5695%2079.0849%2086.4298C79.0693%2086.3555%2079.0538%2086.2801%2079.0394%2086.208C79.0047%2086.0276%2078.9725%2085.848%2078.9429%2085.6691C78.9429%2085.638%2078.9318%2085.607%2078.9274%2085.5759C78.8941%2085.366%2078.8646%2085.1564%2078.8387%2084.9472C78.832%2084.8906%2078.8265%2084.8363%2078.8198%2084.7775C78.8028%2084.6259%2078.7873%2084.4748%2078.7733%2084.3239C78.7666%2084.253%2078.7622%2084.182%2078.7566%2084.1121C78.7455%2083.9702%2078.7378%2083.8294%2078.7311%2083.6885C78.7311%2083.622%2078.7245%2083.5544%2078.7222%2083.4878C78.7156%2083.2882%2078.71%2083.0897%2078.7112%2082.8934L78.7466%2069.3645L77.6377%2068.7258L71.9567%2065.45C70.7912%2064.7503%2069.5073%2064.2703%2068.1686%2064.0339V64.0417C68.1597%2064.1105%2068.1542%2064.1825%2068.1464%2064.2513C68.1387%2064.32%2068.1298%2064.4021%2068.1231%2064.4797C68.1231%2064.5119%2068.1165%2064.5418%2068.1132%2064.574C68.1043%2064.676%2068.0999%2064.7802%2068.0943%2064.8845C68.0943%2064.941%2068.0865%2064.9954%2068.0843%2065.0541V65.0952C68.0769%2065.2704%2068.0729%2065.4482%2068.0721%2065.6286V65.6607L68.0078%2089.1023C68.0078%2089.2679%2068.01%2089.4339%2068.0145%2089.6002C68.0145%2089.6324%2068.0145%2089.6634%2068.0145%2089.6956C68.0145%2089.7632%2068.0211%2089.832%2068.0244%2089.8996C68.0278%2089.9673%2068.03%2090.056%2068.0355%2090.1347C68.0355%2090.1957%2068.0455%2090.2578%2068.05%2090.3199C68.0544%2090.382%2068.061%2090.463%2068.0677%2090.535C68.0677%2090.5805%2068.0743%2090.6271%2068.0788%2090.6725C68.0888%2090.7757%2068.1021%2090.8799%2068.1132%2090.9842C68.1198%2091.0418%2068.1254%2091.095%2068.132%2091.1583L68.1387%2091.2137C68.1623%2091.3985%2068.1886%2091.5833%2068.2174%2091.7682V91.7837C68.2174%2091.8147%2068.2285%2091.8469%2068.234%2091.8779C68.2584%2092.0277%2068.2839%2092.1774%2068.3117%2092.3282C68.3172%2092.357%2068.3239%2092.3858%2068.3294%2092.4147C68.3438%2092.4901%2068.3604%2092.5655%2068.376%2092.6365C68.3915%2092.7074%2068.4104%2092.8128%2068.4292%2092.9004C68.4403%2092.9525%2068.4536%2093.0046%2068.4658%2093.0556C68.4843%2093.1362%2068.5031%2093.2172%2068.5224%2093.2985C68.5368%2093.3595%2068.5501%2093.4205%2068.5645%2093.4803C68.5789%2093.5402%2068.6055%2093.6345%2068.6255%2093.711C68.6454%2093.7875%2068.6676%2093.8729%2068.6887%2093.9527C68.6998%2093.9916%2068.7087%2094.0304%2068.7186%2094.0636C68.7486%2094.1745%2068.7818%2094.2854%2068.8151%2094.3963C68.8351%2094.464%2068.8539%2094.5316%2068.8739%2094.5993L68.8894%2094.6547C68.9478%2094.8462%2069.0092%2095.0376%2069.0735%2095.2291V95.2391L69.099%2095.3123C69.1533%2095.4731%2069.2099%2095.6339%2069.2676%2095.7947C69.2775%2095.8224%2069.2886%2095.8501%2069.2986%2095.8778C69.3219%2095.9422%2069.3463%2096.0054%2069.3707%2096.0697C69.4039%2096.1595%2069.4372%2096.2482%2069.4716%2096.338C69.4949%2096.3979%2069.5193%2096.4567%2069.5437%2096.5166L69.628%2096.7262C69.649%2096.7761%2069.6679%2096.8271%2069.6889%2096.877C69.7322%2096.9812%2069.7777%2097.0855%2069.8231%2097.1897C69.8464%2097.244%2069.8686%2097.3006%2069.893%2097.3516L69.9174%2097.4082C69.9972%2097.5878%2070.0789%2097.7671%2070.1625%2097.946L70.1735%2097.9704C70.1979%2098.0214%2070.2234%2098.0724%2070.2478%2098.1234C70.3133%2098.2598%2070.3776%2098.3973%2070.4452%2098.5326L70.4785%2098.5969C70.5351%2098.7078%2070.5894%2098.8187%2070.6515%2098.9296C70.6981%2099.0194%2070.7424%2099.1093%2070.7901%2099.198L70.8167%2099.2456C70.9712%2099.534%2071.1313%2099.8193%2071.2969%20100.102C71.3113%20100.126%2071.3235%20100.151%2071.3379%20100.175C71.3523%20100.199%2071.3723%20100.227%2071.3878%20100.254C71.6244%20100.653%2071.8709%20101.045%2072.1275%20101.431C72.1419%20101.452%2072.1541%20101.475%2072.1685%20101.497C72.1829%20101.519%2072.2173%20101.564%2072.2406%20101.6C72.4446%20101.902%2072.652%20102.201%2072.8682%20102.493L72.9314%20102.575C73.0645%20102.754%2073.1994%20102.931%2073.3362%20103.107L73.3595%20103.137C73.4704%20103.272%2073.5746%20103.405%2073.6833%20103.537L73.7798%20103.656L73.7875%20103.665C73.9287%20103.835%2074.0718%20104.002%2074.2167%20104.167L74.2344%20104.187L74.3597%20104.326C74.4551%20104.437%2074.5516%20104.541%2074.6481%20104.646L74.698%20104.698C74.7601%20104.764%2074.8222%20104.828%2074.8843%20104.893C74.9464%20104.959%2075.0284%20105.046%2075.106%20105.122L75.1814%20105.197C75.2502%20105.266%2075.319%20105.334%2075.3888%20105.401C75.4587%20105.469%2075.5108%20105.524%2075.5729%20105.583L75.6727%20105.676C75.747%20105.747%2075.8224%20105.817%2075.8945%20105.886C75.9488%20105.936%2076.0054%20105.987%2076.0564%20106.036L76.1784%20106.146L76.4002%20106.345C76.4478%20106.386%2076.4944%20106.429%2076.5432%20106.469C76.592%20106.509%2076.643%20106.55%2076.6918%20106.59L76.9136%20106.774C76.9535%20106.806%2076.9923%20106.84%2077.0322%20106.872C77.0943%20106.921%2077.1576%20106.967%2077.2197%20107.015C77.2818%20107.062%2077.3594%20107.126%2077.4292%20107.174L77.5168%20107.241C77.6011%20107.303%2077.6876%20107.362%2077.7719%20107.423C77.8307%20107.465%2077.8894%20107.508%2077.9493%20107.549L77.997%20107.584C78.1523%20107.69%2078.3086%20107.794%2078.4661%20107.894L78.4905%20107.91C78.6357%20108.002%2078.7821%20108.092%2078.9341%20108.178L79.0449%20108.241L98.4999%20119.478C98.6175%20119.546%2098.7346%20119.611%2098.8515%20119.674L98.9867%20119.744L99.1653%20119.836C99.2119%20119.859%2099.2584%20119.885%2099.3039%20119.908C99.3793%20119.946%2099.4547%20119.979%2099.5257%20120.019L99.6832%20120.093L99.7464%20120.123C99.8942%20120.19%20100.042%20120.252%20100.19%20120.311L100.208%20120.317C100.35%20120.374%20100.492%20120.428%20100.633%20120.477L100.693%20120.497L100.856%20120.55C100.93%20120.575%20101.004%20120.6%20101.078%20120.622L101.189%20120.655L101.385%20120.709C101.434%20120.722%20101.484%20120.738%20101.532%20120.75C101.579%20120.762%20101.643%20120.773%20101.693%20120.785L101.888%20120.829L101.986%20120.851L102.085%20120.867C102.158%20120.553%20102.219%20120.227%20102.266%20119.886C102.346%20119.313%20102.388%20118.736%20102.392%20118.157Z'%20fill='url(%23paint0_linear_302_6100)'/%3e%3cpath%20d='M91.4307%2064.3019L78.0005%2056.5472L75.8214%2055.2885L71.9957%2053.0796C59.9427%2046.1222%2050.1032%2051.73%2050.0633%2065.5794L50.0001%2087.9076C49.9613%20101.769%2059.7365%20118.694%2071.7894%20125.652L91.2244%20136.872C103.276%20143.831%20113.117%20138.227%20113.156%20124.373L113.183%20114.546V113.668L113.217%20102.041C113.259%2088.1926%20103.482%2071.2604%2091.4307%2064.3019ZM102.419%20108.881V109.349L102.395%20118.156C102.394%20118.733%20102.355%20119.309%20102.278%20119.881C102.232%20120.222%20102.167%20120.547%20102.097%20120.863C100.943%20125.853%2096.5184%20127.534%2091.2621%20124.5L71.8249%20113.283C65.708%20109.753%2060.7478%20101.16%2060.7678%2094.1275L60.831%2071.7949C60.8454%2066.777%2063.3948%2063.8927%2067.0787%2063.9382C67.4454%2063.9447%2067.8112%2063.9777%2068.1732%2064.0369C69.5103%2064.2737%2070.7927%2064.7537%2071.9568%2065.453L77.6312%2068.7232L78.7401%2069.3619L91.3974%2076.6697C97.512%2080.205%20102.476%2088.7947%20102.452%2095.8275L102.419%20108.881Z'%20fill='url(%23paint1_linear_302_6100)'/%3e%3cpath%20d='M129.993%2090.9695C129.993%2090.9063%20129.987%2090.842%20129.985%2090.7788C129.985%2090.648%20129.972%2090.516%20129.966%2090.3851C129.958%2090.2288%20129.953%2090.0746%20129.944%2089.9172C129.936%2089.7952%20129.924%2089.671%20129.914%2089.5479C129.904%2089.4248%20129.892%2089.2707%20129.88%2089.1309C129.873%2089.04%20129.867%2088.9491%20129.858%2088.8582C129.838%2088.6519%20129.813%2088.4445%20129.789%2088.2383C129.776%2088.1274%20129.766%2088.0165%20129.752%2087.9056C129.752%2087.869%20129.744%2087.8324%20129.739%2087.7947C129.694%2087.431%20129.642%2087.0658%20129.583%2086.6991L129.578%2086.6669C129.568%2086.6037%20129.555%2086.5405%20129.544%2086.4773C129.497%2086.1845%20129.448%2085.8918%20129.392%2085.5979C129.381%2085.5391%20129.368%2085.4815%20129.357%2085.4227C129.328%2085.2752%20129.297%2085.1277%20129.267%2084.9791C129.232%2084.805%20129.199%2084.632%20129.156%2084.459C129.134%2084.3559%20129.107%2084.2528%20129.084%2084.1497C129.048%2083.99%20129.011%2083.8303%20128.973%2083.6706C128.944%2083.5519%20128.92%2083.4333%20128.89%2083.3146C128.852%2083.1627%20128.809%2083.0097%20128.77%2082.8566C128.731%2082.7036%20128.688%2082.5395%20128.645%2082.3809C128.625%2082.3055%20128.606%2082.2301%20128.585%2082.1591C128.524%2081.9373%20128.458%2081.7222%20128.393%2081.5038C128.354%2081.3729%20128.318%2081.2409%20128.282%2081.1101C128.271%2081.0746%20128.262%2081.0391%20128.251%2080.9992C128.135%2080.6214%20128.014%2080.244%20127.889%2079.867L127.881%2079.8448C127.863%2079.7927%20127.844%2079.7417%20127.827%2079.6896C127.716%2079.3768%20127.613%2079.063%20127.494%2078.7503C127.474%2078.6948%20127.452%2078.6394%20127.432%2078.584C127.385%2078.4564%20127.336%2078.3289%20127.288%2078.2014C127.222%2078.0273%20127.159%2077.8532%20127.091%2077.6791C127.046%2077.5615%20126.997%2077.4451%20126.949%2077.3275C126.894%2077.1886%20126.838%2077.0499%20126.782%2076.9117C126.742%2076.813%20126.704%2076.7143%20126.663%2076.6167C126.577%2076.4094%20126.487%2076.2042%20126.398%2075.9979C126.353%2075.8871%20126.308%2075.7861%20126.262%2075.6797L126.215%2075.5688C126.059%2075.2147%20125.898%2074.8617%20125.733%2074.5098L125.711%2074.4632C125.661%2074.3523%20125.608%2074.2525%20125.558%2074.146C125.431%2073.881%20125.305%2073.616%20125.174%2073.3532C125.153%2073.311%20125.13%2073.2689%20125.109%2073.2256C124.998%2073.0038%20124.887%2072.7821%20124.768%2072.5669C124.677%2072.3906%20124.589%2072.2143%20124.495%2072.0391C124.478%2072.0069%20124.459%2071.9759%20124.441%2071.9426C124.136%2071.3756%20123.821%2070.8137%20123.495%2070.257C123.467%2070.2094%20123.443%2070.1617%20123.415%2070.114C123.333%2069.9743%20123.247%2069.8379%20123.164%2069.6992C123.024%2069.4675%20122.885%2069.2357%20122.742%2069.0062C122.618%2068.8066%20122.492%2068.6092%20122.365%2068.4118C122.22%2068.19%20122.076%2067.9604%20121.927%2067.7364C121.877%2067.6599%20121.829%2067.5823%20121.778%2067.5069C121.727%2067.4315%20121.682%2067.3727%20121.635%2067.304C121.233%2066.7085%20120.824%2066.1196%20120.4%2065.5441L120.395%2065.5352C120.354%2065.4787%20120.309%2065.4243%20120.268%2065.3689C120.006%2065.017%20119.741%2064.6688%20119.472%2064.3243L119.425%2064.2633C119.215%2063.996%20119%2063.7343%20118.786%2063.4715C118.722%2063.395%20118.661%2063.3163%20118.598%2063.2398L118.584%2063.222C118.306%2062.8879%20118.024%2062.5581%20117.739%2062.2328L117.702%2062.1929C117.621%2062.0998%20117.537%2062.0111%20117.455%2061.919C117.266%2061.7083%20117.078%2061.4954%20116.886%2061.2892L116.788%2061.1871C116.666%2061.0563%20116.542%2060.9288%20116.418%2060.799C116.276%2060.6504%20116.135%2060.4985%20115.991%2060.3554C115.942%2060.3055%20115.891%2060.2579%20115.841%2060.208C115.706%2060.0716%20115.57%2059.9385%20115.433%2059.8043C115.297%2059.6701%20115.193%2059.5626%20115.071%2059.445C115.005%2059.3829%20114.939%2059.323%20114.873%2059.2609C114.726%2059.1212%20114.577%2058.9837%20114.43%2058.8473C114.319%2058.7497%20114.219%2058.6488%20114.112%2058.5523C114.034%2058.4814%20113.953%2058.4137%20113.873%2058.3427C113.725%2058.2104%20113.575%2058.0796%20113.424%2057.9502C113.33%2057.8692%20113.238%2057.7849%20113.142%2057.7051C113.047%2057.6253%20112.946%2057.5465%20112.848%2057.4656C112.7%2057.3443%20112.553%2057.2242%20112.405%2057.1052C112.326%2057.042%20112.248%2056.9754%20112.169%2056.9122C112.045%2056.8157%20111.921%2056.7248%20111.798%2056.6294C111.675%2056.5341%20111.523%2056.4176%20111.386%2056.3145C111.328%2056.2713%20111.275%2056.2258%20111.213%2056.1826C111.045%2056.0595%20110.88%2055.943%20110.707%2055.8233C110.596%2055.7412%20110.476%2055.6569%20110.36%2055.5771L110.265%2055.5094C109.958%2055.2995%20109.651%2055.0958%20109.341%2054.8984H109.334L109.288%2054.8696C109%2054.6877%20108.711%2054.5092%20108.42%2054.3384L108.206%2054.2142L88.7824%2042.9941C88.551%2042.8603%2088.3204%2042.7313%2088.0904%2042.6071C88.0017%2042.5594%2087.9141%2042.5162%2087.8254%2042.4696L87.4717%2042.2866C87.3807%2042.24%2087.2887%2042.1901%2087.1989%2042.1447C87.0492%2042.0704%2086.9017%2042.0049%2086.7553%2041.9351C86.6511%2041.8863%2086.5479%2041.8353%2086.4448%2041.7887L86.3195%2041.7299C86.0238%2041.5991%2085.7332%2041.476%2085.4479%2041.3607L85.4035%2041.344C85.1252%2041.2331%2084.8491%2041.1289%2084.5729%2041.0313L84.4465%2040.9847C84.3356%2040.9481%2084.2336%2040.9149%2084.1271%2040.8805C83.9819%2040.8328%2083.8366%2040.7818%2083.6924%2040.7385C83.6159%2040.7153%2083.5405%2040.6975%2083.464%2040.6753C83.3354%2040.6376%2083.2078%2040.6033%2083.0792%2040.5644C82.9827%2040.5389%2082.8851%2040.5079%2082.7898%2040.4846C82.6944%2040.4613%2082.5802%2040.4436%2082.4737%2040.4192C82.3462%2040.3903%2082.2176%2040.3604%2082.0912%2040.3327C82.0268%2040.3194%2081.9603%2040.3016%2081.896%2040.2894C81.7729%2040.265%2081.6531%2040.2506%2081.53%2040.2295C81.3826%2040.204%2081.234%2040.1774%2081.0865%2040.1564C81.0388%2040.1508%2080.9878%2040.1397%2080.939%2040.1331C80.8148%2040.1109%2080.6928%2040.1109%2080.5697%2040.0954C80.4122%2040.0776%2080.2548%2040.0599%2080.0995%2040.0477C80.0563%2040.0477%2080.0108%2040.0377%2079.9676%2040.0344C79.8567%2040.0266%2079.7558%2040.0288%2079.6482%2040.0233C79.4608%2040.0144%2079.2756%2040.0067%2079.0893%2040C79.0394%2040%2078.9884%2040%2078.9385%2040C78.8575%2040%2078.7799%2040.01%2078.699%2040.0111C78.4661%2040.0111%2078.2354%2040.0266%2078.0081%2040.0432C77.9405%2040.0432%2077.8706%2040.0432%2077.8041%2040.0532C77.7054%2040.0621%2077.61%2040.0765%2077.5124%2040.0876L77.3017%2040.1109C77.0455%2040.1453%2076.7916%2040.1841%2076.5421%2040.2351L76.5144%2040.244C76.4401%2040.2595%2076.368%2040.2794%2076.2926%2040.2961C76.0897%2040.3415%2075.8878%2040.3892%2075.6904%2040.4447C75.5895%2040.4735%2075.4919%2040.5068%2075.3921%2040.5389C75.2646%2040.5789%2075.1349%2040.6143%2075.0085%2040.6598C74.9752%2040.6709%2074.9441%2040.6875%2074.912%2040.6986C74.7146%2040.7707%2074.5239%2040.8517%2074.332%2040.9348C74.2389%2040.9747%2074.1435%2041.0113%2074.0526%2041.0535C73.7731%2041.1843%2073.4981%2041.3252%2073.2331%2041.4793L62.5375%2047.6893C62.8036%2047.5351%2063.0775%2047.3943%2063.3559%2047.2635C63.4479%2047.2202%2063.5433%2047.1847%2063.6364%2047.1437C63.8272%2047.0605%2064.019%2046.9796%2064.2153%2046.9075C64.3727%2046.8498%2064.5335%2046.7966%2064.6954%2046.7478C64.7952%2046.7168%2064.8928%2046.6824%2064.9937%2046.6536C65.1911%2046.5981%2065.3941%2046.5504%2065.5959%2046.505C65.6691%2046.4883%2065.7412%2046.4684%2065.8177%2046.4528C66.0761%2046.4007%2066.3389%2046.3586%2066.605%2046.3231C66.6749%2046.3142%2066.7458%2046.3065%2066.8157%2046.2987C66.9798%2046.2798%2067.1484%2046.2665%2067.3114%2046.2543C67.5387%2046.2366%2067.7694%2046.2266%2068.0023%2046.2211C68.132%2046.2211%2068.2606%2046.2133%2068.3915%2046.2144C68.5756%2046.2144%2068.763%2046.2244%2068.946%2046.2333C69.0957%2046.2399%2069.2454%2046.2455%2069.3973%2046.2577C69.5492%2046.2699%2069.71%2046.2887%2069.8675%2046.3054C70.0249%2046.322%2070.2112%2046.3431%2070.3865%2046.3675C70.5328%2046.3885%2070.6803%2046.4151%2070.83%2046.4406C71.0163%2046.4728%2071.2026%2046.505%2071.3911%2046.5449C71.5176%2046.5715%2071.6462%2046.6003%2071.7737%2046.6303C71.9748%2046.6768%2072.177%2046.7271%2072.3803%2046.7811C72.5078%2046.8155%2072.6365%2046.8498%2072.764%2046.892C72.9858%2046.9552%2073.2076%2047.025%2073.4293%2047.0971C73.5402%2047.1315%2073.6411%2047.1648%2073.7476%2047.2014C74.0625%2047.3123%2074.3786%2047.4231%2074.698%2047.5529L74.7423%2047.5695C75.075%2047.7026%2075.4077%2047.8479%2075.7403%2047.9998C75.8435%2048.0464%2075.9466%2048.0974%2076.0508%2048.1462C76.2896%2048.2585%2076.5295%2048.3757%2076.7705%2048.4977C76.8881%2048.5576%2077.006%2048.6186%2077.1243%2048.6807C77.4414%2048.8481%2077.7597%2049.0189%2078.0802%2049.2041L97.5219%2060.4253C97.8834%2060.6338%2098.2427%2060.8515%2098.5997%2061.0785L98.6507%2061.1095C98.9945%2061.3313%2099.3361%2061.5531%2099.6754%2061.7915C99.7918%2061.8724%2099.9072%2061.9567%20100.022%2062.0388C100.244%2062.1996%20100.476%2062.3626%20100.701%2062.53C100.839%2062.6332%20100.975%2062.7385%20101.113%2062.8439C101.316%2062.9999%20101.518%2063.1588%20101.72%2063.3207C101.868%2063.439%20102.016%2063.5588%20102.164%2063.68C102.357%2063.8397%20102.549%2064.0016%20102.739%2064.1657C102.887%2064.2951%20103.035%2064.4256%20103.183%2064.5572C103.37%2064.7228%20103.555%2064.8909%20103.737%2065.0617C103.886%2065.1981%20104.035%2065.3356%20104.181%2065.4753C104.369%2065.6539%20104.557%2065.8357%20104.743%2066.0187C104.878%2066.1518%20105.015%2066.2849%20105.149%2066.4202C105.343%2066.6153%20105.534%2066.8149%20105.726%2067.0145C105.85%2067.1443%20105.974%2067.2718%20106.097%2067.4038C106.319%2067.6433%20106.541%2067.8884%20106.763%2068.1334C106.845%2068.2255%20106.929%2068.3153%20107.011%2068.4085C107.313%2068.7522%20107.612%2069.1015%20107.907%2069.4564C107.97%2069.5329%20108.031%2069.6116%20108.094%2069.6882C108.325%2069.9698%20108.556%2070.2526%20108.781%2070.5409C109.05%2070.8847%20109.315%2071.2329%20109.576%2071.5855C109.619%2071.6443%20109.665%2071.6964%20109.709%2071.7607C110.133%2072.3363%20110.543%2072.9251%20110.944%2073.5195C111.042%2073.6637%20111.141%2073.8078%20111.236%2073.9531C111.383%2074.1749%20111.529%2074.4022%20111.674%2074.6284C111.8%2074.8258%20111.927%2075.0232%20112.051%2075.2228C112.194%2075.4524%20112.333%2075.6841%20112.472%2075.9159C112.583%2076.1011%20112.694%2076.2863%20112.805%2076.4703C113.13%2077.027%20113.446%2077.5893%20113.751%2078.157C113.862%2078.3633%20113.973%2078.5706%20114.076%2078.7769C114.179%2078.9832%20114.307%2079.2205%20114.417%2079.4423C114.57%2079.7472%20114.72%2080.0544%20114.867%2080.3616C114.918%2080.4725%20114.97%2080.5723%20115.02%2080.6787C115.209%2081.0816%20115.394%2081.4882%20115.574%2081.8985C115.621%2082.0094%20115.666%2082.1126%20115.712%2082.2201C115.842%2082.5232%20115.97%2082.8274%20116.095%2083.1328C116.152%2083.2718%20116.208%2083.4104%20116.263%2083.5486C116.379%2083.8399%20116.49%2084.1315%20116.595%2084.4236C116.643%2084.5511%20116.692%2084.6786%20116.74%2084.8061C116.874%2085.1758%20117.004%2085.5454%20117.129%2085.9151C117.147%2085.9661%20117.165%2086.0182%20117.183%2086.0692C117.324%2086.4891%20117.457%2086.909%20117.585%2087.3289C117.624%2087.4609%20117.661%2087.5929%20117.695%2087.7248C117.782%2088.0176%20117.866%2088.3103%20117.945%2088.6031C117.988%2088.7628%20118.029%2088.9225%20118.071%2089.0833C118.142%2089.3531%20118.209%2089.6229%20118.273%2089.8928C118.312%2090.0532%20118.349%2090.2133%20118.384%2090.3729C118.447%2090.6494%20118.506%2090.9259%20118.561%2091.2024C118.591%2091.3499%20118.622%2091.4974%20118.651%2091.646C118.719%2091.9986%20118.782%2092.3502%20118.839%2092.7006C118.849%2092.7638%20118.862%2092.827%20118.872%2092.8902C118.938%2093.3042%20118.996%2093.7167%20119.046%2094.1278C119.061%2094.2387%20119.07%2094.3496%20119.084%2094.4604C119.118%2094.7562%20119.148%2095.0537%20119.175%2095.3531C119.187%2095.4929%20119.198%2095.6315%20119.208%2095.7701C119.229%2096.0495%20119.246%2096.3279%20119.259%2096.6051C119.266%2096.7371%20119.272%2096.869%20119.278%2097.001C119.292%2097.3936%20119.301%2097.7839%20119.3%2098.172L119.237%20120.505C119.237%20120.912%20119.225%20121.31%20119.207%20121.702C119.207%20121.813%20119.192%20121.924%20119.187%20122.035C119.171%20122.304%20119.154%20122.572%20119.129%20122.835C119.116%20122.986%20119.099%20123.135%20119.083%20123.285C119.058%20123.507%20119.033%20123.728%20119.003%20123.95C118.981%20124.11%20118.957%20124.266%20118.932%20124.423C118.9%20124.624%20118.866%20124.822%20118.829%20125.018C118.795%20125.193%20118.761%20125.367%20118.725%20125.538C118.688%20125.71%20118.648%20125.884%20118.605%20126.06C118.556%20126.262%20118.504%20126.461%20118.449%20126.657C118.406%20126.811%20118.363%20126.964%20118.316%20127.115C118.244%20127.349%20118.168%20127.577%20118.088%20127.804C118.044%20127.928%20118.001%20128.053%20117.956%20128.175C117.811%20128.557%20117.657%20128.928%20117.488%20129.284C117.357%20129.561%20117.221%20129.832%20117.077%20130.092C117.061%20130.121%20117.042%20130.148%20117.027%20130.177C116.895%20130.412%20116.758%20130.64%20116.616%20130.862C116.582%20130.915%20116.545%20130.966%20116.506%20131.02C116.386%20131.199%20116.263%20131.375%20116.136%20131.546C116.084%20131.616%20116.031%20131.686%20115.978%20131.755C115.855%20131.913%20115.729%20132.067%20115.6%20132.216C115.552%20132.273%20115.504%20132.327%20115.455%20132.385C115.279%20132.582%20115.097%20132.774%20114.91%20132.956C114.881%20132.983%20114.85%20133.01%20114.821%20133.038C114.66%20133.191%20114.495%20133.339%20114.327%20133.481C114.264%20133.533%20114.2%20133.584%20114.137%20133.635C113.989%20133.753%20113.841%20133.866%20113.693%20133.975C113.63%20134.02%20113.568%20134.067%20113.504%20134.11C113.292%20134.255%20113.077%20134.395%20112.855%20134.524L123.549%20128.314C123.771%20128.185%20123.986%20128.045%20124.199%20127.9C124.264%20127.857%20124.326%20127.81%20124.388%20127.765C124.539%20127.656%20124.687%20127.543%20124.831%20127.425C124.895%20127.374%20124.959%20127.323%20125.021%20127.271C125.19%20127.129%20125.356%20126.982%20125.518%20126.828C125.547%20126.801%20125.577%20126.776%20125.604%20126.748C125.792%20126.566%20125.974%20126.374%20126.15%20126.177C126.199%20126.121%20126.246%20126.066%20126.295%20126.007C126.424%20125.859%20126.55%20125.706%20126.673%20125.546C126.727%20125.477%20126.784%20125.407%20126.832%20125.337C126.958%20125.167%20127.081%20124.991%20127.2%20124.812C127.236%20124.759%20127.272%20124.707%20127.311%20124.653L127.344%20124.604C127.475%20124.399%20127.598%20124.186%20127.72%20123.971C127.737%20123.941%20127.756%20123.915%20127.772%20123.885C127.911%20123.633%20128.044%20123.375%20128.17%20123.108L128.184%20123.076C128.352%20122.72%20128.506%20122.349%20128.652%20121.967C128.665%20121.933%20128.68%20121.902%20128.694%20121.868C128.726%20121.78%20128.753%20121.686%20128.784%20121.597C128.863%20121.375%20128.941%20121.141%20129.013%20120.907C129.033%20120.843%20129.056%20120.783%20129.075%20120.719C129.101%20120.632%20129.121%20120.539%20129.145%20120.451C129.2%20120.255%20129.252%20120.056%20129.301%20119.854C129.321%20119.769%20129.347%20119.691%20129.366%20119.605C129.385%20119.52%20129.401%20119.423%20129.42%20119.334C129.457%20119.161%20129.492%20118.987%20129.525%20118.811C129.543%20118.719%20129.564%20118.631%20129.581%20118.537C129.598%20118.444%20129.612%20118.323%20129.629%20118.218C129.653%20118.062%20129.677%20117.904%20129.7%20117.745C129.711%20117.661%20129.726%20117.582%20129.736%20117.497C129.753%20117.362%20129.764%20117.221%20129.779%20117.085C129.795%20116.948%20129.813%20116.785%20129.826%20116.632C129.832%20116.57%20129.84%20116.51%20129.845%20116.448C129.861%20116.249%20129.87%20116.041%20129.883%20115.837C129.889%20115.726%20129.898%20115.615%20129.904%20115.505C129.904%20115.477%20129.904%20115.45%20129.904%20115.422C129.918%20115.077%20129.927%20114.726%20129.928%20114.37V114.308L129.991%2091.9753C130.002%2091.6331%20130.003%2091.2978%20129.993%2090.9695Z'%20fill='%230B0E11'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_302_6100'%20x1='68.0078'%20y1='92.449'%20x2='102.417'%20y2='92.449'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23313131'/%3e%3cstop%20offset='1'%20stop-color='%230B0E11'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_302_6100'%20x1='50.0001'%20y1='94.977'%20x2='113.22'%20y2='94.977'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%234E4E4E'/%3e%3cstop%20offset='1'%20stop-color='%230B0E11'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e";function Tt(e){const t=[],n=/!\[([^\]]*)\]\(([^)]+)\)|\[([^\]]*)\]\(([^)]+)\)|(https?:\/\/[^\s<>]+)|\*\*(.+?)\*\*|__(.+?)__|\*(.+?)\*|_(.+?)_|~~(.+?)~~|`([^`]+)`/g;let s=0,o;for(;(o=n.exec(e))!==null;)o.index>s&&t.push(e.slice(s,o.index)),o[1]!==void 0||o[2]!==void 0?t.push(O.jsx("img",{src:o[2],alt:o[1],className:"mc-image",onError:a=>{const r=a.target;r.src=Hi}},o.index)):o[3]!==void 0?t.push(O.jsx("a",{href:o[4],target:"_blank",rel:"noopener noreferrer",className:"mc-link",children:o[3]},o.index)):o[5]!==void 0?t.push(O.jsx("a",{href:o[5],target:"_blank",rel:"noopener noreferrer",className:"mc-link",children:o[5]},o.index)):o[6]!==void 0?t.push(O.jsx("strong",{children:Tt(o[6])},o.index)):o[7]!==void 0?t.push(O.jsx("strong",{children:Tt(o[7])},o.index)):o[8]!==void 0?t.push(O.jsx("em",{children:Tt(o[8])},o.index)):o[9]!==void 0?t.push(O.jsx("em",{children:Tt(o[9])},o.index)):o[10]!==void 0?t.push(O.jsx("del",{children:Tt(o[10])},o.index)):o[11]!==void 0&&t.push(O.jsx("code",{className:"mc-inline-code",children:o[11]},o.index)),s=o.index+o[0].length;return s<e.length&&t.push(e.slice(s)),t.length>0?t:[e]}const Wi=({content:e})=>{const t=e.split(`
|
|
118
|
-
`),n=[];let s=0;for(;s<t.length;){const o=t[s];if(o.trimStart().startsWith("```")){const r=o.trimStart().slice(3)?.trim(),i=[];for(s++;s<t.length&&!t[s].trimStart().startsWith("```");)i.push(t[s]),s++;n.push(O.jsxs("div",{className:"mc-codeblock",children:[r&&O.jsx("div",{className:"mc-codeblock-lang",children:r}),O.jsx("pre",{children:O.jsx("code",{children:i.join(`
|
|
119
|
-
`)})})]},`code-${s}`)),s++;continue}if(/^(\s*[-*_]\s*){3,}$/.test(o)){n.push(O.jsx("hr",{className:"mc-hr"},`hr-${s}`)),s++;continue}const a=o.match(/^(#{1,3})\s+(.+)/);if(a){const r=a[1].length,i=a[2];n.push(O.jsx("div",{className:`mc-heading mc-h${r}`,children:Tt(i)},`h-${s}`)),s++;continue}if(o.trimStart().startsWith("> ")){const r=[];for(;s<t.length&&t[s].trimStart().startsWith("> ");)r.push(t[s].replace(/^\s*>\s?/,"")),s++;n.push(O.jsx("div",{className:"mc-blockquote",children:r.map((i,l)=>O.jsx("div",{children:Tt(i)},l))},`bq-${s}`));continue}if(o?.trim()===""){n.push(O.jsx("div",{className:"mc-empty-line"},`empty-${s}`)),s++;continue}n.push(O.jsx("div",{className:"mc-line",children:Tt(o)},`line-${s}`)),s++}return O.jsx("div",{className:"message-content",children:n})},Vi={send_native:{label:"actionSendNativeLabel",description:"actionSendNativeDesc",fields:[{key:"to_address",label:"fieldToAddress",type:"address",placeholder:"0x...",required:!0,validation:"address"},{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},send_token:{label:"actionSendTokenLabel",description:"actionSendTokenDesc",fields:[{key:"contract_address",label:"fieldTokenContract",type:"address",placeholder:"0x... token contract",required:!0,validation:"address",editable:!1},{key:"token_symbol",label:"fieldTokenSymbol",type:"text",placeholder:"e.g. USDC",required:!1,editable:!1},{key:"decimals",label:"fieldDecimals",type:"number",placeholder:"18",required:!1,editable:!1},{key:"to_address",label:"fieldToAddress",type:"address",placeholder:"0x...",required:!0,validation:"address"},{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},swap_token:{label:"actionSwapTokenLabel",description:"actionSwapTokenDesc",fields:[{key:"token_in",label:"fieldTokenIn",type:"address",placeholder:"0x... or native",required:!0,editable:!1},{key:"token_in_symbol",label:"fieldTokenInSymbol",type:"text",placeholder:"e.g. ETH",required:!1,editable:!1},{key:"token_out",label:"fieldTokenOut",type:"address",placeholder:"0x...",required:!0,editable:!1},{key:"token_out_symbol",label:"fieldTokenOutSymbol",type:"text",placeholder:"e.g. USDC",required:!1,editable:!1},{key:"token_in_decimals",label:"fieldTokenInDecimals",type:"number",placeholder:"18",required:!1,editable:!1},{key:"token_out_decimals",label:"fieldTokenOutDecimals",type:"number",placeholder:"18",required:!1,editable:!1},{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},approve_token:{label:"actionApproveTokenLabel",description:"actionApproveTokenDesc",fields:[{key:"contract_address",label:"fieldTokenContract",type:"address",placeholder:"0x... token contract",required:!0,validation:"address",editable:!1},{key:"token_symbol",label:"fieldTokenSymbol",type:"text",placeholder:"e.g. USDC",required:!1,editable:!1},{key:"spender_address",label:"fieldSpenderAddress",type:"address",placeholder:"0x... spender contract",required:!0,validation:"address",editable:!1},{key:"amount",label:"fieldAmountUnlimited",type:"amount",placeholder:"0.0 or leave empty for max",required:!1,validation:"amount"},{key:"decimals",label:"fieldDecimals",type:"number",placeholder:"18",required:!1,editable:!1}]},wrap_native:{label:"actionWrapNativeLabel",description:"actionWrapNativeDesc",fields:[{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},unwrap_native:{label:"actionUnwrapNativeLabel",description:"actionUnwrapNativeDesc",fields:[{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},send_nft:{label:"actionSendNftLabel",description:"actionSendNftDesc",fields:[{key:"contract_address",label:"fieldNftContract",type:"address",placeholder:"0x... NFT contract",required:!0,validation:"address",editable:!1},{key:"token_id",label:"fieldTokenId",type:"text",placeholder:"e.g. 1234",required:!0,editable:!1},{key:"to_address",label:"fieldToAddress",type:"address",placeholder:"0x...",required:!0,validation:"address"},{key:"token_standard",label:"fieldTokenStandard",type:"text",placeholder:"ERC721 or ERC1155",required:!0,editable:!1},{key:"amount",label:"fieldAmount",type:"text",placeholder:"1",required:!0},{key:"maxAmount",label:"fieldMaxAmount",type:"text",placeholder:"",required:!1,editable:!1,hidden:!0},{key:"nft_name",label:"fieldNftName",type:"text",placeholder:"e.g. Bored Ape #1234",required:!1,editable:!1}]}};function Gi(e){return Re(e)}function co(e){if(!e||e?.trim()==="")return!1;const t=parseFloat(e);return!isNaN(t)&&t>0}const Yi=({action:e,initialValues:t,onSubmit:n,onCancel:s,isSubmitting:o=!1,tokenInfo:a,nftInfo:r})=>{const{t:i,ti:l}=cn(),b=Vi[e],[D,z]=te.useState(()=>{if(!b)return{};const y={};return b.fields.forEach(J=>{y[J.key]=t[J.key]||""}),y}),[k]=te.useState(()=>["send_native","send_token","swap_token"].includes(e)&&!a&&D.contract_address?i("formTokenNotFound"):null),[x,B]=te.useState(()=>{const y={};if(["send_native","send_token","swap_token"].includes(e)&&a){const Q=parseFloat(a.balanceFormatted||"0");if(Q<=0)y.amount=l("formNoBalance",{symbol:a.symbol??""});else{const he=t.amount?.trim();he&&co(he)&&parseFloat(he)>Q&&(y.amount=l("formInsufficientBalance",{balance:a.balanceFormatted,symbol:a.symbol??""}))}}return y}),S=te.useCallback((y,J)=>{z(Q=>({...Q,[y]:J})),x[y]&&B(Q=>{const he={...Q};return delete he[y],he})},[x]),v=te.useCallback(()=>{if(!b)return!1;const y={};if(b.fields.forEach(J=>{const Q=D[J.key]?.trim()||"";if(J.required&&!Q&&!(e==="send_nft"&&J.key==="amount")){y[J.key]=l("formFieldRequired",{field:i(J.label)});return}if(Q){if(J.validation==="address"&&!Gi(Q)&&(y[J.key]=i("formInvalidAddress")),J.validation==="amount"&&!co(Q)&&(y[J.key]=i("formMustBePositive")),J.key==="amount"&&Q&&co(Q)&&a?.balanceFormatted){const he=parseFloat(Q),we=parseFloat(a.balanceFormatted);he>we&&(y[J.key]=l("formInsufficientBalance",{balance:a.balanceFormatted,symbol:a.symbol??""}))}J.validation==="positive_number"&&(isNaN(Number(Q))||Number(Q)<0)&&(y[J.key]=i("formMustBeValidNumber"))}}),e==="send_nft"&&D.token_standard?.toUpperCase()==="ERC1155"){const J=D.amount?.trim();if(!J)y.amount=l("formFieldRequired",{field:i("fieldAmount")});else if(!/^\d+$/.test(J)||parseInt(J,10)<1)y.amount=i("formMustBePositiveInteger");else{const Q=parseInt(t.maxAmount||"0",10);Q>0&&parseInt(J,10)>Q&&(y.amount=l("formAmountExceedsNft",{max:String(Q)}))}}return B(y),Object.keys(y).length===0},[b,D,a,e,t,i,l]),ge=te.useCallback(()=>{v()&&n(e,D)},[v,n,e,D]);return b?O.jsxs("div",{className:"action-form",children:[O.jsx("div",{className:"action-form-title",children:O.jsx("span",{children:i(b.label)})}),k&&O.jsxs("div",{className:"action-form-general-error",children:["⚠️ ",k]}),a&&O.jsx("div",{className:"action-form-token-info",children:O.jsxs("div",{className:"token-info-row",children:[a.logo&&O.jsx("img",{src:a.logo,alt:a.symbol,className:"token-info-logo",width:20,height:20}),O.jsxs("div",{className:"token-info-details",children:[O.jsxs("span",{className:"token-info-name",children:[a.name," (",a.symbol,")"]}),O.jsxs("span",{className:"token-info-balance",children:[i("spendable"),": ",re(a.balanceFormatted).decimalPlaces(8,re.ROUND_DOWN).toFormat()," ",a.symbol,a.usdValue!==void 0&&O.jsxs("span",{className:"token-info-usd",children:[" ","≈ $",a.usdValue.toFixed(2)]})]})]})]})}),r?.image&&O.jsx("div",{className:"action-form-nft-info",children:O.jsx("img",{src:r.image,alt:r.name,className:"nft-info-image",onError:y=>{y.target.style.display="none"}})}),O.jsx("div",{className:"action-form-fields",children:b.fields.map(y=>y.hidden||y.key==="amount"&&e==="send_nft"&&D.token_standard?.toUpperCase()!=="ERC1155"||["decimals"].includes(y.key)&&e==="send_token"&&t.decimals?null:O.jsxs("div",{className:"action-form-field",children:[O.jsxs("div",{className:"action-form-field-header",children:[O.jsxs("div",{className:"action-form-field-label",children:[i(y.label),y.required&&" *"]}),y.key==="amount"&&a&&e!=="send_nft"&&O.jsxs("div",{className:"action-form-pct-btns",children:[[25,50,75].map(J=>O.jsxs("button",{type:"button",className:"action-form-pct-btn",onClick:()=>S("amount",(parseFloat(a.balanceFormatted)*J/100).toString()),disabled:o,children:[J,"%"]},J)),O.jsx("button",{type:"button",className:"action-form-pct-btn action-form-max-btn",onClick:()=>S("amount",a.balanceFormatted),disabled:o,children:"MAX"})]})]}),(()=>{const J=y.editable===!1&&!!t[y.key],Q=o||J,he=[x[y.key]?"error":"",J?"readonly":""].filter(Boolean).join(" ");return y.type==="address"?O.jsx("textarea",{rows:2,placeholder:y.placeholder,value:D[y.key]||"",onChange:we=>S(y.key,we.target.value),className:he,disabled:Q}):O.jsx("input",{type:y.type==="number"?"number":"text",placeholder:y.placeholder,value:D[y.key]||"",onChange:we=>S(y.key,we.target.value),className:he,disabled:Q})})(),x[y.key]&&O.jsx("span",{className:"field-error",children:x[y.key]})]},y.key))}),O.jsxs("div",{className:"action-form-actions",children:[O.jsx("button",{className:"message-button",onClick:s,type:"button",disabled:o,children:i("formCancel")}),O.jsx("button",{className:"message-button",onClick:ge,type:"button",disabled:o,children:i(o?"formProcessing":"formExecute")})]})]}):null},Ji=({scrollContainerRef:e,threshold:t=200})=>{const[n,s]=te.useState(!1);te.useEffect(()=>{const a=e.current;if(!a)return;const r=()=>{const{scrollTop:i,scrollHeight:l,clientHeight:b}=a,D=l-i-b;s(D>t)};return a.addEventListener("scroll",r,{passive:!0}),r(),()=>{a.removeEventListener("scroll",r)}},[e,t]);const o=()=>{e.current?.scrollTo({top:e.current.scrollHeight,behavior:"smooth"})};return n?O.jsx("button",{className:"scroll-to-bottom-btn",onClick:o,"aria-label":"Scroll to bottom",type:"button",children:O.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",children:O.jsx("path",{d:"M9 3V15M9 15L4 10M9 15L14 10",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}):null};function zi(e){const{walletAddress:t,chainName:n,chainId:s,nativeSymbol:o,walletTokens:a,walletNfts:r}=e;if(!t)return`You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.
|
|
120
|
-
The user is currently NOT connected to any wallet.
|
|
121
|
-
|
|
122
|
-
## YOUR ROLE:
|
|
123
|
-
- You are a friendly, knowledgeable assistant that can talk about ANY topic naturally
|
|
124
|
-
- You can freely answer general questions, discuss crypto tokens, prices, market info, provide token details, etc. — these do NOT require a wallet connection
|
|
125
|
-
- ONLY ask the user to connect their wallet when their request explicitly requires their personal wallet/address, such as:
|
|
126
|
-
- Sending tokens or NFTs
|
|
127
|
-
- Swapping tokens
|
|
128
|
-
- Approving token spending
|
|
129
|
-
- Wrapping/unwrapping tokens
|
|
130
|
-
- Checking THEIR OWN balance ("what is MY balance?", "how much ETH do I have?")
|
|
131
|
-
- Viewing THEIR OWN NFT collection
|
|
132
|
-
- Any action that reads or writes to THEIR wallet address
|
|
133
|
-
- For all other requests (token info, prices, general crypto questions, market data, etc.), respond normally and helpfully
|
|
134
|
-
- **CRITICAL - LANGUAGE**: You MUST detect the language the user is writing in and respond ONLY in that exact language. If the user writes in English, respond in English. If in Vietnamese, respond in Vietnamese. NEVER respond in a different language than what the user used. Do NOT default to Chinese or any other language.
|
|
135
|
-
|
|
136
|
-
## RESPONSE FORMAT:
|
|
137
|
-
Always respond with a valid JSON object:
|
|
138
|
-
{"action":"chat","message":"<your friendly response to the user>", "suggested_actions":[{"label":"<short button text>","prompt":"<message sent when clicked>"}]}
|
|
139
|
-
|
|
140
|
-
## RULES:
|
|
141
|
-
- suggested_actions: include when your message offers the user interactive choices or asks a follow-up question. NEVER include suggested_actions that ask the user to connect their wallet (e.g., "Connect wallet", "Connect now", etc.) — the app handles wallet connection separately
|
|
142
|
-
- **CRITICAL**: NEVER include any "Buy" actions (e.g., "Buy USDC", "Buy ETH", "Purchase token", etc.) in suggested_actions. The app handles Buy buttons separately. Only include non-buy actions in suggested_actions (e.g., "Send token", "Swap token", "Check balance", "Show my NFTs").
|
|
143
|
-
- For wallet-required actions, politely explain the user needs to connect their wallet first, and put this in the "message" field
|
|
144
|
-
- ALWAYS respond with raw JSON only, never wrap in \`\`\`json code blocks
|
|
145
|
-
- **CRITICAL - LANGUAGE**: Always respond in the SAME language the user writes in. English → English. Vietnamese → Vietnamese. NEVER use Chinese or any other language unless the user wrote in that language.`;if(t&&!ct[s])return`You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.
|
|
146
|
-
The user's wallet address is: ${t}
|
|
147
|
-
The user is selected on (chainId: ${s}) an UNSUPPORTED chain.
|
|
148
|
-
|
|
149
|
-
## YOUR ROLE:
|
|
150
|
-
- You are a friendly, knowledgeable assistant that can talk about ANY topic naturally
|
|
151
|
-
- You can freely answer general questions, discuss crypto tokens, prices, market info, token details, etc. — these do NOT require a supported chain
|
|
152
|
-
- **BLOCKED on unsupported chain** — if the user asks for any of the following, politely inform them that chain (chainId: ${s}) is not currently supported and the action cannot be performed:
|
|
153
|
-
- Checking THEIR OWN balance ("what is my balance?", "how much ETH do I have?")
|
|
154
|
-
- Sending tokens or NFTs
|
|
155
|
-
- Swapping or buying tokens
|
|
156
|
-
- Approving token spending
|
|
157
|
-
- Wrapping/unwrapping tokens
|
|
158
|
-
- Viewing or transferring their NFT collection
|
|
159
|
-
- Any action that reads or writes to their wallet on the current chain
|
|
160
|
-
- **ALLOWED on unsupported chain** — respond normally and helpfully for:
|
|
161
|
-
- General questions (weather, coding, history, math, etc.)
|
|
162
|
-
- Token information, prices, market data, token details
|
|
163
|
-
- Any query that does NOT require interacting with the user's wallet on the current chain
|
|
164
|
-
- Respond in the same language the user uses
|
|
165
|
-
|
|
166
|
-
## RESPONSE FORMAT:
|
|
167
|
-
Always respond with a valid JSON object:
|
|
168
|
-
{"action":"chat","message":"<your response>", suggested_actions:[{"label":"<short button text>","prompt":"<message sent when clicked>"}]}
|
|
169
|
-
|
|
170
|
-
## RULES:
|
|
171
|
-
- suggested_actions: include when your message offers the user interactive choices or asks a follow-up question. NEVER include suggested_actions that ask the user to connect their wallet (e.g., "Connect wallet", "Connect now", etc.) — the app handles wallet connection separately
|
|
172
|
-
- **CRITICAL**: NEVER include any "Buy" actions (e.g., "Buy USDC", "Buy ETH", "Purchase token", etc.) in suggested_actions. The app handles Buy buttons separately. Only include non-buy actions in suggested_actions (e.g., "Send token", "Swap token", "Check balance", "Show my NFTs").
|
|
173
|
-
- For wallet-required actions, politely explain the user needs to connect their wallet first, and put this in the "message" field
|
|
174
|
-
- ALWAYS respond with raw JSON only, never wrap in \`\`\`json code blocks
|
|
175
|
-
- **CRITICAL - LANGUAGE**: Always respond in the SAME language the user writes in. English → English. Vietnamese → Vietnamese. NEVER use Chinese or any other language unless the user wrote in that language.`;const i=a&&a.length>0?`
|
|
176
|
-
## USER'S CURRENT WALLET BALANCE:
|
|
177
|
-
${a.map(b=>{const D=b.usd_value!==void 0?` (~$${b.usd_value.toFixed(2)})`:"";return`- ${b.name} (${b.symbol}): ${b.balance_formatted}${D}${b.native_token?" [native]":` [${b.token_address}]`}`}).join(`
|
|
178
|
-
`)}
|
|
179
|
-
Use this balance data to accurately answer balance questions and to pre-fill token parameters in actions (contract_address, decimals, symbol). NEVER ask the user to provide token info that is already available above.
|
|
180
|
-
`:"",l=r&&r.length>0?`
|
|
181
|
-
## USER'S NFT COLLECTION:
|
|
182
|
-
${r.map(b=>{const D=b.contract_type==="ERC1155"?` (x${b.amount})`:"";return`- ${b.name}${D} | ${b.contract_type} | contract: ${b.token_address} | tokenId: ${b.token_id}`}).join(`
|
|
183
|
-
`)}
|
|
184
|
-
When the user wants to send an NFT by name, use this data to fill contract_address, token_id, token_standard, and nft_name accurately. NEVER guess or fabricate NFT contract addresses.
|
|
185
|
-
`:"";return`You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.
|
|
186
|
-
The user's wallet address is: ${t}
|
|
187
|
-
The user is on chain: ${n} (chainId: ${s})
|
|
188
|
-
Native token: ${o}${i}${l}
|
|
189
|
-
## YOUR ROLE:
|
|
190
|
-
- You are a friendly, knowledgeable assistant that can talk about ANY topic naturally
|
|
191
|
-
- You also specialize in crypto wallet operations: send tokens, swap, approve, check balances, get token info
|
|
192
|
-
- When user requests a wallet action, return a structured JSON so the app can build the transaction
|
|
193
|
-
- When user asks about general topics (weather, coding, history, math, etc.), respond naturally using the "chat" action
|
|
194
|
-
- You will receive CONVERSATION HISTORY to maintain context. Use it to understand what the user is referring to
|
|
195
|
-
- NEVER confuse a general conversation with a wallet action. Only use wallet actions when user EXPLICITLY wants to perform a crypto operation
|
|
196
|
-
- **CRITICAL: For ERC20 token actions (send_token, swap_token, buy_token, approve_token), contract_address is a REQUIRED field — you MUST always include it in the JSON response with the ACTUAL contract address on the current chain (chainId: ${s}). NEVER leave it empty. You MUST look up and provide the correct contract address for the token on this chain. You know common tokens like USDC, USDT, DAI, WETH, LINK, UNI, AAVE, etc. on major chains — always provide the correct address. If the token genuinely does not exist on this chain, inform the user instead of proceeding with the action. EXCEPTION: For send_nft, contract_address is OPTIONAL — if the user refers to an NFT by name and you don't know the contract address, leave it as empty string "" and fill nft_name instead. NEVER make up or guess NFT contract addresses.**
|
|
197
|
-
- **CRITICAL ACTION RULE: When user requests a wallet operation (swap, send, buy, approve, wrap, unwrap), you MUST return that action type IMMEDIATELY — even if some parameters are missing. DO NOT return a "chat" action to ask for missing details. Simply leave the missing parameters as empty string "". Your prompt for more info (e.g., asking for recipient address) goes in the "message" field of the wallet action itself. For example: If user says "swap DAI to USDC", you MUST return {"action":"swap_token",...} directly, NOT {"action":"chat",...}. If user says "send WETH", you MUST return {"action":"send_token","parameters":{"contract_address":"<WETH address>","to_address":"","amount":"","decimals":"18","token_symbol":"WETH"}} with empty to_address and amount, NOT a chat response.**
|
|
198
|
-
|
|
199
|
-
## RESPONSE FORMAT:
|
|
200
|
-
You MUST respond with a valid JSON object in this exact format. Do NOT wrap it in markdown code blocks.
|
|
201
|
-
|
|
202
|
-
### For Web3 actions (send, swap, approve, wrap, unwrap):
|
|
203
|
-
{
|
|
204
|
-
"action": "<action_type>",
|
|
205
|
-
"message": "<your friendly explanation to the user>",
|
|
206
|
-
"parameters": {
|
|
207
|
-
"<param_key>": "<value or empty string if unknown>"
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
### For information queries (balance, token info) or normal conversation:
|
|
212
|
-
{
|
|
213
|
-
"action": "chat",
|
|
214
|
-
"message": "<your response text here>",
|
|
215
|
-
"parameters": {},
|
|
216
|
-
"token_mentions": [],
|
|
217
|
-
"suggested_actions": []
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
### IMPORTANT - suggested_actions field:
|
|
221
|
-
Whenever your response contains a follow-up question or offers the user an interactive choice (e.g., "Would you like me to...", "If you want, I can...", "Do you want to..."), you MUST include a "suggested_actions" array with clickable button options so the user can quickly respond.
|
|
222
|
-
Each entry: { "label": "<short button text>", "prompt": "<full message to send when clicked>" }
|
|
223
|
-
Rules for suggested_actions:
|
|
224
|
-
- Include suggested_actions ONLY when your message explicitly offers the user a choice or asks a follow-up question
|
|
225
|
-
- Each button should represent one distinct option the user can take
|
|
226
|
-
- "label" should be short (2-6 words) — this is the button text displayed to the user
|
|
227
|
-
- "prompt" should be the full user message that will be sent when the button is clicked
|
|
228
|
-
- Maximum 4 suggested actions per response
|
|
229
|
-
- suggested_actions should be an empty array [] when your message does NOT offer any interactive choices
|
|
230
|
-
- You can include suggested_actions in BOTH "chat" responses and wallet action responses (in the latter case, for follow-up options after the action message)
|
|
231
|
-
- Do NOT add suggested_actions for simple statements or answers that don't ask the user anything
|
|
232
|
-
- **CRITICAL**: NEVER include any "Buy" actions (e.g., "Buy USDC", "Buy ETH", "Purchase token", etc.) in suggested_actions. The app handles Buy buttons separately through token_mentions. Only include non-buy actions in suggested_actions (e.g., "Send WBTC", "Swap WBTC to ...", "Check balance", "Show my NFTs").
|
|
233
|
-
|
|
234
|
-
### IMPORTANT - token_mentions field:
|
|
235
|
-
Whenever your "chat" response mentions, lists, or discusses specific tokens/coins (e.g., trending tokens, token details, token recommendations, price discussions, asking about a token), you MUST include a "token_mentions" array with each token's info so the user can quickly buy them.
|
|
236
|
-
Each entry: { "symbol": "<TOKEN_SYMBOL>" (REQUIRED), "contract_address": "<actual address>" (REQUIRED), "decimals": <number> (REQUIRED) }
|
|
237
|
-
- You MUST include ALL crypto tokens mentioned in your response in token_mentions.
|
|
238
|
-
- You MUST provide the actual contract_address for each token on chainId ${s}. NEVER leave contract_address empty.
|
|
239
|
-
- You MUST provide the accurate decimals for each token.
|
|
240
|
-
- Only include tokens that are actual tradeable crypto tokens mentioned in your response
|
|
241
|
-
- Do NOT include token_mentions for general greetings, non-crypto conversations, or balance checks
|
|
242
|
-
- If you do not know the contract address for a token on this chain, still include it in token_mentions but you MUST try your best to provide the correct address. The app needs the address to function.
|
|
243
|
-
- token_mentions should be an empty array [] ONLY when no specific crypto tokens are discussed at all
|
|
244
|
-
|
|
245
|
-
## SUPPORTED ACTIONS:
|
|
246
|
-
|
|
247
|
-
### 1. send_native - Send native token (${o})
|
|
248
|
-
Parameters: { "to_address": "", "amount": "" }
|
|
249
|
-
Triggered by: "send ${o}", "transfer 0.1 ${o} to 0x...", "send native token"
|
|
250
|
-
**IMPORTANT**: ONLY use send_native when the user explicitly wants to send **${o}** (the native token of the CURRENT chain). If the user says "send ETH" but the current chain's native token is NOT ETH (e.g., on Polygon where native is MATIC), then ETH is an ERC20 token on this chain — use send_token with the correct ETH/WETH contract address instead. NEVER use send_native for a token that is not ${o}.
|
|
251
|
-
Note: If user says "max", "all", or "send everything", set amount to "max". If user says "X%" (e.g., 50%), set amount to "50%". The app resolves these to actual values.
|
|
252
|
-
|
|
253
|
-
### 2. send_token - Send ERC20 token
|
|
254
|
-
Parameters: { "contract_address": "" (REQUIRED), "token_symbol": "", "to_address": "", "amount": "", "decimals": "" }
|
|
255
|
-
Triggered by: "send USDC", "transfer 100 DAI to 0x...", "send token"
|
|
256
|
-
Note: contract_address is REQUIRED — you MUST always provide the actual contract address of the token on chainId ${s}. NEVER leave it empty. ALWAYS provide accurate decimals for the token. If user says "max", "all", or "send everything", set amount to "max". If user says "X%" (e.g., 50%), set amount to "50%". The app resolves these to actual values.
|
|
257
|
-
|
|
258
|
-
### 3. swap_token - Swap tokens
|
|
259
|
-
Parameters: { "token_in": "<contract_address or 'native'>" (REQUIRED), "token_in_symbol": "", "token_in_decimals": "", "token_out": "<contract_address>" (REQUIRED), "token_out_symbol": "", "token_out_decimals": "", "amount": "" }
|
|
260
|
-
Triggered by: "swap ETH to USDC", "exchange 0.5 ETH for USDC", "convert ETH to USDC", "swap token", "I want to swap", "đổi token"
|
|
261
|
-
Note: token_in and token_out are REQUIRED fields — MUST contain the actual contract address. For native tokens (${o}), set token_in to "native". For ERC20 tokens, you MUST provide the correct contract address on chainId ${s}. NEVER leave empty. ALWAYS fill in token_in_symbol, token_out_symbol, token_in_decimals, and token_out_decimals with accurate values for each token. If user says "max", "all", or "swap everything", set amount to "max". If user says "X%" (e.g., 50%), set amount to "50%". The app resolves these to actual values.
|
|
262
|
-
**IMPORTANT**: If the user says "swap" or "I want to swap" WITHOUT specifying any tokens or amounts, still return swap_token with ALL parameters as empty strings "". The app will show the user's wallet balances so they can pick a token.
|
|
263
|
-
|
|
264
|
-
### 4. buy_token - Buy a token (user wants to purchase a specific token)
|
|
265
|
-
Parameters: { "token_symbol": "", "contract_address": "" (REQUIRED), "decimals": "" }
|
|
266
|
-
Triggered by: "buy USDC", "I want to buy ETH", "purchase DOGE", "mua token X"
|
|
267
|
-
Note: Use this when user says "buy <token>" without specifying what to sell. If user specifies both tokens ("buy USDC with ETH"), use swap_token instead. contract_address is REQUIRED — you MUST always provide the actual contract address on chainId ${s}. NEVER leave it empty. If the token does not exist on this chain, inform the user. For example, BNB is not native to most chains except BSC. ALWAYS provide accurate decimals for the token.
|
|
268
|
-
|
|
269
|
-
### 5. approve_token - Approve token spending
|
|
270
|
-
Parameters: { "contract_address": "" (REQUIRED), "token_symbol": "", "spender_address": "", "amount": "", "decimals": "" }
|
|
271
|
-
Triggered by: "approve USDC", "allow spending", "approve contract"
|
|
272
|
-
Note: ALWAYS provide accurate decimals for the token.
|
|
273
|
-
|
|
274
|
-
### 6. wrap_native - Wrap native token (${o} → W${o})
|
|
275
|
-
Parameters: { "amount": "" }
|
|
276
|
-
Triggered by: "wrap ETH", "convert to WETH"
|
|
277
|
-
|
|
278
|
-
### 7. unwrap_native - Unwrap native token (W${o} → ${o})
|
|
279
|
-
Parameters: { "amount": "" }
|
|
280
|
-
Triggered by: "unwrap WETH", "convert WETH to ETH"
|
|
281
|
-
|
|
282
|
-
### 8. send_nft - Send/Transfer an NFT (ERC721 or ERC1155)
|
|
283
|
-
Parameters: { "contract_address": "" (OPTIONAL), "token_id": "" (OPTIONAL), "to_address": "" (REQUIRED), "token_standard": "ERC721 or ERC1155" (OPTIONAL), "amount": "" (for ERC1155 only, default 1), "nft_name": "" }
|
|
284
|
-
Triggered by: "send NFT", "transfer NFT #1234 to 0x...", "send my Bored Ape to...", "transfer ERC1155 token"
|
|
285
|
-
Note: token_standard is OPTIONAL. If the user specifies the standard or you confidently know it, include "ERC721" or "ERC1155". Otherwise, leave it as empty string "" — the app will automatically detect the correct standard by querying on-chain metadata. For ERC1155, amount defaults to "1" if not specified. **IMPORTANT**: For NFTs, you typically do NOT know the contract_address. If the user refers to an NFT by name (e.g., "send Shou Rikuto", "send my Bored Ape"), leave contract_address as empty string "" and put the NFT name in nft_name — the app will look it up from the user's wallet. Only provide contract_address if the user explicitly gives the contract address. NEVER make up or guess NFT contract addresses.
|
|
286
|
-
|
|
287
|
-
### 9. view_nfts - View/Show user's NFT collection
|
|
288
|
-
Parameters: {} (empty)
|
|
289
|
-
Triggered by: "show my NFTs", "what NFTs do I have?", "view my NFT collection", "xem NFT của tôi", "list my NFTs"
|
|
290
|
-
Note: Use this when user wants to VIEW or LIST their NFTs. Do NOT use "chat" action for NFT viewing requests.
|
|
291
|
-
|
|
292
|
-
### 10. view_balances - View/Show user's full token balances
|
|
293
|
-
Parameters: {} (empty)
|
|
294
|
-
Triggered by: "show my balances", "what tokens do I have?", "list my tokens", "view my wallet", "xem balance của tôi", "xem token của tôi", "show all my tokens", "what's in my wallet?"
|
|
295
|
-
Note: Use this when user wants to see ALL their tokens/balances at once. Do NOT use "chat" action for wallet balance viewing requests. For single-token balance queries ("how much ETH do I have?", "check my USDC balance"), use "chat" action instead.
|
|
296
|
-
|
|
297
|
-
### 11. chat - Normal conversation, token info
|
|
298
|
-
Parameters: {} (empty)
|
|
299
|
-
Optional: token_mentions: [{ "symbol": "", "contract_address": "", "decimals": <number> }] — include when your response mentions specific tokens
|
|
300
|
-
Triggered by: questions, greetings, info requests, balance checks, token details, trending tokens
|
|
301
|
-
|
|
302
|
-
## CONTRACT ADDRESS ACCURACY REQUIREMENTS:
|
|
303
|
-
You have comprehensive, precise knowledge of token contract addresses on ALL major EVM chains. You MUST use this knowledge accurately.
|
|
304
|
-
|
|
305
|
-
## RULES:
|
|
306
|
-
1. Extract ALL mentioned values from the user's message and fill the parameters
|
|
307
|
-
2. Leave parameter as empty string "" if the user didn't mention it
|
|
308
|
-
3. Always include a friendly "message" explaining what you understood
|
|
309
|
-
4. For "chat" action, put your full response in the "message" field
|
|
310
|
-
5. **CRITICAL**: For ERC20 token actions, contract_address is a REQUIRED field — ALWAYS provide the ACTUAL contract address on chainId ${s}. NEVER leave it empty. You must know the correct addresses for common tokens (USDC, USDT, DAI, WETH, LINK, UNI, AAVE, etc.) on major chains. If a token does not exist on this chain, inform the user instead of proceeding. Be especially careful with tokens that are native to other chains (e.g., BNB is BSC native — if user asks to buy BNB on OP Mainnet, inform them it may not be available as an ERC20 on this chain). **EXCEPTION: For send_nft, if you don't know the NFT contract address, leave it as empty string "" and provide nft_name instead. NEVER fabricate NFT addresses.**
|
|
311
|
-
6. **IMPORTANT**: ALWAYS provide accurate decimals for each token. This is CRITICAL for accurate transaction amounts.
|
|
312
|
-
7. **IMPORTANT**: ALWAYS provide accurate token_symbol for each token. Even if the user only provides a contract address without naming the token, you MUST identify the token from the address and fill in token_symbol and decimals. For example: if user provides "0x4200000000000000000000000000000000000006" on OP/Base, you know it is WETH with decimals 18 — fill in token_symbol:"WETH" and decimals:"18". You have comprehensive knowledge of well-known token contract addresses — use it to populate all fields.
|
|
313
|
-
8. For amounts, use the exact number the user mentioned (don't convert units). If user says "max", "all", or "everything", set amount to "max". If user says "X%" (e.g., "send 50% of my USDC", "swap 25% of my ETH"), set amount to "50%" or "25%" — the literal percentage string. The app will resolve these to the actual balance values.
|
|
314
|
-
9. For native token sends, use "send_native" ONLY when the user wants to send **${o}** — the ACTUAL native token of the current chain (chainId: ${s}). If the user says "send ETH" but the native token on this chain is not ETH (e.g., Polygon where native is MATIC), treat ETH as an ERC20 token and use "send_token" with the correct ETH/WETH contract address on this chain. NEVER use send_native for a token symbol that does not match ${o}.
|
|
315
|
-
10. **CRITICAL - LANGUAGE**: You MUST detect the language the user is writing in and respond ONLY in that exact same language. English user → English response. Vietnamese user → Vietnamese response. Do NOT default to Chinese or any other language under any circumstances.
|
|
316
|
-
11. ALWAYS respond with raw JSON only, never wrap in \`\`\`json code blocks
|
|
317
|
-
12. For swap_token: token_in for native tokens must be "native". ALWAYS provide token_in_symbol, token_out_symbol, token_in_decimals, and token_out_decimals.
|
|
318
|
-
13. Use CONVERSATION HISTORY to maintain context. If user says "do it again" or "same but with X", refer to previous messages to understand what they mean.
|
|
319
|
-
14. For general/non-crypto questions, respond naturally and helpfully using the "chat" action. You are NOT limited to crypto topics only.
|
|
320
|
-
15. ONLY trigger wallet actions (send_native, send_token, swap_token, buy_token, approve_token, wrap_native, unwrap_native, send_nft) when the user EXPLICITLY requests a crypto/wallet operation. Do NOT misinterpret general conversation as wallet actions.
|
|
321
|
-
16. When your "chat" response mentions, lists, or discusses specific tokens (e.g., trending tokens, token details, recommendations, price info), you MUST include "token_mentions" array so the app can show Buy buttons for each token. Always include token_mentions as an array (empty [] if no tokens mentioned).
|
|
322
|
-
17. **CRITICAL - ONE RESPONSE RULE**: When user requests a wallet operation (swap, send, buy, approve, wrap, unwrap, send NFT), return ONLY ONE JSON response with that action type — even if parameters are incomplete. Leave missing parameters as empty string "". DO NOT return multiple responses. DO NOT return a "chat" action first and then the wallet action. DO NOT return a "chat" action just because some fields are missing — that is WRONG. Put your explanation or request for more info in the "message" field of the wallet action. Example: User says "send WETH" → MUST return {"action":"send_token","message":"Please provide the recipient address and amount.","parameters":{"contract_address":"<WETH address>","token_symbol":"WETH","to_address":"","amount":"","decimals":"18"}}. Example: User says "swap 0.01 DAI to USDC" → Return ONLY {"action":"swap_token","message":"Swapping 0.01 DAI to USDC...","parameters":{...}}.
|
|
323
|
-
18. **CRITICAL - TOKEN CONTRACT ADDRESSES**: You MUST provide the CORRECT and ACCURATE contract address for each token on the CURRENT chain (chainId: ${s}). You have deep knowledge of token contract addresses across all major chains (Ethereum, Optimism, Arbitrum, Base, Polygon, BSC, etc.). ALWAYS verify you are using the correct address for the current chainId. DO NOT use addresses from other chains. For common tokens like USDC, USDT, DAI, WETH, each chain has different contract addresses - you MUST use the correct one for chainId ${s}.
|
|
324
|
-
19. **SUGGESTED ACTIONS**: When your message contains follow-up questions or offers the user choices (e.g., "Would you like me to...", "I can also...", "Do you want..."), you MUST include "suggested_actions" array with button options. This makes the conversation interactive and user-friendly. If your message does NOT ask any question or offer any choice, leave suggested_actions as empty array [].
|
|
325
|
-
|
|
326
|
-
## EXAMPLES:
|
|
327
|
-
|
|
328
|
-
User: "send 0.5 ${o} to 0x1234...5678" (on the current chain where native = ${o})
|
|
329
|
-
Response: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"0.5"}}
|
|
330
|
-
|
|
331
|
-
User: "send all my ${o} to 0x1234...5678" or "send max ${o} to 0x1234..."
|
|
332
|
-
Response: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"max"}}
|
|
333
|
-
|
|
334
|
-
User: "send 50% of my ${o} to 0x1234..."
|
|
335
|
-
Response: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"50%"}}
|
|
336
|
-
|
|
337
|
-
User: "send 0.5 ETH to 0x1234...5678" (on Polygon where native = MATIC, so ETH is ERC20)
|
|
338
|
-
Response: {"action":"send_token","message":"<friendly explanation>","parameters":{"contract_address":"<actual ETH/WETH address on current chain>","token_symbol":"ETH","to_address":"0x1234...5678","amount":"0.5","decimals":"18"}}
|
|
339
|
-
|
|
340
|
-
User: "transfer 100 USDC"
|
|
341
|
-
Response: {"action":"send_token","message":"<friendly explanation>","parameters":{"contract_address":"<actual USDC address on current chain>","token_symbol":"USDC","to_address":"","amount":"100","decimals":"6"}}
|
|
342
|
-
|
|
343
|
-
User: "send WETH"
|
|
344
|
-
Response: {"action":"send_token","message":"<ask for recipient and amount>","parameters":{"contract_address":"<actual WETH address on current chain>","token_symbol":"WETH","to_address":"","amount":"","decimals":"18"}}
|
|
345
|
-
|
|
346
|
-
User: "send weth to 0xABC..."
|
|
347
|
-
Response: {"action":"send_token","message":"<ask for amount>","parameters":{"contract_address":"<actual WETH address on current chain>","token_symbol":"WETH","to_address":"0xABC...","amount":"","decimals":"18"}}
|
|
348
|
-
|
|
349
|
-
User: "send 0x4200000000000000000000000000000000000006 to 0xABC..."
|
|
350
|
-
Response: {"action":"send_token","message":"<friendly explanation>","parameters":{"contract_address":"<actual WETH address on current chain>","token_symbol":"WETH","to_address":"0xABC...","amount":"","decimals":"18"}}
|
|
351
|
-
|
|
352
|
-
User: "swap 1 ETH to USDC"
|
|
353
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${o}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"1"}}
|
|
354
|
-
|
|
355
|
-
User: "swap all my ETH to USDC" or "swap max ETH to USDC"
|
|
356
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${o}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"max"}}
|
|
357
|
-
|
|
358
|
-
User: "swap 75% of my ETH to USDC"
|
|
359
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${o}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"75%"}}
|
|
360
|
-
|
|
361
|
-
User: "swap USDT to DAI"
|
|
362
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"<actual USDT address on current chain>","token_in_symbol":"USDT","token_in_decimals":"6","token_out":"<actual DAI address on current chain>","token_out_symbol":"DAI","token_out_decimals":"18","amount":""}}
|
|
363
|
-
|
|
364
|
-
User: "buy USDC"
|
|
365
|
-
Response: {"action":"buy_token","message":"<friendly explanation>","parameters":{"token_symbol":"USDC","contract_address":"<actual USDC address on current chain>","decimals":"6"}}
|
|
366
|
-
|
|
367
|
-
User: "I want to buy DOGE" (token not on this chain)
|
|
368
|
-
Response: {"action":"chat","message":"<inform user DOGE is not available as ERC20 on this chain>","parameters":{},"token_mentions":[]}
|
|
369
|
-
|
|
370
|
-
User: "buy BNB" (on non-BSC chain)
|
|
371
|
-
Response: {"action":"chat","message":"<inform user BNB is native to BSC and may not be available on this chain>","parameters":{},"token_mentions":[]}
|
|
372
|
-
|
|
373
|
-
User:"what is my balance?" or "check my balance", "show my balances" or "what tokens do I have?" or "xem balance của tôi" or "xem token của tôi"
|
|
374
|
-
Response: {"action":"view_balances","message":"<your friendly response>","parameters":{}}
|
|
375
|
-
|
|
376
|
-
User: "hello"
|
|
377
|
-
Response: {"action":"chat","message":"<greeting and list of capabilities>","parameters":{},"token_mentions":[],"suggested_actions":[{"label":"Check my balance","prompt":"What is my balance?"},{"label":"Show my tokens","prompt":"Show my balances"},{"label":"Show trending tokens","prompt":"Show me trending tokens"},{"label":"Show my NFTs","prompt":"Show my NFTs"}]}
|
|
378
|
-
|
|
379
|
-
User: "what is the capital of France?"
|
|
380
|
-
Response: {"action":"chat","message":"<your answer>","parameters":{},"token_mentions":[],"suggested_actions":[]}
|
|
381
|
-
|
|
382
|
-
User: "what is the current price of ETH?"
|
|
383
|
-
Response: {"action":"chat","message":"The current price of ETH can vary. For the most accurate price, check popular crypto trackers. I can also help you check your ETH balance or swap ETH if you'd like!","parameters":{},"token_mentions":[{"symbol":"ETH","contract_address":"native","decimals":18}],"suggested_actions":[{"label":"Check my ETH balance","prompt":"Check my ETH balance"},{"label":"Swap ETH","prompt":"I want to swap ETH"}]}
|
|
384
|
-
|
|
385
|
-
User: "show me trending tokens"
|
|
386
|
-
Response: {"action":"chat","message":"<list of trending tokens with descriptions>","parameters":{},"token_mentions":[{"symbol":"USDC","contract_address":"<actual USDC address on current chain>","decimals":6},{"symbol":"PEPE","contract_address":"<actual PEPE address on current chain>","decimals":18}]}
|
|
387
|
-
|
|
388
|
-
User: "tell me about PEPE token"
|
|
389
|
-
Response: {"action":"chat","message":"<info about PEPE>","parameters":{},"token_mentions":[{"symbol":"PEPE","contract_address":"<actual PEPE address on current chain>","decimals":18}]}
|
|
390
|
-
|
|
391
|
-
User: "Token Worldcoin"
|
|
392
|
-
Response: {"action":"chat","message":"<info about Worldcoin>","parameters":{},"token_mentions":[{"symbol":"WLD","contract_address":"<actual WLD address on current chain>","decimals":18}]}
|
|
393
|
-
|
|
394
|
-
User: "tell me about some random new token"
|
|
395
|
-
Response: {"action":"chat","message":"<cautious response>","parameters":{},"token_mentions":[]}
|
|
396
|
-
|
|
397
|
-
User: "send NFT #1234 from contract 0xABC... to 0xDEF..."
|
|
398
|
-
Response: {"action":"send_nft","message":"<friendly explanation>","parameters":{"contract_address":"0xABC...","token_id":"1234","to_address":"0xDEF...","token_standard":"","amount":"1","nft_name":""}}
|
|
399
|
-
|
|
400
|
-
User: "send Shou Rikuto tokenId 5"
|
|
401
|
-
Response: {"action":"send_nft","message":"<ask for recipient address>","parameters":{"contract_address":"","token_id":"5","to_address":"","token_standard":"","amount":"1","nft_name":"Shou Rikuto"}}
|
|
402
|
-
|
|
403
|
-
User: "send my Bored Ape #42 to 0xDEF..."
|
|
404
|
-
Response: {"action":"send_nft","message":"<friendly explanation>","parameters":{"contract_address":"","token_id":"42","to_address":"0xDEF...","token_standard":"","amount":"1","nft_name":"Bored Ape"}}
|
|
405
|
-
|
|
406
|
-
User: "transfer my ERC1155 token #5 (amount 3) from 0xNFT... to 0xBOB..."
|
|
407
|
-
Response: {"action":"send_nft","message":"<friendly explanation>","parameters":{"contract_address":"0xNFT...","token_id":"5","to_address":"0xBOB...","token_standard":"","amount":"3","nft_name":""}}
|
|
408
|
-
|
|
409
|
-
User: "show my NFTs" or "what NFTs do I have?"
|
|
410
|
-
Response: {"action":"view_nfts","message":"Let me show you your NFT collection!","parameters":{}}
|
|
411
|
-
|
|
412
|
-
[With conversation history where user previously swapped ETH to USDC]
|
|
413
|
-
User: "do it again but with 2 ETH"
|
|
414
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${o}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"2"}}
|
|
415
|
-
|
|
416
|
-
User: "swap token" or "I want to swap" or "đổi token" (no specific tokens mentioned)
|
|
417
|
-
Response: {"action":"swap_token","message":"<friendly explanation, e.g. Which token would you like to swap?>","parameters":{"token_in":"","token_in_symbol":"","token_in_decimals":"","token_out":"","token_out_symbol":"","token_out_decimals":"","amount":""}}`}const Ts={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",10:"0x4200000000000000000000000000000000000006",56:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",137:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},vn=[{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{name:"to",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{name:"approve",type:"function",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{name:"allowance",type:"function",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]}],Cs=[{name:"deposit",type:"function",stateMutability:"payable",inputs:[],outputs:[]},{name:"withdraw",type:"function",stateMutability:"nonpayable",inputs:[{name:"wad",type:"uint256"}],outputs:[]}],ji=[{name:"safeTransferFrom",type:"function",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"}],outputs:[]}],qi=[{name:"safeTransferFrom",type:"function",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]}];function nn(e,t){return t||ct[e]?.rpcUrls?.default?.http?.[0]}function Qi(e){const{action:t,parameters:n,fromAddress:s,chainId:o}=e;switch(t){case"send_native":return Ki(n,s,o);case"send_token":return Xi(n,s,o);case"approve_token":return _i(n,s,o);case"wrap_native":return Zi(n,s,o);case"unwrap_native":return $i(n,s,o);case"send_nft":return tc(n,s,o);default:throw new Error(`Action "${t}" does not produce a transaction`)}}function Ki(e,t,n){const{to_address:s,amount:o}=e;if(!s)throw new Error("Recipient address is required");if(!o)throw new Error("Amount is required");const a=mt(o,18).toString();return{from:t,to:s,data:"0x",value:a,chainId:n,description:`Send ${o} native token to ${s}`}}function Xi(e,t,n){const{contract_address:s,to_address:o,amount:a,decimals:r,token_symbol:i}=e;if(!s)throw new Error("Token contract address is required");if(!o)throw new Error("Recipient address is required");if(!a)throw new Error("Amount is required");const l=parseInt(r)||18,b=mt(a,l),D=kt({abi:vn,functionName:"transfer",args:[o,b]});return{from:t,to:s,data:D,value:"0",chainId:n,description:`Send ${a} ${i||"tokens"} to ${o}`}}function _i(e,t,n){const{contract_address:s,spender_address:o,amount:a,token_symbol:r}=e;if(!s)throw new Error("Token contract address is required");if(!o)throw new Error("Spender address is required");const i=a&&a?.trim()!==""?mt(a,18):Rt,l=kt({abi:vn,functionName:"approve",args:[o,i]});return{from:t,to:s,data:l,value:"0",chainId:n,description:`Approve ${a||"unlimited"} ${r||"tokens"} for ${o}`}}function Zi(e,t,n){const{amount:s}=e;if(!s)throw new Error("Amount is required");const o=Ts[n];if(!o)throw new Error(`WETH not supported on chain ${n}`);const a=mt(s,18).toString(),r=kt({abi:Cs,functionName:"deposit"});return{from:t,to:o,data:r,value:a,chainId:n,description:`Wrap ${s} native token`}}function $i(e,t,n){const{amount:s}=e;if(!s)throw new Error("Amount is required");const o=Ts[n];if(!o)throw new Error(`WETH not supported on chain ${n}`);const a=mt(s,18),r=kt({abi:Cs,functionName:"withdraw",args:[a]});return{from:t,to:o,data:r,value:"0",chainId:n,description:`Unwrap ${s} WETH`}}function ec(e){return["send_native","send_token","approve_token","wrap_native","unwrap_native","send_nft"].includes(e)}async function lo(e){const{transactionHash:t,chainId:n,pollingInterval:s=3e3,timeout:o=12e4,rpcUrl:a}=e,r=nn(n,a);if(!r)throw new Error(`No RPC endpoint for chain ${n}`);const i=Date.now();for(;Date.now()-i<o;){try{const b=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getTransactionReceipt",params:[t]})})).json();if(b.result){const D=b.result;return{status:D.status==="0x1"?"success":"fail",blockNumber:D.blockNumber,gasUsed:D.gasUsed,effectiveGasPrice:D.effectiveGasPrice}}}catch(l){console.warn("eth_getTransactionReceipt poll error:",l)}await new Promise(l=>setTimeout(l,s))}throw new Error(`Transaction ${t} was not mined within ${o/1e3}s`)}async function uo(e){const{tokenAddress:t,ownerAddress:n,spenderAddress:s,chainId:o,rpcUrl:a}=e,r=nn(o,a);if(!r)return console.warn(`No RPC endpoint for chain ${o}, assuming no allowance`),BigInt(0);try{const i=kt({abi:vn,functionName:"allowance",args:[n,s]}),b=await(await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:t,data:i},"latest"]})})).json();return b.result&&b.result!=="0x"?BigInt(b.result):BigInt(0)}catch(i){return console.warn("checkAllowance failed:",i),BigInt(0)}}function Tn(e){const{tokenAddress:t,spenderAddress:n,fromAddress:s,chainId:o,tokenSymbol:a,amount:r}=e,i=r&&BigInt(r)>0n?BigInt(r):Rt,l=kt({abi:vn,functionName:"approve",args:[n,i]});return{from:s,to:t,data:l,value:"0",chainId:o,description:`Approve ${a||"token"} for swap`}}function tc(e,t,n){const{contract_address:s,token_id:o,to_address:a,token_standard:r,amount:i,nft_name:l}=e;if(!s)throw new Error("NFT contract address is required");if(!o)throw new Error("Token ID is required");if(!a)throw new Error("Recipient address is required");const b=(r||"ERC721").toUpperCase(),D=BigInt(o);let z,k;if(b==="ERC1155"){const x=BigInt(i||"1");z=kt({abi:qi,functionName:"safeTransferFrom",args:[t,a,D,x,"0x"]}),k=`Send ${x>1n?x.toString()+"x ":""}${l||"NFT"} (ERC1155 #${o}) to ${a}`}else z=kt({abi:ji,functionName:"safeTransferFrom",args:[t,a,D]}),k=`Send ${l||"NFT"} (ERC721 #${o}) to ${a}`;return{from:t,to:s,data:z,value:"0",chainId:n,description:k}}async function Cn(e){const{address:t,chainId:n,rpcUrl:s}=e,o=nn(n,s);if(!o)return console.warn(`No RPC endpoint for chain ${n}`),new re(0);try{const r=await(await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getBalance",params:[t,"latest"]})})).json();return r.result&&r.result!=="0x"?new re(BigInt(r.result).toString()):new re(0)}catch(a){return console.warn("getNativeBalance failed:",a),new re(0)}}async function on(e){const{from:t,to:n,data:s,value:o,chainId:a,rpcUrl:r}=e,i=nn(a,r);if(!i)return console.warn(`No RPC endpoint for chain ${a}`),new re(0);try{const[l,b]=await Promise.all([fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_estimateGas",params:[{from:t,to:n,data:s,...o&&o!=="0"?{value:o}:{}}]})}),fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:2,method:"eth_gasPrice",params:[]})})]),[D,z]=await Promise.all([l.json(),b.json()]),k=D.result?new re(BigInt(D.result).toString()):new re(0),x=z.result?new re(BigInt(z.result).toString()):new re(0);return k.times(x).times(1.1)}catch(l){return console.warn("estimateTransactionFee failed:",l),new re(0)}}async function fo(e){const{chainId:t,rpcUrl:n}=e,s=nn(t,n);if(!s)return console.warn(`No RPC endpoint for chain ${t}`),new re(0);try{const a=await(await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_gasPrice",params:[]})})).json();return a.result&&a.result!=="0x"?new re(BigInt(a.result).toString()):new re(0)}catch(o){return console.warn("getGasPrice failed:",o),new re(0)}}var ne={},sn={exports:{}},nc=sn.exports,Es;function oc(){return Es||(Es=1,(function(e,t){(function(n,s){var o="1.0.39",a="",r="?",i="function",l="undefined",b="object",D="string",z="major",k="model",x="name",B="type",S="vendor",v="version",ge="architecture",y="console",J="mobile",Q="tablet",he="smarttv",we="wearable",Ee="embedded",c=500,d="Amazon",p="Apple",C="ASUS",u="BlackBerry",g="Browser",E="Chrome",h="Edge",w="Firefox",I="Google",N="Huawei",F="LG",X="Microsoft",se="Motorola",ue="Opera",Ce="Samsung",Se="Sharp",q="Sony",ye="Xiaomi",Ne="Zebra",qe="Facebook",Qe="Chromium OS",ot="Mac OS",Ve=" Browser",st=function(W,M){var U={};for(var _ in W)M[_]&&M[_].length%2===0?U[_]=M[_].concat(W[_]):U[_]=W[_];return U},Be=function(W){for(var M={},U=0;U<W.length;U++)M[W[U].toUpperCase()]=W[U];return M},Oe=function(W,M){return typeof W===D?ke(M).indexOf(ke(W))!==-1:!1},ke=function(W){return W.toLowerCase()},Gt=function(W){return typeof W===D?W.replace(/[^\d\.]/g,a).split(".")[0]:s},gt=function(W,M){if(typeof W===D)return W=W.replace(/^\s\s*/,a),typeof M===l?W:W.substring(0,c)},lt=function(W,M){for(var U=0,_,oe,V,A,P,de;U<M.length&&!P;){var ie=M[U],ve=M[U+1];for(_=oe=0;_<ie.length&&!P&&ie[_];)if(P=ie[_++].exec(W),P)for(V=0;V<ve.length;V++)de=P[++oe],A=ve[V],typeof A===b&&A.length>0?A.length===2?typeof A[1]==i?this[A[0]]=A[1].call(this,de):this[A[0]]=A[1]:A.length===3?typeof A[1]===i&&!(A[1].exec&&A[1].test)?this[A[0]]=de?A[1].call(this,de,A[2]):s:this[A[0]]=de?de.replace(A[1],A[2]):s:A.length===4&&(this[A[0]]=de?A[3].call(this,de.replace(A[1],A[2])):s):this[A]=de||s;U+=2}},at=function(W,M){for(var U in M)if(typeof M[U]===b&&M[U].length>0){for(var _=0;_<M[U].length;_++)if(Oe(M[U][_],W))return U===r?s:U}else if(Oe(M[U],W))return U===r?s:U;return M.hasOwnProperty("*")?M["*"]:W},Yt={"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},R={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},K={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[v,[x,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[v,[x,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[x,v],[/opios[\/ ]+([\w\.]+)/i],[v,[x,ue+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[v,[x,ue+" GX"]],[/\bopr\/([\w\.]+)/i],[v,[x,ue]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[v,[x,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[x,v],[/quark(?:pc)?\/([-\w\.]+)/i],[v,[x,"Quark"]],[/\bddg\/([\w\.]+)/i],[v,[x,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[v,[x,"UC"+g]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[v,[x,"WeChat"]],[/konqueror\/([\w\.]+)/i],[v,[x,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[v,[x,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[v,[x,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[v,[x,"Smart Lenovo "+g]],[/(avast|avg)\/([\w\.]+)/i],[[x,/(.+)/,"$1 Secure "+g],v],[/\bfocus\/([\w\.]+)/i],[v,[x,w+" Focus"]],[/\bopt\/([\w\.]+)/i],[v,[x,ue+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[v,[x,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[v,[x,"Dolphin"]],[/coast\/([\w\.]+)/i],[v,[x,ue+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[v,[x,"MIUI "+g]],[/fxios\/([-\w\.]+)/i],[v,[x,w]],[/\bqihu|(qi?ho?o?|360)browser/i],[[x,"360"+Ve]],[/\b(qq)\/([\w\.]+)/i],[[x,/(.+)/,"$1Browser"],v],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[x,/(.+)/,"$1"+Ve],v],[/samsungbrowser\/([\w\.]+)/i],[v,[x,Ce+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[x,/_/g," "],v],[/metasr[\/ ]?([\d\.]+)/i],[v,[x,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[x,"Sogou Mobile"],v],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[x,v],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[x],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[x,qe],v],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[x,v],[/\bgsa\/([\w\.]+) .*safari\//i],[v,[x,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[v,[x,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[v,[x,E+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[x,E+" WebView"],v],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[v,[x,"Android "+g]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[x,v],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[v,[x,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[v,x],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[x,[v,at,Yt]],[/(webkit|khtml)\/([\w\.]+)/i],[x,v],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[x,"Netscape"],v],[/(wolvic)\/([\w\.]+)/i],[x,v],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[v,[x,w+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[x,[v,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[x,[v,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[ge,"amd64"]],[/(ia32(?=;))/i],[[ge,ke]],[/((?:i[346]|x)86)[;\)]/i],[[ge,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[ge,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[ge,"armhf"]],[/windows (ce|mobile); ppc;/i],[[ge,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[ge,/ower/,a,ke]],[/(sun4\w)[;\)]/i],[[ge,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[ge,ke]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[k,[S,Ce],[B,Q]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[k,[S,Ce],[B,J]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[k,[S,p],[B,J]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[k,[S,p],[B,Q]],[/(macintosh);/i],[k,[S,p]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[k,[S,Se],[B,J]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[k,[S,N],[B,Q]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[k,[S,N],[B,J]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i],[[k,/_/g," "],[S,ye],[B,J]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[k,/_/g," "],[S,ye],[B,Q]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[k,[S,"OPPO"],[B,J]],[/\b(opd2\d{3}a?) bui/i],[k,[S,"OPPO"],[B,Q]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[k,[S,"Vivo"],[B,J]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[k,[S,"Realme"],[B,J]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[k,[S,se],[B,J]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[k,[S,se],[B,Q]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[k,[S,F],[B,Q]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[k,[S,F],[B,J]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[k,[S,"Lenovo"],[B,Q]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[k,/_/g," "],[S,"Nokia"],[B,J]],[/(pixel c)\b/i],[k,[S,I],[B,Q]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[k,[S,I],[B,J]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[k,[S,q],[B,J]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[k,"Xperia Tablet"],[S,q],[B,Q]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[k,[S,"OnePlus"],[B,J]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[k,[S,d],[B,Q]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[k,/(.+)/g,"Fire Phone $1"],[S,d],[B,J]],[/(playbook);[-\w\),; ]+(rim)/i],[k,S,[B,Q]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[k,[S,u],[B,J]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[k,[S,C],[B,Q]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[k,[S,C],[B,J]],[/(nexus 9)/i],[k,[S,"HTC"],[B,Q]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[S,[k,/_/g," "],[B,J]],[/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i],[k,[S,"TCL"],[B,Q]],[/(itel) ((\w+))/i],[[S,ke],k,[B,at,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[k,[S,"Acer"],[B,Q]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[k,[S,"Meizu"],[B,J]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[k,[S,"Ulefone"],[B,J]],[/droid.+; (a(?:015|06[35]|142p?))/i],[k,[S,"Nothing"],[B,J]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[S,k,[B,J]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[S,k,[B,Q]],[/(surface duo)/i],[k,[S,X],[B,Q]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[k,[S,"Fairphone"],[B,J]],[/(u304aa)/i],[k,[S,"AT&T"],[B,J]],[/\bsie-(\w*)/i],[k,[S,"Siemens"],[B,J]],[/\b(rct\w+) b/i],[k,[S,"RCA"],[B,Q]],[/\b(venue[\d ]{2,7}) b/i],[k,[S,"Dell"],[B,Q]],[/\b(q(?:mv|ta)\w+) b/i],[k,[S,"Verizon"],[B,Q]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[k,[S,"Barnes & Noble"],[B,Q]],[/\b(tm\d{3}\w+) b/i],[k,[S,"NuVision"],[B,Q]],[/\b(k88) b/i],[k,[S,"ZTE"],[B,Q]],[/\b(nx\d{3}j) b/i],[k,[S,"ZTE"],[B,J]],[/\b(gen\d{3}) b.+49h/i],[k,[S,"Swiss"],[B,J]],[/\b(zur\d{3}) b/i],[k,[S,"Swiss"],[B,Q]],[/\b((zeki)?tb.*\b) b/i],[k,[S,"Zeki"],[B,Q]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[S,"Dragon Touch"],k,[B,Q]],[/\b(ns-?\w{0,9}) b/i],[k,[S,"Insignia"],[B,Q]],[/\b((nxa|next)-?\w{0,9}) b/i],[k,[S,"NextBook"],[B,Q]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[S,"Voice"],k,[B,J]],[/\b(lvtel\-)?(v1[12]) b/i],[[S,"LvTel"],k,[B,J]],[/\b(ph-1) /i],[k,[S,"Essential"],[B,J]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[k,[S,"Envizen"],[B,Q]],[/\b(trio[-\w\. ]+) b/i],[k,[S,"MachSpeed"],[B,Q]],[/\btu_(1491) b/i],[k,[S,"Rotor"],[B,Q]],[/(shield[\w ]+) b/i],[k,[S,"Nvidia"],[B,Q]],[/(sprint) (\w+)/i],[S,k,[B,J]],[/(kin\.[onetw]{3})/i],[[k,/\./g," "],[S,X],[B,J]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[k,[S,Ne],[B,Q]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[k,[S,Ne],[B,J]],[/smart-tv.+(samsung)/i],[S,[B,he]],[/hbbtv.+maple;(\d+)/i],[[k,/^/,"SmartTV"],[S,Ce],[B,he]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[S,F],[B,he]],[/(apple) ?tv/i],[S,[k,p+" TV"],[B,he]],[/crkey/i],[[k,E+"cast"],[S,I],[B,he]],[/droid.+aft(\w+)( bui|\))/i],[k,[S,d],[B,he]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[k,[S,Se],[B,he]],[/(bravia[\w ]+)( bui|\))/i],[k,[S,q],[B,he]],[/(mitv-\w{5}) bui/i],[k,[S,ye],[B,he]],[/Hbbtv.*(technisat) (.*);/i],[S,k,[B,he]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[S,gt],[k,gt],[B,he]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[B,he]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[S,k,[B,y]],[/droid.+; (shield) bui/i],[k,[S,"Nvidia"],[B,y]],[/(playstation [345portablevi]+)/i],[k,[S,q],[B,y]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[k,[S,X],[B,y]],[/\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i],[k,[S,Ce],[B,we]],[/((pebble))app/i],[S,k,[B,we]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[k,[S,p],[B,we]],[/droid.+; (glass) \d/i],[k,[S,I],[B,we]],[/droid.+; (wt63?0{2,3})\)/i],[k,[S,Ne],[B,we]],[/(quest( \d| pro)?)/i],[k,[S,qe],[B,we]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[S,[B,Ee]],[/(aeobc)\b/i],[k,[S,d],[B,Ee]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[k,[B,J]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[k,[B,Q]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[B,Q]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[B,J]],[/(android[-\w\. ]{0,9});.+buil/i],[k,[S,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[v,[x,h+"HTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[v,[x,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[x,v],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[v,x]],os:[[/microsoft (windows) (vista|xp)/i],[x,v],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[x,[v,at,R]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[v,at,R],[x,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[v,/_/g,"."],[x,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[x,ot],[v,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[v,x],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[x,v],[/\(bb(10);/i],[v,[x,u]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[v,[x,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[v,[x,w+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[v,[x,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[v,[x,"watchOS"]],[/crkey\/([\d\.]+)/i],[v,[x,E+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[x,Qe],v],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[x,v],[/(sunos) ?([\w\.\d]*)/i],[[x,"Solaris"],v],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[x,v]]},H=function(W,M){if(typeof W===b&&(M=W,W=s),!(this instanceof H))return new H(W,M).getResult();var U=typeof n!==l&&n.navigator?n.navigator:s,_=W||(U&&U.userAgent?U.userAgent:a),oe=U&&U.userAgentData?U.userAgentData:s,V=M?st(K,M):K,A=U&&U.userAgent==_;return this.getBrowser=function(){var P={};return P[x]=s,P[v]=s,lt.call(P,_,V.browser),P[z]=Gt(P[v]),A&&U&&U.brave&&typeof U.brave.isBrave==i&&(P[x]="Brave"),P},this.getCPU=function(){var P={};return P[ge]=s,lt.call(P,_,V.cpu),P},this.getDevice=function(){var P={};return P[S]=s,P[k]=s,P[B]=s,lt.call(P,_,V.device),A&&!P[B]&&oe&&oe.mobile&&(P[B]=J),A&&P[k]=="Macintosh"&&U&&typeof U.standalone!==l&&U.maxTouchPoints&&U.maxTouchPoints>2&&(P[k]="iPad",P[B]=Q),P},this.getEngine=function(){var P={};return P[x]=s,P[v]=s,lt.call(P,_,V.engine),P},this.getOS=function(){var P={};return P[x]=s,P[v]=s,lt.call(P,_,V.os),A&&!P[x]&&oe&&oe.platform&&oe.platform!="Unknown"&&(P[x]=oe.platform.replace(/chrome os/i,Qe).replace(/macos/i,ot)),P},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return _},this.setUA=function(P){return _=typeof P===D&&P.length>c?gt(P,c):P,this},this.setUA(_),this};H.VERSION=o,H.BROWSER=Be([x,v,z]),H.CPU=Be([ge]),H.DEVICE=Be([k,S,B,y,J,he,Q,we,Ee]),H.ENGINE=H.OS=Be([x,v]),e.exports&&(t=e.exports=H),t.UAParser=H;var Z=typeof n!==l&&(n.jQuery||n.Zepto);if(Z&&!Z.ua){var le=new H;Z.ua=le.getResult(),Z.ua.get=function(){return le.getUA()},Z.ua.set=function(W){le.setUA(W);var M=le.getResult();for(var U in M)Z.ua[U]=M[U]}}})(typeof window=="object"?window:nc)})(sn,sn.exports)),sn.exports}var Ss;function sc(){if(Ss)return ne;Ss=1,Object.defineProperty(ne,"__esModule",{value:!0});function e(T){return T&&typeof T=="object"&&"default"in T?T.default:T}var t=te,n=e(t),s=oc(),o=new s,a=o.getBrowser(),r=o.getCPU(),i=o.getDevice(),l=o.getEngine(),b=o.getOS(),D=o.getUA(),z=function(f){return o.setUA(f)},k=function(f){if(!f){console.error("No userAgent string was provided");return}var m=new s(f);return{UA:m,browser:m.getBrowser(),cpu:m.getCPU(),device:m.getDevice(),engine:m.getEngine(),os:m.getOS(),ua:m.getUA(),setUserAgent:function(Y){return m.setUA(Y)}}},x=Object.freeze({ClientUAInstance:o,browser:a,cpu:r,device:i,engine:l,os:b,ua:D,setUa:z,parseUserAgent:k});function B(T,f){var m=Object.keys(T);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(T);f&&(L=L.filter(function(Y){return Object.getOwnPropertyDescriptor(T,Y).enumerable})),m.push.apply(m,L)}return m}function S(T){for(var f=1;f<arguments.length;f++){var m=arguments[f]!=null?arguments[f]:{};f%2?B(Object(m),!0).forEach(function(L){Q(T,L,m[L])}):Object.getOwnPropertyDescriptors?Object.defineProperties(T,Object.getOwnPropertyDescriptors(m)):B(Object(m)).forEach(function(L){Object.defineProperty(T,L,Object.getOwnPropertyDescriptor(m,L))})}return T}function v(T){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?v=function(f){return typeof f}:v=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},v(T)}function ge(T,f){if(!(T instanceof f))throw new TypeError("Cannot call a class as a function")}function y(T,f){for(var m=0;m<f.length;m++){var L=f[m];L.enumerable=L.enumerable||!1,L.configurable=!0,"value"in L&&(L.writable=!0),Object.defineProperty(T,L.key,L)}}function J(T,f,m){return f&&y(T.prototype,f),T}function Q(T,f,m){return f in T?Object.defineProperty(T,f,{value:m,enumerable:!0,configurable:!0,writable:!0}):T[f]=m,T}function he(){return he=Object.assign||function(T){for(var f=1;f<arguments.length;f++){var m=arguments[f];for(var L in m)Object.prototype.hasOwnProperty.call(m,L)&&(T[L]=m[L])}return T},he.apply(this,arguments)}function we(T,f){if(typeof f!="function"&&f!==null)throw new TypeError("Super expression must either be null or a function");T.prototype=Object.create(f&&f.prototype,{constructor:{value:T,writable:!0,configurable:!0}}),f&&c(T,f)}function Ee(T){return Ee=Object.setPrototypeOf?Object.getPrototypeOf:function(m){return m.__proto__||Object.getPrototypeOf(m)},Ee(T)}function c(T,f){return c=Object.setPrototypeOf||function(L,Y){return L.__proto__=Y,L},c(T,f)}function d(T,f){if(T==null)return{};var m={},L=Object.keys(T),Y,Ae;for(Ae=0;Ae<L.length;Ae++)Y=L[Ae],!(f.indexOf(Y)>=0)&&(m[Y]=T[Y]);return m}function p(T,f){if(T==null)return{};var m=d(T,f),L,Y;if(Object.getOwnPropertySymbols){var Ae=Object.getOwnPropertySymbols(T);for(Y=0;Y<Ae.length;Y++)L=Ae[Y],!(f.indexOf(L)>=0)&&Object.prototype.propertyIsEnumerable.call(T,L)&&(m[L]=T[L])}return m}function C(T){if(T===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return T}function u(T,f){if(f&&(typeof f=="object"||typeof f=="function"))return f;if(f!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return C(T)}function g(T,f){return E(T)||h(T,f)||w(T,f)||N()}function E(T){if(Array.isArray(T))return T}function h(T,f){var m=T==null?null:typeof Symbol<"u"&&T[Symbol.iterator]||T["@@iterator"];if(m!=null){var L=[],Y=!0,Ae=!1,Me,Ke;try{for(m=m.call(T);!(Y=(Me=m.next()).done)&&(L.push(Me.value),!(f&&L.length===f));Y=!0);}catch(In){Ae=!0,Ke=In}finally{try{!Y&&m.return!=null&&m.return()}finally{if(Ae)throw Ke}}return L}}function w(T,f){if(T){if(typeof T=="string")return I(T,f);var m=Object.prototype.toString.call(T).slice(8,-1);if(m==="Object"&&T.constructor&&(m=T.constructor.name),m==="Map"||m==="Set")return Array.from(T);if(m==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(m))return I(T,f)}}function I(T,f){(f==null||f>T.length)&&(f=T.length);for(var m=0,L=new Array(f);m<f;m++)L[m]=T[m];return L}function N(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
418
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var F={Mobile:"mobile",Tablet:"tablet",SmartTv:"smarttv",Console:"console",Wearable:"wearable",Embedded:"embedded",Browser:void 0},X={Chrome:"Chrome",Firefox:"Firefox",Opera:"Opera",Yandex:"Yandex",Safari:"Safari",InternetExplorer:"Internet Explorer",Edge:"Edge",Chromium:"Chromium",Ie:"IE",MobileSafari:"Mobile Safari",EdgeChromium:"Edge Chromium",MIUI:"MIUI Browser",SamsungBrowser:"Samsung Browser"},se={IOS:"iOS",Android:"Android",WindowsPhone:"Windows Phone",Windows:"Windows",MAC_OS:"Mac OS"},ue={isMobile:!1,isTablet:!1,isBrowser:!1,isSmartTV:!1,isConsole:!1,isWearable:!1},Ce=function(f){switch(f){case F.Mobile:return{isMobile:!0};case F.Tablet:return{isTablet:!0};case F.SmartTv:return{isSmartTV:!0};case F.Console:return{isConsole:!0};case F.Wearable:return{isWearable:!0};case F.Browser:return{isBrowser:!0};case F.Embedded:return{isEmbedded:!0};default:return ue}},Se=function(f){return z(f)},q=function(f){var m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"none";return f||m},ye=function(){return typeof window<"u"&&(window.navigator||navigator)?window.navigator||navigator:!1},Ne=function(f){var m=ye();return m&&m.platform&&(m.platform.indexOf(f)!==-1||m.platform==="MacIntel"&&m.maxTouchPoints>1&&!window.MSStream)},qe=function(f,m,L,Y,Ae){return{isBrowser:f,browserMajorVersion:q(m.major),browserFullVersion:q(m.version),browserName:q(m.name),engineName:q(L.name),engineVersion:q(L.version),osName:q(Y.name),osVersion:q(Y.version),userAgent:q(Ae)}},Qe=function(f,m,L,Y){return S({},f,{vendor:q(m.vendor),model:q(m.model),os:q(L.name),osVersion:q(L.version),ua:q(Y)})},ot=function(f,m,L,Y){return{isSmartTV:f,engineName:q(m.name),engineVersion:q(m.version),osName:q(L.name),osVersion:q(L.version),userAgent:q(Y)}},Ve=function(f,m,L,Y){return{isConsole:f,engineName:q(m.name),engineVersion:q(m.version),osName:q(L.name),osVersion:q(L.version),userAgent:q(Y)}},st=function(f,m,L,Y){return{isWearable:f,engineName:q(m.name),engineVersion:q(m.version),osName:q(L.name),osVersion:q(L.version),userAgent:q(Y)}},Be=function(f,m,L,Y,Ae){return{isEmbedded:f,vendor:q(m.vendor),model:q(m.model),engineName:q(L.name),engineVersion:q(L.version),osName:q(Y.name),osVersion:q(Y.version),userAgent:q(Ae)}};function Oe(T){var f=T?k(T):x,m=f.device,L=f.browser,Y=f.engine,Ae=f.os,Me=f.ua,Ke=Ce(m.type),In=Ke.isBrowser,ol=Ke.isMobile,sl=Ke.isTablet,Us=Ke.isSmartTV,Ms=Ke.isConsole,Rs=Ke.isWearable,Hs=Ke.isEmbedded;if(In)return qe(In,L,Y,Ae,Me);if(Us)return ot(Us,Y,Ae,Me);if(Ms)return Ve(Ms,Y,Ae,Me);if(ol||sl)return Qe(Ke,m,Ae,Me);if(Rs)return st(Rs,Y,Ae,Me);if(Hs)return Be(Hs,m,Y,Ae,Me)}var ke=function(f){var m=f.type;return m===F.Mobile},Gt=function(f){var m=f.type;return m===F.Tablet},gt=function(f){var m=f.type;return m===F.Mobile||m===F.Tablet},lt=function(f){var m=f.type;return m===F.SmartTv},at=function(f){var m=f.type;return m===F.Browser},Yt=function(f){var m=f.type;return m===F.Wearable},R=function(f){var m=f.type;return m===F.Console},K=function(f){var m=f.type;return m===F.Embedded},H=function(f){var m=f.vendor;return q(m)},Z=function(f){var m=f.model;return q(m)},le=function(f){var m=f.type;return q(m,"browser")},W=function(f){var m=f.name;return m===se.Android},M=function(f){var m=f.name;return m===se.Windows},U=function(f){var m=f.name;return m===se.MAC_OS},_=function(f){var m=f.name;return m===se.WindowsPhone},oe=function(f){var m=f.name;return m===se.IOS},V=function(f){var m=f.version;return q(m)},A=function(f){var m=f.name;return q(m)},P=function(f){var m=f.name;return m===X.Chrome},de=function(f){var m=f.name;return m===X.Firefox},ie=function(f){var m=f.name;return m===X.Chromium},ve=function(f){var m=f.name;return m===X.Edge},xe=function(f){var m=f.name;return m===X.Yandex},ae=function(f){var m=f.name;return m===X.Safari||m===X.MobileSafari},j=function(f){var m=f.name;return m===X.MobileSafari},ee=function(f){var m=f.name;return m===X.Opera},G=function(f){var m=f.name;return m===X.InternetExplorer||m===X.Ie},$=function(f){var m=f.name;return m===X.MIUI},fe=function(f){var m=f.name;return m===X.SamsungBrowser},ce=function(f){var m=f.version;return q(m)},Te=function(f){var m=f.major;return q(m)},Fe=function(f){var m=f.name;return q(m)},Ie=function(f){var m=f.name;return q(m)},De=function(f){var m=f.version;return q(m)},_e=function(){var f=ye(),m=f&&f.userAgent&&f.userAgent.toLowerCase();return typeof m=="string"?/electron/.test(m):!1},Ge=function(f){return typeof f=="string"&&f.indexOf("Edg/")!==-1},dt=function(){var f=ye();return f&&(/iPad|iPhone|iPod/.test(f.platform)||f.platform==="MacIntel"&&f.maxTouchPoints>1)&&!window.MSStream},Ye=function(){return Ne("iPad")},Pt=function(){return Ne("iPhone")},an=function(){return Ne("iPod")},rn=function(f){return q(f)};function Jt(T){var f=T||x,m=f.device,L=f.browser,Y=f.os,Ae=f.engine,Me=f.ua;return{isSmartTV:lt(m),isConsole:R(m),isWearable:Yt(m),isEmbedded:K(m),isMobileSafari:j(L)||Ye(),isChromium:ie(L),isMobile:gt(m)||Ye(),isMobileOnly:ke(m),isTablet:Gt(m)||Ye(),isBrowser:at(m),isDesktop:at(m),isAndroid:W(Y),isWinPhone:_(Y),isIOS:oe(Y)||Ye(),isChrome:P(L),isFirefox:de(L),isSafari:ae(L),isOpera:ee(L),isIE:G(L),osVersion:V(Y),osName:A(Y),fullBrowserVersion:ce(L),browserVersion:Te(L),browserName:Fe(L),mobileVendor:H(m),mobileModel:Z(m),engineName:Ie(Ae),engineVersion:De(Ae),getUA:rn(Me),isEdge:ve(L)||Ge(Me),isYandex:xe(L),deviceType:le(m),isIOS13:dt(),isIPad13:Ye(),isIPhone13:Pt(),isIPod13:an(),isElectron:_e(),isEdgeChromium:Ge(Me),isLegacyEdge:ve(L)&&!Ge(Me),isWindows:M(Y),isMacOs:U(Y),isMIUI:$(L),isSamsungBrowser:fe(L)}}var Ue=lt(i),En=R(i),Sn=Yt(i),lc=K(i),dc=j(a)||Ye(),uc=ie(a),xn=gt(i)||Ye(),Is=ke(i),Ns=Gt(i)||Ye(),Bs=at(i),fc=at(i),Fs=W(b),Ps=_(b),Os=oe(b)||Ye(),pc=P(a),mc=de(a),hc=ae(a),gc=ee(a),Ds=G(a),wc=V(b),bc=A(b),yc=ce(a),Ac=Te(a),kc=Fe(a),vc=H(i),Tc=Z(i),Cc=Ie(l),Ec=De(l),Sc=rn(D),xc=ve(a)||Ge(D),Ic=xe(a),Nc=le(i),Bc=dt(),Fc=Ye(),Pc=Pt(),Oc=an(),Dc=_e(),Lc=Ge(D),Uc=ve(a)&&!Ge(D),Mc=M(b),Rc=U(b),Hc=$(a),Wc=fe(a),Vc=function(f){if(!f||typeof f!="string"){console.error("No valid user agent string was provided");return}var m=k(f),L=m.device,Y=m.browser,Ae=m.os,Me=m.engine,Ke=m.ua;return Jt({device:L,browser:Y,os:Ae,engine:Me,ua:Ke})},Gc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return Fs?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},Yc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return Bs?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},Jc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return Ds?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},zc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return Os?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},jc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return xn?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},qc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return Ns?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},Qc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return Ps?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},Kc=function(f){var m=f.renderWithFragment,L=f.children;f.viewClassName,f.style;var Y=p(f,["renderWithFragment","children","viewClassName","style"]);return Is?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},Xc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return Ue?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},_c=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return En?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},Zc=function(f){var m=f.renderWithFragment,L=f.children,Y=p(f,["renderWithFragment","children"]);return Sn?m?n.createElement(t.Fragment,null,L):n.createElement("div",Y,L):null},$c=function(f){var m=f.renderWithFragment,L=f.children;f.viewClassName,f.style;var Y=f.condition,Ae=p(f,["renderWithFragment","children","viewClassName","style","condition"]);return Y?m?n.createElement(t.Fragment,null,L):n.createElement("div",Ae,L):null};function el(T){return(function(f){we(m,f);function m(L){var Y;return ge(this,m),Y=u(this,Ee(m).call(this,L)),Y.isEventListenerAdded=!1,Y.handleOrientationChange=Y.handleOrientationChange.bind(C(Y)),Y.onOrientationChange=Y.onOrientationChange.bind(C(Y)),Y.onPageLoad=Y.onPageLoad.bind(C(Y)),Y.state={isLandscape:!1,isPortrait:!1},Y}return J(m,[{key:"handleOrientationChange",value:function(){this.isEventListenerAdded||(this.isEventListenerAdded=!0);var Y=window.innerWidth>window.innerHeight?90:0;this.setState({isPortrait:Y===0,isLandscape:Y===90})}},{key:"onOrientationChange",value:function(){this.handleOrientationChange()}},{key:"onPageLoad",value:function(){this.handleOrientationChange()}},{key:"componentDidMount",value:function(){(typeof window>"u"?"undefined":v(window))!==void 0&&xn&&(this.isEventListenerAdded?window.removeEventListener("load",this.onPageLoad,!1):(this.handleOrientationChange(),window.addEventListener("load",this.onPageLoad,!1)),window.addEventListener("resize",this.onOrientationChange,!1))}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.onOrientationChange,!1)}},{key:"render",value:function(){return n.createElement(T,he({},this.props,{isLandscape:this.state.isLandscape,isPortrait:this.state.isPortrait}))}}]),m})(n.Component)}function tl(){var T=t.useState(function(){var Ae=window.innerWidth>window.innerHeight?90:0;return{isPortrait:Ae===0,isLandscape:Ae===90,orientation:Ae===0?"portrait":"landscape"}}),f=g(T,2),m=f[0],L=f[1],Y=t.useCallback(function(){var Ae=window.innerWidth>window.innerHeight?90:0,Me={isPortrait:Ae===0,isLandscape:Ae===90,orientation:Ae===0?"portrait":"landscape"};m.orientation!==Me.orientation&&L(Me)},[m.orientation]);return t.useEffect(function(){return(typeof window>"u"?"undefined":v(window))!==void 0&&xn&&(Y(),window.addEventListener("load",Y,!1),window.addEventListener("resize",Y,!1)),function(){window.removeEventListener("resize",Y,!1),window.removeEventListener("load",Y,!1)}},[Y]),m}function Ls(T){var f=T||window.navigator.userAgent;return k(f)}function nl(T){var f=T||window.navigator.userAgent,m=Ls(f),L=Jt(m);return[L,m]}return ne.AndroidView=Gc,ne.BrowserTypes=X,ne.BrowserView=Yc,ne.ConsoleView=_c,ne.CustomView=$c,ne.IEView=Jc,ne.IOSView=zc,ne.MobileOnlyView=Kc,ne.MobileView=jc,ne.OsTypes=se,ne.SmartTVView=Xc,ne.TabletView=qc,ne.WearableView=Zc,ne.WinPhoneView=Qc,ne.browserName=kc,ne.browserVersion=Ac,ne.deviceDetect=Oe,ne.deviceType=Nc,ne.engineName=Cc,ne.engineVersion=Ec,ne.fullBrowserVersion=yc,ne.getSelectorsByUserAgent=Vc,ne.getUA=Sc,ne.isAndroid=Fs,ne.isBrowser=Bs,ne.isChrome=pc,ne.isChromium=uc,ne.isConsole=En,ne.isDesktop=fc,ne.isEdge=xc,ne.isEdgeChromium=Lc,ne.isElectron=Dc,ne.isEmbedded=lc,ne.isFirefox=mc,ne.isIE=Ds,ne.isIOS=Os,ne.isIOS13=Bc,ne.isIPad13=Fc,ne.isIPhone13=Pc,ne.isIPod13=Oc,ne.isLegacyEdge=Uc,ne.isMIUI=Hc,ne.isMacOs=Rc,ne.isMobile=xn,ne.isMobileOnly=Is,ne.isMobileSafari=dc,ne.isOpera=gc,ne.isSafari=hc,ne.isSamsungBrowser=Wc,ne.isSmartTV=Ue,ne.isTablet=Ns,ne.isWearable=Sn,ne.isWinPhone=Ps,ne.isWindows=Mc,ne.isYandex=Ic,ne.mobileModel=Tc,ne.mobileVendor=vc,ne.osName=bc,ne.osVersion=wc,ne.parseUserAgent=k,ne.setUserAgent=Se,ne.useDeviceData=Ls,ne.useDeviceSelectors=nl,ne.useMobileOrientation=tl,ne.withOrientationChange=el,ne}var Ft=sc();const po={model:"gemini-2.5-flash","model2.0":"gemini-2.5-flash",apiKey:"QUl6YVN5RGprZEFvMjNtMy00S0U3eWo2aVJQQmowN05lRXgxd0tz",url:"https://generativelanguage.googleapis.com"};class ac extends Vt{enableGoogleSearch=!0;indexApiKey=0;constructor(){super(po.url)}getApiKey(){let t="",n=[];const s=localStorage.getItem("arr_api_key_dev_gemini");s?n=JSON.parse(s):n=po.apiKey.split(",");const o=localStorage.getItem("index_api_key_gemini");return o&&(this.indexApiKey=Number(o),this.indexApiKey++),this.indexApiKey>=n.length&&(this.indexApiKey=0),t=n[this.indexApiKey],t&&(t=atob(t)),localStorage.setItem("index_api_key_gemini",this.indexApiKey.toString()),t}getUrl(t,n){return`/v1beta/models/${n||"gemini-2.5-flash"}:${t}`}async generateContent(t,n){try{const s=`
|
|
419
|
-
Below is the system context and conversation history. Use it for context but prioritize the instructions at the end.
|
|
420
|
-
|
|
421
|
-
---
|
|
422
|
-
SYSTEM CONTEXT & HISTORY:
|
|
423
|
-
${n}
|
|
424
|
-
---
|
|
425
|
-
### MANDATORY RULES:
|
|
426
|
-
1. **LANGUAGE ADHERENCE**:
|
|
427
|
-
- **DETECT** the language of the section labeled "CURRENT USER QUESTION" below.
|
|
428
|
-
- **RESPOND ONLY** in that same language.
|
|
429
|
-
- **IGNORE** any language bias from the context or history.
|
|
430
|
-
2. **HISTORY CLEANING**:
|
|
431
|
-
- If any assistant response in the conversation history says it **"doesn't know"**, **"doesn't have data"**, **"cannot find info"**, or similar, you MUST **IGNORE that specific history segment**.
|
|
432
|
-
- Do not let previous data failures prevent you from answering the CURRENT USER QUESTION if the information is available now or in your core knowledge.
|
|
433
|
-
3. **BREVITY**: Keep your answer extremely concise (under 3000 characters).
|
|
434
|
-
4. **DATA INTEGRITY**: Do not mention data gaps or historical missing info; just answer based on available info.
|
|
435
|
-
|
|
436
|
-
---
|
|
437
|
-
CURRENT USER QUESTION:
|
|
438
|
-
${t}
|
|
439
|
-
---
|
|
440
|
-
`,o=this.getUrl("generateContent"),a={contents:[{parts:[{text:s}]}],tools:[{googleSearch:{}}]};this.enableGoogleSearch||delete a.tools;const r=await this.post(o,a,{headers:{"x-goog-api-key":this.getApiKey()}});return r?.data?.data?.candidates?.[0]?.content?.parts?.[0]?.text||r?.data?.candidates?.[0]?.content?.parts?.[0]?.text}catch(s){if((s?.message?.includes("search_grounding_request_per_project_per_day")||s?.data?.error?.message?.includes("search_grounding_request_per_project_per_day"))&&this.enableGoogleSearch)return this.enableGoogleSearch=!1,await this.generateContent(t,n);throw s}}async checkTypeQuestion(t,n){try{const s=n+`---
|
|
441
|
-
CURRENT USER QUESTION:
|
|
442
|
-
${t}
|
|
443
|
-
---
|
|
444
|
-
|
|
445
|
-
Analyze this question and determine its category.
|
|
446
|
-
IMPORTANT: The following topics should ALWAYS be classified as "yes" (crypto-related):
|
|
447
|
-
- Greetings (in ANY language): hello, hi, xin chào, bonjour, etc.
|
|
448
|
-
- Cryptocurrency, blockchain, crypto trading, DeFi, NFT
|
|
449
|
-
- Wallet/Account questions (in ANY language): account, wallet, address, balance, portfolio, holdings
|
|
450
|
-
- Registration/Sign-up questions (in ANY language): register, sign up, create account, create wallet, new account, new wallet, registration
|
|
451
|
-
- Wallet access questions (in ANY language): open wallet, open account, start wallet, launch wallet, access wallet, access account
|
|
452
|
-
- Token/coin questions: prices, market data, trading
|
|
453
|
-
- Chain questions: ETH, Base, Optimism, BSC, Polygon, Arbitrum
|
|
454
|
-
- Smart contracts, gas fees, transactions
|
|
455
|
-
- Action phrases (in ANY language): send token, swap token, send nft, buy token, bridge token, info token, check balance, etc.
|
|
456
|
-
|
|
457
|
-
CRITICAL: Detect these concepts in ANY language (English, Japanese, Chinese, Vietnamese, Korean, Spanish, etc.)
|
|
458
|
-
The user may ask in their native language, so recognize the MEANING, not just specific words.
|
|
459
|
-
|
|
460
|
-
If the question is about ANY of the above topics, respond with ONLY the word "yes" (lowercase, nothing else).
|
|
461
|
-
Otherwise, respond with ONLY the word "no" (lowercase, nothing else).
|
|
462
|
-
Do not provide any explanation or additional text.`,o=this.getUrl("generateContent",po["model2.0"]),a={contents:[{parts:[{text:s}]}]},r=await this.post(o,a,{headers:{"x-goog-api-key":this.getApiKey()}});return r?.data?.data?.candidates?.[0]?.content?.parts?.[0]?.text||r?.data?.candidates?.[0]?.content?.parts?.[0]?.text}catch(s){throw s}}}const xs=new ac;function mo(e,t){if(!e)return e;const n=e.toLowerCase().trim();if(n==="max"||n==="all")return t||e;const s=n.match(/^(\d+(?:\.\d+)?)%$/);if(s){const o=parseFloat(s[1])/100;return((parseFloat(t)||0)*o).toFixed(8).replace(/\.?0+$/,"")||"0"}return e}const rc=({isOpen:e,onClose:t,onTransaction:n,position:s="bottom-right",modalChatStyle:o={}})=>{const{t:a,ti:r}=cn(),{messages:i,addMessage:l,updateMessageAction:b,updateMessageText:D,getMessageById:z,clearMessagesById:k}=Si(),[x,B]=te.useState(""),[S,v]=te.useState(!1),[ge,y]=te.useState(!0),[J,Q]=te.useState(null),he=te.useRef(null),we=te.useRef(null),Ee=te.useRef(null),c=te.useRef(null),d=te.useRef(null),p=te.useRef(!1),C=te.useRef(ge);te.useEffect(()=>{C.current=ge},[ge]);const{account:u,chainData:g,chainType:E,chainTypeMoralis:h,chainId:w,isChainSupported:I}=gn(),{config:N}=xi(),F=w&&N?.rpcUrls?.[w]||void 0,X=te.useCallback(()=>{const R=Nt.getItem("dataBuyToken");if(R)try{return JSON.parse(R)}catch{return{srcTokenAddress:"",descTokenAddress:"",amount:"",srcTokenDecimals:18,descTokenDecimals:18}}return{srcTokenAddress:"",descTokenAddress:"",amount:"",srcTokenDecimals:18,descTokenDecimals:18}},[]),se=te.useCallback(R=>{Nt.setItem("dataBuyToken",JSON.stringify(R))},[]),ue=te.useCallback(R=>{const H={...X(),...R};se(H)},[X,se]),Ce=te.useCallback(R=>{Q(R),Ft.isDesktop&&Ee.current?.focus()},[]),Se=te.useCallback(async(R,K)=>{ue({descTokenAddress:R,descTokenDecimals:K||18});try{v(!0);const H=await je({address:u?.address||"",chain:h});if(H?.success&&H?.data?.result){const Z=H.data.result;if(Z?.length>0){const le=Z.map(W=>({id:W.token_address,text:`${W.name}: ${W.balance_formatted} ${W.symbol} ($${re(W.usd_value||0)?.decimalPlaces(2).toFormat()||"0"})`,value:r("buttonBuyWith",{symbol:W.symbol}),action:"click_balance_item_user_to_buy_button",fullWidth:!0,extraData:{tokenAddress:W.token_address,symbol:W.symbol,balance:W.balance_formatted,usdValue:W.usd_value,decimals:W.decimals}}));l(r("walletBalanceSpendable",{chain:g?.name||"unknown"}),"bot",void 0,le)}else l(r("walletNoTokensFound",{chain:g?.name||"unknown"}),"bot")}else l(a("walletFetchFailed"),"bot")}catch(H){console.error("Error fetching wallet balance:",H),l(a("walletFetchError"),"bot")}finally{v(!1)}},[ue,u?.address,h,l,g?.name,a,r]),q=te.useCallback(async(R,K,H,Z)=>{const le=[25,50,75,100];ue({srcTokenAddress:R,srcTokenDecimals:Z||18});let W=H||"0";if(R===We)try{const U=await fo({chainId:w,rpcUrl:F});if(U.isGreaterThan(0)){const _=U.times(1e6),V=new re(mt(H,Z||18).toString()).minus(_);V.isGreaterThan(0)?W=re(Le(BigInt(V.toFixed(0)),18)).toFixed():W="0"}}catch(U){console.warn("getGasPrice for swap native fee deduction failed:",U)}const M=le.map(U=>({id:`percent-${U}`,text:`${U}%`,value:r("buttonUsePercent",{percent:String(U),symbol:K}),action:"select_percent",extraData:{percent:U,tokenAddress:R,tokenSymbol:K,tokenDecimals:Z||18,tokenBalance:W}}));if(re(W).isZero()){l(r("insufficientFeeToken",{symbol:K}),"bot");return}l(r("selectAmountOf",{symbol:K,balance:W}),"bot",void 0,M)},[l,w,F,ue,r]),ye=te.useCallback(async(R,K,H,Z)=>{const le={amount:(parseFloat(K)*(R/100)).toFixed(6)};H!==void 0&&(le.srcTokenAddress=H),Z!==void 0&&(le.srcTokenDecimals=Z),ue(le);const W=X(),M=mt(W.amount,W.srcTokenDecimals||18).toString(),U=await io({chainId:w,tokenIn:W.srcTokenAddress,tokenInAmount:M,tokenOut:W.descTokenAddress,tokenOutRecipient:u?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(U.success&&U.data){const _=U.data,oe=_.tokenIn,V=_.tokenOut,A=re(Le(BigInt(oe.amount||0),oe.decimals)).decimalPlaces(6).toFormat(),P=re(Le(BigInt(V.amount||0),V.decimals)).decimalPlaces(6).toFormat(),de=W.srcTokenAddress===We||W.srcTokenAddress==="";let ie=!1;if(!de&&u?.address&&_.tx?.to)try{const fe=await uo({tokenAddress:W.srcTokenAddress,ownerAddress:u.address,spenderAddress:_.tx.to,chainId:w,rpcUrl:F});ie=re(fe.toString()).isLessThan(M)}catch(fe){console.warn("Allowance check failed:",fe),ie=!0}const ve=_.estimatedTransactionFee?.total?re(_.estimatedTransactionFee.total):re(0);let xe=re(0);if(ie&&u?.address)try{const fe=Tn({tokenAddress:W.srcTokenAddress,spenderAddress:_.tx?.to||"",fromAddress:u.address,chainId:w,amount:M});xe=await on({from:u.address,to:fe.to,data:fe.data,chainId:w,rpcUrl:F})}catch(fe){console.warn("Approve fee estimation failed:",fe)}const ae=ve.plus(xe),j=g?.nativeCurrency?.symbol||"native";let ee="",G=!1;if(u?.address&&ae.isGreaterThan(0))try{const fe=await Cn({address:u.address,chainId:w,rpcUrl:F});if(fe.isLessThan(ae)){G=!0;const ce=re(Le(BigInt(fe.toFixed(0)),18)).decimalPlaces(6).toFormat(),Te=re(Le(BigInt(ae.toFixed(0)),18)).decimalPlaces(6).toFormat();ee=r("swapFeeWarning",{symbol:j,balance:ce,needed:Te})}}catch(fe){console.warn("Fee balance check failed:",fe)}const $=`From: ${A} ${oe.symbol}
|
|
463
|
-
⬇️
|
|
464
|
-
To: ${P} ${V.symbol}
|
|
465
|
-
|
|
466
|
-
`+ee+`
|
|
467
|
-
`;if(G)l($,"bot");else if(ie){const fe=$+r("swapNeedApprove",{symbol:oe.symbol}),ce=[{id:"approve-for-swap",text:r("swapApproveButton",{symbol:oe.symbol}),value:r("swapApproveValue",{symbol:oe.symbol}),action:"approve_for_swap",fullWidth:!0,extraData:{tokenAddress:W.srcTokenAddress,spenderAddress:_.tx.to,tokenSymbol:oe.symbol,amountInWei:M,tx:_.tx}}];l(fe,"bot",void 0,ce)}else{const fe=[{id:"confirm-swap",text:a("swapConfirmButton"),value:a("swapConfirmValue"),action:"confirm_swap",extraData:{tx:_.tx}}];l($+a("swapReadyToProceed"),"bot",void 0,fe)}}else l(r("swapEstimationError",{error:U.errorMessage||U.error||"Unknown error"}),"bot")},[X,ue,l,w,u?.address,g?.nativeCurrency?.symbol,F,a,r]),Ne=te.useCallback(async(R,K,H)=>{try{if(K==="suggested_action"){c.current=R,B(R);return}if(l(R,"user"),y(!1),v(!0),K)switch(await Xe(500),K){case"click_buy_item_token_button":await Se(H?.tokenAddress||"",H?.decimals||18);break;case"click_balance_item_user_to_buy_button":await q(H?.tokenAddress||"",H?.symbol||"",H?.balance||"",H?.decimals||18);break;case"select_percent":await ye(H?.percent||0,H?.tokenBalance||"",H?.tokenAddress||void 0,H?.tokenDecimals||void 0);break;case"confirm_swap":if(H?.tx&&n){const Z=H.tx,le={from:u?.address||"",to:Z.to,data:Z.data,value:Z.value,chainId:w},W=l(a("txProcessing"),"bot");try{v(!1);const M=await n(le);if(M.status==="success"&&M.transactionHash){const U=g?.blockExplorers?.default?.url,_=U?`
|
|
468
|
-
[View on Explorer](${U}/tx/${M.transactionHash})`:`
|
|
469
|
-
Tx: ${M.transactionHash}`;D(W.id,a("txSubmitted")+_);try{await Xe(2e3),(await lo({transactionHash:M.transactionHash,chainId:w||1,rpcUrl:F})).status==="success"?D(W.id,a("txConfirmedSwap")+_):D(W.id,a("txRevertedSwap")+_)}catch(oe){console.warn("Transaction tracking timeout:",oe),D(W.id,a("txTimeout")+_)}}else if(M.status==="success")D(W.id,a("txSuccessfulSwap"));else{const U=M.error?`
|
|
470
|
-
Error: ${M.error}`:"";D(W.id,a("txFailed")+U)}}catch(M){console.error("Transaction error:",M),D(W.id,a("txFailed"))}}else l(a("txDataNotAvailable"),"bot");break;case"approve_for_swap":{const Z=H?.tokenAddress||"",le=H?.spenderAddress||"",W=H?.tokenSymbol||"token",M=H?.tx;if(!Z||!le||!n){l(a("approvalDataNotAvailable"),"bot");break}const U=H?.amountInWei||void 0,_=Tn({tokenAddress:Z,spenderAddress:le,fromAddress:u?.address||"",chainId:w,tokenSymbol:W,amount:U}),oe={from:_.from,to:_.to,data:_.data,value:_.value,chainId:_.chainId};l(r("approving",{symbol:W}),"bot");try{v(!1);const V=await n(oe);let A=V.status==="success";if(V.status==="success"&&V.transactionHash)try{A=(await lo({transactionHash:V.transactionHash,chainId:w||1,rpcUrl:F})).status==="success"}catch(P){console.warn("Approval tracking timeout:",P),A=!0}if(A){l(r("approvalSuccess",{symbol:W}),"bot");const P=[{id:"confirm-swap-after-approve",text:a("confirmSwapButton"),value:a("swapConfirmValue"),action:"confirm_swap",fullWidth:!0,extraData:{tx:M}}];l(a("approvalConfirmSwap"),"bot",void 0,P)}else{const P=V.error?`
|
|
471
|
-
Error: ${V.error}`:"";l(a("approvalFailed")+P,"bot")}}catch(V){console.error("Approval error:",V),l(a("approvalFailed"),"bot")}break}case"click_swap_dest_token":{const Z=H?.tokenAddress||"",le=H?.symbol||"",W=H?.decimals||18;ue({descTokenAddress:Z,descTokenDecimals:W});const M=X(),U=M.srcTokenAddress||"",_=U===We;try{const oe=await je({address:u?.address||"",chain:h});if(oe?.success&&oe?.data?.result){const V=oe.data.result;let A="",P="0";if(_){const de=V.find(ie=>ie.native_token);A=g?.nativeCurrency?.symbol||"ETH",P=de?.balance_formatted||"0"}else{const de=V.find(ie=>ie.token_address.toLowerCase()===U.toLowerCase());de&&(A=de.symbol,P=de.balance_formatted)}if(A&&parseFloat(P)>0){const de=[25,50,75,100],ie=M.srcTokenDecimals||18,ve=de.map(xe=>({id:`percent-${xe}`,text:`${xe}%`,value:r("buttonUsePercent",{percent:String(xe),symbol:A}),action:"select_percent",extraData:{percent:xe,tokenAddress:U,tokenSymbol:A,tokenDecimals:ie,tokenBalance:P}}));l(r("swapSelectAmount",{from:A,to:le,balance:P}),"bot",void 0,ve)}else l(a("swapNoSourceToken"),"bot")}else l(a("couldNotFetchBalance"),"bot")}catch(oe){console.error("Error in click_swap_dest_token:",oe),l(a("couldNotLoadBalance"),"bot")}break}case"select_nft_to_send":{const Z=H?.name||"NFT",le=H?.contractAddress||"",W=H?.tokenId||"",M=H?.tokenStandard||"ERC721",U=H?.amount||"1",_=H?.image||"",oe=H?.toAddress||"",V={contract_address:le,token_id:W,to_address:oe,token_standard:M,amount:"1",maxAmount:U,nft_name:Z};l(r("nftSendReview",{name:Z,standard:M,tokenId:W}),"bot",void 0,void 0,{action:"send_nft",parameters:V,status:"pending",nftInfo:{name:Z,image:_||void 0,tokenId:W,contractAddress:le,tokenStandard:M}});break}default:l(r("actionExecutedFor",{action:K,value:R}),"bot")}else await Xe(500),l(r("receivedButtonValue",{value:R}),"bot");v(!1),Ft.isDesktop&&Ee.current?.focus()}catch(Z){l(a("errorProcessingRequest"),"bot"),v(!1),console.error("Error handling button click:",Z)}},[u?.address,l,D,g?.blockExplorers?.default?.url,g?.nativeCurrency?.symbol,w,h,X,Se,q,n,ye,ue,F,a,r]),qe=te.useCallback(async()=>{try{v(!0);const R=g?.tokenTrendingDefault||[],[K,H]=await Promise.allSettled([tt.getTopGainers(E,"24h",5),tt.getTokensDetails(R,E)]);let Z=[];K.status==="fulfilled"&&K.value?.data?Z=[...K.value.data]:console.warn("⚠️ Top gainers failed:"),H.status==="fulfilled"&&H.value?.data?Z=[...H.value.data,...Z]:console.warn("⚠️ Default tokens failed:"),Z=Z.filter((M,U,_)=>U===_.findIndex(oe=>oe.address.toLowerCase()===M.address.toLowerCase()));const le=Z.map(M=>({id:M?.symbol,text:M?.symbol,value:r("buttonBuyToken",{name:M.name,symbol:M?.symbol||""}),action:"click_buy_item_token_button",extraData:{tokenAddress:M?.address||"",symbol:M?.symbol||"",decimals:M?.decimals||18}}));await Xe(1e3),v(!1),l(r("trendingTokensHeader",{chain:g?.name||"Unknown"}),"bot");const W=Z.map((M,U)=>`${U+1}. ${M.name} (${M?.auditGoplus?.token_symbol||M.symbol||"Unknown"})
|
|
472
|
-
$${re(M?.price||0).decimalPlaces(4).toFormat()} (${M.price_change_percentage_24h||M.priceChange}%)
|
|
473
|
-
|
|
474
|
-
---
|
|
475
|
-
`).join(`
|
|
476
|
-
`);l(`${W}${a("trendingTokensQuestion")}`,"bot",void 0,le)}catch(R){console.error("Error fetching trending tokens:",R),l(a("trendingTokensError"),"bot")}finally{v(!1)}},[l,g?.name,g?.tokenTrendingDefault,E,a,r]),Qe=te.useCallback(async(R={})=>{const{numberOfView:K=5}=R;try{v(!0);const H=await kn({address:u?.address||"",chain:h,limit:100,exclude_spam:!1});if(H?.success&&H?.data?.result&&H.data.result.length>0){const Z=H.data.result;let le=H.data.result;K&&K>0&&(le=le.slice(0,K));const W=le.map(U=>{const _=U.normalized_metadata?.name||U.name||`#${U.token_id}`,oe=U.normalized_metadata?.image||U.media?.original_media_url||"";return{id:`${U.token_address}-${U.token_id}`,text:`${_} (${U.symbol||U.contract_type}) - ${U.token_id}`,value:r("buttonSendNft",{name:_}),action:"select_nft_to_send",fullWidth:!0,extraData:{contractAddress:U.token_address,tokenId:U.token_id,tokenStandard:U.contract_type,name:_,symbol:U.symbol,amount:U.amount,image:oe}}}),M=le.map((U,_)=>{const oe=U.normalized_metadata?.name||U.name||`#${U.token_id}`,V=U.contract_type==="ERC1155"?` (x${U.amount})`:"",A=U.normalized_metadata?.image||U.media?.original_media_url||"",P=A?`
|
|
477
|
-
`:"🖼️ ";return`${_+1}. ${P}**${oe}**${V}
|
|
478
|
-
${U.symbol||U.contract_type} | Token ID: ${U.token_id}`}).join(`
|
|
479
|
-
|
|
480
|
-
`);await Xe(500),v(!1),l(`${r("nftCollectionHeader",{count:String(le.length),list:M})}${K&&K>0&&Z.length>K?r("nftMoreItems",{count:String(Z.length-K)}):""}${a("nftSelectBelow")}`,"bot",void 0,W),K&&K>0&&Z.length>K&&l(r("sendOtherNfts",{link:`https://nft.keyring.app/nft-list/${w}/${u?.address}`}),"bot")}else v(!1),l(a("nftNoCollection"),"bot")}catch(H){console.error("Error fetching NFTs:",H),v(!1),l(a("nftFetchError"),"bot")}},[u?.address,h,l,a,r]),ot=te.useCallback(async()=>{try{v(!0);const R=await je({address:u?.address||"",chain:h});if(R?.success&&R?.data?.result&&R.data.result.length>0){const K=R.data.result,H=K.flatMap(le=>[{id:`send-${le.token_address}`,text:r("buttonSendToken",{symbol:le.symbol}),value:r("buttonSendToken",{symbol:le.symbol}),action:"suggested_action",fullWidth:!!Ft.isMobile},{id:`buy-more-${le.token_address}`,text:r("buttonBuyMoreToken",{symbol:le.symbol}),value:r("buttonBuyMoreToken",{symbol:le.symbol}),action:"suggested_action",fullWidth:!!Ft.isMobile}]),Z=K.map((le,W)=>{const M=le.usd_value!==void 0?` ≈ $${re(le.usd_value).decimalPlaces(2).toFormat()}`:"";return`${W+1}. **${le.name}** (${le.symbol})
|
|
481
|
-
Balance: ${le.balance_formatted}${M}`}).join(`
|
|
482
|
-
|
|
483
|
-
`);await Xe(500),v(!1),l(r("viewBalancesHeader",{chain:g?.name||"this chain",list:Z}),"bot",void 0,H)}else v(!1),l(a("viewBalancesEmpty"),"bot")}catch(R){console.error("Error fetching balances:",R),v(!1),l(a("viewBalancesFetchError"),"bot")}},[u?.address,h,l,g?.name,a,r]),Ve=te.useMemo(()=>[{id:"ask",icon:"❓",text:a("suggestionAskText"),action:async()=>{y(!1),v(!0),l(a("suggestionAskUserMessage"),"user"),await Xe(1e3),v(!1),l(a("suggestionAskBotReply"),"bot")}},{id:"buy",icon:"💰",text:a("suggestionBuyText"),action:async()=>{y(!1),l(a("suggestionBuyText"),"user"),Re(u?.address||"")&&I?await qe():(v(!0),await Xe(1e3),Re(u?.address||"")&&!I?l(a("walletConnectedChainUnsupported"),"bot"):l(a("walletNotConnected"),"bot"),v(!1))}}],[l,u?.address,qe,a,I]),st=R=>{if(R===0)return!0;const K=i[R],H=i[R-1],Z=new Date(K.timestamp),le=new Date(H.timestamp);return Z.setHours(0,0,0,0),le.setHours(0,0,0,0),Z.getTime()!==le.getTime()};te.useEffect(()=>{he.current?.scrollIntoView({behavior:"smooth"})},[i]),te.useEffect(()=>{e?(Ee.current&&Ft.isDesktop&&Ee.current.focus(),he.current?.scrollIntoView({behavior:"instant"}),p.current&&d.current?Date.now()-d.current>5e3&&y(!0):y(!0),d.current=null,p.current=!1,setTimeout(()=>{he.current?.scrollIntoView({behavior:"smooth"})},50)):(d.current=Date.now(),p.current=!C.current)},[e]),te.useEffect(()=>{const R=K=>{K.key==="Escape"&&e&&t()};return document.addEventListener("keydown",R),()=>document.removeEventListener("keydown",R)},[e,t]);const Be=te.useCallback(async()=>{if(x?.trim()===""||S)return;const R=J,K=l(x?.trim(),"user",J?.id);B(""),Q(null),v(!0),y(!1),v(!0);try{let H,Z;const le=i.slice(-20);let W="";if(le.length>0){W=`
|
|
484
|
-
|
|
485
|
-
## CONVERSATION HISTORY:
|
|
486
|
-
`;for(const oe of le)if(oe.sender==="user")W+=`User: ${oe.text}
|
|
487
|
-
`;else{const V=oe.text.length>400?oe.text.substring(0,400)+"...":oe.text;W+=`Assistant: ${V}
|
|
488
|
-
`}W+=`
|
|
489
|
-
---
|
|
490
|
-
`}let M=x?.trim();R&&(M=`[Replying to ${R.sender==="user"?"my previous":"your"} message: "${R.text}"]
|
|
491
|
-
|
|
492
|
-
${M}`);try{if((await xs.checkTypeQuestion(M,W))?.startsWith("no")){const V=await xs.generateContent(M,W);let A=null;try{let P=V?.trim();P.startsWith("```json")?P=P.replace(/^```json\s*/,"").replace(/\s*```$/,""):P.startsWith("```")&&(P=P.replace(/^```\s*/,"").replace(/\s*```$/,"")),A=JSON.parse(P)}catch{A=null}v(!1),l(A?.message||V,"bot");return}}catch(oe){console.warn("Error checking question type with Gemini:",oe)}if(u?.address&&I)try{const[oe,V]=await Promise.allSettled([je({address:u.address,chain:h}),kn({address:u.address,chain:h,limit:100,exclude_spam:!0})]);oe.status==="fulfilled"&&oe.value?.success&&oe.value?.data?.result&&(H=oe.value.data.result.map(A=>({symbol:A.symbol,name:A.name,balance_formatted:A.balance_formatted,usd_value:A.usd_value,native_token:A.native_token,token_address:A.token_address}))),V.status==="fulfilled"&&V.value?.success&&V.value?.data?.result&&(Z=V.value.data.result.map(A=>({name:A.normalized_metadata?.name||A.name||`#${A.token_id}`,token_address:A.token_address,token_id:A.token_id,contract_type:A.contract_type||"",amount:A.amount||"1"})))}catch{}const U=zi({walletAddress:u?.address||void 0,chainName:g?.name||void 0,chainId:w||void 0,nativeSymbol:g?.nativeCurrency?.symbol||void 0,walletTokens:H,walletNfts:Z}),_=await Pi({prompt:M,model:"gpt-4.1-mini",stream:!1,systemPrompt:U+W});if(_.success&&_.data){const oe=_.data.text||"";let V=null;try{let A=oe?.trim();A.startsWith("```json")?A=A.replace(/^```json\s*/,"").replace(/\s*```$/,""):A.startsWith("```")&&(A=A.replace(/^```\s*/,"").replace(/\s*```$/,"")),V=JSON.parse(A)}catch{V=null}if(V&&V.action&&V.action!=="chat")if(V.action==="buy_token"){const A=V.parameters?.token_symbol||"";let P=V.parameters?.contract_address||"",de=18;if(P.toLowerCase()==="native"&&(P=We),P&&P!==We)try{const ie=await tt.getTokensDetails([P],E);ie?.data?.[0]&&(de=ie.data[0].decimals||18)}catch(ie){console.warn("getTokensDetails for buy_token failed:",ie)}if(!P&&A&&u?.address)try{const ie=await je({address:u.address,chain:h});if(ie?.success&&ie?.data?.result){const ve=ie.data.result,xe=ve.find(ae=>ae.token_address.toLowerCase()===P.toLowerCase())||ve.find(ae=>ae.symbol.toUpperCase()===A.toUpperCase());xe&&(P=xe.token_address,de=xe.decimals)}if(!P){const ve=g.tokenTrendingDefault||[],[xe,ae]=await Promise.allSettled([tt.getTopGainers(E,"24h",10),tt.getTokensDetails(ve,E)]),j=[];xe.status==="fulfilled"&&xe.value?.data&&j.push(...xe.value.data),ae.status==="fulfilled"&&ae.value?.data&&j.push(...ae.value.data);const ee=j.find(G=>G.address?.toLowerCase()===P.toLowerCase())||j.find(G=>G.symbol?.toUpperCase()===A.toUpperCase());ee&&(P=ee.address,de=ee.decimals||18)}}catch(ie){console.warn("Token lookup for buy failed:",ie)}P?(l(V.message||r("buyTokenHelp",{symbol:A}),"bot",K.id),await Se(P,de)):(l(V.message||r("tokenNotFoundOnChain",{symbol:A}),"bot",K.id),await qe())}else if(V.action==="swap_token"){const A={...V.parameters||{}},P=A.token_in==="native"||A.token_in_symbol?.toUpperCase()===g?.nativeCurrency?.symbol?.toUpperCase(),de=A.token_out==="native"||A.token_out_symbol?.toUpperCase()===g?.nativeCurrency?.symbol?.toUpperCase();if(de&&(A.token_out=We),!P&&(A.token_in||A.token_in_symbol)&&u?.address)try{const ae=await je({address:u.address,chain:h});if(ae?.success&&ae?.data?.result){const j=ae.data.result,ee=A.token_in?j.find(G=>G.token_address.toLowerCase()===A.token_in.toLowerCase()):j.find(G=>G.symbol.toUpperCase()===A.token_in_symbol.toUpperCase());ee&&(A.token_in=ee.token_address,A.token_in_decimals=String(ee.decimals))}}catch(ae){console.warn("Resolve token_in failed:",ae)}if(!de&&(A.token_out||A.token_out_symbol)&&u?.address)try{const ae=await je({address:u.address,chain:h});if(ae?.success&&ae?.data?.result){const j=ae.data.result,ee=A.token_out?j.find(G=>G.token_address.toLowerCase()===A.token_out.toLowerCase()):j.find(G=>G.symbol.toUpperCase()===A.token_out_symbol.toUpperCase());ee&&(A.token_out=ee.token_address,A.token_out_decimals=String(ee.decimals))}}catch(ae){console.warn("Resolve token_out failed:",ae)}const ie=!!(A.token_in||P),ve=!!A.token_out,xe=!!A.amount;if(ie&&ve&&xe){l(V.message||a("swapPreparing"),"bot",K.id);try{const ae=[];A.token_out&&ae.push(A.token_out),A.token_in&&!P&&ae.push(A.token_in);let j=18,ee=18;if(ae.length>0)try{const ce=await tt.getTokensDetails(ae,E);if(ce?.data)for(const Te of ce.data)!P&&Te.address.toLowerCase()===A.token_in?.toLowerCase()&&(j=Te.decimals||18),Te.address.toLowerCase()===A.token_out?.toLowerCase()&&(ee=Te.decimals||18)}catch(ce){console.warn("getTokensDetails failed, using default decimals:",ce)}if(u?.address)try{const ce=await je({address:u.address,chain:h});if(ce?.success&&ce?.data?.result){const Te=ce.data.result;if(P){const Fe=Te.find(Ge=>Ge.native_token);let Ie=Fe?.balance_formatted||"0";try{const Ge=await fo({chainId:w,rpcUrl:F});if(Ge.isGreaterThan(0)){const dt=Ge.times(1e6),Pt=new re(Fe?.balance||"0").minus(dt);Pt.isGreaterThan(0)?Ie=re(Le(BigInt(Pt.toFixed(0)),Fe?.decimals||18)).toFixed():Ie="0"}}catch(Ge){console.warn("getGasPrice for swap native fee deduction failed:",Ge)}A.amount=mo(A.amount,Ie);const De=parseFloat(Ie),_e=parseFloat(A.amount);if(re(De).lte(0)){l(r("formInsufficientBalance",{balance:re(De).decimalPlaces(6).toFixed(),symbol:g?.nativeCurrency?.symbol||"native"}),"bot"),v(!1);return}if(re(De).lt(_e)){l(r("swapInsufficientNativeBalance",{balance:re(De).decimalPlaces(6).toFixed(),symbol:g?.nativeCurrency?.symbol||"native",amount:A.amount}),"bot"),v(!1);return}}else{const Fe=Te.find(_e=>_e.token_address.toLowerCase()===A.token_in?.toLowerCase());if(!Fe){l(r("swapTokenNotInWallet",{symbol:A.token_in_symbol||A.token_in}),"bot"),v(!1);return}A.amount=mo(A.amount,Fe.balance_formatted||"0");const Ie=parseFloat(Fe.balance_formatted||"0"),De=parseFloat(A.amount);if(re(Ie).lt(De)){l(r("swapInsufficientTokenBalance",{balance:re(Ie).decimalPlaces(6).toFixed(),symbol:Fe.symbol,amount:A.amount}),"bot"),v(!1);return}}}}catch(ce){console.warn("Balance check failed:",ce)}const G=P?We:A.token_in;ue({srcTokenAddress:G,descTokenAddress:A.token_out,amount:A.amount,srcTokenDecimals:j,descTokenDecimals:ee});const $=mt(A.amount,j).toString(),fe=await io({chainId:w,tokenIn:G,tokenInAmount:$,tokenOut:A.token_out,tokenOutRecipient:u?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(fe.success&&fe.data){const ce=fe.data,Te=ce.tokenIn,Fe=ce.tokenOut,Ie=re(Le(BigInt(Te.amount||0),Te.decimals)).decimalPlaces(6).toFormat(),De=re(Le(BigInt(Fe.amount||0),Fe.decimals)).decimalPlaces(6).toFormat();let _e=!1;if(!P&&u?.address&&ce.tx?.to)try{const Ue=await uo({tokenAddress:G,ownerAddress:u.address,spenderAddress:ce.tx.to,chainId:w,rpcUrl:F});_e=re(Ue.toString()).isLessThan($)}catch(Ue){console.warn("Allowance check failed (CASE 1):",Ue),_e=!0}const Ge=ce.estimatedTransactionFee?.total?re(ce.estimatedTransactionFee.total):re(0);let dt=re(0);if(_e&&u?.address)try{const Ue=Tn({tokenAddress:G,spenderAddress:ce.tx?.to||"",fromAddress:u.address,chainId:w,amount:$});dt=await on({from:u.address,to:Ue.to,data:Ue.data,chainId:w,rpcUrl:F})}catch(Ue){console.warn("Approve fee estimation failed:",Ue)}const Ye=Ge.plus(dt),Pt=g?.nativeCurrency?.symbol||"native";let an="",rn=!1;if(u?.address&&Ye.isGreaterThan(0))try{const Ue=await Cn({address:u.address,chainId:w,rpcUrl:F});if(Ue.isLessThan(Ye)){rn=!0;const En=re(Le(BigInt(Ue.toFixed(0)),18)).decimalPlaces(6).toFormat(),Sn=re(Le(BigInt(Ye.toFixed(0)),18)).decimalPlaces(6).toFormat();an=r("swapFeeWarning",{symbol:Pt,balance:En,needed:Sn})}}catch(Ue){console.warn("Fee balance check failed:",Ue)}const Jt=`From: ${Ie} ${Te.symbol}
|
|
493
|
-
⬇️
|
|
494
|
-
To: ${De} ${Fe.symbol}
|
|
495
|
-
|
|
496
|
-
`+an+`
|
|
497
|
-
`;if(rn)l(Jt,"bot");else if(_e){const Ue=[{id:"approve-for-swap",text:r("swapApproveButton",{symbol:Te.symbol}),value:r("swapApproveValue",{symbol:Te.symbol}),action:"approve_for_swap",fullWidth:!0,extraData:{tokenAddress:G,spenderAddress:ce.tx.to,tokenSymbol:Te.symbol,amountInWei:$,tx:ce.tx}}];l(Jt+r("swapNeedApprove",{symbol:Te.symbol}),"bot",void 0,Ue)}else{const Ue=[{id:"confirm-swap",text:a("swapConfirmYes"),value:a("swapConfirmValue"),action:"confirm_swap",extraData:{tx:ce.tx}}];l(Jt+a("swapReadyToProceed"),"bot",void 0,Ue)}}else l(r("swapEstimationError",{error:fe.errorMessage||fe.error||"Unknown error"}),"bot")}catch(ae){console.error("Swap estimation error:",ae),l(a("swapEstimationFailed"),"bot")}}else if(ie&&ve&&!xe){let ae=P?18:parseInt(A.token_in_decimals||"18",10),j=parseInt(A.token_out_decimals||"18",10);const ee=[];if(A.token_out&&ee.push(A.token_out),A.token_in&&!P&&ee.push(A.token_in),ee.length>0)try{const G=await tt.getTokensDetails(ee,E);if(G?.data)for(const $ of G.data)!P&&$.address.toLowerCase()===A.token_in?.toLowerCase()&&(ae=$.decimals||ae),$.address.toLowerCase()===A.token_out?.toLowerCase()&&(j=$.decimals||j)}catch(G){console.warn("getTokensDetails failed in CASE 2, using fallback decimals:",G)}if(ue({descTokenAddress:A.token_out,descTokenDecimals:j}),P)try{const G=await je({address:u?.address||"",chain:h});if(G?.success&&G?.data?.result){const fe=G.data.result.find(De=>De.native_token),ce=g?.nativeCurrency?.symbol||"ETH";let Te=fe?.balance_formatted||"0";try{const De=await fo({chainId:w,rpcUrl:F});if(De.isGreaterThan(0)){const _e=De.times(1e6),dt=new re(fe?.balance||"0").minus(_e);dt.isGreaterThan(0)?Te=re(Le(BigInt(dt.toFixed(0)),fe?.decimals||18)).toFixed():Te="0"}}catch(De){console.warn("getGasPrice for swap native fee deduction (CASE 2) failed:",De)}ue({srcTokenAddress:We,srcTokenDecimals:ae});const Ie=[25,50,75,100].map(De=>({id:`percent-${De}`,text:`${De}%`,value:r("buttonUsePercent",{percent:String(De),symbol:ce}),action:"select_percent",extraData:{percent:De,tokenAddress:We,tokenSymbol:ce,tokenDecimals:ae,tokenBalance:Te}}));l(r("selectAmountToSwap",{symbol:ce,balance:Te}),"bot",K.id,Ie)}else l(a("couldNotFetchBalance"),"bot")}catch(G){console.warn("Native balance fetch failed:",G),l(a("couldNotFetchBalanceRetry"),"bot")}else{const G=A.token_in_symbol||"Token";ue({srcTokenAddress:A.token_in,srcTokenDecimals:ae});try{const $=await je({address:u?.address||"",chain:h});if($?.success&&$?.data?.result){const ce=$.data.result.find(Ie=>Ie.token_address.toLowerCase()===A.token_in?.toLowerCase());if(!ce){l(r("swapTokenNotInWallet",{symbol:G}),"bot"),v(!1);return}const Fe=[25,50,75,100].map(Ie=>({id:`percent-${Ie}`,text:`${Ie}%`,value:r("buttonUsePercent",{percent:String(Ie),symbol:ce.symbol}),action:"select_percent",extraData:{percent:Ie,tokenAddress:ce.token_address,tokenSymbol:ce.symbol,tokenDecimals:ce.decimals||18,tokenBalance:ce.balance_formatted}}));l(r("selectAmountToSwap",{symbol:ce.symbol,balance:`${ce.balance_formatted} (~$${ce.usd_value?.toFixed(2)||"0"})`}),"bot",K.id,Fe)}else l(a("couldNotFetchBalance"),"bot")}catch($){console.warn("Token balance fetch failed:",$),l(a("couldNotFetchBalanceRetry"),"bot")}}}else if(!ie&&ve){l(V.message||a("swapChooseFrom"),"bot",K.id);let ae=parseInt(A.token_out_decimals||"18",10);if(A.token_out)try{const j=await tt.getTokensDetails([A.token_out],E);j?.data?.[0]&&(ae=j.data[0].decimals||ae)}catch(j){console.warn("getTokensDetails failed in CASE 3, using fallback:",j)}await Se(A.token_out,ae)}else if(ie&&!ve){let ae=P?18:parseInt(A.token_in_decimals||"18",10);if(A.token_in&&!P)try{const j=await tt.getTokensDetails([A.token_in],E);j?.data?.[0]&&(ae=j.data[0].decimals||ae)}catch(j){console.warn("getTokensDetails failed in CASE 4, using fallback:",j)}ue(P?{srcTokenAddress:We,srcTokenDecimals:18}:{srcTokenAddress:A.token_in,srcTokenDecimals:ae}),l(V.message||r("swapChooseTo",{symbol:A.token_in_symbol||"your token"}),"bot",K.id);try{v(!0);const j=g?.tokenTrendingDefault||[],[ee,G]=await Promise.allSettled([tt.getTopGainers(E,"24h",5),tt.getTokensDetails(j,E)]);let $=[];ee.status==="fulfilled"&&ee.value?.data&&($=[...ee.value.data]),G.status==="fulfilled"&&G.value?.data&&($=[...G.value.data,...$]),$=$.filter((ce,Te,Fe)=>Te===Fe.findIndex(Ie=>Ie.address.toLowerCase()===ce.address.toLowerCase()));const fe=$.map(ce=>({id:ce?.symbol,text:ce?.symbol,value:r("buttonSwapTo",{name:ce.name,symbol:ce?.symbol||""}),action:"click_swap_dest_token",extraData:{tokenAddress:ce?.address||"",symbol:ce?.symbol||"",decimals:ce?.decimals||18}}));l(r("trendingTokensForReceive",{chain:g?.name||"Unknown"}),"bot",void 0,fe)}catch(j){console.error("Error fetching trending tokens for swap:",j),l(a("couldNotLoadTokenList"),"bot")}finally{v(!1)}}else if(l(V.message||a("swapChooseToken"),"bot",K.id),u?.address)try{v(!0);const ae=await je({address:u.address,chain:h});if(ae?.success&&ae?.data?.result&&ae.data.result.length>0){const ee=ae.data.result.map(G=>({id:`swap-select-${G.token_address}`,text:`${G.name}: ${G.balance_formatted} ${G.symbol} ($${re(G?.usd_value||0).decimalPlaces(2).toFixed()||"0"})`,value:`Swap ${G.symbol}`,action:"suggested_action",fullWidth:!0}));await Xe(500),v(!1),l(r("walletBalanceSpendable",{chain:g?.name||"this chain"}),"bot",void 0,ee)}else v(!1),l(r("walletNoTokensFound",{chain:g?.name||"this chain"}),"bot")}catch(ae){console.warn("Failed to fetch balance for swap picker:",ae),v(!1),l(a("walletFetchError"),"bot")}}else if(V.action==="view_balances")l(V.message||a("viewBalancesLoading"),"bot",K.id),await ot();else if(V.action==="view_nfts")l(V.message||a("viewNftsLoading"),"bot",K.id),await Qe();else if(V.action==="send_token"&&!V.parameters?.contract_address&&!V.parameters?.token_symbol&&u?.address)try{const A=await je({address:u.address,chain:h});if(A?.success&&A?.data?.result&&A.data.result.length>0){l(a("sendTokenChoose"),"bot",K.id),v(!0),await Xe(500);const de=A.data.result.map(ie=>({id:`send-select-${ie.token_address}`,text:`${ie.name}: ${ie.balance_formatted} ${ie.symbol} ($${re(ie?.usd_value||0).decimalPlaces(2).toFixed()||"0"})`,value:`Send ${ie.name} (${ie.symbol})`,action:"suggested_action",fullWidth:!0}));await Xe(500),v(!1),l(r("walletBalanceSpendable",{chain:g?.name||"this chain"}),"bot",void 0,de)}else v(!1),l(r("walletNoTokensFound",{chain:g?.name||"this chain"}),"bot")}catch(A){console.warn("Failed to fetch balance for send_token picker:",A),v(!1),l(a("walletFetchError"),"bot")}else if(V.action==="send_nft"&&!V.parameters?.contract_address&&!V.parameters?.token_id&&!V.parameters?.nft_name&&u?.address)l(a("sendNftChoose"),"bot",K.id),await Qe({numberOfView:5});else if(V.action==="send_nft"&&!Re(V.parameters?.contract_address||"")&&(V.parameters?.nft_name||V.parameters?.token_id)&&u?.address)try{v(!0);const A=await kn({address:u.address,chain:h,limit:100,exclude_spam:!1});if(A?.success&&A?.data?.result){const P=A.data.result,de=(V.parameters?.nft_name||"").toLowerCase(),ie=V.parameters?.token_id||"",ve=ee=>{const G=(ee.normalized_metadata?.name||ee.name||"").toLowerCase(),$=(ee.name||"").toLowerCase(),fe=de&&(G.includes(de)||$.includes(de)),ce=ie&&ee.token_id===ie;return de&&ie?fe&&ce:de?fe:ce},xe=!de&&!!ie,ae=xe?P.filter(ve):[],j=xe?ae.length===1?ae[0]:null:P.find(ve);if(xe&&ae.length>1){const ee=ae.map($=>{const fe=$.normalized_metadata?.name||$.name||`#${$.token_id}`,ce=$.normalized_metadata?.image||$.media?.original_media_url||"";return{id:`${$.token_address}-${$.token_id}`,text:`${fe} (${$.symbol||$.contract_type}) #${$.token_id}`,value:r("buttonSendNft",{name:fe}),action:"select_nft_to_send",fullWidth:!0,extraData:{contractAddress:$.token_address,tokenId:$.token_id,tokenStandard:$.contract_type,name:fe,symbol:$.symbol,amount:$.amount,image:ce,toAddress:V.parameters?.to_address||""}}}),G=ae.map(($,fe)=>{const ce=$.normalized_metadata?.name||$.name||`#${$.token_id}`,Te=$.normalized_metadata?.image||$.media?.original_media_url||"",Fe=Te?`
|
|
498
|
-
`:"🖼️ ";return`${fe+1}. ${Fe}**${ce}**
|
|
499
|
-
${$.symbol||$.contract_type} | Token ID: ${$.token_id}`}).join(`
|
|
500
|
-
|
|
501
|
-
`);v(!1),l(r("nftMultipleMatchesForTokenId",{count:String(ae.length),tokenId:ie})+`
|
|
502
|
-
|
|
503
|
-
`+G,"bot",K.id,ee)}else if(j){const ee=j.normalized_metadata?.name||j.name||`#${j.token_id}`,G=j.normalized_metadata?.image||j.media?.original_media_url||"",$={contract_address:j.token_address,token_id:j.token_id,to_address:V.parameters?.to_address||"",token_standard:j.contract_type||"",amount:"1",maxAmount:j.amount||"1",nft_name:ee};l(V.message||r("nftSendReview",{name:ee,standard:j.contract_type||"NFT",tokenId:j.token_id}),"bot",K.id,void 0,{action:"send_nft",parameters:$,status:"pending",nftInfo:{name:ee,image:G||void 0,tokenId:j.token_id,contractAddress:j.token_address,tokenStandard:j.contract_type||void 0}})}else l(V.message||r("nftNotFoundInWallet",{name:de||ie}),"bot",K.id),await Qe()}else l(a("nftNoCollection"),"bot",K.id)}catch(A){console.error("NFT lookup by name failed:",A),l(a("nftFetchError"),"bot",K.id)}finally{v(!1)}else{const A=ec(V.action);let P={...V.parameters||{}},de,ie;const ve=["send_token","approve_token"].includes(V.action)&&(P.contract_address||P.token_symbol),xe=V.action==="send_native",ae=V.action==="send_nft"&&P.contract_address;if(ve&&u?.address)try{const j=await je({address:u.address,chain:h});if(j?.success&&j?.data?.result){const ee=j.data.result,G=P.contract_address?ee.find($=>$.token_address.toLowerCase()===P.contract_address.toLowerCase()):ee.find($=>$.symbol.toUpperCase()===P.token_symbol.toUpperCase());G&&(P={...P,contract_address:G.token_address,decimals:String(G.decimals)},de={symbol:G.symbol,name:G.name,balance:G.balance,balanceFormatted:G.balance_formatted,usdValue:G.usd_value,usdPrice:G.usd_price,decimals:G.decimals,logo:G.logo||G.thumbnail,contractAddress:G.token_address})}}catch(j){console.warn("Token enrichment failed:",j)}if(ve&&!de&&P.contract_address)try{const j=await vs({address:P.contract_address,chain:h});if(j?.success&&j?.data){const ee=j.data;de={symbol:ee.symbol,name:ee.name,balance:"0",balanceFormatted:"0",usdPrice:ee.usd_price,decimals:ee.decimals,logo:ee.logo,contractAddress:P.contract_address},P={...P,decimals:String(ee.decimals)}}}catch(j){console.warn("Token metadata fallback failed:",j)}if(xe&&u?.address)try{const j=await je({address:u.address,chain:h});if(j?.success&&j?.data?.result){const G=j.data.result.find($=>$.native_token);if(G){let $=G.balance_formatted,fe=G.balance;try{const ce=new re(G.balance),Te="0x"+BigInt(ce.toFixed(0)).toString(16),Fe=await on({from:u.address,to:u.address,data:"0x",value:Te,chainId:w,rpcUrl:F});if(Fe.isGreaterThan(0)){const Ie=ce.minus(Fe);Ie.isGreaterThan(0)?(fe=Ie.toFixed(0),$=re(Le(BigInt(Ie.toFixed(0)),G.decimals)).toFixed()):(fe="0",$="0")}}catch(ce){console.warn("Estimate send fee for send_native failed:",ce)}de={symbol:G.symbol,name:G.name,balance:fe,balanceFormatted:$,usdValue:G.usd_value,usdPrice:G.usd_price,decimals:G.decimals,logo:G.logo||G.thumbnail,contractAddress:We}}else{const $=await vs({address:We,chain:h});if($?.success&&$?.data){const fe=$.data;de={symbol:fe.symbol,name:fe.name,balance:"0",balanceFormatted:"0",usdValue:0,usdPrice:fe.usd_price,decimals:fe.decimals,logo:fe.logo||fe.thumbnail,contractAddress:We}}}}}catch(j){console.warn("Native token balance fetch failed:",j)}if(ae){try{const j=await Oi({address:P.contract_address,chain:h});if(j?.success&&j?.data){const ee=j.data;ee.contract_type&&(P={...P,token_standard:ee.contract_type}),!P.nft_name&&ee.name&&(P={...P,nft_name:ee.name})}}catch(j){console.warn("NFT contract metadata fetch failed:",j)}if(u?.address)try{const j=await kn({address:u.address,chain:h,limit:100,exclude_spam:!1});if(j?.success&&j?.data?.result){const ee=j.data.result.find(G=>G.token_address.toLowerCase()===P.contract_address.toLowerCase()&&G.token_id===P.token_id);if(ee){P={...P,amount:"1",maxAmount:ee.amount||"1"};const G=ee.normalized_metadata?.image||ee.media?.original_media_url||"";ie={name:ee.normalized_metadata?.name||ee.name||P.nft_name||`#${ee.token_id}`,image:G||void 0,tokenId:ee.token_id,contractAddress:ee.token_address,tokenStandard:ee.contract_type||P.token_standard||void 0}}}}catch(j){console.warn("NFT ownership lookup failed:",j)}}if(P.amount&&de?.balanceFormatted&&(V.action==="send_token"||V.action==="send_native")&&(P.amount=mo(P.amount,de.balanceFormatted)),A){const j=V.message||"Please review and complete the form below.";l(j,"bot",K.id,void 0,{action:V.action,parameters:P,status:"pending",tokenInfo:de,nftInfo:ie})}else l(V.message||oe,"bot",K.id)}else if(V&&V.action==="chat"){const A=V.token_mentions||[],P=V.suggested_actions||[],de=[];A.length>0&&A.forEach(ie=>{de.push({id:`buy-${ie.symbol}`,text:`💰 Buy ${ie.symbol}`,value:r("buttonBuySymbol",{symbol:ie.symbol}),action:"click_buy_item_token_button",extraData:{tokenAddress:ie.contract_address||"",symbol:ie.symbol,decimals:ie.decimals||18},fullWidth:!0})}),P.length>0&&P.forEach((ie,ve)=>{de.push({id:`suggested-${ve}-${ie.label}`,text:ie.label,value:ie.prompt,action:"suggested_action",fullWidth:!0})}),de.length>0?l(V.message||oe,"bot",K.id,de):l(V.message||oe,"bot",K.id)}else l(oe,"bot",K.id)}else l(a("errorProcessingRequest"),"bot",K.id)}catch(H){console.error("Error getting AI response:",H),l(a("errorProcessingRequest"),"bot",K.id)}v(!1),await Xe(50),Ft.isDesktop&&Ee.current?.focus()},[x,S,i,l,J,u?.address,g?.name,g?.nativeCurrency?.symbol,g?.tokenTrendingDefault,w,E,h,I,Se,qe,Qe,ot,ue,F,a,r]);te.useEffect(()=>{c.current&&x===c.current&&(c.current=null,Be())},[x,Be]);const Oe=te.useCallback(async(R,K,H)=>{try{if(y(!1),b(H,"submitted"),R==="swap_token"){let Z=18;if(K.token_in&&K.token_in!==We)try{const M=await tt.getTokensDetails([K.token_in],E);M?.data?.[0]&&(Z=M.data[0].decimals||18)}catch(M){console.warn("getTokensDetails failed in ActionForm swap, using default 18:",M)}const le=mt(K.amount||"0",Z).toString(),W=await io({chainId:w,tokenIn:K.token_in||"",tokenInAmount:le,tokenOut:K.token_out||"",tokenOutRecipient:u?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(W.success&&W.data){const M=W.data,U=M.tokenIn,_=M.tokenOut,oe=re(Le(BigInt(U.amount||0),U.decimals)).decimalPlaces(6).toFormat(),V=re(Le(BigInt(_.amount||0),_.decimals)).decimalPlaces(6).toFormat(),A=!K.token_in||K.token_in===We;let P=!1;if(!A&&u?.address&&M.tx?.to)try{const G=await uo({tokenAddress:K.token_in,ownerAddress:u.address,spenderAddress:M.tx.to,chainId:w,rpcUrl:F});P=re(G.toString()).isLessThan(le)}catch(G){console.warn("Allowance check failed in ActionForm swap:",G)}const de=M.estimatedTransactionFee?.total?re(M.estimatedTransactionFee.total):re(0);let ie=re(0);if(P&&u?.address)try{const G=Tn({tokenAddress:K.token_in,spenderAddress:M.tx?.to||"",fromAddress:u.address,chainId:w,amount:le});ie=await on({from:u.address,to:G.to,data:G.data,chainId:w,rpcUrl:F})}catch(G){console.warn("Approve fee estimation failed:",G)}const ve=de.plus(ie),xe=g?.nativeCurrency?.symbol||"native";let ae="",j=!1;if(u?.address&&ve.isGreaterThan(0))try{const G=await Cn({address:u.address,chainId:w,rpcUrl:F});if(G.isLessThan(ve)){j=!0;const $=re(Le(BigInt(G.toFixed(0)),18)).decimalPlaces(6).toFormat(),fe=re(Le(BigInt(ve.toFixed(0)),18)).decimalPlaces(6).toFormat();ae=r("swapFeeWarning",{symbol:xe,balance:$,needed:fe})}}catch(G){console.warn("Fee balance check failed:",G)}const ee=`From: ${oe} ${U.symbol}
|
|
504
|
-
⬇️
|
|
505
|
-
To: ${V} ${_.symbol}
|
|
506
|
-
|
|
507
|
-
`+ae+`
|
|
508
|
-
`;if(j)b(H,"pending"),l(ee,"bot");else if(P){const G=[{id:"approve-swap-actionform",text:r("swapApproveButton",{symbol:U.symbol}),value:r("swapApproveValue",{symbol:U.symbol}),action:"approve_for_swap",extraData:{tokenAddress:K.token_in,spenderAddress:M.tx.to,tokenSymbol:U.symbol,amountInWei:le,tx:M.tx},fullWidth:!0}];b(H,"success"),l(ee+r("swapApprovalRequired",{symbol:U.symbol}),"bot",void 0,G)}else{const G=[{id:"confirm-swap-actionform",text:a("swapConfirmYes"),value:a("swapConfirmValue"),action:"confirm_swap",extraData:{tx:M.tx}}];b(H,"success"),l(ee+a("swapReadyToProceed"),"bot",void 0,G)}}else b(H,"pending"),l(r("swapEstimationError",{error:W.errorMessage||W.error||"Unknown error"}),"bot")}else{const Z=Qi({action:R,parameters:K,fromAddress:u?.address||"",chainId:w||1}),le={from:Z.from,to:Z.to,data:Z.data,value:Z.value,chainId:Z.chainId};if((R==="send_token"||R==="send_native"||R==="send_nft")&&u?.address)try{const M=g?.nativeCurrency?.symbol||"native",U=await on({from:Z.from,to:Z.to,data:Z.data,value:Z.value&&Z.value!=="0"?`0x${BigInt(Z.value).toString(16)}`:void 0,chainId:w,rpcUrl:F});if(U.isGreaterThan(0)){const _=await Cn({address:u.address,chainId:w,rpcUrl:F});if(_.isLessThan(U)){const oe=re(Le(BigInt(_.toFixed(0)),18)).decimalPlaces(6).toFormat(),V=re(Le(BigInt(U.toFixed(0)),18)).decimalPlaces(6).toFormat();b(H,"pending"),l(r("txInsufficientGas",{symbol:M,balance:oe,fee:V}),"bot");return}}}catch(M){console.warn("Pre-execution fee check failed:",M)}const W=z(H);if(n){v(!1);const M=await n(le);if(M.status==="success"&&M.transactionHash){const U=g?.blockExplorers?.default?.url,_=U?`
|
|
509
|
-
[View on Explorer](${U}/tx/${M.transactionHash})`:`
|
|
510
|
-
Tx: ${M.transactionHash}`;try{await Xe(2e3),(await lo({transactionHash:M.transactionHash,chainId:w||1,rpcUrl:F})).status==="success"?(b(H,"success"),D(H,W?.text+`
|
|
511
|
-
`+_)):(b(H,"pending"),l(a("txReverted")+`
|
|
512
|
-
`+_,"bot"))}catch(oe){console.warn("Transaction tracking timeout:",oe),b(H,"success"),l(a("txTimeout")+`
|
|
513
|
-
`+_,"bot")}}else if(M.status==="success")b(H,"success");else{b(H,"pending");const U=M.error?`
|
|
514
|
-
Error: ${M.error}`:"";l(a("txFailed")+U,"bot")}}else b(H,"pending"),l(a("txNoHandler"),"bot")}}catch(Z){console.error("Action form submit error:",Z),b(H,"pending"),l(r("txError",{message:Z instanceof Error?Z.message:"Unknown error"}),"bot")}},[b,w,u?.address,E,g?.nativeCurrency?.symbol,g?.blockExplorers?.default?.url,F,r,l,a,z,n,D]),ke=te.useCallback(R=>{k([R])},[k]),[Gt,gt]=te.useState({}),lt=te.useCallback(async(R,K,H)=>{gt(Z=>({...Z,[H]:!0}));try{await Oe(R,K,H)}finally{gt(Z=>({...Z,[H]:!1}))}},[Oe]),at=te.useCallback(R=>{R.key==="Enter"&&!R.shiftKey&&(R.preventDefault(),Be())},[Be]),Yt=te.useCallback(()=>{const R=window.getSelection();R&&R.toString().length>0||t()},[t]);return e?O.jsx("div",{className:`chat-modal-overlay${s==="bottom-left"?" chat-modal-overlay--left":""}`,onClick:Yt,role:"dialog","aria-modal":"true","aria-labelledby":"chat-modal-title",children:O.jsxs("div",{className:"chat-modal",style:o,onClick:R=>R.stopPropagation(),children:[O.jsxs("div",{className:"chat-modal-header",children:[O.jsxs("div",{className:"chat-modal-header-left",children:[O.jsx("div",{className:"keyring-logo",children:O.jsx("img",{src:Di,alt:"Keyring Logo",width:40,height:40})}),O.jsx("h3",{id:"chat-modal-title",children:a("chatTitle")})]}),O.jsx("button",{className:"close-button",onClick:t,"aria-label":a("closeChat"),type:"button",children:O.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:O.jsx("path",{d:"M15 5L5 15M5 5L15 15",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})})]}),O.jsx(Ti,{address:u?.address,chainId:g?.chainId}),O.jsxs("div",{className:"chat-modal-messages-wrapper",children:[O.jsxs("div",{className:"chat-modal-messages",ref:we,role:"log","aria-live":"polite",children:[i.map((R,K)=>O.jsxs("div",{children:[st(K)&&O.jsx("div",{className:"date-separator",children:gi(R.timestamp)}),O.jsxs("div",{className:`message ${R.sender==="user"?"message-user":"message-bot"}`,role:"article",children:[O.jsx("button",{disabled:Ft.isMobile,className:"message-reply-button",onClick:()=>Ce(R),"aria-label":a("replyToMessage"),type:"button",children:O.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:O.jsx("path",{d:"M3.5 8.5L1 6L3.5 3.5M1.5 6H10C12.2091 6 14 7.79086 14 10V13",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),O.jsxs("div",{className:"message-bubble",children:[R.replyTo&&O.jsxs("div",{className:"message-reply-to",children:[O.jsxs("div",{className:"message-reply-to-label",children:[a("replyingTo")," ",R.replyTo.sender==="user"?a("replyingToYou"):a("replyingToAgent")]}),O.jsx("div",{className:"message-reply-to-text",children:R.replyTo.text})]}),O.jsx("div",{className:"message-text",children:O.jsx(Wi,{content:R.text})}),R.buttons&&R.buttons.length>0&&O.jsx("div",{className:"message-buttons",children:R.buttons.map(H=>O.jsx("button",{className:`message-button ${H.fullWidth?"full-width":""} ${H.action==="suggested_action"?"suggested-action":""}`,onClick:()=>Ne(H.value,H.action,H?.extraData),type:"button",children:H.text},H.id))}),R.actionData&&R.actionData.status==="pending"&&O.jsx(Yi,{action:R.actionData.action,initialValues:R.actionData.parameters,onSubmit:(H,Z)=>{lt(H,Z,R.id),setTimeout(()=>{he.current?.scrollIntoView({behavior:"smooth"})},100)},onCancel:()=>ke(R.id),isSubmitting:Gt[R.id]||!1,tokenInfo:R.actionData.tokenInfo,nftInfo:R.actionData.nftInfo}),R.actionData&&R.actionData.status==="submitted"&&O.jsx("div",{className:"action-status action-status-submitted",children:a("txProcessing")}),R.actionData&&R.actionData.status==="success"&&O.jsx("div",{className:"action-status action-status-success",children:a("actionSuccess")}),R.actionData&&R.actionData.status==="fail"&&O.jsx("div",{className:"action-status action-status-fail",children:a("actionFail")}),O.jsxs("div",{className:"message-timestamp",children:[R.timestamp.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),R.sender==="user"&&O.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:"check-icon",children:O.jsx("path",{d:"M13.3333 4L6 11.3333L2.66667 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]})]})]})]},R.id)),S&&O.jsx("div",{className:"message message-bot typing-indicator",role:"status","aria-label":a("botIsTyping"),children:O.jsxs("div",{className:"message-bubble",children:[O.jsx("span",{className:"typing-dot"}),O.jsx("span",{className:"typing-dot"}),O.jsx("span",{className:"typing-dot"})]})}),(ge||i.length===1)&&O.jsxs(O.Fragment,{children:[i.length>1&&O.jsx("div",{className:"message message-bot",role:"article",children:O.jsx("div",{className:"message-bubble",children:O.jsx("div",{className:"message-text",children:a("canIHelpYou")})})}),O.jsx("div",{className:"suggestions-container",children:Ve.map(R=>O.jsxs("button",{className:"suggestion-button",onClick:R.action,type:"button",children:[O.jsx("span",{className:"suggestion-icon",children:R.icon}),O.jsx("span",{className:"suggestion-text",children:R.text})]},R.id))})]}),O.jsx("div",{ref:he})]}),O.jsx(Ji,{scrollContainerRef:we})]}),O.jsxs("div",{className:"chat-modal-input",children:[J&&O.jsxs("div",{className:"reply-preview",children:[O.jsxs("div",{className:"reply-preview-content",children:[O.jsxs("div",{className:"reply-preview-label",children:[a("replyingTo")," ",J.sender==="user"?a("replyingToYou"):a("replyingToAgent")]}),O.jsx("div",{className:"reply-preview-text",children:J.text})]}),O.jsx("button",{className:"reply-preview-close",onClick:()=>Q(null),"aria-label":a("cancelReply"),type:"button",children:O.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:O.jsx("path",{d:"M12 4L4 12M4 4L12 12",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]}),O.jsxs("div",{className:"chat-modal-input-row",children:[O.jsx("input",{ref:Ee,type:"text",placeholder:a("messagePlaceholder"),value:x,onChange:R=>B(R.target.value),onKeyPress:at,disabled:S,"aria-label":"Message input"}),O.jsx("button",{className:"send-button",onClick:Be,"aria-label":a("sendMessage"),disabled:S||x?.trim()==="",type:"button",children:O.jsx("img",{src:Li,alt:"Send",width:44,height:44})})]})]})]})}):null},ic=({position:e,theme:t,defaultOpen:n,onOpen:s,onClose:o,onTransaction:a})=>{const{account:r,chainId:i}=gn(),[l,b]=te.useState(n);te.useEffect(()=>{n&&s&&s()},[]),te.useEffect(()=>{if(typeof window>"u")return;const B=document.body,S=document.documentElement,v=B.style.overscrollBehavior,ge=S.style.overscrollBehavior,y=B.style.overflow;return l&&(B.style.overscrollBehavior="none",S.style.overscrollBehavior="none",B.style.overflow="hidden"),()=>{B.style.overscrollBehavior=v,S.style.overscrollBehavior=ge,B.style.overflow=y}},[l]);const D=te.useCallback(()=>{b(!0),s?.()},[s]),z=te.useCallback(()=>{b(!1),o?.()},[o]),k=te.useCallback(()=>{l?z():D()},[l,D,z]),x={position:"fixed",[e==="bottom-right"?"right":"left"]:t.offset?.x??20,bottom:t.offset?.y??20,zIndex:t.zIndex??9999};return!Re(r?.address||"")||!i?O.jsx(O.Fragment,{}):O.jsxs("div",{style:x,role:"complementary","aria-label":"Chat widget",children:[O.jsx(Ys,{buttonSize:t.buttonSize,onClick:k}),O.jsx(rc,{isOpen:l,onClose:z,onTransaction:a,position:e,modalChatStyle:t.modalChatStyle})]})},cc=({position:e="bottom-right",theme:t={},defaultOpen:n=!1,onOpen:s,onClose:o,account:a,onTransaction:r,language:i="en",rpcUrls:l})=>{const b={position:e,theme:t,rpcUrls:l};return typeof window>"u"?null:O.jsx(Ii,{initialConfig:b,children:O.jsx(vi,{initialAccount:a,children:O.jsx(Gs,{initialLanguage:i,children:O.jsx(ic,{position:e,theme:t,defaultOpen:n,onOpen:s,onClose:o,onTransaction:r})})})})};wt.ChatWidget=cc,Object.defineProperty(wt,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
!function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode(".chat-button{cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000026;transition:all .3s ease;border-radius:16px}.chat-button:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003}.chat-button:active{transform:scale(.95)}.chat-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:transparent;display:flex;align-items:flex-end;justify-content:flex-end;z-index:9999;pointer-events:all;animation:fadeIn .2s ease}#chat-modal-title{color:#0b3988;font-weight:900;font-style:Regular;font-size:18px}.chat-modal-overlay.chat-modal-overlay--left{justify-content:flex-start}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.chat-modal{width:90%;max-width:480px;height:700px;max-height:calc(100dvh - 64px);background:#f5f5f7;border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #0000004d;margin:20px;pointer-events:all;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.chat-modal-header{background:#fff;padding:8px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e5e5e7}.chat-modal-header-left{display:flex;align-items:center;gap:12px}.keyring-logo{width:32px;height:32px}.chat-modal-header h3{margin:0;font-size:18px;font-weight:700;color:#1a1a1d}.close-button{background:transparent;border:none;cursor:pointer;padding:8px;border-radius:8px;color:#666;transition:all .2s}.close-button:hover{background:#f5f5f7;color:#000}.chat-user-info{background:#fff;padding:12px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #e5e5e7}.user-avatar{width:20px;height:20px;border-radius:50%}.user-avatar img{border-radius:50%}.user-wallet,.user-wallet a{font-size:14px;font-weight:500;color:#0b3988}.copy-address-btn{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:3px;color:#999;border-radius:4px;transition:color .15s,background .15s;line-height:0}@media(min-width:640px){.copy-address-btn:hover{color:#1a1a1d;background:#f0f0f0}}.chat-modal-messages-wrapper{position:relative;flex:1;overflow:hidden;display:flex;flex-direction:column}.chat-modal-messages{flex:1;padding:16px;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px}.date-separator{text-align:center;font-size:12px;font-weight:600;color:#666;background:#e5e5e7;padding:6px 16px;border-radius:12px;align-self:center;width:fit-content;margin:8px auto}.message{display:flex;animation:messageSlide .3s ease;position:relative}@media(min-width:640px){.message:hover .message-reply-button{opacity:1}}@keyframes messageSlide{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-reply-button{position:absolute;top:50%;transform:translateY(-50%);background:#fff;border:1px solid #e5e5e7;border-radius:8px;padding:6px;cursor:pointer;opacity:0;transition:all .2s;box-shadow:0 2px 8px #0000001a;z-index:10}.message-bot .message-reply-button{right:20px}.message-user .message-reply-button{left:20px}.message-reply-button:hover{background:#f5f5f7;transform:translateY(-50%) scale(1.1)}.message-reply-button svg{display:block;width:16px;height:16px;color:#666}.message-bot{justify-content:flex-start}.message-user{justify-content:flex-end}.message-bubble{max-width:85%;padding:8px 16px;border-radius:20px}.message-bot .message-bubble{background:#fff;box-shadow:0 2px 8px #0000000f;border-bottom-left-radius:4px}.message-user .message-bubble{background:#5b7fff;color:#fff;border-bottom-right-radius:4px}.message-user .message-bubble a{color:#fff}.message-reply-to{background:#0000000d;padding:8px 12px;border-radius:6px;margin-bottom:8px;border-left:3px solid #5b7fff}.message-bot .message-reply-to{background:#f5f5f7}.message-user .message-reply-to{background:#ffffff26;border-left-color:#ffffff80}.message-reply-to-label{font-size:11px;font-weight:600;margin-bottom:4px}.message-bot .message-reply-to-label{color:#5b7fff}.message-user .message-reply-to-label{color:#ffffffe6}.message-reply-to-text{font-size:12px;opacity:.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-text{font-size:14px;line-height:1.5;word-wrap:break-word;white-space:pre-line}.message-bot .message-text{color:#1a1a1d}.message-user .message-text{color:#fff}.message-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;margin-bottom:8px}.message-button{flex:1 1 calc(50% - 4px);min-width:100px;padding:8px 16px;background:#fffffff2;border:1px solid #e0e0e0;border-radius:12px;font-size:13px;font-weight:500;color:#1a1a1d;cursor:pointer;transition:all .2s ease;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-button.full-width{flex:1 1 100%;text-align:center;white-space:normal;padding:8px 16px;font-size:14px}@media(min-width:640px){.message-button:hover{background:#fff;border-color:#007aff;color:#007aff;transform:translateY(-1px);box-shadow:0 2px 8px #007aff26}.message-button:active{transform:translateY(0);box-shadow:0 1px 4px #007aff1a}}.message-user .message-button{background:#fff3;border-color:#ffffff4d;color:#fff}.message-user .message-button:hover{background:#ffffff4d;border-color:#ffffff80}.message-timestamp{line-height:1;font-size:11px;color:#999;display:flex;align-items:center;gap:4px;justify-content:flex-end}.message-user .message-timestamp{color:#ffffffb3}.check-icon{width:14px;height:14px}.typing-indicator .message-bubble{padding:12px 18px;display:flex;gap:6px;min-width:60px}.typing-dot{width:8px;height:8px;border-radius:50%;background:#999;animation:typingDot 1.4s infinite ease-in-out}.typing-dot:nth-child(1){animation-delay:0s}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typingDot{0%,60%,to{transform:translateY(0);opacity:.7}30%{transform:translateY(-8px);opacity:1}}.suggestions-container{display:flex;flex-direction:column;gap:10px;margin-top:8px}.suggestion-button{background:#d4d8f0;border:none;padding:8px 16px;border-radius:16px;display:flex;gap:12px;cursor:pointer;transition:all .2s;font-size:14px;font-weight:500;color:#1a1a1d;width:100%;text-align:center;align-items:center;justify-content:center}.suggestion-button:hover{background:#c5caeb;transform:translateY(-1px)}.suggestion-icon{font-size:18px}.chat-modal-input{padding:8px 16px;background:#fff;border-top:1px solid #e5e5e7;display:flex;flex-direction:column;gap:8px;box-shadow:0 -5px 8px 4px #0000000d}.reply-preview{background:#f5f5f7;padding:10px 14px;border-radius:6px;border-left:3px solid #5b7fff;display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.reply-preview-content{flex:1;min-width:0}.reply-preview-label{font-size:11px;color:#5b7fff;font-weight:600;margin-bottom:4px}.reply-preview-text{font-size:13px;color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reply-preview-close{background:transparent;border:none;cursor:pointer;padding:2px;color:#999;transition:color .2s;flex-shrink:0}.reply-preview-close:hover{color:#666}.chat-modal-input-row{display:flex;gap:12px;align-items:center}.chat-modal-input input{flex:1;padding:14px 18px;border:1px solid #e5e5e7;border-radius:24px;outline:none;font-size:16px;color:#1a1a1d;transition:all .2s}.chat-modal-input input::placeholder{color:#999}.chat-modal-input input:focus{border-color:#5b7fff;box-shadow:0 0 0 3px #5b7fff1a}.chat-modal-input input:disabled{opacity:.6;cursor:not-allowed;background:#f5f5f7}.send-button{width:44px;height:44px;border-radius:50%;background:#5b7fff;border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.send-button:hover:not(:disabled){background:#4a6fee;transform:scale(1.05)}.send-button:disabled{opacity:.4;cursor:not-allowed}.chat-modal-messages::-webkit-scrollbar{width:6px}.chat-modal-messages::-webkit-scrollbar-thumb{background:#d1d1d6;border-radius:3px}@media(max-width:640px){.chat-modal{width:100%;height:100dvh;max-height:100dvh;border-radius:0;margin:0}}.action-status{margin-top:8px;padding:6px 10px;border-radius:6px;font-size:.8em;font-weight:500}.action-status-submitted{background:#fef3c7;color:#92400e;border:1px solid #fde68a}.action-status-success{background:#d1fae5;color:#065f46;border:1px solid #a7f3d0}.action-status-fail{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.message-content{display:block;word-wrap:break-word;overflow-wrap:break-word;max-width:100%;overflow:hidden;font-size:inherit;line-height:1.5}.mc-line{min-height:1.2em;word-break:break-word}.mc-empty-line{height:.5em}.mc-heading{font-weight:600;margin:.3em 0;word-break:break-word}.mc-h1{font-size:1.4em}.mc-h2{font-size:1.2em}.mc-h3{font-size:1.05em}.mc-inline-code{background:#afb8c133;padding:1px 5px;border-radius:3px;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,monospace;font-size:.88em}.mc-codeblock{background:#f6f8fa;border:1px solid #d0d7de;border-radius:6px;margin:6px 0;overflow:hidden;max-width:100%}.mc-codeblock-lang{background:#e8ecf0;padding:3px 10px;font-size:.75em;font-weight:600;color:#57606a;text-transform:uppercase;font-family:Monaco,Menlo,monospace;border-bottom:1px solid #d0d7de}.mc-codeblock pre{margin:0;padding:10px;overflow-x:auto}.mc-codeblock code{font-family:Monaco,Menlo,Ubuntu Mono,Consolas,monospace;font-size:.85em;line-height:1.5;color:#24292f;white-space:pre}.mc-link{color:#0969da;text-decoration:none;word-break:break-word}.mc-link:hover{text-decoration:underline}.mc-image{max-width:150px;width:150px;height:150px;object-fit:contain;border-radius:8px;margin:8px 0;display:block}.mc-image-inline{width:20px;height:20px;border-radius:50%;margin:0 4px;display:inline-block;vertical-align:middle;object-fit:cover}.mc-blockquote{margin:4px 0;padding:2px 0 2px 12px;color:#57606a;border-left:3px solid #d0d7de}.mc-hr{height:1px;border:0;background:#d0d7de;margin:.4em 0}.message-content strong{font-weight:600}.message-content del{text-decoration:line-through}.action-form{background:#f8f9fb;border:1px solid #e2e6ea;border-radius:10px;padding:12px;margin-top:8px;margin-bottom:8px}.action-form-title{font-weight:600;font-size:.9em;margin-bottom:10px;color:#1a1a2e;display:flex;align-items:center;gap:6px}.action-form-general-error{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 12px;margin-bottom:10px;font-size:.8em;color:#dc2626;font-weight:500;display:flex;align-items:center;gap:6px}.action-form-fields{display:flex;flex-direction:column;gap:8px}.action-form-field{display:flex;flex-direction:column;gap:3px}.action-form-field label{font-size:.75em;font-weight:500;color:#6b7280}.action-form-field input,.action-form-field textarea{padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:16px;background:#fff;color:#1a1a2e;outline:none;transition:border-color .2s;font-family:inherit}.action-form-field textarea{resize:none;word-break:break-all}.action-form-field input:focus,.action-form-field textarea:focus{border-color:#0b3988;box-shadow:0 0 0 2px #6c5ce726}.action-form-field input.error,.action-form-field textarea.error{border-color:#ef4444}.action-form-field input.readonly,.action-form-field textarea.readonly{background:#f3f4f6;color:#6b7280;cursor:not-allowed;border-color:#e5e7eb}.action-form-field .field-error{font-size:.7em;color:#ef4444;margin-top:1px}.action-form-actions{display:flex;gap:8px;margin-top:10px}.action-form-submit{flex:1;padding:8px 14px;background:#0b3988;color:#fff;border:none;border-radius:6px;font-size:.85em;font-weight:500;cursor:pointer;transition:background .2s}.action-form-submit:hover:not(:disabled){background:#5a4bd1}.action-form-submit:disabled{background:#a5b4fc;cursor:not-allowed}.action-form-cancel{padding:8px 14px;background:transparent;color:#6b7280;border:1px solid #d1d5db;border-radius:6px;font-size:.85em;font-weight:500;cursor:pointer;transition:all .2s}.action-form-cancel:hover{background:#f3f4f6;color:#374151}.action-form-token-info{background:#eef2ff;border:1px solid #c7d2fe;border-radius:8px;padding:8px 10px;margin-bottom:10px}.token-info-row{display:flex;align-items:center;gap:8px}.token-info-logo{border-radius:50%;flex-shrink:0}.token-info-details{display:flex;flex-direction:column;gap:2px;min-width:0}.token-info-name{font-size:.8em;font-weight:600;color:#1a1a2e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.token-info-balance{font-size:.75em;color:#4b5563}.token-info-usd{color:#0b3988;font-weight:500}.action-form-field-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.action-form-field-header .action-form-field-label{margin-bottom:0;font-size:12px}.action-form-pct-btns{display:inline-flex;gap:4px}.action-form-pct-btn{padding:1px 6px;font-size:.7em;font-weight:600;color:#0b3988;background:#eef2ff;border:1px solid #c7d2fe;border-radius:4px;cursor:pointer;transition:all .15s}@media(min-width:640px){.action-form-pct-btn:hover:not(:disabled){background:#0b3988;color:#fff}}.action-form-pct-btn:disabled{opacity:.5;cursor:not-allowed}.action-form-max-btn{font-weight:700}.action-form-nft-info{margin-bottom:10px;text-align:center;display:flex;align-items:center;justify-content:center}.nft-info-image{width:80px;height:80px;border-radius:8px;object-fit:contain;background:#e5e7eb;padding:4px}.scroll-to-bottom-btn{position:absolute;bottom:16px;right:20px;background:#1a1a1dd6;color:#fff;border:1px solid rgba(255,255,255,.12);border-radius:50%;width:36px;height:36px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000040;z-index:20;transition:background .15s,transform .15s,box-shadow .15s;animation:fadeInUp .18s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(min-width:640px){.scroll-to-bottom-btn:hover{background:#2d2d35;box-shadow:0 6px 16px #0000004d;transform:scale(1.08)}}.scroll-to-bottom-btn:active{transform:scale(.96)}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}}();
|
|
2
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react/jsx-runtime"),require("react")):"function"==typeof define&&define.amd?define(["exports","react/jsx-runtime","react"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).ChatWidgetSDK={},e.jsxRuntime,e.React)}(this,function(e,n,t){"use strict";const o={en:{chatTitle:"Keyring Agent",closeChat:"Close chat",messagePlaceholder:"Message ....",sendMessage:"Send message",botIsTyping:"Bot is typing",canIHelpYou:"Can I help you with anything?",replyToMessage:"Reply to message",replyingTo:"Replying to",replyingToYou:"You",replyingToAgent:"Keyring Agent",cancelReply:"Cancel reply",suggestionAskText:"Ask a question",suggestionAskUserMessage:"I have a question",suggestionAskBotReply:"Ask me anything",suggestionBuyText:"Buy trending token",walletConnectedChainUnsupported:"Your wallet is connected but the chain is not supported for trading. Please switch to a supported chain to see trending tokens.",walletNotConnected:"Please connect your wallet to see trending tokens.",actionProcessing:"⏳ Processing transaction...",actionSuccess:"✅ Transaction completed",actionFail:"❌ Action cancelled or failed",txSubmitted:"⏳ Transaction submitted. Waiting for confirmation...",txConfirmed:"✅ Transaction confirmed!",txReverted:"❌ Transaction reverted on-chain.",txTimeout:"⚠️ Transaction submitted but confirmation timed out. Please check manually.",txSuccessful:"✅ Transaction successful!",txFailed:"❌ Transaction failed. Please try again.",txNoHandler:"⚠️ No transaction handler configured.",txInsufficientGas:"⚠️ **Insufficient {symbol} for gas!** You have {balance} {symbol} but need ~{fee} {symbol} for the transaction fee. Please top up your wallet and try again.",txError:"❌ Error: {message}",swapConfirmButton:"Confirm",swapConfirmValue:"Confirm swap",swapReadyToProceed:"Ready to proceed with the swap?",swapEstimationError:"⚠️ Unable to get swap estimation. Error: {error}",formCancel:"Cancel",formExecute:"Execute",formProcessing:"⏳ Processing...",formBalance:"Balance:",formTokenNotFound:"Token not found in your wallet.",formNoBalance:"You have no {symbol} balance in your wallet.",formInsufficientBalance:"Insufficient balance. Spendable: {balance} {symbol}",formFieldRequired:"{field} is required",formInvalidAddress:"Invalid address (0x + 40 hex chars)",formMustBePositive:"Must be a positive number",formMustBeValidNumber:"Must be a valid number",openChat:"Open chat",openChatTitle:"Open chat support",walletBalanceSpendable:"This is the spendable balance of your wallet on {chain} chain. Please choose the coins you want to use for this trade.",walletNoTokensFound:"Sorry, I couldn't find any tokens in your wallet on {chain} chain. Please make sure you have some tokens to trade.",walletFetchFailed:"Sorry, I could not fetch your wallet balance. Please try again.",walletFetchError:"Sorry, I encountered an error fetching your wallet balance.",insufficientFeeToken:"Insufficient fee. Please ensure you have enough {symbol} to cover the transaction fees, or select a different token.",selectAmountOf:"Select the amount of {symbol} to use:\n\nSpendable: {balance} {symbol}",swapFeeWarning:"\n⚠️ **Insufficient {symbol} for fees!**\n You have {balance} {symbol} but need ~{needed} {symbol}.\n",swapNeedApprove:"You need to approve {symbol} first before swapping.",swapApproveButton:"Approve {symbol}",swapApproveValue:"Approve {symbol} for swap",swapNoSourceToken:"⚠️ You don't have the source token in your wallet or balance is 0.",swapSelectAmount:"Swap {from} → {to}\n\nSelect the amount of {from} to swap:\n\nSpendable: {balance} {from}",swapApprovalRequired:"⚠️ Token approval required before swapping.\n\nStep 1: Approve {symbol}\nStep 2: Confirm Swap",swapEstimationFailed:"⚠️ Failed to get swap estimation. Please try again.",swapInsufficientNativeBalance:"⚠️ Insufficient balance! You have {balance} {symbol} but need {amount}. Please top up your wallet or reduce the amount.",swapTokenNotInWallet:"⚠️ You don't have {symbol} in your wallet. Please acquire some first before swapping.",swapInsufficientTokenBalance:"⚠️ Insufficient balance! You have {balance} {symbol} but need {amount}. Please reduce the amount or add more tokens.",selectAmountToSwap:"Select the amount of {symbol} to swap:\n\nSpendable: {balance} {symbol}",couldNotLoadTokenList:"⚠️ Could not load token list. Please specify the destination token.",trendingTokensForReceive:"📈 Trending tokens on {chain} chain. Pick the token you want to receive or type the token you want to receive:",txProcessing:"⏳ Transaction processing... Please confirm in your wallet.",txConfirmedSwap:"✅ Transaction confirmed! Your swap has been completed.",txRevertedSwap:"❌ Transaction reverted on-chain. Please try again.",txSuccessfulSwap:"✅ Transaction successful! Your swap has been completed.",txDataNotAvailable:"⚠️ Transaction data not available.",approvalDataNotAvailable:"⚠️ Approval data not available.",approving:"Approving {symbol}... Please confirm in your wallet.",approvalSuccess:"✅ {symbol} approved successfully!",approvalConfirmSwap:"Now you can execute the swap.",confirmSwapButton:"Confirm Swap",approvalFailed:"❌ Approval failed. Please try again.",couldNotFetchBalance:"⚠️ Could not fetch your wallet balance.",couldNotLoadBalance:"⚠️ Could not load balance. Please try again.",couldNotFetchBalanceRetry:"⚠️ Could not fetch your balance. Please try again.",nftSendReview:"📤 Send **{name}** ({standard} #{tokenId})\n\nPlease review and fill in the recipient address below:",nftCollectionHeader:"Your NFTs :\n\n{list}",nftMoreItems:"\n\nAnd {count} more NFTs...",nftSelectBelow:"\n\nSelect an NFT below to send",nftNoCollection:"You don't have any NFTs in your wallet on this chain.",nftMultipleMatchesForTokenId:"I found {count} NFTs with Token ID #{tokenId} in your wallet. Please select the one you want to send:",nftNotFoundInWallet:'I couldn\'t find "{name}" in your NFT collection. Here are your NFTs:',nftFetchError:"Sorry, I encountered an error fetching your NFTs.",trendingTokensHeader:"📈 Here is the list of tokens that are currently trending upwards on {chain} chain",trendingTokensQuestion:"\nIs there any token you want to buy?",trendingTokensError:"Sorry, I encountered an error fetching trending tokens.",errorProcessingRequest:"Sorry, I encountered an error processing your request.",buttonBuyWith:"Buy with {symbol}",buttonUsePercent:"Use {percent}% of {symbol}",buttonBuyToken:"Buy {name} ({symbol})",buttonSendNft:"Send {name}",buttonSwapTo:"Swap to {name} ({symbol})",buttonBuySymbol:"Buy {symbol}",viewBalancesLoading:"Fetching your wallet balances...",viewBalancesHeader:"Your token balances on {chain}:\n\n{list}\n\nSelect a token to interact with:",viewBalancesEmpty:"You don't have any tokens in your wallet on this chain.",viewBalancesFetchError:"Sorry, I encountered an error fetching your balances.",buttonSendToken:"Send {symbol}",buttonSwapToken:"Swap {symbol}",buttonBuyMoreToken:"Buy more {symbol}",actionSendNativeLabel:"Send Native Token",actionSendNativeDesc:"Send native token (ETH, BNB, MATIC, etc.) to an address",actionSendTokenLabel:"Send Token (ERC20)",actionSendTokenDesc:"Send an ERC20 token to an address",actionSwapTokenLabel:"Swap Token",actionSwapTokenDesc:"Swap one token for another",actionApproveTokenLabel:"Approve Token",actionApproveTokenDesc:"Approve a spender to use your tokens",actionWrapNativeLabel:"Wrap Native Token",actionWrapNativeDesc:"Wrap native token (ETH → WETH)",actionUnwrapNativeLabel:"Unwrap Native Token",actionUnwrapNativeDesc:"Unwrap native token (WETH → ETH)",actionSendNftLabel:"Send NFT",actionSendNftDesc:"Transfer an ERC721 or ERC1155 NFT to another address",fieldToAddress:"Recipient Address",fieldAmount:"Amount",fieldTokenContract:"Token Contract",fieldTokenSymbol:"Token Symbol",fieldDecimals:"Decimals",fieldTokenIn:"From Token",fieldTokenInSymbol:"From Symbol",fieldTokenOut:"To Token",fieldTokenOutSymbol:"To Symbol",fieldTokenInDecimals:"From Decimals",fieldTokenOutDecimals:"To Decimals",fieldSpenderAddress:"Spender Address",fieldAmountUnlimited:"Amount (empty = unlimited)",fieldNftContract:"NFT Contract",fieldTokenId:"Token ID",fieldTokenStandard:"Token Standard",fieldNftName:"NFT Name",formMustBePositiveInteger:"Must be a positive integer",formAmountExceedsNft:"Amount cannot exceed available balance {max}",receivedButtonValue:"Received: {value}",actionExecutedFor:'Action "{action}" executed for: {value}',buyTokenHelp:"I'll help you buy {symbol}. Let me show your available tokens to trade with.",tokenNotFoundOnChain:'I couldn\'t find the token "{symbol}" on this chain. Here are the trending tokens you can buy:',swapPreparing:"Preparing your swap...",swapConfirmYes:"Yes",swapChooseFrom:"Please choose which token you want to swap from:",swapChooseTo:"You want to swap {symbol}. Please choose which token you want to receive:",swapNeedDetails:'I need more details for your swap. Please specify which tokens you want to swap (e.g. "Swap 1 ETH to USDC").',viewNftsLoading:"Let me show you your NFT collection!",sendTokenChoose:"Which token would you like to send?",sendNftChoose:"Which NFT would you like to send?",swapChooseToken:"Which token would you like to swap? Here are your current balances:",spendable:"Spendable",welcomeMessage:"**Welcome! 🚀**\nYou're connected and ready to explore DeFi! I can help you trade, check prices, and analyze your portfolio when you need it.",sendOtherNfts:"\nIf the NFT you want to send is not in the list above, please visit our website to send it. \n{link}"},ja:{chatTitle:"Keyring Agent",closeChat:"チャットを閉じる",messagePlaceholder:"メッセージを入力...",sendMessage:"メッセージを送信",botIsTyping:"ボットが入力中...",canIHelpYou:"なにかお手伝いできることはありますか?",replyToMessage:"メッセージに返信",replyingTo:"返信先:",replyingToYou:"あなた",replyingToAgent:"Keyring Agent",cancelReply:"返信をキャンセル",suggestionAskText:"質問・調査のお願い",suggestionAskUserMessage:"質問があります",suggestionAskBotReply:"何でも聞いてください",suggestionBuyText:"トレンドトークンを購入",walletConnectedChainUnsupported:"ウォレットは接続されていますが、このチェーンは取引に対応していません。トレンドのトークンを表示するには、対応しているチェーンに切り替えてください。",walletNotConnected:"トレンドのトークンを表示するには、ウォレットを接続してください。",actionProcessing:"⏳ トランザクションを処理中...",actionSuccess:"✅ トランザクションが完了しました",actionFail:"❌ アクションがキャンセルされたか、失敗しました",txSubmitted:"⏳ トランザクションを送信しました。確認を待機中...",txConfirmed:"✅ トランザクションが確認されました!",txReverted:"❌ オンチェーンでトランザクションがリバートされました。",txTimeout:"⚠️ トランザクションは送信されましたが、タイムアウトしました。手動で確認してください。",txSuccessful:"✅ トランザクションに成功しました!",txFailed:"❌ トランザクションに失敗しました。もう一度お試しください。",txNoHandler:"⚠️ トランザクションハンドラーが設定されていません。",txInsufficientGas:"⚠️ **ガス代({symbol})が不足しています!** 保有量は {balance} {symbol} ですが、手数料に約 {fee} {symbol} 必要です。ウォレットにチャージして再試行してください。",txError:"❌ エラー: {message}",swapConfirmButton:"確定",swapConfirmValue:"スワップを確定する",swapReadyToProceed:"スワップを実行しますか?",swapEstimationError:"⚠️ スワップの見積もりを取得できません。エラー: {error}",formCancel:"キャンセル",formExecute:"実行",formProcessing:"⏳ 処理中...",formBalance:"残高:",formTokenNotFound:"ウォレット内にトークンが見つかりません。",formNoBalance:"ウォレットに {symbol} の残高がありません。",formInsufficientBalance:"残高不足です。利用可能: {balance} {symbol}",formFieldRequired:"{field} は必須項目です",formInvalidAddress:"無効なアドレスです (0x + 40文字の16進数)",formMustBePositive:"正の数値を入力してください",formMustBeValidNumber:"有効な数値を入力してください",openChat:"チャットを開く",openChatTitle:"チャットサポートを開く",walletBalanceSpendable:"これは {chain} チェーン上のウォレットの利用可能な残高です。この取引に使用するコインを選択してください。",walletNoTokensFound:"申し訳ありませんが、{chain} チェーン上のウォレットにトークンが見つかりませんでした。取引するためのトークンを保有しているかご確認ください。",walletFetchFailed:"ウォレット残高を取得できませんでした。もう一度お試しください。",walletFetchError:"ウォレット残高の取得中にエラーが発生しました。",insufficientFeeToken:"手数料が不足しています。取引手数料をカバーするのに十分な {symbol} を保有しているか、別のトークンを選択してください。",selectAmountOf:"使用する {symbol} の数量を選択してください:\n\n利用可能: {balance} {symbol}",swapFeeWarning:"\n⚠️ **手数料の {symbol} が不足しています!**\n 保有量は {balance} {symbol} ですが、~{needed} {symbol} 必要です。\n",swapNeedApprove:"スワップを行う前に、まず {symbol} の承認(Approve)が必要です。",swapApproveButton:"{symbol} を承認する",swapApproveValue:"スワップのために {symbol} を承認",swapNoSourceToken:"⚠️ ウォレットにソーストークンがないか、残高が 0 です。",swapSelectAmount:"スワップ {from} → {to}\n\nスワップする {from} の数量を選択してください:\n\n利用可能: {balance} {from}",swapApprovalRequired:"⚠️ スワップの前にトークンの承認が必要です。\n\nステップ 1: {symbol} を承認\nステップ 2: スワップを確定",swapEstimationFailed:"⚠️ スワップの見積もり取得に失敗しました。もう一度お試しください。",swapInsufficientNativeBalance:"⚠️ 残高不足です! 保有量は {balance} {symbol} ですが、{amount} 必要です。ウォレットにチャージするか、数量を減らしてください。",swapTokenNotInWallet:"⚠️ ウォレットに {symbol} がありません。スワップする前にまず入手してください。",swapInsufficientTokenBalance:"⚠️ 残高不足です! 保有量は {balance} {symbol} ですが、{amount} 必要です。数量を減らすか、トークンを追加してください。",selectAmountToSwap:"スwaップする {symbol} の数量を選択してください:\n\n利用可能: {balance} {symbol}",couldNotLoadTokenList:"⚠️ トークンリストを読み込めませんでした。受け取り希望のトークンを指定してください。",trendingTokensForReceive:"📈 {chain} チェーンのトレンドトークン。受け取りたいトークンを選択するか、入力してください:",txProcessing:"⏳ トランザクション処理中... ウォレットで承認してください。",txConfirmedSwap:"✅ トランザクションが確認されました!スワップが完了しました。",txRevertedSwap:"❌ オンチェーンでトランザクションがリバートされました。もう一度お試しください。",txSuccessfulSwap:"✅ トランザクションに成功しました!スワップが完了しました。",txDataNotAvailable:"⚠️ トランザクションデータが利用できません。",approvalDataNotAvailable:"⚠️ 承認データが利用できません。",approving:"{symbol} を承認中... ウォレットで確認してください。",approvalSuccess:"✅ {symbol} の承認に成功しました!",approvalConfirmSwap:"これでスワップを実行できます。",confirmSwapButton:"スワップを確定する",approvalFailed:"❌ 承認に失敗しました。もう一度お試しください。",couldNotFetchBalance:"⚠️ ウォレット残高を取得できませんでした。",couldNotLoadBalance:"⚠️ 残高を読み込めませんでした。もう一度お試しください。",couldNotFetchBalanceRetry:"⚠️ 残高を取得できませんでした。もう一度お試しください。",nftSendReview:"📤 **{name}** ({standard} #{tokenId}) を送信\n\n内容を確認し、以下に受信者のアドレスを入力してください:",nftCollectionHeader:"您的 NFT 资产:\n\n{list}",nftMoreItems:"\n\n以及其他 {count} 件 NFT...",nftSelectBelow:"\n\n请在下方选择要发送的 NFT",nftNoCollection:"このチェーン上のウォレットにNFTは見つかりませんでした。",nftMultipleMatchesForTokenId:"ウォレット内にToken ID #{tokenId} のNFTが{count}件見つかりました。送信したいNFTを選択してください:",nftNotFoundInWallet:'あなたのNFTコレクションの中に "{name}" が見つかりませんでした。保有中のNFTはこちらです:',nftFetchError:"申し訳ありませんが、NFTの取得中にエラーが発生しました。",trendingTokensHeader:"📈 {chain} チェーンで現在価格が上昇中のトレンドトークン一覧です:",trendingTokensQuestion:"\n購入したいトークンはありますか?",trendingTokensError:"トレンドトークンの取得中にエラーが発生しました。",errorProcessingRequest:"リクエストの処理中にエラーが発生しました。",buttonBuyWith:"{symbol} で購入",buttonUsePercent:"{symbol} の {percent}% を使用",buttonBuyToken:"{name} ({symbol}) を購入",buttonSendNft:"{name} を送信",buttonSwapTo:"{name} ({symbol}) にスワップ",buttonBuySymbol:"{symbol} を購入",viewBalancesLoading:"ウォレットの残高を取得中...",viewBalancesHeader:"{chain} 上のトークン残高:\n\n{list}\n\n操作するトークンを選択してください:",viewBalancesEmpty:"このチェーン上のウォレットにトークンは見つかりませんでした。",viewBalancesFetchError:"残高の取得中にエラーが発生しました。",buttonSendToken:"{symbol} を送信",buttonSwapToken:"{symbol} をスワップ",buttonBuyMoreToken:"{symbol} をさらに入手",actionSendNativeLabel:"ネイティブトークンを送信",actionSendNativeDesc:"ネイティブトークン (ETH, BNB, MATIC など) をアドレスに送信します",actionSendTokenLabel:"トークンを送信 (ERC20)",actionSendTokenDesc:"ERC20トークンをアドレスに送信します",actionSwapTokenLabel:"トークンをスワップ",actionSwapTokenDesc:"トークンを別のトークンに交換します",actionApproveTokenLabel:"トークンを承認",actionApproveTokenDesc:"支出元(Spender)によるトークンの使用を許可します",actionWrapNativeLabel:"ネイティブトークンをラップ",actionWrapNativeDesc:"ネイティブトークンをラップします (ETH → WETH)",actionUnwrapNativeLabel:"ネイティブトークンをアンラップ",actionUnwrapNativeDesc:"ネイティブトークンをアンラップします (WETH → ETH)",actionSendNftLabel:"NFTを送信",actionSendNftDesc:"ERC721またはERC1155 NFTを別のアドレスに転送します",fieldToAddress:"受信者アドレス",fieldAmount:"数量",fieldTokenContract:"トークンコントラクト",fieldTokenSymbol:"トークンシンボル",fieldDecimals:"デシマル (小数桁数)",fieldTokenIn:"元のトークン",fieldTokenInSymbol:"元のシンボル",fieldTokenOut:"先のトークン",fieldTokenOutSymbol:"先のシンボル",fieldTokenInDecimals:"元のデシマル",fieldTokenOutDecimals:"先のデシマル",fieldSpenderAddress:"支出元 (Spender) アドレス",fieldAmountUnlimited:"数量 (空欄 = 無制限)",fieldNftContract:"NFTコントラクト",fieldTokenId:"トークンID",fieldTokenStandard:"トークン規格",fieldNftName:"NFT名",formMustBePositiveInteger:"正の整数を入力してください",formAmountExceedsNft:"数量は利用可能な残高 {max} を超えることはできません",receivedButtonValue:"受取額: {value}",actionExecutedFor:"アクション「{action}」が {value} に対して実行されました",buyTokenHelp:"{symbol} の購入をお手伝いします。まず、交換に使用可能なトークンを表示します。",tokenNotFoundOnChain:"このチェーン上でトークン「{symbol}」が見つかりませんでした。購入可能なトレンドトークンはこちらです:",swapPreparing:"スワップの準備中...",swapConfirmYes:"はい",swapChooseFrom:"交換元(支払う)トークンを選択してください:",swapChooseTo:"{symbol} をスワップします。受け取りたいトークンを選択してください:",swapNeedDetails:"スワップの詳細が必要です。交換したいトークンを指定してください(例:「1 ETH を USDC にスワップ」)。",viewNftsLoading:"あなたのNFTコレクションを表示します!",sendTokenChoose:"どのトークンを送信しますか?",sendNftChoose:"どのNFTを送信しますか?",swapChooseToken:"どのトークンをスワップしますか?現在の残高はこちらです:",spendable:"利用可能",welcomeMessage:"**ようこそ! 🚀**\n接続が完了し、DeFiを探索する準備が整いました!トレード、価格チェック、ポートフォリオ分析など、いつでもお手伝いします。",sendOtherNfts:"\n送信したいNFTが上のリストにない場合は、ウェブサイトから送信してください。\n{link}"},cn:{chatTitle:"Keyring Agent",closeChat:"关闭聊天",messagePlaceholder:"请输入消息....",sendMessage:"发送消息",botIsTyping:"机器人正在输入",canIHelpYou:"有什么我可以帮您的吗?",replyToMessage:"回复消息",replyingTo:"正在回复",replyingToYou:"您",replyingToAgent:"Keyring Agent",cancelReply:"取消回复",suggestionAskText:"提问",suggestionAskUserMessage:"我有一个问题",suggestionAskBotReply:"随便问我任何事情",suggestionBuyText:"购买热门代币",walletConnectedChainUnsupported:"您的钱包已连接,但当前链不支持交易。请切换到支持的链以查看热门代币。",walletNotConnected:"请连接您的钱包以查看热门代币。",actionProcessing:"⏳ 正在处理交易...",actionSuccess:"✅ 交易已完成",actionFail:"❌ 操作取消或失败",txSubmitted:"⏳ 交易已提交。正在等待确认...",txConfirmed:"✅ 交易已确认!",txReverted:"❌ 交易在链上被退回(Reverted)。",txTimeout:"⚠️ 交易已提交但确认超时。请手动检查。",txSuccessful:"✅ 交易成功!",txFailed:"❌ 交易失败。请重试。",txNoHandler:"⚠️ 未配置交易处理器。",txInsufficientGas:"⚠️ **{symbol} 余额不足以支付 Gas 费!** 您当前有 {balance} {symbol},但交易费预计需要 ~{fee} {symbol}。请充值钱包后重试。",txError:"❌ 错误: {message}",swapConfirmButton:"确认",swapConfirmValue:"确认兑换",swapReadyToProceed:"准备好进行兑换了吗?",swapEstimationError:"⚠️ 无法获取兑换估算。错误: {error}",formCancel:"取消",formExecute:"执行",formProcessing:"⏳ 正在处理...",formBalance:"余额:",formTokenNotFound:"您的钱包中未找到该代币。",formNoBalance:"您的钱包中没有 {symbol} 余额。",formInsufficientBalance:"余额不足。可用余额: {balance} {symbol}",formFieldRequired:"{field} 是必填项",formInvalidAddress:"地址无效 (0x + 40位十六进制字符)",formMustBePositive:"必须为正数",formMustBeValidNumber:"必须为有效数字",openChat:"打开聊天",openChatTitle:"打开聊天支持",walletBalanceSpendable:"这是您在 {chain} 链上钱包的可选余额。请选择您想用于此次交易的代币。",walletNoTokensFound:"抱歉,我在 {chain} 链上的钱包中没找到任何代币。请确保您有代币可以进行交易。",walletFetchFailed:"抱歉,无法获取您的钱包余额。请重试。",walletFetchError:"抱歉,获取钱包余额时出错。",insufficientFeeToken:"手续费不足。请确保您有足够的 {symbol} 来支付交易费用,或选择其他代币。",selectAmountOf:"选择要使用的 {symbol} 数量:\n\n可用余额: {balance} {symbol}",swapFeeWarning:"\n⚠️ **手续费所需的 {symbol} 不足!**\n 您当前有 {balance} {symbol},但需要 ~{needed} {symbol}。\n",swapNeedApprove:"在兑换之前,您需要先授权 {symbol}。",swapApproveButton:"授权 {symbol}",swapApproveValue:"授权 {symbol} 以进行兑换",swapNoSourceToken:"⚠️ 您的钱包中没有源代币或余额为 0。",swapSelectAmount:"兑换 {from} → {to}\n\n选择要兑换的 {from} 数量:\n\n可用余额: {balance} {from}",swapApprovalRequired:"⚠️ 兑换前需要代币授权。\n\n第 1 步:授权 {symbol}\n第 2 步:确认兑换",swapEstimationFailed:"⚠️ 获取兑换估算失败。请重试。",swapInsufficientNativeBalance:"⚠️ 余额不足!您有 {balance} {symbol} 但需要 {amount}。请充值钱包或减少金额。",swapTokenNotInWallet:"⚠️ 您的钱包中没有 {symbol}。请在兑换前先获取一些代币。",swapInsufficientTokenBalance:"⚠️ 余额不足!您有 {balance} {symbol} 但需要 {amount}。请减少金额或添加更多代币。",selectAmountToSwap:"选择要兑换的 {symbol} 数量:\n\n可用余额: {balance} {symbol}",couldNotLoadTokenList:"⚠️ 无法加载代币列表。请指定目标代币。",trendingTokensForReceive:"📈 {chain} 链上的热门代币。请选择您想收到的代币或输入代币名称:",txProcessing:"⏳ 交易处理中... 请在钱包中确认。",txConfirmedSwap:"✅ 交易已确认!您的兑换已完成。",txRevertedSwap:"❌ 交易在链上被退回。请重试。",txSuccessfulSwap:"✅ 交易成功!您的兑换已完成。",txDataNotAvailable:"⚠️ 交易数据不可用。",approvalDataNotAvailable:"⚠️ 授权数据不可用。",approving:"正在授权 {symbol}... 请在钱包中确认。",approvalSuccess:"✅ {symbol} 授权成功!",approvalConfirmSwap:"现在您可以执行兑换了。",confirmSwapButton:"确认兑换",approvalFailed:"❌ 授权失败。请重试。",couldNotFetchBalance:"⚠️ 无法获取您的钱包余额。",couldNotLoadBalance:"⚠️ 无法加载余额。请重试。",couldNotFetchBalanceRetry:"⚠️ 无法获取您的余额。请重试。",nftSendReview:"📤 发送 **{name}** ({standard} #{tokenId})\n\n请核对并在下方填写接收者地址:",nftCollectionHeader:"保有中のNFT一覧 :\n\n{list}",nftMoreItems:"\n\n他 {count} 件のNFT...",nftSelectBelow:"\n\n送信するNFTを以下から選択してください",nftNoCollection:"您在该链的钱包中没有任何 NFT。",nftMultipleMatchesForTokenId:"在您的钱包中找到了 {count} 个 Token ID #{tokenId} 的 NFT。请选择您要发送的 NFT:",nftNotFoundInWallet:'我在您的 NFT 收藏中没找到 "{name}"。以下是您的 NFT:',nftFetchError:"抱歉,获取您的 NFT 时出错。",trendingTokensHeader:"📈 以下是 {chain} 链上目前呈上升趋势的热门代币列表",trendingTokensQuestion:"\n有您想购买的代币吗?",trendingTokensError:"抱歉,获取热门代币时出错。",errorProcessingRequest:"抱歉,处理您的请求时出错。",buttonBuyWith:"使用 {symbol} 购买",buttonUsePercent:"使用 {percent}% 的 {symbol}",buttonBuyToken:"购买 {name} ({symbol})",buttonSendNft:"发送 {name}",buttonSwapTo:"兑换为 {name} ({symbol})",buttonBuySymbol:"购买 {symbol}",viewBalancesLoading:"正在获取您的钱包余额...",viewBalancesHeader:"您在 {chain} 上的代币余额:\n\n{list}\n\n选择一个代币进行操作:",viewBalancesEmpty:"您在该链的钱包中没有任何代币。",viewBalancesFetchError:"抱歉,获取您的余额时出错。",buttonSendToken:"发送 {symbol}",buttonSwapToken:"兑换 {symbol}",buttonBuyMoreToken:"购买更多 {symbol}",actionSendNativeLabel:"发送原生代币",actionSendNativeDesc:"将原生代币 (ETH, BNB, MATIC 等) 发送到指定地址",actionSendTokenLabel:"发送代币 (ERC20)",actionSendTokenDesc:"将 ERC20 代币发送到指定地址",actionSwapTokenLabel:"兑换代币",actionSwapTokenDesc:"将一种代币兑换为另一种",actionApproveTokenLabel:"授权代币",actionApproveTokenDesc:"授权支出方使用您的代币",actionWrapNativeLabel:"包装 (Wrap) 原生代币",actionWrapNativeDesc:"包装原生代币 (例如 ETH → WETH)",actionUnwrapNativeLabel:"解包 (Unwrap) 原生代币",actionUnwrapNativeDesc:"解包原生代币 (例如 WETH → ETH)",actionSendNftLabel:"发送 NFT",actionSendNftDesc:"将 ERC721 或 ERC1155 NFT 转移到另一个地址",fieldToAddress:"接收者地址",fieldAmount:"金额",fieldTokenContract:"代币合约",fieldTokenSymbol:"代币符号",fieldDecimals:"精度 (Decimals)",fieldTokenIn:"源代币 (From)",fieldTokenInSymbol:"源代币符号",fieldTokenOut:"目标代币 (To)",fieldTokenOutSymbol:"目标代币符号",fieldTokenInDecimals:"源代币精度",fieldTokenOutDecimals:"目标代币精度",fieldSpenderAddress:"支出方 (Spender) 地址",fieldAmountUnlimited:"金额 (留空 = 无限制)",fieldNftContract:"NFT 合约",fieldTokenId:"代币 ID",fieldTokenStandard:"代币标准",fieldNftName:"NFT 名称",formMustBePositiveInteger:"必须为正整数",formAmountExceedsNft:"金额不能超过可用余额 {max}",receivedButtonValue:"收到: {value}",actionExecutedFor:'操作 "{action}" 已执行,对象为: {value}',buyTokenHelp:"我会帮您购买 {symbol}。让我为您显示可用于交易的代币。",tokenNotFoundOnChain:'我在该链上没找到代币 "{symbol}"。以下是您可以购买的热门代币:',swapPreparing:"正在准备兑换...",swapConfirmYes:"是",swapChooseFrom:"请选择您想从哪个代币进行兑换:",swapChooseTo:"您想兑换 {symbol}。请选择您想收到的代币:",swapNeedDetails:"我需要更多关于兑换的细节。请指定您想兑换的代币(例如 “将 1 ETH 兑换为 USDC”)。",viewNftsLoading:"正在为您展示 NFT 收藏!",sendTokenChoose:"您想发送哪个代币?",sendNftChoose:"您想发送哪个 NFT?",swapChooseToken:"您想兑换哪个代币?以下是您的当前余额:",spendable:"可用余额",welcomeMessage:"**欢迎! 🚀**\n您已连接并准备好探索 DeFi!我可以帮您进行交易、查询价格,并在需要时分析您的资产组合。",sendOtherNfts:"\n如果您想发送的 NFT 不在上方列表中,请访问我们的网站进行发送。\n{link}"}};function a(e,n){return o[n]?.[e]??o.en[e]??e}const i=t.createContext(void 0),r=({children:e,initialLanguage:o="en"})=>{const[r,s]=t.useState(o);t.useEffect(()=>{o&&s(o)},[o]);const c=t.useCallback(e=>a(e,r),[r]),l=t.useCallback((e,n)=>function(e,n){return e.replace(/\{(\w+)\}/g,(e,t)=>n[t]??`{${t}}`)}(a(e,r),n),[r]);return n.jsx(i.Provider,{value:{language:r,setLanguage:s,t:c,ti:l},children:e})},s=()=>{const e=t.useContext(i);if(!e)throw new Error("useLanguage must be used within a LanguageProvider");return e},c=t.memo(({onClick:e,buttonSize:t=56})=>{const{t:o}=s();return n.jsx("button",{className:"chat-button",onClick:e,onKeyDown:n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),e())},"aria-label":o("openChat"),title:o("openChatTitle"),type:"button",children:n.jsx("img",{src:"data:image/png;base64,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",width:t,height:t,alt:"Ask AI"})})});function l(e){const n={formatters:void 0,fees:void 0,serializers:void 0,...e};return Object.assign(n,{extend:function e(n){return t=>{const o="function"==typeof t?t(n):t,a={...n,...o};return Object.assign(a,{extend:e(a)})}}(n)})}const d="2.47.0";let u=`viem@${d}`;class f extends Error{constructor(e,n={}){const t=n.cause instanceof f?n.cause.details:n.cause?.message?n.cause.message:n.details,o=n.cause instanceof f&&n.cause.docsPath||n.docsPath,a=(({docsBaseUrl:e,docsPath:n="",docsSlug:t})=>n?`${e??"https://viem.sh"}${n}${t?`#${t}`:""}`:void 0)?.({...n,docsPath:o});super([e||"An error occurred.","",...n.metaMessages?[...n.metaMessages,""]:[],...a?[`Docs: ${a}`]:[],...t?[`Details: ${t}`]:[],...u?[`Version: ${u}`]:[]].join("\n"),n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=t,this.docsPath=o,this.metaMessages=n.metaMessages,this.name=n.name??this.name,this.shortMessage=e,this.version=d}walk(e){return h(this,e)}}function h(e,n){return n?.(e)?e:e&&"object"==typeof e&&"cause"in e&&void 0!==e.cause?h(e.cause,n):n?null:e}class m extends f{constructor({max:e,min:n,signed:t,size:o,value:a}){super(`Number "${a}" is not in safe ${o?`${8*o}-bit ${t?"signed":"unsigned"} `:""}integer range ${e?`(${n} to ${e})`:`(above ${n})`}`,{name:"IntegerOutOfRangeError"})}}class p extends f{constructor({givenSize:e,maxSize:n}){super(`Size cannot exceed ${n} bytes. Given size: ${e} bytes.`,{name:"SizeOverflowError"})}}function w(e,{strict:n=!0}={}){return!!e&&"string"==typeof e&&(n?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith("0x"))}function b(e){return w(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}function g(e,{dir:n="left"}={}){let t="string"==typeof e?e.replace("0x",""):e,o=0;for(let a=0;a<t.length-1&&"0"===t["left"===n?a:t.length-a-1].toString();a++)o++;return t="left"===n?t.slice(o):t.slice(0,t.length-o),"string"==typeof e?(1===t.length&&"right"===n&&(t=`${t}0`),`0x${t.length%2==1?`0${t}`:t}`):t}class y extends f{constructor({offset:e,position:n,size:t}){super(`Slice ${"start"===n?"starting":"ending"} at offset "${e}" is out-of-bounds (size: ${t}).`,{name:"SliceOffsetOutOfBoundsError"})}}class A extends f{constructor({size:e,targetSize:n,type:t}){super(`${t.charAt(0).toUpperCase()}${t.slice(1).toLowerCase()} size (${e}) exceeds padding size (${n}).`,{name:"SizeExceedsPaddingSizeError"})}}function k(e,{dir:n,size:t=32}={}){return"string"==typeof e?v(e,{dir:n,size:t}):function(e,{dir:n,size:t=32}={}){if(null===t)return e;if(e.length>t)throw new A({size:e.length,targetSize:t,type:"bytes"});const o=new Uint8Array(t);for(let a=0;a<t;a++){const i="right"===n;o[i?a:t-a-1]=e[i?a:e.length-a-1]}return o}(e,{dir:n,size:t})}function v(e,{dir:n,size:t=32}={}){if(null===t)return e;const o=e.replace("0x","");if(o.length>2*t)throw new A({size:Math.ceil(o.length/2),targetSize:t,type:"hex"});return`0x${o["right"===n?"padEnd":"padStart"](2*t,"0")}`}const C=Array.from({length:256},(e,n)=>n.toString(16).padStart(2,"0"));function T(e,n={}){return"number"==typeof e||"bigint"==typeof e?x(e,n):"string"==typeof e?S(e,n):"boolean"==typeof e?I(e,n):E(e,n)}function I(e,n={}){const t=`0x${Number(e)}`;return"number"==typeof n.size?(L(t,{size:n.size}),k(t,{size:n.size})):t}function E(e,n={}){let t="";for(let a=0;a<e.length;a++)t+=C[e[a]];const o=`0x${t}`;return"number"==typeof n.size?(L(o,{size:n.size}),k(o,{dir:"right",size:n.size})):o}function x(e,n={}){const{signed:t,size:o}=n,a=BigInt(e);let i;o?i=t?(1n<<8n*BigInt(o)-1n)-1n:2n**(8n*BigInt(o))-1n:"number"==typeof e&&(i=BigInt(Number.MAX_SAFE_INTEGER));const r="bigint"==typeof i&&t?-i-1n:0;if(i&&a>i||a<r){const n="bigint"==typeof e?"n":"";throw new m({max:i?`${i}${n}`:void 0,min:`${r}${n}`,signed:t,size:o,value:`${e}${n}`})}const s=`0x${(t&&a<0?(1n<<BigInt(8*o))+BigInt(a):a).toString(16)}`;return o?k(s,{size:o}):s}const N=new TextEncoder;function S(e,n={}){return E(N.encode(e),n)}const B=new TextEncoder;function R(e,n={}){return"number"==typeof e||"bigint"==typeof e?function(e,n){return U(x(e,n))}(e,n):"boolean"==typeof e?function(e,n={}){const t=new Uint8Array(1);return t[0]=Number(e),"number"==typeof n.size?(L(t,{size:n.size}),k(t,{size:n.size})):t}(e,n):w(e)?U(e,n):F(e,n)}const D={zero:48,nine:57,A:65,F:70,a:97,f:102};function O(e){return e>=D.zero&&e<=D.nine?e-D.zero:e>=D.A&&e<=D.F?e-(D.A-10):e>=D.a&&e<=D.f?e-(D.a-10):void 0}function U(e,n={}){let t=e;n.size&&(L(t,{size:n.size}),t=k(t,{dir:"right",size:n.size}));let o=t.slice(2);o.length%2&&(o=`0${o}`);const a=o.length/2,i=new Uint8Array(a);for(let r=0,s=0;r<a;r++){const e=O(o.charCodeAt(s++)),n=O(o.charCodeAt(s++));if(void 0===e||void 0===n)throw new f(`Invalid byte sequence ("${o[s-2]}${o[s-1]}" in "${o}").`);i[r]=16*e+n}return i}function F(e,n={}){const t=B.encode(e);return"number"==typeof n.size?(L(t,{size:n.size}),k(t,{dir:"right",size:n.size})):t}function L(e,{size:n}){if(b(e)>n)throw new p({givenSize:b(e),maxSize:n})}function M(e,n={}){const{signed:t}=n;n.size&&L(e,{size:n.size});const o=BigInt(e);if(!t)return o;const a=(e.length-2)/2;return o<=(1n<<8n*BigInt(a)-1n)-1n?o:o-BigInt(`0x${"f".padStart(2*a,"f")}`)-1n}function H(e,n={}){const t=M(e,n),o=Number(t);if(!Number.isSafeInteger(o))throw new m({max:`${Number.MAX_SAFE_INTEGER}`,min:`${Number.MIN_SAFE_INTEGER}`,signed:n.signed,size:n.size,value:`${t}n`});return o}function P(e,n){return({exclude:t,format:o})=>({exclude:t,format:(e,a)=>{const i=n(e,a);if(t)for(const n of t)delete i[n];return{...i,...o(e,a)}},type:e})}const Y={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function J(e,n){const t={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?H(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?H(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?Y[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return e.authorizationList&&(t.authorizationList=e.authorizationList.map(e=>({address:e.address,chainId:Number(e.chainId),nonce:Number(e.nonce),r:e.r,s:e.s,yParity:Number(e.yParity)}))),t.yParity=(()=>{if(e.yParity)return Number(e.yParity);if("bigint"==typeof t.v){if(0n===t.v||27n===t.v)return 0;if(1n===t.v||28n===t.v)return 1;if(t.v>=35n)return t.v%2n==0n?1:0}})(),"legacy"===t.type&&(delete t.accessList,delete t.maxFeePerBlobGas,delete t.maxFeePerGas,delete t.maxPriorityFeePerGas,delete t.yParity),"eip2930"===t.type&&(delete t.maxFeePerBlobGas,delete t.maxFeePerGas,delete t.maxPriorityFeePerGas),"eip1559"===t.type&&delete t.maxFeePerBlobGas,t}const V=P("transaction",J);function q(e,n){const t=(e.transactions??[]).map(e=>"string"==typeof e?e:J(e));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:t,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}const W=P("block",q),j={"0x0":"reverted","0x1":"success"};function G(e,n){const t={...e,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,contractAddress:e.contractAddress?e.contractAddress:null,cumulativeGasUsed:e.cumulativeGasUsed?BigInt(e.cumulativeGasUsed):null,effectiveGasPrice:e.effectiveGasPrice?BigInt(e.effectiveGasPrice):null,gasUsed:e.gasUsed?BigInt(e.gasUsed):null,logs:e.logs?e.logs.map(e=>function(e,{args:n,eventName:t}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,blockTimestamp:e.blockTimestamp?BigInt(e.blockTimestamp):null===e.blockTimestamp?null:void 0,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...t?{args:n,eventName:t}:{}}}(e)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?H(e.transactionIndex):null,status:e.status?j[e.status]:null,type:e.type?Y[e.type]||e.type:null};return e.blobGasPrice&&(t.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(t.blobGasUsed=BigInt(e.blobGasUsed)),t}const Q=P("transactionReceipt",G),z={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function X(e,n){const t={};return void 0!==e.authorizationList&&(t.authorizationList=e.authorizationList.map(e=>({address:e.address,r:e.r?x(BigInt(e.r)):e.r,s:e.s?x(BigInt(e.s)):e.s,chainId:x(e.chainId),nonce:x(e.nonce),...void 0!==e.yParity?{yParity:x(e.yParity)}:{},...void 0!==e.v&&void 0===e.yParity?{v:x(e.v)}:{}}))),void 0!==e.accessList&&(t.accessList=e.accessList),void 0!==e.blobVersionedHashes&&(t.blobVersionedHashes=e.blobVersionedHashes),void 0!==e.blobs&&("string"!=typeof e.blobs[0]?t.blobs=e.blobs.map(e=>E(e)):t.blobs=e.blobs),void 0!==e.data&&(t.data=e.data),e.account&&(t.from=e.account.address),void 0!==e.from&&(t.from=e.from),void 0!==e.gas&&(t.gas=x(e.gas)),void 0!==e.gasPrice&&(t.gasPrice=x(e.gasPrice)),void 0!==e.maxFeePerBlobGas&&(t.maxFeePerBlobGas=x(e.maxFeePerBlobGas)),void 0!==e.maxFeePerGas&&(t.maxFeePerGas=x(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=x(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(t.nonce=x(e.nonce)),void 0!==e.to&&(t.to=e.to),void 0!==e.type&&(t.type=z[e.type]),void 0!==e.value&&(t.value=x(e.value)),t}const Z=2n**256n-1n;function K(e){return"string"==typeof e[0]?_(e):function(e){let n=0;for(const a of e)n+=a.length;const t=new Uint8Array(n);let o=0;for(const a of e)t.set(a,o),o+=a.length;return t}(e)}function _(e){return`0x${e.reduce((e,n)=>e+n.replace("0x",""),"")}`}class $ extends f{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class ee extends f{constructor({length:e,position:n}){super(`Position \`${n}\` is out of bounds (\`0 < position < ${e}\`).`,{name:"PositionOutOfBoundsError"})}}class ne extends f{constructor({count:e,limit:n}){super(`Recursive read limit of \`${n}\` exceeded (recursive read count: \`${e}\`).`,{name:"RecursiveReadLimitExceededError"})}}const te={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new ne({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new ee({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new $({offset:e});const n=this.position-e;this.assertPosition(n),this.position=n},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new $({offset:e});const n=this.position+e;this.assertPosition(n),this.position=n},inspectByte(e){const n=e??this.position;return this.assertPosition(n),this.bytes[n]},inspectBytes(e,n){const t=n??this.position;return this.assertPosition(t+e-1),this.bytes.subarray(t,t+e)},inspectUint8(e){const n=e??this.position;return this.assertPosition(n),this.bytes[n]},inspectUint16(e){const n=e??this.position;return this.assertPosition(n+1),this.dataView.getUint16(n)},inspectUint24(e){const n=e??this.position;return this.assertPosition(n+2),(this.dataView.getUint16(n)<<8)+this.dataView.getUint8(n+2)},inspectUint32(e){const n=e??this.position;return this.assertPosition(n+3),this.dataView.getUint32(n)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,255&e),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this.o();const e=this.inspectByte();return this.position++,e},readBytes(e,n){this.assertReadLimit(),this.o();const t=this.inspectBytes(e);return this.position+=n??e,t},readUint8(){this.assertReadLimit(),this.o();const e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this.o();const e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this.o();const e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this.o();const e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){const n=this.position;return this.assertPosition(e),this.position=e,()=>this.position=n},o(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function oe(e,{recursiveReadLimit:n=8192}={}){const t=Object.create(te);return t.bytes=e,t.dataView=new DataView(e.buffer??e,e.byteOffset,e.byteLength),t.positionReadCount=new Map,t.recursiveReadLimit=n,t}function ae(e,n="hex"){const t=ie(e),o=oe(new Uint8Array(t.length));return t.encode(o),"hex"===n?E(o.bytes):o.bytes}function ie(e){return Array.isArray(e)?function(e){const n=e.reduce((e,n)=>e+n.length,0),t=re(n);return{length:n<=55?1+n:1+t+n,encode(o){n<=55?o.pushByte(192+n):(o.pushByte(247+t),1===t?o.pushUint8(n):2===t?o.pushUint16(n):3===t?o.pushUint24(n):o.pushUint32(n));for(const{encode:n}of e)n(o)}}}(e.map(e=>ie(e))):function(e){const n="string"==typeof e?U(e):e,t=re(n.length);return{length:1===n.length&&n[0]<128?1:n.length<=55?1+n.length:1+t+n.length,encode(e){1===n.length&&n[0]<128?e.pushBytes(n):n.length<=55?(e.pushByte(128+n.length),e.pushBytes(n)):(e.pushByte(183+t),1===t?e.pushUint8(n.length):2===t?e.pushUint16(n.length):3===t?e.pushUint24(n.length):e.pushUint32(n.length),e.pushBytes(n))}}}(e)}function re(e){if(e<256)return 1;if(e<65536)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new f("Length is too large.")}const se={gwei:9,wei:18},ce={ether:-9,wei:9};function le(e,n){let t=e.toString();const o=t.startsWith("-");o&&(t=t.slice(1)),t=t.padStart(n,"0");let[a,i]=[t.slice(0,t.length-n),t.slice(t.length-n)];return i=i.replace(/(0+)$/,""),`${o?"-":""}${a||"0"}${i?`.${i}`:""}`}function de(e,n="wei"){return le(e,se[n])}function ue(e,n="wei"){return le(e,ce[n])}function fe(e){const n=Object.entries(e).map(([e,n])=>void 0===n||!1===n?null:[e,n]).filter(Boolean),t=n.reduce((e,[n])=>Math.max(e,n.length),0);return n.map(([e,n])=>` ${`${e}:`.padEnd(t+1)} ${n}`).join("\n")}class he extends f{constructor({v:e}){super(`Invalid \`v\` value "${e}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class me extends f{constructor({transaction:e}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",fe(e),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class pe extends f{constructor({storageKey:e}){super(`Size for storage key "${e}" is invalid. Expected 32 bytes. Got ${Math.floor((e.length-2)/2)} bytes.`,{name:"InvalidStorageKeySizeError"})}}function we(e){const{kzg:n}=e,t=e.to??("string"==typeof e.blobs[0]?"hex":"bytes"),o="string"==typeof e.blobs[0]?e.blobs.map(e=>U(e)):e.blobs,a=[];for(const i of o)a.push(Uint8Array.from(n.blobToKzgCommitment(i)));return"bytes"===t?a:a.map(e=>E(e))}function be(e){const{kzg:n}=e,t=e.to??("string"==typeof e.blobs[0]?"hex":"bytes"),o="string"==typeof e.blobs[0]?e.blobs.map(e=>U(e)):e.blobs,a="string"==typeof e.commitments[0]?e.commitments.map(e=>U(e)):e.commitments,i=[];for(let r=0;r<o.length;r++){const e=o[r],t=a[r];i.push(Uint8Array.from(n.computeBlobKzgProof(e,t)))}return"bytes"===t?i:i.map(e=>E(e))}function ge(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function ye(e,...n){if(!((t=e)instanceof Uint8Array||ArrayBuffer.isView(t)&&"Uint8Array"===t.constructor.name))throw new Error("Uint8Array expected");var t;if(n.length>0&&!n.includes(e.length))throw new Error("Uint8Array expected of length "+n+", got length="+e.length)}function Ae(e,n=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(n&&e.finished)throw new Error("Hash#digest() has already been called")}function ke(e,n){ye(e);const t=n.outputLen;if(e.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function ve(...e){for(let n=0;n<e.length;n++)e[n].fill(0)}function Ce(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function Te(e,n){return e<<32-n|e>>>n}function Ie(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}const Ee=(()=>68===new Uint8Array(new Uint32Array([287454020]).buffer)[0])()?e=>e:function(e){for(let n=0;n<e.length;n++)e[n]=Ie(e[n]);return e};function xe(e){return"string"==typeof e&&(e=function(e){if("string"!=typeof e)throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(e))}(e)),ye(e),e}class Ne{}function Se(e){const n=n=>e().update(xe(n)).digest(),t=e();return n.outputLen=t.outputLen,n.blockLen=t.blockLen,n.create=()=>e(),n}function Be(e,n,t){return e&n^~e&t}function Re(e,n,t){return e&n^e&t^n&t}class De extends Ne{constructor(e,n,t,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=t,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Ce(this.buffer)}update(e){Ae(this),ye(e=xe(e));const{view:n,buffer:t,blockLen:o}=this,a=e.length;for(let i=0;i<a;){const r=Math.min(o-this.pos,a-i);if(r===o){const n=Ce(e);for(;o<=a-i;i+=o)this.process(n,i);continue}t.set(e.subarray(i,i+r),this.pos),this.pos+=r,i+=r,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Ae(this),ke(e,this),this.finished=!0;const{buffer:n,view:t,blockLen:o,isLE:a}=this;let{pos:i}=this;n[i++]=128,ve(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(t,0),i=0);for(let d=i;d<o;d++)n[d]=0;!function(e,n,t,o){if("function"==typeof e.setBigUint64)return e.setBigUint64(n,t,o);const a=BigInt(32),i=BigInt(4294967295),r=Number(t>>a&i),s=Number(t&i),c=o?4:0,l=o?0:4;e.setUint32(n+c,r,o),e.setUint32(n+l,s,o)}(t,o-8,BigInt(8*this.length),a),this.process(t,0);const r=Ce(e),s=this.outputLen;if(s%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const c=s/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<c;d++)r.setUint32(4*d,l[d],a)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const t=e.slice(0,n);return this.destroy(),t}i(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:t,length:o,finished:a,destroyed:i,pos:r}=this;return e.destroyed=i,e.finished=a,e.length=o,e.pos=r,o%n&&e.buffer.set(t),e}clone(){return this.i()}}const Oe=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ue=BigInt(2**32-1),Fe=BigInt(32);function Le(e,n=!1){return n?{h:Number(e&Ue),l:Number(e>>Fe&Ue)}:{h:0|Number(e>>Fe&Ue),l:0|Number(e&Ue)}}const Me=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),He=new Uint32Array(64);class Pe extends De{constructor(e=32){super(64,e,8,!1),this.A=0|Oe[0],this.B=0|Oe[1],this.C=0|Oe[2],this.D=0|Oe[3],this.E=0|Oe[4],this.F=0|Oe[5],this.G=0|Oe[6],this.H=0|Oe[7]}get(){const{A:e,B:n,C:t,D:o,E:a,F:i,G:r,H:s}=this;return[e,n,t,o,a,i,r,s]}set(e,n,t,o,a,i,r,s){this.A=0|e,this.B=0|n,this.C=0|t,this.D=0|o,this.E=0|a,this.F=0|i,this.G=0|r,this.H=0|s}process(e,n){for(let d=0;d<16;d++,n+=4)He[d]=e.getUint32(n,!1);for(let d=16;d<64;d++){const e=He[d-15],n=He[d-2],t=Te(e,7)^Te(e,18)^e>>>3,o=Te(n,17)^Te(n,19)^n>>>10;He[d]=o+He[d-7]+t+He[d-16]|0}let{A:t,B:o,C:a,D:i,E:r,F:s,G:c,H:l}=this;for(let d=0;d<64;d++){const e=l+(Te(r,6)^Te(r,11)^Te(r,25))+Be(r,s,c)+Me[d]+He[d]|0,n=(Te(t,2)^Te(t,13)^Te(t,22))+Re(t,o,a)|0;l=c,c=s,s=r,r=i+e|0,i=a,a=o,o=t,t=e+n|0}t=t+this.A|0,o=o+this.B|0,a=a+this.C|0,i=i+this.D|0,r=r+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(t,o,a,i,r,s,c,l)}roundClean(){ve(He)}destroy(){this.set(0,0,0,0,0,0,0,0),ve(this.buffer)}}const Ye=Se(()=>new Pe);function Je(e){const{commitment:n,version:t=1}=e,o=e.to??("string"==typeof n?"hex":"bytes"),a=Ye(w(i=n,{strict:!1})?R(i):i);var i;return a.set([t],0),"bytes"===o?a:E(a)}const Ve=761855;class qe extends f{constructor({maxSize:e,size:n}){super("Blob size is too large.",{metaMessages:[`Max: ${e} bytes`,`Given: ${n} bytes`],name:"BlobSizeTooLargeError"})}}class We extends f{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class je extends f{constructor({hash:e,size:n}){super(`Versioned hash "${e}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${n}`],name:"InvalidVersionedHashSizeError"})}}class Ge extends f{constructor({hash:e,version:n}){super(`Versioned hash "${e}" version is invalid.`,{metaMessages:["Expected: 1",`Received: ${n}`],name:"InvalidVersionedHashVersionError"})}}class Qe extends f{constructor({address:e}){super(`Address "${e}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."],name:"InvalidAddressError"})}}class ze extends f{constructor({chainId:e}){super("number"==typeof e?`Chain ID "${e}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class Xe extends f{constructor({cause:e,message:n}={}){const t=n?.replace("execution reverted: ","")?.replace("execution reverted","");super(`Execution reverted ${t?`with reason: ${t}`:"for an unknown reason"}.`,{cause:e,name:"ExecutionRevertedError"})}}Object.defineProperty(Xe,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(Xe,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted|gas required exceeds allowance/});class Ze extends f{constructor({cause:e,maxFeePerGas:n}={}){super(`The fee cap (\`maxFeePerGas\`${n?` = ${ue(n)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e,name:"FeeCapTooHighError"})}}Object.defineProperty(Ze,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class Ke extends f{constructor({cause:e,maxFeePerGas:n}={}){super(`The fee cap (\`maxFeePerGas\`${n?` = ${ue(n)}`:""} gwei) cannot be lower than the block base fee.`,{cause:e,name:"FeeCapTooLowError"})}}Object.defineProperty(Ke,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});class _e extends f{constructor({cause:e,nonce:n}={}){super(`Nonce provided for the transaction ${n?`(${n}) `:""}is higher than the next one expected.`,{cause:e,name:"NonceTooHighError"})}}Object.defineProperty(_e,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});class $e extends f{constructor({cause:e,nonce:n}={}){super([`Nonce provided for the transaction ${n?`(${n}) `:""}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join("\n"),{cause:e,name:"NonceTooLowError"})}}Object.defineProperty($e,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});class en extends f{constructor({cause:e,nonce:n}={}){super(`Nonce provided for the transaction ${n?`(${n}) `:""}exceeds the maximum allowed nonce.`,{cause:e,name:"NonceMaxValueError"})}}Object.defineProperty(en,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});class nn extends f{constructor({cause:e}={}){super(["The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account."].join("\n"),{cause:e,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:"InsufficientFundsError"})}}Object.defineProperty(nn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class tn extends f{constructor({cause:e,gas:n}={}){super(`The amount of gas ${n?`(${n}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:e,name:"IntrinsicGasTooHighError"})}}Object.defineProperty(tn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class on extends f{constructor({cause:e,gas:n}={}){super(`The amount of gas ${n?`(${n}) `:""}provided for the transaction is too low.`,{cause:e,name:"IntrinsicGasTooLowError"})}}Object.defineProperty(on,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class an extends f{constructor({cause:e}){super("The transaction type is not supported for this chain.",{cause:e,name:"TransactionTypeNotSupportedError"})}}Object.defineProperty(an,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class rn extends f{constructor({cause:e,maxPriorityFeePerGas:n,maxFeePerGas:t}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${n?` = ${ue(n)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${t?` = ${ue(t)} gwei`:""}).`].join("\n"),{cause:e,name:"TipAboveFeeCapError"})}}Object.defineProperty(rn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class sn extends f{constructor({cause:e}){super(`An error occurred while executing: ${e?.shortMessage}`,{cause:e,name:"UnknownNodeError"})}}class cn extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){const n=super.get(e);return super.has(e)&&void 0!==n&&(this.delete(e),super.set(e,n)),n}set(e,n){if(super.set(e,n),this.maxSize&&this.size>this.maxSize){const e=this.keys().next().value;e&&this.delete(e)}return this}}const ln=BigInt(0),dn=BigInt(1),un=BigInt(2),fn=BigInt(7),hn=BigInt(256),mn=BigInt(113),pn=[],wn=[],bn=[];for(let $o=0,ea=dn,na=1,ta=0;$o<24;$o++){[na,ta]=[ta,(2*na+3*ta)%5],pn.push(2*(5*ta+na)),wn.push(($o+1)*($o+2)/2%64);let e=ln;for(let n=0;n<7;n++)ea=(ea<<dn^(ea>>fn)*mn)%hn,ea&un&&(e^=dn<<(dn<<BigInt(n))-dn);bn.push(e)}const gn=function(e,n=!1){const t=e.length;let o=new Uint32Array(t),a=new Uint32Array(t);for(let i=0;i<t;i++){const{h:t,l:r}=Le(e[i],n);[o[i],a[i]]=[t,r]}return[o,a]}(bn,!0),yn=gn[0],An=gn[1],kn=(e,n,t)=>t>32?((e,n,t)=>n<<t-32|e>>>64-t)(e,n,t):((e,n,t)=>e<<t|n>>>32-t)(e,n,t),vn=(e,n,t)=>t>32?((e,n,t)=>e<<t-32|n>>>64-t)(e,n,t):((e,n,t)=>n<<t|e>>>32-t)(e,n,t);class Cn extends Ne{constructor(e,n,t,o=!1,a=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=n,this.outputLen=t,this.enableXOF=o,this.rounds=a,ge(t),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");var i;this.state=new Uint8Array(200),this.state32=(i=this.state,new Uint32Array(i.buffer,i.byteOffset,Math.floor(i.byteLength/4)))}clone(){return this.i()}keccak(){Ee(this.state32),function(e,n=24){const t=new Uint32Array(10);for(let o=24-n;o<24;o++){for(let o=0;o<10;o++)t[o]=e[o]^e[o+10]^e[o+20]^e[o+30]^e[o+40];for(let o=0;o<10;o+=2){const n=(o+8)%10,a=(o+2)%10,i=t[a],r=t[a+1],s=kn(i,r,1)^t[n],c=vn(i,r,1)^t[n+1];for(let t=0;t<50;t+=10)e[o+t]^=s,e[o+t+1]^=c}let n=e[2],a=e[3];for(let t=0;t<24;t++){const o=wn[t],i=kn(n,a,o),r=vn(n,a,o),s=pn[t];n=e[s],a=e[s+1],e[s]=i,e[s+1]=r}for(let o=0;o<50;o+=10){for(let n=0;n<10;n++)t[n]=e[o+n];for(let n=0;n<10;n++)e[o+n]^=~t[(n+2)%10]&t[(n+4)%10]}e[0]^=yn[o],e[1]^=An[o]}ve(t)}(this.state32,this.rounds),Ee(this.state32),this.posOut=0,this.pos=0}update(e){Ae(this),ye(e=xe(e));const{blockLen:n,state:t}=this,o=e.length;for(let a=0;a<o;){const i=Math.min(n-this.pos,o-a);for(let n=0;n<i;n++)t[this.pos++]^=e[a++];this.pos===n&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:e,suffix:n,pos:t,blockLen:o}=this;e[t]^=n,128&n&&t===o-1&&this.keccak(),e[o-1]^=128,this.keccak()}writeInto(e){Ae(this,!1),ye(e),this.finish();const n=this.state,{blockLen:t}=this;for(let o=0,a=e.length;o<a;){this.posOut>=t&&this.keccak();const i=Math.min(t-this.posOut,a-o);e.set(n.subarray(this.posOut,this.posOut+i),o),this.posOut+=i,o+=i}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return ge(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(ke(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,ve(this.state)}i(e){const{blockLen:n,suffix:t,outputLen:o,rounds:a,enableXOF:i}=this;return e||(e=new Cn(n,t,o,i,a)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=a,e.suffix=t,e.outputLen=o,e.enableXOF=i,e.destroyed=this.destroyed,e}}const Tn=(()=>Se(()=>new Cn(136,1,32)))();function In(e,n){const t=n||"hex",o=Tn(w(e,{strict:!1})?R(e):e);return"bytes"===t?o:T(o)}const En=new cn(8192),xn=/^0x[a-fA-F0-9]{40}$/,Nn=new cn(8192);function Sn(e,n){const{strict:t=!0}=n??{},o=`${e}.${t}`;if(Nn.has(o))return Nn.get(o);const a=!(!xn.test(e)||e.toLowerCase()!==e&&t&&function(e){if(En.has(`${e}.undefined`))return En.get(`${e}.undefined`);const n=e.substring(2).toLowerCase(),t=In(F(n),"bytes"),o=n.split("");for(let i=0;i<40;i+=2)t[i>>1]>>4>=8&&o[i]&&(o[i]=o[i].toUpperCase()),(15&t[i>>1])>=8&&o[i+1]&&(o[i+1]=o[i+1].toUpperCase());const a=`0x${o.join("")}`;return En.set(`${e}.undefined`,a),a}(e)!==e);return Nn.set(o,a),a}function Bn(e,n,t,{strict:o}={}){return w(e,{strict:!1})?function(e,n,t,{strict:o}={}){Rn(e,n);const a=`0x${e.replace("0x","").slice(2*(n??0),2*(t??e.length))}`;return o&&Dn(a,n,t),a}(e,n,t,{strict:o}):function(e,n,t,{strict:o}={}){Rn(e,n);const a=e.slice(n,t);return o&&Dn(a,n,t),a}(e,n,t,{strict:o})}function Rn(e,n){if("number"==typeof n&&n>0&&n>b(e)-1)throw new y({offset:n,position:"start",size:b(e)})}function Dn(e,n,t){if("number"==typeof n&&"number"==typeof t&&b(e)!==t-n)throw new y({offset:t,position:"end",size:b(e)})}function On(e){const{chainId:n,maxPriorityFeePerGas:t,maxFeePerGas:o,to:a}=e;if(n<=0)throw new ze({chainId:n});if(a&&!Sn(a))throw new Qe({address:a});if(o&&o>Z)throw new Ze({maxFeePerGas:o});if(t&&o&&t>o)throw new rn({maxFeePerGas:o,maxPriorityFeePerGas:t})}function Un(e){if(!e||0===e.length)return[];const n=[];for(let t=0;t<e.length;t++){const{address:o,storageKeys:a}=e[t];for(let e=0;e<a.length;e++)if(a[e].length-2!=64)throw new pe({storageKey:a[e]});if(!Sn(o,{strict:!1}))throw new Qe({address:o});n.push([o,a])}return n}function Fn(e,n){const t=function(e){if(e.type)return e.type;if(void 0!==e.authorizationList)return"eip7702";if(void 0!==e.blobs||void 0!==e.blobVersionedHashes||void 0!==e.maxFeePerBlobGas||void 0!==e.sidecars)return"eip4844";if(void 0!==e.maxFeePerGas||void 0!==e.maxPriorityFeePerGas)return"eip1559";if(void 0!==e.gasPrice)return void 0!==e.accessList?"eip2930":"legacy";throw new me({transaction:e})}(e);return"eip1559"===t?function(e,n){const{chainId:t,gas:o,nonce:a,to:i,value:r,maxFeePerGas:s,maxPriorityFeePerGas:c,accessList:l,data:d}=e;On(e);const u=Un(l);return _(["0x02",ae([x(t),a?x(a):"0x",c?x(c):"0x",s?x(s):"0x",o?x(o):"0x",i??"0x",r?x(r):"0x",d??"0x",u,...Ln(e,n)])])}(e,n):"eip2930"===t?function(e,n){const{chainId:t,gas:o,data:a,nonce:i,to:r,value:s,accessList:c,gasPrice:l}=e;!function(e){const{chainId:n,maxPriorityFeePerGas:t,gasPrice:o,maxFeePerGas:a,to:i}=e;if(n<=0)throw new ze({chainId:n});if(i&&!Sn(i))throw new Qe({address:i});if(t||a)throw new f("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(o&&o>Z)throw new Ze({maxFeePerGas:o})}(e);const d=Un(c);return _(["0x01",ae([x(t),i?x(i):"0x",l?x(l):"0x",o?x(o):"0x",r??"0x",s?x(s):"0x",a??"0x",d,...Ln(e,n)])])}(e,n):"eip4844"===t?function(e,n){const{chainId:t,gas:o,nonce:a,to:i,value:r,maxFeePerBlobGas:s,maxFeePerGas:c,maxPriorityFeePerGas:l,accessList:d,data:u}=e;!function(e){const{blobVersionedHashes:n}=e;if(n){if(0===n.length)throw new We;for(const e of n){const n=b(e),t=H(Bn(e,0,1));if(32!==n)throw new je({hash:e,size:n});if(1!==t)throw new Ge({hash:e,version:t})}}On(e)}(e);let f=e.blobVersionedHashes,h=e.sidecars;if(e.blobs&&(void 0===f||void 0===h)){const n="string"==typeof e.blobs[0]?e.blobs:e.blobs.map(e=>E(e)),t=e.kzg,o=we({blobs:n,kzg:t});void 0===f&&(f=function(e){const{commitments:n,version:t}=e,o=e.to??("string"==typeof n[0]?"hex":"bytes"),a=[];for(const i of n)a.push(Je({commitment:i,to:o,version:t}));return a}({commitments:o})),void 0===h&&(h=function(e){const{data:n,kzg:t,to:o}=e,a=e.blobs??function(e){const n=e.to??("string"==typeof e.data?"hex":"bytes"),t="string"==typeof e.data?U(e.data):e.data,o=b(t);if(!o)throw new We;if(o>Ve)throw new qe({maxSize:Ve,size:o});const a=[];let i=!0,r=0;for(;i;){const e=oe(new Uint8Array(131072));let n=0;for(;n<4096;){const o=t.slice(r,r+31);if(e.pushByte(0),e.pushBytes(o),o.length<31){e.pushByte(128),i=!1;break}n++,r+=31}a.push(e)}return"bytes"===n?a.map(e=>e.bytes):a.map(e=>E(e.bytes))}({data:n,to:o}),i=e.commitments??we({blobs:a,kzg:t,to:o}),r=e.proofs??be({blobs:a,commitments:i,kzg:t,to:o}),s=[];for(let c=0;c<a.length;c++)s.push({blob:a[c],commitment:i[c],proof:r[c]});return s}({blobs:n,commitments:o,proofs:be({blobs:n,commitments:o,kzg:t})}))}const m=Un(d),p=[x(t),a?x(a):"0x",l?x(l):"0x",c?x(c):"0x",o?x(o):"0x",i??"0x",r?x(r):"0x",u??"0x",m,s?x(s):"0x",f??[],...Ln(e,n)],w=[],g=[],y=[];if(h)for(let b=0;b<h.length;b++){const{blob:e,commitment:n,proof:t}=h[b];w.push(e),g.push(n),y.push(t)}return _(["0x03",ae(h?[p,w,g,y]:p)])}(e,n):"eip7702"===t?function(e,n){const{authorizationList:t,chainId:o,gas:a,nonce:i,to:r,value:s,maxFeePerGas:c,maxPriorityFeePerGas:l,accessList:d,data:u}=e;!function(e){const{authorizationList:n}=e;if(n)for(const t of n){const{chainId:e}=t,n=t.address;if(!Sn(n))throw new Qe({address:n});if(e<0)throw new ze({chainId:e})}On(e)}(e);const f=Un(d),h=function(e){if(!e||0===e.length)return[];const n=[];for(const t of e){const{chainId:e,nonce:o,...a}=t,i=t.address;n.push([e?T(e):"0x",i,o?T(o):"0x",...Ln({},a)])}return n}(t);return _(["0x04",ae([x(o),i?x(i):"0x",l?x(l):"0x",c?x(c):"0x",a?x(a):"0x",r??"0x",s?x(s):"0x",u??"0x",f,h,...Ln(e,n)])])}(e,n):function(e,n){const{chainId:t=0,gas:o,data:a,nonce:i,to:r,value:s,gasPrice:c}=e;!function(e){const{chainId:n,maxPriorityFeePerGas:t,gasPrice:o,maxFeePerGas:a,to:i}=e;if(i&&!Sn(i))throw new Qe({address:i});if(void 0!==n&&n<=0)throw new ze({chainId:n});if(t||a)throw new f("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(o&&o>Z)throw new Ze({maxFeePerGas:o})}(e);let l=[i?x(i):"0x",c?x(c):"0x",o?x(o):"0x",r??"0x",s?x(s):"0x",a??"0x"];if(n){const e=(()=>{if(n.v>=35n)return(n.v-35n)/2n>0?n.v:27n+(35n===n.v?0n:1n);if(t>0)return BigInt(2*t)+BigInt(35n+n.v-27n);const e=27n+(27n===n.v?0n:1n);if(n.v!==e)throw new he({v:n.v});return e})(),o=g(n.r),a=g(n.s);l=[...l,x(e),"0x00"===o?"0x":o,"0x00"===a?"0x":a]}else t>0&&(l=[...l,x(t),"0x","0x"]);return ae(l)}(e,n)}function Ln(e,n){const t=n??e,{v:o,yParity:a}=t;if(void 0===t.r)return[];if(void 0===t.s)return[];if(void 0===o&&void 0===a)return[];const i=g(t.r),r=g(t.s);return["number"==typeof a?a?x(1):"0x":0n===o?"0x":1n===o?x(1):27n===o?"0x":x(1),"0x00"===i?"0x":i,"0x00"===r?"0x":r]}const Mn={blockTime:2e3,contracts:{gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}},formatters:{block:W({format(e){const n=e.transactions?.map(e=>{if("string"==typeof e)return e;const n=J(e);return"0x7e"===n.typeHex&&(n.isSystemTx=e.isSystemTx,n.mint=e.mint?M(e.mint):void 0,n.sourceHash=e.sourceHash,n.type="deposit"),n});return{transactions:n,stateRoot:e.stateRoot}}}),transaction:V({format(e){const n={};return"0x7e"===e.type&&(n.isSystemTx=e.isSystemTx,n.mint=e.mint?M(e.mint):void 0,n.sourceHash=e.sourceHash,n.type="deposit"),n}}),transactionReceipt:Q({format:e=>({l1GasPrice:e.l1GasPrice?M(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?M(e.l1GasUsed):null,l1Fee:e.l1Fee?M(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null})})},serializers:{transaction:function(e,n){return function(e){return"deposit"===e.type||void 0!==e.sourceHash}(e)?function(e){!function(e){const{from:n,to:t}=e;if(n&&!Sn(n))throw new Qe({address:n});if(t&&!Sn(t))throw new Qe({address:t})}(e);const{sourceHash:n,data:t,from:o,gas:a,isSystemTx:i,mint:r,to:s,value:c}=e;return _(["0x7e",ae([n,o,s??"0x",r?T(r):"0x",c?T(c):"0x",a?T(a):"0x",i?"0x1":"0x",t??"0x"])])}(e):Fn(e,n)}}},Hn=l({id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},blockTime:250,rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io",apiUrl:"https://api.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}}}),Pn=l({id:43114,name:"Avalanche",blockTime:1700,nativeCurrency:{decimals:18,name:"Avalanche",symbol:"AVAX"},rpcUrls:{default:{http:["https://api.avax.network/ext/bc/C/rpc"]}},blockExplorers:{default:{name:"SnowTrace",url:"https://snowtrace.io",apiUrl:"https://api.snowtrace.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11907934}}}),Yn=1,Jn=l({...Mn,id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://basescan.org",apiUrl:"https://api.basescan.org/api"}},contracts:{...Mn.contracts,disputeGameFactory:{[Yn]:{address:"0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e"}},l2OutputOracle:{[Yn]:{address:"0x56315b90c40730925ec5485cf004d835058518A0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022},portal:{[Yn]:{address:"0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",blockCreated:17482143}},l1StandardBridge:{[Yn]:{address:"0x3154Cf16ccdb4C6d922629664174b904d80F2C35",blockCreated:17482143}}},sourceId:1}),Vn=l({id:56,name:"BNB Smart Chain",blockTime:750,nativeCurrency:{decimals:18,name:"BNB",symbol:"BNB"},rpcUrls:{default:{http:["https://56.rpc.thirdweb.com"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com",apiUrl:"https://api.bscscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15921452}}});function qn(e){return"string"==typeof e?{address:e,type:"json-rpc"}:e}class Wn extends f{constructor({docsPath:e}={}){super(["Could not find an Account to execute with this Action.","Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join("\n"),{docsPath:e,docsSlug:"account",name:"AccountNotFoundError"})}}function jn(e,{includeName:n=!1}={}){if("function"!==e.type&&"event"!==e.type&&"error"!==e.type)throw new et(e.type);return`${e.name}(${Gn(e.inputs,{includeName:n})})`}function Gn(e,{includeName:n=!1}={}){return e?e.map(e=>function(e,{includeName:n}){return e.type.startsWith("tuple")?`(${Gn(e.components,{includeName:n})})${e.type.slice(5)}`:e.type+(n&&e.name?` ${e.name}`:"")}(e,{includeName:n})).join(n?", ":","):""}class Qn extends f{constructor({expectedLength:e,givenLength:n,type:t}){super([`ABI encoding array length mismatch for type ${t}.`,`Expected length: ${e}`,`Given length: ${n}`].join("\n"),{name:"AbiEncodingArrayLengthMismatchError"})}}class zn extends f{constructor({expectedSize:e,value:n}){super(`Size of bytes "${n}" (bytes${b(n)}) does not match expected size (bytes${e}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class Xn extends f{constructor({expectedLength:e,givenLength:n}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${e}`,`Given length (values): ${n}`].join("\n"),{name:"AbiEncodingLengthMismatchError"})}}class Zn extends f{constructor(e,{docsPath:n}={}){super([`Function ${e?`"${e}" `:""}not found on ABI.`,"Make sure you are using the correct ABI and that the function exists on it."].join("\n"),{docsPath:n,name:"AbiFunctionNotFoundError"})}}class Kn extends f{constructor(e,n){super("Found ambiguous types in overloaded ABI items.",{metaMessages:[`\`${e.type}\` in \`${jn(e.abiItem)}\`, and`,`\`${n.type}\` in \`${jn(n.abiItem)}\``,"","These types encode differently and cannot be distinguished at runtime.","Remove one of the ambiguous items in the ABI."],name:"AbiItemAmbiguityError"})}}class _n extends f{constructor(e,{docsPath:n}){super([`Type "${e}" is not a valid encoding type.`,"Please provide a valid ABI type."].join("\n"),{docsPath:n,name:"InvalidAbiEncodingType"})}}class $n extends f{constructor(e){super([`Value "${e}" is not a valid array.`].join("\n"),{name:"InvalidArrayError"})}}class et extends f{constructor(e){super([`"${e}" is not a valid definition type.`,'Valid types: "function", "event", "error"'].join("\n"),{name:"InvalidDefinitionTypeError"})}}const nt=/^tuple(?<array>(\[(\d*)\])*)$/;function tt(e){let n=e.type;if(nt.test(e.type)&&"components"in e){n="(";const t=e.components.length;for(let a=0;a<t;a++)n+=tt(e.components[a]),a<t-1&&(n+=", ");const o=function(e,n){const t=e.exec(n);return t?.groups}(nt,e.type);return n+=`)${o?.array||""}`,tt({...e,type:n})}return"indexed"in e&&e.indexed&&(n=`${n} indexed`),e.name?`${n} ${e.name}`:n}function ot(e){let n="";const t=e.length;for(let o=0;o<t;o++)n+=tt(e[o]),o!==t-1&&(n+=", ");return n}function at(e){return In(R(function(e){let n=!0,t="",o=0,a="",i=!1;for(let r=0;r<e.length;r++){const s=e[r];if(["(",")",","].includes(s)&&(n=!0),"("===s&&o++,")"===s&&o--,n)if(0!==o)" "!==s?(a+=s,t+=s):","!==e[r-1]&&","!==t&&",("!==t&&(t="",n=!1);else if(" "===s&&["event","function",""].includes(a))a="";else if(a+=s,")"===s){i=!0;break}}if(!i)throw new f("Unable to normalize signature.");return a}("string"==typeof(n=e)?n:"function"===(t=n).type?`function ${t.name}(${ot(t.inputs)})${t.stateMutability&&"nonpayable"!==t.stateMutability?` ${t.stateMutability}`:""}${t.outputs?.length?` returns (${ot(t.outputs)})`:""}`:"event"===t.type?`event ${t.name}(${ot(t.inputs)})`:"error"===t.type?`error ${t.name}(${ot(t.inputs)})`:"constructor"===t.type?`constructor(${ot(t.inputs)})${"payable"===t.stateMutability?" payable":""}`:"fallback"===t.type?"fallback() external"+("payable"===t.stateMutability?" payable":""):"receive() external payable")));var n,t}const it=e=>Bn(at(e),0,4),rt=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;function st(e,n){if(e.length!==n.length)throw new Xn({expectedLength:e.length,givenLength:n.length});const t=function({params:e,values:n}){const t=[];for(let o=0;o<e.length;o++)t.push(ct({param:e[o],value:n[o]}));return t}({params:e,values:n}),o=lt(t);return 0===o.length?"0x":o}function ct({param:e,value:n}){const t=function(e){const n=e.match(/^(.*)\[(\d+)?\]$/);return n?[n[2]?Number(n[2]):null,n[1]]:void 0}(e.type);if(t){const[o,a]=t;return function(e,{length:n,param:t}){const o=null===n;if(!Array.isArray(e))throw new $n(e);if(!o&&e.length!==n)throw new Qn({expectedLength:n,givenLength:e.length,type:`${t.type}[${n}]`});let a=!1;const i=[];for(let r=0;r<e.length;r++){const n=ct({param:t,value:e[r]});n.dynamic&&(a=!0),i.push(n)}if(o||a){const e=lt(i);if(o){const n=x(i.length,{size:32});return{dynamic:!0,encoded:i.length>0?K([n,e]):n}}if(a)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:K(i.map(({encoded:e})=>e))}}(n,{length:o,param:{...e,type:a}})}if("tuple"===e.type)return function(e,{param:n}){let t=!1;const o=[];for(let a=0;a<n.components.length;a++){const i=n.components[a],r=ct({param:i,value:e[Array.isArray(e)?a:i.name]});o.push(r),r.dynamic&&(t=!0)}return{dynamic:t,encoded:t?lt(o):K(o.map(({encoded:e})=>e))}}(n,{param:e});if("address"===e.type)return function(e){if(!Sn(e))throw new Qe({address:e});return{dynamic:!1,encoded:v(e.toLowerCase())}}(n);if("bool"===e.type)return function(e){if("boolean"!=typeof e)throw new f(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:v(I(e))}}(n);if(e.type.startsWith("uint")||e.type.startsWith("int")){const t=e.type.startsWith("int"),[,,o="256"]=rt.exec(e.type)??[];return function(e,{signed:n,size:t=256}){if("number"==typeof t){const o=2n**(BigInt(t)-(n?1n:0n))-1n,a=n?-o-1n:0n;if(e>o||e<a)throw new m({max:o.toString(),min:a.toString(),signed:n,size:t/8,value:e.toString()})}return{dynamic:!1,encoded:x(e,{size:32,signed:n})}}(n,{signed:t,size:Number(o)})}if(e.type.startsWith("bytes"))return function(e,{param:n}){const[,t]=n.type.split("bytes"),o=b(e);if(!t){let n=e;return o%32!=0&&(n=v(n,{dir:"right",size:32*Math.ceil((e.length-2)/2/32)})),{dynamic:!0,encoded:K([v(x(o,{size:32})),n])}}if(o!==Number.parseInt(t,10))throw new zn({expectedSize:Number.parseInt(t,10),value:e});return{dynamic:!1,encoded:v(e,{dir:"right"})}}(n,{param:e});if("string"===e.type)return function(e){const n=S(e),t=Math.ceil(b(n)/32),o=[];for(let a=0;a<t;a++)o.push(v(Bn(n,32*a,32*(a+1)),{dir:"right"}));return{dynamic:!0,encoded:K([v(x(b(n),{size:32})),...o])}}(n);throw new _n(e.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function lt(e){let n=0;for(let i=0;i<e.length;i++){const{dynamic:t,encoded:o}=e[i];n+=t?32:b(o)}const t=[],o=[];let a=0;for(let i=0;i<e.length;i++){const{dynamic:r,encoded:s}=e[i];r?(t.push(x(n+a,{size:32})),o.push(s),a+=b(s)):t.push(s)}return K([...t,...o])}const dt=at;function ut(e,n){const t=typeof e,o=n.type;switch(o){case"address":return Sn(e,{strict:!1});case"bool":return"boolean"===t;case"function":case"string":return"string"===t;default:return"tuple"===o&&"components"in n?Object.values(n.components).every((n,o)=>"object"===t&&ut(Object.values(e)[o],n)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(o)?"number"===t||"bigint"===t:/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(o)?"string"===t||e instanceof Uint8Array:!!/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(o)&&Array.isArray(e)&&e.every(e=>ut(e,{...n,type:o.replace(/(\[[0-9]{0,}\])$/,"")}))}}function ft(e,n,t){for(const o in e){const a=e[o],i=n[o];if("tuple"===a.type&&"tuple"===i.type&&"components"in a&&"components"in i)return ft(a.components,i.components,t[o]);const r=[a.type,i.type];if((()=>!(!r.includes("address")||!r.includes("bytes20"))||(r.includes("address")&&r.includes("string")||!(!r.includes("address")||!r.includes("bytes")))&&Sn(t[o],{strict:!1}))())return r}}function ht(e){return e.reduce((e,{slot:n,value:t})=>`${e} ${n}: ${t}\n`,"")}class mt extends f{constructor(e,{account:n,docsPath:t,chain:o,data:a,gas:i,gasPrice:r,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:d,value:u,stateOverride:f}){const h=n?qn(n):void 0;let m=fe({from:h?.address,to:d,value:void 0!==u&&`${de(u)} ${o?.nativeCurrency?.symbol||"ETH"}`,data:a,gas:i,gasPrice:void 0!==r&&`${ue(r)} gwei`,maxFeePerGas:void 0!==s&&`${ue(s)} gwei`,maxPriorityFeePerGas:void 0!==c&&`${ue(c)} gwei`,nonce:l});f&&(m+=`\n${function(e){return e.reduce((e,{address:n,...t})=>{let o=`${e} ${n}:\n`;return t.nonce&&(o+=` nonce: ${t.nonce}\n`),t.balance&&(o+=` balance: ${t.balance}\n`),t.code&&(o+=` code: ${t.code}\n`),t.state&&(o+=" state:\n",o+=ht(t.state)),t.stateDiff&&(o+=" stateDiff:\n",o+=ht(t.stateDiff)),o}," State Override:\n").slice(0,-1)}(f)}`),super(e.shortMessage,{cause:e,docsPath:t,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Raw Call Arguments:",m].filter(Boolean),name:"CallExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function pt(e,{format:n}){if(!n)return{};const t={};return function n(o){const a=Object.keys(o);for(const i of a)i in e&&(t[i]=e[i]),o[i]&&"object"==typeof o[i]&&!Array.isArray(o[i])&&n(o[i])}(n(e||{})),t}async function wt(e,n){const{account:t=e.account}=n;if(!t)throw new Wn;const o=qn(t);try{const{accessList:t,blockNumber:a,blockTag:i,data:r,gas:s,gasPrice:c,maxFeePerGas:l,maxPriorityFeePerGas:d,nonce:u,to:f,value:h,...m}=n,p=("bigint"==typeof a?x(a):void 0)||i;!function(e){const{account:n,maxFeePerGas:t,maxPriorityFeePerGas:o,to:a}=e,i=n?qn(n):void 0;if(i&&!Sn(i.address))throw new Qe({address:i.address});if(a&&!Sn(a))throw new Qe({address:a});if(t&&t>Z)throw new Ze({maxFeePerGas:t});if(o&&t&&o>t)throw new rn({maxFeePerGas:t,maxPriorityFeePerGas:o})}(n);const w=e.chain?.formatters?.transactionRequest?.format,b=(w||X)({...pt(m,{format:w}),account:o,accessList:t,data:r,gas:s,gasPrice:c,maxFeePerGas:l,maxPriorityFeePerGas:d,nonce:u,to:f,value:h},"estimateGas"),{baseFeePerGas:g,gasLimit:y,priorityFeePerGas:A}=await e.request({method:"linea_estimateGas",params:p?[b,p]:[b]});return{baseFeePerGas:BigInt(g),gasLimit:BigInt(y),priorityFeePerGas:BigInt(A)}}catch(a){throw function(e,{docsPath:n,...t}){const o=(()=>{const n=function(e,n){const t=(e.details||"").toLowerCase(),o=e instanceof f?e.walk(e=>e?.code===Xe.code):e;return o instanceof f?new Xe({cause:e,message:o.details}):Xe.nodeMessage.test(t)?new Xe({cause:e,message:e.details}):Ze.nodeMessage.test(t)?new Ze({cause:e,maxFeePerGas:n?.maxFeePerGas}):Ke.nodeMessage.test(t)?new Ke({cause:e,maxFeePerGas:n?.maxFeePerGas}):_e.nodeMessage.test(t)?new _e({cause:e,nonce:n?.nonce}):$e.nodeMessage.test(t)?new $e({cause:e,nonce:n?.nonce}):en.nodeMessage.test(t)?new en({cause:e,nonce:n?.nonce}):nn.nodeMessage.test(t)?new nn({cause:e}):tn.nodeMessage.test(t)?new tn({cause:e,gas:n?.gas}):on.nodeMessage.test(t)?new on({cause:e,gas:n?.gas}):an.nodeMessage.test(t)?new an({cause:e}):rn.nodeMessage.test(t)?new rn({cause:e,maxFeePerGas:n?.maxFeePerGas,maxPriorityFeePerGas:n?.maxPriorityFeePerGas}):new sn({cause:e})}(e,t);return n instanceof sn?e:n})();return new mt(o,{docsPath:n,...t})}(a,{...n,account:o,chain:e.chain})}}async function bt({client:e,multiply:n,request:t,type:o}){try{const a=await wt(e,{...t,account:t?.account}),{priorityFeePerGas:i}=a,r=n(BigInt(a.baseFeePerGas))+i;return"legacy"===o?{gasPrice:r}:{maxFeePerGas:r,maxPriorityFeePerGas:i}}catch{return null}}const gt=l({fees:{estimateFeesPerGas:bt,async maxPriorityFeePerGas({block:e,client:n,request:t}){const o=await bt({block:e,client:n,multiply:e=>e,request:t,type:"eip1559"});return o?.maxPriorityFeePerGas?o.maxPriorityFeePerGas:null}},id:59144,name:"Linea Mainnet",blockTime:2e3,nativeCurrency:{name:"Linea Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.linea.build"],webSocket:["wss://rpc.linea.build"]}},blockExplorers:{default:{name:"Etherscan",url:"https://lineascan.build",apiUrl:"https://api.lineascan.build/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:42},ensRegistry:{address:"0x50130b669B28C339991d8676FA73CF122a121267",blockCreated:6682888},ensUniversalResolver:{address:"0x4D41762915F83c76EcaF6776d9b08076aA32b492",blockCreated:22222151}},ensTlds:[".linea.eth"],testnet:!1}),yt=l({id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},blockTime:12e3,rpcUrls:{default:{http:["https://eth.merkle.io"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io",apiUrl:"https://api.etherscan.io/api"}},contracts:{ensUniversalResolver:{address:"0xeeeeeeee14d718c2b47d9923deab1335e144eeee",blockCreated:23085558},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}}),At=1,kt=l({...Mn,id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimism Explorer",url:"https://optimistic.etherscan.io",apiUrl:"https://api-optimistic.etherscan.io/api"}},contracts:{...Mn.contracts,disputeGameFactory:{[At]:{address:"0xe5965Ab5962eDc7477C8520243A95517CD252fA9"}},l2OutputOracle:{[At]:{address:"0xdfe97868233d1aa22e815a266982f2cf17685a27"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:4286263},portal:{[At]:{address:"0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"}},l1StandardBridge:{[At]:{address:"0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1"}}},sourceId:1}),vt="/docs/contract/encodeFunctionData";function Ct(e){const{args:n}=e,{abi:t,functionName:o}=1===e.abi.length&&e.functionName?.startsWith("0x")?e:function(e){const{abi:n,args:t,functionName:o}=e;let a=n[0];if(o){const e=function(e){const{abi:n,args:t=[],name:o}=e,a=w(o,{strict:!1}),i=n.filter(e=>a?"function"===e.type?it(e)===o:"event"===e.type&&dt(e)===o:"name"in e&&e.name===o);if(0===i.length)return;if(1===i.length)return i[0];let r;for(const s of i)if("inputs"in s)if(t&&0!==t.length){if(s.inputs&&0!==s.inputs.length&&s.inputs.length===t.length&&t.every((e,n)=>{const t="inputs"in s&&s.inputs[n];return!!t&&ut(e,t)})){if(r&&"inputs"in r&&r.inputs){const e=ft(s.inputs,r.inputs,t);if(e)throw new Kn({abiItem:s,type:e[0]},{abiItem:r,type:e[1]})}r=s}}else if(!s.inputs||0===s.inputs.length)return s;return r||i[0]}({abi:n,args:t,name:o});if(!e)throw new Zn(o,{docsPath:vt});a=e}if("function"!==a.type)throw new Zn(void 0,{docsPath:vt});return{abi:[a],functionName:it(jn(a))}}(e),a=t[0];return _([o,("inputs"in a&&a.inputs?st(a.inputs,n??[]):void 0)??"0x"])}const Tt={1:{...yt,logo:"data:image/png;base64,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",chainId:1,chainType:"ether",chainTypeMoralis:"eth",tokenTrendingDefault:["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"]},10:{...kt,logo:"data:image/png;base64,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",chainId:10,chainType:"optimism",chainTypeMoralis:"optimism",tokenTrendingDefault:["0x4200000000000000000000000000000000000006","0x68f180fcce6836688e9084f035309e29bf0a2095","0xc47da4cb96ce65a96844a01bfae509f9d5454534"]},56:{...Vn,logo:"data:image/png;base64,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",chainId:56,chainType:"bsc",chainTypeMoralis:"bsc",tokenTrendingDefault:["0x2170ed0880ac9a755fd29b2688956bd959f933f8","0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c"]},137:{...l({id:137,name:"Polygon",blockTime:2e3,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon.drpc.org"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com",apiUrl:"https://api.etherscan.io/v2/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}}}),rpcUrls:{default:{http:["https://polygon-bor-rpc.publicnode.com"]}},logo:"data:image/png;base64,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",chainId:137,chainType:"matic",chainTypeMoralis:"polygon",tokenTrendingDefault:["0x7ceb23fd6bc0add59e62ac25578270cff1b9f619","0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6"]},8453:{...Jn,logo:"data:image/png;base64,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",chainId:8453,chainType:"base",chainTypeMoralis:"base",tokenTrendingDefault:["0x4200000000000000000000000000000000000006","0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf","0xc47da4cb96ce65a96844a01bfae509f9d5454534"]},42161:{...Hn,logo:"data:image/png;base64,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",chainId:42161,chainType:"arbitrum",chainTypeMoralis:"arbitrum",tokenTrendingDefault:["0x82af49447d8a07e3bd95bd0d56f35241523fbab1","0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"]},43114:{...Pn,logo:"data:image/png;base64,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",chainId:43114,chainType:"avax",chainTypeMoralis:"avalanche",tokenTrendingDefault:["0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB","0x0555E30da8f98308EdB960aa94C0Db47230d2B9c"]},59144:{...gt,logo:"data:image/png;base64,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",chainId:59144,chainType:"linea",chainTypeMoralis:"linea",tokenTrendingDefault:["0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f","0x3aab2285ddcddad8edf438c1bab47e1a9d05a9b4"]}},It=e=>{const n=Object.values(Tt).find(n=>n.chainTypeMoralis===e);return n?.chainType||null},Et=e=>{const n=new Date,t=new Date(n);t.setDate(t.getDate()-1);const o=new Date(e);return o.setHours(0,0,0,0),n.setHours(0,0,0,0),t.setHours(0,0,0,0),o.getTime()===n.getTime()?"Today":o.getTime()===t.getTime()?"Yesterday":o.toLocaleDateString("en-US",{month:"short",day:"numeric",year:o.getFullYear()!==n.getFullYear()?"numeric":void 0})},xt=e=>new Promise(n=>setTimeout(n,e||0)),Nt=(e,n=5,t=5)=>(e=e||"",e?.length<=n+t?e:`${e.substr(0,n)}...${e.substr(e.length-t,t)}`),St=e=>{if(!e)return"";const n=Tt[e];return n?n.chainTypeMoralis:""},Bt=e=>{if(!e)return"";const n=Tt[e];return n?n.chainType:""},Rt={getItem(e){if("undefined"==typeof window)return null;try{return window.localStorage.getItem(e)}catch{return null}},setItem(e,n){if("undefined"!=typeof window)try{window.localStorage.setItem(e,n)}catch{}},removeItem(e){if("undefined"!=typeof window)try{window.localStorage.removeItem(e)}catch{}},get length(){if("undefined"==typeof window)return 0;try{return window.localStorage.length}catch{return 0}},key(e){if("undefined"==typeof window)return null;try{return window.localStorage.key(e)}catch{return null}}};class Dt extends f{constructor({value:e}){super(`Number \`${e}\` is not a valid decimal number.`,{name:"InvalidDecimalNumberError"})}}function Ot(e,n){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new Dt({value:e});let[t,o="0"]=e.split(".");const a=t.startsWith("-");if(a&&(t=t.slice(1)),o=o.replace(/(0+)$/,""),0===n)1===Math.round(Number(`.${o}`))&&(t=`${BigInt(t)+1n}`),o="";else if(o.length>n){const[e,a,i]=[o.slice(0,n-1),o.slice(n-1,n),o.slice(n)],r=Math.round(Number(`${a}.${i}`));o=r>9?`${BigInt(e)+BigInt(1)}0`.padStart(e.length+1,"0"):`${e}${r}`,o.length>n&&(o=o.slice(1),t=`${BigInt(t)+1n}`),o=o.slice(0,n)}else o=o.padEnd(n,"0");return BigInt(`${a?"-":""}${t}${o}`)}const Ut="0x0000000000000000000000000000000000000000",Ft=t.createContext(void 0),Lt=()=>{const e=t.useContext(Ft);if(!e)throw new Error("useConnect must be used within ConnectProvider");return{...e,chainData:Tt[e.account?.chainId]||void 0,chainId:e.account?.chainId||void 0,chainType:Bt(e.account?.chainId||void 0),chainTypeMoralis:St(e.account?.chainId||void 0),isChainSupported:!!Tt[e.account?.chainId]}},Mt=({children:e,initialAccount:t})=>n.jsx(Ft.Provider,{value:{account:t||null},children:e}),Ht=({address:e,chainId:o})=>{const[a,i]=t.useState(!1),{isChainSupported:r}=Lt(),s=t.useCallback(()=>{if(!e)return;const n=e,t=()=>{i(!0),setTimeout(()=>i(!1),2e3)};try{navigator.clipboard.writeText(n).then(t).catch(()=>{const e=document.createElement("input");e.value=n,document.body.appendChild(e),e.select(),document.execCommand("copy"),e.remove(),t()})}catch{const e=document.createElement("input");e.value=n,document.body.appendChild(e),e.select(),document.execCommand("copy"),e.remove(),t()}},[e]);return n.jsx(n.Fragment,{children:Sn(e||"")&&n.jsxs("div",{className:"chat-user-info",children:[o&&Tt[o]?.logo&&n.jsx("div",{className:"user-avatar",children:n.jsx("img",{src:Tt[o].logo||"",alt:"Chain",width:20,height:20})}),n.jsx("span",{className:"user-wallet",children:n.jsx("a",{style:{pointerEvents:r?"auto":"none"},href:Tt[o]?.blockExplorers?.default?.url+"/address/"+e,target:"_blank",rel:"noopener noreferrer",children:Nt(e)||"Not connected"})}),n.jsx("button",{className:"copy-address-btn",onClick:s,"aria-label":"Copy wallet address",type:"button",title:a?"Copied!":"Copy address",children:a?n.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:n.jsx("path",{d:"M13.3333 4L6 11.3333L2.66667 8",stroke:"#0B3988",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):n.jsx("svg",{width:"14",height:"14",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:n.jsx("path",{d:"M8.1 15.75H13.23C12.9638 16.4152 12.5041 16.9852 11.9105 17.3863C11.3168 17.7874 10.6165 18.0012 9.9 18H3.6C2.64522 18 1.72955 17.6207 1.05442 16.9456C0.379285 16.2704 0 15.3548 0 14.4V7.2C0.00104929 6.32332 0.321408 5.47704 0.901163 4.81944C1.48092 4.16183 2.28037 3.73792 3.15 3.627V10.8C3.15238 12.1121 3.67466 13.3698 4.60245 14.2975C5.53024 15.2253 6.78791 15.7476 8.1 15.75ZM15.75 3.825H17.658C17.6027 3.74389 17.5393 3.66852 17.469 3.6L14.4 0.531C14.3337 0.460854 14.258 0.400274 14.175 0.351V2.25C14.1769 2.66713 14.3434 3.06664 14.6384 3.3616C14.9334 3.65656 15.3329 3.8231 15.75 3.825ZM15.75 5.175C14.9747 5.17357 14.2315 4.86494 13.6833 4.31671C13.1351 3.76847 12.8264 3.02532 12.825 2.25V0H8.1C7.14522 0 6.22955 0.379285 5.55442 1.05442C4.87928 1.72955 4.5 2.64522 4.5 3.6V10.8C4.5 11.7548 4.87928 12.6704 5.55442 13.3456C6.22955 14.0207 7.14522 14.4 8.1 14.4H14.4C15.3548 14.4 16.2705 14.0207 16.9456 13.3456C17.6207 12.6704 18 11.7548 18 10.8V5.175H15.75Z",fill:"#0B3988"})})})]})})},Pt="chat_widget_messages",Yt=200,Jt="welcome-message";function Vt(e){return[{id:Jt,text:e,sender:"bot",timestamp:new Date}]}function qt(e){return e.map(e=>({...e,timestamp:new Date(e.timestamp)}))}function Wt(){const e=Rt.getItem(Pt);if(!e)return null;try{const n=JSON.parse(e);if(n&&void 0!==n.owner&&Array.isArray(n.messages))return{owner:n.owner,messages:qt(n.messages)};if(Array.isArray(n))return{owner:"",messages:qt(n)}}catch{}return null}function jt(e,n){Rt.setItem(Pt,JSON.stringify({owner:e,messages:n}))}const Gt=t.createContext(void 0),Qt=({children:e,initialConfig:t})=>n.jsx(Gt.Provider,{value:{config:t||null},children:e});var zt=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Xt=Math.ceil,Zt=Math.floor,Kt="[BigNumber Error] ",_t=Kt+"Number primitive has more than 15 significant digits: ",$t=1e14,eo=14,no=9007199254740991,to=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],oo=1e7,ao=1e9;function io(e){var n=0|e;return e>0||e===n?n:n-1}function ro(e){for(var n,t,o=1,a=e.length,i=e[0]+"";o<a;){for(n=e[o++]+"",t=eo-n.length;t--;n="0"+n);i+=n}for(a=i.length;48===i.charCodeAt(--a););return i.slice(0,a+1||1)}function so(e,n){var t,o,a=e.c,i=n.c,r=e.s,s=n.s,c=e.e,l=n.e;if(!r||!s)return null;if(t=a&&!a[0],o=i&&!i[0],t||o)return t?o?0:-s:r;if(r!=s)return r;if(t=r<0,o=c==l,!a||!i)return o?0:!a^t?1:-1;if(!o)return c>l^t?1:-1;for(s=(c=a.length)<(l=i.length)?c:l,r=0;r<s;r++)if(a[r]!=i[r])return a[r]>i[r]^t?1:-1;return c==l?0:c>l^t?1:-1}function co(e,n,t,o){if(e<n||e>t||e!==Zt(e))throw Error(Kt+(o||"Argument")+("number"==typeof e?e<n||e>t?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function lo(e){var n=e.c.length-1;return io(e.e/eo)==n&&e.c[n]%2!=0}function uo(e,n){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(n<0?"e":"e+")+n}function fo(e,n,t){var o,a;if(n<0){for(a=t+".";++n;a+=t);e=a+e}else if(++n>(o=e.length)){for(a=t,n-=o;--n;a+=t);e+=a}else n<o&&(e=e.slice(0,n)+"."+e.slice(n));return e}var ho=function e(n){var t,o,a,i,r,s=k.prototype={constructor:k,toString:null,valueOf:null},c=new k(1),l=20,d=4,u=-7,f=21,h=-1e7,m=1e7,p=!1,w=1,b=0,g={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},y="0123456789abcdefghijklmnopqrstuvwxyz",A=!0;function k(e,n){var t,i,r,s,c,u,f,p,w=this;if(!(w instanceof k))return new k(e,n);if(null==n){if(e&&!0===e.u)return w.s=e.s,void(!e.c||e.e>m?w.c=w.e=null:e.e<h?w.c=[w.e=0]:(w.e=e.e,w.c=e.c.slice()));if((u="number"==typeof e)&&0*e==0){if(w.s=1/e<0?(e=-e,-1):1,e===~~e){for(s=0,c=e;c>=10;c/=10,s++);return void(s>m?w.c=w.e=null:(w.e=s,w.c=[e]))}p=String(e)}else{if(!zt.test(p=String(e)))return a(w,p,u);w.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(s=p.indexOf("."))>-1&&(p=p.replace(".","")),(c=p.search(/e/i))>0?(s<0&&(s=c),s+=+p.slice(c+1),p=p.substring(0,c)):s<0&&(s=p.length)}else{if(co(n,2,y.length,"Base"),10==n&&A)return I(w=new k(e),l+w.e+1,d);if(p=String(e),u="number"==typeof e){if(0*e!=0)return a(w,p,u,n);if(w.s=1/e<0?(p=p.slice(1),-1):1,k.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(_t+e)}else w.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(t=y.slice(0,n),s=c=0,f=p.length;c<f;c++)if(t.indexOf(i=p.charAt(c))<0){if("."==i){if(c>s){s=f;continue}}else if(!r&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){r=!0,c=-1,s=0;continue}return a(w,String(e),u,n)}u=!1,(s=(p=o(p,n,10,w.s)).indexOf("."))>-1?p=p.replace(".",""):s=p.length}for(c=0;48===p.charCodeAt(c);c++);for(f=p.length;48===p.charCodeAt(--f););if(p=p.slice(c,++f)){if(f-=c,u&&k.DEBUG&&f>15&&(e>no||e!==Zt(e)))throw Error(_t+w.s*e);if((s=s-c-1)>m)w.c=w.e=null;else if(s<h)w.c=[w.e=0];else{if(w.e=s,w.c=[],c=(s+1)%eo,s<0&&(c+=eo),c<f){for(c&&w.c.push(+p.slice(0,c)),f-=eo;c<f;)w.c.push(+p.slice(c,c+=eo));c=eo-(p=p.slice(c)).length}else c-=f;for(;c--;p+="0");w.c.push(+p)}}else w.c=[w.e=0]}function v(e,n,t,o){var a,i,r,s,c;if(null==t?t=d:co(t,0,8),!e.c)return e.toString();if(a=e.c[0],r=e.e,null==n)c=ro(e.c),c=1==o||2==o&&(r<=u||r>=f)?uo(c,r):fo(c,r,"0");else if(i=(e=I(new k(e),n,t)).e,s=(c=ro(e.c)).length,1==o||2==o&&(n<=i||i<=u)){for(;s<n;c+="0",s++);c=uo(c,i)}else if(n-=r+(2===o&&i>r),c=fo(c,i,"0"),i+1>s){if(--n>0)for(c+=".";n--;c+="0");}else if((n+=i-s)>0)for(i+1==s&&(c+=".");n--;c+="0");return e.s<0&&a?"-"+c:c}function C(e,n){for(var t,o,a=1,i=new k(e[0]);a<e.length;a++)(!(o=new k(e[a])).s||(t=so(i,o))===n||0===t&&i.s===n)&&(i=o);return i}function T(e,n,t){for(var o=1,a=n.length;!n[--a];n.pop());for(a=n[0];a>=10;a/=10,o++);return(t=o+t*eo-1)>m?e.c=e.e=null:t<h?e.c=[e.e=0]:(e.e=t,e.c=n),e}function I(e,n,t,o){var a,i,r,s,c,l,d,u=e.c,f=to;if(u){e:{for(a=1,s=u[0];s>=10;s/=10,a++);if((i=n-a)<0)i+=eo,r=n,c=u[l=0],d=Zt(c/f[a-r-1]%10);else if((l=Xt((i+1)/eo))>=u.length){if(!o)break e;for(;u.length<=l;u.push(0));c=d=0,a=1,r=(i%=eo)-eo+1}else{for(c=s=u[l],a=1;s>=10;s/=10,a++);d=(r=(i%=eo)-eo+a)<0?0:Zt(c/f[a-r-1]%10)}if(o=o||n<0||null!=u[l+1]||(r<0?c:c%f[a-r-1]),o=t<4?(d||o)&&(0==t||t==(e.s<0?3:2)):d>5||5==d&&(4==t||o||6==t&&(i>0?r>0?c/f[a-r]:0:u[l-1])%10&1||t==(e.s<0?8:7)),n<1||!u[0])return u.length=0,o?(n-=e.e+1,u[0]=f[(eo-n%eo)%eo],e.e=-n||0):u[0]=e.e=0,e;if(0==i?(u.length=l,s=1,l--):(u.length=l+1,s=f[eo-i],u[l]=r>0?Zt(c/f[a-r]%f[r])*s:0),o)for(;;){if(0==l){for(i=1,r=u[0];r>=10;r/=10,i++);for(r=u[0]+=s,s=1;r>=10;r/=10,s++);i!=s&&(e.e++,u[0]==$t&&(u[0]=1));break}if(u[l]+=s,u[l]!=$t)break;u[l--]=0,s=1}for(i=u.length;0===u[--i];u.pop());}e.e>m?e.c=e.e=null:e.e<h&&(e.c=[e.e=0])}return e}function E(e){var n,t=e.e;return null===t?e.toString():(n=ro(e.c),n=t<=u||t>=f?uo(n,t):fo(n,t,"0"),e.s<0?"-"+n:n)}return k.clone=e,k.ROUND_UP=0,k.ROUND_DOWN=1,k.ROUND_CEIL=2,k.ROUND_FLOOR=3,k.ROUND_HALF_UP=4,k.ROUND_HALF_DOWN=5,k.ROUND_HALF_EVEN=6,k.ROUND_HALF_CEIL=7,k.ROUND_HALF_FLOOR=8,k.EUCLID=9,k.config=k.set=function(e){var n,t;if(null!=e){if("object"!=typeof e)throw Error(Kt+"Object expected: "+e);if(e.hasOwnProperty(n="DECIMAL_PLACES")&&(co(t=e[n],0,ao,n),l=t),e.hasOwnProperty(n="ROUNDING_MODE")&&(co(t=e[n],0,8,n),d=t),e.hasOwnProperty(n="EXPONENTIAL_AT")&&((t=e[n])&&t.pop?(co(t[0],-ao,0,n),co(t[1],0,ao,n),u=t[0],f=t[1]):(co(t,-ao,ao,n),u=-(f=t<0?-t:t))),e.hasOwnProperty(n="RANGE"))if((t=e[n])&&t.pop)co(t[0],-ao,-1,n),co(t[1],1,ao,n),h=t[0],m=t[1];else{if(co(t,-ao,ao,n),!t)throw Error(Kt+n+" cannot be zero: "+t);h=-(m=t<0?-t:t)}if(e.hasOwnProperty(n="CRYPTO")){if((t=e[n])!==!!t)throw Error(Kt+n+" not true or false: "+t);if(t){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw p=!t,Error(Kt+"crypto unavailable");p=t}else p=t}if(e.hasOwnProperty(n="MODULO_MODE")&&(co(t=e[n],0,9,n),w=t),e.hasOwnProperty(n="POW_PRECISION")&&(co(t=e[n],0,ao,n),b=t),e.hasOwnProperty(n="FORMAT")){if("object"!=typeof(t=e[n]))throw Error(Kt+n+" not an object: "+t);g=t}if(e.hasOwnProperty(n="ALPHABET")){if("string"!=typeof(t=e[n])||/^.?$|[+\-.\s]|(.).*\1/.test(t))throw Error(Kt+n+" invalid: "+t);A="0123456789"==t.slice(0,10),y=t}}return{DECIMAL_PLACES:l,ROUNDING_MODE:d,EXPONENTIAL_AT:[u,f],RANGE:[h,m],CRYPTO:p,MODULO_MODE:w,POW_PRECISION:b,FORMAT:g,ALPHABET:y}},k.isBigNumber=function(e){if(!e||!0!==e.u)return!1;if(!k.DEBUG)return!0;var n,t,o=e.c,a=e.e,i=e.s;e:if("[object Array]"=={}.toString.call(o)){if((1===i||-1===i)&&a>=-ao&&a<=ao&&a===Zt(a)){if(0===o[0]){if(0===a&&1===o.length)return!0;break e}if((n=(a+1)%eo)<1&&(n+=eo),String(o[0]).length==n){for(n=0;n<o.length;n++)if((t=o[n])<0||t>=$t||t!==Zt(t))break e;if(0!==t)return!0}}}else if(null===o&&null===a&&(null===i||1===i||-1===i))return!0;throw Error(Kt+"Invalid BigNumber: "+e)},k.maximum=k.max=function(){return C(arguments,-1)},k.minimum=k.min=function(){return C(arguments,1)},k.random=(i=9007199254740992,r=Math.random()*i&2097151?function(){return Zt(Math.random()*i)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var n,t,o,a,i,s=0,d=[],u=new k(c);if(null==e?e=l:co(e,0,ao),a=Xt(e/eo),p)if(crypto.getRandomValues){for(n=crypto.getRandomValues(new Uint32Array(a*=2));s<a;)(i=131072*n[s]+(n[s+1]>>>11))>=9e15?(t=crypto.getRandomValues(new Uint32Array(2)),n[s]=t[0],n[s+1]=t[1]):(d.push(i%1e14),s+=2);s=a/2}else{if(!crypto.randomBytes)throw p=!1,Error(Kt+"crypto unavailable");for(n=crypto.randomBytes(a*=7);s<a;)(i=281474976710656*(31&n[s])+1099511627776*n[s+1]+4294967296*n[s+2]+16777216*n[s+3]+(n[s+4]<<16)+(n[s+5]<<8)+n[s+6])>=9e15?crypto.randomBytes(7).copy(n,s):(d.push(i%1e14),s+=7);s=a/7}if(!p)for(;s<a;)(i=r())<9e15&&(d[s++]=i%1e14);for(a=d[--s],e%=eo,a&&e&&(i=to[eo-e],d[s]=Zt(a/i)*i);0===d[s];d.pop(),s--);if(s<0)d=[o=0];else{for(o=-1;0===d[0];d.splice(0,1),o-=eo);for(s=1,i=d[0];i>=10;i/=10,s++);s<eo&&(o-=eo-s)}return u.e=o,u.c=d,u}),k.sum=function(){for(var e=1,n=arguments,t=new k(n[0]);e<n.length;)t=t.plus(n[e++]);return t},o=function(){var e="0123456789";function n(e,n,t,o){for(var a,i,r=[0],s=0,c=e.length;s<c;){for(i=r.length;i--;r[i]*=n);for(r[0]+=o.indexOf(e.charAt(s++)),a=0;a<r.length;a++)r[a]>t-1&&(null==r[a+1]&&(r[a+1]=0),r[a+1]+=r[a]/t|0,r[a]%=t)}return r.reverse()}return function(o,a,i,r,s){var c,u,f,h,m,p,w,g,A=o.indexOf("."),v=l,C=d;for(A>=0&&(h=b,b=0,o=o.replace(".",""),p=(g=new k(a)).pow(o.length-A),b=h,g.c=n(fo(ro(p.c),p.e,"0"),10,i,e),g.e=g.c.length),f=h=(w=n(o,a,i,s?(c=y,e):(c=e,y))).length;0==w[--h];w.pop());if(!w[0])return c.charAt(0);if(A<0?--f:(p.c=w,p.e=f,p.s=r,w=(p=t(p,g,v,C,i)).c,m=p.r,f=p.e),A=w[u=f+v+1],h=i/2,m=m||u<0||null!=w[u+1],m=C<4?(null!=A||m)&&(0==C||C==(p.s<0?3:2)):A>h||A==h&&(4==C||m||6==C&&1&w[u-1]||C==(p.s<0?8:7)),u<1||!w[0])o=m?fo(c.charAt(1),-v,c.charAt(0)):c.charAt(0);else{if(w.length=u,m)for(--i;++w[--u]>i;)w[u]=0,u||(++f,w=[1].concat(w));for(h=w.length;!w[--h];);for(A=0,o="";A<=h;o+=c.charAt(w[A++]));o=fo(o,f,c.charAt(0))}return o}}(),t=function(){function e(e,n,t){var o,a,i,r,s=0,c=e.length,l=n%oo,d=n/oo|0;for(e=e.slice();c--;)s=((a=l*(i=e[c]%oo)+(o=d*i+(r=e[c]/oo|0)*l)%oo*oo+s)/t|0)+(o/oo|0)+d*r,e[c]=a%t;return s&&(e=[s].concat(e)),e}function n(e,n,t,o){var a,i;if(t!=o)i=t>o?1:-1;else for(a=i=0;a<t;a++)if(e[a]!=n[a]){i=e[a]>n[a]?1:-1;break}return i}function t(e,n,t,o){for(var a=0;t--;)e[t]-=a,a=e[t]<n[t]?1:0,e[t]=a*o+e[t]-n[t];for(;!e[0]&&e.length>1;e.splice(0,1));}return function(o,a,i,r,s){var c,l,d,u,f,h,m,p,w,b,g,y,A,v,C,T,E,x=o.s==a.s?1:-1,N=o.c,S=a.c;if(!(N&&N[0]&&S&&S[0]))return new k(o.s&&a.s&&(N?!S||N[0]!=S[0]:S)?N&&0==N[0]||!S?0*x:x/0:NaN);for(w=(p=new k(x)).c=[],x=i+(l=o.e-a.e)+1,s||(s=$t,l=io(o.e/eo)-io(a.e/eo),x=x/eo|0),d=0;S[d]==(N[d]||0);d++);if(S[d]>(N[d]||0)&&l--,x<0)w.push(1),u=!0;else{for(v=N.length,T=S.length,d=0,x+=2,(f=Zt(s/(S[0]+1)))>1&&(S=e(S,f,s),N=e(N,f,s),T=S.length,v=N.length),A=T,g=(b=N.slice(0,T)).length;g<T;b[g++]=0);E=S.slice(),E=[0].concat(E),C=S[0],S[1]>=s/2&&C++;do{if(f=0,(c=n(S,b,T,g))<0){if(y=b[0],T!=g&&(y=y*s+(b[1]||0)),(f=Zt(y/C))>1)for(f>=s&&(f=s-1),m=(h=e(S,f,s)).length,g=b.length;1==n(h,b,m,g);)f--,t(h,T<m?E:S,m,s),m=h.length,c=1;else 0==f&&(c=f=1),m=(h=S.slice()).length;if(m<g&&(h=[0].concat(h)),t(b,h,g,s),g=b.length,-1==c)for(;n(S,b,T,g)<1;)f++,t(b,T<g?E:S,g,s),g=b.length}else 0===c&&(f++,b=[0]);w[d++]=f,b[0]?b[g++]=N[A]||0:(b=[N[A]],g=1)}while((A++<v||null!=b[0])&&x--);u=null!=b[0],w[0]||w.splice(0,1)}if(s==$t){for(d=1,x=w[0];x>=10;x/=10,d++);I(p,i+(p.e=d+l*eo-1)+1,r,u)}else p.e=l,p.r=+u;return p}}(),a=function(){var e=/^(-?)0([xbo])(?=\w[\w.]*$)/i,n=/^([^.]+)\.$/,t=/^\.([^.]+)$/,o=/^-?(Infinity|NaN)$/,a=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(i,r,s,c){var l,d=s?r:r.replace(a,"");if(o.test(d))i.s=isNaN(d)?null:d<0?-1:1;else{if(!s&&(d=d.replace(e,function(e,n,t){return l="x"==(t=t.toLowerCase())?16:"b"==t?2:8,c&&c!=l?e:n}),c&&(l=c,d=d.replace(n,"$1").replace(t,"0.$1")),r!=d))return new k(d,l);if(k.DEBUG)throw Error(Kt+"Not a"+(c?" base "+c:"")+" number: "+r);i.s=null}i.c=i.e=null}}(),s.absoluteValue=s.abs=function(){var e=new k(this);return e.s<0&&(e.s=1),e},s.comparedTo=function(e,n){return so(this,new k(e,n))},s.decimalPlaces=s.dp=function(e,n){var t,o,a,i=this;if(null!=e)return co(e,0,ao),null==n?n=d:co(n,0,8),I(new k(i),e+i.e+1,n);if(!(t=i.c))return null;if(o=((a=t.length-1)-io(this.e/eo))*eo,a=t[a])for(;a%10==0;a/=10,o--);return o<0&&(o=0),o},s.dividedBy=s.div=function(e,n){return t(this,new k(e,n),l,d)},s.dividedToIntegerBy=s.idiv=function(e,n){return t(this,new k(e,n),0,1)},s.exponentiatedBy=s.pow=function(e,n){var t,o,a,i,r,s,l,u,f=this;if((e=new k(e)).c&&!e.isInteger())throw Error(Kt+"Exponent not an integer: "+E(e));if(null!=n&&(n=new k(n)),r=e.e>14,!f.c||!f.c[0]||1==f.c[0]&&!f.e&&1==f.c.length||!e.c||!e.c[0])return u=new k(Math.pow(+E(f),r?e.s*(2-lo(e)):+E(e))),n?u.mod(n):u;if(s=e.s<0,n){if(n.c?!n.c[0]:!n.s)return new k(NaN);(o=!s&&f.isInteger()&&n.isInteger())&&(f=f.mod(n))}else{if(e.e>9&&(f.e>0||f.e<-1||(0==f.e?f.c[0]>1||r&&f.c[1]>=24e7:f.c[0]<8e13||r&&f.c[0]<=9999975e7)))return i=f.s<0&&lo(e)?-0:0,f.e>-1&&(i=1/i),new k(s?1/i:i);b&&(i=Xt(b/eo+2))}for(r?(t=new k(.5),s&&(e.s=1),l=lo(e)):l=(a=Math.abs(+E(e)))%2,u=new k(c);;){if(l){if(!(u=u.times(f)).c)break;i?u.c.length>i&&(u.c.length=i):o&&(u=u.mod(n))}if(a){if(0===(a=Zt(a/2)))break;l=a%2}else if(I(e=e.times(t),e.e+1,1),e.e>14)l=lo(e);else{if(0===(a=+E(e)))break;l=a%2}f=f.times(f),i?f.c&&f.c.length>i&&(f.c.length=i):o&&(f=f.mod(n))}return o?u:(s&&(u=c.div(u)),n?u.mod(n):i?I(u,b,d,void 0):u)},s.integerValue=function(e){var n=new k(this);return null==e?e=d:co(e,0,8),I(n,n.e+1,e)},s.isEqualTo=s.eq=function(e,n){return 0===so(this,new k(e,n))},s.isFinite=function(){return!!this.c},s.isGreaterThan=s.gt=function(e,n){return so(this,new k(e,n))>0},s.isGreaterThanOrEqualTo=s.gte=function(e,n){return 1===(n=so(this,new k(e,n)))||0===n},s.isInteger=function(){return!!this.c&&io(this.e/eo)>this.c.length-2},s.isLessThan=s.lt=function(e,n){return so(this,new k(e,n))<0},s.isLessThanOrEqualTo=s.lte=function(e,n){return-1===(n=so(this,new k(e,n)))||0===n},s.isNaN=function(){return!this.s},s.isNegative=function(){return this.s<0},s.isPositive=function(){return this.s>0},s.isZero=function(){return!!this.c&&0==this.c[0]},s.minus=function(e,n){var t,o,a,i,r=this,s=r.s;if(n=(e=new k(e,n)).s,!s||!n)return new k(NaN);if(s!=n)return e.s=-n,r.plus(e);var c=r.e/eo,l=e.e/eo,u=r.c,f=e.c;if(!c||!l){if(!u||!f)return u?(e.s=-n,e):new k(f?r:NaN);if(!u[0]||!f[0])return f[0]?(e.s=-n,e):new k(u[0]?r:3==d?-0:0)}if(c=io(c),l=io(l),u=u.slice(),s=c-l){for((i=s<0)?(s=-s,a=u):(l=c,a=f),a.reverse(),n=s;n--;a.push(0));a.reverse()}else for(o=(i=(s=u.length)<(n=f.length))?s:n,s=n=0;n<o;n++)if(u[n]!=f[n]){i=u[n]<f[n];break}if(i&&(a=u,u=f,f=a,e.s=-e.s),(n=(o=f.length)-(t=u.length))>0)for(;n--;u[t++]=0);for(n=$t-1;o>s;){if(u[--o]<f[o]){for(t=o;t&&!u[--t];u[t]=n);--u[t],u[o]+=$t}u[o]-=f[o]}for(;0==u[0];u.splice(0,1),--l);return u[0]?T(e,u,l):(e.s=3==d?-1:1,e.c=[e.e=0],e)},s.modulo=s.mod=function(e,n){var o,a,i=this;return e=new k(e,n),!i.c||!e.s||e.c&&!e.c[0]?new k(NaN):!e.c||i.c&&!i.c[0]?new k(i):(9==w?(a=e.s,e.s=1,o=t(i,e,0,3),e.s=a,o.s*=a):o=t(i,e,0,w),(e=i.minus(o.times(e))).c[0]||1!=w||(e.s=i.s),e)},s.multipliedBy=s.times=function(e,n){var t,o,a,i,r,s,c,l,d,u,f,h,m,p,w,b=this,g=b.c,y=(e=new k(e,n)).c;if(!(g&&y&&g[0]&&y[0]))return!b.s||!e.s||g&&!g[0]&&!y||y&&!y[0]&&!g?e.c=e.e=e.s=null:(e.s*=b.s,g&&y?(e.c=[0],e.e=0):e.c=e.e=null),e;for(o=io(b.e/eo)+io(e.e/eo),e.s*=b.s,(c=g.length)<(u=y.length)&&(m=g,g=y,y=m,a=c,c=u,u=a),a=c+u,m=[];a--;m.push(0));for(p=$t,w=oo,a=u;--a>=0;){for(t=0,f=y[a]%w,h=y[a]/w|0,i=a+(r=c);i>a;)t=((l=f*(l=g[--r]%w)+(s=h*l+(d=g[r]/w|0)*f)%w*w+m[i]+t)/p|0)+(s/w|0)+h*d,m[i--]=l%p;m[i]=t}return t?++o:m.splice(0,1),T(e,m,o)},s.negated=function(){var e=new k(this);return e.s=-e.s||null,e},s.plus=function(e,n){var t,o=this,a=o.s;if(n=(e=new k(e,n)).s,!a||!n)return new k(NaN);if(a!=n)return e.s=-n,o.minus(e);var i=o.e/eo,r=e.e/eo,s=o.c,c=e.c;if(!i||!r){if(!s||!c)return new k(a/0);if(!s[0]||!c[0])return c[0]?e:new k(s[0]?o:0*a)}if(i=io(i),r=io(r),s=s.slice(),a=i-r){for(a>0?(r=i,t=c):(a=-a,t=s),t.reverse();a--;t.push(0));t.reverse()}for((a=s.length)-(n=c.length)<0&&(t=c,c=s,s=t,n=a),a=0;n;)a=(s[--n]=s[n]+c[n]+a)/$t|0,s[n]=$t===s[n]?0:s[n]%$t;return a&&(s=[a].concat(s),++r),T(e,s,r)},s.precision=s.sd=function(e,n){var t,o,a,i=this;if(null!=e&&e!==!!e)return co(e,1,ao),null==n?n=d:co(n,0,8),I(new k(i),e,n);if(!(t=i.c))return null;if(o=(a=t.length-1)*eo+1,a=t[a]){for(;a%10==0;a/=10,o--);for(a=t[0];a>=10;a/=10,o++);}return e&&i.e+1>o&&(o=i.e+1),o},s.shiftedBy=function(e){return co(e,-9007199254740991,no),this.times("1e"+e)},s.squareRoot=s.sqrt=function(){var e,n,o,a,i,r=this,s=r.c,c=r.s,u=r.e,f=l+4,h=new k("0.5");if(1!==c||!s||!s[0])return new k(!c||c<0&&(!s||s[0])?NaN:s?r:1/0);if(0==(c=Math.sqrt(+E(r)))||c==1/0?(((n=ro(s)).length+u)%2==0&&(n+="0"),c=Math.sqrt(+n),u=io((u+1)/2)-(u<0||u%2),o=new k(n=c==1/0?"5e"+u:(n=c.toExponential()).slice(0,n.indexOf("e")+1)+u)):o=new k(c+""),o.c[0])for((c=(u=o.e)+f)<3&&(c=0);;)if(i=o,o=h.times(i.plus(t(r,i,f,1))),ro(i.c).slice(0,c)===(n=ro(o.c)).slice(0,c)){if(o.e<u&&--c,"9999"!=(n=n.slice(c-3,c+1))&&(a||"4999"!=n)){+n&&(+n.slice(1)||"5"!=n.charAt(0))||(I(o,o.e+l+2,1),e=!o.times(o).eq(r));break}if(!a&&(I(i,i.e+l+2,0),i.times(i).eq(r))){o=i;break}f+=4,c+=4,a=1}return I(o,o.e+l+1,d,e)},s.toExponential=function(e,n){return null!=e&&(co(e,0,ao),e++),v(this,e,n,1)},s.toFixed=function(e,n){return null!=e&&(co(e,0,ao),e=e+this.e+1),v(this,e,n)},s.toFormat=function(e,n,t){var o,a=this;if(null==t)null!=e&&n&&"object"==typeof n?(t=n,n=null):e&&"object"==typeof e?(t=e,e=n=null):t=g;else if("object"!=typeof t)throw Error(Kt+"Argument not an object: "+t);if(o=a.toFixed(e,n),a.c){var i,r=o.split("."),s=+t.groupSize,c=+t.secondaryGroupSize,l=t.groupSeparator||"",d=r[0],u=r[1],f=a.s<0,h=f?d.slice(1):d,m=h.length;if(c&&(i=s,s=c,c=i,m-=i),s>0&&m>0){for(i=m%s||s,d=h.substr(0,i);i<m;i+=s)d+=l+h.substr(i,s);c>0&&(d+=l+h.slice(i)),f&&(d="-"+d)}o=u?d+(t.decimalSeparator||"")+((c=+t.fractionGroupSize)?u.replace(new RegExp("\\d{"+c+"}\\B","g"),"$&"+(t.fractionGroupSeparator||"")):u):d}return(t.prefix||"")+o+(t.suffix||"")},s.toFraction=function(e){var n,o,a,i,r,s,l,u,f,h,p,w,b=this,g=b.c;if(null!=e&&(!(l=new k(e)).isInteger()&&(l.c||1!==l.s)||l.lt(c)))throw Error(Kt+"Argument "+(l.isInteger()?"out of range: ":"not an integer: ")+E(l));if(!g)return new k(b);for(n=new k(c),f=o=new k(c),a=u=new k(c),w=ro(g),r=n.e=w.length-b.e-1,n.c[0]=to[(s=r%eo)<0?eo+s:s],e=!e||l.comparedTo(n)>0?r>0?n:f:l,s=m,m=1/0,l=new k(w),u.c[0]=0;h=t(l,n,0,1),1!=(i=o.plus(h.times(a))).comparedTo(e);)o=a,a=i,f=u.plus(h.times(i=f)),u=i,n=l.minus(h.times(i=n)),l=i;return i=t(e.minus(o),a,0,1),u=u.plus(i.times(f)),o=o.plus(i.times(a)),u.s=f.s=b.s,p=t(f,a,r*=2,d).minus(b).abs().comparedTo(t(u,o,r,d).minus(b).abs())<1?[f,a]:[u,o],m=s,p},s.toNumber=function(){return+E(this)},s.toPrecision=function(e,n){return null!=e&&co(e,1,ao),v(this,e,n,2)},s.toString=function(e){var n,t=this,a=t.s,i=t.e;return null===i?a?(n="Infinity",a<0&&(n="-"+n)):n="NaN":(null==e?n=i<=u||i>=f?uo(ro(t.c),i):fo(ro(t.c),i,"0"):10===e&&A?n=fo(ro((t=I(new k(t),l+i+1,d)).c),t.e,"0"):(co(e,2,y.length,"Base"),n=o(fo(ro(t.c),i,"0"),10,e,a,!0)),a<0&&t.c[0]&&(n="-"+n)),n},s.valueOf=s.toJSON=function(){return E(this)},s.u=!0,s[Symbol.toStringTag]="BigNumber",s[Symbol.for("nodejs.util.inspect.custom")]=s.valueOf,null!=n&&k.set(n),k}();class mo{baseUrl;constructor(e){this.baseUrl=e}buildUrl(e,n){const t=new URL(e,this.baseUrl);return n&&Object.entries(n).forEach(([e,n])=>{null!=n&&t.searchParams.append(e,String(n))}),t.toString()}async get(e,n={}){const t=this.buildUrl(e,n.query),o=await fetch(t,{method:"GET",headers:n.headers||{}});if(!o.ok){let e=null;try{e=await o.json()}catch{try{const n=await o.text();n&&(e={message:n})}catch{}}const n=new Error(e?.message||e?.errorMessage||`HTTP ${o.status}: ${o.statusText}`);throw n.status=o.status,n.statusText=o.statusText,e&&(n.data=e),n}return{data:await o.json(),status:o.status}}async post(e,n,t={}){const o=this.buildUrl(e,t.query),a=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",...t.headers},body:JSON.stringify(n)});if(!a.ok){let e=null;try{e=await a.json()}catch{try{const n=await a.text();n&&(e={message:n})}catch{}}const n=new Error(e?.message||e?.errorMessage||`HTTP ${a.status}: ${a.statusText}`);throw n.status=a.status,n.statusText=a.statusText,e&&(n.data=e),n}return{data:await a.json(),status:a.status}}}const po=new mo("https://wallet-api.pantograph.app");function wo(e){return{"X-API-Key":e,Accept:"application/json"}}const bo=new mo("https://deep-index.moralis.io");async function go(e){const{address:n,chain:t="base",token_addresses:o,exclude_spam:a,exclude_unverified_contracts:i}=e;if(!n)throw new Error("Address is required");try{const e="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImY4NmY0Yzc2LTA3MDQtNGEwZS04YTA0LWUwODllOGQxMGZjZCIsIm9yZ0lkIjoiMzk0MDAyIiwidXNlcklkIjoiNDA0ODUzIiwidHlwZUlkIjoiYjQyODExOTQtOGQ0Yi00NjkxLTlhZjItNjU4ODE2NzExYmRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MTY4NjQyNTYsImV4cCI6NDg3MjYyNDI1Nn0.V8crfBIBardAnZkc05FD0hQIJBeZxMqvzRnYExVtnF8",s={chain:t,exclude_spam:a??!1,exclude_unverified_contracts:i??!1};o&&(s.token_addresses=o);const c=(await bo.get(`/api/v2.2/wallets/${encodeURIComponent(n)}/tokens`,{query:s,headers:wo(e)})).data;if(c?.result?.length>0){c.result=c.result.filter(e=>new ho(e?.balance||0).gt(0)),c.result=c.result.map(e=>({...e,token_address:"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"===e.token_address?Ut:e.token_address}));try{if(c.result.length>0){const e=It(t)??t,n=c.result.map(e=>e.token_address),o=await po.get(`/keyrings/tokens/${e}/v2`,{query:{addresses:n.join(",")}});if(Array.isArray(o.data)){const e=new Map;for(const n of o.data)n.address&&null!=n.price&&e.set(n.address.toLowerCase(),parseFloat(String(n.price)));c.result=c.result.map(n=>{const t=e.get(n.token_address.toLowerCase());if(null==t)return n;const o=ho(n.balance_formatted||"0").multipliedBy(t).toNumber();return{...n,usd_price:t,usd_value:o}}),c.result=c.result.filter(e=>null==e.usd_value||new ho(e.usd_value).gte(.01))}}}catch(r){}}return{success:!0,data:c}}catch(s){return{success:!1,error:s instanceof Error?s.message:"Unknown error"}}}async function yo(e){const{address:n,chain:t="base"}=e;if(!n)throw new Error("Token address is required");try{const e=It(t)??t,o=await po.get(`/keyrings/tokens/${e}/v2`,{query:{addresses:n}}),a=n===Ut,i=(Array.isArray(o.data)?o.data:[]).find(e=>e.address?.toLowerCase()===n.toLowerCase()||a&&""===e.address)??null;if(i)return{success:!0,data:{token_address:i.address??n,name:i.name??"",symbol:i.symbol??"",decimals:null!=i.decimals?Number(i.decimals):18,logo:i.icon_image||i.logo,thumbnail:i.icon_image||i.logo,usd_price:null!=i.price?parseFloat(i.price):void 0,usd_price_24hr_percent_change:i.price_change_percentage_24h??void 0,usd_price_24hr_usd_change:i.price_change_24h??void 0}};const r="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImY4NmY0Yzc2LTA3MDQtNGEwZS04YTA0LWUwODllOGQxMGZjZCIsIm9yZ0lkIjoiMzk0MDAyIiwidXNlcklkIjoiNDA0ODUzIiwidHlwZUlkIjoiYjQyODExOTQtOGQ0Yi00NjkxLTlhZjItNjU4ODE2NzExYmRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MTY4NjQyNTYsImV4cCI6NDg3MjYyNDI1Nn0.V8crfBIBardAnZkc05FD0hQIJBeZxMqvzRnYExVtnF8",[s,c]=await Promise.allSettled([bo.get("/api/v2.2/erc20/metadata",{query:{chain:t,addresses:[n]},headers:wo(r)}),bo.get(`/api/v2.2/erc20/${encodeURIComponent(n)}/price`,{query:{chain:t,include:"percent_change"},headers:wo(r)})]),l="fulfilled"===s.status?s.value.data:[];if(!l||0===l.length)return{success:!1,error:"Token metadata not found"};const d=l[0],u="fulfilled"===c.status?c.value.data:void 0;return{success:!0,data:{token_address:d.token_address,name:d.name,symbol:d.symbol,decimals:d.decimals,logo:d.logo||d.thumbnail,thumbnail:d.thumbnail,usd_price:u?.usdPrice??void 0,usd_price_24hr_percent_change:u?.["24hrPercentChange"]?parseFloat(u["24hrPercentChange"]):void 0,usd_price_24hr_usd_change:u?.usdPriceChange24hr??void 0}}}catch(o){return{success:!1,error:o instanceof Error?o.message:"Unknown error"}}}async function Ao(e){const{address:n,chain:t="base",limit:o=100,exclude_spam:a=!0,cursor:i}=e;if(!n)throw new Error("Address is required");try{const e="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImY4NmY0Yzc2LTA3MDQtNGEwZS04YTA0LWUwODllOGQxMGZjZCIsIm9yZ0lkIjoiMzk0MDAyIiwidXNlcklkIjoiNDA0ODUzIiwidHlwZUlkIjoiYjQyODExOTQtOGQ0Yi00NjkxLTlhZjItNjU4ODE2NzExYmRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MTY4NjQyNTYsImV4cCI6NDg3MjYyNDI1Nn0.V8crfBIBardAnZkc05FD0hQIJBeZxMqvzRnYExVtnF8",r={chain:t,format:"decimal",limit:o,exclude_spam:a,media_items:!0,normalizeMetadata:!0};i&&(r.cursor=i);return{success:!0,data:(await bo.get(`/api/v2.2/${encodeURIComponent(n)}/nft`,{query:r,headers:wo(e)})).data}}catch(r){return{success:!1,error:r instanceof Error?r.message:"Unknown error"}}}const ko=new class extends mo{constructor(){super("https://wallet-api.pantograph.app")}async getTokensDetails(e,n="base"){try{if(!e||!Array.isArray(e)||0===e.length)throw new Error("Addresses must be a non-empty array");const t=e.join(","),o=await this.get(`/keyrings/tokens/${n}/v2`,{query:{addresses:t}});return Array.isArray(o.data)&&(o.data=o.data.filter((e,n,t)=>n===t.findIndex(n=>n.address.toLowerCase()===e.address.toLowerCase())),Array.isArray(e)&&e.length>0&&(o.data=o.data.filter(n=>e.some(e=>e.toLowerCase()===n.address.toLowerCase())),o.data.sort((n,t)=>e.findIndex(e=>e.toLowerCase()===n.address.toLowerCase())-e.findIndex(e=>e.toLowerCase()===t.address.toLowerCase())))),o}catch(t){throw t}}async getTokenDetail(e,n="base"){try{if(!e)throw new Error("Address is required");const t=await this.getTokensDetails([e],n);return{data:t.data[0]||null,status:t.status}}catch(t){throw t}}async getTopGainers(e="base",n="24h",t=3){try{return await this.get(`/token-list/top-gainers/${e}`,{query:{duration:n,limit:t}})}catch(o){throw o}}},vo=new mo("https://dln.debridge.finance");async function Co(e){const{chainId:n,tokenIn:t,tokenInAmount:o,tokenOut:a,accesstoken:i,slippage:r="auto",tokenOutRecipient:s}=e;if(!(n&&t&&o&&a))throw new Error("Missing required parameters: chainId, tokenIn, tokenInAmount, tokenOut");try{const e=await fetch("https://exchange-api.keyring.app/admin/setting?configs=others",{method:"GET"}),c=await e.json(),l=c?.others||{},d=l?.AFFILIATE_FEE_PERENT,u=l?.AFFILIATE_FEE_RECIPIENT,f=await vo.get("/v1.0/chain/transaction",{query:{chainId:String(n),tokenIn:t,tokenInAmount:o,tokenOut:a,slippage:String(r),tokenOutRecipient:s,accesstoken:i,affiliateFeePercent:d,affiliateFeeRecipient:u}});if(f.data?.error)throw new Error(`DeBridge API Error: ${f.data.error}`);return{success:!0,data:f.data}}catch(c){let e=c instanceof Error?c.message:"Unknown error";const n=c;n.data?.errorMessage?e=n.data.errorMessage:n.response?.data?.errorMessage?e=n.response.data.errorMessage:n.data?.message?e=n.data.message:n.response?.data?.message&&(e=n.response.data.message);const t=n.status||n.response?.status||n.statusCode||n.data?.status;return{success:!1,error:c instanceof Error?c.message:"Unknown error",status:t,errorMessage:e,errorCode:n.data?.errorCode,errorId:n.data?.errorId}}}function To(e){const t=[],o=/!\[([^\]]*)\]\(([^)]+)\)|\[([^\]]*)\]\(([^)]+)\)|(https?:\/\/[^\s<>]+)|\*\*(.+?)\*\*|__(.+?)__|\*(.+?)\*|_(.+?)_|~~(.+?)~~|`([^`]+)`/g;let a,i=0;for(;null!==(a=o.exec(e));)a.index>i&&t.push(e.slice(i,a.index)),void 0!==a[1]||void 0!==a[2]?t.push(n.jsx("img",{src:a[2],alt:a[1],className:"mc-image",onError:e=>{e.target.src="data:image/svg+xml,%3csvg%20width='180'%20height='180'%20viewBox='0%200%20180%20180'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20opacity='0.1'%3e%3cpath%20d='M102.392%20118.157L102.417%20109.35L89.7594%20102.042C89.5768%20101.937%2089.3953%20101.826%2089.2149%20101.71L89.1861%20101.692C89.012%20101.581%2088.839%20101.47%2088.666%20101.346C88.6061%20101.305%2088.5473%20101.262%2088.4874%20101.22C88.3765%20101.139%2088.259%20101.057%2088.1459%20100.972C88.0749%20100.919%2088.0051%20100.861%2087.9352%20100.811C87.8321%20100.733%2087.73%20100.653%2087.6291%20100.571C87.5552%20100.51%2087.4813%20100.449%2087.4073%20100.387C87.3098%20100.306%2087.2125%20100.224%2087.1157%20100.141C87.0418%20100.075%2086.9678%20100.009%2086.8939%2099.9421C86.7985%2099.8578%2086.7039%2099.772%2086.61%2099.6848C86.5346%2099.6149%2086.4592%2099.5462%2086.3882%2099.4752C86.2929%2099.3843%2086.1986%2099.2922%2086.1044%2099.2002C86.0356%2099.1325%2085.9657%2099.0649%2085.897%2098.9961C85.7983%2098.8963%2085.7007%2098.7954%2085.6031%2098.6934C85.541%2098.628%2085.4778%2098.5637%2085.4168%2098.4982C85.3059%2098.3763%2085.195%2098.2521%2085.0786%2098.1267L84.9533%2097.9881C84.7995%2097.8137%2084.648%2097.6366%2084.4986%2097.457C84.4643%2097.4159%2084.4321%2097.3738%2084.3977%2097.3328C84.2868%2097.1919%2084.1671%2097.05%2084.054%2096.9069C83.9172%2096.7325%2083.7826%2096.5558%2083.6503%2096.3769L83.5827%2096.2881C83.3675%2095.9965%2083.1591%2095.6971%2082.955%2095.3943L82.8441%2095.228C82.5876%2094.8421%2082.341%2094.4495%2082.1045%2094.0503L82.0135%2093.8984C81.8487%2093.616%2081.6886%2093.3306%2081.5334%2093.0423C81.4768%2092.937%2081.4225%2092.8316%2081.3681%2092.7263C81.3138%2092.6209%2081.2572%2092.5045%2081.1952%2092.3936C81.1164%2092.2361%2081.0399%2092.0787%2080.9634%2091.9201C80.939%2091.8691%2080.9135%2091.8181%2080.8891%2091.7671C80.793%2091.5623%2080.6995%2091.3564%2080.6085%2091.1494C80.5852%2091.095%2080.562%2091.0385%2080.5398%2090.9875C80.4732%2090.8337%2080.4082%2090.6792%2080.3446%2090.524L80.2592%2090.3121C80.2008%2090.1643%2080.1435%2090.0164%2080.0873%2089.8686C80.0629%2089.8043%2080.0385%2089.7388%2080.0141%2089.6745C79.9454%2089.486%2079.8789%2089.2971%2079.8145%2089.1079L79.789%2089.0347C79.7151%2088.8218%2079.6471%2088.6088%2079.585%2088.3959C79.5639%2088.3283%2079.5451%2088.2606%2079.5262%2088.193C79.483%2088.0444%2079.4397%2087.8958%2079.3998%2087.7494C79.3776%2087.6685%2079.3566%2087.5875%2079.3355%2087.5066C79.3%2087.3691%2079.2656%2087.2319%2079.2324%2087.0952C79.2131%2087.0138%2079.1943%2086.9325%2079.1758%2086.8512C79.1436%2086.7104%2079.1137%2086.5695%2079.0849%2086.4298C79.0693%2086.3555%2079.0538%2086.2801%2079.0394%2086.208C79.0047%2086.0276%2078.9725%2085.848%2078.9429%2085.6691C78.9429%2085.638%2078.9318%2085.607%2078.9274%2085.5759C78.8941%2085.366%2078.8646%2085.1564%2078.8387%2084.9472C78.832%2084.8906%2078.8265%2084.8363%2078.8198%2084.7775C78.8028%2084.6259%2078.7873%2084.4748%2078.7733%2084.3239C78.7666%2084.253%2078.7622%2084.182%2078.7566%2084.1121C78.7455%2083.9702%2078.7378%2083.8294%2078.7311%2083.6885C78.7311%2083.622%2078.7245%2083.5544%2078.7222%2083.4878C78.7156%2083.2882%2078.71%2083.0897%2078.7112%2082.8934L78.7466%2069.3645L77.6377%2068.7258L71.9567%2065.45C70.7912%2064.7503%2069.5073%2064.2703%2068.1686%2064.0339V64.0417C68.1597%2064.1105%2068.1542%2064.1825%2068.1464%2064.2513C68.1387%2064.32%2068.1298%2064.4021%2068.1231%2064.4797C68.1231%2064.5119%2068.1165%2064.5418%2068.1132%2064.574C68.1043%2064.676%2068.0999%2064.7802%2068.0943%2064.8845C68.0943%2064.941%2068.0865%2064.9954%2068.0843%2065.0541V65.0952C68.0769%2065.2704%2068.0729%2065.4482%2068.0721%2065.6286V65.6607L68.0078%2089.1023C68.0078%2089.2679%2068.01%2089.4339%2068.0145%2089.6002C68.0145%2089.6324%2068.0145%2089.6634%2068.0145%2089.6956C68.0145%2089.7632%2068.0211%2089.832%2068.0244%2089.8996C68.0278%2089.9673%2068.03%2090.056%2068.0355%2090.1347C68.0355%2090.1957%2068.0455%2090.2578%2068.05%2090.3199C68.0544%2090.382%2068.061%2090.463%2068.0677%2090.535C68.0677%2090.5805%2068.0743%2090.6271%2068.0788%2090.6725C68.0888%2090.7757%2068.1021%2090.8799%2068.1132%2090.9842C68.1198%2091.0418%2068.1254%2091.095%2068.132%2091.1583L68.1387%2091.2137C68.1623%2091.3985%2068.1886%2091.5833%2068.2174%2091.7682V91.7837C68.2174%2091.8147%2068.2285%2091.8469%2068.234%2091.8779C68.2584%2092.0277%2068.2839%2092.1774%2068.3117%2092.3282C68.3172%2092.357%2068.3239%2092.3858%2068.3294%2092.4147C68.3438%2092.4901%2068.3604%2092.5655%2068.376%2092.6365C68.3915%2092.7074%2068.4104%2092.8128%2068.4292%2092.9004C68.4403%2092.9525%2068.4536%2093.0046%2068.4658%2093.0556C68.4843%2093.1362%2068.5031%2093.2172%2068.5224%2093.2985C68.5368%2093.3595%2068.5501%2093.4205%2068.5645%2093.4803C68.5789%2093.5402%2068.6055%2093.6345%2068.6255%2093.711C68.6454%2093.7875%2068.6676%2093.8729%2068.6887%2093.9527C68.6998%2093.9916%2068.7087%2094.0304%2068.7186%2094.0636C68.7486%2094.1745%2068.7818%2094.2854%2068.8151%2094.3963C68.8351%2094.464%2068.8539%2094.5316%2068.8739%2094.5993L68.8894%2094.6547C68.9478%2094.8462%2069.0092%2095.0376%2069.0735%2095.2291V95.2391L69.099%2095.3123C69.1533%2095.4731%2069.2099%2095.6339%2069.2676%2095.7947C69.2775%2095.8224%2069.2886%2095.8501%2069.2986%2095.8778C69.3219%2095.9422%2069.3463%2096.0054%2069.3707%2096.0697C69.4039%2096.1595%2069.4372%2096.2482%2069.4716%2096.338C69.4949%2096.3979%2069.5193%2096.4567%2069.5437%2096.5166L69.628%2096.7262C69.649%2096.7761%2069.6679%2096.8271%2069.6889%2096.877C69.7322%2096.9812%2069.7777%2097.0855%2069.8231%2097.1897C69.8464%2097.244%2069.8686%2097.3006%2069.893%2097.3516L69.9174%2097.4082C69.9972%2097.5878%2070.0789%2097.7671%2070.1625%2097.946L70.1735%2097.9704C70.1979%2098.0214%2070.2234%2098.0724%2070.2478%2098.1234C70.3133%2098.2598%2070.3776%2098.3973%2070.4452%2098.5326L70.4785%2098.5969C70.5351%2098.7078%2070.5894%2098.8187%2070.6515%2098.9296C70.6981%2099.0194%2070.7424%2099.1093%2070.7901%2099.198L70.8167%2099.2456C70.9712%2099.534%2071.1313%2099.8193%2071.2969%20100.102C71.3113%20100.126%2071.3235%20100.151%2071.3379%20100.175C71.3523%20100.199%2071.3723%20100.227%2071.3878%20100.254C71.6244%20100.653%2071.8709%20101.045%2072.1275%20101.431C72.1419%20101.452%2072.1541%20101.475%2072.1685%20101.497C72.1829%20101.519%2072.2173%20101.564%2072.2406%20101.6C72.4446%20101.902%2072.652%20102.201%2072.8682%20102.493L72.9314%20102.575C73.0645%20102.754%2073.1994%20102.931%2073.3362%20103.107L73.3595%20103.137C73.4704%20103.272%2073.5746%20103.405%2073.6833%20103.537L73.7798%20103.656L73.7875%20103.665C73.9287%20103.835%2074.0718%20104.002%2074.2167%20104.167L74.2344%20104.187L74.3597%20104.326C74.4551%20104.437%2074.5516%20104.541%2074.6481%20104.646L74.698%20104.698C74.7601%20104.764%2074.8222%20104.828%2074.8843%20104.893C74.9464%20104.959%2075.0284%20105.046%2075.106%20105.122L75.1814%20105.197C75.2502%20105.266%2075.319%20105.334%2075.3888%20105.401C75.4587%20105.469%2075.5108%20105.524%2075.5729%20105.583L75.6727%20105.676C75.747%20105.747%2075.8224%20105.817%2075.8945%20105.886C75.9488%20105.936%2076.0054%20105.987%2076.0564%20106.036L76.1784%20106.146L76.4002%20106.345C76.4478%20106.386%2076.4944%20106.429%2076.5432%20106.469C76.592%20106.509%2076.643%20106.55%2076.6918%20106.59L76.9136%20106.774C76.9535%20106.806%2076.9923%20106.84%2077.0322%20106.872C77.0943%20106.921%2077.1576%20106.967%2077.2197%20107.015C77.2818%20107.062%2077.3594%20107.126%2077.4292%20107.174L77.5168%20107.241C77.6011%20107.303%2077.6876%20107.362%2077.7719%20107.423C77.8307%20107.465%2077.8894%20107.508%2077.9493%20107.549L77.997%20107.584C78.1523%20107.69%2078.3086%20107.794%2078.4661%20107.894L78.4905%20107.91C78.6357%20108.002%2078.7821%20108.092%2078.9341%20108.178L79.0449%20108.241L98.4999%20119.478C98.6175%20119.546%2098.7346%20119.611%2098.8515%20119.674L98.9867%20119.744L99.1653%20119.836C99.2119%20119.859%2099.2584%20119.885%2099.3039%20119.908C99.3793%20119.946%2099.4547%20119.979%2099.5257%20120.019L99.6832%20120.093L99.7464%20120.123C99.8942%20120.19%20100.042%20120.252%20100.19%20120.311L100.208%20120.317C100.35%20120.374%20100.492%20120.428%20100.633%20120.477L100.693%20120.497L100.856%20120.55C100.93%20120.575%20101.004%20120.6%20101.078%20120.622L101.189%20120.655L101.385%20120.709C101.434%20120.722%20101.484%20120.738%20101.532%20120.75C101.579%20120.762%20101.643%20120.773%20101.693%20120.785L101.888%20120.829L101.986%20120.851L102.085%20120.867C102.158%20120.553%20102.219%20120.227%20102.266%20119.886C102.346%20119.313%20102.388%20118.736%20102.392%20118.157Z'%20fill='url(%23paint0_linear_302_6100)'/%3e%3cpath%20d='M91.4307%2064.3019L78.0005%2056.5472L75.8214%2055.2885L71.9957%2053.0796C59.9427%2046.1222%2050.1032%2051.73%2050.0633%2065.5794L50.0001%2087.9076C49.9613%20101.769%2059.7365%20118.694%2071.7894%20125.652L91.2244%20136.872C103.276%20143.831%20113.117%20138.227%20113.156%20124.373L113.183%20114.546V113.668L113.217%20102.041C113.259%2088.1926%20103.482%2071.2604%2091.4307%2064.3019ZM102.419%20108.881V109.349L102.395%20118.156C102.394%20118.733%20102.355%20119.309%20102.278%20119.881C102.232%20120.222%20102.167%20120.547%20102.097%20120.863C100.943%20125.853%2096.5184%20127.534%2091.2621%20124.5L71.8249%20113.283C65.708%20109.753%2060.7478%20101.16%2060.7678%2094.1275L60.831%2071.7949C60.8454%2066.777%2063.3948%2063.8927%2067.0787%2063.9382C67.4454%2063.9447%2067.8112%2063.9777%2068.1732%2064.0369C69.5103%2064.2737%2070.7927%2064.7537%2071.9568%2065.453L77.6312%2068.7232L78.7401%2069.3619L91.3974%2076.6697C97.512%2080.205%20102.476%2088.7947%20102.452%2095.8275L102.419%20108.881Z'%20fill='url(%23paint1_linear_302_6100)'/%3e%3cpath%20d='M129.993%2090.9695C129.993%2090.9063%20129.987%2090.842%20129.985%2090.7788C129.985%2090.648%20129.972%2090.516%20129.966%2090.3851C129.958%2090.2288%20129.953%2090.0746%20129.944%2089.9172C129.936%2089.7952%20129.924%2089.671%20129.914%2089.5479C129.904%2089.4248%20129.892%2089.2707%20129.88%2089.1309C129.873%2089.04%20129.867%2088.9491%20129.858%2088.8582C129.838%2088.6519%20129.813%2088.4445%20129.789%2088.2383C129.776%2088.1274%20129.766%2088.0165%20129.752%2087.9056C129.752%2087.869%20129.744%2087.8324%20129.739%2087.7947C129.694%2087.431%20129.642%2087.0658%20129.583%2086.6991L129.578%2086.6669C129.568%2086.6037%20129.555%2086.5405%20129.544%2086.4773C129.497%2086.1845%20129.448%2085.8918%20129.392%2085.5979C129.381%2085.5391%20129.368%2085.4815%20129.357%2085.4227C129.328%2085.2752%20129.297%2085.1277%20129.267%2084.9791C129.232%2084.805%20129.199%2084.632%20129.156%2084.459C129.134%2084.3559%20129.107%2084.2528%20129.084%2084.1497C129.048%2083.99%20129.011%2083.8303%20128.973%2083.6706C128.944%2083.5519%20128.92%2083.4333%20128.89%2083.3146C128.852%2083.1627%20128.809%2083.0097%20128.77%2082.8566C128.731%2082.7036%20128.688%2082.5395%20128.645%2082.3809C128.625%2082.3055%20128.606%2082.2301%20128.585%2082.1591C128.524%2081.9373%20128.458%2081.7222%20128.393%2081.5038C128.354%2081.3729%20128.318%2081.2409%20128.282%2081.1101C128.271%2081.0746%20128.262%2081.0391%20128.251%2080.9992C128.135%2080.6214%20128.014%2080.244%20127.889%2079.867L127.881%2079.8448C127.863%2079.7927%20127.844%2079.7417%20127.827%2079.6896C127.716%2079.3768%20127.613%2079.063%20127.494%2078.7503C127.474%2078.6948%20127.452%2078.6394%20127.432%2078.584C127.385%2078.4564%20127.336%2078.3289%20127.288%2078.2014C127.222%2078.0273%20127.159%2077.8532%20127.091%2077.6791C127.046%2077.5615%20126.997%2077.4451%20126.949%2077.3275C126.894%2077.1886%20126.838%2077.0499%20126.782%2076.9117C126.742%2076.813%20126.704%2076.7143%20126.663%2076.6167C126.577%2076.4094%20126.487%2076.2042%20126.398%2075.9979C126.353%2075.8871%20126.308%2075.7861%20126.262%2075.6797L126.215%2075.5688C126.059%2075.2147%20125.898%2074.8617%20125.733%2074.5098L125.711%2074.4632C125.661%2074.3523%20125.608%2074.2525%20125.558%2074.146C125.431%2073.881%20125.305%2073.616%20125.174%2073.3532C125.153%2073.311%20125.13%2073.2689%20125.109%2073.2256C124.998%2073.0038%20124.887%2072.7821%20124.768%2072.5669C124.677%2072.3906%20124.589%2072.2143%20124.495%2072.0391C124.478%2072.0069%20124.459%2071.9759%20124.441%2071.9426C124.136%2071.3756%20123.821%2070.8137%20123.495%2070.257C123.467%2070.2094%20123.443%2070.1617%20123.415%2070.114C123.333%2069.9743%20123.247%2069.8379%20123.164%2069.6992C123.024%2069.4675%20122.885%2069.2357%20122.742%2069.0062C122.618%2068.8066%20122.492%2068.6092%20122.365%2068.4118C122.22%2068.19%20122.076%2067.9604%20121.927%2067.7364C121.877%2067.6599%20121.829%2067.5823%20121.778%2067.5069C121.727%2067.4315%20121.682%2067.3727%20121.635%2067.304C121.233%2066.7085%20120.824%2066.1196%20120.4%2065.5441L120.395%2065.5352C120.354%2065.4787%20120.309%2065.4243%20120.268%2065.3689C120.006%2065.017%20119.741%2064.6688%20119.472%2064.3243L119.425%2064.2633C119.215%2063.996%20119%2063.7343%20118.786%2063.4715C118.722%2063.395%20118.661%2063.3163%20118.598%2063.2398L118.584%2063.222C118.306%2062.8879%20118.024%2062.5581%20117.739%2062.2328L117.702%2062.1929C117.621%2062.0998%20117.537%2062.0111%20117.455%2061.919C117.266%2061.7083%20117.078%2061.4954%20116.886%2061.2892L116.788%2061.1871C116.666%2061.0563%20116.542%2060.9288%20116.418%2060.799C116.276%2060.6504%20116.135%2060.4985%20115.991%2060.3554C115.942%2060.3055%20115.891%2060.2579%20115.841%2060.208C115.706%2060.0716%20115.57%2059.9385%20115.433%2059.8043C115.297%2059.6701%20115.193%2059.5626%20115.071%2059.445C115.005%2059.3829%20114.939%2059.323%20114.873%2059.2609C114.726%2059.1212%20114.577%2058.9837%20114.43%2058.8473C114.319%2058.7497%20114.219%2058.6488%20114.112%2058.5523C114.034%2058.4814%20113.953%2058.4137%20113.873%2058.3427C113.725%2058.2104%20113.575%2058.0796%20113.424%2057.9502C113.33%2057.8692%20113.238%2057.7849%20113.142%2057.7051C113.047%2057.6253%20112.946%2057.5465%20112.848%2057.4656C112.7%2057.3443%20112.553%2057.2242%20112.405%2057.1052C112.326%2057.042%20112.248%2056.9754%20112.169%2056.9122C112.045%2056.8157%20111.921%2056.7248%20111.798%2056.6294C111.675%2056.5341%20111.523%2056.4176%20111.386%2056.3145C111.328%2056.2713%20111.275%2056.2258%20111.213%2056.1826C111.045%2056.0595%20110.88%2055.943%20110.707%2055.8233C110.596%2055.7412%20110.476%2055.6569%20110.36%2055.5771L110.265%2055.5094C109.958%2055.2995%20109.651%2055.0958%20109.341%2054.8984H109.334L109.288%2054.8696C109%2054.6877%20108.711%2054.5092%20108.42%2054.3384L108.206%2054.2142L88.7824%2042.9941C88.551%2042.8603%2088.3204%2042.7313%2088.0904%2042.6071C88.0017%2042.5594%2087.9141%2042.5162%2087.8254%2042.4696L87.4717%2042.2866C87.3807%2042.24%2087.2887%2042.1901%2087.1989%2042.1447C87.0492%2042.0704%2086.9017%2042.0049%2086.7553%2041.9351C86.6511%2041.8863%2086.5479%2041.8353%2086.4448%2041.7887L86.3195%2041.7299C86.0238%2041.5991%2085.7332%2041.476%2085.4479%2041.3607L85.4035%2041.344C85.1252%2041.2331%2084.8491%2041.1289%2084.5729%2041.0313L84.4465%2040.9847C84.3356%2040.9481%2084.2336%2040.9149%2084.1271%2040.8805C83.9819%2040.8328%2083.8366%2040.7818%2083.6924%2040.7385C83.6159%2040.7153%2083.5405%2040.6975%2083.464%2040.6753C83.3354%2040.6376%2083.2078%2040.6033%2083.0792%2040.5644C82.9827%2040.5389%2082.8851%2040.5079%2082.7898%2040.4846C82.6944%2040.4613%2082.5802%2040.4436%2082.4737%2040.4192C82.3462%2040.3903%2082.2176%2040.3604%2082.0912%2040.3327C82.0268%2040.3194%2081.9603%2040.3016%2081.896%2040.2894C81.7729%2040.265%2081.6531%2040.2506%2081.53%2040.2295C81.3826%2040.204%2081.234%2040.1774%2081.0865%2040.1564C81.0388%2040.1508%2080.9878%2040.1397%2080.939%2040.1331C80.8148%2040.1109%2080.6928%2040.1109%2080.5697%2040.0954C80.4122%2040.0776%2080.2548%2040.0599%2080.0995%2040.0477C80.0563%2040.0477%2080.0108%2040.0377%2079.9676%2040.0344C79.8567%2040.0266%2079.7558%2040.0288%2079.6482%2040.0233C79.4608%2040.0144%2079.2756%2040.0067%2079.0893%2040C79.0394%2040%2078.9884%2040%2078.9385%2040C78.8575%2040%2078.7799%2040.01%2078.699%2040.0111C78.4661%2040.0111%2078.2354%2040.0266%2078.0081%2040.0432C77.9405%2040.0432%2077.8706%2040.0432%2077.8041%2040.0532C77.7054%2040.0621%2077.61%2040.0765%2077.5124%2040.0876L77.3017%2040.1109C77.0455%2040.1453%2076.7916%2040.1841%2076.5421%2040.2351L76.5144%2040.244C76.4401%2040.2595%2076.368%2040.2794%2076.2926%2040.2961C76.0897%2040.3415%2075.8878%2040.3892%2075.6904%2040.4447C75.5895%2040.4735%2075.4919%2040.5068%2075.3921%2040.5389C75.2646%2040.5789%2075.1349%2040.6143%2075.0085%2040.6598C74.9752%2040.6709%2074.9441%2040.6875%2074.912%2040.6986C74.7146%2040.7707%2074.5239%2040.8517%2074.332%2040.9348C74.2389%2040.9747%2074.1435%2041.0113%2074.0526%2041.0535C73.7731%2041.1843%2073.4981%2041.3252%2073.2331%2041.4793L62.5375%2047.6893C62.8036%2047.5351%2063.0775%2047.3943%2063.3559%2047.2635C63.4479%2047.2202%2063.5433%2047.1847%2063.6364%2047.1437C63.8272%2047.0605%2064.019%2046.9796%2064.2153%2046.9075C64.3727%2046.8498%2064.5335%2046.7966%2064.6954%2046.7478C64.7952%2046.7168%2064.8928%2046.6824%2064.9937%2046.6536C65.1911%2046.5981%2065.3941%2046.5504%2065.5959%2046.505C65.6691%2046.4883%2065.7412%2046.4684%2065.8177%2046.4528C66.0761%2046.4007%2066.3389%2046.3586%2066.605%2046.3231C66.6749%2046.3142%2066.7458%2046.3065%2066.8157%2046.2987C66.9798%2046.2798%2067.1484%2046.2665%2067.3114%2046.2543C67.5387%2046.2366%2067.7694%2046.2266%2068.0023%2046.2211C68.132%2046.2211%2068.2606%2046.2133%2068.3915%2046.2144C68.5756%2046.2144%2068.763%2046.2244%2068.946%2046.2333C69.0957%2046.2399%2069.2454%2046.2455%2069.3973%2046.2577C69.5492%2046.2699%2069.71%2046.2887%2069.8675%2046.3054C70.0249%2046.322%2070.2112%2046.3431%2070.3865%2046.3675C70.5328%2046.3885%2070.6803%2046.4151%2070.83%2046.4406C71.0163%2046.4728%2071.2026%2046.505%2071.3911%2046.5449C71.5176%2046.5715%2071.6462%2046.6003%2071.7737%2046.6303C71.9748%2046.6768%2072.177%2046.7271%2072.3803%2046.7811C72.5078%2046.8155%2072.6365%2046.8498%2072.764%2046.892C72.9858%2046.9552%2073.2076%2047.025%2073.4293%2047.0971C73.5402%2047.1315%2073.6411%2047.1648%2073.7476%2047.2014C74.0625%2047.3123%2074.3786%2047.4231%2074.698%2047.5529L74.7423%2047.5695C75.075%2047.7026%2075.4077%2047.8479%2075.7403%2047.9998C75.8435%2048.0464%2075.9466%2048.0974%2076.0508%2048.1462C76.2896%2048.2585%2076.5295%2048.3757%2076.7705%2048.4977C76.8881%2048.5576%2077.006%2048.6186%2077.1243%2048.6807C77.4414%2048.8481%2077.7597%2049.0189%2078.0802%2049.2041L97.5219%2060.4253C97.8834%2060.6338%2098.2427%2060.8515%2098.5997%2061.0785L98.6507%2061.1095C98.9945%2061.3313%2099.3361%2061.5531%2099.6754%2061.7915C99.7918%2061.8724%2099.9072%2061.9567%20100.022%2062.0388C100.244%2062.1996%20100.476%2062.3626%20100.701%2062.53C100.839%2062.6332%20100.975%2062.7385%20101.113%2062.8439C101.316%2062.9999%20101.518%2063.1588%20101.72%2063.3207C101.868%2063.439%20102.016%2063.5588%20102.164%2063.68C102.357%2063.8397%20102.549%2064.0016%20102.739%2064.1657C102.887%2064.2951%20103.035%2064.4256%20103.183%2064.5572C103.37%2064.7228%20103.555%2064.8909%20103.737%2065.0617C103.886%2065.1981%20104.035%2065.3356%20104.181%2065.4753C104.369%2065.6539%20104.557%2065.8357%20104.743%2066.0187C104.878%2066.1518%20105.015%2066.2849%20105.149%2066.4202C105.343%2066.6153%20105.534%2066.8149%20105.726%2067.0145C105.85%2067.1443%20105.974%2067.2718%20106.097%2067.4038C106.319%2067.6433%20106.541%2067.8884%20106.763%2068.1334C106.845%2068.2255%20106.929%2068.3153%20107.011%2068.4085C107.313%2068.7522%20107.612%2069.1015%20107.907%2069.4564C107.97%2069.5329%20108.031%2069.6116%20108.094%2069.6882C108.325%2069.9698%20108.556%2070.2526%20108.781%2070.5409C109.05%2070.8847%20109.315%2071.2329%20109.576%2071.5855C109.619%2071.6443%20109.665%2071.6964%20109.709%2071.7607C110.133%2072.3363%20110.543%2072.9251%20110.944%2073.5195C111.042%2073.6637%20111.141%2073.8078%20111.236%2073.9531C111.383%2074.1749%20111.529%2074.4022%20111.674%2074.6284C111.8%2074.8258%20111.927%2075.0232%20112.051%2075.2228C112.194%2075.4524%20112.333%2075.6841%20112.472%2075.9159C112.583%2076.1011%20112.694%2076.2863%20112.805%2076.4703C113.13%2077.027%20113.446%2077.5893%20113.751%2078.157C113.862%2078.3633%20113.973%2078.5706%20114.076%2078.7769C114.179%2078.9832%20114.307%2079.2205%20114.417%2079.4423C114.57%2079.7472%20114.72%2080.0544%20114.867%2080.3616C114.918%2080.4725%20114.97%2080.5723%20115.02%2080.6787C115.209%2081.0816%20115.394%2081.4882%20115.574%2081.8985C115.621%2082.0094%20115.666%2082.1126%20115.712%2082.2201C115.842%2082.5232%20115.97%2082.8274%20116.095%2083.1328C116.152%2083.2718%20116.208%2083.4104%20116.263%2083.5486C116.379%2083.8399%20116.49%2084.1315%20116.595%2084.4236C116.643%2084.5511%20116.692%2084.6786%20116.74%2084.8061C116.874%2085.1758%20117.004%2085.5454%20117.129%2085.9151C117.147%2085.9661%20117.165%2086.0182%20117.183%2086.0692C117.324%2086.4891%20117.457%2086.909%20117.585%2087.3289C117.624%2087.4609%20117.661%2087.5929%20117.695%2087.7248C117.782%2088.0176%20117.866%2088.3103%20117.945%2088.6031C117.988%2088.7628%20118.029%2088.9225%20118.071%2089.0833C118.142%2089.3531%20118.209%2089.6229%20118.273%2089.8928C118.312%2090.0532%20118.349%2090.2133%20118.384%2090.3729C118.447%2090.6494%20118.506%2090.9259%20118.561%2091.2024C118.591%2091.3499%20118.622%2091.4974%20118.651%2091.646C118.719%2091.9986%20118.782%2092.3502%20118.839%2092.7006C118.849%2092.7638%20118.862%2092.827%20118.872%2092.8902C118.938%2093.3042%20118.996%2093.7167%20119.046%2094.1278C119.061%2094.2387%20119.07%2094.3496%20119.084%2094.4604C119.118%2094.7562%20119.148%2095.0537%20119.175%2095.3531C119.187%2095.4929%20119.198%2095.6315%20119.208%2095.7701C119.229%2096.0495%20119.246%2096.3279%20119.259%2096.6051C119.266%2096.7371%20119.272%2096.869%20119.278%2097.001C119.292%2097.3936%20119.301%2097.7839%20119.3%2098.172L119.237%20120.505C119.237%20120.912%20119.225%20121.31%20119.207%20121.702C119.207%20121.813%20119.192%20121.924%20119.187%20122.035C119.171%20122.304%20119.154%20122.572%20119.129%20122.835C119.116%20122.986%20119.099%20123.135%20119.083%20123.285C119.058%20123.507%20119.033%20123.728%20119.003%20123.95C118.981%20124.11%20118.957%20124.266%20118.932%20124.423C118.9%20124.624%20118.866%20124.822%20118.829%20125.018C118.795%20125.193%20118.761%20125.367%20118.725%20125.538C118.688%20125.71%20118.648%20125.884%20118.605%20126.06C118.556%20126.262%20118.504%20126.461%20118.449%20126.657C118.406%20126.811%20118.363%20126.964%20118.316%20127.115C118.244%20127.349%20118.168%20127.577%20118.088%20127.804C118.044%20127.928%20118.001%20128.053%20117.956%20128.175C117.811%20128.557%20117.657%20128.928%20117.488%20129.284C117.357%20129.561%20117.221%20129.832%20117.077%20130.092C117.061%20130.121%20117.042%20130.148%20117.027%20130.177C116.895%20130.412%20116.758%20130.64%20116.616%20130.862C116.582%20130.915%20116.545%20130.966%20116.506%20131.02C116.386%20131.199%20116.263%20131.375%20116.136%20131.546C116.084%20131.616%20116.031%20131.686%20115.978%20131.755C115.855%20131.913%20115.729%20132.067%20115.6%20132.216C115.552%20132.273%20115.504%20132.327%20115.455%20132.385C115.279%20132.582%20115.097%20132.774%20114.91%20132.956C114.881%20132.983%20114.85%20133.01%20114.821%20133.038C114.66%20133.191%20114.495%20133.339%20114.327%20133.481C114.264%20133.533%20114.2%20133.584%20114.137%20133.635C113.989%20133.753%20113.841%20133.866%20113.693%20133.975C113.63%20134.02%20113.568%20134.067%20113.504%20134.11C113.292%20134.255%20113.077%20134.395%20112.855%20134.524L123.549%20128.314C123.771%20128.185%20123.986%20128.045%20124.199%20127.9C124.264%20127.857%20124.326%20127.81%20124.388%20127.765C124.539%20127.656%20124.687%20127.543%20124.831%20127.425C124.895%20127.374%20124.959%20127.323%20125.021%20127.271C125.19%20127.129%20125.356%20126.982%20125.518%20126.828C125.547%20126.801%20125.577%20126.776%20125.604%20126.748C125.792%20126.566%20125.974%20126.374%20126.15%20126.177C126.199%20126.121%20126.246%20126.066%20126.295%20126.007C126.424%20125.859%20126.55%20125.706%20126.673%20125.546C126.727%20125.477%20126.784%20125.407%20126.832%20125.337C126.958%20125.167%20127.081%20124.991%20127.2%20124.812C127.236%20124.759%20127.272%20124.707%20127.311%20124.653L127.344%20124.604C127.475%20124.399%20127.598%20124.186%20127.72%20123.971C127.737%20123.941%20127.756%20123.915%20127.772%20123.885C127.911%20123.633%20128.044%20123.375%20128.17%20123.108L128.184%20123.076C128.352%20122.72%20128.506%20122.349%20128.652%20121.967C128.665%20121.933%20128.68%20121.902%20128.694%20121.868C128.726%20121.78%20128.753%20121.686%20128.784%20121.597C128.863%20121.375%20128.941%20121.141%20129.013%20120.907C129.033%20120.843%20129.056%20120.783%20129.075%20120.719C129.101%20120.632%20129.121%20120.539%20129.145%20120.451C129.2%20120.255%20129.252%20120.056%20129.301%20119.854C129.321%20119.769%20129.347%20119.691%20129.366%20119.605C129.385%20119.52%20129.401%20119.423%20129.42%20119.334C129.457%20119.161%20129.492%20118.987%20129.525%20118.811C129.543%20118.719%20129.564%20118.631%20129.581%20118.537C129.598%20118.444%20129.612%20118.323%20129.629%20118.218C129.653%20118.062%20129.677%20117.904%20129.7%20117.745C129.711%20117.661%20129.726%20117.582%20129.736%20117.497C129.753%20117.362%20129.764%20117.221%20129.779%20117.085C129.795%20116.948%20129.813%20116.785%20129.826%20116.632C129.832%20116.57%20129.84%20116.51%20129.845%20116.448C129.861%20116.249%20129.87%20116.041%20129.883%20115.837C129.889%20115.726%20129.898%20115.615%20129.904%20115.505C129.904%20115.477%20129.904%20115.45%20129.904%20115.422C129.918%20115.077%20129.927%20114.726%20129.928%20114.37V114.308L129.991%2091.9753C130.002%2091.6331%20130.003%2091.2978%20129.993%2090.9695Z'%20fill='%230B0E11'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_302_6100'%20x1='68.0078'%20y1='92.449'%20x2='102.417'%20y2='92.449'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23313131'/%3e%3cstop%20offset='1'%20stop-color='%230B0E11'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_302_6100'%20x1='50.0001'%20y1='94.977'%20x2='113.22'%20y2='94.977'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%234E4E4E'/%3e%3cstop%20offset='1'%20stop-color='%230B0E11'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e"}},a.index)):void 0!==a[3]?t.push(n.jsx("a",{href:a[4],target:"_blank",rel:"noopener noreferrer",className:"mc-link",children:a[3]},a.index)):void 0!==a[5]?t.push(n.jsx("a",{href:a[5],target:"_blank",rel:"noopener noreferrer",className:"mc-link",children:a[5]},a.index)):void 0!==a[6]?t.push(n.jsx("strong",{children:To(a[6])},a.index)):void 0!==a[7]?t.push(n.jsx("strong",{children:To(a[7])},a.index)):void 0!==a[8]?t.push(n.jsx("em",{children:To(a[8])},a.index)):void 0!==a[9]?t.push(n.jsx("em",{children:To(a[9])},a.index)):void 0!==a[10]?t.push(n.jsx("del",{children:To(a[10])},a.index)):void 0!==a[11]&&t.push(n.jsx("code",{className:"mc-inline-code",children:a[11]},a.index)),i=a.index+a[0].length;return i<e.length&&t.push(e.slice(i)),t.length>0?t:[e]}const Io=({content:e})=>{const t=e.split("\n"),o=[];let a=0;for(;a<t.length;){const e=t[a];if(e.trimStart().startsWith("```")){const i=e.trimStart().slice(3)?.trim(),r=[];for(a++;a<t.length&&!t[a].trimStart().startsWith("```");)r.push(t[a]),a++;o.push(n.jsxs("div",{className:"mc-codeblock",children:[i&&n.jsx("div",{className:"mc-codeblock-lang",children:i}),n.jsx("pre",{children:n.jsx("code",{children:r.join("\n")})})]},`code-${a}`)),a++;continue}if(/^(\s*[-*_]\s*){3,}$/.test(e)){o.push(n.jsx("hr",{className:"mc-hr"},`hr-${a}`)),a++;continue}const i=e.match(/^(#{1,3})\s+(.+)/);if(i){const e=i[1].length,t=i[2];o.push(n.jsx("div",{className:`mc-heading mc-h${e}`,children:To(t)},`h-${a}`)),a++;continue}if(e.trimStart().startsWith("> ")){const e=[];for(;a<t.length&&t[a].trimStart().startsWith("> ");)e.push(t[a].replace(/^\s*>\s?/,"")),a++;o.push(n.jsx("div",{className:"mc-blockquote",children:e.map((e,t)=>n.jsx("div",{children:To(e)},t))},`bq-${a}`));continue}""!==e?.trim()?(o.push(n.jsx("div",{className:"mc-line",children:To(e)},`line-${a}`)),a++):(o.push(n.jsx("div",{className:"mc-empty-line"},`empty-${a}`)),a++)}return n.jsx("div",{className:"message-content",children:o})},Eo={send_native:{label:"actionSendNativeLabel",description:"actionSendNativeDesc",fields:[{key:"to_address",label:"fieldToAddress",type:"address",placeholder:"0x...",required:!0,validation:"address"},{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},send_token:{label:"actionSendTokenLabel",description:"actionSendTokenDesc",fields:[{key:"contract_address",label:"fieldTokenContract",type:"address",placeholder:"0x... token contract",required:!0,validation:"address",editable:!1},{key:"token_symbol",label:"fieldTokenSymbol",type:"text",placeholder:"e.g. USDC",required:!1,editable:!1},{key:"decimals",label:"fieldDecimals",type:"number",placeholder:"18",required:!1,editable:!1},{key:"to_address",label:"fieldToAddress",type:"address",placeholder:"0x...",required:!0,validation:"address"},{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},swap_token:{label:"actionSwapTokenLabel",description:"actionSwapTokenDesc",fields:[{key:"token_in",label:"fieldTokenIn",type:"address",placeholder:"0x... or native",required:!0,editable:!1},{key:"token_in_symbol",label:"fieldTokenInSymbol",type:"text",placeholder:"e.g. ETH",required:!1,editable:!1},{key:"token_out",label:"fieldTokenOut",type:"address",placeholder:"0x...",required:!0,editable:!1},{key:"token_out_symbol",label:"fieldTokenOutSymbol",type:"text",placeholder:"e.g. USDC",required:!1,editable:!1},{key:"token_in_decimals",label:"fieldTokenInDecimals",type:"number",placeholder:"18",required:!1,editable:!1},{key:"token_out_decimals",label:"fieldTokenOutDecimals",type:"number",placeholder:"18",required:!1,editable:!1},{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},approve_token:{label:"actionApproveTokenLabel",description:"actionApproveTokenDesc",fields:[{key:"contract_address",label:"fieldTokenContract",type:"address",placeholder:"0x... token contract",required:!0,validation:"address",editable:!1},{key:"token_symbol",label:"fieldTokenSymbol",type:"text",placeholder:"e.g. USDC",required:!1,editable:!1},{key:"spender_address",label:"fieldSpenderAddress",type:"address",placeholder:"0x... spender contract",required:!0,validation:"address",editable:!1},{key:"amount",label:"fieldAmountUnlimited",type:"amount",placeholder:"0.0 or leave empty for max",required:!1,validation:"amount"},{key:"decimals",label:"fieldDecimals",type:"number",placeholder:"18",required:!1,editable:!1}]},wrap_native:{label:"actionWrapNativeLabel",description:"actionWrapNativeDesc",fields:[{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},unwrap_native:{label:"actionUnwrapNativeLabel",description:"actionUnwrapNativeDesc",fields:[{key:"amount",label:"fieldAmount",type:"amount",placeholder:"0.0",required:!0,validation:"amount"}]},send_nft:{label:"actionSendNftLabel",description:"actionSendNftDesc",fields:[{key:"contract_address",label:"fieldNftContract",type:"address",placeholder:"0x... NFT contract",required:!0,validation:"address",editable:!1},{key:"token_id",label:"fieldTokenId",type:"text",placeholder:"e.g. 1234",required:!0,editable:!1},{key:"to_address",label:"fieldToAddress",type:"address",placeholder:"0x...",required:!0,validation:"address"},{key:"token_standard",label:"fieldTokenStandard",type:"text",placeholder:"ERC721 or ERC1155",required:!0,editable:!1},{key:"amount",label:"fieldAmount",type:"text",placeholder:"1",required:!0},{key:"maxAmount",label:"fieldMaxAmount",type:"text",placeholder:"",required:!1,editable:!1,hidden:!0},{key:"nft_name",label:"fieldNftName",type:"text",placeholder:"e.g. Bored Ape #1234",required:!1,editable:!1}]}};function xo(e){if(!e||""===e?.trim())return!1;const n=parseFloat(e);return!isNaN(n)&&n>0}const No=({action:e,initialValues:o,onSubmit:a,onCancel:i,isSubmitting:r=!1,tokenInfo:c,nftInfo:l})=>{const{t:d,ti:u}=s(),f=Eo[e],[h,m]=t.useState(()=>{if(!f)return{};const e={};return f.fields.forEach(n=>{e[n.key]=o[n.key]||""}),e}),[p]=t.useState(()=>["send_native","send_token","swap_token"].includes(e)&&!c&&h.contract_address?d("formTokenNotFound"):null),[w,b]=t.useState(()=>{const n={};if(["send_native","send_token","swap_token"].includes(e)&&c){const e=parseFloat(c.balanceFormatted||"0");if(e<=0)n.amount=u("formNoBalance",{symbol:c.symbol??""});else{const t=o.amount?.trim();t&&xo(t)&&parseFloat(t)>e&&(n.amount=u("formInsufficientBalance",{balance:c.balanceFormatted,symbol:c.symbol??""}))}}return n}),g=t.useCallback((e,n)=>{m(t=>({...t,[e]:n})),w[e]&&b(n=>{const t={...n};return delete t[e],t})},[w]),y=t.useCallback(()=>{if(!f)return!1;const n={};if(f.fields.forEach(t=>{const o=h[t.key]?.trim()||"";!t.required||o||"send_nft"===e&&"amount"===t.key?o&&("address"!==t.validation||Sn(o)||(n[t.key]=d("formInvalidAddress")),"amount"!==t.validation||xo(o)||(n[t.key]=d("formMustBePositive")),"amount"===t.key&&o&&xo(o)&&c?.balanceFormatted&&parseFloat(o)>parseFloat(c.balanceFormatted)&&(n[t.key]=u("formInsufficientBalance",{balance:c.balanceFormatted,symbol:c.symbol??""})),"positive_number"===t.validation&&(isNaN(Number(o))||Number(o)<0)&&(n[t.key]=d("formMustBeValidNumber"))):n[t.key]=u("formFieldRequired",{field:d(t.label)})}),"send_nft"===e&&"ERC1155"===h.token_standard?.toUpperCase()){const e=h.amount?.trim();if(e)if(!/^\d+$/.test(e)||parseInt(e,10)<1)n.amount=d("formMustBePositiveInteger");else{const t=parseInt(o.maxAmount||"0",10);t>0&&parseInt(e,10)>t&&(n.amount=u("formAmountExceedsNft",{max:String(t)}))}else n.amount=u("formFieldRequired",{field:d("fieldAmount")})}return b(n),0===Object.keys(n).length},[f,h,c,e,o,d,u]),A=t.useCallback(()=>{y()&&a(e,h)},[y,a,e,h]);return f?n.jsxs("div",{className:"action-form",children:[n.jsx("div",{className:"action-form-title",children:n.jsx("span",{children:d(f.label)})}),p&&n.jsxs("div",{className:"action-form-general-error",children:["⚠️ ",p]}),c&&n.jsx("div",{className:"action-form-token-info",children:n.jsxs("div",{className:"token-info-row",children:[c.logo&&n.jsx("img",{src:c.logo,alt:c.symbol,className:"token-info-logo",width:20,height:20}),n.jsxs("div",{className:"token-info-details",children:[n.jsxs("span",{className:"token-info-name",children:[c.name," (",c.symbol,")"]}),n.jsxs("span",{className:"token-info-balance",children:[d("spendable"),": ",ho(c.balanceFormatted).decimalPlaces(8,ho.ROUND_DOWN).toFormat()," ",c.symbol,void 0!==c.usdValue&&n.jsxs("span",{className:"token-info-usd",children:[" ","≈ $",c.usdValue.toFixed(2)]})]})]})]})}),l?.image&&n.jsx("div",{className:"action-form-nft-info",children:n.jsx("img",{src:l.image,alt:l.name,className:"nft-info-image",onError:e=>{e.target.style.display="none"}})}),n.jsx("div",{className:"action-form-fields",children:f.fields.map(t=>t.hidden||"amount"===t.key&&"send_nft"===e&&"ERC1155"!==h.token_standard?.toUpperCase()||["decimals"].includes(t.key)&&"send_token"===e&&o.decimals?null:n.jsxs("div",{className:"action-form-field",children:[n.jsxs("div",{className:"action-form-field-header",children:[n.jsxs("div",{className:"action-form-field-label",children:[d(t.label),t.required&&" *"]}),"amount"===t.key&&c&&"send_nft"!==e&&n.jsxs("div",{className:"action-form-pct-btns",children:[[25,50,75].map(e=>n.jsxs("button",{type:"button",className:"action-form-pct-btn",onClick:()=>g("amount",(parseFloat(c.balanceFormatted)*e/100).toString()),disabled:r,children:[e,"%"]},e)),n.jsx("button",{type:"button",className:"action-form-pct-btn action-form-max-btn",onClick:()=>g("amount",c.balanceFormatted),disabled:r,children:"MAX"})]})]}),(()=>{const e=!1===t.editable&&!!o[t.key],a=r||e,i=[w[t.key]?"error":"",e?"readonly":""].filter(Boolean).join(" ");return"address"===t.type?n.jsx("textarea",{rows:2,placeholder:t.placeholder,value:h[t.key]||"",onChange:e=>g(t.key,e.target.value),className:i,disabled:a}):n.jsx("input",{type:"number"===t.type?"number":"text",placeholder:t.placeholder,value:h[t.key]||"",onChange:e=>g(t.key,e.target.value),className:i,disabled:a})})(),w[t.key]&&n.jsx("span",{className:"field-error",children:w[t.key]})]},t.key))}),n.jsxs("div",{className:"action-form-actions",children:[n.jsx("button",{className:"message-button",onClick:i,type:"button",disabled:r,children:d("formCancel")}),n.jsx("button",{className:"message-button",onClick:A,type:"button",disabled:r,children:d(r?"formProcessing":"formExecute")})]})]}):null},So=({scrollContainerRef:e,threshold:o=200})=>{const[a,i]=t.useState(!1);return t.useEffect(()=>{const n=e.current;if(!n)return;const t=()=>{const{scrollTop:e,scrollHeight:t,clientHeight:a}=n;i(t-e-a>o)};return n.addEventListener("scroll",t,{passive:!0}),t(),()=>{n.removeEventListener("scroll",t)}},[e,o]),a?n.jsx("button",{className:"scroll-to-bottom-btn",onClick:()=>{e.current?.scrollTo({top:e.current.scrollHeight,behavior:"smooth"})},"aria-label":"Scroll to bottom",type:"button",children:n.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",children:n.jsx("path",{d:"M9 3V15M9 15L4 10M9 15L14 10",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}):null},Bo={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",10:"0x4200000000000000000000000000000000000006",56:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",137:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},Ro=[{name:"transfer",type:"function",stateMutability:"nonpayable",inputs:[{name:"to",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{name:"approve",type:"function",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{name:"allowance",type:"function",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]}],Do=[{name:"deposit",type:"function",stateMutability:"payable",inputs:[],outputs:[]},{name:"withdraw",type:"function",stateMutability:"nonpayable",inputs:[{name:"wad",type:"uint256"}],outputs:[]}],Oo=[{name:"safeTransferFrom",type:"function",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"}],outputs:[]}],Uo=[{name:"safeTransferFrom",type:"function",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]}];function Fo(e,n){if(n)return n;const t=Tt[e];return t?.rpcUrls?.default?.http?.[0]}async function Lo(e){const{transactionHash:n,chainId:t,pollingInterval:o=3e3,timeout:a=12e4,rpcUrl:i}=e,r=Fo(t,i);if(!r)throw new Error(`No RPC endpoint for chain ${t}`);const s=Date.now();for(;Date.now()-s<a;){try{const e=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getTransactionReceipt",params:[n]})}),t=await e.json();if(t.result){const e=t.result;return{status:"0x1"===e.status?"success":"fail",blockNumber:e.blockNumber,gasUsed:e.gasUsed,effectiveGasPrice:e.effectiveGasPrice}}}catch(c){}await new Promise(e=>setTimeout(e,o))}throw new Error(`Transaction ${n} was not mined within ${a/1e3}s`)}async function Mo(e){const{tokenAddress:n,ownerAddress:t,spenderAddress:o,chainId:a,rpcUrl:i}=e,r=Fo(a,i);if(!r)return BigInt(0);try{const e=Ct({abi:Ro,functionName:"allowance",args:[t,o]}),a=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_call",params:[{to:n,data:e},"latest"]})}),i=await a.json();return i.result&&"0x"!==i.result?BigInt(i.result):BigInt(0)}catch(s){return BigInt(0)}}function Ho(e){const{tokenAddress:n,spenderAddress:t,fromAddress:o,chainId:a,tokenSymbol:i,amount:r}=e,s=r&&BigInt(r)>0n?BigInt(r):Z;return{from:o,to:n,data:Ct({abi:Ro,functionName:"approve",args:[t,s]}),value:"0",chainId:a,description:`Approve ${i||"token"} for swap`}}async function Po(e){const{address:n,chainId:t,rpcUrl:o}=e,a=Fo(t,o);if(!a)return new ho(0);try{const e=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getBalance",params:[n,"latest"]})}),t=await e.json();return t.result&&"0x"!==t.result?new ho(BigInt(t.result).toString()):new ho(0)}catch(i){return new ho(0)}}async function Yo(e){const{from:n,to:t,data:o,value:a,chainId:i,rpcUrl:r}=e,s=Fo(i,r);if(!s)return new ho(0);try{const[e,i]=await Promise.all([fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_estimateGas",params:[{from:n,to:t,data:o,...a&&"0"!==a?{value:a}:{}}]})}),fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:2,method:"eth_gasPrice",params:[]})})]),[r,c]=await Promise.all([e.json(),i.json()]),l=r.result?new ho(BigInt(r.result).toString()):new ho(0),d=c.result?new ho(BigInt(c.result).toString()):new ho(0);return l.times(d).times(1.1)}catch(c){return new ho(0)}}async function Jo(e){const{chainId:n,rpcUrl:t}=e,o=Fo(n,t);if(!o)return new ho(0);try{const e=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_gasPrice",params:[]})}),n=await e.json();return n.result&&"0x"!==n.result?new ho(BigInt(n.result).toString()):new ho(0)}catch(a){return new ho(0)}}var Vo,qo,Wo={},jo={exports:{}},Go=jo.exports;var Qo=function(){if(qo)return Wo;qo=1,Object.defineProperty(Wo,"m",{value:!0});var e,n,o,a=t,i=(e=a)&&"object"==typeof e&&"default"in e?e.default:e,r=(Vo||(Vo=1,n=jo,o=jo.exports,function(e,t){var a="function",i="undefined",r="object",s="string",c="major",l="model",d="name",u="type",f="vendor",h="version",m="architecture",p="console",w="mobile",b="tablet",g="smarttv",y="wearable",A="embedded",k="Amazon",v="Apple",C="ASUS",T="BlackBerry",I="Browser",E="Chrome",x="Firefox",N="Google",S="Honor",B="Huawei",R="LG",D="Microsoft",O="Motorola",U="Nvidia",F="OnePlus",L="Opera",M="OPPO",H="Samsung",P="Sharp",Y="Sony",J="Xiaomi",V="Zebra",q="Facebook",W="Chromium OS",j="Mac OS",G=" Browser",Q=function(e){for(var n={},t=0;t<e.length;t++)n[e[t].toUpperCase()]=e[t];return n},z=function(e,n){return typeof e===s&&-1!==X(n).indexOf(X(e))},X=function(e){return e.toLowerCase()},Z=function(e,n){if(typeof e===s)return e=e.replace(/^\s\s*/,""),typeof n===i?e:e.substring(0,500)},K=function(e,n){for(var o,i,s,c,l,d,u=0;u<n.length&&!l;){var f=n[u],h=n[u+1];for(o=i=0;o<f.length&&!l&&f[o];)if(l=f[o++].exec(e))for(s=0;s<h.length;s++)d=l[++i],typeof(c=h[s])===r&&c.length>0?2===c.length?typeof c[1]==a?this[c[0]]=c[1].call(this,d):this[c[0]]=c[1]:3===c.length?typeof c[1]!==a||c[1].exec&&c[1].test?this[c[0]]=d?d.replace(c[1],c[2]):t:this[c[0]]=d?c[1].call(this,d,c[2]):t:4===c.length&&(this[c[0]]=d?c[3].call(this,d.replace(c[1],c[2])):t):this[c]=d||t;u+=2}},_=function(e,n){for(var o in n)if(typeof n[o]===r&&n[o].length>0){for(var a=0;a<n[o].length;a++)if(z(n[o][a],e))return"?"===o?t:o}else if(z(n[o],e))return"?"===o?t:o;return n.hasOwnProperty("*")?n["*"]:e},$={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},ee={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[d,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[d,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[d,h],[/opios[\/ ]+([\w\.]+)/i],[h,[d,L+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[h,[d,L+" GX"]],[/\bopr\/([\w\.]+)/i],[h,[d,L]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[h,[d,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[h,[d,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,/(heytap|ovi|115)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[d,h],[/quark(?:pc)?\/([-\w\.]+)/i],[h,[d,"Quark"]],[/\bddg\/([\w\.]+)/i],[h,[d,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[d,"UC"+I]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[h,[d,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[d,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[d,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[h,[d,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[h,[d,"Smart Lenovo "+I]],[/(avast|avg)\/([\w\.]+)/i],[[d,/(.+)/,"$1 Secure "+I],h],[/\bfocus\/([\w\.]+)/i],[h,[d,x+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[d,L+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[d,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[d,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[d,L+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[d,"MIUI"+G]],[/fxios\/([\w\.-]+)/i],[h,[d,x]],[/\bqihoobrowser\/?([\w\.]*)/i],[h,[d,"360"]],[/\b(qq)\/([\w\.]+)/i],[[d,/(.+)/,"$1Browser"],h],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[d,/(.+)/,"$1"+G],h],[/samsungbrowser\/([\w\.]+)/i],[h,[d,H+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[h,[d,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[d,"Sogou Mobile"],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[d,h],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[d],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[h,d],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[d,q],h],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[d,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[d,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[h,[d,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[d,E+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[d,E+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[d,"Android "+I]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[d,h],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[h,[d,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[h,d],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[d,[h,_,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[d,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[d,"Netscape"],h],[/(wolvic|librewolf)\/([\w\.]+)/i],[d,h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[d,x+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[d,[h,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[d,[h,/master.|lts./,""]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[m,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[m,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[m,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[m,/ower/,"",X]],[/ sun4\w[;\)]/i],[[m,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[m,X]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[l,[f,H],[u,b]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[l,[f,H],[u,w]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[l,[f,v],[u,w]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[l,[f,v],[u,b]],[/(macintosh);/i],[l,[f,v]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[l,[f,P],[u,w]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[l,[f,S],[u,b]],[/honor([-\w ]+)[;\)]/i],[l,[f,S],[u,w]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[l,[f,B],[u,b]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[l,[f,B],[u,w]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[l,/_/g," "],[f,J],[u,b]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,/ ([\w ]+) miui\/v?\d/i],[[l,/_/g," "],[f,J],[u,w]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[l,[f,M],[u,w]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[l,[f,_,{OnePlus:["304","403","203"],"*":M}],[u,b]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[l,[f,"Vivo"],[u,w]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[l,[f,"Realme"],[u,w]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[l,[f,O],[u,w]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[l,[f,O],[u,b]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[l,[f,R],[u,b]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[l,[f,R],[u,w]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[l,[f,"Lenovo"],[u,b]],[/(nokia) (t[12][01])/i],[f,l,[u,b]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[l,/_/g," "],[u,w],[f,"Nokia"]],[/(pixel (c|tablet))\b/i],[l,[f,N],[u,b]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[l,[f,N],[u,w]],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[l,[f,Y],[u,w]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[l,"Xperia Tablet"],[f,Y],[u,b]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[l,[f,F],[u,w]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[l,[f,k],[u,b]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[l,/(.+)/g,"Fire Phone $1"],[f,k],[u,w]],[/(playbook);[-\w\),; ]+(rim)/i],[l,f,[u,b]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[l,[f,T],[u,w]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[l,[f,C],[u,b]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[l,[f,C],[u,w]],[/(nexus 9)/i],[l,[f,"HTC"],[u,b]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[f,[l,/_/g," "],[u,w]],[/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i],[l,[f,"TCL"],[u,b]],[/(itel) ((\w+))/i],[[f,X],l,[u,_,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[l,[f,"Acer"],[u,b]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[l,[f,"Meizu"],[u,w]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[l,[f,"Ulefone"],[u,w]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[l,[f,"Energizer"],[u,w]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[l,[f,"Cat"],[u,w]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[l,[f,"Smartfren"],[u,w]],[/droid.+; (a(?:015|06[35]|142p?))/i],[l,[f,"Nothing"],[u,w]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[l,[f,"Archos"],[u,b]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[l,[f,"Archos"],[u,w]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[f,l,[u,b]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (hmd|imo) ([\w ]+?)(?: bui|\))/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,/(oppo) ?([\w ]+) bui/i],[f,l,[u,w]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[f,l,[u,b]],[/(surface duo)/i],[l,[f,D],[u,b]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[l,[f,"Fairphone"],[u,w]],[/(u304aa)/i],[l,[f,"AT&T"],[u,w]],[/\bsie-(\w*)/i],[l,[f,"Siemens"],[u,w]],[/\b(rct\w+) b/i],[l,[f,"RCA"],[u,b]],[/\b(venue[\d ]{2,7}) b/i],[l,[f,"Dell"],[u,b]],[/\b(q(?:mv|ta)\w+) b/i],[l,[f,"Verizon"],[u,b]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[l,[f,"Barnes & Noble"],[u,b]],[/\b(tm\d{3}\w+) b/i],[l,[f,"NuVision"],[u,b]],[/\b(k88) b/i],[l,[f,"ZTE"],[u,b]],[/\b(nx\d{3}j) b/i],[l,[f,"ZTE"],[u,w]],[/\b(gen\d{3}) b.+49h/i],[l,[f,"Swiss"],[u,w]],[/\b(zur\d{3}) b/i],[l,[f,"Swiss"],[u,b]],[/\b((zeki)?tb.*\b) b/i],[l,[f,"Zeki"],[u,b]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[f,"Dragon Touch"],l,[u,b]],[/\b(ns-?\w{0,9}) b/i],[l,[f,"Insignia"],[u,b]],[/\b((nxa|next)-?\w{0,9}) b/i],[l,[f,"NextBook"],[u,b]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[f,"Voice"],l,[u,w]],[/\b(lvtel\-)?(v1[12]) b/i],[[f,"LvTel"],l,[u,w]],[/\b(ph-1) /i],[l,[f,"Essential"],[u,w]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[l,[f,"Envizen"],[u,b]],[/\b(trio[-\w\. ]+) b/i],[l,[f,"MachSpeed"],[u,b]],[/\btu_(1491) b/i],[l,[f,"Rotor"],[u,b]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[l,[f,U],[u,b]],[/(sprint) (\w+)/i],[f,l,[u,w]],[/(kin\.[onetw]{3})/i],[[l,/\./g," "],[f,D],[u,w]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[l,[f,V],[u,b]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[l,[f,V],[u,w]],[/smart-tv.+(samsung)/i],[f,[u,g]],[/hbbtv.+maple;(\d+)/i],[[l,/^/,"SmartTV"],[f,H],[u,g]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[f,R],[u,g]],[/(apple) ?tv/i],[f,[l,v+" TV"],[u,g]],[/crkey/i],[[l,E+"cast"],[f,N],[u,g]],[/droid.+aft(\w+)( bui|\))/i],[l,[f,k],[u,g]],[/(shield \w+ tv)/i],[l,[f,U],[u,g]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[l,[f,P],[u,g]],[/(bravia[\w ]+)( bui|\))/i],[l,[f,Y],[u,g]],[/(mi(tv|box)-?\w+) bui/i],[l,[f,J],[u,g]],[/Hbbtv.*(technisat) (.*);/i],[f,l,[u,g]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[f,Z],[l,Z],[u,g]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[l,[u,g]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[u,g]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[f,l,[u,p]],[/droid.+; (shield)( bui|\))/i],[l,[f,U],[u,p]],[/(playstation \w+)/i],[l,[f,Y],[u,p]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[l,[f,D],[u,p]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[l,[f,H],[u,y]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[f,l,[u,y]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[l,[f,M],[u,y]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[l,[f,v],[u,y]],[/(opwwe\d{3})/i],[l,[f,F],[u,y]],[/(moto 360)/i],[l,[f,O],[u,y]],[/(smartwatch 3)/i],[l,[f,Y],[u,y]],[/(g watch r)/i],[l,[f,R],[u,y]],[/droid.+; (wt63?0{2,3})\)/i],[l,[f,V],[u,y]],[/droid.+; (glass) \d/i],[l,[f,N],[u,y]],[/(pico) (4|neo3(?: link|pro)?)/i],[f,l,[u,y]],[/; (quest( \d| pro)?)/i],[l,[f,q],[u,y]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[f,[u,A]],[/(aeobc)\b/i],[l,[f,k],[u,A]],[/(homepod).+mac os/i],[l,[f,v],[u,A]],[/windows iot/i],[[u,A]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[l,[u,w]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[l,[u,b]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[u,b]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[u,w]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[l,[f,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[d,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[d,h],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[d,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[d,h],[/ladybird\//i],[[d,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,d]],os:[[/microsoft (windows) (vista|xp)/i],[d,h],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[d,[h,_,$]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,_,$],[d,"Windows"]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[d,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[d,j],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[h,d],[/(ubuntu) ([\w\.]+) like android/i],[[d,/(.+)/,"$1 Touch"],h],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[d,h],[/\(bb(10);/i],[h,[d,T]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[h,[d,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[d,x+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[d,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[h,[d,"watchOS"]],[/crkey\/([\d\.]+)/i],[h,[d,E+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[d,W],h],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[d,h],[/(sunos) ?([\w\.\d]*)/i],[[d,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[d,h]]},ne=function(n,o){if(typeof n===r&&(o=n,n=t),!(this instanceof ne))return new ne(n,o).getResult();var p=typeof e!==i&&e.navigator?e.navigator:t,g=n||(p&&p.userAgent?p.userAgent:""),y=p&&p.userAgentData?p.userAgentData:t,A=o?function(e,n){var t={};for(var o in e)n[o]&&n[o].length%2==0?t[o]=n[o].concat(e[o]):t[o]=e[o];return t}(ee,o):ee,k=p&&p.userAgent==g;return this.getBrowser=function(){var e,n={};return n[d]=t,n[h]=t,K.call(n,g,A.browser),n[c]=typeof(e=n[h])===s?e.replace(/[^\d\.]/g,"").split(".")[0]:t,k&&p&&p.brave&&typeof p.brave.isBrave==a&&(n[d]="Brave"),n},this.getCPU=function(){var e={};return e[m]=t,K.call(e,g,A.cpu),e},this.getDevice=function(){var e={};return e[f]=t,e[l]=t,e[u]=t,K.call(e,g,A.device),k&&!e[u]&&y&&y.mobile&&(e[u]=w),k&&"Macintosh"==e[l]&&p&&typeof p.standalone!==i&&p.maxTouchPoints&&p.maxTouchPoints>2&&(e[l]="iPad",e[u]=b),e},this.getEngine=function(){var e={};return e[d]=t,e[h]=t,K.call(e,g,A.engine),e},this.getOS=function(){var e={};return e[d]=t,e[h]=t,K.call(e,g,A.os),k&&!e[d]&&y&&y.platform&&"Unknown"!=y.platform&&(e[d]=y.platform.replace(/chrome os/i,W).replace(/macos/i,j)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return g},this.setUA=function(e){return g=typeof e===s&&e.length>500?Z(e,500):e,this},this.setUA(g),this};ne.VERSION="1.0.41",ne.BROWSER=Q([d,h,c]),ne.CPU=Q([m]),ne.DEVICE=Q([l,f,u,p,w,g,b,y,A]),ne.ENGINE=ne.OS=Q([d,h]),n.exports&&(o=n.exports=ne),o.UAParser=ne;var te=typeof e!==i&&(e.jQuery||e.Zepto);if(te&&!te.ua){var oe=new ne;te.ua=oe.getResult(),te.ua.get=function(){return oe.getUA()},te.ua.set=function(e){oe.setUA(e);var n=oe.getResult();for(var t in n)te.ua[t]=n[t]}}}("object"==typeof window?window:Go)),jo.exports),s=new r,c=s.getBrowser(),l=s.getCPU(),d=s.getDevice(),u=s.getEngine(),f=s.getOS(),h=s.getUA(),m=function(e){return s.setUA(e)},p=function(e){if(e){var n=new r(e);return{UA:n,browser:n.getBrowser(),cpu:n.getCPU(),device:n.getDevice(),engine:n.getEngine(),os:n.getOS(),ua:n.getUA(),setUserAgent:function(e){return n.setUA(e)}}}},w=Object.freeze({ClientUAInstance:s,browser:c,cpu:l,device:d,engine:u,os:f,ua:h,setUa:m,parseUserAgent:p});function b(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,o)}return t}function g(e){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function y(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function A(){return A=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},A.apply(this,arguments)}function k(e){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,n){return(v=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e})(e,n)}function C(e,n){if(null==e)return{};var t,o,a=function(e,n){if(null==e)return{};var t,o,a={},i=Object.keys(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function T(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function I(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,o=new Array(n);t<n;t++)o[t]=e[t];return o}var E="mobile",x="tablet",N="smarttv",S="console",B="wearable",R="embedded",D=void 0,O={Chrome:"Chrome",Firefox:"Firefox",Opera:"Opera",Yandex:"Yandex",Safari:"Safari",InternetExplorer:"Internet Explorer",Edge:"Edge",Chromium:"Chromium",Ie:"IE",MobileSafari:"Mobile Safari",EdgeChromium:"Edge Chromium",MIUI:"MIUI Browser",SamsungBrowser:"Samsung Browser"},U={IOS:"iOS",Android:"Android",WindowsPhone:"Windows Phone",Windows:"Windows",MAC_OS:"Mac OS"},F={isMobile:!1,isTablet:!1,isBrowser:!1,isSmartTV:!1,isConsole:!1,isWearable:!1},L=function(e){return e||(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"none")},M=function(){return!("undefined"==typeof window||!window.navigator&&!navigator)&&(window.navigator||navigator)},H=function(e){var n=M();return n&&n.platform&&(-1!==n.platform.indexOf(e)||"MacIntel"===n.platform&&n.maxTouchPoints>1&&!window.MSStream)},P=function(e){return e.type===E},Y=function(e){return e.type===x},J=function(e){var n=e.type;return n===E||n===x},V=function(e){return e.type===N},q=function(e){return e.type===D},W=function(e){return e.type===B},j=function(e){return e.type===S},G=function(e){return e.type===R},Q=function(e){var n=e.vendor;return L(n)},z=function(e){var n=e.model;return L(n)},X=function(e){var n=e.type;return L(n,"browser")},Z=function(e){return e.name===U.Android},K=function(e){return e.name===U.Windows},_=function(e){return e.name===U.MAC_OS},$=function(e){return e.name===U.WindowsPhone},ee=function(e){return e.name===U.IOS},ne=function(e){var n=e.version;return L(n)},te=function(e){var n=e.name;return L(n)},oe=function(e){return e.name===O.Chrome},ae=function(e){return e.name===O.Firefox},ie=function(e){return e.name===O.Chromium},re=function(e){return e.name===O.Edge},se=function(e){return e.name===O.Yandex},ce=function(e){var n=e.name;return n===O.Safari||n===O.MobileSafari},le=function(e){return e.name===O.MobileSafari},de=function(e){return e.name===O.Opera},ue=function(e){var n=e.name;return n===O.InternetExplorer||n===O.Ie},fe=function(e){return e.name===O.MIUI},he=function(e){return e.name===O.SamsungBrowser},me=function(e){var n=e.version;return L(n)},pe=function(e){var n=e.major;return L(n)},we=function(e){var n=e.name;return L(n)},be=function(e){var n=e.name;return L(n)},ge=function(e){var n=e.version;return L(n)},ye=function(){var e=M(),n=e&&e.userAgent&&e.userAgent.toLowerCase();return"string"==typeof n&&/electron/.test(n)},Ae=function(e){return"string"==typeof e&&-1!==e.indexOf("Edg/")},ke=function(){var e=M();return e&&(/iPad|iPhone|iPod/.test(e.platform)||"MacIntel"===e.platform&&e.maxTouchPoints>1)&&!window.MSStream},ve=function(){return H("iPad")},Ce=function(){return H("iPhone")},Te=function(){return H("iPod")},Ie=function(e){return L(e)};function Ee(e){var n=e||w,t=n.device,o=n.browser,a=n.os,i=n.engine,r=n.ua;return{isSmartTV:V(t),isConsole:j(t),isWearable:W(t),isEmbedded:G(t),isMobileSafari:le(o)||ve(),isChromium:ie(o),isMobile:J(t)||ve(),isMobileOnly:P(t),isTablet:Y(t)||ve(),isBrowser:q(t),isDesktop:q(t),isAndroid:Z(a),isWinPhone:$(a),isIOS:ee(a)||ve(),isChrome:oe(o),isFirefox:ae(o),isSafari:ce(o),isOpera:de(o),isIE:ue(o),osVersion:ne(a),osName:te(a),fullBrowserVersion:me(o),browserVersion:pe(o),browserName:we(o),mobileVendor:Q(t),mobileModel:z(t),engineName:be(i),engineVersion:ge(i),getUA:Ie(r),isEdge:re(o)||Ae(r),isYandex:se(o),deviceType:X(t),isIOS13:ke(),isIPad13:ve(),isIPhone13:Ce(),isIPod13:Te(),isElectron:ye(),isEdgeChromium:Ae(r),isLegacyEdge:re(o)&&!Ae(r),isWindows:K(a),isMacOs:_(a),isMIUI:fe(o),isSamsungBrowser:he(o)}}var xe=V(d),Ne=j(d),Se=W(d),Be=G(d),Re=le(c)||ve(),De=ie(c),Oe=J(d)||ve(),Ue=P(d),Fe=Y(d)||ve(),Le=q(d),Me=q(d),He=Z(f),Pe=$(f),Ye=ee(f)||ve(),Je=oe(c),Ve=ae(c),qe=ce(c),We=de(c),je=ue(c),Ge=ne(f),Qe=te(f),ze=me(c),Xe=pe(c),Ze=we(c),Ke=Q(d),_e=z(d),$e=be(u),en=ge(u),nn=Ie(h),tn=re(c)||Ae(h),on=se(c),an=X(d),rn=ke(),sn=ve(),cn=Ce(),ln=Te(),dn=ye(),un=Ae(h),fn=re(c)&&!Ae(h),hn=K(f),mn=_(f),pn=fe(c),wn=he(c);function bn(e){var n=e||window.navigator.userAgent;return p(n)}return Wo.AndroidView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return He?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.BrowserTypes=O,Wo.BrowserView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return Le?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.ConsoleView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return Ne?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.CustomView=function(e){var n=e.renderWithFragment,t=e.children;e.viewClassName,e.style;var o=e.condition,r=C(e,["renderWithFragment","children","viewClassName","style","condition"]);return o?n?i.createElement(a.Fragment,null,t):i.createElement("div",r,t):null},Wo.IEView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return je?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.IOSView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return Ye?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.MobileOnlyView=function(e){var n=e.renderWithFragment,t=e.children;e.viewClassName,e.style;var o=C(e,["renderWithFragment","children","viewClassName","style"]);return Ue?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.MobileView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return Oe?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.OsTypes=U,Wo.SmartTVView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return xe?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.TabletView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return Fe?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.WearableView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return Se?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.WinPhoneView=function(e){var n=e.renderWithFragment,t=e.children,o=C(e,["renderWithFragment","children"]);return Pe?n?i.createElement(a.Fragment,null,t):i.createElement("div",o,t):null},Wo.browserName=Ze,Wo.browserVersion=Xe,Wo.deviceDetect=function(e){var n=e?p(e):w,t=n.device,o=n.browser,a=n.engine,i=n.os,r=n.ua,s=function(e){switch(e){case E:return{isMobile:!0};case x:return{isTablet:!0};case N:return{isSmartTV:!0};case S:return{isConsole:!0};case B:return{isWearable:!0};case D:return{isBrowser:!0};case R:return{isEmbedded:!0};default:return F}}(t.type),c=s.isBrowser,l=s.isMobile,d=s.isTablet,u=s.isSmartTV,f=s.isConsole,h=s.isWearable,m=s.isEmbedded;return c?function(e,n,t,o,a){return{isBrowser:e,browserMajorVersion:L(n.major),browserFullVersion:L(n.version),browserName:L(n.name),engineName:L(t.name),engineVersion:L(t.version),osName:L(o.name),osVersion:L(o.version),userAgent:L(a)}}(c,o,a,i,r):u?function(e,n,t,o){return{isSmartTV:e,engineName:L(n.name),engineVersion:L(n.version),osName:L(t.name),osVersion:L(t.version),userAgent:L(o)}}(u,a,i,r):f?function(e,n,t,o){return{isConsole:e,engineName:L(n.name),engineVersion:L(n.version),osName:L(t.name),osVersion:L(t.version),userAgent:L(o)}}(f,a,i,r):l||d?function(e,n,t,o){return function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?b(Object(t),!0).forEach(function(n){y(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}({},e,{vendor:L(n.vendor),model:L(n.model),os:L(t.name),osVersion:L(t.version),ua:L(o)})}(s,t,i,r):h?function(e,n,t,o){return{isWearable:e,engineName:L(n.name),engineVersion:L(n.version),osName:L(t.name),osVersion:L(t.version),userAgent:L(o)}}(h,a,i,r):m?function(e,n,t,o,a){return{isEmbedded:e,vendor:L(n.vendor),model:L(n.model),engineName:L(t.name),engineVersion:L(t.version),osName:L(o.name),osVersion:L(o.version),userAgent:L(a)}}(m,t,a,i,r):void 0},Wo.deviceType=an,Wo.engineName=$e,Wo.engineVersion=en,Wo.fullBrowserVersion=ze,Wo.getSelectorsByUserAgent=function(e){if(e&&"string"==typeof e){var n=p(e);return Ee({device:n.device,browser:n.browser,os:n.os,engine:n.engine,ua:n.ua})}},Wo.getUA=nn,Wo.isAndroid=He,Wo.isBrowser=Le,Wo.isChrome=Je,Wo.isChromium=De,Wo.isConsole=Ne,Wo.isDesktop=Me,Wo.isEdge=tn,Wo.isEdgeChromium=un,Wo.isElectron=dn,Wo.isEmbedded=Be,Wo.isFirefox=Ve,Wo.isIE=je,Wo.isIOS=Ye,Wo.isIOS13=rn,Wo.isIPad13=sn,Wo.isIPhone13=cn,Wo.isIPod13=ln,Wo.isLegacyEdge=fn,Wo.isMIUI=pn,Wo.isMacOs=mn,Wo.isMobile=Oe,Wo.isMobileOnly=Ue,Wo.isMobileSafari=Re,Wo.isOpera=We,Wo.isSafari=qe,Wo.isSamsungBrowser=wn,Wo.isSmartTV=xe,Wo.isTablet=Fe,Wo.isWearable=Se,Wo.isWinPhone=Pe,Wo.isWindows=hn,Wo.isYandex=on,Wo.mobileModel=_e,Wo.mobileVendor=Ke,Wo.osName=Qe,Wo.osVersion=Ge,Wo.parseUserAgent=p,Wo.setUserAgent=function(e){return m(e)},Wo.useDeviceData=bn,Wo.useDeviceSelectors=function(e){var n=bn(e||window.navigator.userAgent);return[Ee(n),n]},Wo.useMobileOrientation=function(){var e,n,t=(e=a.useState(function(){var e=window.innerWidth>window.innerHeight?90:0;return{isPortrait:0===e,isLandscape:90===e,orientation:0===e?"portrait":"landscape"}}),n=2,function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var o,a,i=[],r=!0,s=!1;try{for(t=t.call(e);!(r=(o=t.next()).done)&&(i.push(o.value),!n||i.length!==n);r=!0);}catch(c){s=!0,a=c}finally{try{r||null==t.return||t.return()}finally{if(s)throw a}}return i}}(e,n)||function(e,n){if(e){if("string"==typeof e)return I(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?I(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=t[0],i=t[1],r=a.useCallback(function(){var e=window.innerWidth>window.innerHeight?90:0,n={isPortrait:0===e,isLandscape:90===e,orientation:0===e?"portrait":"landscape"};o.orientation!==n.orientation&&i(n)},[o.orientation]);return a.useEffect(function(){return void 0!==("undefined"==typeof window?"undefined":g(window))&&Oe&&(r(),window.addEventListener("load",r,!1),window.addEventListener("resize",r,!1)),function(){window.removeEventListener("resize",r,!1),window.removeEventListener("load",r,!1)}},[r]),o},Wo.withOrientationChange=function(e){return function(n){function t(e){var n;return function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t),(n=function(e,n){if(n&&("object"==typeof n||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return T(e)}(this,k(t).call(this,e))).isEventListenerAdded=!1,n.handleOrientationChange=n.handleOrientationChange.bind(T(n)),n.onOrientationChange=n.onOrientationChange.bind(T(n)),n.onPageLoad=n.onPageLoad.bind(T(n)),n.state={isLandscape:!1,isPortrait:!1},n}return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),n&&v(e,n)}(t,n),o=t,(a=[{key:"handleOrientationChange",value:function(){this.isEventListenerAdded||(this.isEventListenerAdded=!0);var e=window.innerWidth>window.innerHeight?90:0;this.setState({isPortrait:0===e,isLandscape:90===e})}},{key:"onOrientationChange",value:function(){this.handleOrientationChange()}},{key:"onPageLoad",value:function(){this.handleOrientationChange()}},{key:"componentDidMount",value:function(){void 0!==("undefined"==typeof window?"undefined":g(window))&&Oe&&(this.isEventListenerAdded?window.removeEventListener("load",this.onPageLoad,!1):(this.handleOrientationChange(),window.addEventListener("load",this.onPageLoad,!1)),window.addEventListener("resize",this.onOrientationChange,!1))}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.onOrientationChange,!1)}},{key:"render",value:function(){return i.createElement(e,A({},this.props,{isLandscape:this.state.isLandscape,isPortrait:this.state.isPortrait}))}}])&&function(e,n){for(var t=0;t<n.length;t++){var o=n[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}(o.prototype,a),t;var o,a}(i.Component)},Wo}();const zo={model:"gemini-2.5-flash","model2.0":"gemini-2.5-flash",apiKey:"QUl6YVN5RGprZEFvMjNtMy00S0U3eWo2aVJQQmowN05lRXgxd0tz",url:"https://generativelanguage.googleapis.com"},Xo=new class extends mo{enableGoogleSearch=!0;indexApiKey=0;constructor(){super(zo.url)}getApiKey(){let e="",n=[];const t=localStorage.getItem("arr_api_key_dev_gemini");n=t?JSON.parse(t):zo.apiKey.split(",");const o=localStorage.getItem("index_api_key_gemini");return o&&(this.indexApiKey=Number(o),this.indexApiKey++),this.indexApiKey>=n.length&&(this.indexApiKey=0),e=n[this.indexApiKey],e&&(e=atob(e)),localStorage.setItem("index_api_key_gemini",this.indexApiKey.toString()),e}getUrl(e,n){return`/v1beta/models/${n||"gemini-2.5-flash"}:${e}`}async generateContent(e,n){try{const t=`\nBelow is the system context and conversation history. Use it for context but prioritize the instructions at the end.\n\n---\nSYSTEM CONTEXT & HISTORY:\n${n}\n---\n### MANDATORY RULES:\n1. **LANGUAGE ADHERENCE**:\n - **DETECT** the language of the section labeled "CURRENT USER QUESTION" below.\n - **RESPOND ONLY** in that same language.\n - **IGNORE** any language bias from the context or history.\n2. **HISTORY CLEANING**:\n - If any assistant response in the conversation history says it **"doesn't know"**, **"doesn't have data"**, **"cannot find info"**, or similar, you MUST **IGNORE that specific history segment**. \n - Do not let previous data failures prevent you from answering the CURRENT USER QUESTION if the information is available now or in your core knowledge.\n3. **BREVITY**: Keep your answer extremely concise (under 3000 characters).\n4. **DATA INTEGRITY**: Do not mention data gaps or historical missing info; just answer based on available info.\n\n---\nCURRENT USER QUESTION:\n${e}\n---\n`,o=this.getUrl("generateContent"),a={contents:[{parts:[{text:t}]}],tools:[{googleSearch:{}}]};this.enableGoogleSearch||delete a.tools;const i=await this.post(o,a,{headers:{"x-goog-api-key":this.getApiKey()}});return i?.data?.data?.candidates?.[0]?.content?.parts?.[0]?.text||i?.data?.candidates?.[0]?.content?.parts?.[0]?.text}catch(t){if((t?.message?.includes("search_grounding_request_per_project_per_day")||t?.data?.error?.message?.includes("search_grounding_request_per_project_per_day"))&&this.enableGoogleSearch)return this.enableGoogleSearch=!1,await this.generateContent(e,n);throw t}}async checkTypeQuestion(e,n){try{const t=n+`---\nCURRENT USER QUESTION:\n${e}\n---\n\nAnalyze this question and determine its category.\nIMPORTANT: The following topics should ALWAYS be classified as "yes" (crypto-related):\n- Greetings (in ANY language): hello, hi, xin chào, bonjour, etc.\n- Cryptocurrency, blockchain, crypto trading, DeFi, NFT\n- Wallet/Account questions (in ANY language): account, wallet, address, balance, portfolio, holdings\n- Registration/Sign-up questions (in ANY language): register, sign up, create account, create wallet, new account, new wallet, registration\n- Wallet access questions (in ANY language): open wallet, open account, start wallet, launch wallet, access wallet, access account\n- Token/coin questions: prices, market data, trading\n- Chain questions: ETH, Base, Optimism, BSC, Polygon, Arbitrum\n- Smart contracts, gas fees, transactions\n- Action phrases (in ANY language): send token, swap token, send nft, buy token, bridge token, info token, check balance, etc.\n\nCRITICAL: Detect these concepts in ANY language (English, Japanese, Chinese, Vietnamese, Korean, Spanish, etc.)\nThe user may ask in their native language, so recognize the MEANING, not just specific words.\n\nIf the question is about ANY of the above topics, respond with ONLY the word "yes" (lowercase, nothing else).\nOtherwise, respond with ONLY the word "no" (lowercase, nothing else).\nDo not provide any explanation or additional text.`,o=this.getUrl("generateContent",zo["model2.0"]),a={contents:[{parts:[{text:t}]}]},i=await this.post(o,a,{headers:{"x-goog-api-key":this.getApiKey()}});return i?.data?.data?.candidates?.[0]?.content?.parts?.[0]?.text||i?.data?.candidates?.[0]?.content?.parts?.[0]?.text}catch(t){throw t}}};function Zo(e,n){if(!e)return e;const t=e.toLowerCase().trim();if("max"===t||"all"===t)return n||e;const o=t.match(/^(\d+(?:\.\d+)?)%$/);if(o){const e=parseFloat(o[1])/100;return((parseFloat(n)||0)*e).toFixed(8).replace(/\.?0+$/,"")||"0"}return e}const Ko=({isOpen:e,onClose:o,onTransaction:a,position:i="bottom-right",modalChatStyle:r={}})=>{const{t:c,ti:l}=s(),{messages:d,addMessage:u,updateMessageAction:f,updateMessageText:h,getMessageById:m,clearMessagesById:p}=function(){const{account:e}=Lt(),{t:n}=s(),o=(a=e?.address,i=e?.chainId,a&&i?`${a}_${i}`:"");var a,i;const r=t.useMemo(()=>Vt(n("welcomeMessage")),[n]),[c,l]=t.useState(()=>o||"pending"),[d,u]=t.useState(()=>{const e=Wt();return o?e&&e.owner===o?e.messages:Vt(n("welcomeMessage")):e?.messages??Vt(n("welcomeMessage"))});if("pending"===c&&o){const e=Wt();e&&e.owner===o?u(e.messages):jt(o,d),l(o)}else"pending"!==c&&o&&c!==o&&(u(r),jt(o,r),l(o));const f=t.useMemo(()=>d.map(e=>e.id===Jt?{...e,text:n("welcomeMessage")}:e),[d,n]);t.useEffect(()=>{"pending"!==c&&jt(c,d)},[d,c]),t.useEffect(()=>{const e=[];for(let n=0;n<Rt.length;n++){const t=Rt.key(n);t&&t.startsWith(Pt+"_")&&e.push(t)}e.forEach(e=>Rt.removeItem(e))},[]);const h=t.useCallback(()=>{u(r),jt(o,r)},[o,r]),m=t.useCallback(e=>{u(n=>{const t=n.filter(n=>!e.includes(n.id));return t.length>Yt?t.slice(t.length-Yt):t})},[]);return{messages:f,setMessages:u,addMessage:(e,n,t,o,a)=>{const i=t?d.find(e=>e.id===t):void 0,r={id:Math.random().toString(36).substring(2,12),text:e,sender:n,timestamp:new Date,...i&&{replyTo:{id:i.id,text:i.text,sender:i.sender}},...o&&{buttons:o},...a&&{actionData:a}};return u(e=>{const n=[...e,r];return n.length>Yt?n.slice(n.length-Yt):n}),r},updateMessageAction:(e,n)=>{u(t=>t.map(t=>t.id===e&&t.actionData?{...t,actionData:{...t.actionData,status:n}}:t))},updateMessageText:(e,n)=>{u(t=>t.map(t=>t.id===e?{...t,text:n}:t))},getMessageById:e=>d.find(n=>n.id===e),clearMessages:h,clearMessagesById:m}}(),[w,b]=t.useState(""),[g,y]=t.useState(!1),[A,k]=t.useState(!0),[v,C]=t.useState(null),T=t.useRef(null),I=t.useRef(null),E=t.useRef(null),x=t.useRef(null),N=t.useRef(null),S=t.useRef(!1),B=t.useRef(A);t.useEffect(()=>{B.current=A},[A]);const{account:R,chainData:D,chainType:O,chainTypeMoralis:U,chainId:F,isChainSupported:L}=Lt(),{config:M}=(()=>{const e=t.useContext(Gt);if(!e)throw new Error("useConfig must be used within ConfigProvider");return e})(),H=F&&M?.rpcUrls?.[F]||void 0,P=t.useCallback(()=>{const e=Rt.getItem("dataBuyToken");if(e)try{return JSON.parse(e)}catch{return{srcTokenAddress:"",descTokenAddress:"",amount:"",srcTokenDecimals:18,descTokenDecimals:18}}return{srcTokenAddress:"",descTokenAddress:"",amount:"",srcTokenDecimals:18,descTokenDecimals:18}},[]),Y=t.useCallback(e=>{Rt.setItem("dataBuyToken",JSON.stringify(e))},[]),J=t.useCallback(e=>{const n={...P(),...e};Y(n)},[P,Y]),V=t.useCallback(e=>{C(e),Qo.isDesktop&&E.current?.focus()},[]),q=t.useCallback(async(e,n)=>{J({descTokenAddress:e,descTokenDecimals:n||18});try{y(!0);const e=await go({address:R?.address||"",chain:U});if(e?.success&&e?.data?.result){const n=e.data.result;if(n?.length>0){const e=n.map(e=>({id:e.token_address,text:`${e.name}: ${e.balance_formatted} ${e.symbol} ($${ho(e.usd_value||0)?.decimalPlaces(2).toFormat()||"0"})`,value:l("buttonBuyWith",{symbol:e.symbol}),action:"click_balance_item_user_to_buy_button",fullWidth:!0,extraData:{tokenAddress:e.token_address,symbol:e.symbol,balance:e.balance_formatted,usdValue:e.usd_value,decimals:e.decimals}}));u(l("walletBalanceSpendable",{chain:D?.name||"unknown"}),"bot",void 0,e)}else u(l("walletNoTokensFound",{chain:D?.name||"unknown"}),"bot")}else u(c("walletFetchFailed"),"bot")}catch(t){u(c("walletFetchError"),"bot")}finally{y(!1)}},[J,R?.address,U,u,D?.name,c,l]),W=t.useCallback(async(e,n,t,o)=>{J({srcTokenAddress:e,srcTokenDecimals:o||18});let a=t||"0";if(e===Ut)try{const e=await Jo({chainId:F,rpcUrl:H});if(e.isGreaterThan(0)){const n=e.times(1e6),i=new ho(Ot(t,o||18).toString()).minus(n);a=i.isGreaterThan(0)?ho(le(BigInt(i.toFixed(0)),18)).toFixed():"0"}}catch(r){}const i=[25,50,75,100].map(t=>({id:`percent-${t}`,text:`${t}%`,value:l("buttonUsePercent",{percent:String(t),symbol:n}),action:"select_percent",extraData:{percent:t,tokenAddress:e,tokenSymbol:n,tokenDecimals:o||18,tokenBalance:a}}));ho(a).isZero()?u(l("insufficientFeeToken",{symbol:n}),"bot"):u(l("selectAmountOf",{symbol:n,balance:a}),"bot",void 0,i)},[u,F,H,J,l]),j=t.useCallback(async(e,n,t,o)=>{const a={amount:(parseFloat(n)*(e/100)).toFixed(6)};void 0!==t&&(a.srcTokenAddress=t),void 0!==o&&(a.srcTokenDecimals=o),J(a);const i=P(),r=Ot(i.amount,i.srcTokenDecimals||18).toString(),s=await Co({chainId:F,tokenIn:i.srcTokenAddress,tokenInAmount:r,tokenOut:i.descTokenAddress,tokenOutRecipient:R?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(s.success&&s.data){const e=s.data,n=e.tokenIn,t=e.tokenOut,o=ho(le(BigInt(n.amount||0),n.decimals)).decimalPlaces(6).toFormat(),a=ho(le(BigInt(t.amount||0),t.decimals)).decimalPlaces(6).toFormat();let f=!1;if(i.srcTokenAddress!==Ut&&""!==i.srcTokenAddress&&R?.address&&e.tx?.to)try{const n=await Mo({tokenAddress:i.srcTokenAddress,ownerAddress:R.address,spenderAddress:e.tx.to,chainId:F,rpcUrl:H});f=ho(n.toString()).isLessThan(r)}catch(d){f=!0}const h=e.estimatedTransactionFee?.total?ho(e.estimatedTransactionFee.total):ho(0);let m=ho(0);if(f&&R?.address)try{const n=Ho({tokenAddress:i.srcTokenAddress,spenderAddress:e.tx?.to||"",fromAddress:R.address,chainId:F,amount:r});m=await Yo({from:R.address,to:n.to,data:n.data,chainId:F,rpcUrl:H})}catch(d){}const p=h.plus(m),w=D?.nativeCurrency?.symbol||"native";let b="",g=!1;if(R?.address&&p.isGreaterThan(0))try{const e=await Po({address:R.address,chainId:F,rpcUrl:H});if(e.isLessThan(p)){g=!0;const n=ho(le(BigInt(e.toFixed(0)),18)).decimalPlaces(6).toFormat(),t=ho(le(BigInt(p.toFixed(0)),18)).decimalPlaces(6).toFormat();b=l("swapFeeWarning",{symbol:w,balance:n,needed:t})}}catch(d){}const y=`From: ${o} ${n.symbol}\n⬇️\nTo: ${a} ${t.symbol}\n\n`+b+"\n";if(g)u(y,"bot");else if(f){const t=y+l("swapNeedApprove",{symbol:n.symbol}),o=[{id:"approve-for-swap",text:l("swapApproveButton",{symbol:n.symbol}),value:l("swapApproveValue",{symbol:n.symbol}),action:"approve_for_swap",fullWidth:!0,extraData:{tokenAddress:i.srcTokenAddress,spenderAddress:e.tx.to,tokenSymbol:n.symbol,amountInWei:r,tx:e.tx}}];u(t,"bot",void 0,o)}else{const n=[{id:"confirm-swap",text:c("swapConfirmButton"),value:c("swapConfirmValue"),action:"confirm_swap",extraData:{tx:e.tx}}];u(y+c("swapReadyToProceed"),"bot",void 0,n)}}else u(l("swapEstimationError",{error:s.errorMessage||s.error||"Unknown error"}),"bot")},[P,J,u,F,R?.address,D?.nativeCurrency?.symbol,H,c,l]),G=t.useCallback(async(e,n,t)=>{try{if("suggested_action"===n)return x.current=e,void b(e);if(u(e,"user"),k(!1),y(!0),n)switch(await xt(500),n){case"click_buy_item_token_button":await q(t?.tokenAddress||"",t?.decimals||18);break;case"click_balance_item_user_to_buy_button":await W(t?.tokenAddress||"",t?.symbol||"",t?.balance||"",t?.decimals||18);break;case"select_percent":await j(t?.percent||0,t?.tokenBalance||"",t?.tokenAddress||void 0,t?.tokenDecimals||void 0);break;case"confirm_swap":if(t?.tx&&a){const e=t.tx,n={from:R?.address||"",to:e.to,data:e.data,value:e.value,chainId:F},r=u(c("txProcessing"),"bot");try{y(!1);const e=await a(n);if("success"===e.status&&e.transactionHash){const n=D?.blockExplorers?.default?.url,t=n?`\n[View on Explorer](${n}/tx/${e.transactionHash})`:`\nTx: ${e.transactionHash}`;h(r.id,c("txSubmitted")+t);try{await xt(2e3),"success"===(await Lo({transactionHash:e.transactionHash,chainId:F||1,rpcUrl:H})).status?h(r.id,c("txConfirmedSwap")+t):h(r.id,c("txRevertedSwap")+t)}catch(o){h(r.id,c("txTimeout")+t)}}else if("success"===e.status)h(r.id,c("txSuccessfulSwap"));else{const n=e.error?`\nError: ${e.error}`:"";h(r.id,c("txFailed")+n)}}catch(i){h(r.id,c("txFailed"))}}else u(c("txDataNotAvailable"),"bot");break;case"approve_for_swap":{const e=t?.tokenAddress||"",n=t?.spenderAddress||"",r=t?.tokenSymbol||"token",s=t?.tx;if(!e||!n||!a){u(c("approvalDataNotAvailable"),"bot");break}const d=t?.amountInWei||void 0,f=Ho({tokenAddress:e,spenderAddress:n,fromAddress:R?.address||"",chainId:F,tokenSymbol:r,amount:d}),h={from:f.from,to:f.to,data:f.data,value:f.value,chainId:f.chainId};u(l("approving",{symbol:r}),"bot");try{y(!1);const e=await a(h);let n="success"===e.status;if("success"===e.status&&e.transactionHash)try{n="success"===(await Lo({transactionHash:e.transactionHash,chainId:F||1,rpcUrl:H})).status}catch(o){n=!0}if(n){u(l("approvalSuccess",{symbol:r}),"bot");const e=[{id:"confirm-swap-after-approve",text:c("confirmSwapButton"),value:c("swapConfirmValue"),action:"confirm_swap",fullWidth:!0,extraData:{tx:s}}];u(c("approvalConfirmSwap"),"bot",void 0,e)}else{const n=e.error?`\nError: ${e.error}`:"";u(c("approvalFailed")+n,"bot")}}catch(i){u(c("approvalFailed"),"bot")}break}case"click_swap_dest_token":{const e=t?.tokenAddress||"",n=t?.symbol||"";J({descTokenAddress:e,descTokenDecimals:t?.decimals||18});const o=P(),a=o.srcTokenAddress||"",i=a===Ut;try{const e=await go({address:R?.address||"",chain:U});if(e?.success&&e?.data?.result){const t=e.data.result;let r="",s="0";if(i){const e=t.find(e=>e.native_token);r=D?.nativeCurrency?.symbol||"ETH",s=e?.balance_formatted||"0"}else{const e=t.find(e=>e.token_address.toLowerCase()===a.toLowerCase());e&&(r=e.symbol,s=e.balance_formatted)}if(r&&parseFloat(s)>0){const e=[25,50,75,100],t=o.srcTokenDecimals||18,i=e.map(e=>({id:`percent-${e}`,text:`${e}%`,value:l("buttonUsePercent",{percent:String(e),symbol:r}),action:"select_percent",extraData:{percent:e,tokenAddress:a,tokenSymbol:r,tokenDecimals:t,tokenBalance:s}}));u(l("swapSelectAmount",{from:r,to:n,balance:s}),"bot",void 0,i)}else u(c("swapNoSourceToken"),"bot")}else u(c("couldNotFetchBalance"),"bot")}catch(r){u(c("couldNotLoadBalance"),"bot")}break}case"select_nft_to_send":{const e=t?.name||"NFT",n=t?.contractAddress||"",o=t?.tokenId||"",a=t?.tokenStandard||"ERC721",i=t?.amount||"1",r=t?.image||"",s={contract_address:n,token_id:o,to_address:t?.toAddress||"",token_standard:a,amount:"1",maxAmount:i,nft_name:e};u(l("nftSendReview",{name:e,standard:a,tokenId:o}),"bot",void 0,void 0,{action:"send_nft",parameters:s,status:"pending",nftInfo:{name:e,image:r||void 0,tokenId:o,contractAddress:n,tokenStandard:a}});break}default:u(l("actionExecutedFor",{action:n,value:e}),"bot")}else await xt(500),u(l("receivedButtonValue",{value:e}),"bot");y(!1),Qo.isDesktop&&E.current?.focus()}catch(i){u(c("errorProcessingRequest"),"bot"),y(!1)}},[R?.address,u,h,D?.blockExplorers?.default?.url,D?.nativeCurrency?.symbol,F,U,P,q,W,a,j,J,H,c,l]),Q=t.useCallback(async()=>{try{y(!0);const e=D?.tokenTrendingDefault||[],[n,t]=await Promise.allSettled([ko.getTopGainers(O,"24h",5),ko.getTokensDetails(e,O)]);let o=[];"fulfilled"===n.status&&n.value?.data&&(o=[...n.value.data]),"fulfilled"===t.status&&t.value?.data&&(o=[...t.value.data,...o]),o=o.filter((e,n,t)=>n===t.findIndex(n=>n.address.toLowerCase()===e.address.toLowerCase()));const a=o.map(e=>({id:e?.symbol,text:e?.symbol,value:l("buttonBuyToken",{name:e.name,symbol:e?.symbol||""}),action:"click_buy_item_token_button",extraData:{tokenAddress:e?.address||"",symbol:e?.symbol||"",decimals:e?.decimals||18}}));await xt(1e3),y(!1),u(l("trendingTokensHeader",{chain:D?.name||"Unknown"}),"bot");const i=o.map((e,n)=>`${n+1}. ${e.name} (${e?.auditGoplus?.token_symbol||e.symbol||"Unknown"})\n$${ho(e?.price||0).decimalPlaces(4).toFormat()} (${e.price_change_percentage_24h||e.priceChange}%)\n\n---\n`).join("\n");u(`${i}${c("trendingTokensQuestion")}`,"bot",void 0,a)}catch(e){u(c("trendingTokensError"),"bot")}finally{y(!1)}},[u,D?.name,D?.tokenTrendingDefault,O,c,l]),z=t.useCallback(async(e={})=>{const{numberOfView:n=5}=e;try{y(!0);const e=await Ao({address:R?.address||"",chain:U,limit:100,exclude_spam:!1});if(e?.success&&e?.data?.result&&e.data.result.length>0){const t=e.data.result;let o=e.data.result;n&&n>0&&(o=o.slice(0,n));const a=o.map(e=>{const n=e.normalized_metadata?.name||e.name||`#${e.token_id}`,t=e.normalized_metadata?.image||e.media?.original_media_url||"";return{id:`${e.token_address}-${e.token_id}`,text:`${n} (${e.symbol||e.contract_type}) - ${e.token_id}`,value:l("buttonSendNft",{name:n}),action:"select_nft_to_send",fullWidth:!0,extraData:{contractAddress:e.token_address,tokenId:e.token_id,tokenStandard:e.contract_type,name:n,symbol:e.symbol,amount:e.amount,image:t}}}),i=o.map((e,n)=>{const t=e.normalized_metadata?.name||e.name||`#${e.token_id}`,o="ERC1155"===e.contract_type?` (x${e.amount})`:"",a=e.normalized_metadata?.image||e.media?.original_media_url||"";return`${n+1}. ${a?`\n`:"🖼️ "}**${t}**${o}\n ${e.symbol||e.contract_type} | Token ID: ${e.token_id}`}).join("\n\n");await xt(500),y(!1),u(`${l("nftCollectionHeader",{count:String(o.length),list:i})}${n&&n>0&&t.length>n?l("nftMoreItems",{count:String(t.length-n)}):""}${c("nftSelectBelow")}`,"bot",void 0,a),n&&n>0&&t.length>n&&u(l("sendOtherNfts",{link:"https://nft.keyring.app/"}),"bot")}else y(!1),u(c("nftNoCollection"),"bot")}catch(t){y(!1),u(c("nftFetchError"),"bot")}},[R?.address,U,u,c,l]),X=t.useCallback(async()=>{try{y(!0);const e=await go({address:R?.address||"",chain:U});if(e?.success&&e?.data?.result&&e.data.result.length>0){const n=e.data.result,t=n.flatMap(e=>[{id:`send-${e.token_address}`,text:l("buttonSendToken",{symbol:e.symbol}),value:l("buttonSendToken",{symbol:e.symbol}),action:"suggested_action",fullWidth:!!Qo.isMobile},{id:`buy-more-${e.token_address}`,text:l("buttonBuyMoreToken",{symbol:e.symbol}),value:l("buttonBuyMoreToken",{symbol:e.symbol}),action:"suggested_action",fullWidth:!!Qo.isMobile}]),o=n.map((e,n)=>{const t=void 0!==e.usd_value?` ≈ $${ho(e.usd_value).decimalPlaces(2).toFormat()}`:"";return`${n+1}. **${e.name}** (${e.symbol})\n Balance: ${e.balance_formatted}${t}`}).join("\n\n");await xt(500),y(!1),u(l("viewBalancesHeader",{chain:D?.name||"this chain",list:o}),"bot",void 0,t)}else y(!1),u(c("viewBalancesEmpty"),"bot")}catch(e){y(!1),u(c("viewBalancesFetchError"),"bot")}},[R?.address,U,u,D?.name,c,l]),K=t.useMemo(()=>[{id:"ask",icon:"❓",text:c("suggestionAskText"),action:async()=>{k(!1),y(!0),u(c("suggestionAskUserMessage"),"user"),await xt(1e3),y(!1),u(c("suggestionAskBotReply"),"bot")}},{id:"buy",icon:"💰",text:c("suggestionBuyText"),action:async()=>{k(!1),u(c("suggestionBuyText"),"user"),Sn(R?.address||"")&&L?await Q():(y(!0),await xt(1e3),Sn(R?.address||"")&&!L?u(c("walletConnectedChainUnsupported"),"bot"):u(c("walletNotConnected"),"bot"),y(!1))}}],[u,R?.address,Q,c,L]),_=e=>{if(0===e)return!0;const n=d[e],t=d[e-1],o=new Date(n.timestamp),a=new Date(t.timestamp);return o.setHours(0,0,0,0),a.setHours(0,0,0,0),o.getTime()!==a.getTime()};t.useEffect(()=>{T.current?.scrollIntoView({behavior:"smooth"})},[d]),t.useEffect(()=>{e?(E.current&&Qo.isDesktop&&E.current.focus(),T.current?.scrollIntoView({behavior:"instant"}),S.current&&N.current?Date.now()-N.current>5e3&&k(!0):k(!0),N.current=null,S.current=!1,setTimeout(()=>{T.current?.scrollIntoView({behavior:"smooth"})},50)):(N.current=Date.now(),S.current=!B.current)},[e]),t.useEffect(()=>{const n=n=>{"Escape"===n.key&&e&&o()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e,o]);const $=t.useCallback(async()=>{if(""===w?.trim()||g)return;const e=v,n=u(w?.trim(),"user",v?.id);b(""),C(null),y(!0),k(!1),y(!0);try{let h,m;const p=d.slice(-20);let b="";if(p.length>0){b="\n\n## CONVERSATION HISTORY:\n";for(const e of p)"user"===e.sender?b+=`User: ${e.text}\n`:b+=`Assistant: ${e.text.length>400?e.text.substring(0,400)+"...":e.text}\n`;b+="\n---\n"}let g=w?.trim();e&&(g=`[Replying to ${"user"===e.sender?"my previous":"your"} message: "${e.text}"]\n\n${g}`);try{const e=await Xo.checkTypeQuestion(g,b);if(e?.startsWith("no")){const e=await Xo.generateContent(g,b);let n=null;try{let t=e?.trim();t.startsWith("```json")?t=t.replace(/^```json\s*/,"").replace(/\s*```$/,""):t.startsWith("```")&&(t=t.replace(/^```\s*/,"").replace(/\s*```$/,"")),n=JSON.parse(t)}catch{n=null}return y(!1),void u(n?.message||e,"bot")}}catch(o){}if(R?.address&&L)try{const[e,n]=await Promise.allSettled([go({address:R.address,chain:U}),Ao({address:R.address,chain:U,limit:100,exclude_spam:!0})]);"fulfilled"===e.status&&e.value?.success&&e.value?.data?.result&&(h=e.value.data.result.map(e=>({symbol:e.symbol,name:e.name,balance_formatted:e.balance_formatted,usd_value:e.usd_value,native_token:e.native_token,token_address:e.token_address}))),"fulfilled"===n.status&&n.value?.success&&n.value?.data?.result&&(m=n.value.data.result.map(e=>({name:e.normalized_metadata?.name||e.name||`#${e.token_id}`,token_address:e.token_address,token_id:e.token_id,contract_type:e.contract_type||"",amount:e.amount||"1"})))}catch{}const A=function(e){const{walletAddress:n,chainName:t,chainId:o,nativeSymbol:a,walletTokens:i,walletNfts:r}=e;return n?n&&!Tt[o]?`You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.\n The user's wallet address is: ${n}\n The user is selected on (chainId: ${o}) an UNSUPPORTED chain.\n\n ## YOUR ROLE:\n - You are a friendly, knowledgeable assistant that can talk about ANY topic naturally\n - You can freely answer general questions, discuss crypto tokens, prices, market info, token details, etc. — these do NOT require a supported chain\n - **BLOCKED on unsupported chain** — if the user asks for any of the following, politely inform them that chain (chainId: ${o}) is not currently supported and the action cannot be performed:\n - Checking THEIR OWN balance ("what is my balance?", "how much ETH do I have?")\n - Sending tokens or NFTs\n - Swapping or buying tokens\n - Approving token spending\n - Wrapping/unwrapping tokens\n - Viewing or transferring their NFT collection\n - Any action that reads or writes to their wallet on the current chain\n - **ALLOWED on unsupported chain** — respond normally and helpfully for:\n - General questions (weather, coding, history, math, etc.)\n - Token information, prices, market data, token details\n - Any query that does NOT require interacting with the user's wallet on the current chain\n - Respond in the same language the user uses\n\n ## RESPONSE FORMAT:\n Always respond with a valid JSON object:\n {"action":"chat","message":"<your response>", suggested_actions:[{"label":"<short button text>","prompt":"<message sent when clicked>"}]}\n\n ## RULES:\n - suggested_actions: include when your message offers the user interactive choices or asks a follow-up question. NEVER include suggested_actions that ask the user to connect their wallet (e.g., "Connect wallet", "Connect now", etc.) — the app handles wallet connection separately\n - **CRITICAL**: NEVER include any "Buy" actions (e.g., "Buy USDC", "Buy ETH", "Purchase token", etc.) in suggested_actions. The app handles Buy buttons separately. Only include non-buy actions in suggested_actions (e.g., "Send token", "Swap token", "Check balance", "Show my NFTs").\n - For wallet-required actions, politely explain the user needs to connect their wallet first, and put this in the "message" field\n - ALWAYS respond with raw JSON only, never wrap in \`\`\`json code blocks\n - **CRITICAL - LANGUAGE**: Always respond in the SAME language the user writes in. English → English. Vietnamese → Vietnamese. NEVER use Chinese or any other language unless the user wrote in that language.`:`You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.\nThe user's wallet address is: ${n}\nThe user is on chain: ${t} (chainId: ${o})\nNative token: ${a}${i&&i.length>0?`\n## USER'S CURRENT WALLET BALANCE:\n${i.map(e=>{const n=void 0!==e.usd_value?` (~$${e.usd_value.toFixed(2)})`:"";return`- ${e.name} (${e.symbol}): ${e.balance_formatted}${n}${e.native_token?" [native]":` [${e.token_address}]`}`}).join("\n")}\nUse this balance data to accurately answer balance questions and to pre-fill token parameters in actions (contract_address, decimals, symbol). NEVER ask the user to provide token info that is already available above.\n`:""}${r&&r.length>0?`\n## USER'S NFT COLLECTION:\n${r.map(e=>{const n="ERC1155"===e.contract_type?` (x${e.amount})`:"";return`- ${e.name}${n} | ${e.contract_type} | contract: ${e.token_address} | tokenId: ${e.token_id}`}).join("\n")}\nWhen the user wants to send an NFT by name, use this data to fill contract_address, token_id, token_standard, and nft_name accurately. NEVER guess or fabricate NFT contract addresses.\n`:""}\n## YOUR ROLE:\n- You are a friendly, knowledgeable assistant that can talk about ANY topic naturally\n- You also specialize in crypto wallet operations: send tokens, swap, approve, check balances, get token info\n- When user requests a wallet action, return a structured JSON so the app can build the transaction\n- When user asks about general topics (weather, coding, history, math, etc.), respond naturally using the "chat" action\n- You will receive CONVERSATION HISTORY to maintain context. Use it to understand what the user is referring to\n- NEVER confuse a general conversation with a wallet action. Only use wallet actions when user EXPLICITLY wants to perform a crypto operation\n- **CRITICAL: For ERC20 token actions (send_token, swap_token, buy_token, approve_token), contract_address is a REQUIRED field — you MUST always include it in the JSON response with the ACTUAL contract address on the current chain (chainId: ${o}). NEVER leave it empty. You MUST look up and provide the correct contract address for the token on this chain. You know common tokens like USDC, USDT, DAI, WETH, LINK, UNI, AAVE, etc. on major chains — always provide the correct address. If the token genuinely does not exist on this chain, inform the user instead of proceeding with the action. EXCEPTION: For send_nft, contract_address is OPTIONAL — if the user refers to an NFT by name and you don't know the contract address, leave it as empty string "" and fill nft_name instead. NEVER make up or guess NFT contract addresses.**\n- **CRITICAL ACTION RULE: When user requests a wallet operation (swap, send, buy, approve, wrap, unwrap), you MUST return that action type IMMEDIATELY — even if some parameters are missing. DO NOT return a "chat" action to ask for missing details. Simply leave the missing parameters as empty string "". Your prompt for more info (e.g., asking for recipient address) goes in the "message" field of the wallet action itself. For example: If user says "swap DAI to USDC", you MUST return {"action":"swap_token",...} directly, NOT {"action":"chat",...}. If user says "send WETH", you MUST return {"action":"send_token","parameters":{"contract_address":"<WETH address>","to_address":"","amount":"","decimals":"18","token_symbol":"WETH"}} with empty to_address and amount, NOT a chat response.**\n\n## RESPONSE FORMAT:\nYou MUST respond with a valid JSON object in this exact format. Do NOT wrap it in markdown code blocks.\n\n### For Web3 actions (send, swap, approve, wrap, unwrap):\n{\n "action": "<action_type>",\n "message": "<your friendly explanation to the user>",\n "parameters": {\n "<param_key>": "<value or empty string if unknown>"\n }\n}\n\n### For information queries (balance, token info) or normal conversation:\n{\n "action": "chat",\n "message": "<your response text here>",\n "parameters": {},\n "token_mentions": [],\n "suggested_actions": []\n}\n\n### IMPORTANT - suggested_actions field:\nWhenever your response contains a follow-up question or offers the user an interactive choice (e.g., "Would you like me to...", "If you want, I can...", "Do you want to..."), you MUST include a "suggested_actions" array with clickable button options so the user can quickly respond.\nEach entry: { "label": "<short button text>", "prompt": "<full message to send when clicked>" }\nRules for suggested_actions:\n- Include suggested_actions ONLY when your message explicitly offers the user a choice or asks a follow-up question\n- Each button should represent one distinct option the user can take\n- "label" should be short (2-6 words) — this is the button text displayed to the user\n- "prompt" should be the full user message that will be sent when the button is clicked\n- Maximum 4 suggested actions per response\n- suggested_actions should be an empty array [] when your message does NOT offer any interactive choices\n- You can include suggested_actions in BOTH "chat" responses and wallet action responses (in the latter case, for follow-up options after the action message)\n- Do NOT add suggested_actions for simple statements or answers that don't ask the user anything\n- **CRITICAL**: NEVER include any "Buy" actions (e.g., "Buy USDC", "Buy ETH", "Purchase token", etc.) in suggested_actions. The app handles Buy buttons separately through token_mentions. Only include non-buy actions in suggested_actions (e.g., "Send WBTC", "Swap WBTC to ...", "Check balance", "Show my NFTs").\n\n### IMPORTANT - token_mentions field:\nWhenever your "chat" response mentions, lists, or discusses specific tokens/coins (e.g., trending tokens, token details, token recommendations, price discussions, asking about a token), you MUST include a "token_mentions" array with each token's info so the user can quickly buy them.\nEach entry: { "symbol": "<TOKEN_SYMBOL>" (REQUIRED), "contract_address": "<actual address>" (REQUIRED), "decimals": <number> (REQUIRED) }\n- You MUST include ALL crypto tokens mentioned in your response in token_mentions.\n- You MUST provide the actual contract_address for each token on chainId ${o}. NEVER leave contract_address empty.\n- You MUST provide the accurate decimals for each token.\n- Only include tokens that are actual tradeable crypto tokens mentioned in your response\n- Do NOT include token_mentions for general greetings, non-crypto conversations, or balance checks\n- If you do not know the contract address for a token on this chain, still include it in token_mentions but you MUST try your best to provide the correct address. The app needs the address to function.\n- token_mentions should be an empty array [] ONLY when no specific crypto tokens are discussed at all\n\n## SUPPORTED ACTIONS:\n\n### 1. send_native - Send native token (${a})\nParameters: { "to_address": "", "amount": "" }\nTriggered by: "send ${a}", "transfer 0.1 ${a} to 0x...", "send native token"\n**IMPORTANT**: ONLY use send_native when the user explicitly wants to send **${a}** (the native token of the CURRENT chain). If the user says "send ETH" but the current chain's native token is NOT ETH (e.g., on Polygon where native is MATIC), then ETH is an ERC20 token on this chain — use send_token with the correct ETH/WETH contract address instead. NEVER use send_native for a token that is not ${a}.\nNote: If user says "max", "all", or "send everything", set amount to "max". If user says "X%" (e.g., 50%), set amount to "50%". The app resolves these to actual values.\n\n### 2. send_token - Send ERC20 token\nParameters: { "contract_address": "" (REQUIRED), "token_symbol": "", "to_address": "", "amount": "", "decimals": "" }\nTriggered by: "send USDC", "transfer 100 DAI to 0x...", "send token"\nNote: contract_address is REQUIRED — you MUST always provide the actual contract address of the token on chainId ${o}. NEVER leave it empty. ALWAYS provide accurate decimals for the token. If user says "max", "all", or "send everything", set amount to "max". If user says "X%" (e.g., 50%), set amount to "50%". The app resolves these to actual values.\n\n### 3. swap_token - Swap tokens\nParameters: { "token_in": "<contract_address or 'native'>" (REQUIRED), "token_in_symbol": "", "token_in_decimals": "", "token_out": "<contract_address>" (REQUIRED), "token_out_symbol": "", "token_out_decimals": "", "amount": "" }\nTriggered by: "swap ETH to USDC", "exchange 0.5 ETH for USDC", "convert ETH to USDC", "swap token", "I want to swap", "đổi token"\nNote: token_in and token_out are REQUIRED fields — MUST contain the actual contract address. For native tokens (${a}), set token_in to "native". For ERC20 tokens, you MUST provide the correct contract address on chainId ${o}. NEVER leave empty. ALWAYS fill in token_in_symbol, token_out_symbol, token_in_decimals, and token_out_decimals with accurate values for each token. If user says "max", "all", or "swap everything", set amount to "max". If user says "X%" (e.g., 50%), set amount to "50%". The app resolves these to actual values.\n**IMPORTANT**: If the user says "swap" or "I want to swap" WITHOUT specifying any tokens or amounts, still return swap_token with ALL parameters as empty strings "". The app will show the user's wallet balances so they can pick a token.\n\n### 4. buy_token - Buy a token (user wants to purchase a specific token)\nParameters: { "token_symbol": "", "contract_address": "" (REQUIRED), "decimals": "" }\nTriggered by: "buy USDC", "I want to buy ETH", "purchase DOGE", "mua token X"\nNote: Use this when user says "buy <token>" without specifying what to sell. If user specifies both tokens ("buy USDC with ETH"), use swap_token instead. contract_address is REQUIRED — you MUST always provide the actual contract address on chainId ${o}. NEVER leave it empty. If the token does not exist on this chain, inform the user. For example, BNB is not native to most chains except BSC. ALWAYS provide accurate decimals for the token.\n\n### 5. approve_token - Approve token spending\nParameters: { "contract_address": "" (REQUIRED), "token_symbol": "", "spender_address": "", "amount": "", "decimals": "" }\nTriggered by: "approve USDC", "allow spending", "approve contract"\nNote: ALWAYS provide accurate decimals for the token.\n\n### 6. wrap_native - Wrap native token (${a} → W${a})\nParameters: { "amount": "" }\nTriggered by: "wrap ETH", "convert to WETH"\n\n### 7. unwrap_native - Unwrap native token (W${a} → ${a})\nParameters: { "amount": "" }\nTriggered by: "unwrap WETH", "convert WETH to ETH"\n\n### 8. send_nft - Send/Transfer an NFT (ERC721 or ERC1155)\nParameters: { "contract_address": "" (OPTIONAL), "token_id": "" (OPTIONAL), "to_address": "" (REQUIRED), "token_standard": "ERC721 or ERC1155" (OPTIONAL), "amount": "" (for ERC1155 only, default 1), "nft_name": "" }\nTriggered by: "send NFT", "transfer NFT #1234 to 0x...", "send my Bored Ape to...", "transfer ERC1155 token"\nNote: token_standard is OPTIONAL. If the user specifies the standard or you confidently know it, include "ERC721" or "ERC1155". Otherwise, leave it as empty string "" — the app will automatically detect the correct standard by querying on-chain metadata. For ERC1155, amount defaults to "1" if not specified. **IMPORTANT**: For NFTs, you typically do NOT know the contract_address. If the user refers to an NFT by name (e.g., "send Shou Rikuto", "send my Bored Ape"), leave contract_address as empty string "" and put the NFT name in nft_name — the app will look it up from the user's wallet. Only provide contract_address if the user explicitly gives the contract address. NEVER make up or guess NFT contract addresses.\n\n### 9. view_nfts - View/Show user's NFT collection\nParameters: {} (empty)\nTriggered by: "show my NFTs", "what NFTs do I have?", "view my NFT collection", "xem NFT của tôi", "list my NFTs"\nNote: Use this when user wants to VIEW or LIST their NFTs. Do NOT use "chat" action for NFT viewing requests.\n\n### 10. view_balances - View/Show user's full token balances\nParameters: {} (empty)\nTriggered by: "show my balances", "what tokens do I have?", "list my tokens", "view my wallet", "xem balance của tôi", "xem token của tôi", "show all my tokens", "what's in my wallet?"\nNote: Use this when user wants to see ALL their tokens/balances at once. Do NOT use "chat" action for wallet balance viewing requests. For single-token balance queries ("how much ETH do I have?", "check my USDC balance"), use "chat" action instead.\n\n### 11. chat - Normal conversation, token info\nParameters: {} (empty)\nOptional: token_mentions: [{ "symbol": "", "contract_address": "", "decimals": <number> }] — include when your response mentions specific tokens\nTriggered by: questions, greetings, info requests, balance checks, token details, trending tokens\n\n## CONTRACT ADDRESS ACCURACY REQUIREMENTS:\nYou have comprehensive, precise knowledge of token contract addresses on ALL major EVM chains. You MUST use this knowledge accurately.\n\n## RULES:\n1. Extract ALL mentioned values from the user's message and fill the parameters\n2. Leave parameter as empty string "" if the user didn't mention it\n3. Always include a friendly "message" explaining what you understood\n4. For "chat" action, put your full response in the "message" field\n5. **CRITICAL**: For ERC20 token actions, contract_address is a REQUIRED field — ALWAYS provide the ACTUAL contract address on chainId ${o}. NEVER leave it empty. You must know the correct addresses for common tokens (USDC, USDT, DAI, WETH, LINK, UNI, AAVE, etc.) on major chains. If a token does not exist on this chain, inform the user instead of proceeding. Be especially careful with tokens that are native to other chains (e.g., BNB is BSC native — if user asks to buy BNB on OP Mainnet, inform them it may not be available as an ERC20 on this chain). **EXCEPTION: For send_nft, if you don't know the NFT contract address, leave it as empty string "" and provide nft_name instead. NEVER fabricate NFT addresses.**\n6. **IMPORTANT**: ALWAYS provide accurate decimals for each token. This is CRITICAL for accurate transaction amounts.\n7. **IMPORTANT**: ALWAYS provide accurate token_symbol for each token. Even if the user only provides a contract address without naming the token, you MUST identify the token from the address and fill in token_symbol and decimals. For example: if user provides "0x4200000000000000000000000000000000000006" on OP/Base, you know it is WETH with decimals 18 — fill in token_symbol:"WETH" and decimals:"18". You have comprehensive knowledge of well-known token contract addresses — use it to populate all fields.\n8. For amounts, use the exact number the user mentioned (don't convert units). If user says "max", "all", or "everything", set amount to "max". If user says "X%" (e.g., "send 50% of my USDC", "swap 25% of my ETH"), set amount to "50%" or "25%" — the literal percentage string. The app will resolve these to the actual balance values.\n9. For native token sends, use "send_native" ONLY when the user wants to send **${a}** — the ACTUAL native token of the current chain (chainId: ${o}). If the user says "send ETH" but the native token on this chain is not ETH (e.g., Polygon where native is MATIC), treat ETH as an ERC20 token and use "send_token" with the correct ETH/WETH contract address on this chain. NEVER use send_native for a token symbol that does not match ${a}.\n10. **CRITICAL - LANGUAGE**: You MUST detect the language the user is writing in and respond ONLY in that exact same language. English user → English response. Vietnamese user → Vietnamese response. Do NOT default to Chinese or any other language under any circumstances.\n11. ALWAYS respond with raw JSON only, never wrap in \`\`\`json code blocks\n12. For swap_token: token_in for native tokens must be "native". ALWAYS provide token_in_symbol, token_out_symbol, token_in_decimals, and token_out_decimals.\n13. Use CONVERSATION HISTORY to maintain context. If user says "do it again" or "same but with X", refer to previous messages to understand what they mean.\n14. For general/non-crypto questions, respond naturally and helpfully using the "chat" action. You are NOT limited to crypto topics only.\n15. ONLY trigger wallet actions (send_native, send_token, swap_token, buy_token, approve_token, wrap_native, unwrap_native, send_nft) when the user EXPLICITLY requests a crypto/wallet operation. Do NOT misinterpret general conversation as wallet actions.\n16. When your "chat" response mentions, lists, or discusses specific tokens (e.g., trending tokens, token details, recommendations, price info), you MUST include "token_mentions" array so the app can show Buy buttons for each token. Always include token_mentions as an array (empty [] if no tokens mentioned).\n17. **CRITICAL - ONE RESPONSE RULE**: When user requests a wallet operation (swap, send, buy, approve, wrap, unwrap, send NFT), return ONLY ONE JSON response with that action type — even if parameters are incomplete. Leave missing parameters as empty string "". DO NOT return multiple responses. DO NOT return a "chat" action first and then the wallet action. DO NOT return a "chat" action just because some fields are missing — that is WRONG. Put your explanation or request for more info in the "message" field of the wallet action. Example: User says "send WETH" → MUST return {"action":"send_token","message":"Please provide the recipient address and amount.","parameters":{"contract_address":"<WETH address>","token_symbol":"WETH","to_address":"","amount":"","decimals":"18"}}. Example: User says "swap 0.01 DAI to USDC" → Return ONLY {"action":"swap_token","message":"Swapping 0.01 DAI to USDC...","parameters":{...}}.\n18. **CRITICAL - TOKEN CONTRACT ADDRESSES**: You MUST provide the CORRECT and ACCURATE contract address for each token on the CURRENT chain (chainId: ${o}). You have deep knowledge of token contract addresses across all major chains (Ethereum, Optimism, Arbitrum, Base, Polygon, BSC, etc.). ALWAYS verify you are using the correct address for the current chainId. DO NOT use addresses from other chains. For common tokens like USDC, USDT, DAI, WETH, each chain has different contract addresses - you MUST use the correct one for chainId ${o}.\n19. **SUGGESTED ACTIONS**: When your message contains follow-up questions or offers the user choices (e.g., "Would you like me to...", "I can also...", "Do you want..."), you MUST include "suggested_actions" array with button options. This makes the conversation interactive and user-friendly. If your message does NOT ask any question or offer any choice, leave suggested_actions as empty array [].\n\n## EXAMPLES:\n\nUser: "send 0.5 ${a} to 0x1234...5678" (on the current chain where native = ${a})\nResponse: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"0.5"}}\n\nUser: "send all my ${a} to 0x1234...5678" or "send max ${a} to 0x1234..."\nResponse: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"max"}}\n\nUser: "send 50% of my ${a} to 0x1234..."\nResponse: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"50%"}}\n\nUser: "send 0.5 ETH to 0x1234...5678" (on Polygon where native = MATIC, so ETH is ERC20)\nResponse: {"action":"send_token","message":"<friendly explanation>","parameters":{"contract_address":"<actual ETH/WETH address on current chain>","token_symbol":"ETH","to_address":"0x1234...5678","amount":"0.5","decimals":"18"}}\n\nUser: "transfer 100 USDC"\nResponse: {"action":"send_token","message":"<friendly explanation>","parameters":{"contract_address":"<actual USDC address on current chain>","token_symbol":"USDC","to_address":"","amount":"100","decimals":"6"}}\n\nUser: "send WETH"\nResponse: {"action":"send_token","message":"<ask for recipient and amount>","parameters":{"contract_address":"<actual WETH address on current chain>","token_symbol":"WETH","to_address":"","amount":"","decimals":"18"}}\n\nUser: "send weth to 0xABC..."\nResponse: {"action":"send_token","message":"<ask for amount>","parameters":{"contract_address":"<actual WETH address on current chain>","token_symbol":"WETH","to_address":"0xABC...","amount":"","decimals":"18"}}\n\nUser: "send 0x4200000000000000000000000000000000000006 to 0xABC..."\nResponse: {"action":"send_token","message":"<friendly explanation>","parameters":{"contract_address":"<actual WETH address on current chain>","token_symbol":"WETH","to_address":"0xABC...","amount":"","decimals":"18"}}\n\nUser: "swap 1 ETH to USDC"\nResponse: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${a}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"1"}}\n\nUser: "swap all my ETH to USDC" or "swap max ETH to USDC"\nResponse: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${a}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"max"}}\n\nUser: "swap 75% of my ETH to USDC"\nResponse: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${a}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"75%"}}\n\nUser: "swap USDT to DAI"\nResponse: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"<actual USDT address on current chain>","token_in_symbol":"USDT","token_in_decimals":"6","token_out":"<actual DAI address on current chain>","token_out_symbol":"DAI","token_out_decimals":"18","amount":""}}\n\nUser: "buy USDC"\nResponse: {"action":"buy_token","message":"<friendly explanation>","parameters":{"token_symbol":"USDC","contract_address":"<actual USDC address on current chain>","decimals":"6"}}\n\nUser: "I want to buy DOGE" (token not on this chain)\nResponse: {"action":"chat","message":"<inform user DOGE is not available as ERC20 on this chain>","parameters":{},"token_mentions":[]}\n\nUser: "buy BNB" (on non-BSC chain)\nResponse: {"action":"chat","message":"<inform user BNB is native to BSC and may not be available on this chain>","parameters":{},"token_mentions":[]}\n\nUser:"what is my balance?" or "check my balance", "show my balances" or "what tokens do I have?" or "xem balance của tôi" or "xem token của tôi"\nResponse: {"action":"view_balances","message":"<your friendly response>","parameters":{}}\n\nUser: "hello"\nResponse: {"action":"chat","message":"<greeting and list of capabilities>","parameters":{},"token_mentions":[],"suggested_actions":[{"label":"Check my balance","prompt":"What is my balance?"},{"label":"Show my tokens","prompt":"Show my balances"},{"label":"Show trending tokens","prompt":"Show me trending tokens"},{"label":"Show my NFTs","prompt":"Show my NFTs"}]}\n\nUser: "what is the capital of France?"\nResponse: {"action":"chat","message":"<your answer>","parameters":{},"token_mentions":[],"suggested_actions":[]}\n\nUser: "what is the current price of ETH?"\nResponse: {"action":"chat","message":"The current price of ETH can vary. For the most accurate price, check popular crypto trackers. I can also help you check your ETH balance or swap ETH if you'd like!","parameters":{},"token_mentions":[{"symbol":"ETH","contract_address":"native","decimals":18}],"suggested_actions":[{"label":"Check my ETH balance","prompt":"Check my ETH balance"},{"label":"Swap ETH","prompt":"I want to swap ETH"}]}\n\nUser: "show me trending tokens"\nResponse: {"action":"chat","message":"<list of trending tokens with descriptions>","parameters":{},"token_mentions":[{"symbol":"USDC","contract_address":"<actual USDC address on current chain>","decimals":6},{"symbol":"PEPE","contract_address":"<actual PEPE address on current chain>","decimals":18}]}\n\nUser: "tell me about PEPE token"\nResponse: {"action":"chat","message":"<info about PEPE>","parameters":{},"token_mentions":[{"symbol":"PEPE","contract_address":"<actual PEPE address on current chain>","decimals":18}]}\n\nUser: "Token Worldcoin"\nResponse: {"action":"chat","message":"<info about Worldcoin>","parameters":{},"token_mentions":[{"symbol":"WLD","contract_address":"<actual WLD address on current chain>","decimals":18}]}\n\nUser: "tell me about some random new token"\nResponse: {"action":"chat","message":"<cautious response>","parameters":{},"token_mentions":[]}\n\nUser: "send NFT #1234 from contract 0xABC... to 0xDEF..."\nResponse: {"action":"send_nft","message":"<friendly explanation>","parameters":{"contract_address":"0xABC...","token_id":"1234","to_address":"0xDEF...","token_standard":"","amount":"1","nft_name":""}}\n\nUser: "send Shou Rikuto tokenId 5"\nResponse: {"action":"send_nft","message":"<ask for recipient address>","parameters":{"contract_address":"","token_id":"5","to_address":"","token_standard":"","amount":"1","nft_name":"Shou Rikuto"}}\n\nUser: "send my Bored Ape #42 to 0xDEF..."\nResponse: {"action":"send_nft","message":"<friendly explanation>","parameters":{"contract_address":"","token_id":"42","to_address":"0xDEF...","token_standard":"","amount":"1","nft_name":"Bored Ape"}}\n\nUser: "transfer my ERC1155 token #5 (amount 3) from 0xNFT... to 0xBOB..."\nResponse: {"action":"send_nft","message":"<friendly explanation>","parameters":{"contract_address":"0xNFT...","token_id":"5","to_address":"0xBOB...","token_standard":"","amount":"3","nft_name":""}}\n\nUser: "show my NFTs" or "what NFTs do I have?"\nResponse: {"action":"view_nfts","message":"Let me show you your NFT collection!","parameters":{}}\n\n[With conversation history where user previously swapped ETH to USDC]\nUser: "do it again but with 2 ETH"\nResponse: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${a}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"2"}}\n\nUser: "swap token" or "I want to swap" or "đổi token" (no specific tokens mentioned)\nResponse: {"action":"swap_token","message":"<friendly explanation, e.g. Which token would you like to swap?>","parameters":{"token_in":"","token_in_symbol":"","token_in_decimals":"","token_out":"","token_out_symbol":"","token_out_decimals":"","amount":""}}`:'You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.\nThe user is currently NOT connected to any wallet.\n\n## YOUR ROLE:\n- You are a friendly, knowledgeable assistant that can talk about ANY topic naturally\n- You can freely answer general questions, discuss crypto tokens, prices, market info, provide token details, etc. — these do NOT require a wallet connection\n- ONLY ask the user to connect their wallet when their request explicitly requires their personal wallet/address, such as:\n - Sending tokens or NFTs\n - Swapping tokens\n - Approving token spending\n - Wrapping/unwrapping tokens\n - Checking THEIR OWN balance ("what is MY balance?", "how much ETH do I have?")\n - Viewing THEIR OWN NFT collection\n - Any action that reads or writes to THEIR wallet address\n- For all other requests (token info, prices, general crypto questions, market data, etc.), respond normally and helpfully\n- **CRITICAL - LANGUAGE**: You MUST detect the language the user is writing in and respond ONLY in that exact language. If the user writes in English, respond in English. If in Vietnamese, respond in Vietnamese. NEVER respond in a different language than what the user used. Do NOT default to Chinese or any other language.\n\n## RESPONSE FORMAT:\nAlways respond with a valid JSON object:\n{"action":"chat","message":"<your friendly response to the user>", "suggested_actions":[{"label":"<short button text>","prompt":"<message sent when clicked>"}]}\n\n## RULES:\n- suggested_actions: include when your message offers the user interactive choices or asks a follow-up question. NEVER include suggested_actions that ask the user to connect their wallet (e.g., "Connect wallet", "Connect now", etc.) — the app handles wallet connection separately\n- **CRITICAL**: NEVER include any "Buy" actions (e.g., "Buy USDC", "Buy ETH", "Purchase token", etc.) in suggested_actions. The app handles Buy buttons separately. Only include non-buy actions in suggested_actions (e.g., "Send token", "Swap token", "Check balance", "Show my NFTs").\n- For wallet-required actions, politely explain the user needs to connect their wallet first, and put this in the "message" field\n- ALWAYS respond with raw JSON only, never wrap in ```json code blocks\n- **CRITICAL - LANGUAGE**: Always respond in the SAME language the user writes in. English → English. Vietnamese → Vietnamese. NEVER use Chinese or any other language unless the user wrote in that language.'}({walletAddress:R?.address||void 0,chainName:D?.name||void 0,chainId:F||void 0,nativeSymbol:D?.nativeCurrency?.symbol||void 0,walletTokens:h,walletNfts:m}),k=await async function(e){const{prompt:n,model:t="gpt-4.1-mini",stream:a=!1,systemPrompt:i}=e;if(!n)throw new Error("Prompt is required");try{const e="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImY4NmY0Yzc2LTA3MDQtNGEwZS04YTA0LWUwODllOGQxMGZjZCIsIm9yZ0lkIjoiMzk0MDAyIiwidXNlcklkIjoiNDA0ODUzIiwidHlwZUlkIjoiYjQyODExOTQtOGQ0Yi00NjkxLTlhZjItNjU4ODE2NzExYmRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MTY4NjQyNTYsImV4cCI6NDg3MjYyNDI1Nn0.V8crfBIBardAnZkc05FD0hQIJBeZxMqvzRnYExVtnF8",o=new mo("https://cortex-api.moralis.io"),r=i?`${i}\n\n---\n\nUser: ${n}`:n;return{success:!0,data:(await o.post("/chat",{prompt:r,model:t,stream:a},{headers:{"X-API-Key":e,Accept:"application/json","Content-Type":"application/json"}})).data}}catch(o){return{success:!1,error:o instanceof Error?o.message:"Unknown error"}}}({prompt:g,model:"gpt-4.1-mini",stream:!1,systemPrompt:A+b});if(k.success&&k.data){const e=k.data.text||"";let d=null;try{let n=e?.trim();n.startsWith("```json")?n=n.replace(/^```json\s*/,"").replace(/\s*```$/,""):n.startsWith("```")&&(n=n.replace(/^```\s*/,"").replace(/\s*```$/,"")),d=JSON.parse(n)}catch{d=null}if(d&&d.action&&"chat"!==d.action)if("buy_token"===d.action){const e=d.parameters?.token_symbol||"";let t=d.parameters?.contract_address||"",o=18;if("native"===t.toLowerCase()&&(t=Ut),t&&t!==Ut)try{const e=await ko.getTokensDetails([t],O);e?.data?.[0]&&(o=e.data[0].decimals||18)}catch(a){}if(!t&&e&&R?.address)try{const n=await go({address:R.address,chain:U});if(n?.success&&n?.data?.result){const a=n.data.result,i=a.find(e=>e.token_address.toLowerCase()===t.toLowerCase())||a.find(n=>n.symbol.toUpperCase()===e.toUpperCase());i&&(t=i.token_address,o=i.decimals)}if(!t){const n=D.tokenTrendingDefault||[],[a,i]=await Promise.allSettled([ko.getTopGainers(O,"24h",10),ko.getTokensDetails(n,O)]),r=[];"fulfilled"===a.status&&a.value?.data&&r.push(...a.value.data),"fulfilled"===i.status&&i.value?.data&&r.push(...i.value.data);const s=r.find(e=>e.address?.toLowerCase()===t.toLowerCase())||r.find(n=>n.symbol?.toUpperCase()===e.toUpperCase());s&&(t=s.address,o=s.decimals||18)}}catch(a){}t?(u(d.message||l("buyTokenHelp",{symbol:e}),"bot",n.id),await q(t,o)):(u(d.message||l("tokenNotFoundOnChain",{symbol:e}),"bot",n.id),await Q())}else if("swap_token"===d.action){const e={...d.parameters||{}},t="native"===e.token_in||e.token_in_symbol?.toUpperCase()===D?.nativeCurrency?.symbol?.toUpperCase(),o="native"===e.token_out||e.token_out_symbol?.toUpperCase()===D?.nativeCurrency?.symbol?.toUpperCase();if(o&&(e.token_out=Ut),!t&&(e.token_in||e.token_in_symbol)&&R?.address)try{const n=await go({address:R.address,chain:U});if(n?.success&&n?.data?.result){const t=n.data.result,o=e.token_in?t.find(n=>n.token_address.toLowerCase()===e.token_in.toLowerCase()):t.find(n=>n.symbol.toUpperCase()===e.token_in_symbol.toUpperCase());o&&(e.token_in=o.token_address,e.token_in_decimals=String(o.decimals))}}catch(a){}if(!o&&(e.token_out||e.token_out_symbol)&&R?.address)try{const n=await go({address:R.address,chain:U});if(n?.success&&n?.data?.result){const t=n.data.result,o=e.token_out?t.find(n=>n.token_address.toLowerCase()===e.token_out.toLowerCase()):t.find(n=>n.symbol.toUpperCase()===e.token_out_symbol.toUpperCase());o&&(e.token_out=o.token_address,e.token_out_decimals=String(o.decimals))}}catch(a){}const h=!(!e.token_in&&!t),m=!!e.token_out,p=!!e.amount;if(h&&m&&p){u(d.message||c("swapPreparing"),"bot",n.id);try{const n=[];e.token_out&&n.push(e.token_out),e.token_in&&!t&&n.push(e.token_in);let o=18,d=18;if(n.length>0)try{const a=await ko.getTokensDetails(n,O);if(a?.data)for(const n of a.data)t||n.address.toLowerCase()!==e.token_in?.toLowerCase()||(o=n.decimals||18),n.address.toLowerCase()===e.token_out?.toLowerCase()&&(d=n.decimals||18)}catch(i){}if(R?.address)try{const n=await go({address:R.address,chain:U});if(n?.success&&n?.data?.result){const o=n.data.result;if(t){const n=o.find(e=>e.native_token);let t=n?.balance_formatted||"0";try{const e=await Jo({chainId:F,rpcUrl:H});if(e.isGreaterThan(0)){const o=e.times(1e6),a=new ho(n?.balance||"0").minus(o);t=a.isGreaterThan(0)?ho(le(BigInt(a.toFixed(0)),n?.decimals||18)).toFixed():"0"}}catch(r){}e.amount=Zo(e.amount,t);const a=parseFloat(t),i=parseFloat(e.amount);if(ho(a).lte(0))return u(l("formInsufficientBalance",{balance:ho(a).decimalPlaces(6).toFixed(),symbol:D?.nativeCurrency?.symbol||"native"}),"bot"),void y(!1);if(ho(a).lt(i))return u(l("swapInsufficientNativeBalance",{balance:ho(a).decimalPlaces(6).toFixed(),symbol:D?.nativeCurrency?.symbol||"native",amount:e.amount}),"bot"),void y(!1)}else{const n=o.find(n=>n.token_address.toLowerCase()===e.token_in?.toLowerCase());if(!n)return u(l("swapTokenNotInWallet",{symbol:e.token_in_symbol||e.token_in}),"bot"),void y(!1);e.amount=Zo(e.amount,n.balance_formatted||"0");const t=parseFloat(n.balance_formatted||"0"),a=parseFloat(e.amount);if(ho(t).lt(a))return u(l("swapInsufficientTokenBalance",{balance:ho(t).decimalPlaces(6).toFixed(),symbol:n.symbol,amount:e.amount}),"bot"),void y(!1)}}}catch(s){}const f=t?Ut:e.token_in;J({srcTokenAddress:f,descTokenAddress:e.token_out,amount:e.amount,srcTokenDecimals:o,descTokenDecimals:d});const h=Ot(e.amount,o).toString(),m=await Co({chainId:F,tokenIn:f,tokenInAmount:h,tokenOut:e.token_out,tokenOutRecipient:R?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(m.success&&m.data){const e=m.data,n=e.tokenIn,o=e.tokenOut,i=ho(le(BigInt(n.amount||0),n.decimals)).decimalPlaces(6).toFormat(),r=ho(le(BigInt(o.amount||0),o.decimals)).decimalPlaces(6).toFormat();let s=!1;if(!t&&R?.address&&e.tx?.to)try{const n=await Mo({tokenAddress:f,ownerAddress:R.address,spenderAddress:e.tx.to,chainId:F,rpcUrl:H});s=ho(n.toString()).isLessThan(h)}catch(a){s=!0}const d=e.estimatedTransactionFee?.total?ho(e.estimatedTransactionFee.total):ho(0);let p=ho(0);if(s&&R?.address)try{const n=Ho({tokenAddress:f,spenderAddress:e.tx?.to||"",fromAddress:R.address,chainId:F,amount:h});p=await Yo({from:R.address,to:n.to,data:n.data,chainId:F,rpcUrl:H})}catch(a){}const w=d.plus(p),b=D?.nativeCurrency?.symbol||"native";let g="",y=!1;if(R?.address&&w.isGreaterThan(0))try{const e=await Po({address:R.address,chainId:F,rpcUrl:H});if(e.isLessThan(w)){y=!0;const n=ho(le(BigInt(e.toFixed(0)),18)).decimalPlaces(6).toFormat(),t=ho(le(BigInt(w.toFixed(0)),18)).decimalPlaces(6).toFormat();g=l("swapFeeWarning",{symbol:b,balance:n,needed:t})}}catch(a){}const A=`From: ${i} ${n.symbol}\n⬇️\nTo: ${r} ${o.symbol}\n\n`+g+"\n";if(y)u(A,"bot");else if(s){const t=[{id:"approve-for-swap",text:l("swapApproveButton",{symbol:n.symbol}),value:l("swapApproveValue",{symbol:n.symbol}),action:"approve_for_swap",fullWidth:!0,extraData:{tokenAddress:f,spenderAddress:e.tx.to,tokenSymbol:n.symbol,amountInWei:h,tx:e.tx}}];u(A+l("swapNeedApprove",{symbol:n.symbol}),"bot",void 0,t)}else{const n=[{id:"confirm-swap",text:c("swapConfirmYes"),value:c("swapConfirmValue"),action:"confirm_swap",extraData:{tx:e.tx}}];u(A+c("swapReadyToProceed"),"bot",void 0,n)}}else u(l("swapEstimationError",{error:m.errorMessage||m.error||"Unknown error"}),"bot")}catch(f){u(c("swapEstimationFailed"),"bot")}}else if(h&&m&&!p){let o=t?18:parseInt(e.token_in_decimals||"18",10),s=parseInt(e.token_out_decimals||"18",10);const d=[];if(e.token_out&&d.push(e.token_out),e.token_in&&!t&&d.push(e.token_in),d.length>0)try{const n=await ko.getTokensDetails(d,O);if(n?.data)for(const a of n.data)t||a.address.toLowerCase()!==e.token_in?.toLowerCase()||(o=a.decimals||o),a.address.toLowerCase()===e.token_out?.toLowerCase()&&(s=a.decimals||s)}catch(i){}if(J({descTokenAddress:e.token_out,descTokenDecimals:s}),t)try{const e=await go({address:R?.address||"",chain:U});if(e?.success&&e?.data?.result){const t=e.data.result.find(e=>e.native_token),a=D?.nativeCurrency?.symbol||"ETH";let i=t?.balance_formatted||"0";try{const e=await Jo({chainId:F,rpcUrl:H});if(e.isGreaterThan(0)){const n=e.times(1e6),o=new ho(t?.balance||"0").minus(n);i=o.isGreaterThan(0)?ho(le(BigInt(o.toFixed(0)),t?.decimals||18)).toFixed():"0"}}catch(r){}J({srcTokenAddress:Ut,srcTokenDecimals:o});const s=[25,50,75,100].map(e=>({id:`percent-${e}`,text:`${e}%`,value:l("buttonUsePercent",{percent:String(e),symbol:a}),action:"select_percent",extraData:{percent:e,tokenAddress:Ut,tokenSymbol:a,tokenDecimals:o,tokenBalance:i}}));u(l("selectAmountToSwap",{symbol:a,balance:i}),"bot",n.id,s)}else u(c("couldNotFetchBalance"),"bot")}catch(a){u(c("couldNotFetchBalanceRetry"),"bot")}else{const t=e.token_in_symbol||"Token";J({srcTokenAddress:e.token_in,srcTokenDecimals:o});try{const o=await go({address:R?.address||"",chain:U});if(o?.success&&o?.data?.result){const a=o.data.result.find(n=>n.token_address.toLowerCase()===e.token_in?.toLowerCase());if(!a)return u(l("swapTokenNotInWallet",{symbol:t}),"bot"),void y(!1);const i=[25,50,75,100].map(e=>({id:`percent-${e}`,text:`${e}%`,value:l("buttonUsePercent",{percent:String(e),symbol:a.symbol}),action:"select_percent",extraData:{percent:e,tokenAddress:a.token_address,tokenSymbol:a.symbol,tokenDecimals:a.decimals||18,tokenBalance:a.balance_formatted}}));u(l("selectAmountToSwap",{symbol:a.symbol,balance:`${a.balance_formatted} (~$${a.usd_value?.toFixed(2)||"0"})`}),"bot",n.id,i)}else u(c("couldNotFetchBalance"),"bot")}catch(a){u(c("couldNotFetchBalanceRetry"),"bot")}}}else if(!h&&m){u(d.message||c("swapChooseFrom"),"bot",n.id);let t=parseInt(e.token_out_decimals||"18",10);if(e.token_out)try{const n=await ko.getTokensDetails([e.token_out],O);n?.data?.[0]&&(t=n.data[0].decimals||t)}catch(i){}await q(e.token_out,t)}else if(h&&!m){let o=t?18:parseInt(e.token_in_decimals||"18",10);if(e.token_in&&!t)try{const n=await ko.getTokensDetails([e.token_in],O);n?.data?.[0]&&(o=n.data[0].decimals||o)}catch(i){}J(t?{srcTokenAddress:Ut,srcTokenDecimals:18}:{srcTokenAddress:e.token_in,srcTokenDecimals:o}),u(d.message||l("swapChooseTo",{symbol:e.token_in_symbol||"your token"}),"bot",n.id);try{y(!0);const e=D?.tokenTrendingDefault||[],[n,t]=await Promise.allSettled([ko.getTopGainers(O,"24h",5),ko.getTokensDetails(e,O)]);let o=[];"fulfilled"===n.status&&n.value?.data&&(o=[...n.value.data]),"fulfilled"===t.status&&t.value?.data&&(o=[...t.value.data,...o]),o=o.filter((e,n,t)=>n===t.findIndex(n=>n.address.toLowerCase()===e.address.toLowerCase()));const a=o.map(e=>({id:e?.symbol,text:e?.symbol,value:l("buttonSwapTo",{name:e.name,symbol:e?.symbol||""}),action:"click_swap_dest_token",extraData:{tokenAddress:e?.address||"",symbol:e?.symbol||"",decimals:e?.decimals||18}}));u(l("trendingTokensForReceive",{chain:D?.name||"Unknown"}),"bot",void 0,a)}catch(a){u(c("couldNotLoadTokenList"),"bot")}finally{y(!1)}}else if(u(d.message||c("swapChooseToken"),"bot",n.id),R?.address)try{y(!0);const e=await go({address:R.address,chain:U});if(e?.success&&e?.data?.result&&e.data.result.length>0){const n=e.data.result.map(e=>({id:`swap-select-${e.token_address}`,text:`${e.name}: ${e.balance_formatted} ${e.symbol} ($${ho(e?.usd_value||0).decimalPlaces(2).toFixed()||"0"})`,value:`Swap ${e.symbol}`,action:"suggested_action",fullWidth:!0}));await xt(500),y(!1),u(l("walletBalanceSpendable",{chain:D?.name||"this chain"}),"bot",void 0,n)}else y(!1),u(l("walletNoTokensFound",{chain:D?.name||"this chain"}),"bot")}catch(a){y(!1),u(c("walletFetchError"),"bot")}}else if("view_balances"===d.action)u(d.message||c("viewBalancesLoading"),"bot",n.id),await X();else if("view_nfts"===d.action)u(d.message||c("viewNftsLoading"),"bot",n.id),await z();else if("send_token"!==d.action||d.parameters?.contract_address||d.parameters?.token_symbol||!R?.address)if("send_nft"!==d.action||d.parameters?.contract_address||d.parameters?.token_id||d.parameters?.nft_name||!R?.address)if("send_nft"===d.action&&!Sn(d.parameters?.contract_address||"")&&(d.parameters?.nft_name||d.parameters?.token_id)&&R?.address)try{y(!0);const e=await Ao({address:R.address,chain:U,limit:100,exclude_spam:!1});if(e?.success&&e?.data?.result){const t=e.data.result,o=(d.parameters?.nft_name||"").toLowerCase(),a=d.parameters?.token_id||"",i=e=>{const n=(e.normalized_metadata?.name||e.name||"").toLowerCase(),t=(e.name||"").toLowerCase(),i=o&&(n.includes(o)||t.includes(o)),r=a&&e.token_id===a;return o&&a?i&&r:o?i:r},r=!o&&!!a,s=r?t.filter(i):[],c=r?1===s.length?s[0]:null:t.find(i);if(r&&s.length>1){const e=s.map(e=>{const n=e.normalized_metadata?.name||e.name||`#${e.token_id}`,t=e.normalized_metadata?.image||e.media?.original_media_url||"";return{id:`${e.token_address}-${e.token_id}`,text:`${n} (${e.symbol||e.contract_type}) #${e.token_id}`,value:l("buttonSendNft",{name:n}),action:"select_nft_to_send",fullWidth:!0,extraData:{contractAddress:e.token_address,tokenId:e.token_id,tokenStandard:e.contract_type,name:n,symbol:e.symbol,amount:e.amount,image:t,toAddress:d.parameters?.to_address||""}}}),t=s.map((e,n)=>{const t=e.normalized_metadata?.name||e.name||`#${e.token_id}`,o=e.normalized_metadata?.image||e.media?.original_media_url||"";return`${n+1}. ${o?`\n`:"🖼️ "}**${t}**\n ${e.symbol||e.contract_type} | Token ID: ${e.token_id}`}).join("\n\n");y(!1),u(l("nftMultipleMatchesForTokenId",{count:String(s.length),tokenId:a})+"\n\n"+t,"bot",n.id,e)}else if(c){const e=c.normalized_metadata?.name||c.name||`#${c.token_id}`,t=c.normalized_metadata?.image||c.media?.original_media_url||"",o={contract_address:c.token_address,token_id:c.token_id,to_address:d.parameters?.to_address||"",token_standard:c.contract_type||"",amount:"1",maxAmount:c.amount||"1",nft_name:e};u(d.message||l("nftSendReview",{name:e,standard:c.contract_type||"NFT",tokenId:c.token_id}),"bot",n.id,void 0,{action:"send_nft",parameters:o,status:"pending",nftInfo:{name:e,image:t||void 0,tokenId:c.token_id,contractAddress:c.token_address,tokenStandard:c.contract_type||void 0}})}else u(d.message||l("nftNotFoundInWallet",{name:o||a}),"bot",n.id),await z()}else u(c("nftNoCollection"),"bot",n.id)}catch(a){u(c("nftFetchError"),"bot",n.id)}finally{y(!1)}else{const i=(t=d.action,["send_native","send_token","approve_token","wrap_native","unwrap_native","send_nft"].includes(t));let s,c,l={...d.parameters||{}};const f=["send_token","approve_token"].includes(d.action)&&(l.contract_address||l.token_symbol),h="send_native"===d.action,m="send_nft"===d.action&&l.contract_address;if(f&&R?.address)try{const e=await go({address:R.address,chain:U});if(e?.success&&e?.data?.result){const n=e.data.result,t=l.contract_address?n.find(e=>e.token_address.toLowerCase()===l.contract_address.toLowerCase()):n.find(e=>e.symbol.toUpperCase()===l.token_symbol.toUpperCase());t&&(l={...l,contract_address:t.token_address,decimals:String(t.decimals)},s={symbol:t.symbol,name:t.name,balance:t.balance,balanceFormatted:t.balance_formatted,usdValue:t.usd_value,usdPrice:t.usd_price,decimals:t.decimals,logo:t.logo||t.thumbnail,contractAddress:t.token_address})}}catch(a){}if(f&&!s&&l.contract_address)try{const e=await yo({address:l.contract_address,chain:U});if(e?.success&&e?.data){const n=e.data;s={symbol:n.symbol,name:n.name,balance:"0",balanceFormatted:"0",usdPrice:n.usd_price,decimals:n.decimals,logo:n.logo,contractAddress:l.contract_address},l={...l,decimals:String(n.decimals)}}}catch(a){}if(h&&R?.address)try{const e=await go({address:R.address,chain:U});if(e?.success&&e?.data?.result){const n=e.data.result.find(e=>e.native_token);if(n){let e=n.balance_formatted,t=n.balance;try{const o=new ho(n.balance),a="0x"+BigInt(o.toFixed(0)).toString(16),i=await Yo({from:R.address,to:R.address,data:"0x",value:a,chainId:F,rpcUrl:H});if(i.isGreaterThan(0)){const a=o.minus(i);a.isGreaterThan(0)?(t=a.toFixed(0),e=ho(le(BigInt(a.toFixed(0)),n.decimals)).toFixed()):(t="0",e="0")}}catch(r){}s={symbol:n.symbol,name:n.name,balance:t,balanceFormatted:e,usdValue:n.usd_value,usdPrice:n.usd_price,decimals:n.decimals,logo:n.logo||n.thumbnail,contractAddress:Ut}}else{const e=await yo({address:Ut,chain:U});if(e?.success&&e?.data){const n=e.data;s={symbol:n.symbol,name:n.name,balance:"0",balanceFormatted:"0",usdValue:0,usdPrice:n.usd_price,decimals:n.decimals,logo:n.logo||n.thumbnail,contractAddress:Ut}}}}}catch(a){}if(m){try{const e=await async function(e){const{address:n,chain:t="base"}=e;if(!n)throw new Error("Contract address is required");try{const e="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImY4NmY0Yzc2LTA3MDQtNGEwZS04YTA0LWUwODllOGQxMGZjZCIsIm9yZ0lkIjoiMzk0MDAyIiwidXNlcklkIjoiNDA0ODUzIiwidHlwZUlkIjoiYjQyODExOTQtOGQ0Yi00NjkxLTlhZjItNjU4ODE2NzExYmRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MTY4NjQyNTYsImV4cCI6NDg3MjYyNDI1Nn0.V8crfBIBardAnZkc05FD0hQIJBeZxMqvzRnYExVtnF8";return{success:!0,data:(await bo.get(`/api/v2.2/nft/${encodeURIComponent(n)}/metadata`,{query:{chain:t},headers:wo(e)})).data}}catch(o){return{success:!1,error:o instanceof Error?o.message:"Unknown error"}}}({address:l.contract_address,chain:U});if(e?.success&&e?.data){const n=e.data;n.contract_type&&(l={...l,token_standard:n.contract_type}),!l.nft_name&&n.name&&(l={...l,nft_name:n.name})}}catch(a){}if(R?.address)try{const e=await Ao({address:R.address,chain:U,limit:100,exclude_spam:!1});if(e?.success&&e?.data?.result){const n=e.data.result.find(e=>e.token_address.toLowerCase()===l.contract_address.toLowerCase()&&e.token_id===l.token_id);if(n){l={...l,amount:"1",maxAmount:n.amount||"1"};const e=n.normalized_metadata?.image||n.media?.original_media_url||"";c={name:n.normalized_metadata?.name||n.name||l.nft_name||`#${n.token_id}`,image:e||void 0,tokenId:n.token_id,contractAddress:n.token_address,tokenStandard:n.contract_type||l.token_standard||void 0}}}}catch(a){}}if(l.amount&&s?.balanceFormatted&&("send_token"===d.action||"send_native"===d.action)&&(l.amount=Zo(l.amount,s.balanceFormatted)),i){const e=d.message||"Please review and complete the form below.";u(e,"bot",n.id,void 0,{action:d.action,parameters:l,status:"pending",tokenInfo:s,nftInfo:c})}else u(d.message||e,"bot",n.id)}else u(c("sendNftChoose"),"bot",n.id),await z({numberOfView:5});else try{const e=await go({address:R.address,chain:U});if(e?.success&&e?.data?.result&&e.data.result.length>0){u(c("sendTokenChoose"),"bot",n.id),y(!0),await xt(500);const t=e.data.result.map(e=>({id:`send-select-${e.token_address}`,text:`${e.name}: ${e.balance_formatted} ${e.symbol} ($${ho(e?.usd_value||0).decimalPlaces(2).toFixed()||"0"})`,value:`Send ${e.name} (${e.symbol})`,action:"suggested_action",fullWidth:!0}));await xt(500),y(!1),u(l("walletBalanceSpendable",{chain:D?.name||"this chain"}),"bot",void 0,t)}else y(!1),u(l("walletNoTokensFound",{chain:D?.name||"this chain"}),"bot")}catch(a){y(!1),u(c("walletFetchError"),"bot")}else if(d&&"chat"===d.action){const t=d.token_mentions||[],o=d.suggested_actions||[],a=[];t.length>0&&t.forEach(e=>{a.push({id:`buy-${e.symbol}`,text:`💰 Buy ${e.symbol}`,value:l("buttonBuySymbol",{symbol:e.symbol}),action:"click_buy_item_token_button",extraData:{tokenAddress:e.contract_address||"",symbol:e.symbol,decimals:e.decimals||18},fullWidth:!0})}),o.length>0&&o.forEach((e,n)=>{a.push({id:`suggested-${n}-${e.label}`,text:e.label,value:e.prompt,action:"suggested_action",fullWidth:!0})}),a.length>0?u(d.message||e,"bot",n.id,a):u(d.message||e,"bot",n.id)}else u(e,"bot",n.id)}else u(c("errorProcessingRequest"),"bot",n.id)}catch(o){u(c("errorProcessingRequest"),"bot",n.id)}var t;y(!1),await xt(50),Qo.isDesktop&&E.current?.focus()},[w,g,d,u,v,R?.address,D?.name,D?.nativeCurrency?.symbol,D?.tokenTrendingDefault,F,O,U,L,q,Q,z,X,J,H,c,l]);t.useEffect(()=>{x.current&&w===x.current&&(x.current=null,$())},[w,$]);const ee=t.useCallback(async(e,n,t)=>{try{if(k(!1),f(t,"submitted"),"swap_token"===e){let e=18;if(n.token_in&&n.token_in!==Ut)try{const t=await ko.getTokensDetails([n.token_in],O);t?.data?.[0]&&(e=t.data[0].decimals||18)}catch(o){}const a=Ot(n.amount||"0",e).toString(),r=await Co({chainId:F,tokenIn:n.token_in||"",tokenInAmount:a,tokenOut:n.token_out||"",tokenOutRecipient:R?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(r.success&&r.data){const e=r.data,o=e.tokenIn,s=e.tokenOut,d=ho(le(BigInt(o.amount||0),o.decimals)).decimalPlaces(6).toFormat(),h=ho(le(BigInt(s.amount||0),s.decimals)).decimalPlaces(6).toFormat(),m=!n.token_in||n.token_in===Ut;let p=!1;if(!m&&R?.address&&e.tx?.to)try{const t=await Mo({tokenAddress:n.token_in,ownerAddress:R.address,spenderAddress:e.tx.to,chainId:F,rpcUrl:H});p=ho(t.toString()).isLessThan(a)}catch(i){}const w=e.estimatedTransactionFee?.total?ho(e.estimatedTransactionFee.total):ho(0);let b=ho(0);if(p&&R?.address)try{const t=Ho({tokenAddress:n.token_in,spenderAddress:e.tx?.to||"",fromAddress:R.address,chainId:F,amount:a});b=await Yo({from:R.address,to:t.to,data:t.data,chainId:F,rpcUrl:H})}catch(i){}const g=w.plus(b),y=D?.nativeCurrency?.symbol||"native";let A="",k=!1;if(R?.address&&g.isGreaterThan(0))try{const e=await Po({address:R.address,chainId:F,rpcUrl:H});if(e.isLessThan(g)){k=!0;const n=ho(le(BigInt(e.toFixed(0)),18)).decimalPlaces(6).toFormat(),t=ho(le(BigInt(g.toFixed(0)),18)).decimalPlaces(6).toFormat();A=l("swapFeeWarning",{symbol:y,balance:n,needed:t})}}catch(i){}const v=`From: ${d} ${o.symbol}\n⬇️\nTo: ${h} ${s.symbol}\n\n`+A+"\n";if(k)f(t,"pending"),u(v,"bot");else if(p){const i=[{id:"approve-swap-actionform",text:l("swapApproveButton",{symbol:o.symbol}),value:l("swapApproveValue",{symbol:o.symbol}),action:"approve_for_swap",extraData:{tokenAddress:n.token_in,spenderAddress:e.tx.to,tokenSymbol:o.symbol,amountInWei:a,tx:e.tx},fullWidth:!0}];f(t,"success"),u(v+l("swapApprovalRequired",{symbol:o.symbol}),"bot",void 0,i)}else{const n=[{id:"confirm-swap-actionform",text:c("swapConfirmYes"),value:c("swapConfirmValue"),action:"confirm_swap",extraData:{tx:e.tx}}];f(t,"success"),u(v+c("swapReadyToProceed"),"bot",void 0,n)}}else f(t,"pending"),u(l("swapEstimationError",{error:r.errorMessage||r.error||"Unknown error"}),"bot")}else{const o=function(e){const{action:n,parameters:t,fromAddress:o,chainId:a}=e;switch(n){case"send_native":return function(e,n,t){const{to_address:o,amount:a}=e;if(!o)throw new Error("Recipient address is required");if(!a)throw new Error("Amount is required");return{from:n,to:o,data:"0x",value:Ot(a,18).toString(),chainId:t,description:`Send ${a} native token to ${o}`}}(t,o,a);case"send_token":return function(e,n,t){const{contract_address:o,to_address:a,amount:i,decimals:r,token_symbol:s}=e;if(!o)throw new Error("Token contract address is required");if(!a)throw new Error("Recipient address is required");if(!i)throw new Error("Amount is required");const c=Ot(i,parseInt(r)||18);return{from:n,to:o,data:Ct({abi:Ro,functionName:"transfer",args:[a,c]}),value:"0",chainId:t,description:`Send ${i} ${s||"tokens"} to ${a}`}}(t,o,a);case"approve_token":return function(e,n,t){const{contract_address:o,spender_address:a,amount:i,token_symbol:r}=e;if(!o)throw new Error("Token contract address is required");if(!a)throw new Error("Spender address is required");const s=i&&""!==i?.trim()?Ot(i,18):Z;return{from:n,to:o,data:Ct({abi:Ro,functionName:"approve",args:[a,s]}),value:"0",chainId:t,description:`Approve ${i||"unlimited"} ${r||"tokens"} for ${a}`}}(t,o,a);case"wrap_native":return function(e,n,t){const{amount:o}=e;if(!o)throw new Error("Amount is required");const a=Bo[t];if(!a)throw new Error(`WETH not supported on chain ${t}`);const i=Ot(o,18).toString();return{from:n,to:a,data:Ct({abi:Do,functionName:"deposit"}),value:i,chainId:t,description:`Wrap ${o} native token`}}(t,o,a);case"unwrap_native":return function(e,n,t){const{amount:o}=e;if(!o)throw new Error("Amount is required");const a=Bo[t];if(!a)throw new Error(`WETH not supported on chain ${t}`);const i=Ot(o,18);return{from:n,to:a,data:Ct({abi:Do,functionName:"withdraw",args:[i]}),value:"0",chainId:t,description:`Unwrap ${o} WETH`}}(t,o,a);case"send_nft":return function(e,n,t){const{contract_address:o,token_id:a,to_address:i,token_standard:r,amount:s,nft_name:c}=e;if(!o)throw new Error("NFT contract address is required");if(!a)throw new Error("Token ID is required");if(!i)throw new Error("Recipient address is required");const l=(r||"ERC721").toUpperCase(),d=BigInt(a);let u,f;if("ERC1155"===l){const e=BigInt(s||"1");u=Ct({abi:Uo,functionName:"safeTransferFrom",args:[n,i,d,e,"0x"]}),f=`Send ${e>1n?e.toString()+"x ":""}${c||"NFT"} (ERC1155 #${a}) to ${i}`}else u=Ct({abi:Oo,functionName:"safeTransferFrom",args:[n,i,d]}),f=`Send ${c||"NFT"} (ERC721 #${a}) to ${i}`;return{from:n,to:o,data:u,value:"0",chainId:t,description:f}}(t,o,a);default:throw new Error(`Action "${n}" does not produce a transaction`)}}({action:e,parameters:n,fromAddress:R?.address||"",chainId:F||1}),i={from:o.from,to:o.to,data:o.data,value:o.value,chainId:o.chainId};if(("send_token"===e||"send_native"===e||"send_nft"===e)&&R?.address)try{const e=D?.nativeCurrency?.symbol||"native",n=await Yo({from:o.from,to:o.to,data:o.data,value:o.value&&"0"!==o.value?`0x${BigInt(o.value).toString(16)}`:void 0,chainId:F,rpcUrl:H});if(n.isGreaterThan(0)){const o=await Po({address:R.address,chainId:F,rpcUrl:H});if(o.isLessThan(n)){const a=ho(le(BigInt(o.toFixed(0)),18)).decimalPlaces(6).toFormat(),i=ho(le(BigInt(n.toFixed(0)),18)).decimalPlaces(6).toFormat();return f(t,"pending"),void u(l("txInsufficientGas",{symbol:e,balance:a,fee:i}),"bot")}}}catch(r){}const d=m(t);if(a){y(!1);const e=await a(i);if("success"===e.status&&e.transactionHash){const n=D?.blockExplorers?.default?.url,o=n?`\n[View on Explorer](${n}/tx/${e.transactionHash})`:`\nTx: ${e.transactionHash}`;try{await xt(2e3),"success"===(await Lo({transactionHash:e.transactionHash,chainId:F||1,rpcUrl:H})).status?(f(t,"success"),h(t,d?.text+"\n"+o)):(f(t,"pending"),u(c("txReverted")+"\n"+o,"bot"))}catch(s){f(t,"success"),u(c("txTimeout")+"\n"+o,"bot")}}else if("success"===e.status)f(t,"success");else{f(t,"pending");const n=e.error?`\nError: ${e.error}`:"";u(c("txFailed")+n,"bot")}}else f(t,"pending"),u(c("txNoHandler"),"bot")}}catch(d){f(t,"pending"),u(l("txError",{message:d instanceof Error?d.message:"Unknown error"}),"bot")}},[f,F,R?.address,O,D?.nativeCurrency?.symbol,D?.blockExplorers?.default?.url,H,l,u,c,m,a,h]),ne=t.useCallback(e=>{p([e])},[p]),[te,oe]=t.useState({}),ae=t.useCallback(async(e,n,t)=>{oe(e=>({...e,[t]:!0}));try{await ee(e,n,t)}finally{oe(e=>({...e,[t]:!1}))}},[ee]),ie=t.useCallback(e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),$())},[$]),re=t.useCallback(()=>{const e=window.getSelection();e&&e.toString().length>0||o()},[o]);return e?n.jsx("div",{className:"chat-modal-overlay"+("bottom-left"===i?" chat-modal-overlay--left":""),onClick:re,role:"dialog","aria-modal":"true","aria-labelledby":"chat-modal-title",children:n.jsxs("div",{className:"chat-modal",style:r,onClick:e=>e.stopPropagation(),children:[n.jsxs("div",{className:"chat-modal-header",children:[n.jsxs("div",{className:"chat-modal-header-left",children:[n.jsx("div",{className:"keyring-logo",children:n.jsx("img",{src:"data:image/png;base64,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",alt:"Keyring Logo",width:40,height:40})}),n.jsx("h3",{id:"chat-modal-title",children:c("chatTitle")})]}),n.jsx("button",{className:"close-button",onClick:o,"aria-label":c("closeChat"),type:"button",children:n.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:n.jsx("path",{d:"M15 5L5 15M5 5L15 15",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})})]}),n.jsx(Ht,{address:R?.address,chainId:D?.chainId}),n.jsxs("div",{className:"chat-modal-messages-wrapper",children:[n.jsxs("div",{className:"chat-modal-messages",ref:I,role:"log","aria-live":"polite",children:[d.map((e,t)=>n.jsxs("div",{children:[_(t)&&n.jsx("div",{className:"date-separator",children:Et(e.timestamp)}),n.jsxs("div",{className:"message "+("user"===e.sender?"message-user":"message-bot"),role:"article",children:[n.jsx("button",{disabled:Qo.isMobile,className:"message-reply-button",onClick:()=>V(e),"aria-label":c("replyToMessage"),type:"button",children:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:n.jsx("path",{d:"M3.5 8.5L1 6L3.5 3.5M1.5 6H10C12.2091 6 14 7.79086 14 10V13",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),n.jsxs("div",{className:"message-bubble",children:[e.replyTo&&n.jsxs("div",{className:"message-reply-to",children:[n.jsxs("div",{className:"message-reply-to-label",children:[c("replyingTo")," ","user"===e.replyTo.sender?c("replyingToYou"):c("replyingToAgent")]}),n.jsx("div",{className:"message-reply-to-text",children:e.replyTo.text})]}),n.jsx("div",{className:"message-text",children:n.jsx(Io,{content:e.text})}),e.buttons&&e.buttons.length>0&&n.jsx("div",{className:"message-buttons",children:e.buttons.map(e=>n.jsx("button",{className:`message-button ${e.fullWidth?"full-width":""} ${"suggested_action"===e.action?"suggested-action":""}`,onClick:()=>G(e.value,e.action,e?.extraData),type:"button",children:e.text},e.id))}),e.actionData&&"pending"===e.actionData.status&&n.jsx(No,{action:e.actionData.action,initialValues:e.actionData.parameters,onSubmit:(n,t)=>{ae(n,t,e.id),setTimeout(()=>{T.current?.scrollIntoView({behavior:"smooth"})},100)},onCancel:()=>ne(e.id),isSubmitting:te[e.id]||!1,tokenInfo:e.actionData.tokenInfo,nftInfo:e.actionData.nftInfo}),e.actionData&&"submitted"===e.actionData.status&&n.jsx("div",{className:"action-status action-status-submitted",children:c("txProcessing")}),e.actionData&&"success"===e.actionData.status&&n.jsx("div",{className:"action-status action-status-success",children:c("actionSuccess")}),e.actionData&&"fail"===e.actionData.status&&n.jsx("div",{className:"action-status action-status-fail",children:c("actionFail")}),n.jsxs("div",{className:"message-timestamp",children:[e.timestamp.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),"user"===e.sender&&n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:"check-icon",children:n.jsx("path",{d:"M13.3333 4L6 11.3333L2.66667 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]})]})]})]},e.id)),g&&n.jsx("div",{className:"message message-bot typing-indicator",role:"status","aria-label":c("botIsTyping"),children:n.jsxs("div",{className:"message-bubble",children:[n.jsx("span",{className:"typing-dot"}),n.jsx("span",{className:"typing-dot"}),n.jsx("span",{className:"typing-dot"})]})}),(A||1===d.length)&&n.jsxs(n.Fragment,{children:[d.length>1&&n.jsx("div",{className:"message message-bot",role:"article",children:n.jsx("div",{className:"message-bubble",children:n.jsx("div",{className:"message-text",children:c("canIHelpYou")})})}),n.jsx("div",{className:"suggestions-container",children:K.map(e=>n.jsxs("button",{className:"suggestion-button",onClick:e.action,type:"button",children:[n.jsx("span",{className:"suggestion-icon",children:e.icon}),n.jsx("span",{className:"suggestion-text",children:e.text})]},e.id))})]}),n.jsx("div",{ref:T})]}),n.jsx(So,{scrollContainerRef:I})]}),n.jsxs("div",{className:"chat-modal-input",children:[v&&n.jsxs("div",{className:"reply-preview",children:[n.jsxs("div",{className:"reply-preview-content",children:[n.jsxs("div",{className:"reply-preview-label",children:[c("replyingTo")," ","user"===v.sender?c("replyingToYou"):c("replyingToAgent")]}),n.jsx("div",{className:"reply-preview-text",children:v.text})]}),n.jsx("button",{className:"reply-preview-close",onClick:()=>C(null),"aria-label":c("cancelReply"),type:"button",children:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:n.jsx("path",{d:"M12 4L4 12M4 4L12 12",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]}),n.jsxs("div",{className:"chat-modal-input-row",children:[n.jsx("input",{ref:E,type:"text",placeholder:c("messagePlaceholder"),value:w,onChange:e=>b(e.target.value),onKeyPress:ie,disabled:g,"aria-label":"Message input"}),n.jsx("button",{className:"send-button",onClick:$,"aria-label":c("sendMessage"),disabled:g||""===w?.trim(),type:"button",children:n.jsx("img",{src:"data:image/svg+xml,%3csvg%20width='36'%20height='36'%20viewBox='0%200%2036%2036'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3crect%20width='36'%20height='36'%20rx='18'%20fill='%232358B2'/%3e%3cmask%20id='mask0_1924_16177'%20style='mask-type:alpha'%20maskUnits='userSpaceOnUse'%20x='11'%20y='10'%20width='17'%20height='16'%3e%3crect%20x='11.334'%20y='10'%20width='16'%20height='16'%20fill='url(%23pattern0_1924_16177)'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1924_16177)'%3e%3crect%20x='11.334'%20y='10'%20width='16'%20height='16'%20fill='white'/%3e%3c/g%3e%3cdefs%3e%3cpattern%20id='pattern0_1924_16177'%20patternContentUnits='objectBoundingBox'%20width='1'%20height='1'%3e%3cuse%20xlink:href='%23image0_1924_16177'%20transform='scale(0.00195312)'/%3e%3c/pattern%3e%3cimage%20id='image0_1924_16177'%20width='512'%20height='512'%20preserveAspectRatio='none'%20xlink:href='data:image/png;base64,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'/%3e%3c/defs%3e%3c/svg%3e",alt:"Send",width:44,height:44})})]})]})]})}):null},_o=({position:e,theme:o,defaultOpen:a,onOpen:i,onClose:r,onTransaction:s})=>{const{account:l,chainId:d}=Lt(),[u,f]=t.useState(a);t.useEffect(()=>{a&&i&&i()},[]),t.useEffect(()=>{if("undefined"==typeof window)return;const e=document.body,n=document.documentElement,t=e.style.overscrollBehavior,o=n.style.overscrollBehavior,a=e.style.overflow;return u&&(e.style.overscrollBehavior="none",n.style.overscrollBehavior="none",e.style.overflow="hidden"),()=>{e.style.overscrollBehavior=t,n.style.overscrollBehavior=o,e.style.overflow=a}},[u]);const h=t.useCallback(()=>{f(!0),i?.()},[i]),m=t.useCallback(()=>{f(!1),r?.()},[r]),p=t.useCallback(()=>{u?m():h()},[u,h,m]),w={position:"fixed",["bottom-right"===e?"right":"left"]:o.offset?.x??20,bottom:o.offset?.y??20,zIndex:o.zIndex??9999};return Sn(l?.address||"")&&d?n.jsxs("div",{style:w,role:"complementary","aria-label":"Chat widget",children:[n.jsx(c,{buttonSize:o.buttonSize,onClick:p}),n.jsx(Ko,{isOpen:u,onClose:m,onTransaction:s,position:e,modalChatStyle:o.modalChatStyle})]}):n.jsx(n.Fragment,{})};e.ChatWidget=({position:e="bottom-right",theme:t={},defaultOpen:o=!1,onOpen:a,onClose:i,account:s,onTransaction:c,language:l="en",rpcUrls:d})=>{const u={position:e,theme:t,rpcUrls:d};return"undefined"==typeof window?null:n.jsx(Qt,{initialConfig:u,children:n.jsx(Mt,{initialAccount:s,children:n.jsx(r,{initialLanguage:l,children:n.jsx(_o,{position:e,theme:t,defaultOpen:o,onOpen:a,onClose:i,onTransaction:c})})})})},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|