keyring-chatbot-agent-sdk-test 0.0.33 → 0.0.34
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.es.js +2997 -2911
- package/dist/chat-widget.umd.js +90 -86
- package/dist/lib.d.ts +4 -0
- package/package.json +1 -1
package/dist/chat-widget.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
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:16px 20px;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:20px;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:14px 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-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;margin-bottom:6px;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:10px 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:12px 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{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:12px 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:16px 20px;background:#fff;border-top:1px solid #e5e5e7;display:flex;flex-direction:column;gap:12px;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}.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:#6c5ce7;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:#6c5ce7;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:#6c5ce7;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:#6c5ce7;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:#6c5ce7;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}.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(
|
|
2
|
+
(function(gt,F){typeof exports=="object"&&typeof module<"u"?F(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],F):(gt=typeof globalThis<"u"?globalThis:gt||self,F(gt.ChatWidgetSDK={},gt.jsxRuntime,gt.React))})(this,(function(gt,F,oe){"use strict";const Vs="data:image/png;base64,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",po={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. Available: {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
3
|
|
|
4
4
|
Available: {balance} {symbol}`,swapFeeWarning:`
|
|
5
5
|
⚠️ **Insufficient {symbol} for fees!**
|
|
@@ -11,20 +11,20 @@ Select the amount of {from} to swap:
|
|
|
11
11
|
Available: {balance} {from}`,swapApprovalRequired:`⚠️ Token approval required before swapping.
|
|
12
12
|
|
|
13
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
|
|
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
15
|
|
|
16
|
-
Available: {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:",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})
|
|
16
|
+
Available: {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
17
|
|
|
18
|
-
Please review and fill in the recipient address below:`,nftCollectionHeader
|
|
18
|
+
Please review and fill in the recipient address below:`,nftCollectionHeader:`Your NFTs ({count} items):
|
|
19
19
|
|
|
20
20
|
{list}
|
|
21
21
|
|
|
22
|
-
Select an NFT to send:`,nftNoCollection:"
|
|
23
|
-
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:"
|
|
22
|
+
Select an NFT to send:`,nftNoCollection:"You don't have any NFTs in your wallet on this chain.",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:`
|
|
23
|
+
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}:
|
|
24
24
|
|
|
25
25
|
{list}
|
|
26
26
|
|
|
27
|
-
Select a token to interact with:`,viewBalancesEmpty:"
|
|
27
|
+
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:"},ja:{chatTitle:"Keyringエージェント",closeChat:"チャットを閉じる",messagePlaceholder:"メッセージ....",sendMessage:"メッセージを送信",botIsTyping:"ボットが入力中",canIHelpYou:"何かお手伝いできますか?",replyToMessage:"メッセージに返信",replyingTo:"返信先:",replyingToYou:"あなた",replyingToAgent:"Keyringエージェント",cancelReply:"返信をキャンセル",suggestionAskText:"質問する",suggestionAskUserMessage:"質問があります",suggestionAskBotReply:"何でも聞いてください",suggestionBuyText:"トレンドトークンを購入",walletConnectedChainUnsupported:"ウォレットは接続されていますが、このチェーンは取引に対応していません。対応チェーンに切り替えてトレンドトークンを確認してください。",walletNotConnected:"トレンドトークンを確認するにはウォレットを接続してください。",actionProcessing:"⏳ トランザクション処理中...",actionSuccess:"✅ トランザクション完了",actionFail:"❌ アクションがキャンセルまたは失敗しました",txSubmitted:"⏳ トランザクションを送信しました。確認をお待ちください...",txConfirmed:"✅ トランザクションが確認されました!",txReverted:"❌ トランザクションはオンチェーンでリバートされました。",txTimeout:"⚠️ トランザクションは送信されましたが、確認がタイムアウトしました。手動で確認してください。",txSuccessful:"✅ トランザクションが成功しました!",txFailed:"トランザクションが失敗しました。もう一度お試しください。",txNoHandler:"⚠️ トランザクションハンドラが設定されていません。",txInsufficientGas:"⚠️ **ガス代の{symbol}が不足しています!** {symbol}の残高は{balance}ですが、取引手数料として約{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}の量を選択:
|
|
28
28
|
|
|
29
29
|
利用可能: {balance} {symbol}`,swapFeeWarning:`
|
|
30
30
|
⚠️ **手数料の{symbol}が不足しています!**
|
|
@@ -36,20 +36,20 @@ Select a token to interact with:`,viewBalancesEmpty:"💰 You don't have any tok
|
|
|
36
36
|
利用可能: {balance} {from}`,swapApprovalRequired:`⚠️ スワップ前にトークンの承認が必要です。
|
|
37
37
|
|
|
38
38
|
ステップ1: {symbol}を承認
|
|
39
|
-
ステップ2: スワップを確認`,swapEstimationFailed:"⚠️ スワップの見積もりを取得できませんでした。もう一度お試しください。",swapInsufficientNativeBalance:"⚠️ 残高不足!{symbol}の残高は{balance}ですが、{amount}が必要です。ウォレットをチャージするか、金額を減らしてください。",swapTokenNotInWallet:"⚠️ ウォレットに{symbol}がありません。スワップ前に取得してください。",swapInsufficientTokenBalance:"⚠️ 残高不足!{balance} {symbol}しかありませんが、{amount}が必要です。金額を減らすかトークンを追加してください。",selectAmountToSwap
|
|
39
|
+
ステップ2: スワップを確認`,swapEstimationFailed:"⚠️ スワップの見積もりを取得できませんでした。もう一度お試しください。",swapInsufficientNativeBalance:"⚠️ 残高不足!{symbol}の残高は{balance}ですが、{amount}が必要です。ウォレットをチャージするか、金額を減らしてください。",swapTokenNotInWallet:"⚠️ ウォレットに{symbol}がありません。スワップ前に取得してください。",swapInsufficientTokenBalance:"⚠️ 残高不足!{balance} {symbol}しかありませんが、{amount}が必要です。金額を減らすかトークンを追加してください。",selectAmountToSwap:`スワップする{symbol}の量を選択:
|
|
40
40
|
|
|
41
41
|
利用可能: {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})
|
|
42
42
|
|
|
43
|
-
受取人のアドレスを確認・入力してください:`,nftCollectionHeader
|
|
43
|
+
受取人のアドレスを確認・入力してください:`,nftCollectionHeader:`あなたのNFTコレクション({count}件):
|
|
44
44
|
|
|
45
45
|
{list}
|
|
46
46
|
|
|
47
|
-
送信するNFTを選択:`,nftNoCollection:"
|
|
48
|
-
購入したいトークンはありますか?`,trendingTokensError:"トレンドトークンの取得中にエラーが発生しました。",errorProcessingRequest:"リクエストの処理中にエラーが発生しました。",buttonBuyWith:"{symbol}で購入",buttonUsePercent:"{symbol}の{percent}%を使用",buttonBuyToken:"{name}({symbol})を購入",buttonSendNft:"{name}を送信",buttonSwapTo:"{name}({symbol})にスワップ",buttonBuySymbol:"{symbol}を購入",viewBalancesLoading:"
|
|
47
|
+
送信するNFTを選択:`,nftNoCollection:"このチェーンのウォレットにNFTがありません。",nftNotFoundInWallet:"ウォレットに「{name}」が見つかりませんでした。以下はあなたのNFTです:",nftFetchError:"NFTの取得中にエラーが発生しました。",trendingTokensHeader:"📈 {chain}チェーンで現在上昇トレンドのトークン一覧です",trendingTokensQuestion:`
|
|
48
|
+
購入したいトークンはありますか?`,trendingTokensError:"トレンドトークンの取得中にエラーが発生しました。",errorProcessingRequest:"リクエストの処理中にエラーが発生しました。",buttonBuyWith:"{symbol}で購入",buttonUsePercent:"{symbol}の{percent}%を使用",buttonBuyToken:"{name}({symbol})を購入",buttonSendNft:"{name}を送信",buttonSwapTo:"{name}({symbol})にスワップ",buttonBuySymbol:"{symbol}を購入",viewBalancesLoading:"ウォレット残高を取得中...",viewBalancesHeader:`{chain}のトークン残高:
|
|
49
49
|
|
|
50
50
|
{list}
|
|
51
51
|
|
|
52
|
-
インタラクトするトークンを選択:`,viewBalancesEmpty:"
|
|
52
|
+
インタラクトするトークンを選択:`,viewBalancesEmpty:"このチェーンのウォレットにトークンがありません。",viewBalancesFetchError:"残高の取得中にエラーが発生しました。",buttonSendToken:"{symbol}を送る",buttonSwapToken:"{symbol}をスワップ",buttonBuyMoreToken:"{symbol}をもっと買う",actionSendNativeLabel:"ネイティブトークンを送る",actionSendNativeDesc:"ネイティブトークン(ETH、BNB、MATICなど)をアドレスに送る",actionSendTokenLabel:"トークンを送る(ERC20)",actionSendTokenDesc:"ERC20トークンをアドレスに送る",actionSwapTokenLabel:"トークンをスワップ",actionSwapTokenDesc:"あるトークンを別のトークンに交換する",actionApproveTokenLabel:"トークンを承認",actionApproveTokenDesc:"指定したアドレスがトークンを使用することを承認する",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:"承認先アドレス",fieldAmountUnlimited:"数量(空欄 = 無制限)",fieldNftContract:"NFTコントラクト",fieldTokenId:"Token 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:"どのトークンをスワップしますか?現在の残高はこちらです:"},cn:{chatTitle:"Keyring 助手",closeChat:"关闭聊天",messagePlaceholder:"消息....",sendMessage:"发送消息",botIsTyping:"机器人正在输入",canIHelpYou:"有什么可以帮您的吗?",replyToMessage:"回复消息",replyingTo:"回复",replyingToYou:"你",replyingToAgent:"Keyring 助手",cancelReply:"取消回复",suggestionAskText:"提问",suggestionAskUserMessage:"我有一个问题",suggestionAskBotReply:"请随时提问",suggestionBuyText:"购买热门代币",walletConnectedChainUnsupported:"您的钱包已连接,但该链不支持交易。请切换到受支持的链以查看热门代币。",walletNotConnected:"请连接钱包以查看热门代币。",actionProcessing:"⏳ 交易处理中...",actionSuccess:"✅ 交易完成",actionFail:"❌ 操作已取消或失败",txSubmitted:"⏳ 交易已提交,等待确认...",txConfirmed:"✅ 交易已确认!",txReverted:"❌ 交易在链上已回滚。",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} 数量:
|
|
53
53
|
|
|
54
54
|
可用: {balance} {symbol}`,swapFeeWarning:`
|
|
55
55
|
⚠️ **{symbol}不足以支付手续费!**
|
|
@@ -61,48 +61,48 @@ Select a token to interact with:`,viewBalancesEmpty:"💰 You don't have any tok
|
|
|
61
61
|
可用: {balance} {from}`,swapApprovalRequired:`⚠️ 兑换前需要代币授权。
|
|
62
62
|
|
|
63
63
|
第1步:授权 {symbol}
|
|
64
|
-
第2步:确认兑换`,swapEstimationFailed:"⚠️ 获取兑换估算失败,请重试。",swapInsufficientNativeBalance:"⚠️ 余额不足!您有 {balance} {symbol},但需要 {amount}。请充值钱包或减少金额。",swapTokenNotInWallet:"⚠️ 您的钱包中没有 {symbol}。请先获取一些再进行兑换。",swapInsufficientTokenBalance:"⚠️ 余额不足!您有 {balance} {symbol},但需要 {amount}。请减少金额或添加更多代币。",selectAmountToSwap
|
|
64
|
+
第2步:确认兑换`,swapEstimationFailed:"⚠️ 获取兑换估算失败,请重试。",swapInsufficientNativeBalance:"⚠️ 余额不足!您有 {balance} {symbol},但需要 {amount}。请充值钱包或减少金额。",swapTokenNotInWallet:"⚠️ 您的钱包中没有 {symbol}。请先获取一些再进行兑换。",swapInsufficientTokenBalance:"⚠️ 余额不足!您有 {balance} {symbol},但需要 {amount}。请减少金额或添加更多代币。",selectAmountToSwap:`选择要兑换的 {symbol} 数量:
|
|
65
65
|
|
|
66
66
|
可用: {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})
|
|
67
67
|
|
|
68
|
-
请检查并填写收件人地址:`,nftCollectionHeader
|
|
68
|
+
请检查并填写收件人地址:`,nftCollectionHeader:`您的NFT收藏({count}件):
|
|
69
69
|
|
|
70
70
|
{list}
|
|
71
71
|
|
|
72
|
-
选择要发送的NFT:`,nftNoCollection:"
|
|
73
|
-
您想购买哪个代币?`,trendingTokensError:"获取热门代币时遇到错误。",errorProcessingRequest:"处理您的请求时遇到错误。",buttonBuyWith:"用{symbol}购买",buttonUsePercent:"使用{symbol}的{percent}%",buttonBuyToken:"购买{name}({symbol})",buttonSendNft:"发送{name}",buttonSwapTo:"兑换至{name}({symbol})",buttonBuySymbol:"购买{symbol}",viewBalancesLoading:"
|
|
72
|
+
选择要发送的NFT:`,nftNoCollection:"您在此链的钱包中没有NFT。",nftNotFoundInWallet:'在您的NFT收藏中未找到"{name}"。以下是您的NFT:',nftFetchError:"获取NFT时遇到错误。",trendingTokensHeader:"📈 以下是{chain}链上目前上涨趋势的代币列表",trendingTokensQuestion:`
|
|
73
|
+
您想购买哪个代币?`,trendingTokensError:"获取热门代币时遇到错误。",errorProcessingRequest:"处理您的请求时遇到错误。",buttonBuyWith:"用{symbol}购买",buttonUsePercent:"使用{symbol}的{percent}%",buttonBuyToken:"购买{name}({symbol})",buttonSendNft:"发送{name}",buttonSwapTo:"兑换至{name}({symbol})",buttonBuySymbol:"购买{symbol}",viewBalancesLoading:"正在获取钱包余额...",viewBalancesHeader:`您在{chain}的代币余额:
|
|
74
74
|
|
|
75
75
|
{list}
|
|
76
76
|
|
|
77
|
-
选择要操作的代币:`,viewBalancesEmpty:"
|
|
78
|
-
`);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=o,this.docsPath=s,this.metaMessages=n.metaMessages,this.name=n.name??this.name,this.shortMessage=t,this.version=go}walk(t){return wo(this,t)}}function wo(e,t){return t?.(e)?e:e&&typeof e=="object"&&"cause"in e&&e.cause!==void 0?wo(e.cause,t):t?null:e}class Cn extends ue{constructor({max:t,min:n,signed:o,size:s,value:a}){super(`Number "${a}" is not in safe ${s?`${s*8}-bit ${o?"signed":"unsigned"} `:""}integer range ${t?`(${n} to ${t})`:`(above ${n})`}`,{name:"IntegerOutOfRangeError"})}}class zs extends ue{constructor({givenSize:t,maxSize:n}){super(`Size cannot exceed ${n} bytes. Given size: ${t} bytes.`,{name:"SizeOverflowError"})}}function Dt(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 Dt(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}function cn(e,{dir:t="left"}={}){let n=typeof e=="string"?e.replace("0x",""):e,o=0;for(let s=0;s<n.length-1&&n[t==="left"?s:n.length-s-1].toString()==="0";s++)o++;return n=t==="left"?n.slice(o):n.slice(0,n.length-o),typeof e=="string"?(n.length===1&&t==="right"&&(n=`${n}0`),`0x${n.length%2===1?`0${n}`:n}`):n}class bo extends ue{constructor({offset:t,position:n,size:o}){super(`Slice ${n==="start"?"starting":"ending"} at offset "${t}" is out-of-bounds (size: ${o}).`,{name:"SliceOffsetOutOfBoundsError"})}}class yo extends ue{constructor({size:t,targetSize:n,type:o}){super(`${o.charAt(0).toUpperCase()}${o.slice(1).toLowerCase()} size (${t}) exceeds padding size (${n}).`,{name:"SizeExceedsPaddingSizeError"})}}function Ot(e,{dir:t,size:n=32}={}){return typeof e=="string"?bt(e,{dir:t,size:n}):js(e,{dir:t,size:n})}function bt(e,{dir:t,size:n=32}={}){if(n===null)return e;const o=e.replace("0x","");if(o.length>n*2)throw new yo({size:Math.ceil(o.length/2),targetSize:n,type:"hex"});return`0x${o[t==="right"?"padEnd":"padStart"](n*2,"0")}`}function js(e,{dir:t,size:n=32}={}){if(n===null)return e;if(e.length>n)throw new yo({size:e.length,targetSize:n,type:"bytes"});const o=new Uint8Array(n);for(let s=0;s<n;s++){const a=t==="right";o[a?s:n-s-1]=e[a?s:e.length-s-1]}return o}const qs=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function Ut(e,t={}){return typeof e=="number"||typeof e=="bigint"?le(e,t):typeof e=="string"?vo(e,t):typeof e=="boolean"?Ao(e,t):ft(e,t)}function Ao(e,t={}){const n=`0x${Number(e)}`;return typeof t.size=="number"?(Rt(n,{size:t.size}),Ot(n,{size:t.size})):n}function ft(e,t={}){let n="";for(let s=0;s<e.length;s++)n+=qs[e[s]];const o=`0x${n}`;return typeof t.size=="number"?(Rt(o,{size:t.size}),Ot(o,{dir:"right",size:t.size})):o}function le(e,t={}){const{signed:n,size:o}=t,s=BigInt(e);let a;o?n?a=(1n<<BigInt(o)*8n-1n)-1n:a=2n**(BigInt(o)*8n)-1n:typeof e=="number"&&(a=BigInt(Number.MAX_SAFE_INTEGER));const r=typeof a=="bigint"&&n?-a-1n:0;if(a&&s>a||s<r){const d=typeof e=="bigint"?"n":"";throw new Cn({max:a?`${a}${d}`:void 0,min:`${r}${d}`,signed:n,size:o,value:`${e}${d}`})}const i=`0x${(n&&s<0?(1n<<BigInt(o*8))+BigInt(s):s).toString(16)}`;return o?Ot(i,{size:o}):i}const Qs=new TextEncoder;function vo(e,t={}){const n=Qs.encode(e);return ft(n,t)}const Xs=new TextEncoder;function Bn(e,t={}){return typeof e=="number"||typeof e=="bigint"?Zs(e,t):typeof e=="boolean"?Ks(e,t):Dt(e)?Et(e,t):To(e,t)}function Ks(e,t={}){const n=new Uint8Array(1);return n[0]=Number(e),typeof t.size=="number"?(Rt(n,{size:t.size}),Ot(n,{size:t.size})):n}const pt={zero:48,nine:57,A:65,F:70,a:97,f:102};function ko(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 Et(e,t={}){let n=e;t.size&&(Rt(n,{size:t.size}),n=Ot(n,{dir:"right",size:t.size}));let o=n.slice(2);o.length%2&&(o=`0${o}`);const s=o.length/2,a=new Uint8Array(s);for(let r=0,i=0;r<s;r++){const d=ko(o.charCodeAt(i++)),T=ko(o.charCodeAt(i++));if(d===void 0||T===void 0)throw new ue(`Invalid byte sequence ("${o[i-2]}${o[i-1]}" in "${o}").`);a[r]=d*16+T}return a}function Zs(e,t){const n=le(e,t);return Et(n)}function To(e,t={}){const n=Xs.encode(e);return typeof t.size=="number"?(Rt(n,{size:t.size}),Ot(n,{dir:"right",size:t.size})):n}function Rt(e,{size:t}){if(Je(e)>t)throw new zs({givenSize:Je(e),maxSize:t})}function Mt(e,t={}){const{signed:n}=t;t.size&&Rt(e,{size:t.size});const o=BigInt(e);if(!n)return o;const s=(e.length-2)/2,a=(1n<<BigInt(s)*8n-1n)-1n;return o<=a?o:o-BigInt(`0x${"f".padStart(s*2,"f")}`)-1n}function ln(e,t={}){const n=Mt(e,t),o=Number(n);if(!Number.isSafeInteger(o))throw new Cn({max:`${Number.MAX_SAFE_INTEGER}`,min:`${Number.MIN_SAFE_INTEGER}`,signed:t.signed,size:t.size,value:`${n}n`});return o}function Nn(e,t){return({exclude:n,format:o})=>({exclude:n,format:(s,a)=>{const r=t(s,a);if(n)for(const i of n)delete r[i];return{...r,...o(s,a)}},type:e})}const Eo={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function Fn(e,t){const n={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?ln(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?ln(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?Eo[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=$s(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=Nn("transaction",Fn);function $s(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 ea(e,t){const n=(e.transactions??[]).map(o=>typeof o=="string"?o:Fn(o));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 ta=Nn("block",ea);function na(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 oa={"0x0":"reverted","0x1":"success"};function sa(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(o=>na(o)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?ln(e.transactionIndex):null,status:e.status?oa[e.status]:null,type:e.type?Eo[e.type]||e.type:null};return e.blobGasPrice&&(n.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(n.blobGasUsed=BigInt(e.blobGasUsed)),n}const aa=Nn("transactionReceipt",sa),ra={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function ia(e,t){const n={};return typeof e.authorizationList<"u"&&(n.authorizationList=ca(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(o=>ft(o)):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=le(e.gas)),typeof e.gasPrice<"u"&&(n.gasPrice=le(e.gasPrice)),typeof e.maxFeePerBlobGas<"u"&&(n.maxFeePerBlobGas=le(e.maxFeePerBlobGas)),typeof e.maxFeePerGas<"u"&&(n.maxFeePerGas=le(e.maxFeePerGas)),typeof e.maxPriorityFeePerGas<"u"&&(n.maxPriorityFeePerGas=le(e.maxPriorityFeePerGas)),typeof e.nonce<"u"&&(n.nonce=le(e.nonce)),typeof e.to<"u"&&(n.to=e.to),typeof e.type<"u"&&(n.type=ra[e.type]),typeof e.value<"u"&&(n.value=le(e.value)),n}function ca(e){return e.map(t=>({address:t.address,r:t.r?le(BigInt(t.r)):t.r,s:t.s?le(BigInt(t.s)):t.s,chainId:le(t.chainId),nonce:le(t.nonce),...typeof t.yParity<"u"?{yParity:le(t.yParity)}:{},...typeof t.v<"u"&&typeof t.yParity>"u"?{v:le(t.v)}:{}}))}const Lt=2n**256n-1n;function Ht(e){return typeof e[0]=="string"?St(e):la(e)}function la(e){let t=0;for(const s of e)t+=s.length;const n=new Uint8Array(t);let o=0;for(const s of e)n.set(s,o),o+=s.length;return n}function St(e){return`0x${e.reduce((t,n)=>t+n.replace("0x",""),"")}`}class So extends ue{constructor({offset:t}){super(`Offset \`${t}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class da extends ue{constructor({length:t,position:n}){super(`Position \`${n}\` is out of bounds (\`0 < position < ${t}\`).`,{name:"PositionOutOfBoundsError"})}}class ua extends ue{constructor({count:t,limit:n}){super(`Recursive read limit of \`${n}\` exceeded (recursive read count: \`${t}\`).`,{name:"RecursiveReadLimitExceededError"})}}const fa={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 ua({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new da({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new So({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 So({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 xo(e,{recursiveReadLimit:t=8192}={}){const n=Object.create(fa);return n.bytes=e,n.dataView=new DataView(e.buffer??e,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}function xt(e,t="hex"){const n=Io(e),o=xo(new Uint8Array(n.length));return n.encode(o),t==="hex"?ft(o.bytes):o.bytes}function Io(e){return Array.isArray(e)?pa(e.map(t=>Io(t))):ma(e)}function pa(e){const t=e.reduce((s,a)=>s+a.length,0),n=Co(t);return{length:t<=55?1+t:1+n+t,encode(s){t<=55?s.pushByte(192+t):(s.pushByte(247+n),n===1?s.pushUint8(t):n===2?s.pushUint16(t):n===3?s.pushUint24(t):s.pushUint32(t));for(const{encode:a}of e)a(s)}}}function ma(e){const t=typeof e=="string"?Et(e):e,n=Co(t.length);return{length:t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length,encode(s){t.length===1&&t[0]<128?s.pushBytes(t):t.length<=55?(s.pushByte(128+t.length),s.pushBytes(t)):(s.pushByte(183+n),n===1?s.pushUint8(t.length):n===2?s.pushUint16(t.length):n===3?s.pushUint24(t.length):s.pushUint32(t.length),s.pushBytes(t))}}}function Co(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 ue("Length is too large.")}const ha={gwei:9,wei:18},ga={ether:-9,wei:9};function Ue(e,t){let n=e.toString();const o=n.startsWith("-");o&&(n=n.slice(1)),n=n.padStart(t,"0");let[s,a]=[n.slice(0,n.length-t),n.slice(n.length-t)];return a=a.replace(/(0+)$/,""),`${o?"-":""}${s||"0"}${a?`.${a}`:""}`}function wa(e,t="wei"){return Ue(e,ha[t])}function It(e,t="wei"){return Ue(e,ga[t])}function Bo(e){const t=Object.entries(e).map(([o,s])=>s===void 0||s===!1?null:[o,s]).filter(Boolean),n=t.reduce((o,[s])=>Math.max(o,s.length),0);return t.map(([o,s])=>` ${`${o}:`.padEnd(n+1)} ${s}`).join(`
|
|
79
|
-
`)}class ba extends ue{constructor({v:t}){super(`Invalid \`v\` value "${t}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class ya extends ue{constructor({transaction:t}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",Bo(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 Aa extends ue{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 va(e){if(!e||e.length===0)return[];const t=[];for(const n of e){const{chainId:o,nonce:s,...a}=n,r=n.address;t.push([o?Ut(o):"0x",r,s?Ut(s):"0x",...Xt({},a)])}return t}function No(e){const{kzg:t}=e,n=e.to??(typeof e.blobs[0]=="string"?"hex":"bytes"),o=typeof e.blobs[0]=="string"?e.blobs.map(a=>Et(a)):e.blobs,s=[];for(const a of o)s.push(Uint8Array.from(t.blobToKzgCommitment(a)));return n==="bytes"?s:s.map(a=>ft(a))}function Fo(e){const{kzg:t}=e,n=e.to??(typeof e.blobs[0]=="string"?"hex":"bytes"),o=typeof e.blobs[0]=="string"?e.blobs.map(r=>Et(r)):e.blobs,s=typeof e.commitments[0]=="string"?e.commitments.map(r=>Et(r)):e.commitments,a=[];for(let r=0;r<o.length;r++){const i=o[r],d=s[r];a.push(Uint8Array.from(t.computeBlobKzgProof(i,d)))}return n==="bytes"?a:a.map(r=>ft(r))}function ka(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Po(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 dn(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 Do(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 Ta(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 Pn(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function it(e,t){return e<<32-t|e>>>t}const Ea=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Sa(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function xa(e){for(let t=0;t<e.length;t++)e[t]=Sa(e[t]);return e}const Oo=Ea?e=>e:xa;function Ia(e){if(typeof e!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(e))}function Dn(e){return typeof e=="string"&&(e=Ia(e)),zt(e),e}class Uo{}function Ro(e){const t=o=>e().update(Dn(o)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function Ca(e,t,n,o){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,o);const s=BigInt(32),a=BigInt(4294967295),r=Number(n>>s&a),i=Number(n&a),d=o?4:0,T=o?0:4;e.setUint32(t+d,r,o),e.setUint32(t+T,i,o)}function Ba(e,t,n){return e&t^~e&n}function Na(e,t,n){return e&t^e&n^t&n}class Fa extends Uo{constructor(t,n,o,s){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=n,this.padOffset=o,this.isLE=s,this.buffer=new Uint8Array(t),this.view=Pn(this.buffer)}update(t){dn(this),t=Dn(t),zt(t);const{view:n,buffer:o,blockLen:s}=this,a=t.length;for(let r=0;r<a;){const i=Math.min(s-this.pos,a-r);if(i===s){const d=Pn(t);for(;s<=a-r;r+=s)this.process(d,r);continue}o.set(t.subarray(r,r+i),this.pos),this.pos+=i,r+=i,this.pos===s&&(this.process(n,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){dn(this),Do(t,this),this.finished=!0;const{buffer:n,view:o,blockLen:s,isLE:a}=this;let{pos:r}=this;n[r++]=128,jt(this.buffer.subarray(r)),this.padOffset>s-r&&(this.process(o,0),r=0);for(let H=r;H<s;H++)n[H]=0;Ca(o,s-8,BigInt(this.length*8),a),this.process(o,0);const i=Pn(t),d=this.outputLen;if(d%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const T=d/4,B=this.get();if(T>B.length)throw new Error("_sha2: outputLen bigger than state");for(let H=0;H<T;H++)i.setUint32(4*H,B[H],a)}digest(){const{buffer:t,outputLen:n}=this;this.digestInto(t);const o=t.slice(0,n);return this.destroy(),o}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:n,buffer:o,length:s,finished:a,destroyed:r,pos:i}=this;return t.destroyed=r,t.finished=a,t.length=s,t.pos=i,s%n&&t.buffer.set(o),t}clone(){return this._cloneInto()}}const yt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),un=BigInt(2**32-1),Mo=BigInt(32);function Pa(e,t=!1){return t?{h:Number(e&un),l:Number(e>>Mo&un)}:{h:Number(e>>Mo&un)|0,l:Number(e&un)|0}}function Da(e,t=!1){const n=e.length;let o=new Uint32Array(n),s=new Uint32Array(n);for(let a=0;a<n;a++){const{h:r,l:i}=Pa(e[a],t);[o[a],s[a]]=[r,i]}return[o,s]}const Oa=(e,t,n)=>e<<n|t>>>32-n,Ua=(e,t,n)=>t<<n|e>>>32-n,Ra=(e,t,n)=>t<<n-32|e>>>64-n,Ma=(e,t,n)=>e<<n-32|t>>>64-n,La=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 Ha extends Fa{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:o,D:s,E:a,F:r,G:i,H:d}=this;return[t,n,o,s,a,r,i,d]}set(t,n,o,s,a,r,i,d){this.A=t|0,this.B=n|0,this.C=o|0,this.D=s|0,this.E=a|0,this.F=r|0,this.G=i|0,this.H=d|0}process(t,n){for(let H=0;H<16;H++,n+=4)At[H]=t.getUint32(n,!1);for(let H=16;H<64;H++){const h=At[H-15],E=At[H-2],m=it(h,7)^it(h,18)^h>>>3,C=it(E,17)^it(E,19)^E>>>10;At[H]=C+At[H-7]+m+At[H-16]|0}let{A:o,B:s,C:a,D:r,E:i,F:d,G:T,H:B}=this;for(let H=0;H<64;H++){const h=it(i,6)^it(i,11)^it(i,25),E=B+h+Ba(i,d,T)+La[H]+At[H]|0,C=(it(o,2)^it(o,13)^it(o,22))+Na(o,s,a)|0;B=T,T=d,d=i,i=r+E|0,r=a,a=s,s=o,o=E+C|0}o=o+this.A|0,s=s+this.B|0,a=a+this.C|0,r=r+this.D|0,i=i+this.E|0,d=d+this.F|0,T=T+this.G|0,B=B+this.H|0,this.set(o,s,a,r,i,d,T,B)}roundClean(){jt(At)}destroy(){this.set(0,0,0,0,0,0,0,0),jt(this.buffer)}}const Wa=Ro(()=>new Ha);function Va(e,t){return Wa(Dt(e,{strict:!1})?Bn(e):e)}function Ga(e){const{commitment:t,version:n=1}=e,o=e.to??(typeof t=="string"?"hex":"bytes"),s=Va(t);return s.set([n],0),o==="bytes"?s:ft(s)}function Ya(e){const{commitments:t,version:n}=e,o=e.to??(typeof t[0]=="string"?"hex":"bytes"),s=[];for(const a of t)s.push(Ga({commitment:a,to:o,version:n}));return s}const Lo=6,Ho=32,On=4096,Wo=Ho*On,Vo=Wo*Lo-1-1*On*Lo,Go=1;class Ja extends ue{constructor({maxSize:t,size:n}){super("Blob size is too large.",{metaMessages:[`Max: ${t} bytes`,`Given: ${n} bytes`],name:"BlobSizeTooLargeError"})}}class Yo extends ue{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class za extends ue{constructor({hash:t,size:n}){super(`Versioned hash "${t}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${n}`],name:"InvalidVersionedHashSizeError"})}}class ja extends ue{constructor({hash:t,version:n}){super(`Versioned hash "${t}" version is invalid.`,{metaMessages:[`Expected: ${Go}`,`Received: ${n}`],name:"InvalidVersionedHashVersionError"})}}function qa(e){const t=e.to??(typeof e.data=="string"?"hex":"bytes"),n=typeof e.data=="string"?Et(e.data):e.data,o=Je(n);if(!o)throw new Yo;if(o>Vo)throw new Ja({maxSize:Vo,size:o});const s=[];let a=!0,r=0;for(;a;){const i=xo(new Uint8Array(Wo));let d=0;for(;d<On;){const T=n.slice(r,r+(Ho-1));if(i.pushByte(0),i.pushBytes(T),T.length<31){i.pushByte(128),a=!1;break}d++,r+=31}s.push(i)}return t==="bytes"?s.map(i=>i.bytes):s.map(i=>ft(i.bytes))}function Qa(e){const{data:t,kzg:n,to:o}=e,s=e.blobs??qa({data:t,to:o}),a=e.commitments??No({blobs:s,kzg:n,to:o}),r=e.proofs??Fo({blobs:s,commitments:a,kzg:n,to:o}),i=[];for(let d=0;d<s.length;d++)i.push({blob:s[d],commitment:a[d],proof:r[d]});return i}class ct extends ue{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 fn extends ue{constructor({chainId:t}){super(typeof t=="number"?`Chain ID "${t}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class Wt extends ue{constructor({cause:t,message:n}={}){const o=n?.replace("execution reverted: ","")?.replace("execution reverted","");super(`Execution reverted ${o?`with reason: ${o}`:"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 Ct extends ue{constructor({cause:t,maxFeePerGas:n}={}){super(`The fee cap (\`maxFeePerGas\`${n?` = ${It(n)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:t,name:"FeeCapTooHighError"})}}Object.defineProperty(Ct,"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 Un extends ue{constructor({cause:t,maxFeePerGas:n}={}){super(`The fee cap (\`maxFeePerGas\`${n?` = ${It(n)}`:""} gwei) cannot be lower than the block base fee.`,{cause:t,name:"FeeCapTooLowError"})}}Object.defineProperty(Un,"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 ue{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 Mn extends ue{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(`
|
|
80
|
-
`),{cause:t,name:"NonceTooLowError"})}}Object.defineProperty(
|
|
81
|
-
`),{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(Hn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class Wn extends ue{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(Wn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class Vn extends ue{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(Vn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class Gn extends ue{constructor({cause:t}){super("The transaction type is not supported for this chain.",{cause:t,name:"TransactionTypeNotSupportedError"})}}Object.defineProperty(Gn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class qt extends ue{constructor({cause:t,maxPriorityFeePerGas:n,maxFeePerGas:
|
|
82
|
-
`),{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 ue{constructor({cause:t}){super(`An error occurred while executing: ${t?.shortMessage}`,{cause:t,name:"UnknownNodeError"})}}class zo 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 o=this.keys().next().value;o&&this.delete(o)}return this}}const Xa=BigInt(0),Qt=BigInt(1),Ka=BigInt(2),Za=BigInt(7),_a=BigInt(256),$a=BigInt(113),jo=[],qo=[],Qo=[];for(let e=0,t=Qt,n=1,o=0;e<24;e++){[n,o]=[o,(2*n+3*o)%5],jo.push(2*(5*o+n)),qo.push((e+1)*(e+2)/2%64);let s=Xa;for(let a=0;a<7;a++)t=(t<<Qt^(t>>Za)*$a)%_a,t&Ka&&(s^=Qt<<(Qt<<BigInt(a))-Qt);Qo.push(s)}const Xo=Da(Qo,!0),er=Xo[0],tr=Xo[1],Ko=(e,t,n)=>n>32?Ra(e,t,n):Oa(e,t,n),Zo=(e,t,n)=>n>32?Ma(e,t,n):Ua(e,t,n);function nr(e,t=24){const n=new Uint32Array(10);for(let o=24-t;o<24;o++){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,d=(r+2)%10,T=n[d],B=n[d+1],H=Ko(T,B,1)^n[i],h=Zo(T,B,1)^n[i+1];for(let E=0;E<50;E+=10)e[r+E]^=H,e[r+E+1]^=h}let s=e[2],a=e[3];for(let r=0;r<24;r++){const i=qo[r],d=Ko(s,a,i),T=Zo(s,a,i),B=jo[r];s=e[B],a=e[B+1],e[B]=d,e[B+1]=T}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]^=er[o],e[1]^=tr[o]}jt(n)}class Yn extends Uo{constructor(t,n,o,s=!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=o,this.enableXOF=s,this.rounds=a,Po(o),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Ta(this.state)}clone(){return this._cloneInto()}keccak(){Oo(this.state32),nr(this.state32,this.rounds),Oo(this.state32),this.posOut=0,this.pos=0}update(t){dn(this),t=Dn(t),zt(t);const{blockLen:n,state:o}=this,s=t.length;for(let a=0;a<s;){const r=Math.min(n-this.pos,s-a);for(let i=0;i<r;i++)o[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:o,blockLen:s}=this;t[o]^=n,(n&128)!==0&&o===s-1&&this.keccak(),t[s-1]^=128,this.keccak()}writeInto(t){dn(this,!1),zt(t),this.finish();const n=this.state,{blockLen:o}=this;for(let s=0,a=t.length;s<a;){this.posOut>=o&&this.keccak();const r=Math.min(o-this.posOut,a-s);t.set(n.subarray(this.posOut,this.posOut+r),s),this.posOut+=r,s+=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 Po(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(Do(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:o,outputLen:s,rounds:a,enableXOF:r}=this;return t||(t=new Yn(n,o,s,r,a)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=o,t.outputLen=s,t.enableXOF=r,t.destroyed=this.destroyed,t}}const or=(e,t,n)=>Ro(()=>new Yn(t,e,n)),sr=or(1,136,256/8);function _o(e,t){const n=t||"hex",o=sr(Dt(e,{strict:!1})?Bn(e):e);return n==="bytes"?o:Ut(o)}const Jn=new zo(8192);function ar(e,t){if(Jn.has(`${e}.${t}`))return Jn.get(`${e}.${t}`);const n=e.substring(2).toLowerCase(),o=_o(To(n),"bytes"),s=n.split("");for(let r=0;r<40;r+=2)o[r>>1]>>4>=8&&s[r]&&(s[r]=s[r].toUpperCase()),(o[r>>1]&15)>=8&&s[r+1]&&(s[r+1]=s[r+1].toUpperCase());const a=`0x${s.join("")}`;return Jn.set(`${e}.${t}`,a),a}const rr=/^0x[a-fA-F0-9]{40}$/,zn=new zo(8192);function He(e,t){const{strict:n=!0}=t??{},o=`${e}.${n}`;if(zn.has(o))return zn.get(o);const s=rr.test(e)?e.toLowerCase()===e?!0:n?ar(e)===e:!0:!1;return zn.set(o,s),s}function jn(e,t,n,{strict:o}={}){return Dt(e,{strict:!1})?cr(e,t,n,{strict:o}):ir(e,t,n,{strict:o})}function $o(e,t){if(typeof t=="number"&&t>0&&t>Je(e)-1)throw new bo({offset:t,position:"start",size:Je(e)})}function es(e,t,n){if(typeof t=="number"&&typeof n=="number"&&Je(e)!==n-t)throw new bo({offset:n,position:"end",size:Je(e)})}function ir(e,t,n,{strict:o}={}){$o(e,t);const s=e.slice(t,n);return o&&es(s,t,n),s}function cr(e,t,n,{strict:o}={}){$o(e,t);const s=`0x${e.replace("0x","").slice((t??0)*2,(n??e.length)*2)}`;return o&&es(s,t,n),s}function lr(e){const{authorizationList:t}=e;if(t)for(const n of t){const{chainId:o}=n,s=n.address;if(!He(s))throw new ct({address:s});if(o<0)throw new fn({chainId:o})}qn(e)}function dr(e){const{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new Yo;for(const n of t){const o=Je(n),s=ln(jn(n,0,1));if(o!==32)throw new za({hash:n,size:o});if(s!==Go)throw new ja({hash:n,version:s})}}qn(e)}function qn(e){const{chainId:t,maxPriorityFeePerGas:n,maxFeePerGas:o,to:s}=e;if(t<=0)throw new fn({chainId:t});if(s&&!He(s))throw new ct({address:s});if(o&&o>Lt)throw new Ct({maxFeePerGas:o});if(n&&o&&n>o)throw new qt({maxFeePerGas:o,maxPriorityFeePerGas:n})}function ur(e){const{chainId:t,maxPriorityFeePerGas:n,gasPrice:o,maxFeePerGas:s,to:a}=e;if(t<=0)throw new fn({chainId:t});if(a&&!He(a))throw new ct({address:a});if(n||s)throw new ue("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(o&&o>Lt)throw new Ct({maxFeePerGas:o})}function fr(e){const{chainId:t,maxPriorityFeePerGas:n,gasPrice:o,maxFeePerGas:s,to:a}=e;if(a&&!He(a))throw new ct({address:a});if(typeof t<"u"&&t<=0)throw new fn({chainId:t});if(n||s)throw new ue("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(o&&o>Lt)throw new Ct({maxFeePerGas:o})}function pr(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 ya({transaction:e})}function pn(e){if(!e||e.length===0)return[];const t=[];for(let n=0;n<e.length;n++){const{address:o,storageKeys:s}=e[n];for(let a=0;a<s.length;a++)if(s[a].length-2!==64)throw new Aa({storageKey:s[a]});if(!He(o,{strict:!1}))throw new ct({address:o});t.push([o,s])}return t}function mr(e,t){const n=pr(e);return n==="eip1559"?wr(e,t):n==="eip2930"?br(e,t):n==="eip4844"?gr(e,t):n==="eip7702"?hr(e,t):yr(e,t)}function hr(e,t){const{authorizationList:n,chainId:o,gas:s,nonce:a,to:r,value:i,maxFeePerGas:d,maxPriorityFeePerGas:T,accessList:B,data:H}=e;lr(e);const h=pn(B),E=va(n);return St(["0x04",xt([le(o),a?le(a):"0x",T?le(T):"0x",d?le(d):"0x",s?le(s):"0x",r??"0x",i?le(i):"0x",H??"0x",h,E,...Xt(e,t)])])}function gr(e,t){const{chainId:n,gas:o,nonce:s,to:a,value:r,maxFeePerBlobGas:i,maxFeePerGas:d,maxPriorityFeePerGas:T,accessList:B,data:H}=e;dr(e);let h=e.blobVersionedHashes,E=e.sidecars;if(e.blobs&&(typeof h>"u"||typeof E>"u")){const Y=typeof e.blobs[0]=="string"?e.blobs:e.blobs.map(pe=>ft(pe)),K=e.kzg,fe=No({blobs:Y,kzg:K});if(typeof h>"u"&&(h=Ya({commitments:fe})),typeof E>"u"){const pe=Fo({blobs:Y,commitments:fe,kzg:K});E=Qa({blobs:Y,commitments:fe,proofs:pe})}}const m=pn(B),C=[le(n),s?le(s):"0x",T?le(T):"0x",d?le(d):"0x",o?le(o):"0x",a??"0x",r?le(r):"0x",H??"0x",m,i?le(i):"0x",h??[],...Xt(e,t)],M=[],ve=[],I=[];if(E)for(let Y=0;Y<E.length;Y++){const{blob:K,commitment:fe,proof:pe}=E[Y];M.push(K),ve.push(fe),I.push(pe)}return St(["0x03",xt(E?[C,M,ve,I]:C)])}function wr(e,t){const{chainId:n,gas:o,nonce:s,to:a,value:r,maxFeePerGas:i,maxPriorityFeePerGas:d,accessList:T,data:B}=e;qn(e);const H=pn(T),h=[le(n),s?le(s):"0x",d?le(d):"0x",i?le(i):"0x",o?le(o):"0x",a??"0x",r?le(r):"0x",B??"0x",H,...Xt(e,t)];return St(["0x02",xt(h)])}function br(e,t){const{chainId:n,gas:o,data:s,nonce:a,to:r,value:i,accessList:d,gasPrice:T}=e;ur(e);const B=pn(d),H=[le(n),a?le(a):"0x",T?le(T):"0x",o?le(o):"0x",r??"0x",i?le(i):"0x",s??"0x",B,...Xt(e,t)];return St(["0x01",xt(H)])}function yr(e,t){const{chainId:n=0,gas:o,data:s,nonce:a,to:r,value:i,gasPrice:d}=e;fr(e);let T=[a?le(a):"0x",d?le(d):"0x",o?le(o):"0x",r??"0x",i?le(i):"0x",s??"0x"];if(t){const B=(()=>{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 E=27n+(t.v===27n?0n:1n);if(t.v!==E)throw new ba({v:t.v});return E})(),H=cn(t.r),h=cn(t.s);T=[...T,le(B),H==="0x00"?"0x":H,h==="0x00"?"0x":h]}else n>0&&(T=[...T,le(n),"0x","0x"]);return xt(T)}function Xt(e,t){const n=t??e,{v:o,yParity:s}=n;if(typeof n.r>"u")return[];if(typeof n.s>"u")return[];if(typeof o>"u"&&typeof s>"u")return[];const a=cn(n.r),r=cn(n.s);return[typeof s=="number"?s?le(1):"0x":o===0n?"0x":o===1n?le(1):o===27n?"0x":le(1),a==="0x00"?"0x":a,r==="0x00"?"0x":r]}const Ar={gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}},vr={block:ta({format(e){return{transactions:e.transactions?.map(n=>{if(typeof n=="string")return n;const o=Fn(n);return o.typeHex==="0x7e"&&(o.isSystemTx=n.isSystemTx,o.mint=n.mint?Mt(n.mint):void 0,o.sourceHash=n.sourceHash,o.type="deposit"),o}),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:aa({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 Sr(e)?Er(e):mr(e,t)}const Tr={transaction:kr};function Er(e){xr(e);const{sourceHash:t,data:n,from:o,gas:s,isSystemTx:a,mint:r,to:i,value:d}=e,T=[t,o,i??"0x",r?Ut(r):"0x",d?Ut(d):"0x",s?Ut(s):"0x",a?"0x1":"0x",n??"0x"];return St(["0x7e",xt(T)])}function Sr(e){return e.type==="deposit"||typeof e.sourceHash<"u"}function xr(e){const{from:t,to:n}=e;if(t&&!He(t))throw new ct({address:t});if(n&&!He(n))throw new ct({address:n})}const mn={blockTime:2e3,contracts:Ar,formatters:vr,serializers:Tr},Ir=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}}}),Cr=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}}}),Kt=1,ts=ut({...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:{[Kt]:{address:"0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e"}},l2OutputOracle:{[Kt]:{address:"0x56315b90c40730925ec5485cf004d835058518A0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022},portal:{[Kt]:{address:"0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",blockCreated:17482143}},l1StandardBridge:{[Kt]:{address:"0x3154Cf16ccdb4C6d922629664174b904d80F2C35",blockCreated:17482143}}},sourceId:Kt});({...ts});const Br=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 Qn(e){return typeof e=="string"?{address:e,type:"json-rpc"}:e}class Nr extends ue{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(`
|
|
83
|
-
`),{docsPath:t,docsSlug:"account",name:"AccountNotFoundError"})}}function Xn(e,{includeName:t=!1}={}){if(e.type!=="function"&&e.type!=="event"&&e.type!=="error")throw new
|
|
84
|
-
`),{name:"AbiEncodingArrayLengthMismatchError"})}}class
|
|
77
|
+
选择要操作的代币:`,viewBalancesEmpty:"您的钱包在此链上没有任何代币。",viewBalancesFetchError:"获取余额时遇到错误,请重试。",buttonSendToken:"发送{symbol}",buttonSwapToken:"兑换{symbol}",buttonBuyMoreToken:"购买更多{symbol}",actionSendNativeLabel:"发送原生代币",actionSendNativeDesc:"发送原生代币(ETH、BNB、MATIC 等)到某个地址",actionSendTokenLabel:"发送代币(ERC20)",actionSendTokenDesc:"将 ERC20 代币发送到某个地址",actionSwapTokenLabel:"兑换代币",actionSwapTokenDesc:"将一种代币兑换为另一种代币",actionApproveTokenLabel:"授权代币",actionApproveTokenDesc:"授权某地址使用您的代币",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:"授权地址",fieldAmountUnlimited:"数量(留空 = 无限授权)",fieldNftContract:"NFT 合约",fieldTokenId:"Token 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:"您想兑换哪种代币?以下是您当前的余额:"}};function mo(e,t){return po[t]?.[e]??po.en[e]??e}function Gs(e,t){return e.replace(/\{(\w+)\}/g,(n,s)=>t[s]??`{${s}}`)}const ho=oe.createContext(void 0),Ys=({children:e,initialLanguage:t="en"})=>{const[n,s]=oe.useState(t);oe.useEffect(()=>{t&&s(t)},[t]);const o=oe.useCallback(r=>mo(r,n),[n]),a=oe.useCallback((r,c)=>Gs(mo(r,n),c),[n]);return F.jsx(ho.Provider,{value:{language:n,setLanguage:s,t:o,ti:a},children:e})},xn=()=>{const e=oe.useContext(ho);if(!e)throw new Error("useLanguage must be used within a LanguageProvider");return e},Js=oe.memo(({onClick:e,buttonSize:t=56})=>{const{t:n}=xn(),s=o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),e())};return F.jsx("button",{className:"chat-button",onClick:e,onKeyDown:s,"aria-label":n("openChat"),title:n("openChatTitle"),type:"button",children:F.jsx("img",{src:Vs,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 wo="2.45.1";let Sn={getDocsUrl:({docsBaseUrl:e,docsPath:t="",docsSlug:n})=>t?`${e??"https://viem.sh"}${t}${n?`#${n}`:""}`:void 0,version:`viem@${wo}`};class ue extends Error{constructor(t,n={}){const s=n.cause instanceof ue?n.cause.details:n.cause?.message?n.cause.message:n.details,o=n.cause instanceof ue&&n.cause.docsPath||n.docsPath,a=Sn.getDocsUrl?.({...n,docsPath:o}),r=[t||"An error occurred.","",...n.metaMessages?[...n.metaMessages,""]:[],...a?[`Docs: ${a}`]:[],...s?[`Details: ${s}`]:[],...Sn.version?[`Version: ${Sn.version}`]:[]].join(`
|
|
78
|
+
`);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=wo}walk(t){return go(this,t)}}function go(e,t){return t?.(e)?e:e&&typeof e=="object"&&"cause"in e&&e.cause!==void 0?go(e.cause,t):t?null:e}class In extends ue{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 zs extends ue{constructor({givenSize:t,maxSize:n}){super(`Size cannot exceed ${n} bytes. Given size: ${t} bytes.`,{name:"SizeOverflowError"})}}function Lt(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 Lt(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}function cn(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 bo extends ue{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 yo extends ue{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 Ot(e,{dir:t,size:n=32}={}){return typeof e=="string"?bt(e,{dir:t,size:n}):js(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 yo({size:Math.ceil(s.length/2),targetSize:n,type:"hex"});return`0x${s[t==="right"?"padEnd":"padStart"](n*2,"0")}`}function js(e,{dir:t,size:n=32}={}){if(n===null)return e;if(e.length>n)throw new yo({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 qs=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function Dt(e,t={}){return typeof e=="number"||typeof e=="bigint"?le(e,t):typeof e=="string"?ko(e,t):typeof e=="boolean"?Ao(e,t):ft(e,t)}function Ao(e,t={}){const n=`0x${Number(e)}`;return typeof t.size=="number"?(Ut(n,{size:t.size}),Ot(n,{size:t.size})):n}function ft(e,t={}){let n="";for(let o=0;o<e.length;o++)n+=qs[e[o]];const s=`0x${n}`;return typeof t.size=="number"?(Ut(s,{size:t.size}),Ot(s,{dir:"right",size:t.size})):s}function le(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 d=typeof e=="bigint"?"n":"";throw new In({max:a?`${a}${d}`:void 0,min:`${r}${d}`,signed:n,size:s,value:`${e}${d}`})}const c=`0x${(n&&o<0?(1n<<BigInt(s*8))+BigInt(o):o).toString(16)}`;return s?Ot(c,{size:s}):c}const Qs=new TextEncoder;function ko(e,t={}){const n=Qs.encode(e);return ft(n,t)}const Xs=new TextEncoder;function Nn(e,t={}){return typeof e=="number"||typeof e=="bigint"?Zs(e,t):typeof e=="boolean"?Ks(e,t):Lt(e)?Ct(e,t):To(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}),Ot(n,{size:t.size})):n}const pt={zero:48,nine:57,A:65,F:70,a:97,f:102};function vo(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=Ot(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,c=0;r<o;r++){const d=vo(s.charCodeAt(c++)),T=vo(s.charCodeAt(c++));if(d===void 0||T===void 0)throw new ue(`Invalid byte sequence ("${s[c-2]}${s[c-1]}" in "${s}").`);a[r]=d*16+T}return a}function Zs(e,t){const n=le(e,t);return Ct(n)}function To(e,t={}){const n=Xs.encode(e);return typeof t.size=="number"?(Ut(n,{size:t.size}),Ot(n,{dir:"right",size:t.size})):n}function Ut(e,{size:t}){if(Je(e)>t)throw new zs({givenSize:Je(e),maxSize:t})}function Rt(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 ln(e,t={}){const n=Rt(e,t),s=Number(n);if(!Number.isSafeInteger(s))throw new In({max:`${Number.MAX_SAFE_INTEGER}`,min:`${Number.MIN_SAFE_INTEGER}`,signed:t.signed,size:t.size,value:`${n}n`});return s}function Bn(e,t){return({exclude:n,format:s})=>({exclude:n,format:(o,a)=>{const r=t(o,a);if(n)for(const c of n)delete r[c];return{...r,...s(o,a)}},type:e})}const Co={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function Fn(e,t){const n={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?ln(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?ln(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?Co[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=$s(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=Bn("transaction",Fn);function $s(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 ea(e,t){const n=(e.transactions??[]).map(s=>typeof s=="string"?s:Fn(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 ta=Bn("block",ea);function na(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 oa={"0x0":"reverted","0x1":"success"};function sa(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=>na(s)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?ln(e.transactionIndex):null,status:e.status?oa[e.status]:null,type:e.type?Co[e.type]||e.type:null};return e.blobGasPrice&&(n.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(n.blobGasUsed=BigInt(e.blobGasUsed)),n}const aa=Bn("transactionReceipt",sa),ra={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function ia(e,t){const n={};return typeof e.authorizationList<"u"&&(n.authorizationList=ca(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=le(e.gas)),typeof e.gasPrice<"u"&&(n.gasPrice=le(e.gasPrice)),typeof e.maxFeePerBlobGas<"u"&&(n.maxFeePerBlobGas=le(e.maxFeePerBlobGas)),typeof e.maxFeePerGas<"u"&&(n.maxFeePerGas=le(e.maxFeePerGas)),typeof e.maxPriorityFeePerGas<"u"&&(n.maxPriorityFeePerGas=le(e.maxPriorityFeePerGas)),typeof e.nonce<"u"&&(n.nonce=le(e.nonce)),typeof e.to<"u"&&(n.to=e.to),typeof e.type<"u"&&(n.type=ra[e.type]),typeof e.value<"u"&&(n.value=le(e.value)),n}function ca(e){return e.map(t=>({address:t.address,r:t.r?le(BigInt(t.r)):t.r,s:t.s?le(BigInt(t.s)):t.s,chainId:le(t.chainId),nonce:le(t.nonce),...typeof t.yParity<"u"?{yParity:le(t.yParity)}:{},...typeof t.v<"u"&&typeof t.yParity>"u"?{v:le(t.v)}:{}}))}const Mt=2n**256n-1n;function Ht(e){return typeof e[0]=="string"?Et(e):la(e)}function la(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 Eo extends ue{constructor({offset:t}){super(`Offset \`${t}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class da extends ue{constructor({length:t,position:n}){super(`Position \`${n}\` is out of bounds (\`0 < position < ${t}\`).`,{name:"PositionOutOfBoundsError"})}}class ua extends ue{constructor({count:t,limit:n}){super(`Recursive read limit of \`${n}\` exceeded (recursive read count: \`${t}\`).`,{name:"RecursiveReadLimitExceededError"})}}const fa={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 ua({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new da({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new Eo({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 Eo({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 xo(e,{recursiveReadLimit:t=8192}={}){const n=Object.create(fa);return n.bytes=e,n.dataView=new DataView(e.buffer??e,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}function xt(e,t="hex"){const n=So(e),s=xo(new Uint8Array(n.length));return n.encode(s),t==="hex"?ft(s.bytes):s.bytes}function So(e){return Array.isArray(e)?pa(e.map(t=>So(t))):ma(e)}function pa(e){const t=e.reduce((o,a)=>o+a.length,0),n=Io(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 ma(e){const t=typeof e=="string"?Ct(e):e,n=Io(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 Io(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 ue("Length is too large.")}const ha={gwei:9,wei:18},wa={ether:-9,wei:9};function De(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 De(e,ha[t])}function St(e,t="wei"){return De(e,wa[t])}function No(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(`
|
|
79
|
+
`)}class ba extends ue{constructor({v:t}){super(`Invalid \`v\` value "${t}". Expected 27 or 28.`,{name:"InvalidLegacyVError"})}}class ya extends ue{constructor({transaction:t}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",No(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 Aa extends ue{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 ka(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?Dt(s):"0x",r,o?Dt(o):"0x",...Xt({},a)])}return t}function Bo(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 Fo(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 c=s[r],d=o[r];a.push(Uint8Array.from(t.computeBlobKzgProof(c,d)))}return n==="bytes"?a:a.map(r=>ft(r))}function va(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Po(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function zt(e,...t){if(!va(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 dn(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 Ta(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 Pn(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function it(e,t){return e<<32-t|e>>>t}const Ca=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ea(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function xa(e){for(let t=0;t<e.length;t++)e[t]=Ea(e[t]);return e}const Oo=Ca?e=>e:xa;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 Do{}function Uo(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 Ia(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),c=Number(n&a),d=s?4:0,T=s?0:4;e.setUint32(t+d,r,s),e.setUint32(t+T,c,s)}function Na(e,t,n){return e&t^~e&n}function Ba(e,t,n){return e&t^e&n^t&n}class Fa extends Do{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=Pn(this.buffer)}update(t){dn(this),t=Ln(t),zt(t);const{view:n,buffer:s,blockLen:o}=this,a=t.length;for(let r=0;r<a;){const c=Math.min(o-this.pos,a-r);if(c===o){const d=Pn(t);for(;o<=a-r;r+=o)this.process(d,r);continue}s.set(t.subarray(r,r+c),this.pos),this.pos+=c,r+=c,this.pos===o&&(this.process(n,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){dn(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 W=r;W<o;W++)n[W]=0;Ia(s,o-8,BigInt(this.length*8),a),this.process(s,0);const c=Pn(t),d=this.outputLen;if(d%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const T=d/4,N=this.get();if(T>N.length)throw new Error("_sha2: outputLen bigger than state");for(let W=0;W<T;W++)c.setUint32(4*W,N[W],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:c}=this;return t.destroyed=r,t.finished=a,t.length=o,t.pos=c,o%n&&t.buffer.set(s),t}clone(){return this._cloneInto()}}const yt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),un=BigInt(2**32-1),Ro=BigInt(32);function Pa(e,t=!1){return t?{h:Number(e&un),l:Number(e>>Ro&un)}:{h:Number(e>>Ro&un)|0,l:Number(e&un)|0}}function La(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:c}=Pa(e[a],t);[s[a],o[a]]=[r,c]}return[s,o]}const Oa=(e,t,n)=>e<<n|t>>>32-n,Da=(e,t,n)=>t<<n|e>>>32-n,Ua=(e,t,n)=>t<<n-32|e>>>64-n,Ra=(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 Ha extends Fa{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:c,H:d}=this;return[t,n,s,o,a,r,c,d]}set(t,n,s,o,a,r,c,d){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=c|0,this.H=d|0}process(t,n){for(let W=0;W<16;W++,n+=4)At[W]=t.getUint32(n,!1);for(let W=16;W<64;W++){const h=At[W-15],C=At[W-2],m=it(h,7)^it(h,18)^h>>>3,I=it(C,17)^it(C,19)^C>>>10;At[W]=I+At[W-7]+m+At[W-16]|0}let{A:s,B:o,C:a,D:r,E:c,F:d,G:T,H:N}=this;for(let W=0;W<64;W++){const h=it(c,6)^it(c,11)^it(c,25),C=N+h+Na(c,d,T)+Ma[W]+At[W]|0,I=(it(s,2)^it(s,13)^it(s,22))+Ba(s,o,a)|0;N=T,T=d,d=c,c=r+C|0,r=a,a=o,o=s,s=C+I|0}s=s+this.A|0,o=o+this.B|0,a=a+this.C|0,r=r+this.D|0,c=c+this.E|0,d=d+this.F|0,T=T+this.G|0,N=N+this.H|0,this.set(s,o,a,r,c,d,T,N)}roundClean(){jt(At)}destroy(){this.set(0,0,0,0,0,0,0,0),jt(this.buffer)}}const Wa=Uo(()=>new Ha);function Va(e,t){return Wa(Lt(e,{strict:!1})?Nn(e):e)}function Ga(e){const{commitment:t,version:n=1}=e,s=e.to??(typeof t=="string"?"hex":"bytes"),o=Va(t);return o.set([n],0),s==="bytes"?o:ft(o)}function Ya(e){const{commitments:t,version:n}=e,s=e.to??(typeof t[0]=="string"?"hex":"bytes"),o=[];for(const a of t)o.push(Ga({commitment:a,to:s,version:n}));return o}const Mo=6,Ho=32,On=4096,Wo=Ho*On,Vo=Wo*Mo-1-1*On*Mo,Go=1;class Ja extends ue{constructor({maxSize:t,size:n}){super("Blob size is too large.",{metaMessages:[`Max: ${t} bytes`,`Given: ${n} bytes`],name:"BlobSizeTooLargeError"})}}class Yo extends ue{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}class za extends ue{constructor({hash:t,size:n}){super(`Versioned hash "${t}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${n}`],name:"InvalidVersionedHashSizeError"})}}class ja extends ue{constructor({hash:t,version:n}){super(`Versioned hash "${t}" version is invalid.`,{metaMessages:[`Expected: ${Go}`,`Received: ${n}`],name:"InvalidVersionedHashVersionError"})}}function qa(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 Yo;if(s>Vo)throw new Ja({maxSize:Vo,size:s});const o=[];let a=!0,r=0;for(;a;){const c=xo(new Uint8Array(Wo));let d=0;for(;d<On;){const T=n.slice(r,r+(Ho-1));if(c.pushByte(0),c.pushBytes(T),T.length<31){c.pushByte(128),a=!1;break}d++,r+=31}o.push(c)}return t==="bytes"?o.map(c=>c.bytes):o.map(c=>ft(c.bytes))}function Qa(e){const{data:t,kzg:n,to:s}=e,o=e.blobs??qa({data:t,to:s}),a=e.commitments??Bo({blobs:o,kzg:n,to:s}),r=e.proofs??Fo({blobs:o,commitments:a,kzg:n,to:s}),c=[];for(let d=0;d<o.length;d++)c.push({blob:o[d],commitment:a[d],proof:r[d]});return c}class ct extends ue{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 fn extends ue{constructor({chainId:t}){super(typeof t=="number"?`Chain ID "${t}" is invalid.`:"Chain ID is invalid.",{name:"InvalidChainIdError"})}}class Wt extends ue{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 ue{constructor({cause:t,maxFeePerGas:n}={}){super(`The fee cap (\`maxFeePerGas\`${n?` = ${St(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 Dn extends ue{constructor({cause:t,maxFeePerGas:n}={}){super(`The fee cap (\`maxFeePerGas\`${n?` = ${St(n)}`:""} gwei) cannot be lower than the block base fee.`,{cause:t,name:"FeeCapTooLowError"})}}Object.defineProperty(Dn,"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 Un extends ue{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(Un,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});class Rn extends ue{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(`
|
|
80
|
+
`),{cause:t,name:"NonceTooLowError"})}}Object.defineProperty(Rn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});class Mn extends ue{constructor({cause:t,nonce:n}={}){super(`Nonce provided for the transaction ${n?`(${n}) `:""}exceeds the maximum allowed nonce.`,{cause:t,name:"NonceMaxValueError"})}}Object.defineProperty(Mn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});class Hn extends ue{constructor({cause:t}={}){super(["The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account."].join(`
|
|
81
|
+
`),{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(Hn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class Wn extends ue{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(Wn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class Vn extends ue{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(Vn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class Gn extends ue{constructor({cause:t}){super("The transaction type is not supported for this chain.",{cause:t,name:"TransactionTypeNotSupportedError"})}}Object.defineProperty(Gn,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class qt extends ue{constructor({cause:t,maxPriorityFeePerGas:n,maxFeePerGas:s}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${n?` = ${St(n)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${s?` = ${St(s)} gwei`:""}).`].join(`
|
|
82
|
+
`),{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 ue{constructor({cause:t}){super(`An error occurred while executing: ${t?.shortMessage}`,{cause:t,name:"UnknownNodeError"})}}class zo 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 Xa=BigInt(0),Qt=BigInt(1),Ka=BigInt(2),Za=BigInt(7),_a=BigInt(256),$a=BigInt(113),jo=[],qo=[],Qo=[];for(let e=0,t=Qt,n=1,s=0;e<24;e++){[n,s]=[s,(2*n+3*s)%5],jo.push(2*(5*s+n)),qo.push((e+1)*(e+2)/2%64);let o=Xa;for(let a=0;a<7;a++)t=(t<<Qt^(t>>Za)*$a)%_a,t&Ka&&(o^=Qt<<(Qt<<BigInt(a))-Qt);Qo.push(o)}const Xo=La(Qo,!0),er=Xo[0],tr=Xo[1],Ko=(e,t,n)=>n>32?Ua(e,t,n):Oa(e,t,n),Zo=(e,t,n)=>n>32?Ra(e,t,n):Da(e,t,n);function nr(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 c=(r+8)%10,d=(r+2)%10,T=n[d],N=n[d+1],W=Ko(T,N,1)^n[c],h=Zo(T,N,1)^n[c+1];for(let C=0;C<50;C+=10)e[r+C]^=W,e[r+C+1]^=h}let o=e[2],a=e[3];for(let r=0;r<24;r++){const c=qo[r],d=Ko(o,a,c),T=Zo(o,a,c),N=jo[r];o=e[N],a=e[N+1],e[N]=d,e[N+1]=T}for(let r=0;r<50;r+=10){for(let c=0;c<10;c++)n[c]=e[r+c];for(let c=0;c<10;c++)e[r+c]^=~n[(c+2)%10]&n[(c+4)%10]}e[0]^=er[s],e[1]^=tr[s]}jt(n)}class Yn extends Do{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,Po(s),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Ta(this.state)}clone(){return this._cloneInto()}keccak(){Oo(this.state32),nr(this.state32,this.rounds),Oo(this.state32),this.posOut=0,this.pos=0}update(t){dn(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 c=0;c<r;c++)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){dn(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 Po(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 Yn(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 or=(e,t,n)=>Uo(()=>new Yn(t,e,n)),sr=or(1,136,256/8);function _o(e,t){const n=t||"hex",s=sr(Lt(e,{strict:!1})?Nn(e):e);return n==="bytes"?s:Dt(s)}const Jn=new zo(8192);function ar(e,t){if(Jn.has(`${e}.${t}`))return Jn.get(`${e}.${t}`);const n=e.substring(2).toLowerCase(),s=_o(To(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 rr=/^0x[a-fA-F0-9]{40}$/,zn=new zo(8192);function He(e,t){const{strict:n=!0}=t??{},s=`${e}.${n}`;if(zn.has(s))return zn.get(s);const o=rr.test(e)?e.toLowerCase()===e?!0:n?ar(e)===e:!0:!1;return zn.set(s,o),o}function jn(e,t,n,{strict:s}={}){return Lt(e,{strict:!1})?cr(e,t,n,{strict:s}):ir(e,t,n,{strict:s})}function $o(e,t){if(typeof t=="number"&&t>0&&t>Je(e)-1)throw new bo({offset:t,position:"start",size:Je(e)})}function es(e,t,n){if(typeof t=="number"&&typeof n=="number"&&Je(e)!==n-t)throw new bo({offset:n,position:"end",size:Je(e)})}function ir(e,t,n,{strict:s}={}){$o(e,t);const o=e.slice(t,n);return s&&es(o,t,n),o}function cr(e,t,n,{strict:s}={}){$o(e,t);const o=`0x${e.replace("0x","").slice((t??0)*2,(n??e.length)*2)}`;return s&&es(o,t,n),o}function lr(e){const{authorizationList:t}=e;if(t)for(const n of t){const{chainId:s}=n,o=n.address;if(!He(o))throw new ct({address:o});if(s<0)throw new fn({chainId:s})}qn(e)}function dr(e){const{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new Yo;for(const n of t){const s=Je(n),o=ln(jn(n,0,1));if(s!==32)throw new za({hash:n,size:s});if(o!==Go)throw new ja({hash:n,version:o})}}qn(e)}function qn(e){const{chainId:t,maxPriorityFeePerGas:n,maxFeePerGas:s,to:o}=e;if(t<=0)throw new fn({chainId:t});if(o&&!He(o))throw new ct({address:o});if(s&&s>Mt)throw new It({maxFeePerGas:s});if(n&&s&&n>s)throw new qt({maxFeePerGas:s,maxPriorityFeePerGas:n})}function ur(e){const{chainId:t,maxPriorityFeePerGas:n,gasPrice:s,maxFeePerGas:o,to:a}=e;if(t<=0)throw new fn({chainId:t});if(a&&!He(a))throw new ct({address:a});if(n||o)throw new ue("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(s&&s>Mt)throw new It({maxFeePerGas:s})}function fr(e){const{chainId:t,maxPriorityFeePerGas:n,gasPrice:s,maxFeePerGas:o,to:a}=e;if(a&&!He(a))throw new ct({address:a});if(typeof t<"u"&&t<=0)throw new fn({chainId:t});if(n||o)throw new ue("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(s&&s>Mt)throw new It({maxFeePerGas:s})}function pr(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 ya({transaction:e})}function pn(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 Aa({storageKey:o[a]});if(!He(s,{strict:!1}))throw new ct({address:s});t.push([s,o])}return t}function mr(e,t){const n=pr(e);return n==="eip1559"?gr(e,t):n==="eip2930"?br(e,t):n==="eip4844"?wr(e,t):n==="eip7702"?hr(e,t):yr(e,t)}function hr(e,t){const{authorizationList:n,chainId:s,gas:o,nonce:a,to:r,value:c,maxFeePerGas:d,maxPriorityFeePerGas:T,accessList:N,data:W}=e;lr(e);const h=pn(N),C=ka(n);return Et(["0x04",xt([le(s),a?le(a):"0x",T?le(T):"0x",d?le(d):"0x",o?le(o):"0x",r??"0x",c?le(c):"0x",W??"0x",h,C,...Xt(e,t)])])}function wr(e,t){const{chainId:n,gas:s,nonce:o,to:a,value:r,maxFeePerBlobGas:c,maxFeePerGas:d,maxPriorityFeePerGas:T,accessList:N,data:W}=e;dr(e);let h=e.blobVersionedHashes,C=e.sidecars;if(e.blobs&&(typeof h>"u"||typeof C>"u")){const Y=typeof e.blobs[0]=="string"?e.blobs:e.blobs.map(pe=>ft(pe)),K=e.kzg,fe=Bo({blobs:Y,kzg:K});if(typeof h>"u"&&(h=Ya({commitments:fe})),typeof C>"u"){const pe=Fo({blobs:Y,commitments:fe,kzg:K});C=Qa({blobs:Y,commitments:fe,proofs:pe})}}const m=pn(N),I=[le(n),o?le(o):"0x",T?le(T):"0x",d?le(d):"0x",s?le(s):"0x",a??"0x",r?le(r):"0x",W??"0x",m,c?le(c):"0x",h??[],...Xt(e,t)],R=[],ke=[],S=[];if(C)for(let Y=0;Y<C.length;Y++){const{blob:K,commitment:fe,proof:pe}=C[Y];R.push(K),ke.push(fe),S.push(pe)}return Et(["0x03",xt(C?[I,R,ke,S]:I)])}function gr(e,t){const{chainId:n,gas:s,nonce:o,to:a,value:r,maxFeePerGas:c,maxPriorityFeePerGas:d,accessList:T,data:N}=e;qn(e);const W=pn(T),h=[le(n),o?le(o):"0x",d?le(d):"0x",c?le(c):"0x",s?le(s):"0x",a??"0x",r?le(r):"0x",N??"0x",W,...Xt(e,t)];return Et(["0x02",xt(h)])}function br(e,t){const{chainId:n,gas:s,data:o,nonce:a,to:r,value:c,accessList:d,gasPrice:T}=e;ur(e);const N=pn(d),W=[le(n),a?le(a):"0x",T?le(T):"0x",s?le(s):"0x",r??"0x",c?le(c):"0x",o??"0x",N,...Xt(e,t)];return Et(["0x01",xt(W)])}function yr(e,t){const{chainId:n=0,gas:s,data:o,nonce:a,to:r,value:c,gasPrice:d}=e;fr(e);let T=[a?le(a):"0x",d?le(d):"0x",s?le(s):"0x",r??"0x",c?le(c):"0x",o??"0x"];if(t){const N=(()=>{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 C=27n+(t.v===27n?0n:1n);if(t.v!==C)throw new ba({v:t.v});return C})(),W=cn(t.r),h=cn(t.s);T=[...T,le(N),W==="0x00"?"0x":W,h==="0x00"?"0x":h]}else n>0&&(T=[...T,le(n),"0x","0x"]);return xt(T)}function Xt(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=cn(n.r),r=cn(n.s);return[typeof o=="number"?o?le(1):"0x":s===0n?"0x":s===1n?le(1):s===27n?"0x":le(1),a==="0x00"?"0x":a,r==="0x00"?"0x":r]}const Ar={gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}},kr={block:ta({format(e){return{transactions:e.transactions?.map(n=>{if(typeof n=="string")return n;const s=Fn(n);return s.typeHex==="0x7e"&&(s.isSystemTx=n.isSystemTx,s.mint=n.mint?Rt(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?Rt(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t}}),transactionReceipt:aa({format(e){return{l1GasPrice:e.l1GasPrice?Rt(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?Rt(e.l1GasUsed):null,l1Fee:e.l1Fee?Rt(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null}}})};function vr(e,t){return Er(e)?Cr(e):mr(e,t)}const Tr={transaction:vr};function Cr(e){xr(e);const{sourceHash:t,data:n,from:s,gas:o,isSystemTx:a,mint:r,to:c,value:d}=e,T=[t,s,c??"0x",r?Dt(r):"0x",d?Dt(d):"0x",o?Dt(o):"0x",a?"0x1":"0x",n??"0x"];return Et(["0x7e",xt(T)])}function Er(e){return e.type==="deposit"||typeof e.sourceHash<"u"}function xr(e){const{from:t,to:n}=e;if(t&&!He(t))throw new ct({address:t});if(n&&!He(n))throw new ct({address:n})}const mn={blockTime:2e3,contracts:Ar,formatters:kr,serializers:Tr},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}}}),Ir=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}}}),Kt=1,ts=ut({...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:{[Kt]:{address:"0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e"}},l2OutputOracle:{[Kt]:{address:"0x56315b90c40730925ec5485cf004d835058518A0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022},portal:{[Kt]:{address:"0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",blockCreated:17482143}},l1StandardBridge:{[Kt]:{address:"0x3154Cf16ccdb4C6d922629664174b904d80F2C35",blockCreated:17482143}}},sourceId:Kt});({...ts});const Nr=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 Qn(e){return typeof e=="string"?{address:e,type:"json-rpc"}:e}class Br extends ue{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(`
|
|
83
|
+
`),{docsPath:t,docsSlug:"account",name:"AccountNotFoundError"})}}function Xn(e,{includeName:t=!1}={}){if(e.type!=="function"&&e.type!=="event"&&e.type!=="error")throw new Mr(e.type);return`${e.name}(${ns(e.inputs,{includeName:t})})`}function ns(e,{includeName:t=!1}={}){return e?e.map(n=>Fr(n,{includeName:t})).join(t?", ":","):""}function Fr(e,{includeName:t}){return e.type.startsWith("tuple")?`(${ns(e.components,{includeName:t})})${e.type.slice(5)}`:e.type+(t&&e.name?` ${e.name}`:"")}class Pr extends ue{constructor({expectedLength:t,givenLength:n,type:s}){super([`ABI encoding array length mismatch for type ${s}.`,`Expected length: ${t}`,`Given length: ${n}`].join(`
|
|
84
|
+
`),{name:"AbiEncodingArrayLengthMismatchError"})}}class Lr extends ue{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 ue{constructor({expectedLength:t,givenLength:n}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${t}`,`Given length (values): ${n}`].join(`
|
|
85
85
|
`),{name:"AbiEncodingLengthMismatchError"})}}class os extends ue{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(`
|
|
86
|
-
`),{docsPath:n,name:"AbiFunctionNotFoundError"})}}class
|
|
87
|
-
`),{docsPath:n,name:"InvalidAbiEncodingType"})}}class
|
|
88
|
-
`),{name:"InvalidArrayError"})}}class
|
|
89
|
-
`),{name:"InvalidDefinitionTypeError"})}}const Hr=e=>_o(
|
|
90
|
-
`,"")}function si(e){return e.reduce((t,{address:n,...
|
|
91
|
-
`;return
|
|
92
|
-
`),
|
|
93
|
-
`),
|
|
94
|
-
`),
|
|
95
|
-
`,
|
|
96
|
-
`,
|
|
97
|
-
`).slice(0,-1)}class ai extends ue{constructor(t,{account:n,docsPath:
|
|
98
|
-
${si(E)}`),super(t.shortMessage,{cause:t,docsPath:o,metaMessages:[...t.metaMessages?[...t.metaMessages," "]:[],"Raw Call Arguments:",C].filter(Boolean),name:"CallExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=t}}function ri(e,t){const n=(e.details||"").toLowerCase(),o=e instanceof ue?e.walk(s=>s?.code===Wt.code):e;return o instanceof ue?new Wt({cause:e,message:o.details}):Wt.nodeMessage.test(n)?new Wt({cause:e,message:e.details}):Ct.nodeMessage.test(n)?new Ct({cause:e,maxFeePerGas:t?.maxFeePerGas}):Un.nodeMessage.test(n)?new Un({cause:e,maxFeePerGas:t?.maxFeePerGas}):Rn.nodeMessage.test(n)?new Rn({cause:e,nonce:t?.nonce}):Mn.nodeMessage.test(n)?new Mn({cause:e,nonce:t?.nonce}):Ln.nodeMessage.test(n)?new Ln({cause:e,nonce:t?.nonce}):Hn.nodeMessage.test(n)?new Hn({cause:e}):Wn.nodeMessage.test(n)?new Wn({cause:e,gas:t?.gas}):Vn.nodeMessage.test(n)?new Vn({cause:e,gas:t?.gas}):Gn.nodeMessage.test(n)?new Gn({cause:e}):qt.nodeMessage.test(n)?new qt({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new Jo({cause:e})}function ii(e,{docsPath:t,...n}){const o=(()=>{const s=ri(e,n);return s instanceof Jo?e:s})();return new ai(o,{docsPath:t,...n})}function ci(e,{format:t}){if(!t)return{};const n={};function o(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])&&o(a[i])}const s=t(e||{});return o(s),n}function li(e){const{account:t,maxFeePerGas:n,maxPriorityFeePerGas:o,to:s}=e,a=t?Qn(t):void 0;if(a&&!He(a.address))throw new ct({address:a.address});if(s&&!He(s))throw new ct({address:s});if(n&&n>Lt)throw new Ct({maxFeePerGas:n});if(o&&n&&o>n)throw new qt({maxFeePerGas:n,maxPriorityFeePerGas:o})}async function di(e,t){const{account:n=e.account}=t;if(!n)throw new Nr;const o=Qn(n);try{const{accessList:s,blockNumber:a,blockTag:r,data:i,gas:d,gasPrice:T,maxFeePerGas:B,maxPriorityFeePerGas:H,nonce:h,to:E,value:m,...C}=t,ve=(typeof a=="bigint"?le(a):void 0)||r;li(t);const I=e.chain?.formatters?.transactionRequest?.format,K=(I||ia)({...ci(C,{format:I}),account:o,accessList:s,data:i,gas:d,gasPrice:T,maxFeePerGas:B,maxPriorityFeePerGas:H,nonce:h,to:E,value:m},"estimateGas"),{baseFeePerGas:fe,gasLimit:pe,priorityFeePerGas:Be}=await e.request({method:"linea_estimateGas",params:ve?[K,ve]:[K]});return{baseFeePerGas:BigInt(fe),gasLimit:BigInt(pe),priorityFeePerGas:BigInt(Be)}}catch(s){throw ii(s,{...t,account:o,chain:e.chain})}}const ui={fees:{estimateFeesPerGas:ls,async maxPriorityFeePerGas({block:e,client:t,request:n}){const o=await ls({block:e,client:t,multiply:s=>s,request:n,type:"eip1559"});return o?.maxPriorityFeePerGas?o.maxPriorityFeePerGas:null}}};async function ls({client:e,multiply:t,request:n,type:o}){try{const s=await di(e,{...n,account:n?.account}),{priorityFeePerGas:a}=s,i=t(BigInt(s.baseFeePerGas))+a;return o==="legacy"?{gasPrice:i}:{maxFeePerGas:i,maxPriorityFeePerGas:a}}catch{return null}}const fi=ut({...ui,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}),pi=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}}}),_t=1,mi=ut({...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:{[_t]:{address:"0xe5965Ab5962eDc7477C8520243A95517CD252fA9"}},l2OutputOracle:{[_t]:{address:"0xdfe97868233d1aa22e815a266982f2cf17685a27"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:4286263},portal:{[_t]:{address:"0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"}},l1StandardBridge:{[_t]:{address:"0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1"}}},sourceId:_t}),hi=ut({id:137,name:"Polygon",blockTime:2e3,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com",apiUrl:"https://api.etherscan.io/v2/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}}}),ds="/docs/contract/encodeFunctionData";function gi(e){const{abi:t,args:n,functionName:o}=e;let s=t[0];if(o){const a=oi({abi:t,args:n,name:o});if(!a)throw new os(o,{docsPath:ds});s=a}if(s.type!=="function")throw new os(void 0,{docsPath:ds});return{abi:[s],functionName:rs(Xn(s))}}function vt(e){const{args:t}=e,{abi:n,functionName:o}=e.abi.length===1&&e.functionName?.startsWith("0x")?e:gi(e),s=n[0],a=o,r="inputs"in s&&s.inputs?jr(s.inputs,t??[]):void 0;return St([a,r??"0x"])}const lt={1:{...pi,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:{...mi,logo:"data:image/png;base64,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",chainId:10,chainType:"optimism",chainTypeMoralis:"optimism",tokenTrendingDefault:["0x4200000000000000000000000000000000000006","0x68f180fcce6836688e9084f035309e29bf0a2095","0xc47da4cb96ce65a96844a01bfae509f9d5454534"]},56:{...Br,logo:"data:image/png;base64,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",chainId:56,chainType:"bsc",chainTypeMoralis:"bsc",tokenTrendingDefault:["0x2170ed0880ac9a755fd29b2688956bd959f933f8","0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c"]},137:{...hi,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:{...ts,logo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAACFhJREFUeAHtnT1sHEUUx/+7pCJIuAltzjVIdppQ+lwT5A8kKG3TIYESSwhKn0sQUhwpiDJ2SSRiI5Ha55YmjpTUXrehuQY6e5j/zq19n769eTP7dfuTLne52Lm9/e97b2b2zXsBis6qmtN/NvEe7uIS8wj0s0JDP/P95NFLJ34oRN2/v0aIM1zoZ+AUR0EHBSZA0VhVDX3yV/QJXQSFgD75bolAYQIcxSIdBacoEMUQZFU19ZGs6scK3AswiUg/2tr6DrQ4beRMfoLQFYV4qC2BQiyiGET6WFrack60OBFyIHtBVtWi/tRN/djAsP8vEvvaanazFiY7QRgbAjzTjybKRabC+BfEuKYd/eoRyk0mwvgV5AvFGNFCsV3TNJgY80dwAE/4EaS87ikdSo/KFLZ8WEsI19AqQryqrBiE343fcV05d8PuLKQ6sWJa9vAi2IYj3AhiXNRhgeYTWRPpgL/swoXJBaEYIY6R/Qy7aDgRRSYIJ3lGjKqMoqR0uqJYr4/ZC5KzGI2P9Ae/rx+3h/+t86++XP8xzzkgEsVOkIzFaH4MLMwDiw3zmmKkgYKcRnr9/UyvHr41r6N3yAJrUaYXxMSMV/AsBk/8xrL+uPujrcAWCrOvL6WTt97FoSj3po0p0wniOYDzxD98oMfNn7kVYRwU58lfwNHf8MXUgX46QdaVNn73YtAFtb40FpEHtJTWc+DgGO5R+maYikVJdacyvSDr6jEcT/qytohJnOrLbe1nL64s9eQxnSBmkXAPDmGMePZt+gCdJbSW3d/hmm0tysRzOFkQD0H88dfGKooMrWR5x6m1pArykxcXuWrrSAxaw6tfii8GuTrWB3DFXPdc3sjNgqyrTVertvyCx7t6LjGP0sC49ngL2PkKbuC5nLBCPN5lORziUoTDH4oZL9LiMK504vyyMaOu8RYSxHf6GhCSWEaZxSAcljuylOQ2xUhGW4ixjjMIqYoYvTizFGMl0eDboy3EWIcI+t+qiUGcTWDHBPhhQczNpg0I2duqnhgJ/G5c6BTBAM9F2gHCET/YgpCdHJdBsoDWf/ijWf4XwYTBobd6cRA7aBVnv2Em2NMLk9sTZxY3MjTi6reQUD7n4HLIrMBJI5eABHDE1TcvGXRZOxCwuSw+wNIhHgqrOOP/imtBuCVAOO9g7Jg1eAGKLkJm6phzHxP2/MMmBNA6qjqqmoTYSrg3pkuvIEsQMIvWkeDASq7clhHEjIcbsGSaxIOqIrSSRjzCRSJIKMs43KzwnCMtvChF85LQuK3EZa3AEk6SqjwJnIZHn8OeAAt8SgSxthCm6dQYliRxRJk5YNjdB96AJbM277gJodtiHJmjhYjix1ItSB+rn8KeW1gKJQGdI6tZH10NIloF1utaYVymIo8PrygLkpwBrQVd1gIsqQUZRnhOGqI9hrW7GobTAEFgv3tLj38bsITp/u03KB1zH/i1bv7/nf8wPQHmbkGQBPdIdnMmNzab+r7Nd/BG4451xmM87K23oxWHOff71GtE1IIUjFqQgsGgzowHqzgS7/+TpsLkQPMTFJWOWJB66X0Ybsm2pEOXZV2lM6d94IXHepOPQkRBIlhyKk7Hrh7Sc8LFxXNYcmr9m9Xl3N5dkdehnq5HsISmWbutfkRLSQFdlkCQuHRF7bb6YDECay5xGuICbQg4kRxAxaDHYD0VAVoQk3kdwZJ2LcgVwnMRUQszU1c4gSU8iDIuwftAVJpDxc0CuksnAUQF6Wu3ZdyVyEJCHJoncokjCNh7WY+2nryEjIteCzG7QSNYQjG8VNIpEcIST1FS7Ox6tVfhTwjYk14hJYYF0YQ1UdrJi15BRG6LB8RiYLMGv/fuc8hg75Iu14KwmYmSBXduqp+1WHLQFltH1NtIpv8GVSBzWxRDfLWUiLgSnbSqw8A29H5BLuMiZaKmWdwqPCvzkmXRFtkuF/1zwH5BOGtX1/7Mlq1fq++66AkcFDfbH6x3MnxPXekfEsIDXfsJlYVD3JabAjS7g28NC8LxsJItOBLOWrdLmkh3E7zYtp7CBfvpqwGxWYkDGE88FJPMjaQOoxN3PMI6yGhBqJzCEzjAU4XPzHFcFHN/XDHM8XlZpneUkzalZRfFsRjROOsg4wUx90nG/uK0lFUUxsJ73zssF8t5xw2lYifX7V1Tx3DYT6pMBTG5FOQ0w5+DpcPgxky2yamkJsA7cV2E9+Bp/kVeHWbQ5rDd8XaLTprB0mRBjHk5c12E5r/51AwfM+rnkRpaxfw3XjompGpKOdllJaypPf3TD+EYui5uoHFWrNgSxgrGOC85AhyxHgapGhmkF4QFBgIcw1MnNgrDEuQr97ONL16FMER4EaTem5teEJJRRzYWs9lo+stSZ4xIGrkI03Ym4bmhC8mo5RGhpbBcBa2GmzRtLSfpRXXyppslk01SRgYtjxJy6tDGLccUhpvz5+8AH942Gyx7SbYCnL/rJq6d55JdmWFTsIS6h+E4cmibl1CLMkiOjSUT6tarCU5ar8o3ffIAeCCCvK7Sw+QQR82J3ezC5YFwrO1oyb5U8DsrN2IQucsaxLT04e3/qscVsxqeovPaNLgXhJiWF89crhIXCq7acqHQkVX04keQBDYVM9bSQDXwYhW9+BWEGGtpuWgSkysmVrTStlC1xb8gCWUVxqN7GkV2giSUQxiTMKjiZARRvvO0ZC9IgplQNlGkGMP5BPObmVLr2TWNIz9BemH/DLbLMB0aGsiWKN4bw+0YPVnoeVEMQXox62O8CcZ69KKuDWOIwA0y3Fd5oYXIKDakpXiCDGJKoS/iPSzEDbSSsrameOcchiegHZgY0ImLIrB0CBudXcQlRNp5uaK0/A/QqtacrEVArQAAAABJRU5ErkJggg==",chainId:8453,chainType:"base",chainTypeMoralis:"base",tokenTrendingDefault:["0x4200000000000000000000000000000000000006","0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf","0xc47da4cb96ce65a96844a01bfae509f9d5454534"]},42161:{...Ir,logo:"data:image/png;base64,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",chainId:42161,chainType:"arbitrum",chainTypeMoralis:"arbitrum",tokenTrendingDefault:["0x82af49447d8a07e3bd95bd0d56f35241523fbab1","0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"]},43114:{...Cr,logo:"data:image/png;base64,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",chainId:43114,chainType:"avax",chainTypeMoralis:"avalanche",tokenTrendingDefault:["0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB","0x0555E30da8f98308EdB960aa94C0Db47230d2B9c"]},59144:{...fi,logo:"data:image/png;base64,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",chainId:59144,chainType:"linea",chainTypeMoralis:"linea",tokenTrendingDefault:["0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f","0x3aab2285ddcddad8edf438c1bab47e1a9d05a9b4"]}},us=e=>Object.values(lt).find(n=>n.chainTypeMoralis===e)?.chainType||null,wi=e=>{const t=new Date,n=new Date(t);n.setDate(n.getDate()-1);const o=new Date(e);return o.setHours(0,0,0,0),t.setHours(0,0,0,0),n.setHours(0,0,0,0),o.getTime()===t.getTime()?"Today":o.getTime()===n.getTime()?"Yesterday":o.toLocaleDateString("en-US",{month:"short",day:"numeric",year:o.getFullYear()!==t.getFullYear()?"numeric":void 0})},ot=e=>new Promise(t=>setTimeout(t,e||0)),bi=(e,t=5,n=5)=>(e=e||"",e?.length<=t+n?e:`${e.substr(0,t)}...${e.substr(e.length-n,n)}`),yi=e=>{if(!e)return"";const t=lt[e];return t?t.chainTypeMoralis:""},Ai=e=>{if(!e)return"";const t=lt[e];return t?t.chainType:""},Bt={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 vi extends ue{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 vi({value:e});let[n,o="0"]=e.split(".");const s=n.startsWith("-");if(s&&(n=n.slice(1)),o=o.replace(/(0+)$/,""),t===0)Math.round(+`.${o}`)===1&&(n=`${BigInt(n)+1n}`),o="";else if(o.length>t){const[a,r,i]=[o.slice(0,t-1),o.slice(t-1,t),o.slice(t)],d=Math.round(+`${r}.${i}`);d>9?o=`${BigInt(a)+BigInt(1)}0`.padStart(a.length+1,"0"):o=`${a}${d}`,o.length>t&&(o=o.slice(1),n=`${BigInt(n)+1n}`),o=o.slice(0,t)}else o=o.padEnd(t,"0");return BigInt(`${s?"-":""}${n}${o}`)}const ki="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",Ve="0x0000000000000000000000000000000000000000",fs=ne.createContext(void 0),eo=()=>{const e=ne.useContext(fs);if(!e)throw new Error("useConnect must be used within ConnectProvider");return{...e,chainData:lt[e.account?.chainId]||void 0,chainId:e.account?.chainId||void 0,chainType:Ai(e.account?.chainId||void 0),chainTypeMoralis:yi(e.account?.chainId||void 0),isChainSupported:!!lt[e.account?.chainId]}},Ti=({children:e,initialAccount:t})=>F.jsx(fs.Provider,{value:{account:t||null},children:e}),Ei=({address:e,chainId:t})=>{const[n,o]=ne.useState(!1),{isChainSupported:s}=eo(),a=ne.useCallback(()=>{if(!e)return;const r=e,i=()=>{o(!0),setTimeout(()=>o(!1),2e3)};try{navigator.clipboard.writeText(r).then(i).catch(()=>{const d=document.createElement("input");d.value=r,document.body.appendChild(d),d.select(),document.execCommand("copy"),d.remove(),i()})}catch{const d=document.createElement("input");d.value=r,document.body.appendChild(d),d.select(),document.execCommand("copy"),d.remove(),i()}},[e]);return F.jsx(F.Fragment,{children:He(e||"")&&F.jsxs("div",{className:"chat-user-info",children:[t&<[t]?.logo&&F.jsx("div",{className:"user-avatar",children:F.jsx("img",{src:lt[t].logo||"",alt:"Chain",width:20,height:20})}),F.jsx("span",{className:"user-wallet",children:F.jsx("a",{style:{pointerEvents:s?"auto":"none"},href:lt[t]?.blockExplorers?.default?.url+"/address/"+e,target:"_blank",rel:"noopener noreferrer",children:bi(e)||"Not connected"})}),F.jsx("button",{className:"copy-address-btn",onClick:a,"aria-label":"Copy wallet address",type:"button",title:n?"Copied!":"Copy address",children:n?F.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:F.jsx("path",{d:"M13.3333 4L6 11.3333L2.66667 8",stroke:"#0B3988",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):F.jsx("svg",{width:"14",height:"14",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:F.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"})})})]})})},Ge=[];for(let e=0;e<256;++e)Ge.push((e+256).toString(16).slice(1));function Si(e,t=0){return(Ge[e[t+0]]+Ge[e[t+1]]+Ge[e[t+2]]+Ge[e[t+3]]+"-"+Ge[e[t+4]]+Ge[e[t+5]]+"-"+Ge[e[t+6]]+Ge[e[t+7]]+"-"+Ge[e[t+8]]+Ge[e[t+9]]+"-"+Ge[e[t+10]]+Ge[e[t+11]]+Ge[e[t+12]]+Ge[e[t+13]]+Ge[e[t+14]]+Ge[e[t+15]]).toLowerCase()}let to;const xi=new Uint8Array(16);function Ii(){if(!to){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");to=crypto.getRandomValues.bind(crypto)}return to(xi)}const ps={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ci(e,t,n){e=e||{};const o=e.random??e.rng?.()??Ii();if(o.length<16)throw new Error("Random bytes length must be >= 16");return o[6]=o[6]&15|64,o[8]=o[8]&63|128,Si(o)}function ms(e,t,n){return ps.randomUUID&&!e?ps.randomUUID():Ci(e)}const no="chat_widget_messages",hs=200,Vt=[{id:ms(),text:`**Welcome! 🚀**
|
|
99
|
-
You're connected and ready to explore DeFi! I can help you trade, check prices, and analyze your portfolio when you need it.`,sender:"bot",timestamp:new Date}];function Bi(e,t){return e&&t?`${e}_${t}`:""}function gs(e){return e.map(t=>({...t,timestamp:new Date(t.timestamp)}))}function ws(){const e=Bt.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 hn(e,t){Bt.setItem(no,JSON.stringify({owner:e,messages:t}))}function Ni(){const{account:e}=eo(),t=Bi(e?.address,e?.chainId),[n,o]=ne.useState(()=>t||"pending"),[s,a]=ne.useState(()=>{const B=ws();return t?B&&B.owner===t?B.messages:Vt:B?.messages??Vt});if(n==="pending"&&t){const B=ws();B&&B.owner===t?a(B.messages):hn(t,s),o(t)}else n!=="pending"&&t&&n!==t&&(a(Vt),hn(t,Vt),o(t));ne.useEffect(()=>{n!=="pending"&&hn(n,s)},[s,n]),ne.useEffect(()=>{const B=[];for(let H=0;H<Bt.length;H++){const h=Bt.key(H);h&&h.startsWith(no+"_")&&B.push(h)}B.forEach(H=>Bt.removeItem(H))},[]);const r=(B,H,h,E,m)=>{const C=h?s.find(ve=>ve.id===h):void 0,M={id:ms(),text:B,sender:H,timestamp:new Date,...C&&{replyTo:{id:C.id,text:C.text,sender:C.sender}},...E&&{buttons:E},...m&&{actionData:m}};return a(ve=>{const I=[...ve,M];return I.length>hs?I.slice(I.length-hs):I}),M},i=(B,H)=>{a(h=>h.map(E=>E.id===B&&E.actionData?{...E,actionData:{...E.actionData,status:H}}:E))},d=(B,H)=>{a(h=>h.map(E=>E.id===B?{...E,text:H}:E))},T=ne.useCallback(()=>{a(Vt),hn(t,Vt)},[t]);return{messages:s,setMessages:a,addMessage:r,updateMessageAction:i,updateMessageText:d,clearMessages:T}}const bs=ne.createContext(void 0),Fi=()=>{const e=ne.useContext(bs);if(!e)throw new Error("useConfig must be used within ConfigProvider");return e},Pi=({children:e,initialConfig:t})=>F.jsx(bs.Provider,{value:{config:t||null},children:e});var Di=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,oo=Math.ceil,_e=Math.floor,ze="[BigNumber Error] ",ys=ze+"Number primitive has more than 15 significant digits: ",st=1e14,ge=14,so=9007199254740991,ao=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],kt=1e7,We=1e9;function As(e){var t,n,o,s=I.prototype={constructor:I,toString:null,valueOf:null},a=new I(1),r=20,i=4,d=-7,T=21,B=-1e7,H=1e7,h=!1,E=1,m=0,C={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},M="0123456789abcdefghijklmnopqrstuvwxyz",ve=!0;function I(l,u){var c,g,w,b,A,y,k,v,S=this;if(!(S instanceof I))return new I(l,u);if(u==null){if(l&&l._isBigNumber===!0){S.s=l.s,!l.c||l.e>H?S.c=S.e=null:l.e<B?S.c=[S.e=0]:(S.e=l.e,S.c=l.c.slice());return}if((y=typeof l=="number")&&l*0==0){if(S.s=1/l<0?(l=-l,-1):1,l===~~l){for(b=0,A=l;A>=10;A/=10,b++);b>H?S.c=S.e=null:(S.e=b,S.c=[l]);return}v=String(l)}else{if(!Di.test(v=String(l)))return o(S,v,y);S.s=v.charCodeAt(0)==45?(v=v.slice(1),-1):1}(b=v.indexOf("."))>-1&&(v=v.replace(".","")),(A=v.search(/e/i))>0?(b<0&&(b=A),b+=+v.slice(A+1),v=v.substring(0,A)):b<0&&(b=v.length)}else{if(Ne(u,2,M.length,"Base"),u==10&&ve)return S=new I(l),pe(S,r+S.e+1,i);if(v=String(l),y=typeof l=="number"){if(l*0!=0)return o(S,v,y,u);if(S.s=1/l<0?(v=v.slice(1),-1):1,I.DEBUG&&v.replace(/^0\.0*|\./,"").length>15)throw Error(ys+l)}else S.s=v.charCodeAt(0)===45?(v=v.slice(1),-1):1;for(c=M.slice(0,u),b=A=0,k=v.length;A<k;A++)if(c.indexOf(g=v.charAt(A))<0){if(g=="."){if(A>b){b=k;continue}}else if(!w&&(v==v.toUpperCase()&&(v=v.toLowerCase())||v==v.toLowerCase()&&(v=v.toUpperCase()))){w=!0,A=-1,b=0;continue}return o(S,String(l),y,u)}y=!1,v=n(v,u,10,S.s),(b=v.indexOf("."))>-1?v=v.replace(".",""):b=v.length}for(A=0;v.charCodeAt(A)===48;A++);for(k=v.length;v.charCodeAt(--k)===48;);if(v=v.slice(A,++k)){if(k-=A,y&&I.DEBUG&&k>15&&(l>so||l!==_e(l)))throw Error(ys+S.s*l);if((b=b-A-1)>H)S.c=S.e=null;else if(b<B)S.c=[S.e=0];else{if(S.e=b,S.c=[],A=(b+1)%ge,b<0&&(A+=ge),A<k){for(A&&S.c.push(+v.slice(0,A)),k-=ge;A<k;)S.c.push(+v.slice(A,A+=ge));A=ge-(v=v.slice(A)).length}else A-=k;for(;A--;v+="0");S.c.push(+v)}}else S.c=[S.e=0]}I.clone=As,I.ROUND_UP=0,I.ROUND_DOWN=1,I.ROUND_CEIL=2,I.ROUND_FLOOR=3,I.ROUND_HALF_UP=4,I.ROUND_HALF_DOWN=5,I.ROUND_HALF_EVEN=6,I.ROUND_HALF_CEIL=7,I.ROUND_HALF_FLOOR=8,I.EUCLID=9,I.config=I.set=function(l){var u,c;if(l!=null)if(typeof l=="object"){if(l.hasOwnProperty(u="DECIMAL_PLACES")&&(c=l[u],Ne(c,0,We,u),r=c),l.hasOwnProperty(u="ROUNDING_MODE")&&(c=l[u],Ne(c,0,8,u),i=c),l.hasOwnProperty(u="EXPONENTIAL_AT")&&(c=l[u],c&&c.pop?(Ne(c[0],-We,0,u),Ne(c[1],0,We,u),d=c[0],T=c[1]):(Ne(c,-We,We,u),d=-(T=c<0?-c:c))),l.hasOwnProperty(u="RANGE"))if(c=l[u],c&&c.pop)Ne(c[0],-We,-1,u),Ne(c[1],1,We,u),B=c[0],H=c[1];else if(Ne(c,-We,We,u),c)B=-(H=c<0?-c:c);else throw Error(ze+u+" cannot be zero: "+c);if(l.hasOwnProperty(u="CRYPTO"))if(c=l[u],c===!!c)if(c)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))h=c;else throw h=!c,Error(ze+"crypto unavailable");else h=c;else throw Error(ze+u+" not true or false: "+c);if(l.hasOwnProperty(u="MODULO_MODE")&&(c=l[u],Ne(c,0,9,u),E=c),l.hasOwnProperty(u="POW_PRECISION")&&(c=l[u],Ne(c,0,We,u),m=c),l.hasOwnProperty(u="FORMAT"))if(c=l[u],typeof c=="object")C=c;else throw Error(ze+u+" not an object: "+c);if(l.hasOwnProperty(u="ALPHABET"))if(c=l[u],typeof c=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(c))ve=c.slice(0,10)=="0123456789",M=c;else throw Error(ze+u+" invalid: "+c)}else throw Error(ze+"Object expected: "+l);return{DECIMAL_PLACES:r,ROUNDING_MODE:i,EXPONENTIAL_AT:[d,T],RANGE:[B,H],CRYPTO:h,MODULO_MODE:E,POW_PRECISION:m,FORMAT:C,ALPHABET:M}},I.isBigNumber=function(l){if(!l||l._isBigNumber!==!0)return!1;if(!I.DEBUG)return!0;var u,c,g=l.c,w=l.e,b=l.s;e:if({}.toString.call(g)=="[object Array]"){if((b===1||b===-1)&&w>=-We&&w<=We&&w===_e(w)){if(g[0]===0){if(w===0&&g.length===1)return!0;break e}if(u=(w+1)%ge,u<1&&(u+=ge),String(g[0]).length==u){for(u=0;u<g.length;u++)if(c=g[u],c<0||c>=st||c!==_e(c))break e;if(c!==0)return!0}}}else if(g===null&&w===null&&(b===null||b===1||b===-1))return!0;throw Error(ze+"Invalid BigNumber: "+l)},I.maximum=I.max=function(){return K(arguments,-1)},I.minimum=I.min=function(){return K(arguments,1)},I.random=(function(){var l=9007199254740992,u=Math.random()*l&2097151?function(){return _e(Math.random()*l)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(c){var g,w,b,A,y,k=0,v=[],S=new I(a);if(c==null?c=r:Ne(c,0,We),A=oo(c/ge),h)if(crypto.getRandomValues){for(g=crypto.getRandomValues(new Uint32Array(A*=2));k<A;)y=g[k]*131072+(g[k+1]>>>11),y>=9e15?(w=crypto.getRandomValues(new Uint32Array(2)),g[k]=w[0],g[k+1]=w[1]):(v.push(y%1e14),k+=2);k=A/2}else if(crypto.randomBytes){for(g=crypto.randomBytes(A*=7);k<A;)y=(g[k]&31)*281474976710656+g[k+1]*1099511627776+g[k+2]*4294967296+g[k+3]*16777216+(g[k+4]<<16)+(g[k+5]<<8)+g[k+6],y>=9e15?crypto.randomBytes(7).copy(g,k):(v.push(y%1e14),k+=7);k=A/7}else throw h=!1,Error(ze+"crypto unavailable");if(!h)for(;k<A;)y=u(),y<9e15&&(v[k++]=y%1e14);for(A=v[--k],c%=ge,A&&c&&(y=ao[ge-c],v[k]=_e(A/y)*y);v[k]===0;v.pop(),k--);if(k<0)v=[b=0];else{for(b=-1;v[0]===0;v.splice(0,1),b-=ge);for(k=1,y=v[0];y>=10;y/=10,k++);k<ge&&(b-=ge-k)}return S.e=b,S.c=v,S}})(),I.sum=function(){for(var l=1,u=arguments,c=new I(u[0]);l<u.length;)c=c.plus(u[l++]);return c},n=(function(){var l="0123456789";function u(c,g,w,b){for(var A,y=[0],k,v=0,S=c.length;v<S;){for(k=y.length;k--;y[k]*=g);for(y[0]+=b.indexOf(c.charAt(v++)),A=0;A<y.length;A++)y[A]>w-1&&(y[A+1]==null&&(y[A+1]=0),y[A+1]+=y[A]/w|0,y[A]%=w)}return y.reverse()}return function(c,g,w,b,A){var y,k,v,S,D,z,se,he,ke=c.indexOf("."),xe=r,Q=i;for(ke>=0&&(S=m,m=0,c=c.replace(".",""),he=new I(g),z=he.pow(c.length-ke),m=S,he.c=u(ht(et(z.c),z.e,"0"),10,w,l),he.e=he.c.length),se=u(c,g,w,A?(y=M,l):(y=l,M)),v=S=se.length;se[--S]==0;se.pop());if(!se[0])return y.charAt(0);if(ke<0?--v:(z.c=se,z.e=v,z.s=b,z=t(z,he,xe,Q,w),se=z.c,D=z.r,v=z.e),k=v+xe+1,ke=se[k],S=w/2,D=D||k<0||se[k+1]!=null,D=Q<4?(ke!=null||D)&&(Q==0||Q==(z.s<0?3:2)):ke>S||ke==S&&(Q==4||D||Q==6&&se[k-1]&1||Q==(z.s<0?8:7)),k<1||!se[0])c=D?ht(y.charAt(1),-xe,y.charAt(0)):y.charAt(0);else{if(se.length=k,D)for(--w;++se[--k]>w;)se[k]=0,k||(++v,se=[1].concat(se));for(S=se.length;!se[--S];);for(ke=0,c="";ke<=S;c+=y.charAt(se[ke++]));c=ht(c,v,y.charAt(0))}return c}})(),t=(function(){function l(g,w,b){var A,y,k,v,S=0,D=g.length,z=w%kt,se=w/kt|0;for(g=g.slice();D--;)k=g[D]%kt,v=g[D]/kt|0,A=se*k+v*z,y=z*k+A%kt*kt+S,S=(y/b|0)+(A/kt|0)+se*v,g[D]=y%b;return S&&(g=[S].concat(g)),g}function u(g,w,b,A){var y,k;if(b!=A)k=b>A?1:-1;else for(y=k=0;y<b;y++)if(g[y]!=w[y]){k=g[y]>w[y]?1:-1;break}return k}function c(g,w,b,A){for(var y=0;b--;)g[b]-=y,y=g[b]<w[b]?1:0,g[b]=y*A+g[b]-w[b];for(;!g[0]&&g.length>1;g.splice(0,1));}return function(g,w,b,A,y){var k,v,S,D,z,se,he,ke,xe,Q,we,Se,Ye,at,Xe,Pe,je,Le=g.s==w.s?1:-1,De=g.c,Te=w.c;if(!De||!De[0]||!Te||!Te[0])return new I(!g.s||!w.s||(De?Te&&De[0]==Te[0]:!Te)?NaN:De&&De[0]==0||!Te?Le*0:Le/0);for(ke=new I(Le),xe=ke.c=[],v=g.e-w.e,Le=b+v+1,y||(y=st,v=$e(g.e/ge)-$e(w.e/ge),Le=Le/ge|0),S=0;Te[S]==(De[S]||0);S++);if(Te[S]>(De[S]||0)&&v--,Le<0)xe.push(1),D=!0;else{for(at=De.length,Pe=Te.length,S=0,Le+=2,z=_e(y/(Te[0]+1)),z>1&&(Te=l(Te,z,y),De=l(De,z,y),Pe=Te.length,at=De.length),Ye=Pe,Q=De.slice(0,Pe),we=Q.length;we<Pe;Q[we++]=0);je=Te.slice(),je=[0].concat(je),Xe=Te[0],Te[1]>=y/2&&Xe++;do{if(z=0,k=u(Te,Q,Pe,we),k<0){if(Se=Q[0],Pe!=we&&(Se=Se*y+(Q[1]||0)),z=_e(Se/Xe),z>1)for(z>=y&&(z=y-1),se=l(Te,z,y),he=se.length,we=Q.length;u(se,Q,he,we)==1;)z--,c(se,Pe<he?je:Te,he,y),he=se.length,k=1;else z==0&&(k=z=1),se=Te.slice(),he=se.length;if(he<we&&(se=[0].concat(se)),c(Q,se,we,y),we=Q.length,k==-1)for(;u(Te,Q,Pe,we)<1;)z++,c(Q,Pe<we?je:Te,we,y),we=Q.length}else k===0&&(z++,Q=[0]);xe[S++]=z,Q[0]?Q[we++]=De[Ye]||0:(Q=[De[Ye]],we=1)}while((Ye++<at||Q[0]!=null)&&Le--);D=Q[0]!=null,xe[0]||xe.splice(0,1)}if(y==st){for(S=1,Le=xe[0];Le>=10;Le/=10,S++);pe(ke,b+(ke.e=S+v*ge-1)+1,A,D)}else ke.e=v,ke.r=+D;return ke}})();function Y(l,u,c,g){var w,b,A,y,k;if(c==null?c=i:Ne(c,0,8),!l.c)return l.toString();if(w=l.c[0],A=l.e,u==null)k=et(l.c),k=g==1||g==2&&(A<=d||A>=T)?wn(k,A):ht(k,A,"0");else if(l=pe(new I(l),u,c),b=l.e,k=et(l.c),y=k.length,g==1||g==2&&(u<=b||b<=d)){for(;y<u;k+="0",y++);k=wn(k,b)}else if(u-=A+(g===2&&b>A),k=ht(k,b,"0"),b+1>y){if(--u>0)for(k+=".";u--;k+="0");}else if(u+=b-y,u>0)for(b+1==y&&(k+=".");u--;k+="0");return l.s<0&&w?"-"+k:k}function K(l,u){for(var c,g,w=1,b=new I(l[0]);w<l.length;w++)g=new I(l[w]),(!g.s||(c=Nt(b,g))===u||c===0&&b.s===u)&&(b=g);return b}function fe(l,u,c){for(var g=1,w=u.length;!u[--w];u.pop());for(w=u[0];w>=10;w/=10,g++);return(c=g+c*ge-1)>H?l.c=l.e=null:c<B?l.c=[l.e=0]:(l.e=c,l.c=u),l}o=(function(){var l=/^(-?)0([xbo])(?=\w[\w.]*$)/i,u=/^([^.]+)\.$/,c=/^\.([^.]+)$/,g=/^-?(Infinity|NaN)$/,w=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(b,A,y,k){var v,S=y?A:A.replace(w,"");if(g.test(S))b.s=isNaN(S)?null:S<0?-1:1;else{if(!y&&(S=S.replace(l,function(D,z,se){return v=(se=se.toLowerCase())=="x"?16:se=="b"?2:8,!k||k==v?z:D}),k&&(v=k,S=S.replace(u,"$1").replace(c,"0.$1")),A!=S))return new I(S,v);if(I.DEBUG)throw Error(ze+"Not a"+(k?" base "+k:"")+" number: "+A);b.s=null}b.c=b.e=null}})();function pe(l,u,c,g){var w,b,A,y,k,v,S,D=l.c,z=ao;if(D){e:{for(w=1,y=D[0];y>=10;y/=10,w++);if(b=u-w,b<0)b+=ge,A=u,k=D[v=0],S=_e(k/z[w-A-1]%10);else if(v=oo((b+1)/ge),v>=D.length)if(g){for(;D.length<=v;D.push(0));k=S=0,w=1,b%=ge,A=b-ge+1}else break e;else{for(k=y=D[v],w=1;y>=10;y/=10,w++);b%=ge,A=b-ge+w,S=A<0?0:_e(k/z[w-A-1]%10)}if(g=g||u<0||D[v+1]!=null||(A<0?k:k%z[w-A-1]),g=c<4?(S||g)&&(c==0||c==(l.s<0?3:2)):S>5||S==5&&(c==4||g||c==6&&(b>0?A>0?k/z[w-A]:0:D[v-1])%10&1||c==(l.s<0?8:7)),u<1||!D[0])return D.length=0,g?(u-=l.e+1,D[0]=z[(ge-u%ge)%ge],l.e=-u||0):D[0]=l.e=0,l;if(b==0?(D.length=v,y=1,v--):(D.length=v+1,y=z[ge-b],D[v]=A>0?_e(k/z[w-A]%z[A])*y:0),g)for(;;)if(v==0){for(b=1,A=D[0];A>=10;A/=10,b++);for(A=D[0]+=y,y=1;A>=10;A/=10,y++);b!=y&&(l.e++,D[0]==st&&(D[0]=1));break}else{if(D[v]+=y,D[v]!=st)break;D[v--]=0,y=1}for(b=D.length;D[--b]===0;D.pop());}l.e>H?l.c=l.e=null:l.e<B&&(l.c=[l.e=0])}return l}function Be(l){var u,c=l.e;return c===null?l.toString():(u=et(l.c),u=c<=d||c>=T?wn(u,c):ht(u,c,"0"),l.s<0?"-"+u:u)}return s.absoluteValue=s.abs=function(){var l=new I(this);return l.s<0&&(l.s=1),l},s.comparedTo=function(l,u){return Nt(this,new I(l,u))},s.decimalPlaces=s.dp=function(l,u){var c,g,w,b=this;if(l!=null)return Ne(l,0,We),u==null?u=i:Ne(u,0,8),pe(new I(b),l+b.e+1,u);if(!(c=b.c))return null;if(g=((w=c.length-1)-$e(this.e/ge))*ge,w=c[w])for(;w%10==0;w/=10,g--);return g<0&&(g=0),g},s.dividedBy=s.div=function(l,u){return t(this,new I(l,u),r,i)},s.dividedToIntegerBy=s.idiv=function(l,u){return t(this,new I(l,u),0,1)},s.exponentiatedBy=s.pow=function(l,u){var c,g,w,b,A,y,k,v,S,D=this;if(l=new I(l),l.c&&!l.isInteger())throw Error(ze+"Exponent not an integer: "+Be(l));if(u!=null&&(u=new I(u)),y=l.e>14,!D.c||!D.c[0]||D.c[0]==1&&!D.e&&D.c.length==1||!l.c||!l.c[0])return S=new I(Math.pow(+Be(D),y?l.s*(2-gn(l)):+Be(l))),u?S.mod(u):S;if(k=l.s<0,u){if(u.c?!u.c[0]:!u.s)return new I(NaN);g=!k&&D.isInteger()&&u.isInteger(),g&&(D=D.mod(u))}else{if(l.e>9&&(D.e>0||D.e<-1||(D.e==0?D.c[0]>1||y&&D.c[1]>=24e7:D.c[0]<8e13||y&&D.c[0]<=9999975e7)))return b=D.s<0&&gn(l)?-0:0,D.e>-1&&(b=1/b),new I(k?1/b:b);m&&(b=oo(m/ge+2))}for(y?(c=new I(.5),k&&(l.s=1),v=gn(l)):(w=Math.abs(+Be(l)),v=w%2),S=new I(a);;){if(v){if(S=S.times(D),!S.c)break;b?S.c.length>b&&(S.c.length=b):g&&(S=S.mod(u))}if(w){if(w=_e(w/2),w===0)break;v=w%2}else if(l=l.times(c),pe(l,l.e+1,1),l.e>14)v=gn(l);else{if(w=+Be(l),w===0)break;v=w%2}D=D.times(D),b?D.c&&D.c.length>b&&(D.c.length=b):g&&(D=D.mod(u))}return g?S:(k&&(S=a.div(S)),u?S.mod(u):b?pe(S,m,i,A):S)},s.integerValue=function(l){var u=new I(this);return l==null?l=i:Ne(l,0,8),pe(u,u.e+1,l)},s.isEqualTo=s.eq=function(l,u){return Nt(this,new I(l,u))===0},s.isFinite=function(){return!!this.c},s.isGreaterThan=s.gt=function(l,u){return Nt(this,new I(l,u))>0},s.isGreaterThanOrEqualTo=s.gte=function(l,u){return(u=Nt(this,new I(l,u)))===1||u===0},s.isInteger=function(){return!!this.c&&$e(this.e/ge)>this.c.length-2},s.isLessThan=s.lt=function(l,u){return Nt(this,new I(l,u))<0},s.isLessThanOrEqualTo=s.lte=function(l,u){return(u=Nt(this,new I(l,u)))===-1||u===0},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&&this.c[0]==0},s.minus=function(l,u){var c,g,w,b,A=this,y=A.s;if(l=new I(l,u),u=l.s,!y||!u)return new I(NaN);if(y!=u)return l.s=-u,A.plus(l);var k=A.e/ge,v=l.e/ge,S=A.c,D=l.c;if(!k||!v){if(!S||!D)return S?(l.s=-u,l):new I(D?A:NaN);if(!S[0]||!D[0])return D[0]?(l.s=-u,l):new I(S[0]?A:i==3?-0:0)}if(k=$e(k),v=$e(v),S=S.slice(),y=k-v){for((b=y<0)?(y=-y,w=S):(v=k,w=D),w.reverse(),u=y;u--;w.push(0));w.reverse()}else for(g=(b=(y=S.length)<(u=D.length))?y:u,y=u=0;u<g;u++)if(S[u]!=D[u]){b=S[u]<D[u];break}if(b&&(w=S,S=D,D=w,l.s=-l.s),u=(g=D.length)-(c=S.length),u>0)for(;u--;S[c++]=0);for(u=st-1;g>y;){if(S[--g]<D[g]){for(c=g;c&&!S[--c];S[c]=u);--S[c],S[g]+=st}S[g]-=D[g]}for(;S[0]==0;S.splice(0,1),--v);return S[0]?fe(l,S,v):(l.s=i==3?-1:1,l.c=[l.e=0],l)},s.modulo=s.mod=function(l,u){var c,g,w=this;return l=new I(l,u),!w.c||!l.s||l.c&&!l.c[0]?new I(NaN):!l.c||w.c&&!w.c[0]?new I(w):(E==9?(g=l.s,l.s=1,c=t(w,l,0,3),l.s=g,c.s*=g):c=t(w,l,0,E),l=w.minus(c.times(l)),!l.c[0]&&E==1&&(l.s=w.s),l)},s.multipliedBy=s.times=function(l,u){var c,g,w,b,A,y,k,v,S,D,z,se,he,ke,xe,Q=this,we=Q.c,Se=(l=new I(l,u)).c;if(!we||!Se||!we[0]||!Se[0])return!Q.s||!l.s||we&&!we[0]&&!Se||Se&&!Se[0]&&!we?l.c=l.e=l.s=null:(l.s*=Q.s,!we||!Se?l.c=l.e=null:(l.c=[0],l.e=0)),l;for(g=$e(Q.e/ge)+$e(l.e/ge),l.s*=Q.s,k=we.length,D=Se.length,k<D&&(he=we,we=Se,Se=he,w=k,k=D,D=w),w=k+D,he=[];w--;he.push(0));for(ke=st,xe=kt,w=D;--w>=0;){for(c=0,z=Se[w]%xe,se=Se[w]/xe|0,A=k,b=w+A;b>w;)v=we[--A]%xe,S=we[A]/xe|0,y=se*v+S*z,v=z*v+y%xe*xe+he[b]+c,c=(v/ke|0)+(y/xe|0)+se*S,he[b--]=v%ke;he[b]=c}return c?++g:he.splice(0,1),fe(l,he,g)},s.negated=function(){var l=new I(this);return l.s=-l.s||null,l},s.plus=function(l,u){var c,g=this,w=g.s;if(l=new I(l,u),u=l.s,!w||!u)return new I(NaN);if(w!=u)return l.s=-u,g.minus(l);var b=g.e/ge,A=l.e/ge,y=g.c,k=l.c;if(!b||!A){if(!y||!k)return new I(w/0);if(!y[0]||!k[0])return k[0]?l:new I(y[0]?g:w*0)}if(b=$e(b),A=$e(A),y=y.slice(),w=b-A){for(w>0?(A=b,c=k):(w=-w,c=y),c.reverse();w--;c.push(0));c.reverse()}for(w=y.length,u=k.length,w-u<0&&(c=k,k=y,y=c,u=w),w=0;u;)w=(y[--u]=y[u]+k[u]+w)/st|0,y[u]=st===y[u]?0:y[u]%st;return w&&(y=[w].concat(y),++A),fe(l,y,A)},s.precision=s.sd=function(l,u){var c,g,w,b=this;if(l!=null&&l!==!!l)return Ne(l,1,We),u==null?u=i:Ne(u,0,8),pe(new I(b),l,u);if(!(c=b.c))return null;if(w=c.length-1,g=w*ge+1,w=c[w]){for(;w%10==0;w/=10,g--);for(w=c[0];w>=10;w/=10,g++);}return l&&b.e+1>g&&(g=b.e+1),g},s.shiftedBy=function(l){return Ne(l,-so,so),this.times("1e"+l)},s.squareRoot=s.sqrt=function(){var l,u,c,g,w,b=this,A=b.c,y=b.s,k=b.e,v=r+4,S=new I("0.5");if(y!==1||!A||!A[0])return new I(!y||y<0&&(!A||A[0])?NaN:A?b:1/0);if(y=Math.sqrt(+Be(b)),y==0||y==1/0?(u=et(A),(u.length+k)%2==0&&(u+="0"),y=Math.sqrt(+u),k=$e((k+1)/2)-(k<0||k%2),y==1/0?u="5e"+k:(u=y.toExponential(),u=u.slice(0,u.indexOf("e")+1)+k),c=new I(u)):c=new I(y+""),c.c[0]){for(k=c.e,y=k+v,y<3&&(y=0);;)if(w=c,c=S.times(w.plus(t(b,w,v,1))),et(w.c).slice(0,y)===(u=et(c.c)).slice(0,y))if(c.e<k&&--y,u=u.slice(y-3,y+1),u=="9999"||!g&&u=="4999"){if(!g&&(pe(w,w.e+r+2,0),w.times(w).eq(b))){c=w;break}v+=4,y+=4,g=1}else{(!+u||!+u.slice(1)&&u.charAt(0)=="5")&&(pe(c,c.e+r+2,1),l=!c.times(c).eq(b));break}}return pe(c,c.e+r+1,i,l)},s.toExponential=function(l,u){return l!=null&&(Ne(l,0,We),l++),Y(this,l,u,1)},s.toFixed=function(l,u){return l!=null&&(Ne(l,0,We),l=l+this.e+1),Y(this,l,u)},s.toFormat=function(l,u,c){var g,w=this;if(c==null)l!=null&&u&&typeof u=="object"?(c=u,u=null):l&&typeof l=="object"?(c=l,l=u=null):c=C;else if(typeof c!="object")throw Error(ze+"Argument not an object: "+c);if(g=w.toFixed(l,u),w.c){var b,A=g.split("."),y=+c.groupSize,k=+c.secondaryGroupSize,v=c.groupSeparator||"",S=A[0],D=A[1],z=w.s<0,se=z?S.slice(1):S,he=se.length;if(k&&(b=y,y=k,k=b,he-=b),y>0&&he>0){for(b=he%y||y,S=se.substr(0,b);b<he;b+=y)S+=v+se.substr(b,y);k>0&&(S+=v+se.slice(b)),z&&(S="-"+S)}g=D?S+(c.decimalSeparator||"")+((k=+c.fractionGroupSize)?D.replace(new RegExp("\\d{"+k+"}\\B","g"),"$&"+(c.fractionGroupSeparator||"")):D):S}return(c.prefix||"")+g+(c.suffix||"")},s.toFraction=function(l){var u,c,g,w,b,A,y,k,v,S,D,z,se=this,he=se.c;if(l!=null&&(y=new I(l),!y.isInteger()&&(y.c||y.s!==1)||y.lt(a)))throw Error(ze+"Argument "+(y.isInteger()?"out of range: ":"not an integer: ")+Be(y));if(!he)return new I(se);for(u=new I(a),v=c=new I(a),g=k=new I(a),z=et(he),b=u.e=z.length-se.e-1,u.c[0]=ao[(A=b%ge)<0?ge+A:A],l=!l||y.comparedTo(u)>0?b>0?u:v:y,A=H,H=1/0,y=new I(z),k.c[0]=0;S=t(y,u,0,1),w=c.plus(S.times(g)),w.comparedTo(l)!=1;)c=g,g=w,v=k.plus(S.times(w=v)),k=w,u=y.minus(S.times(w=u)),y=w;return w=t(l.minus(c),g,0,1),k=k.plus(w.times(v)),c=c.plus(w.times(g)),k.s=v.s=se.s,b=b*2,D=t(v,g,b,i).minus(se).abs().comparedTo(t(k,c,b,i).minus(se).abs())<1?[v,g]:[k,c],H=A,D},s.toNumber=function(){return+Be(this)},s.toPrecision=function(l,u){return l!=null&&Ne(l,1,We),Y(this,l,u,2)},s.toString=function(l){var u,c=this,g=c.s,w=c.e;return w===null?g?(u="Infinity",g<0&&(u="-"+u)):u="NaN":(l==null?u=w<=d||w>=T?wn(et(c.c),w):ht(et(c.c),w,"0"):l===10&&ve?(c=pe(new I(c),r+w+1,i),u=ht(et(c.c),c.e,"0")):(Ne(l,2,M.length,"Base"),u=n(ht(et(c.c),w,"0"),10,l,g,!0)),g<0&&c.c[0]&&(u="-"+u)),u},s.valueOf=s.toJSON=function(){return Be(this)},s._isBigNumber=!0,s[Symbol.toStringTag]="BigNumber",s[Symbol.for("nodejs.util.inspect.custom")]=s.valueOf,e!=null&&I.set(e),I}function $e(e){var t=e|0;return e>0||e===t?t:t-1}function et(e){for(var t,n,o=1,s=e.length,a=e[0]+"";o<s;){for(t=e[o++]+"",n=ge-t.length;n--;t="0"+t);a+=t}for(s=a.length;a.charCodeAt(--s)===48;);return a.slice(0,s+1||1)}function Nt(e,t){var n,o,s=e.c,a=t.c,r=e.s,i=t.s,d=e.e,T=t.e;if(!r||!i)return null;if(n=s&&!s[0],o=a&&!a[0],n||o)return n?o?0:-i:r;if(r!=i)return r;if(n=r<0,o=d==T,!s||!a)return o?0:!s^n?1:-1;if(!o)return d>T^n?1:-1;for(i=(d=s.length)<(T=a.length)?d:T,r=0;r<i;r++)if(s[r]!=a[r])return s[r]>a[r]^n?1:-1;return d==T?0:d>T^n?1:-1}function Ne(e,t,n,o){if(e<t||e>n||e!==_e(e))throw Error(ze+(o||"Argument")+(typeof e=="number"?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function gn(e){var t=e.c.length-1;return $e(e.e/ge)==t&&e.c[t]%2!=0}function wn(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function ht(e,t,n){var o,s;if(t<0){for(s=n+".";++t;s+=n);e=s+e}else if(o=e.length,++t>o){for(s=n,t-=o;--t;s+=n);e+=s}else t<o&&(e=e.slice(0,t)+"."+e.slice(t));return e}var ce=As();class $t{baseUrl;constructor(t){this.baseUrl=t}buildUrl(t,n){const o=new URL(t,this.baseUrl);return n&&Object.entries(n).forEach(([s,a])=>{a!=null&&o.searchParams.append(s,String(a))}),o.toString()}async get(t,n={}){const o=this.buildUrl(t,n.query),s=await fetch(o,{method:"GET",headers:n.headers||{}});if(!s.ok){let r=null;try{r=await s.json()}catch{try{const d=await s.text();d&&(r={message:d})}catch{}}const i=new Error(r?.message||r?.errorMessage||`HTTP ${s.status}: ${s.statusText}`);throw i.status=s.status,i.statusText=s.statusText,r&&(i.data=r),i}return{data:await s.json(),status:s.status}}async post(t,n,o={}){const s=this.buildUrl(t,o.query),a=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json",...o.headers},body:JSON.stringify(n)});if(!a.ok){let i=null;try{i=await a.json()}catch{try{const T=await a.text();T&&(i={message:T})}catch{}}const d=new Error(i?.message||i?.errorMessage||`HTTP ${a.status}: ${a.statusText}`);throw d.status=a.status,d.statusText=a.statusText,i&&(d.data=i),d}return{data:await a.json(),status:a.status}}}const Oi=.01,vs=new $t("https://wallet-api.pantograph.app"),Ui="https://deep-index.moralis.io";function en(){return"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImY4NmY0Yzc2LTA3MDQtNGEwZS04YTA0LWUwODllOGQxMGZjZCIsIm9yZ0lkIjoiMzk0MDAyIiwidXNlcklkIjoiNDA0ODUzIiwidHlwZUlkIjoiYjQyODExOTQtOGQ0Yi00NjkxLTlhZjItNjU4ODE2NzExYmRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MTY4NjQyNTYsImV4cCI6NDg3MjYyNDI1Nn0.V8crfBIBardAnZkc05FD0hQIJBeZxMqvzRnYExVtnF8"}function tn(e){return{"X-API-Key":e,Accept:"application/json"}}const nn=new $t(Ui);async function Qe(e){const{address:t,chain:n="base",token_addresses:o,exclude_spam:s,exclude_unverified_contracts:a}=e;if(!t)throw new Error("Address is required");try{const r=en(),i={chain:n,exclude_spam:s??!1,exclude_unverified_contracts:a??!1};o&&(i.token_addresses=o);const T=(await nn.get(`/api/v2.2/wallets/${encodeURIComponent(t)}/tokens`,{query:i,headers:tn(r)})).data;if(T?.result?.length>0){T.result=T.result.filter(B=>new ce(B?.balance||0).gt(0)),T.result=T.result.map(B=>({...B,token_address:B.token_address===ki?Ve:B.token_address}));try{const B=us(n)??n,H=T.result.map(E=>E.token_address),h=await vs.get(`/keyrings/tokens/${B}/v2`,{query:{addresses:H.join(",")}});if(Array.isArray(h.data)){const E=new Map;for(const m of h.data)m.address&&m.price!=null&&E.set(m.address.toLowerCase(),parseFloat(String(m.price)));T.result=T.result.map(m=>{const C=E.get(m.token_address.toLowerCase());if(C==null)return m;const M=ce(m.balance_formatted||"0").multipliedBy(C).toNumber();return{...m,usd_price:C,usd_value:M}}),T.result=T.result.filter(m=>m.usd_value==null||new ce(m.usd_value).gte(Oi))}}catch(B){console.warn("⚠️ Failed to fetch Pantograph prices:",B)}}return{success:!0,data:T}}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 ks(e){const{address:t,chain:n="base"}=e;if(!t)throw new Error("Token address is required");try{const o=us(n)??n,s=await vs.get(`/keyrings/tokens/${o}/v2`,{query:{addresses:t}}),a=t===Ve,i=(Array.isArray(s.data)?s.data:[]).find(m=>m.address?.toLowerCase()===t.toLowerCase()||a&&m.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 d=en(),[T,B]=await Promise.allSettled([nn.get("/api/v2.2/erc20/metadata",{query:{chain:n,addresses:[t]},headers:tn(d)}),nn.get(`/api/v2.2/erc20/${encodeURIComponent(t)}/price`,{query:{chain:n,include:"percent_change"},headers:tn(d)})]),H=T.status==="fulfilled"?T.value.data:[];if(!H||H.length===0)return{success:!1,error:"Token metadata not found"};const h=H[0],E=B.status==="fulfilled"?B.value.data:void 0;return{success:!0,data:{token_address:h.token_address,name:h.name,symbol:h.symbol,decimals:h.decimals,logo:h.logo||h.thumbnail,thumbnail:h.thumbnail,usd_price:E?.usdPrice??void 0,usd_price_24hr_percent_change:E?.["24hrPercentChange"]?parseFloat(E["24hrPercentChange"]):void 0,usd_price_24hr_usd_change:E?.usdPriceChange24hr??void 0}}}catch(o){const s=o instanceof Error?o.message:"Unknown error";return console.error("❌ Error fetching token metadata:",s),{success:!1,error:s}}}async function Ri(e){const{prompt:t,model:n="gpt-4.1-mini",stream:o=!1,systemPrompt:s}=e;if(!t)throw new Error("Prompt is required");try{const a=en(),r=new $t("https://cortex-api.moralis.io"),i=s?`${s}
|
|
86
|
+
`),{docsPath:n,name:"AbiFunctionNotFoundError"})}}class Dr extends ue{constructor(t,n){super("Found ambiguous types in overloaded ABI items.",{metaMessages:[`\`${t.type}\` in \`${Xn(t.abiItem)}\`, and`,`\`${n.type}\` in \`${Xn(n.abiItem)}\``,"","These types encode differently and cannot be distinguished at runtime.","Remove one of the ambiguous items in the ABI."],name:"AbiItemAmbiguityError"})}}class Ur extends ue{constructor(t,{docsPath:n}){super([`Type "${t}" is not a valid encoding type.`,"Please provide a valid ABI type."].join(`
|
|
87
|
+
`),{docsPath:n,name:"InvalidAbiEncodingType"})}}class Rr extends ue{constructor(t){super([`Value "${t}" is not a valid array.`].join(`
|
|
88
|
+
`),{name:"InvalidArrayError"})}}class Mr extends ue{constructor(t){super([`"${t}" is not a valid definition type.`,'Valid types: "function", "event", "error"'].join(`
|
|
89
|
+
`),{name:"InvalidDefinitionTypeError"})}}const Hr=e=>_o(Nn(e));function Wr(e){return Hr(e)}function Vr(e,t){return e.exec(t)?.groups}const ss=/^tuple(?<array>(\[(\d*)\])*)$/;function Kn(e){let t=e.type;if(ss.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+=Kn(a),o<n-1&&(t+=", ")}const s=Vr(ss,e.type);return t+=`)${s?.array||""}`,Kn({...e,type:t})}return"indexed"in e&&e.indexed&&(t=`${t} indexed`),e.name?`${t} ${e.name}`:t}function Zt(e){let t="";const n=e.length;for(let s=0;s<n;s++){const o=e[s];t+=Kn(o),s!==n-1&&(t+=", ")}return t}function Gr(e){return e.type==="function"?`function ${e.name}(${Zt(e.inputs)})${e.stateMutability&&e.stateMutability!=="nonpayable"?` ${e.stateMutability}`:""}${e.outputs?.length?` returns (${Zt(e.outputs)})`:""}`:e.type==="event"?`event ${e.name}(${Zt(e.inputs)})`:e.type==="error"?`error ${e.name}(${Zt(e.inputs)})`:e.type==="constructor"?`constructor(${Zt(e.inputs)})${e.stateMutability==="payable"?" payable":""}`:e.type==="fallback"?`fallback() external${e.stateMutability==="payable"?" payable":""}`:"receive() external payable"}function Yr(e){let t=!0,n="",s=0,o="",a=!1;for(let r=0;r<e.length;r++){const c=e[r];if(["(",")",","].includes(c)&&(t=!0),c==="("&&s++,c===")"&&s--,!!t){if(s===0){if(c===" "&&["event","function",""].includes(o))o="";else if(o+=c,c===")"){a=!0;break}continue}if(c===" "){e[r-1]!==","&&n!==","&&n!==",("&&(n="",t=!1);continue}o+=c,n+=c}}if(!a)throw new ue("Unable to normalize signature.");return o}const Jr=e=>{const t=typeof e=="string"?e:Gr(e);return Yr(t)};function as(e){return Wr(Jr(e))}const rs=e=>jn(as(e),0,4),zr=/^(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 jr(e,t){if(e.length!==t.length)throw new Or({expectedLength:e.length,givenLength:t.length});const n=qr({params:e,values:t}),s=_n(n);return s.length===0?"0x":s}function qr({params:e,values:t}){const n=[];for(let s=0;s<e.length;s++)n.push(Zn({param:e[s],value:t[s]}));return n}function Zn({param:e,value:t}){const n=ti(e.type);if(n){const[s,o]=n;return Xr(t,{length:s,param:{...e,type:o}})}if(e.type==="tuple")return ei(t,{param:e});if(e.type==="address")return Qr(t);if(e.type==="bool")return Zr(t);if(e.type.startsWith("uint")||e.type.startsWith("int")){const s=e.type.startsWith("int"),[,,o="256"]=zr.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 $r(t);throw new Ur(e.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function _n(e){let t=0;for(let a=0;a<e.length;a++){const{dynamic:r,encoded:c}=e[a];r?t+=32:t+=Je(c)}const n=[],s=[];let o=0;for(let a=0;a<e.length;a++){const{dynamic:r,encoded:c}=e[a];r?(n.push(le(t+o,{size:32})),s.push(c),o+=Je(c)):n.push(c)}return Ht([...n,...s])}function Qr(e){if(!He(e))throw new ct({address:e});return{dynamic:!1,encoded:bt(e.toLowerCase())}}function Xr(e,{length:t,param:n}){const s=t===null;if(!Array.isArray(e))throw new Rr(e);if(!s&&e.length!==t)throw new Pr({expectedLength:t,givenLength:e.length,type:`${n.type}[${t}]`});let o=!1;const a=[];for(let r=0;r<e.length;r++){const c=Zn({param:n,value:e[r]});c.dynamic&&(o=!0),a.push(c)}if(s||o){const r=_n(a);if(s){const c=le(a.length,{size:32});return{dynamic:!0,encoded:a.length>0?Ht([c,r]):c}}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(le(s,{size:32})),o])}}if(s!==Number.parseInt(n,10))throw new Lr({expectedSize:Number.parseInt(n,10),value:e});return{dynamic:!1,encoded:bt(e,{dir:"right"})}}function Zr(e){if(typeof e!="boolean")throw new ue(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:bt(Ao(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 In({max:s.toString(),min:o.toString(),signed:t,size:n/8,value:e.toString()})}return{dynamic:!1,encoded:le(e,{size:32,signed:t})}}function $r(e){const t=ko(e),n=Math.ceil(Je(t)/32),s=[];for(let o=0;o<n;o++)s.push(bt(jn(t,o*32,(o+1)*32),{dir:"right"}));return{dynamic:!0,encoded:Ht([bt(le(Je(t),{size:32})),...s])}}function ei(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,c=Zn({param:a,value:e[r]});s.push(c),c.dynamic&&(n=!0)}return{dynamic:n,encoded:n?_n(s):Ht(s.map(({encoded:o})=>o))}}function ti(e){const t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}const ni=as;function oi(e){const{abi:t,args:n=[],name:s}=e,o=Lt(s,{strict:!1}),a=t.filter(c=>o?c.type==="function"?rs(c)===s:c.type==="event"?ni(c)===s:!1:"name"in c&&c.name===s);if(a.length===0)return;if(a.length===1)return a[0];let r;for(const c of a){if(!("inputs"in c))continue;if(!n||n.length===0){if(!c.inputs||c.inputs.length===0)return c;continue}if(!c.inputs||c.inputs.length===0||c.inputs.length!==n.length)continue;if(n.every((T,N)=>{const W="inputs"in c&&c.inputs[N];return W?$n(T,W):!1})){if(r&&"inputs"in r&&r.inputs){const T=is(c.inputs,r.inputs,n);if(T)throw new Dr({abiItem:c,type:T[0]},{abiItem:r,type:T[1]})}r=c}}return r||a[0]}function $n(e,t){const n=typeof e,s=t.type;switch(s){case"address":return He(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"&&$n(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=>$n(o,{...t,type:s.replace(/(\[[0-9]{0,}\])$/,"")})):!1}}function is(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 is(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")?He(n[s],{strict:!1}):r.includes("address")&&r.includes("bytes")?He(n[s],{strict:!1}):!1)return r}}function cs(e){return e.reduce((t,{slot:n,value:s})=>`${t} ${n}: ${s}
|
|
90
|
+
`,"")}function si(e){return e.reduce((t,{address:n,...s})=>{let o=`${t} ${n}:
|
|
91
|
+
`;return s.nonce&&(o+=` nonce: ${s.nonce}
|
|
92
|
+
`),s.balance&&(o+=` balance: ${s.balance}
|
|
93
|
+
`),s.code&&(o+=` code: ${s.code}
|
|
94
|
+
`),s.state&&(o+=` state:
|
|
95
|
+
`,o+=cs(s.state)),s.stateDiff&&(o+=` stateDiff:
|
|
96
|
+
`,o+=cs(s.stateDiff)),o},` State Override:
|
|
97
|
+
`).slice(0,-1)}class ai extends ue{constructor(t,{account:n,docsPath:s,chain:o,data:a,gas:r,gasPrice:c,maxFeePerGas:d,maxPriorityFeePerGas:T,nonce:N,to:W,value:h,stateOverride:C}){const m=n?Qn(n):void 0;let I=No({from:m?.address,to:W,value:typeof h<"u"&&`${ga(h)} ${o?.nativeCurrency?.symbol||"ETH"}`,data:a,gas:r,gasPrice:typeof c<"u"&&`${St(c)} gwei`,maxFeePerGas:typeof d<"u"&&`${St(d)} gwei`,maxPriorityFeePerGas:typeof T<"u"&&`${St(T)} gwei`,nonce:N});C&&(I+=`
|
|
98
|
+
${si(C)}`),super(t.shortMessage,{cause:t,docsPath:s,metaMessages:[...t.metaMessages?[...t.metaMessages," "]:[],"Raw Call Arguments:",I].filter(Boolean),name:"CallExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=t}}function ri(e,t){const n=(e.details||"").toLowerCase(),s=e instanceof ue?e.walk(o=>o?.code===Wt.code):e;return s instanceof ue?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}):Dn.nodeMessage.test(n)?new Dn({cause:e,maxFeePerGas:t?.maxFeePerGas}):Un.nodeMessage.test(n)?new Un({cause:e,nonce:t?.nonce}):Rn.nodeMessage.test(n)?new Rn({cause:e,nonce:t?.nonce}):Mn.nodeMessage.test(n)?new Mn({cause:e,nonce:t?.nonce}):Hn.nodeMessage.test(n)?new Hn({cause:e}):Wn.nodeMessage.test(n)?new Wn({cause:e,gas:t?.gas}):Vn.nodeMessage.test(n)?new Vn({cause:e,gas:t?.gas}):Gn.nodeMessage.test(n)?new Gn({cause:e}):qt.nodeMessage.test(n)?new qt({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new Jo({cause:e})}function ii(e,{docsPath:t,...n}){const s=(()=>{const o=ri(e,n);return o instanceof Jo?e:o})();return new ai(s,{docsPath:t,...n})}function ci(e,{format:t}){if(!t)return{};const n={};function s(a){const r=Object.keys(a);for(const c of r)c in e&&(n[c]=e[c]),a[c]&&typeof a[c]=="object"&&!Array.isArray(a[c])&&s(a[c])}const o=t(e||{});return s(o),n}function li(e){const{account:t,maxFeePerGas:n,maxPriorityFeePerGas:s,to:o}=e,a=t?Qn(t):void 0;if(a&&!He(a.address))throw new ct({address:a.address});if(o&&!He(o))throw new ct({address:o});if(n&&n>Mt)throw new It({maxFeePerGas:n});if(s&&n&&s>n)throw new qt({maxFeePerGas:n,maxPriorityFeePerGas:s})}async function di(e,t){const{account:n=e.account}=t;if(!n)throw new Br;const s=Qn(n);try{const{accessList:o,blockNumber:a,blockTag:r,data:c,gas:d,gasPrice:T,maxFeePerGas:N,maxPriorityFeePerGas:W,nonce:h,to:C,value:m,...I}=t,ke=(typeof a=="bigint"?le(a):void 0)||r;li(t);const S=e.chain?.formatters?.transactionRequest?.format,K=(S||ia)({...ci(I,{format:S}),account:s,accessList:o,data:c,gas:d,gasPrice:T,maxFeePerGas:N,maxPriorityFeePerGas:W,nonce:h,to:C,value:m},"estimateGas"),{baseFeePerGas:fe,gasLimit:pe,priorityFeePerGas:Ne}=await e.request({method:"linea_estimateGas",params:ke?[K,ke]:[K]});return{baseFeePerGas:BigInt(fe),gasLimit:BigInt(pe),priorityFeePerGas:BigInt(Ne)}}catch(o){throw ii(o,{...t,account:s,chain:e.chain})}}const ui={fees:{estimateFeesPerGas:ls,async maxPriorityFeePerGas({block:e,client:t,request:n}){const s=await ls({block:e,client:t,multiply:o=>o,request:n,type:"eip1559"});return s?.maxPriorityFeePerGas?s.maxPriorityFeePerGas:null}}};async function ls({client:e,multiply:t,request:n,type:s}){try{const o=await di(e,{...n,account:n?.account}),{priorityFeePerGas:a}=o,c=t(BigInt(o.baseFeePerGas))+a;return s==="legacy"?{gasPrice:c}:{maxFeePerGas:c,maxPriorityFeePerGas:a}}catch{return null}}const fi=ut({...ui,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}),pi=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}}}),_t=1,mi=ut({...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:{[_t]:{address:"0xe5965Ab5962eDc7477C8520243A95517CD252fA9"}},l2OutputOracle:{[_t]:{address:"0xdfe97868233d1aa22e815a266982f2cf17685a27"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:4286263},portal:{[_t]:{address:"0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"}},l1StandardBridge:{[_t]:{address:"0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1"}}},sourceId:_t}),hi=ut({id:137,name:"Polygon",blockTime:2e3,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com",apiUrl:"https://api.etherscan.io/v2/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}}}),ds="/docs/contract/encodeFunctionData";function wi(e){const{abi:t,args:n,functionName:s}=e;let o=t[0];if(s){const a=oi({abi:t,args:n,name:s});if(!a)throw new os(s,{docsPath:ds});o=a}if(o.type!=="function")throw new os(void 0,{docsPath:ds});return{abi:[o],functionName:rs(Xn(o))}}function kt(e){const{args:t}=e,{abi:n,functionName:s}=e.abi.length===1&&e.functionName?.startsWith("0x")?e:wi(e),o=n[0],a=s,r="inputs"in o&&o.inputs?jr(o.inputs,t??[]):void 0;return Et([a,r??"0x"])}const lt={1:{...pi,logo:"data:image/png;base64,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",chainId:1,chainType:"ether",chainTypeMoralis:"eth",tokenTrendingDefault:["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"]},10:{...mi,logo:"data:image/png;base64,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",chainId:10,chainType:"optimism",chainTypeMoralis:"optimism",tokenTrendingDefault:["0x4200000000000000000000000000000000000006","0x68f180fcce6836688e9084f035309e29bf0a2095","0xc47da4cb96ce65a96844a01bfae509f9d5454534"]},56:{...Nr,logo:"data:image/png;base64,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",chainId:56,chainType:"bsc",chainTypeMoralis:"bsc",tokenTrendingDefault:["0x2170ed0880ac9a755fd29b2688956bd959f933f8","0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c"]},137:{...hi,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:{...ts,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:{...Ir,logo:"data:image/png;base64,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",chainId:43114,chainType:"avax",chainTypeMoralis:"avalanche",tokenTrendingDefault:["0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB","0x0555E30da8f98308EdB960aa94C0Db47230d2B9c"]},59144:{...fi,logo:"data:image/png;base64,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",chainId:59144,chainType:"linea",chainTypeMoralis:"linea",tokenTrendingDefault:["0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f","0x3aab2285ddcddad8edf438c1bab47e1a9d05a9b4"]}},us=e=>Object.values(lt).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)),bi=(e,t=5,n=5)=>(e=e||"",e?.length<=t+n?e:`${e.substr(0,t)}...${e.substr(e.length-n,n)}`),yi=e=>{if(!e)return"";const t=lt[e];return t?t.chainTypeMoralis:""},Ai=e=>{if(!e)return"";const t=lt[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 ki extends ue{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 ki({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,c]=[s.slice(0,t-1),s.slice(t-1,t),s.slice(t)],d=Math.round(+`${r}.${c}`);d>9?s=`${BigInt(a)+BigInt(1)}0`.padStart(a.length+1,"0"):s=`${a}${d}`,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 vi="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",Ve="0x0000000000000000000000000000000000000000",fs=oe.createContext(void 0),eo=()=>{const e=oe.useContext(fs);if(!e)throw new Error("useConnect must be used within ConnectProvider");return{...e,chainData:lt[e.account?.chainId]||void 0,chainId:e.account?.chainId||void 0,chainType:Ai(e.account?.chainId||void 0),chainTypeMoralis:yi(e.account?.chainId||void 0),isChainSupported:!!lt[e.account?.chainId]}},Ti=({children:e,initialAccount:t})=>F.jsx(fs.Provider,{value:{account:t||null},children:e}),Ci=({address:e,chainId:t})=>{const[n,s]=oe.useState(!1),{isChainSupported:o}=eo(),a=oe.useCallback(()=>{if(!e)return;const r=e,c=()=>{s(!0),setTimeout(()=>s(!1),2e3)};try{navigator.clipboard.writeText(r).then(c).catch(()=>{const d=document.createElement("input");d.value=r,document.body.appendChild(d),d.select(),document.execCommand("copy"),d.remove(),c()})}catch{const d=document.createElement("input");d.value=r,document.body.appendChild(d),d.select(),document.execCommand("copy"),d.remove(),c()}},[e]);return F.jsx(F.Fragment,{children:He(e||"")&&F.jsxs("div",{className:"chat-user-info",children:[t&<[t]?.logo&&F.jsx("div",{className:"user-avatar",children:F.jsx("img",{src:lt[t].logo||"",alt:"Chain",width:20,height:20})}),F.jsx("span",{className:"user-wallet",children:F.jsx("a",{style:{pointerEvents:o?"auto":"none"},href:lt[t]?.blockExplorers?.default?.url+"/address/"+e,target:"_blank",rel:"noopener noreferrer",children:bi(e)||"Not connected"})}),F.jsx("button",{className:"copy-address-btn",onClick:a,"aria-label":"Copy wallet address",type:"button",title:n?"Copied!":"Copy address",children:n?F.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:F.jsx("path",{d:"M13.3333 4L6 11.3333L2.66667 8",stroke:"#0B3988",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}):F.jsx("svg",{width:"14",height:"14",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:F.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"})})})]})})},Ge=[];for(let e=0;e<256;++e)Ge.push((e+256).toString(16).slice(1));function Ei(e,t=0){return(Ge[e[t+0]]+Ge[e[t+1]]+Ge[e[t+2]]+Ge[e[t+3]]+"-"+Ge[e[t+4]]+Ge[e[t+5]]+"-"+Ge[e[t+6]]+Ge[e[t+7]]+"-"+Ge[e[t+8]]+Ge[e[t+9]]+"-"+Ge[e[t+10]]+Ge[e[t+11]]+Ge[e[t+12]]+Ge[e[t+13]]+Ge[e[t+14]]+Ge[e[t+15]]).toLowerCase()}let to;const xi=new Uint8Array(16);function Si(){if(!to){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");to=crypto.getRandomValues.bind(crypto)}return to(xi)}const ps={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ii(e,t,n){e=e||{};const s=e.random??e.rng?.()??Si();if(s.length<16)throw new Error("Random bytes length must be >= 16");return s[6]=s[6]&15|64,s[8]=s[8]&63|128,Ei(s)}function ms(e,t,n){return ps.randomUUID&&!e?ps.randomUUID():Ii(e)}const no="chat_widget_messages",hs=200,Vt=[{id:ms(),text:`**Welcome! 🚀**
|
|
99
|
+
You're connected and ready to explore DeFi! I can help you trade, check prices, and analyze your portfolio when you need it.`,sender:"bot",timestamp:new Date}];function Ni(e,t){return e&&t?`${e}_${t}`:""}function ws(e){return e.map(t=>({...t,timestamp:new Date(t.timestamp)}))}function gs(){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:ws(t.messages)};if(Array.isArray(t))return{owner:"",messages:ws(t)}}catch{}return null}function hn(e,t){Nt.setItem(no,JSON.stringify({owner:e,messages:t}))}function Bi(){const{account:e}=eo(),t=Ni(e?.address,e?.chainId),[n,s]=oe.useState(()=>t||"pending"),[o,a]=oe.useState(()=>{const N=gs();return t?N&&N.owner===t?N.messages:Vt:N?.messages??Vt});if(n==="pending"&&t){const N=gs();N&&N.owner===t?a(N.messages):hn(t,o),s(t)}else n!=="pending"&&t&&n!==t&&(a(Vt),hn(t,Vt),s(t));oe.useEffect(()=>{n!=="pending"&&hn(n,o)},[o,n]),oe.useEffect(()=>{const N=[];for(let W=0;W<Nt.length;W++){const h=Nt.key(W);h&&h.startsWith(no+"_")&&N.push(h)}N.forEach(W=>Nt.removeItem(W))},[]);const r=(N,W,h,C,m)=>{const I=h?o.find(ke=>ke.id===h):void 0,R={id:ms(),text:N,sender:W,timestamp:new Date,...I&&{replyTo:{id:I.id,text:I.text,sender:I.sender}},...C&&{buttons:C},...m&&{actionData:m}};return a(ke=>{const S=[...ke,R];return S.length>hs?S.slice(S.length-hs):S}),R},c=(N,W)=>{a(h=>h.map(C=>C.id===N&&C.actionData?{...C,actionData:{...C.actionData,status:W}}:C))},d=(N,W)=>{a(h=>h.map(C=>C.id===N?{...C,text:W}:C))},T=oe.useCallback(()=>{a(Vt),hn(t,Vt)},[t]);return{messages:o,setMessages:a,addMessage:r,updateMessageAction:c,updateMessageText:d,clearMessages:T}}const bs=oe.createContext(void 0),Fi=()=>{const e=oe.useContext(bs);if(!e)throw new Error("useConfig must be used within ConfigProvider");return e},Pi=({children:e,initialConfig:t})=>F.jsx(bs.Provider,{value:{config:t||null},children:e});var Li=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,oo=Math.ceil,$e=Math.floor,ze="[BigNumber Error] ",ys=ze+"Number primitive has more than 15 significant digits: ",st=1e14,we=14,so=9007199254740991,ao=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],vt=1e7,We=1e9;function As(e){var t,n,s,o=S.prototype={constructor:S,toString:null,valueOf:null},a=new S(1),r=20,c=4,d=-7,T=21,N=-1e7,W=1e7,h=!1,C=1,m=0,I={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},R="0123456789abcdefghijklmnopqrstuvwxyz",ke=!0;function S(l,u){var i,w,g,b,A,y,v,k,E=this;if(!(E instanceof S))return new S(l,u);if(u==null){if(l&&l._isBigNumber===!0){E.s=l.s,!l.c||l.e>W?E.c=E.e=null:l.e<N?E.c=[E.e=0]:(E.e=l.e,E.c=l.c.slice());return}if((y=typeof l=="number")&&l*0==0){if(E.s=1/l<0?(l=-l,-1):1,l===~~l){for(b=0,A=l;A>=10;A/=10,b++);b>W?E.c=E.e=null:(E.e=b,E.c=[l]);return}k=String(l)}else{if(!Li.test(k=String(l)))return s(E,k,y);E.s=k.charCodeAt(0)==45?(k=k.slice(1),-1):1}(b=k.indexOf("."))>-1&&(k=k.replace(".","")),(A=k.search(/e/i))>0?(b<0&&(b=A),b+=+k.slice(A+1),k=k.substring(0,A)):b<0&&(b=k.length)}else{if(Be(u,2,R.length,"Base"),u==10&&ke)return E=new S(l),pe(E,r+E.e+1,c);if(k=String(l),y=typeof l=="number"){if(l*0!=0)return s(E,k,y,u);if(E.s=1/l<0?(k=k.slice(1),-1):1,S.DEBUG&&k.replace(/^0\.0*|\./,"").length>15)throw Error(ys+l)}else E.s=k.charCodeAt(0)===45?(k=k.slice(1),-1):1;for(i=R.slice(0,u),b=A=0,v=k.length;A<v;A++)if(i.indexOf(w=k.charAt(A))<0){if(w=="."){if(A>b){b=v;continue}}else if(!g&&(k==k.toUpperCase()&&(k=k.toLowerCase())||k==k.toLowerCase()&&(k=k.toUpperCase()))){g=!0,A=-1,b=0;continue}return s(E,String(l),y,u)}y=!1,k=n(k,u,10,E.s),(b=k.indexOf("."))>-1?k=k.replace(".",""):b=k.length}for(A=0;k.charCodeAt(A)===48;A++);for(v=k.length;k.charCodeAt(--v)===48;);if(k=k.slice(A,++v)){if(v-=A,y&&S.DEBUG&&v>15&&(l>so||l!==$e(l)))throw Error(ys+E.s*l);if((b=b-A-1)>W)E.c=E.e=null;else if(b<N)E.c=[E.e=0];else{if(E.e=b,E.c=[],A=(b+1)%we,b<0&&(A+=we),A<v){for(A&&E.c.push(+k.slice(0,A)),v-=we;A<v;)E.c.push(+k.slice(A,A+=we));A=we-(k=k.slice(A)).length}else A-=v;for(;A--;k+="0");E.c.push(+k)}}else E.c=[E.e=0]}S.clone=As,S.ROUND_UP=0,S.ROUND_DOWN=1,S.ROUND_CEIL=2,S.ROUND_FLOOR=3,S.ROUND_HALF_UP=4,S.ROUND_HALF_DOWN=5,S.ROUND_HALF_EVEN=6,S.ROUND_HALF_CEIL=7,S.ROUND_HALF_FLOOR=8,S.EUCLID=9,S.config=S.set=function(l){var u,i;if(l!=null)if(typeof l=="object"){if(l.hasOwnProperty(u="DECIMAL_PLACES")&&(i=l[u],Be(i,0,We,u),r=i),l.hasOwnProperty(u="ROUNDING_MODE")&&(i=l[u],Be(i,0,8,u),c=i),l.hasOwnProperty(u="EXPONENTIAL_AT")&&(i=l[u],i&&i.pop?(Be(i[0],-We,0,u),Be(i[1],0,We,u),d=i[0],T=i[1]):(Be(i,-We,We,u),d=-(T=i<0?-i:i))),l.hasOwnProperty(u="RANGE"))if(i=l[u],i&&i.pop)Be(i[0],-We,-1,u),Be(i[1],1,We,u),N=i[0],W=i[1];else if(Be(i,-We,We,u),i)N=-(W=i<0?-i:i);else throw Error(ze+u+" cannot be zero: "+i);if(l.hasOwnProperty(u="CRYPTO"))if(i=l[u],i===!!i)if(i)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))h=i;else throw h=!i,Error(ze+"crypto unavailable");else h=i;else throw Error(ze+u+" not true or false: "+i);if(l.hasOwnProperty(u="MODULO_MODE")&&(i=l[u],Be(i,0,9,u),C=i),l.hasOwnProperty(u="POW_PRECISION")&&(i=l[u],Be(i,0,We,u),m=i),l.hasOwnProperty(u="FORMAT"))if(i=l[u],typeof i=="object")I=i;else throw Error(ze+u+" not an object: "+i);if(l.hasOwnProperty(u="ALPHABET"))if(i=l[u],typeof i=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(i))ke=i.slice(0,10)=="0123456789",R=i;else throw Error(ze+u+" invalid: "+i)}else throw Error(ze+"Object expected: "+l);return{DECIMAL_PLACES:r,ROUNDING_MODE:c,EXPONENTIAL_AT:[d,T],RANGE:[N,W],CRYPTO:h,MODULO_MODE:C,POW_PRECISION:m,FORMAT:I,ALPHABET:R}},S.isBigNumber=function(l){if(!l||l._isBigNumber!==!0)return!1;if(!S.DEBUG)return!0;var u,i,w=l.c,g=l.e,b=l.s;e:if({}.toString.call(w)=="[object Array]"){if((b===1||b===-1)&&g>=-We&&g<=We&&g===$e(g)){if(w[0]===0){if(g===0&&w.length===1)return!0;break e}if(u=(g+1)%we,u<1&&(u+=we),String(w[0]).length==u){for(u=0;u<w.length;u++)if(i=w[u],i<0||i>=st||i!==$e(i))break e;if(i!==0)return!0}}}else if(w===null&&g===null&&(b===null||b===1||b===-1))return!0;throw Error(ze+"Invalid BigNumber: "+l)},S.maximum=S.max=function(){return K(arguments,-1)},S.minimum=S.min=function(){return K(arguments,1)},S.random=(function(){var l=9007199254740992,u=Math.random()*l&2097151?function(){return $e(Math.random()*l)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(i){var w,g,b,A,y,v=0,k=[],E=new S(a);if(i==null?i=r:Be(i,0,We),A=oo(i/we),h)if(crypto.getRandomValues){for(w=crypto.getRandomValues(new Uint32Array(A*=2));v<A;)y=w[v]*131072+(w[v+1]>>>11),y>=9e15?(g=crypto.getRandomValues(new Uint32Array(2)),w[v]=g[0],w[v+1]=g[1]):(k.push(y%1e14),v+=2);v=A/2}else if(crypto.randomBytes){for(w=crypto.randomBytes(A*=7);v<A;)y=(w[v]&31)*281474976710656+w[v+1]*1099511627776+w[v+2]*4294967296+w[v+3]*16777216+(w[v+4]<<16)+(w[v+5]<<8)+w[v+6],y>=9e15?crypto.randomBytes(7).copy(w,v):(k.push(y%1e14),v+=7);v=A/7}else throw h=!1,Error(ze+"crypto unavailable");if(!h)for(;v<A;)y=u(),y<9e15&&(k[v++]=y%1e14);for(A=k[--v],i%=we,A&&i&&(y=ao[we-i],k[v]=$e(A/y)*y);k[v]===0;k.pop(),v--);if(v<0)k=[b=0];else{for(b=-1;k[0]===0;k.splice(0,1),b-=we);for(v=1,y=k[0];y>=10;y/=10,v++);v<we&&(b-=we-v)}return E.e=b,E.c=k,E}})(),S.sum=function(){for(var l=1,u=arguments,i=new S(u[0]);l<u.length;)i=i.plus(u[l++]);return i},n=(function(){var l="0123456789";function u(i,w,g,b){for(var A,y=[0],v,k=0,E=i.length;k<E;){for(v=y.length;v--;y[v]*=w);for(y[0]+=b.indexOf(i.charAt(k++)),A=0;A<y.length;A++)y[A]>g-1&&(y[A+1]==null&&(y[A+1]=0),y[A+1]+=y[A]/g|0,y[A]%=g)}return y.reverse()}return function(i,w,g,b,A){var y,v,k,E,L,z,ae,he,ve=i.indexOf("."),xe=r,Q=c;for(ve>=0&&(E=m,m=0,i=i.replace(".",""),he=new S(w),z=he.pow(i.length-ve),m=E,he.c=u(ht(tt(z.c),z.e,"0"),10,g,l),he.e=he.c.length),ae=u(i,w,g,A?(y=R,l):(y=l,R)),k=E=ae.length;ae[--E]==0;ae.pop());if(!ae[0])return y.charAt(0);if(ve<0?--k:(z.c=ae,z.e=k,z.s=b,z=t(z,he,xe,Q,g),ae=z.c,L=z.r,k=z.e),v=k+xe+1,ve=ae[v],E=g/2,L=L||v<0||ae[v+1]!=null,L=Q<4?(ve!=null||L)&&(Q==0||Q==(z.s<0?3:2)):ve>E||ve==E&&(Q==4||L||Q==6&&ae[v-1]&1||Q==(z.s<0?8:7)),v<1||!ae[0])i=L?ht(y.charAt(1),-xe,y.charAt(0)):y.charAt(0);else{if(ae.length=v,L)for(--g;++ae[--v]>g;)ae[v]=0,v||(++k,ae=[1].concat(ae));for(E=ae.length;!ae[--E];);for(ve=0,i="";ve<=E;i+=y.charAt(ae[ve++]));i=ht(i,k,y.charAt(0))}return i}})(),t=(function(){function l(w,g,b){var A,y,v,k,E=0,L=w.length,z=g%vt,ae=g/vt|0;for(w=w.slice();L--;)v=w[L]%vt,k=w[L]/vt|0,A=ae*v+k*z,y=z*v+A%vt*vt+E,E=(y/b|0)+(A/vt|0)+ae*k,w[L]=y%b;return E&&(w=[E].concat(w)),w}function u(w,g,b,A){var y,v;if(b!=A)v=b>A?1:-1;else for(y=v=0;y<b;y++)if(w[y]!=g[y]){v=w[y]>g[y]?1:-1;break}return v}function i(w,g,b,A){for(var y=0;b--;)w[b]-=y,y=w[b]<g[b]?1:0,w[b]=y*A+w[b]-g[b];for(;!w[0]&&w.length>1;w.splice(0,1));}return function(w,g,b,A,y){var v,k,E,L,z,ae,he,ve,xe,Q,ge,Ee,Ye,at,Ke,Pe,qe,Me=w.s==g.s?1:-1,Le=w.c,Te=g.c;if(!Le||!Le[0]||!Te||!Te[0])return new S(!w.s||!g.s||(Le?Te&&Le[0]==Te[0]:!Te)?NaN:Le&&Le[0]==0||!Te?Me*0:Me/0);for(ve=new S(Me),xe=ve.c=[],k=w.e-g.e,Me=b+k+1,y||(y=st,k=et(w.e/we)-et(g.e/we),Me=Me/we|0),E=0;Te[E]==(Le[E]||0);E++);if(Te[E]>(Le[E]||0)&&k--,Me<0)xe.push(1),L=!0;else{for(at=Le.length,Pe=Te.length,E=0,Me+=2,z=$e(y/(Te[0]+1)),z>1&&(Te=l(Te,z,y),Le=l(Le,z,y),Pe=Te.length,at=Le.length),Ye=Pe,Q=Le.slice(0,Pe),ge=Q.length;ge<Pe;Q[ge++]=0);qe=Te.slice(),qe=[0].concat(qe),Ke=Te[0],Te[1]>=y/2&&Ke++;do{if(z=0,v=u(Te,Q,Pe,ge),v<0){if(Ee=Q[0],Pe!=ge&&(Ee=Ee*y+(Q[1]||0)),z=$e(Ee/Ke),z>1)for(z>=y&&(z=y-1),ae=l(Te,z,y),he=ae.length,ge=Q.length;u(ae,Q,he,ge)==1;)z--,i(ae,Pe<he?qe:Te,he,y),he=ae.length,v=1;else z==0&&(v=z=1),ae=Te.slice(),he=ae.length;if(he<ge&&(ae=[0].concat(ae)),i(Q,ae,ge,y),ge=Q.length,v==-1)for(;u(Te,Q,Pe,ge)<1;)z++,i(Q,Pe<ge?qe:Te,ge,y),ge=Q.length}else v===0&&(z++,Q=[0]);xe[E++]=z,Q[0]?Q[ge++]=Le[Ye]||0:(Q=[Le[Ye]],ge=1)}while((Ye++<at||Q[0]!=null)&&Me--);L=Q[0]!=null,xe[0]||xe.splice(0,1)}if(y==st){for(E=1,Me=xe[0];Me>=10;Me/=10,E++);pe(ve,b+(ve.e=E+k*we-1)+1,A,L)}else ve.e=k,ve.r=+L;return ve}})();function Y(l,u,i,w){var g,b,A,y,v;if(i==null?i=c:Be(i,0,8),!l.c)return l.toString();if(g=l.c[0],A=l.e,u==null)v=tt(l.c),v=w==1||w==2&&(A<=d||A>=T)?gn(v,A):ht(v,A,"0");else if(l=pe(new S(l),u,i),b=l.e,v=tt(l.c),y=v.length,w==1||w==2&&(u<=b||b<=d)){for(;y<u;v+="0",y++);v=gn(v,b)}else if(u-=A+(w===2&&b>A),v=ht(v,b,"0"),b+1>y){if(--u>0)for(v+=".";u--;v+="0");}else if(u+=b-y,u>0)for(b+1==y&&(v+=".");u--;v+="0");return l.s<0&&g?"-"+v:v}function K(l,u){for(var i,w,g=1,b=new S(l[0]);g<l.length;g++)w=new S(l[g]),(!w.s||(i=Bt(b,w))===u||i===0&&b.s===u)&&(b=w);return b}function fe(l,u,i){for(var w=1,g=u.length;!u[--g];u.pop());for(g=u[0];g>=10;g/=10,w++);return(i=w+i*we-1)>W?l.c=l.e=null:i<N?l.c=[l.e=0]:(l.e=i,l.c=u),l}s=(function(){var l=/^(-?)0([xbo])(?=\w[\w.]*$)/i,u=/^([^.]+)\.$/,i=/^\.([^.]+)$/,w=/^-?(Infinity|NaN)$/,g=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(b,A,y,v){var k,E=y?A:A.replace(g,"");if(w.test(E))b.s=isNaN(E)?null:E<0?-1:1;else{if(!y&&(E=E.replace(l,function(L,z,ae){return k=(ae=ae.toLowerCase())=="x"?16:ae=="b"?2:8,!v||v==k?z:L}),v&&(k=v,E=E.replace(u,"$1").replace(i,"0.$1")),A!=E))return new S(E,k);if(S.DEBUG)throw Error(ze+"Not a"+(v?" base "+v:"")+" number: "+A);b.s=null}b.c=b.e=null}})();function pe(l,u,i,w){var g,b,A,y,v,k,E,L=l.c,z=ao;if(L){e:{for(g=1,y=L[0];y>=10;y/=10,g++);if(b=u-g,b<0)b+=we,A=u,v=L[k=0],E=$e(v/z[g-A-1]%10);else if(k=oo((b+1)/we),k>=L.length)if(w){for(;L.length<=k;L.push(0));v=E=0,g=1,b%=we,A=b-we+1}else break e;else{for(v=y=L[k],g=1;y>=10;y/=10,g++);b%=we,A=b-we+g,E=A<0?0:$e(v/z[g-A-1]%10)}if(w=w||u<0||L[k+1]!=null||(A<0?v:v%z[g-A-1]),w=i<4?(E||w)&&(i==0||i==(l.s<0?3:2)):E>5||E==5&&(i==4||w||i==6&&(b>0?A>0?v/z[g-A]:0:L[k-1])%10&1||i==(l.s<0?8:7)),u<1||!L[0])return L.length=0,w?(u-=l.e+1,L[0]=z[(we-u%we)%we],l.e=-u||0):L[0]=l.e=0,l;if(b==0?(L.length=k,y=1,k--):(L.length=k+1,y=z[we-b],L[k]=A>0?$e(v/z[g-A]%z[A])*y:0),w)for(;;)if(k==0){for(b=1,A=L[0];A>=10;A/=10,b++);for(A=L[0]+=y,y=1;A>=10;A/=10,y++);b!=y&&(l.e++,L[0]==st&&(L[0]=1));break}else{if(L[k]+=y,L[k]!=st)break;L[k--]=0,y=1}for(b=L.length;L[--b]===0;L.pop());}l.e>W?l.c=l.e=null:l.e<N&&(l.c=[l.e=0])}return l}function Ne(l){var u,i=l.e;return i===null?l.toString():(u=tt(l.c),u=i<=d||i>=T?gn(u,i):ht(u,i,"0"),l.s<0?"-"+u:u)}return o.absoluteValue=o.abs=function(){var l=new S(this);return l.s<0&&(l.s=1),l},o.comparedTo=function(l,u){return Bt(this,new S(l,u))},o.decimalPlaces=o.dp=function(l,u){var i,w,g,b=this;if(l!=null)return Be(l,0,We),u==null?u=c:Be(u,0,8),pe(new S(b),l+b.e+1,u);if(!(i=b.c))return null;if(w=((g=i.length-1)-et(this.e/we))*we,g=i[g])for(;g%10==0;g/=10,w--);return w<0&&(w=0),w},o.dividedBy=o.div=function(l,u){return t(this,new S(l,u),r,c)},o.dividedToIntegerBy=o.idiv=function(l,u){return t(this,new S(l,u),0,1)},o.exponentiatedBy=o.pow=function(l,u){var i,w,g,b,A,y,v,k,E,L=this;if(l=new S(l),l.c&&!l.isInteger())throw Error(ze+"Exponent not an integer: "+Ne(l));if(u!=null&&(u=new S(u)),y=l.e>14,!L.c||!L.c[0]||L.c[0]==1&&!L.e&&L.c.length==1||!l.c||!l.c[0])return E=new S(Math.pow(+Ne(L),y?l.s*(2-wn(l)):+Ne(l))),u?E.mod(u):E;if(v=l.s<0,u){if(u.c?!u.c[0]:!u.s)return new S(NaN);w=!v&&L.isInteger()&&u.isInteger(),w&&(L=L.mod(u))}else{if(l.e>9&&(L.e>0||L.e<-1||(L.e==0?L.c[0]>1||y&&L.c[1]>=24e7:L.c[0]<8e13||y&&L.c[0]<=9999975e7)))return b=L.s<0&&wn(l)?-0:0,L.e>-1&&(b=1/b),new S(v?1/b:b);m&&(b=oo(m/we+2))}for(y?(i=new S(.5),v&&(l.s=1),k=wn(l)):(g=Math.abs(+Ne(l)),k=g%2),E=new S(a);;){if(k){if(E=E.times(L),!E.c)break;b?E.c.length>b&&(E.c.length=b):w&&(E=E.mod(u))}if(g){if(g=$e(g/2),g===0)break;k=g%2}else if(l=l.times(i),pe(l,l.e+1,1),l.e>14)k=wn(l);else{if(g=+Ne(l),g===0)break;k=g%2}L=L.times(L),b?L.c&&L.c.length>b&&(L.c.length=b):w&&(L=L.mod(u))}return w?E:(v&&(E=a.div(E)),u?E.mod(u):b?pe(E,m,c,A):E)},o.integerValue=function(l){var u=new S(this);return l==null?l=c:Be(l,0,8),pe(u,u.e+1,l)},o.isEqualTo=o.eq=function(l,u){return Bt(this,new S(l,u))===0},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(l,u){return Bt(this,new S(l,u))>0},o.isGreaterThanOrEqualTo=o.gte=function(l,u){return(u=Bt(this,new S(l,u)))===1||u===0},o.isInteger=function(){return!!this.c&&et(this.e/we)>this.c.length-2},o.isLessThan=o.lt=function(l,u){return Bt(this,new S(l,u))<0},o.isLessThanOrEqualTo=o.lte=function(l,u){return(u=Bt(this,new S(l,u)))===-1||u===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(l,u){var i,w,g,b,A=this,y=A.s;if(l=new S(l,u),u=l.s,!y||!u)return new S(NaN);if(y!=u)return l.s=-u,A.plus(l);var v=A.e/we,k=l.e/we,E=A.c,L=l.c;if(!v||!k){if(!E||!L)return E?(l.s=-u,l):new S(L?A:NaN);if(!E[0]||!L[0])return L[0]?(l.s=-u,l):new S(E[0]?A:c==3?-0:0)}if(v=et(v),k=et(k),E=E.slice(),y=v-k){for((b=y<0)?(y=-y,g=E):(k=v,g=L),g.reverse(),u=y;u--;g.push(0));g.reverse()}else for(w=(b=(y=E.length)<(u=L.length))?y:u,y=u=0;u<w;u++)if(E[u]!=L[u]){b=E[u]<L[u];break}if(b&&(g=E,E=L,L=g,l.s=-l.s),u=(w=L.length)-(i=E.length),u>0)for(;u--;E[i++]=0);for(u=st-1;w>y;){if(E[--w]<L[w]){for(i=w;i&&!E[--i];E[i]=u);--E[i],E[w]+=st}E[w]-=L[w]}for(;E[0]==0;E.splice(0,1),--k);return E[0]?fe(l,E,k):(l.s=c==3?-1:1,l.c=[l.e=0],l)},o.modulo=o.mod=function(l,u){var i,w,g=this;return l=new S(l,u),!g.c||!l.s||l.c&&!l.c[0]?new S(NaN):!l.c||g.c&&!g.c[0]?new S(g):(C==9?(w=l.s,l.s=1,i=t(g,l,0,3),l.s=w,i.s*=w):i=t(g,l,0,C),l=g.minus(i.times(l)),!l.c[0]&&C==1&&(l.s=g.s),l)},o.multipliedBy=o.times=function(l,u){var i,w,g,b,A,y,v,k,E,L,z,ae,he,ve,xe,Q=this,ge=Q.c,Ee=(l=new S(l,u)).c;if(!ge||!Ee||!ge[0]||!Ee[0])return!Q.s||!l.s||ge&&!ge[0]&&!Ee||Ee&&!Ee[0]&&!ge?l.c=l.e=l.s=null:(l.s*=Q.s,!ge||!Ee?l.c=l.e=null:(l.c=[0],l.e=0)),l;for(w=et(Q.e/we)+et(l.e/we),l.s*=Q.s,v=ge.length,L=Ee.length,v<L&&(he=ge,ge=Ee,Ee=he,g=v,v=L,L=g),g=v+L,he=[];g--;he.push(0));for(ve=st,xe=vt,g=L;--g>=0;){for(i=0,z=Ee[g]%xe,ae=Ee[g]/xe|0,A=v,b=g+A;b>g;)k=ge[--A]%xe,E=ge[A]/xe|0,y=ae*k+E*z,k=z*k+y%xe*xe+he[b]+i,i=(k/ve|0)+(y/xe|0)+ae*E,he[b--]=k%ve;he[b]=i}return i?++w:he.splice(0,1),fe(l,he,w)},o.negated=function(){var l=new S(this);return l.s=-l.s||null,l},o.plus=function(l,u){var i,w=this,g=w.s;if(l=new S(l,u),u=l.s,!g||!u)return new S(NaN);if(g!=u)return l.s=-u,w.minus(l);var b=w.e/we,A=l.e/we,y=w.c,v=l.c;if(!b||!A){if(!y||!v)return new S(g/0);if(!y[0]||!v[0])return v[0]?l:new S(y[0]?w:g*0)}if(b=et(b),A=et(A),y=y.slice(),g=b-A){for(g>0?(A=b,i=v):(g=-g,i=y),i.reverse();g--;i.push(0));i.reverse()}for(g=y.length,u=v.length,g-u<0&&(i=v,v=y,y=i,u=g),g=0;u;)g=(y[--u]=y[u]+v[u]+g)/st|0,y[u]=st===y[u]?0:y[u]%st;return g&&(y=[g].concat(y),++A),fe(l,y,A)},o.precision=o.sd=function(l,u){var i,w,g,b=this;if(l!=null&&l!==!!l)return Be(l,1,We),u==null?u=c:Be(u,0,8),pe(new S(b),l,u);if(!(i=b.c))return null;if(g=i.length-1,w=g*we+1,g=i[g]){for(;g%10==0;g/=10,w--);for(g=i[0];g>=10;g/=10,w++);}return l&&b.e+1>w&&(w=b.e+1),w},o.shiftedBy=function(l){return Be(l,-so,so),this.times("1e"+l)},o.squareRoot=o.sqrt=function(){var l,u,i,w,g,b=this,A=b.c,y=b.s,v=b.e,k=r+4,E=new S("0.5");if(y!==1||!A||!A[0])return new S(!y||y<0&&(!A||A[0])?NaN:A?b:1/0);if(y=Math.sqrt(+Ne(b)),y==0||y==1/0?(u=tt(A),(u.length+v)%2==0&&(u+="0"),y=Math.sqrt(+u),v=et((v+1)/2)-(v<0||v%2),y==1/0?u="5e"+v:(u=y.toExponential(),u=u.slice(0,u.indexOf("e")+1)+v),i=new S(u)):i=new S(y+""),i.c[0]){for(v=i.e,y=v+k,y<3&&(y=0);;)if(g=i,i=E.times(g.plus(t(b,g,k,1))),tt(g.c).slice(0,y)===(u=tt(i.c)).slice(0,y))if(i.e<v&&--y,u=u.slice(y-3,y+1),u=="9999"||!w&&u=="4999"){if(!w&&(pe(g,g.e+r+2,0),g.times(g).eq(b))){i=g;break}k+=4,y+=4,w=1}else{(!+u||!+u.slice(1)&&u.charAt(0)=="5")&&(pe(i,i.e+r+2,1),l=!i.times(i).eq(b));break}}return pe(i,i.e+r+1,c,l)},o.toExponential=function(l,u){return l!=null&&(Be(l,0,We),l++),Y(this,l,u,1)},o.toFixed=function(l,u){return l!=null&&(Be(l,0,We),l=l+this.e+1),Y(this,l,u)},o.toFormat=function(l,u,i){var w,g=this;if(i==null)l!=null&&u&&typeof u=="object"?(i=u,u=null):l&&typeof l=="object"?(i=l,l=u=null):i=I;else if(typeof i!="object")throw Error(ze+"Argument not an object: "+i);if(w=g.toFixed(l,u),g.c){var b,A=w.split("."),y=+i.groupSize,v=+i.secondaryGroupSize,k=i.groupSeparator||"",E=A[0],L=A[1],z=g.s<0,ae=z?E.slice(1):E,he=ae.length;if(v&&(b=y,y=v,v=b,he-=b),y>0&&he>0){for(b=he%y||y,E=ae.substr(0,b);b<he;b+=y)E+=k+ae.substr(b,y);v>0&&(E+=k+ae.slice(b)),z&&(E="-"+E)}w=L?E+(i.decimalSeparator||"")+((v=+i.fractionGroupSize)?L.replace(new RegExp("\\d{"+v+"}\\B","g"),"$&"+(i.fractionGroupSeparator||"")):L):E}return(i.prefix||"")+w+(i.suffix||"")},o.toFraction=function(l){var u,i,w,g,b,A,y,v,k,E,L,z,ae=this,he=ae.c;if(l!=null&&(y=new S(l),!y.isInteger()&&(y.c||y.s!==1)||y.lt(a)))throw Error(ze+"Argument "+(y.isInteger()?"out of range: ":"not an integer: ")+Ne(y));if(!he)return new S(ae);for(u=new S(a),k=i=new S(a),w=v=new S(a),z=tt(he),b=u.e=z.length-ae.e-1,u.c[0]=ao[(A=b%we)<0?we+A:A],l=!l||y.comparedTo(u)>0?b>0?u:k:y,A=W,W=1/0,y=new S(z),v.c[0]=0;E=t(y,u,0,1),g=i.plus(E.times(w)),g.comparedTo(l)!=1;)i=w,w=g,k=v.plus(E.times(g=k)),v=g,u=y.minus(E.times(g=u)),y=g;return g=t(l.minus(i),w,0,1),v=v.plus(g.times(k)),i=i.plus(g.times(w)),v.s=k.s=ae.s,b=b*2,L=t(k,w,b,c).minus(ae).abs().comparedTo(t(v,i,b,c).minus(ae).abs())<1?[k,w]:[v,i],W=A,L},o.toNumber=function(){return+Ne(this)},o.toPrecision=function(l,u){return l!=null&&Be(l,1,We),Y(this,l,u,2)},o.toString=function(l){var u,i=this,w=i.s,g=i.e;return g===null?w?(u="Infinity",w<0&&(u="-"+u)):u="NaN":(l==null?u=g<=d||g>=T?gn(tt(i.c),g):ht(tt(i.c),g,"0"):l===10&&ke?(i=pe(new S(i),r+g+1,c),u=ht(tt(i.c),i.e,"0")):(Be(l,2,R.length,"Base"),u=n(ht(tt(i.c),g,"0"),10,l,w,!0)),w<0&&i.c[0]&&(u="-"+u)),u},o.valueOf=o.toJSON=function(){return Ne(this)},o._isBigNumber=!0,o[Symbol.toStringTag]="BigNumber",o[Symbol.for("nodejs.util.inspect.custom")]=o.valueOf,e!=null&&S.set(e),S}function et(e){var t=e|0;return e>0||e===t?t:t-1}function tt(e){for(var t,n,s=1,o=e.length,a=e[0]+"";s<o;){for(t=e[s++]+"",n=we-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,c=t.s,d=e.e,T=t.e;if(!r||!c)return null;if(n=o&&!o[0],s=a&&!a[0],n||s)return n?s?0:-c:r;if(r!=c)return r;if(n=r<0,s=d==T,!o||!a)return s?0:!o^n?1:-1;if(!s)return d>T^n?1:-1;for(c=(d=o.length)<(T=a.length)?d:T,r=0;r<c;r++)if(o[r]!=a[r])return o[r]>a[r]^n?1:-1;return d==T?0:d>T^n?1:-1}function Be(e,t,n,s){if(e<t||e>n||e!==$e(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 wn(e){var t=e.c.length-1;return et(e.e/we)==t&&e.c[t]%2!=0}function gn(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 ce=As();class $t{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 d=await o.text();d&&(r={message:d})}catch{}}const c=new Error(r?.message||r?.errorMessage||`HTTP ${o.status}: ${o.statusText}`);throw c.status=o.status,c.statusText=o.statusText,r&&(c.data=r),c}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 c=null;try{c=await a.json()}catch{try{const T=await a.text();T&&(c={message:T})}catch{}}const d=new Error(c?.message||c?.errorMessage||`HTTP ${a.status}: ${a.statusText}`);throw d.status=a.status,d.statusText=a.statusText,c&&(d.data=c),d}return{data:await a.json(),status:a.status}}}const Oi=.01,ks=new $t("https://wallet-api.pantograph.app"),Di="https://deep-index.moralis.io";function en(){return"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub25jZSI6ImY4NmY0Yzc2LTA3MDQtNGEwZS04YTA0LWUwODllOGQxMGZjZCIsIm9yZ0lkIjoiMzk0MDAyIiwidXNlcklkIjoiNDA0ODUzIiwidHlwZUlkIjoiYjQyODExOTQtOGQ0Yi00NjkxLTlhZjItNjU4ODE2NzExYmRjIiwidHlwZSI6IlBST0pFQ1QiLCJpYXQiOjE3MTY4NjQyNTYsImV4cCI6NDg3MjYyNDI1Nn0.V8crfBIBardAnZkc05FD0hQIJBeZxMqvzRnYExVtnF8"}function tn(e){return{"X-API-Key":e,Accept:"application/json"}}const nn=new $t(Di);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=en(),c={chain:n,exclude_spam:o??!1,exclude_unverified_contracts:a??!1};s&&(c.token_addresses=s);const T=(await nn.get(`/api/v2.2/wallets/${encodeURIComponent(t)}/tokens`,{query:c,headers:tn(r)})).data;if(T?.result?.length>0){T.result=T.result.filter(N=>new ce(N?.balance||0).gt(0)),T.result=T.result.map(N=>({...N,token_address:N.token_address===vi?Ve:N.token_address}));try{if(T.result.length>0){const N=us(n)??n,W=T.result.map(C=>C.token_address),h=await ks.get(`/keyrings/tokens/${N}/v2`,{query:{addresses:W.join(",")}});if(Array.isArray(h.data)){const C=new Map;for(const m of h.data)m.address&&m.price!=null&&C.set(m.address.toLowerCase(),parseFloat(String(m.price)));T.result=T.result.map(m=>{const I=C.get(m.token_address.toLowerCase());if(I==null)return m;const R=ce(m.balance_formatted||"0").multipliedBy(I).toNumber();return{...m,usd_price:I,usd_value:R}}),T.result=T.result.filter(m=>m.usd_value==null||new ce(m.usd_value).gte(Oi))}}}catch(N){console.warn("⚠️ Failed to fetch Pantograph prices:",N)}}return{success:!0,data:T}}catch(r){const c=r instanceof Error?r.message:"Unknown error";return console.error("❌ Error fetching token balances:",c),{success:!1,error:c}}}async function vs(e){const{address:t,chain:n="base"}=e;if(!t)throw new Error("Token address is required");try{const s=us(n)??n,o=await ks.get(`/keyrings/tokens/${s}/v2`,{query:{addresses:t}}),a=t===Ve,c=(Array.isArray(o.data)?o.data:[]).find(m=>m.address?.toLowerCase()===t.toLowerCase()||a&&m.address==="")??null;if(c)return{success:!0,data:{token_address:c.address??t,name:c.name??"",symbol:c.symbol??"",decimals:c.decimals!=null?Number(c.decimals):18,logo:c.icon_image||c.logo,thumbnail:c.icon_image||c.logo,usd_price:c.price!=null?parseFloat(c.price):void 0,usd_price_24hr_percent_change:c.price_change_percentage_24h??void 0,usd_price_24hr_usd_change:c.price_change_24h??void 0}};console.warn("⚠️ Pantograph returned no result, falling back to Moralis API");const d=en(),[T,N]=await Promise.allSettled([nn.get("/api/v2.2/erc20/metadata",{query:{chain:n,addresses:[t]},headers:tn(d)}),nn.get(`/api/v2.2/erc20/${encodeURIComponent(t)}/price`,{query:{chain:n,include:"percent_change"},headers:tn(d)})]),W=T.status==="fulfilled"?T.value.data:[];if(!W||W.length===0)return{success:!1,error:"Token metadata not found"};const h=W[0],C=N.status==="fulfilled"?N.value.data:void 0;return{success:!0,data:{token_address:h.token_address,name:h.name,symbol:h.symbol,decimals:h.decimals,logo:h.logo||h.thumbnail,thumbnail:h.thumbnail,usd_price:C?.usdPrice??void 0,usd_price_24hr_percent_change:C?.["24hrPercentChange"]?parseFloat(C["24hrPercentChange"]):void 0,usd_price_24hr_usd_change:C?.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 Ui(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=en(),r=new $t("https://cortex-api.moralis.io"),c=o?`${o}
|
|
100
100
|
|
|
101
101
|
---
|
|
102
102
|
|
|
103
|
-
User: ${t}`:t;return{success:!0,data:(await r.post("/chat",{prompt:i,model:n,stream:o},{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 Mi(e){const{address:t,chain:n="base"}=e;if(!t)throw new Error("Contract address is required");try{const o=en();return{success:!0,data:(await nn.get(`/api/v2.2/nft/${encodeURIComponent(t)}/metadata`,{query:{chain:n},headers:tn(o)})).data}}catch(o){const s=o instanceof Error?o.message:"Unknown error";return console.error("❌ Error fetching NFT contract metadata:",s),{success:!1,error:s}}}async function bn(e){const{address:t,chain:n="base",limit:o=100,exclude_spam:s=!0,cursor:a}=e;if(!t)throw new Error("Address is required");try{const r=en(),i={chain:n,format:"decimal",limit:o,exclude_spam:s,media_items:!0,normalizeMetadata:!0};return a&&(i.cursor=a),{success:!0,data:(await nn.get(`/api/v2.2/${encodeURIComponent(t)}/nft`,{query:i,headers:tn(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 Li="data:image/png;base64,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",Hi="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 Wi extends $t{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 o=t.join(","),s=await this.get(`/keyrings/tokens/${n}/v2`,{query:{addresses:o}});return Array.isArray(s.data)&&(s.data=s.data.filter((a,r,i)=>r===i.findIndex(d=>d.address.toLowerCase()===a.address.toLowerCase())),Array.isArray(t)&&t.length>0&&(s.data=s.data.filter(a=>t.some(r=>r.toLowerCase()===a.address.toLowerCase())),s.data.sort((a,r)=>t.findIndex(i=>i.toLowerCase()===a.address.toLowerCase())-t.findIndex(i=>i.toLowerCase()===r.address.toLowerCase())))),s}catch(o){throw console.error("❌ Error getting tokens details:",o instanceof Error?o.message:o),o}}async getTokenDetail(t,n="base"){try{if(!t)throw new Error("Address is required");const o=await this.getTokensDetails([t],n);return{data:o.data[0]||null,status:o.status}}catch(o){throw console.error(`❌ Error getting token detail for ${t}:`,o instanceof Error?o.message:o),o}}async getTopGainers(t="base",n="24h",o=3){try{return await this.get(`/token-list/top-gainers/${t}`,{query:{duration:n,limit:o}})}catch(s){throw console.error("❌ Error getting top gainers:",s instanceof Error?s.message:s),s}}}const tt=new Wi,Vi="https://dln.debridge.finance",Gi=new $t(Vi);async function ro(e){const{chainId:t,tokenIn:n,tokenInAmount:o,tokenOut:s,accesstoken:a,slippage:r="auto",tokenOutRecipient:i}=e;if(!t||!n||!o||!s)throw new Error("Missing required parameters: chainId, tokenIn, tokenInAmount, tokenOut");try{const B=(await(await fetch("https://exchange-api.keyring.app/admin/setting?configs=others",{method:"GET"})).json())?.others||{},H=B?.AFFILIATE_FEE_PERENT,h=B?.AFFILIATE_FEE_RECIPIENT,E=await Gi.get("/v1.0/chain/transaction",{query:{chainId:String(t),tokenIn:n,tokenInAmount:o,tokenOut:s,slippage:String(r),tokenOutRecipient:i,accesstoken:a,affiliateFeePercent:H,affiliateFeeRecipient:h}});if(E.data?.error)throw new Error(`DeBridge API Error: ${E.data.error}`);return console.log("✅ Quote retrieved successfully"),{success:!0,data:E.data}}catch(d){let T=d instanceof Error?d.message:"Unknown error";const B=d;B.data?.errorMessage?T=B.data.errorMessage:B.response?.data?.errorMessage?T=B.response.data.errorMessage:B.data?.message?T=B.data.message:B.response?.data?.message&&(T=B.response.data.message);const H=B.status||B.response?.status||B.statusCode||B.data?.status;return console.error("📋 Error details:",{errorMessage:T,errorCode:B.data?.errorCode,errorId:B.data?.errorId,status:H,reqId:B.data?.reqId,fullError:{message:B.message,status:B.status,statusCode:B.statusCode}}),{success:!1,error:d instanceof Error?d.message:"Unknown error",status:H,errorMessage:T,errorCode:B.data?.errorCode,errorId:B.data?.errorId}}}function Tt(e){const t=[],n=/!\[([^\]]*)\]\(([^)]+)\)|\[([^\]]*)\]\(([^)]+)\)|(https?:\/\/[^\s<>]+)|\*\*(.+?)\*\*|__(.+?)__|\*(.+?)\*|_(.+?)_|~~(.+?)~~|`([^`]+)`/g;let o=0,s;for(;(s=n.exec(e))!==null;)s.index>o&&t.push(e.slice(o,s.index)),s[1]!==void 0||s[2]!==void 0?t.push(F.jsx("img",{src:s[2],alt:s[1],className:"mc-image"},s.index)):s[3]!==void 0?t.push(F.jsx("a",{href:s[4],target:"_blank",rel:"noopener noreferrer",className:"mc-link",children:s[3]},s.index)):s[5]!==void 0?t.push(F.jsx("a",{href:s[5],target:"_blank",rel:"noopener noreferrer",className:"mc-link",children:s[5]},s.index)):s[6]!==void 0?t.push(F.jsx("strong",{children:Tt(s[6])},s.index)):s[7]!==void 0?t.push(F.jsx("strong",{children:Tt(s[7])},s.index)):s[8]!==void 0?t.push(F.jsx("em",{children:Tt(s[8])},s.index)):s[9]!==void 0?t.push(F.jsx("em",{children:Tt(s[9])},s.index)):s[10]!==void 0?t.push(F.jsx("del",{children:Tt(s[10])},s.index)):s[11]!==void 0&&t.push(F.jsx("code",{className:"mc-inline-code",children:s[11]},s.index)),o=s.index+s[0].length;return o<e.length&&t.push(e.slice(o)),t.length>0?t:[e]}const Yi=({content:e})=>{const t=e.split(`
|
|
104
|
-
`),n=[];let
|
|
105
|
-
`)})})]},`code-${o}`)),o++;continue}if(/^(\s*[-*_]\s*){3,}$/.test(s)){n.push(F.jsx("hr",{className:"mc-hr"},`hr-${o}`)),o++;continue}const a=s.match(/^(#{1,3})\s+(.+)/);if(a){const r=a[1].length,i=a[2];n.push(F.jsx("div",{className:`mc-heading mc-h${r}`,children:Tt(i)},`h-${o}`)),o++;continue}if(s.trimStart().startsWith("> ")){const r=[];for(;o<t.length&&t[o].trimStart().startsWith("> ");)r.push(t[o].replace(/^\s*>\s?/,"")),o++;n.push(F.jsx("div",{className:"mc-blockquote",children:r.map((i,d)=>F.jsx("div",{children:Tt(i)},d))},`bq-${o}`));continue}if(s?.trim()===""){n.push(F.jsx("div",{className:"mc-empty-line"},`empty-${o}`)),o++;continue}n.push(F.jsx("div",{className:"mc-line",children:Tt(s)},`line-${o}`)),o++}return F.jsx("div",{className:"message-content",children:n})},Ji={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:"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"},{key:"decimals",label:"fieldDecimals",type:"number",placeholder:"18",required:!1,editable:!1}]},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 zi(e){return He(e)}function io(e){if(!e||e?.trim()==="")return!1;const t=parseFloat(e);return!isNaN(t)&&t>0}const ji=({action:e,initialValues:t,onSubmit:n,onCancel:o,isSubmitting:s=!1,tokenInfo:a,nftInfo:r})=>{const{t:i,ti:d}=xn(),T=Ji[e],[B,H]=ne.useState(()=>{if(!T)return{};const I={};return T.fields.forEach(Y=>{I[Y.key]=t[Y.key]||""}),I}),[h]=ne.useState(()=>["send_native","send_token","swap_token"].includes(e)&&!a&&B.contract_address?i("formTokenNotFound"):null),[E,m]=ne.useState(()=>{const I={};if(["send_native","send_token","swap_token"].includes(e)&&a){const K=parseFloat(a.balanceFormatted||"0");if(K<=0)I.amount=d("formNoBalance",{symbol:a.symbol??""});else{const fe=t.amount?.trim();fe&&io(fe)&&parseFloat(fe)>K&&(I.amount=d("formInsufficientBalance",{balance:a.balanceFormatted,symbol:a.symbol??""}))}}return I}),C=ne.useCallback((I,Y)=>{H(K=>({...K,[I]:Y})),E[I]&&m(K=>{const fe={...K};return delete fe[I],fe})},[E]),M=ne.useCallback(()=>{if(!T)return!1;const I={};if(T.fields.forEach(Y=>{const K=B[Y.key]?.trim()||"";if(Y.required&&!K&&!(e==="send_nft"&&Y.key==="amount")){I[Y.key]=d("formFieldRequired",{field:i(Y.label)});return}if(K){if(Y.validation==="address"&&!zi(K)&&(I[Y.key]=i("formInvalidAddress")),Y.validation==="amount"&&!io(K)&&(I[Y.key]=i("formMustBePositive")),Y.key==="amount"&&K&&io(K)&&a?.balanceFormatted){const fe=parseFloat(K),pe=parseFloat(a.balanceFormatted);fe>pe&&(I[Y.key]=d("formInsufficientBalance",{balance:a.balanceFormatted,symbol:a.symbol??""}))}Y.validation==="positive_number"&&(isNaN(Number(K))||Number(K)<0)&&(I[Y.key]=i("formMustBeValidNumber"))}}),e==="send_nft"&&B.token_standard?.toUpperCase()==="ERC1155"){const Y=B.amount?.trim();if(!Y)I.amount=d("formFieldRequired",{field:i("fieldAmount")});else if(!/^\d+$/.test(Y)||parseInt(Y,10)<1)I.amount=i("formMustBePositiveInteger");else{const K=parseInt(t.maxAmount||"0",10);K>0&&parseInt(Y,10)>K&&(I.amount=d("formAmountExceedsNft",{max:String(K)}))}}return m(I),Object.keys(I).length===0},[T,B,a,e,t,i,d]),ve=ne.useCallback(()=>{M()&&n(e,B)},[M,n,e,B]);return T?F.jsxs("div",{className:"action-form",children:[F.jsx("div",{className:"action-form-title",children:F.jsx("span",{children:i(T.label)})}),h&&F.jsxs("div",{className:"action-form-general-error",children:["⚠️ ",h]}),a&&F.jsx("div",{className:"action-form-token-info",children:F.jsxs("div",{className:"token-info-row",children:[a.logo&&F.jsx("img",{src:a.logo,alt:a.symbol,className:"token-info-logo",width:20,height:20}),F.jsxs("div",{className:"token-info-details",children:[F.jsxs("span",{className:"token-info-name",children:[a.name," (",a.symbol,")"]}),F.jsxs("span",{className:"token-info-balance",children:[i("formBalance")," ",ce(a.balanceFormatted).decimalPlaces(8,ce.ROUND_DOWN).toFormat()," ",a.symbol,a.usdValue!==void 0&&F.jsxs("span",{className:"token-info-usd",children:[" ","≈ $",a.usdValue.toFixed(2)]})]})]})]})}),r?.image&&F.jsx("div",{className:"action-form-nft-info",children:F.jsx("img",{src:r.image,alt:r.name,className:"nft-info-image",onError:I=>{I.target.style.display="none"}})}),F.jsx("div",{className:"action-form-fields",children:T.fields.map(I=>I.hidden||I.key==="amount"&&e==="send_nft"&&B.token_standard?.toUpperCase()!=="ERC1155"?null:F.jsxs("div",{className:"action-form-field",children:[F.jsxs("div",{className:"action-form-field-header",children:[F.jsxs("div",{className:"action-form-field-label",children:[i(I.label),I.required&&" *"]}),I.key==="amount"&&a&&e!=="send_nft"&&F.jsxs("div",{className:"action-form-pct-btns",children:[[25,50,75].map(Y=>F.jsxs("button",{type:"button",className:"action-form-pct-btn",onClick:()=>C("amount",(parseFloat(a.balanceFormatted)*Y/100).toString()),disabled:s,children:[Y,"%"]},Y)),F.jsx("button",{type:"button",className:"action-form-pct-btn action-form-max-btn",onClick:()=>C("amount",a.balanceFormatted),disabled:s,children:"MAX"})]})]}),(()=>{const Y=I.editable===!1&&!!t[I.key],K=s||Y,fe=[E[I.key]?"error":"",Y?"readonly":""].filter(Boolean).join(" ");return I.type==="address"?F.jsx("textarea",{rows:2,placeholder:I.placeholder,value:B[I.key]||"",onChange:pe=>C(I.key,pe.target.value),className:fe,disabled:K}):F.jsx("input",{type:I.type==="number"?"number":"text",placeholder:I.placeholder,value:B[I.key]||"",onChange:pe=>C(I.key,pe.target.value),className:fe,disabled:K})})(),E[I.key]&&F.jsx("span",{className:"field-error",children:E[I.key]})]},I.key))}),F.jsxs("div",{className:"action-form-actions",children:[F.jsx("button",{className:"action-form-cancel",onClick:o,type:"button",disabled:s,children:i("formCancel")}),F.jsx("button",{className:"action-form-submit",onClick:ve,type:"button",disabled:s,children:i(s?"formProcessing":"formExecute")})]})]}):null},qi=({scrollContainerRef:e,threshold:t=200})=>{const[n,o]=ne.useState(!1);ne.useEffect(()=>{const a=e.current;if(!a)return;const r=()=>{const{scrollTop:i,scrollHeight:d,clientHeight:T}=a,B=d-i-T;o(B>t)};return a.addEventListener("scroll",r,{passive:!0}),r(),()=>{a.removeEventListener("scroll",r)}},[e,t]);const s=()=>{e.current?.scrollTo({top:e.current.scrollHeight,behavior:"smooth"})};return n?F.jsx("button",{className:"scroll-to-bottom-btn",onClick:s,"aria-label":"Scroll to bottom",type:"button",children:F.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",children:F.jsx("path",{d:"M9 3V15M9 15L4 10M9 15L14 10",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}):null};function Qi(e){const{walletAddress:t,chainName:n,chainId:o,nativeSymbol:s,walletTokens:a,walletNfts:r}=e;if(!t)return`You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.
|
|
103
|
+
User: ${t}`:t;return{success:!0,data:(await r.post("/chat",{prompt:c,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 Ri(e){const{address:t,chain:n="base"}=e;if(!t)throw new Error("Contract address is required");try{const s=en();return{success:!0,data:(await nn.get(`/api/v2.2/nft/${encodeURIComponent(t)}/metadata`,{query:{chain:n},headers:tn(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 bn(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=en(),c={chain:n,format:"decimal",limit:s,exclude_spam:o,media_items:!0,normalizeMetadata:!0};return a&&(c.cursor=a),{success:!0,data:(await nn.get(`/api/v2.2/${encodeURIComponent(t)}/nft`,{query:c,headers:tn(r)})).data}}catch(r){const c=r instanceof Error?r.message:"Unknown error";return console.error("❌ Error fetching NFTs:",c),{success:!1,error:c}}}const Mi="data:image/png;base64,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",Hi="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 Wi extends $t{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,c)=>r===c.findIndex(d=>d.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(c=>c.toLowerCase()===a.address.toLowerCase())-t.findIndex(c=>c.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 nt=new Wi,Vi="https://dln.debridge.finance",Gi=new $t(Vi);async function ro(e){const{chainId:t,tokenIn:n,tokenInAmount:s,tokenOut:o,accesstoken:a,slippage:r="auto",tokenOutRecipient:c}=e;if(!t||!n||!s||!o)throw new Error("Missing required parameters: chainId, tokenIn, tokenInAmount, tokenOut");try{const N=(await(await fetch("https://exchange-api.keyring.app/admin/setting?configs=others",{method:"GET"})).json())?.others||{},W=N?.AFFILIATE_FEE_PERENT,h=N?.AFFILIATE_FEE_RECIPIENT,C=await Gi.get("/v1.0/chain/transaction",{query:{chainId:String(t),tokenIn:n,tokenInAmount:s,tokenOut:o,slippage:String(r),tokenOutRecipient:c,accesstoken:a,affiliateFeePercent:W,affiliateFeeRecipient:h}});if(C.data?.error)throw new Error(`DeBridge API Error: ${C.data.error}`);return console.log("✅ Quote retrieved successfully"),{success:!0,data:C.data}}catch(d){let T=d instanceof Error?d.message:"Unknown error";const N=d;N.data?.errorMessage?T=N.data.errorMessage:N.response?.data?.errorMessage?T=N.response.data.errorMessage:N.data?.message?T=N.data.message:N.response?.data?.message&&(T=N.response.data.message);const W=N.status||N.response?.status||N.statusCode||N.data?.status;return console.error("📋 Error details:",{errorMessage:T,errorCode:N.data?.errorCode,errorId:N.data?.errorId,status:W,reqId:N.data?.reqId,fullError:{message:N.message,status:N.status,statusCode:N.statusCode}}),{success:!1,error:d instanceof Error?d.message:"Unknown error",status:W,errorMessage:T,errorCode:N.data?.errorCode,errorId:N.data?.errorId}}}const Yi="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(F.jsx("img",{src:o[2],alt:o[1],className:"mc-image",onError:a=>{const r=a.target;r.src=Yi}},o.index)):o[3]!==void 0?t.push(F.jsx("a",{href:o[4],target:"_blank",rel:"noopener noreferrer",className:"mc-link",children:o[3]},o.index)):o[5]!==void 0?t.push(F.jsx("a",{href:o[5],target:"_blank",rel:"noopener noreferrer",className:"mc-link",children:o[5]},o.index)):o[6]!==void 0?t.push(F.jsx("strong",{children:Tt(o[6])},o.index)):o[7]!==void 0?t.push(F.jsx("strong",{children:Tt(o[7])},o.index)):o[8]!==void 0?t.push(F.jsx("em",{children:Tt(o[8])},o.index)):o[9]!==void 0?t.push(F.jsx("em",{children:Tt(o[9])},o.index)):o[10]!==void 0?t.push(F.jsx("del",{children:Tt(o[10])},o.index)):o[11]!==void 0&&t.push(F.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 Ji=({content:e})=>{const t=e.split(`
|
|
104
|
+
`),n=[];let s=0;for(;s<t.length;){const o=t[s];if(o.trimStart().startsWith("```")){const r=o.trimStart().slice(3)?.trim(),c=[];for(s++;s<t.length&&!t[s].trimStart().startsWith("```");)c.push(t[s]),s++;n.push(F.jsxs("div",{className:"mc-codeblock",children:[r&&F.jsx("div",{className:"mc-codeblock-lang",children:r}),F.jsx("pre",{children:F.jsx("code",{children:c.join(`
|
|
105
|
+
`)})})]},`code-${s}`)),s++;continue}if(/^(\s*[-*_]\s*){3,}$/.test(o)){n.push(F.jsx("hr",{className:"mc-hr"},`hr-${s}`)),s++;continue}const a=o.match(/^(#{1,3})\s+(.+)/);if(a){const r=a[1].length,c=a[2];n.push(F.jsx("div",{className:`mc-heading mc-h${r}`,children:Tt(c)},`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(F.jsx("div",{className:"mc-blockquote",children:r.map((c,d)=>F.jsx("div",{children:Tt(c)},d))},`bq-${s}`));continue}if(o?.trim()===""){n.push(F.jsx("div",{className:"mc-empty-line"},`empty-${s}`)),s++;continue}n.push(F.jsx("div",{className:"mc-line",children:Tt(o)},`line-${s}`)),s++}return F.jsx("div",{className:"message-content",children:n})},zi={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:"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"},{key:"decimals",label:"fieldDecimals",type:"number",placeholder:"18",required:!1,editable:!1}]},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 ji(e){return He(e)}function io(e){if(!e||e?.trim()==="")return!1;const t=parseFloat(e);return!isNaN(t)&&t>0}const qi=({action:e,initialValues:t,onSubmit:n,onCancel:s,isSubmitting:o=!1,tokenInfo:a,nftInfo:r})=>{const{t:c,ti:d}=xn(),T=zi[e],[N,W]=oe.useState(()=>{if(!T)return{};const S={};return T.fields.forEach(Y=>{S[Y.key]=t[Y.key]||""}),S}),[h]=oe.useState(()=>["send_native","send_token","swap_token"].includes(e)&&!a&&N.contract_address?c("formTokenNotFound"):null),[C,m]=oe.useState(()=>{const S={};if(["send_native","send_token","swap_token"].includes(e)&&a){const K=parseFloat(a.balanceFormatted||"0");if(K<=0)S.amount=d("formNoBalance",{symbol:a.symbol??""});else{const fe=t.amount?.trim();fe&&io(fe)&&parseFloat(fe)>K&&(S.amount=d("formInsufficientBalance",{balance:a.balanceFormatted,symbol:a.symbol??""}))}}return S}),I=oe.useCallback((S,Y)=>{W(K=>({...K,[S]:Y})),C[S]&&m(K=>{const fe={...K};return delete fe[S],fe})},[C]),R=oe.useCallback(()=>{if(!T)return!1;const S={};if(T.fields.forEach(Y=>{const K=N[Y.key]?.trim()||"";if(Y.required&&!K&&!(e==="send_nft"&&Y.key==="amount")){S[Y.key]=d("formFieldRequired",{field:c(Y.label)});return}if(K){if(Y.validation==="address"&&!ji(K)&&(S[Y.key]=c("formInvalidAddress")),Y.validation==="amount"&&!io(K)&&(S[Y.key]=c("formMustBePositive")),Y.key==="amount"&&K&&io(K)&&a?.balanceFormatted){const fe=parseFloat(K),pe=parseFloat(a.balanceFormatted);fe>pe&&(S[Y.key]=d("formInsufficientBalance",{balance:a.balanceFormatted,symbol:a.symbol??""}))}Y.validation==="positive_number"&&(isNaN(Number(K))||Number(K)<0)&&(S[Y.key]=c("formMustBeValidNumber"))}}),e==="send_nft"&&N.token_standard?.toUpperCase()==="ERC1155"){const Y=N.amount?.trim();if(!Y)S.amount=d("formFieldRequired",{field:c("fieldAmount")});else if(!/^\d+$/.test(Y)||parseInt(Y,10)<1)S.amount=c("formMustBePositiveInteger");else{const K=parseInt(t.maxAmount||"0",10);K>0&&parseInt(Y,10)>K&&(S.amount=d("formAmountExceedsNft",{max:String(K)}))}}return m(S),Object.keys(S).length===0},[T,N,a,e,t,c,d]),ke=oe.useCallback(()=>{R()&&n(e,N)},[R,n,e,N]);return T?F.jsxs("div",{className:"action-form",children:[F.jsx("div",{className:"action-form-title",children:F.jsx("span",{children:c(T.label)})}),h&&F.jsxs("div",{className:"action-form-general-error",children:["⚠️ ",h]}),a&&F.jsx("div",{className:"action-form-token-info",children:F.jsxs("div",{className:"token-info-row",children:[a.logo&&F.jsx("img",{src:a.logo,alt:a.symbol,className:"token-info-logo",width:20,height:20}),F.jsxs("div",{className:"token-info-details",children:[F.jsxs("span",{className:"token-info-name",children:[a.name," (",a.symbol,")"]}),F.jsxs("span",{className:"token-info-balance",children:[c("formBalance")," ",ce(a.balanceFormatted).decimalPlaces(8,ce.ROUND_DOWN).toFormat()," ",a.symbol,a.usdValue!==void 0&&F.jsxs("span",{className:"token-info-usd",children:[" ","≈ $",a.usdValue.toFixed(2)]})]})]})]})}),r?.image&&F.jsx("div",{className:"action-form-nft-info",children:F.jsx("img",{src:r.image,alt:r.name,className:"nft-info-image",onError:S=>{S.target.style.display="none"}})}),F.jsx("div",{className:"action-form-fields",children:T.fields.map(S=>S.hidden||S.key==="amount"&&e==="send_nft"&&N.token_standard?.toUpperCase()!=="ERC1155"?null:F.jsxs("div",{className:"action-form-field",children:[F.jsxs("div",{className:"action-form-field-header",children:[F.jsxs("div",{className:"action-form-field-label",children:[c(S.label),S.required&&" *"]}),S.key==="amount"&&a&&e!=="send_nft"&&F.jsxs("div",{className:"action-form-pct-btns",children:[[25,50,75].map(Y=>F.jsxs("button",{type:"button",className:"action-form-pct-btn",onClick:()=>I("amount",(parseFloat(a.balanceFormatted)*Y/100).toString()),disabled:o,children:[Y,"%"]},Y)),F.jsx("button",{type:"button",className:"action-form-pct-btn action-form-max-btn",onClick:()=>I("amount",a.balanceFormatted),disabled:o,children:"MAX"})]})]}),(()=>{const Y=S.editable===!1&&!!t[S.key],K=o||Y,fe=[C[S.key]?"error":"",Y?"readonly":""].filter(Boolean).join(" ");return S.type==="address"?F.jsx("textarea",{rows:2,placeholder:S.placeholder,value:N[S.key]||"",onChange:pe=>I(S.key,pe.target.value),className:fe,disabled:K}):F.jsx("input",{type:S.type==="number"?"number":"text",placeholder:S.placeholder,value:N[S.key]||"",onChange:pe=>I(S.key,pe.target.value),className:fe,disabled:K})})(),C[S.key]&&F.jsx("span",{className:"field-error",children:C[S.key]})]},S.key))}),F.jsxs("div",{className:"action-form-actions",children:[F.jsx("button",{className:"action-form-cancel",onClick:s,type:"button",disabled:o,children:c("formCancel")}),F.jsx("button",{className:"action-form-submit",onClick:ke,type:"button",disabled:o,children:c(o?"formProcessing":"formExecute")})]})]}):null},Qi=({scrollContainerRef:e,threshold:t=200})=>{const[n,s]=oe.useState(!1);oe.useEffect(()=>{const a=e.current;if(!a)return;const r=()=>{const{scrollTop:c,scrollHeight:d,clientHeight:T}=a,N=d-c-T;s(N>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?F.jsx("button",{className:"scroll-to-bottom-btn",onClick:o,"aria-label":"Scroll to bottom",type:"button",children:F.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",children:F.jsx("path",{d:"M9 3V15M9 15L4 10M9 15L14 10",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}):null};function Xi(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.
|
|
106
106
|
The user is currently NOT connected to any wallet.
|
|
107
107
|
|
|
108
108
|
## YOUR ROLE:
|
|
@@ -128,14 +128,14 @@ Always respond with a valid JSON object:
|
|
|
128
128
|
- **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").
|
|
129
129
|
- For wallet-required actions, politely explain the user needs to connect their wallet first, and put this in the "message" field
|
|
130
130
|
- ALWAYS respond with raw JSON only, never wrap in \`\`\`json code blocks
|
|
131
|
-
- **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&&!lt[
|
|
131
|
+
- **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&&!lt[s])return`You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.
|
|
132
132
|
The user's wallet address is: ${t}
|
|
133
|
-
The user is selected on (chainId: ${
|
|
133
|
+
The user is selected on (chainId: ${s}) an UNSUPPORTED chain.
|
|
134
134
|
|
|
135
135
|
## YOUR ROLE:
|
|
136
136
|
- You are a friendly, knowledgeable assistant that can talk about ANY topic naturally
|
|
137
137
|
- You can freely answer general questions, discuss crypto tokens, prices, market info, token details, etc. — these do NOT require a supported chain
|
|
138
|
-
- **BLOCKED on unsupported chain** — if the user asks for any of the following, politely inform them that chain (chainId: ${
|
|
138
|
+
- **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:
|
|
139
139
|
- Checking THEIR OWN balance ("what is my balance?", "how much ETH do I have?")
|
|
140
140
|
- Sending tokens or NFTs
|
|
141
141
|
- Swapping or buying tokens
|
|
@@ -158,20 +158,20 @@ Always respond with a valid JSON object:
|
|
|
158
158
|
- **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").
|
|
159
159
|
- For wallet-required actions, politely explain the user needs to connect their wallet first, and put this in the "message" field
|
|
160
160
|
- ALWAYS respond with raw JSON only, never wrap in \`\`\`json code blocks
|
|
161
|
-
- **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
|
|
161
|
+
- **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 c=a&&a.length>0?`
|
|
162
162
|
## USER'S CURRENT WALLET BALANCE:
|
|
163
|
-
${a.map(T=>{const
|
|
163
|
+
${a.map(T=>{const N=T.usd_value!==void 0?` (~$${T.usd_value.toFixed(2)})`:"";return`- ${T.name} (${T.symbol}): ${T.balance_formatted}${N}${T.native_token?" [native]":` [${T.token_address}]`}`}).join(`
|
|
164
164
|
`)}
|
|
165
165
|
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.
|
|
166
166
|
`:"",d=r&&r.length>0?`
|
|
167
167
|
## USER'S NFT COLLECTION:
|
|
168
|
-
${r.map(T=>{const
|
|
168
|
+
${r.map(T=>{const N=T.contract_type==="ERC1155"?` (x${T.amount})`:"";return`- ${T.name}${N} | ${T.contract_type} | contract: ${T.token_address} | tokenId: ${T.token_id}`}).join(`
|
|
169
169
|
`)}
|
|
170
170
|
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.
|
|
171
171
|
`:"";return`You are a Web3 wallet assistant for the Keyring crypto EVM wallet app.
|
|
172
172
|
The user's wallet address is: ${t}
|
|
173
|
-
The user is on chain: ${n} (chainId: ${
|
|
174
|
-
Native token: ${
|
|
173
|
+
The user is on chain: ${n} (chainId: ${s})
|
|
174
|
+
Native token: ${o}${c}${d}
|
|
175
175
|
## YOUR ROLE:
|
|
176
176
|
- You are a friendly, knowledgeable assistant that can talk about ANY topic naturally
|
|
177
177
|
- You also specialize in crypto wallet operations: send tokens, swap, approve, check balances, get token info
|
|
@@ -179,7 +179,7 @@ Native token: ${s}${i}${d}
|
|
|
179
179
|
- When user asks about general topics (weather, coding, history, math, etc.), respond naturally using the "chat" action
|
|
180
180
|
- You will receive CONVERSATION HISTORY to maintain context. Use it to understand what the user is referring to
|
|
181
181
|
- NEVER confuse a general conversation with a wallet action. Only use wallet actions when user EXPLICITLY wants to perform a crypto operation
|
|
182
|
-
- **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: ${
|
|
182
|
+
- **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.**
|
|
183
183
|
- **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.**
|
|
184
184
|
|
|
185
185
|
## RESPONSE FORMAT:
|
|
@@ -221,7 +221,7 @@ Rules for suggested_actions:
|
|
|
221
221
|
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.
|
|
222
222
|
Each entry: { "symbol": "<TOKEN_SYMBOL>" (REQUIRED), "contract_address": "<actual address>" (REQUIRED), "decimals": <number> (REQUIRED) }
|
|
223
223
|
- You MUST include ALL crypto tokens mentioned in your response in token_mentions.
|
|
224
|
-
- You MUST provide the actual contract_address for each token on chainId ${
|
|
224
|
+
- You MUST provide the actual contract_address for each token on chainId ${s}. NEVER leave contract_address empty.
|
|
225
225
|
- You MUST provide the accurate decimals for each token.
|
|
226
226
|
- Only include tokens that are actual tradeable crypto tokens mentioned in your response
|
|
227
227
|
- Do NOT include token_mentions for general greetings, non-crypto conversations, or balance checks
|
|
@@ -230,37 +230,38 @@ Each entry: { "symbol": "<TOKEN_SYMBOL>" (REQUIRED), "contract_address": "<actua
|
|
|
230
230
|
|
|
231
231
|
## SUPPORTED ACTIONS:
|
|
232
232
|
|
|
233
|
-
### 1. send_native - Send native token (${
|
|
233
|
+
### 1. send_native - Send native token (${o})
|
|
234
234
|
Parameters: { "to_address": "", "amount": "" }
|
|
235
|
-
Triggered by: "send ${
|
|
236
|
-
**IMPORTANT**: ONLY use send_native when the user explicitly wants to send **${
|
|
235
|
+
Triggered by: "send ${o}", "transfer 0.1 ${o} to 0x...", "send native token"
|
|
236
|
+
**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}.
|
|
237
237
|
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.
|
|
238
238
|
|
|
239
239
|
### 2. send_token - Send ERC20 token
|
|
240
240
|
Parameters: { "contract_address": "" (REQUIRED), "token_symbol": "", "to_address": "", "amount": "", "decimals": "" }
|
|
241
241
|
Triggered by: "send USDC", "transfer 100 DAI to 0x...", "send token"
|
|
242
|
-
Note: contract_address is REQUIRED — you MUST always provide the actual contract address of the token on chainId ${
|
|
242
|
+
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.
|
|
243
243
|
|
|
244
244
|
### 3. swap_token - Swap tokens
|
|
245
245
|
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": "" }
|
|
246
|
-
Triggered by: "swap ETH to USDC", "exchange 0.5 ETH for USDC", "convert ETH to USDC"
|
|
247
|
-
Note: token_in and token_out are REQUIRED fields — MUST contain the actual contract address. For native tokens (${
|
|
246
|
+
Triggered by: "swap ETH to USDC", "exchange 0.5 ETH for USDC", "convert ETH to USDC", "swap token", "I want to swap", "đổi token"
|
|
247
|
+
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.
|
|
248
|
+
**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.
|
|
248
249
|
|
|
249
250
|
### 4. buy_token - Buy a token (user wants to purchase a specific token)
|
|
250
251
|
Parameters: { "token_symbol": "", "contract_address": "" (REQUIRED), "decimals": "" }
|
|
251
252
|
Triggered by: "buy USDC", "I want to buy ETH", "purchase DOGE", "mua token X"
|
|
252
|
-
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 ${
|
|
253
|
+
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.
|
|
253
254
|
|
|
254
255
|
### 5. approve_token - Approve token spending
|
|
255
256
|
Parameters: { "contract_address": "" (REQUIRED), "token_symbol": "", "spender_address": "", "amount": "", "decimals": "" }
|
|
256
257
|
Triggered by: "approve USDC", "allow spending", "approve contract"
|
|
257
258
|
Note: ALWAYS provide accurate decimals for the token.
|
|
258
259
|
|
|
259
|
-
### 6. wrap_native - Wrap native token (${
|
|
260
|
+
### 6. wrap_native - Wrap native token (${o} → W${o})
|
|
260
261
|
Parameters: { "amount": "" }
|
|
261
262
|
Triggered by: "wrap ETH", "convert to WETH"
|
|
262
263
|
|
|
263
|
-
### 7. unwrap_native - Unwrap native token (W${
|
|
264
|
+
### 7. unwrap_native - Unwrap native token (W${o} → ${o})
|
|
264
265
|
Parameters: { "amount": "" }
|
|
265
266
|
Triggered by: "unwrap WETH", "convert WETH to ETH"
|
|
266
267
|
|
|
@@ -292,11 +293,11 @@ You have comprehensive, precise knowledge of token contract addresses on ALL maj
|
|
|
292
293
|
2. Leave parameter as empty string "" if the user didn't mention it
|
|
293
294
|
3. Always include a friendly "message" explaining what you understood
|
|
294
295
|
4. For "chat" action, put your full response in the "message" field
|
|
295
|
-
5. **CRITICAL**: For ERC20 token actions, contract_address is a REQUIRED field — ALWAYS provide the ACTUAL contract address on chainId ${
|
|
296
|
+
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.**
|
|
296
297
|
6. **IMPORTANT**: ALWAYS provide accurate decimals for each token. This is CRITICAL for accurate transaction amounts.
|
|
297
298
|
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.
|
|
298
299
|
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.
|
|
299
|
-
9. For native token sends, use "send_native" ONLY when the user wants to send **${
|
|
300
|
+
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}.
|
|
300
301
|
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.
|
|
301
302
|
11. ALWAYS respond with raw JSON only, never wrap in \`\`\`json code blocks
|
|
302
303
|
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.
|
|
@@ -305,18 +306,18 @@ You have comprehensive, precise knowledge of token contract addresses on ALL maj
|
|
|
305
306
|
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.
|
|
306
307
|
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).
|
|
307
308
|
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":{...}}.
|
|
308
|
-
18. **CRITICAL - TOKEN CONTRACT ADDRESSES**: You MUST provide the CORRECT and ACCURATE contract address for each token on the CURRENT chain (chainId: ${
|
|
309
|
+
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}.
|
|
309
310
|
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 [].
|
|
310
311
|
|
|
311
312
|
## EXAMPLES:
|
|
312
313
|
|
|
313
|
-
User: "send 0.5 ${
|
|
314
|
+
User: "send 0.5 ${o} to 0x1234...5678" (on the current chain where native = ${o})
|
|
314
315
|
Response: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"0.5"}}
|
|
315
316
|
|
|
316
|
-
User: "send all my ${
|
|
317
|
+
User: "send all my ${o} to 0x1234...5678" or "send max ${o} to 0x1234..."
|
|
317
318
|
Response: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"max"}}
|
|
318
319
|
|
|
319
|
-
User: "send 50% of my ${
|
|
320
|
+
User: "send 50% of my ${o} to 0x1234..."
|
|
320
321
|
Response: {"action":"send_native","message":"<friendly explanation>","parameters":{"to_address":"0x1234...5678","amount":"50%"}}
|
|
321
322
|
|
|
322
323
|
User: "send 0.5 ETH to 0x1234...5678" (on Polygon where native = MATIC, so ETH is ERC20)
|
|
@@ -335,13 +336,13 @@ User: "send 0x4200000000000000000000000000000000000006 to 0xABC..."
|
|
|
335
336
|
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"}}
|
|
336
337
|
|
|
337
338
|
User: "swap 1 ETH to USDC"
|
|
338
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${
|
|
339
|
+
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"}}
|
|
339
340
|
|
|
340
341
|
User: "swap all my ETH to USDC" or "swap max ETH to USDC"
|
|
341
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${
|
|
342
|
+
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"}}
|
|
342
343
|
|
|
343
344
|
User: "swap 75% of my ETH to USDC"
|
|
344
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${
|
|
345
|
+
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%"}}
|
|
345
346
|
|
|
346
347
|
User: "swap USDT to DAI"
|
|
347
348
|
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":""}}
|
|
@@ -396,48 +397,51 @@ Response: {"action":"view_nfts","message":"Let me show you your NFT collection!"
|
|
|
396
397
|
|
|
397
398
|
[With conversation history where user previously swapped ETH to USDC]
|
|
398
399
|
User: "do it again but with 2 ETH"
|
|
399
|
-
Response: {"action":"swap_token","message":"<friendly explanation>","parameters":{"token_in":"native","token_in_symbol":"${s}","token_in_decimals":"18","token_out":"<actual USDC address on current chain>","token_out_symbol":"USDC","token_out_decimals":"6","amount":"2"}}`}const Ts={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",10:"0x4200000000000000000000000000000000000006",56:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",137:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},yn=[{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"}]}],Es=[{name:"deposit",type:"function",stateMutability:"payable",inputs:[],outputs:[]},{name:"withdraw",type:"function",stateMutability:"nonpayable",inputs:[{name:"wad",type:"uint256"}],outputs:[]}],Xi=[{name:"safeTransferFrom",type:"function",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"}],outputs:[]}],Ki=[{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 on(e,t){return t||lt[e]?.rpcUrls?.default?.http?.[0]}function Zi(e){const{action:t,parameters:n,fromAddress:o,chainId:s}=e;switch(t){case"send_native":return _i(n,o,s);case"send_token":return $i(n,o,s);case"approve_token":return ec(n,o,s);case"wrap_native":return tc(n,o,s);case"unwrap_native":return nc(n,o,s);case"send_nft":return sc(n,o,s);default:throw new Error(`Action "${t}" does not produce a transaction`)}}function _i(e,t,n){const{to_address:o,amount:s}=e;if(!o)throw new Error("Recipient address is required");if(!s)throw new Error("Amount is required");const a=mt(s,18).toString();return{from:t,to:o,data:"0x",value:a,chainId:n,description:`Send ${s} native token to ${o}`}}function $i(e,t,n){const{contract_address:o,to_address:s,amount:a,decimals:r,token_symbol:i}=e;if(!o)throw new Error("Token contract address is required");if(!s)throw new Error("Recipient address is required");if(!a)throw new Error("Amount is required");const d=parseInt(r)||18,T=mt(a,d),B=vt({abi:yn,functionName:"transfer",args:[s,T]});return{from:t,to:o,data:B,value:"0",chainId:n,description:`Send ${a} ${i||"tokens"} to ${s}`}}function ec(e,t,n){const{contract_address:o,spender_address:s,amount:a,token_symbol:r}=e;if(!o)throw new Error("Token contract address is required");if(!s)throw new Error("Spender address is required");const i=a&&a?.trim()!==""?mt(a,18):Lt,d=vt({abi:yn,functionName:"approve",args:[s,i]});return{from:t,to:o,data:d,value:"0",chainId:n,description:`Approve ${a||"unlimited"} ${r||"tokens"} for ${s}`}}function tc(e,t,n){const{amount:o}=e;if(!o)throw new Error("Amount is required");const s=Ts[n];if(!s)throw new Error(`WETH not supported on chain ${n}`);const a=mt(o,18).toString(),r=vt({abi:Es,functionName:"deposit"});return{from:t,to:s,data:r,value:a,chainId:n,description:`Wrap ${o} native token`}}function nc(e,t,n){const{amount:o}=e;if(!o)throw new Error("Amount is required");const s=Ts[n];if(!s)throw new Error(`WETH not supported on chain ${n}`);const a=mt(o,18),r=vt({abi:Es,functionName:"withdraw",args:[a]});return{from:t,to:s,data:r,value:"0",chainId:n,description:`Unwrap ${o} WETH`}}function oc(e){return["send_native","send_token","approve_token","wrap_native","unwrap_native","send_nft"].includes(e)}async function co(e){const{transactionHash:t,chainId:n,pollingInterval:o=3e3,timeout:s=12e4,rpcUrl:a}=e,r=on(n,a);if(!r)throw new Error(`No RPC endpoint for chain ${n}`);const i=Date.now();for(;Date.now()-i<s;){try{const T=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(T.result){const B=T.result;return{status:B.status==="0x1"?"success":"fail",blockNumber:B.blockNumber,gasUsed:B.gasUsed,effectiveGasPrice:B.effectiveGasPrice}}}catch(d){console.warn("eth_getTransactionReceipt poll error:",d)}await new Promise(d=>setTimeout(d,o))}throw new Error(`Transaction ${t} was not mined within ${s/1e3}s`)}async function lo(e){const{tokenAddress:t,ownerAddress:n,spenderAddress:o,chainId:s,rpcUrl:a}=e,r=on(s,a);if(!r)return console.warn(`No RPC endpoint for chain ${s}, assuming no allowance`),BigInt(0);try{const i=vt({abi:yn,functionName:"allowance",args:[n,o]}),T=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 T.result&&T.result!=="0x"?BigInt(T.result):BigInt(0)}catch(i){return console.warn("checkAllowance failed:",i),BigInt(0)}}function An(e){const{tokenAddress:t,spenderAddress:n,fromAddress:o,chainId:s,tokenSymbol:a}=e,r=vt({abi:yn,functionName:"approve",args:[n,Lt]});return{from:o,to:t,data:r,value:"0",chainId:s,description:`Approve ${a||"token"} for swap`}}function sc(e,t,n){const{contract_address:o,token_id:s,to_address:a,token_standard:r,amount:i,nft_name:d}=e;if(!o)throw new Error("NFT contract address is required");if(!s)throw new Error("Token ID is required");if(!a)throw new Error("Recipient address is required");const T=(r||"ERC721").toUpperCase(),B=BigInt(s);let H,h;if(T==="ERC1155"){const E=BigInt(i||"1");H=vt({abi:Ki,functionName:"safeTransferFrom",args:[t,a,B,E,"0x"]}),h=`Send ${E>1n?E.toString()+"x ":""}${d||"NFT"} (ERC1155 #${s}) to ${a}`}else H=vt({abi:Xi,functionName:"safeTransferFrom",args:[t,a,B]}),h=`Send ${d||"NFT"} (ERC721 #${s}) to ${a}`;return{from:t,to:o,data:H,value:"0",chainId:n,description:h}}async function vn(e){const{address:t,chainId:n,rpcUrl:o}=e,s=on(n,o);if(!s)return console.warn(`No RPC endpoint for chain ${n}`),new ce(0);try{const r=await(await fetch(s,{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 ce(BigInt(r.result).toString()):new ce(0)}catch(a){return console.warn("getNativeBalance failed:",a),new ce(0)}}async function sn(e){const{from:t,to:n,data:o,value:s,chainId:a,rpcUrl:r}=e,i=on(a,r);if(!i)return console.warn(`No RPC endpoint for chain ${a}`),new ce(0);try{const[d,T]=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:o,...s&&s!=="0"?{value:s}:{}}]})}),fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:2,method:"eth_gasPrice",params:[]})})]),[B,H]=await Promise.all([d.json(),T.json()]),h=B.result?new ce(BigInt(B.result).toString()):new ce(0),E=H.result?new ce(BigInt(H.result).toString()):new ce(0);return h.times(E).times(1.1)}catch(d){return console.warn("estimateTransactionFee failed:",d),new ce(0)}}async function uo(e){const{chainId:t,rpcUrl:n}=e,o=on(t,n);if(!o)return console.warn(`No RPC endpoint for chain ${t}`),new ce(0);try{const a=await(await fetch(o,{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 ce(BigInt(a.result).toString()):new ce(0)}catch(s){return console.warn("getGasPrice failed:",s),new ce(0)}}var oe={},an={exports:{}},ac=an.exports,Ss;function rc(){return Ss||(Ss=1,(function(e,t){(function(n,o){var s="1.0.41",a="",r="?",i="function",d="undefined",T="object",B="string",H="major",h="model",E="name",m="type",C="vendor",M="version",ve="architecture",I="console",Y="mobile",K="tablet",fe="smarttv",pe="wearable",Be="embedded",l=500,u="Amazon",c="Apple",g="ASUS",w="BlackBerry",b="Browser",A="Chrome",y="Edge",k="Firefox",v="Google",S="Honor",D="Huawei",z="Lenovo",se="LG",he="Microsoft",ke="Motorola",xe="Nvidia",Q="OnePlus",we="Opera",Se="OPPO",Ye="Samsung",at="Sharp",Xe="Sony",Pe="Xiaomi",je="Zebra",Le="Facebook",De="Chromium OS",Te="Mac OS",Ft=" Browser",Yt=function(R,$){var V={};for(var te in R)$[te]&&$[te].length%2===0?V[te]=$[te].concat(R[te]):V[te]=R[te];return V},gt=function(R){for(var $={},V=0;V<R.length;V++)$[R[V].toUpperCase()]=R[V];return $},U=function(R,$){return typeof R===B?_($).indexOf(_(R))!==-1:!1},_=function(R){return R.toLowerCase()},J=function(R){return typeof R===B?R.replace(/[^\d\.]/g,a).split(".")[0]:o},ee=function(R,$){if(typeof R===B)return R=R.replace(/^\s\s*/,a),typeof $===d?R:R.substring(0,l)},Z=function(R,$){for(var V=0,te,be,ae,L,O,W;V<$.length&&!O;){var me=$[V],Ee=$[V+1];for(te=be=0;te<me.length&&!O&&me[te];)if(O=me[te++].exec(R),O)for(ae=0;ae<Ee.length;ae++)W=O[++be],L=Ee[ae],typeof L===T&&L.length>0?L.length===2?typeof L[1]==i?this[L[0]]=L[1].call(this,W):this[L[0]]=L[1]:L.length===3?typeof L[1]===i&&!(L[1].exec&&L[1].test)?this[L[0]]=W?L[1].call(this,W,L[2]):o:this[L[0]]=W?W.replace(L[1],L[2]):o:L.length===4&&(this[L[0]]=W?L[3].call(this,W.replace(L[1],L[2])):o):this[L]=W||o;V+=2}},j=function(R,$){for(var V in $)if(typeof $[V]===T&&$[V].length>0){for(var te=0;te<$[V].length;te++)if(U($[V][te],R))return V===r?o:V}else if(U($[V],R))return V===r?o:V;return $.hasOwnProperty("*")?$["*"]:R},q={"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},ie={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"},ye={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[M,[E,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[M,[E,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[E,M],[/opios[\/ ]+([\w\.]+)/i],[M,[E,we+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[M,[E,we+" GX"]],[/\bopr\/([\w\.]+)/i],[M,[E,we]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[M,[E,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[M,[E,"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],[E,M],[/quark(?:pc)?\/([-\w\.]+)/i],[M,[E,"Quark"]],[/\bddg\/([\w\.]+)/i],[M,[E,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[M,[E,"UC"+b]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[M,[E,"WeChat"]],[/konqueror\/([\w\.]+)/i],[M,[E,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[M,[E,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[M,[E,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[M,[E,"Smart Lenovo "+b]],[/(avast|avg)\/([\w\.]+)/i],[[E,/(.+)/,"$1 Secure "+b],M],[/\bfocus\/([\w\.]+)/i],[M,[E,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[M,[E,we+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[M,[E,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[M,[E,"Dolphin"]],[/coast\/([\w\.]+)/i],[M,[E,we+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[M,[E,"MIUI"+Ft]],[/fxios\/([\w\.-]+)/i],[M,[E,k]],[/\bqihoobrowser\/?([\w\.]*)/i],[M,[E,"360"]],[/\b(qq)\/([\w\.]+)/i],[[E,/(.+)/,"$1Browser"],M],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[E,/(.+)/,"$1"+Ft],M],[/samsungbrowser\/([\w\.]+)/i],[M,[E,Ye+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[M,[E,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[E,"Sogou Mobile"],M],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[E,M],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[E],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[M,E],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[E,Le],M],[/(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],[E,M],[/\bgsa\/([\w\.]+) .*safari\//i],[M,[E,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[M,[E,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[M,[E,A+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[E,A+" WebView"],M],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[M,[E,"Android "+b]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[E,M],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[M,[E,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[M,E],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[E,[M,j,q]],[/(webkit|khtml)\/([\w\.]+)/i],[E,M],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[E,"Netscape"],M],[/(wolvic|librewolf)\/([\w\.]+)/i],[E,M],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[M,[E,k+" 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],[E,[M,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[E,[M,/master.|lts./,""]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[ve,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[ve,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[ve,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[ve,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[ve,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[ve,/ower/,a,_]],[/ sun4\w[;\)]/i],[[ve,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[ve,_]]],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],[h,[C,Ye],[m,K]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[h,[C,Ye],[m,Y]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[h,[C,c],[m,Y]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[h,[C,c],[m,K]],[/(macintosh);/i],[h,[C,c]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[h,[C,at],[m,Y]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[h,[C,S],[m,K]],[/honor([-\w ]+)[;\)]/i],[h,[C,S],[m,Y]],[/\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],[h,[C,D],[m,K]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[h,[C,D],[m,Y]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[h,/_/g," "],[C,Pe],[m,K]],[/\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],[[h,/_/g," "],[C,Pe],[m,Y]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[h,[C,Se],[m,Y]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[h,[C,j,{OnePlus:["304","403","203"],"*":Se}],[m,K]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[h,[C,"Vivo"],[m,Y]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[h,[C,"Realme"],[m,Y]],[/\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],[h,[C,ke],[m,Y]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[h,[C,ke],[m,K]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[h,[C,se],[m,K]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[h,[C,se],[m,Y]],[/(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],[h,[C,z],[m,K]],[/(nokia) (t[12][01])/i],[C,h,[m,K]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[h,/_/g," "],[m,Y],[C,"Nokia"]],[/(pixel (c|tablet))\b/i],[h,[C,v],[m,K]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[h,[C,v],[m,Y]],[/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],[h,[C,Xe],[m,Y]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[h,"Xperia Tablet"],[C,Xe],[m,K]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[h,[C,Q],[m,Y]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[h,[C,u],[m,K]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[h,/(.+)/g,"Fire Phone $1"],[C,u],[m,Y]],[/(playbook);[-\w\),; ]+(rim)/i],[h,C,[m,K]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[h,[C,w],[m,Y]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[h,[C,g],[m,K]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[h,[C,g],[m,Y]],[/(nexus 9)/i],[h,[C,"HTC"],[m,K]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[C,[h,/_/g," "],[m,Y]],[/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],[h,[C,"TCL"],[m,K]],[/(itel) ((\w+))/i],[[C,_],h,[m,j,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[h,[C,"Acer"],[m,K]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[h,[C,"Meizu"],[m,Y]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[h,[C,"Ulefone"],[m,Y]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[h,[C,"Energizer"],[m,Y]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[h,[C,"Cat"],[m,Y]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[h,[C,"Smartfren"],[m,Y]],[/droid.+; (a(?:015|06[35]|142p?))/i],[h,[C,"Nothing"],[m,Y]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[h,[C,"Archos"],[m,K]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[h,[C,"Archos"],[m,Y]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[C,h,[m,K]],[/(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],[C,h,[m,Y]],[/(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],[C,h,[m,K]],[/(surface duo)/i],[h,[C,he],[m,K]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[h,[C,"Fairphone"],[m,Y]],[/(u304aa)/i],[h,[C,"AT&T"],[m,Y]],[/\bsie-(\w*)/i],[h,[C,"Siemens"],[m,Y]],[/\b(rct\w+) b/i],[h,[C,"RCA"],[m,K]],[/\b(venue[\d ]{2,7}) b/i],[h,[C,"Dell"],[m,K]],[/\b(q(?:mv|ta)\w+) b/i],[h,[C,"Verizon"],[m,K]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[h,[C,"Barnes & Noble"],[m,K]],[/\b(tm\d{3}\w+) b/i],[h,[C,"NuVision"],[m,K]],[/\b(k88) b/i],[h,[C,"ZTE"],[m,K]],[/\b(nx\d{3}j) b/i],[h,[C,"ZTE"],[m,Y]],[/\b(gen\d{3}) b.+49h/i],[h,[C,"Swiss"],[m,Y]],[/\b(zur\d{3}) b/i],[h,[C,"Swiss"],[m,K]],[/\b((zeki)?tb.*\b) b/i],[h,[C,"Zeki"],[m,K]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[C,"Dragon Touch"],h,[m,K]],[/\b(ns-?\w{0,9}) b/i],[h,[C,"Insignia"],[m,K]],[/\b((nxa|next)-?\w{0,9}) b/i],[h,[C,"NextBook"],[m,K]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[C,"Voice"],h,[m,Y]],[/\b(lvtel\-)?(v1[12]) b/i],[[C,"LvTel"],h,[m,Y]],[/\b(ph-1) /i],[h,[C,"Essential"],[m,Y]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[h,[C,"Envizen"],[m,K]],[/\b(trio[-\w\. ]+) b/i],[h,[C,"MachSpeed"],[m,K]],[/\btu_(1491) b/i],[h,[C,"Rotor"],[m,K]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[h,[C,xe],[m,K]],[/(sprint) (\w+)/i],[C,h,[m,Y]],[/(kin\.[onetw]{3})/i],[[h,/\./g," "],[C,he],[m,Y]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[h,[C,je],[m,K]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[h,[C,je],[m,Y]],[/smart-tv.+(samsung)/i],[C,[m,fe]],[/hbbtv.+maple;(\d+)/i],[[h,/^/,"SmartTV"],[C,Ye],[m,fe]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[C,se],[m,fe]],[/(apple) ?tv/i],[C,[h,c+" TV"],[m,fe]],[/crkey/i],[[h,A+"cast"],[C,v],[m,fe]],[/droid.+aft(\w+)( bui|\))/i],[h,[C,u],[m,fe]],[/(shield \w+ tv)/i],[h,[C,xe],[m,fe]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[h,[C,at],[m,fe]],[/(bravia[\w ]+)( bui|\))/i],[h,[C,Xe],[m,fe]],[/(mi(tv|box)-?\w+) bui/i],[h,[C,Pe],[m,fe]],[/Hbbtv.*(technisat) (.*);/i],[C,h,[m,fe]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[C,ee],[h,ee],[m,fe]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[h,[m,fe]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[m,fe]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[C,h,[m,I]],[/droid.+; (shield)( bui|\))/i],[h,[C,xe],[m,I]],[/(playstation \w+)/i],[h,[C,Xe],[m,I]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[h,[C,he],[m,I]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[h,[C,Ye],[m,pe]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[C,h,[m,pe]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[h,[C,Se],[m,pe]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[h,[C,c],[m,pe]],[/(opwwe\d{3})/i],[h,[C,Q],[m,pe]],[/(moto 360)/i],[h,[C,ke],[m,pe]],[/(smartwatch 3)/i],[h,[C,Xe],[m,pe]],[/(g watch r)/i],[h,[C,se],[m,pe]],[/droid.+; (wt63?0{2,3})\)/i],[h,[C,je],[m,pe]],[/droid.+; (glass) \d/i],[h,[C,v],[m,pe]],[/(pico) (4|neo3(?: link|pro)?)/i],[C,h,[m,pe]],[/; (quest( \d| pro)?)/i],[h,[C,Le],[m,pe]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[C,[m,Be]],[/(aeobc)\b/i],[h,[C,u],[m,Be]],[/(homepod).+mac os/i],[h,[C,c],[m,Be]],[/windows iot/i],[[m,Be]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[h,[m,Y]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[h,[m,K]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[m,K]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[m,Y]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[h,[C,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[M,[E,y+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[E,M],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[M,[E,"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],[E,M],[/ladybird\//i],[[E,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[M,E]],os:[[/microsoft (windows) (vista|xp)/i],[E,M],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[E,[M,j,ie]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[M,j,ie],[E,"Windows"]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[M,/_/g,"."],[E,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[E,Te],[M,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[M,E],[/(ubuntu) ([\w\.]+) like android/i],[[E,/(.+)/,"$1 Touch"],M],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[E,M],[/\(bb(10);/i],[M,[E,w]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[M,[E,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[M,[E,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[M,[E,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[M,[E,"watchOS"]],[/crkey\/([\d\.]+)/i],[M,[E,A+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[E,De],M],[/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],[E,M],[/(sunos) ?([\w\.\d]*)/i],[[E,"Solaris"],M],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[E,M]]},re=function(R,$){if(typeof R===T&&($=R,R=o),!(this instanceof re))return new re(R,$).getResult();var V=typeof n!==d&&n.navigator?n.navigator:o,te=R||(V&&V.userAgent?V.userAgent:a),be=V&&V.userAgentData?V.userAgentData:o,ae=$?Yt(ye,$):ye,L=V&&V.userAgent==te;return this.getBrowser=function(){var O={};return O[E]=o,O[M]=o,Z.call(O,te,ae.browser),O[H]=J(O[M]),L&&V&&V.brave&&typeof V.brave.isBrave==i&&(O[E]="Brave"),O},this.getCPU=function(){var O={};return O[ve]=o,Z.call(O,te,ae.cpu),O},this.getDevice=function(){var O={};return O[C]=o,O[h]=o,O[m]=o,Z.call(O,te,ae.device),L&&!O[m]&&be&&be.mobile&&(O[m]=Y),L&&O[h]=="Macintosh"&&V&&typeof V.standalone!==d&&V.maxTouchPoints&&V.maxTouchPoints>2&&(O[h]="iPad",O[m]=K),O},this.getEngine=function(){var O={};return O[E]=o,O[M]=o,Z.call(O,te,ae.engine),O},this.getOS=function(){var O={};return O[E]=o,O[M]=o,Z.call(O,te,ae.os),L&&!O[E]&&be&&be.platform&&be.platform!="Unknown"&&(O[E]=be.platform.replace(/chrome os/i,De).replace(/macos/i,Te)),O},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 te},this.setUA=function(O){return te=typeof O===B&&O.length>l?ee(O,l):O,this},this.setUA(te),this};re.VERSION=s,re.BROWSER=gt([E,M,H]),re.CPU=gt([ve]),re.DEVICE=gt([h,C,m,I,Y,fe,K,pe,Be]),re.ENGINE=re.OS=gt([E,M]),e.exports&&(t=e.exports=re),t.UAParser=re;var X=typeof n!==d&&(n.jQuery||n.Zepto);if(X&&!X.ua){var N=new re;X.ua=N.getResult(),X.ua.get=function(){return N.getUA()},X.ua.set=function(R){N.setUA(R);var $=N.getResult();for(var V in $)X.ua[V]=$[V]}}})(typeof window=="object"?window:ac)})(an,an.exports)),an.exports}var xs;function ic(){if(xs)return oe;xs=1,Object.defineProperty(oe,"__esModule",{value:!0});function e(x){return x&&typeof x=="object"&&"default"in x?x.default:x}var t=ne,n=e(t),o=rc(),s=new o,a=s.getBrowser(),r=s.getCPU(),i=s.getDevice(),d=s.getEngine(),T=s.getOS(),B=s.getUA(),H=function(f){return s.setUA(f)},h=function(f){if(!f){console.error("No userAgent string was provided");return}var p=new o(f);return{UA:p,browser:p.getBrowser(),cpu:p.getCPU(),device:p.getDevice(),engine:p.getEngine(),os:p.getOS(),ua:p.getUA(),setUserAgent:function(G){return p.setUA(G)}}},E=Object.freeze({ClientUAInstance:s,browser:a,cpu:r,device:i,engine:d,os:T,ua:B,setUa:H,parseUserAgent:h});function m(x,f){var p=Object.keys(x);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(x);f&&(P=P.filter(function(G){return Object.getOwnPropertyDescriptor(x,G).enumerable})),p.push.apply(p,P)}return p}function C(x){for(var f=1;f<arguments.length;f++){var p=arguments[f]!=null?arguments[f]:{};f%2?m(Object(p),!0).forEach(function(P){K(x,P,p[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(x,Object.getOwnPropertyDescriptors(p)):m(Object(p)).forEach(function(P){Object.defineProperty(x,P,Object.getOwnPropertyDescriptor(p,P))})}return x}function M(x){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?M=function(f){return typeof f}:M=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},M(x)}function ve(x,f){if(!(x instanceof f))throw new TypeError("Cannot call a class as a function")}function I(x,f){for(var p=0;p<f.length;p++){var P=f[p];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(x,P.key,P)}}function Y(x,f,p){return f&&I(x.prototype,f),x}function K(x,f,p){return f in x?Object.defineProperty(x,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):x[f]=p,x}function fe(){return fe=Object.assign||function(x){for(var f=1;f<arguments.length;f++){var p=arguments[f];for(var P in p)Object.prototype.hasOwnProperty.call(p,P)&&(x[P]=p[P])}return x},fe.apply(this,arguments)}function pe(x,f){if(typeof f!="function"&&f!==null)throw new TypeError("Super expression must either be null or a function");x.prototype=Object.create(f&&f.prototype,{constructor:{value:x,writable:!0,configurable:!0}}),f&&l(x,f)}function Be(x){return Be=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},Be(x)}function l(x,f){return l=Object.setPrototypeOf||function(P,G){return P.__proto__=G,P},l(x,f)}function u(x,f){if(x==null)return{};var p={},P=Object.keys(x),G,Ae;for(Ae=0;Ae<P.length;Ae++)G=P[Ae],!(f.indexOf(G)>=0)&&(p[G]=x[G]);return p}function c(x,f){if(x==null)return{};var p=u(x,f),P,G;if(Object.getOwnPropertySymbols){var Ae=Object.getOwnPropertySymbols(x);for(G=0;G<Ae.length;G++)P=Ae[G],!(f.indexOf(P)>=0)&&Object.prototype.propertyIsEnumerable.call(x,P)&&(p[P]=x[P])}return p}function g(x){if(x===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return x}function w(x,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 g(x)}function b(x,f){return A(x)||y(x,f)||k(x,f)||S()}function A(x){if(Array.isArray(x))return x}function y(x,f){var p=x==null?null:typeof Symbol<"u"&&x[Symbol.iterator]||x["@@iterator"];if(p!=null){var P=[],G=!0,Ae=!1,Me,qe;try{for(p=p.call(x);!(G=(Me=p.next()).done)&&(P.push(Me.value),!(f&&P.length===f));G=!0);}catch(Sn){Ae=!0,qe=Sn}finally{try{!G&&p.return!=null&&p.return()}finally{if(Ae)throw qe}}return P}}function k(x,f){if(x){if(typeof x=="string")return v(x,f);var p=Object.prototype.toString.call(x).slice(8,-1);if(p==="Object"&&x.constructor&&(p=x.constructor.name),p==="Map"||p==="Set")return Array.from(x);if(p==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(p))return v(x,f)}}function v(x,f){(f==null||f>x.length)&&(f=x.length);for(var p=0,P=new Array(f);p<f;p++)P[p]=x[p];return P}function S(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
400
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var D={Mobile:"mobile",Tablet:"tablet",SmartTv:"smarttv",Console:"console",Wearable:"wearable",Embedded:"embedded",Browser:void 0},z={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"},he={isMobile:!1,isTablet:!1,isBrowser:!1,isSmartTV:!1,isConsole:!1,isWearable:!1},ke=function(f){switch(f){case D.Mobile:return{isMobile:!0};case D.Tablet:return{isTablet:!0};case D.SmartTv:return{isSmartTV:!0};case D.Console:return{isConsole:!0};case D.Wearable:return{isWearable:!0};case D.Browser:return{isBrowser:!0};case D.Embedded:return{isEmbedded:!0};default:return he}},xe=function(f){return H(f)},Q=function(f){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"none";return f||p},we=function(){return typeof window<"u"&&(window.navigator||navigator)?window.navigator||navigator:!1},Se=function(f){var p=we();return p&&p.platform&&(p.platform.indexOf(f)!==-1||p.platform==="MacIntel"&&p.maxTouchPoints>1&&!window.MSStream)},Ye=function(f,p,P,G,Ae){return{isBrowser:f,browserMajorVersion:Q(p.major),browserFullVersion:Q(p.version),browserName:Q(p.name),engineName:Q(P.name),engineVersion:Q(P.version),osName:Q(G.name),osVersion:Q(G.version),userAgent:Q(Ae)}},at=function(f,p,P,G){return C({},f,{vendor:Q(p.vendor),model:Q(p.model),os:Q(P.name),osVersion:Q(P.version),ua:Q(G)})},Xe=function(f,p,P,G){return{isSmartTV:f,engineName:Q(p.name),engineVersion:Q(p.version),osName:Q(P.name),osVersion:Q(P.version),userAgent:Q(G)}},Pe=function(f,p,P,G){return{isConsole:f,engineName:Q(p.name),engineVersion:Q(p.version),osName:Q(P.name),osVersion:Q(P.version),userAgent:Q(G)}},je=function(f,p,P,G){return{isWearable:f,engineName:Q(p.name),engineVersion:Q(p.version),osName:Q(P.name),osVersion:Q(P.version),userAgent:Q(G)}},Le=function(f,p,P,G,Ae){return{isEmbedded:f,vendor:Q(p.vendor),model:Q(p.model),engineName:Q(P.name),engineVersion:Q(P.version),osName:Q(G.name),osVersion:Q(G.version),userAgent:Q(Ae)}};function De(x){var f=x?h(x):E,p=f.device,P=f.browser,G=f.engine,Ae=f.os,Me=f.ua,qe=ke(p.type),Sn=qe.isBrowser,al=qe.isMobile,rl=qe.isTablet,Ms=qe.isSmartTV,Ls=qe.isConsole,Hs=qe.isWearable,Ws=qe.isEmbedded;if(Sn)return Ye(Sn,P,G,Ae,Me);if(Ms)return Xe(Ms,G,Ae,Me);if(Ls)return Pe(Ls,G,Ae,Me);if(al||rl)return at(qe,p,Ae,Me);if(Hs)return je(Hs,G,Ae,Me);if(Ws)return Le(Ws,p,G,Ae,Me)}var Te=function(f){var p=f.type;return p===D.Mobile},Ft=function(f){var p=f.type;return p===D.Tablet},Yt=function(f){var p=f.type;return p===D.Mobile||p===D.Tablet},gt=function(f){var p=f.type;return p===D.SmartTv},U=function(f){var p=f.type;return p===D.Browser},_=function(f){var p=f.type;return p===D.Wearable},J=function(f){var p=f.type;return p===D.Console},ee=function(f){var p=f.type;return p===D.Embedded},Z=function(f){var p=f.vendor;return Q(p)},j=function(f){var p=f.model;return Q(p)},q=function(f){var p=f.type;return Q(p,"browser")},ie=function(f){var p=f.name;return p===se.Android},ye=function(f){var p=f.name;return p===se.Windows},re=function(f){var p=f.name;return p===se.MAC_OS},X=function(f){var p=f.name;return p===se.WindowsPhone},N=function(f){var p=f.name;return p===se.IOS},R=function(f){var p=f.version;return Q(p)},$=function(f){var p=f.name;return Q(p)},V=function(f){var p=f.name;return p===z.Chrome},te=function(f){var p=f.name;return p===z.Firefox},be=function(f){var p=f.name;return p===z.Chromium},ae=function(f){var p=f.name;return p===z.Edge},L=function(f){var p=f.name;return p===z.Yandex},O=function(f){var p=f.name;return p===z.Safari||p===z.MobileSafari},W=function(f){var p=f.name;return p===z.MobileSafari},me=function(f){var p=f.name;return p===z.Opera},Ee=function(f){var p=f.name;return p===z.InternetExplorer||p===z.Ie},de=function(f){var p=f.name;return p===z.MIUI},Ie=function(f){var p=f.name;return p===z.SamsungBrowser},Fe=function(f){var p=f.version;return Q(p)},Ce=function(f){var p=f.major;return Q(p)},Oe=function(f){var p=f.name;return Q(p)},Ke=function(f){var p=f.name;return Q(p)},nt=function(f){var p=f.version;return Q(p)},dt=function(){var f=we(),p=f&&f.userAgent&&f.userAgent.toLowerCase();return typeof p=="string"?/electron/.test(p):!1},rt=function(f){return typeof f=="string"&&f.indexOf("Edg/")!==-1},Pt=function(){var f=we();return f&&(/iPad|iPhone|iPod/.test(f.platform)||f.platform==="MacIntel"&&f.maxTouchPoints>1)&&!window.MSStream},Ze=function(){return Se("iPad")},rn=function(){return Se("iPhone")},Jt=function(){return Se("iPod")},Re=function(f){return Q(f)};function kn(x){var f=x||E,p=f.device,P=f.browser,G=f.os,Ae=f.engine,Me=f.ua;return{isSmartTV:gt(p),isConsole:J(p),isWearable:_(p),isEmbedded:ee(p),isMobileSafari:W(P)||Ze(),isChromium:be(P),isMobile:Yt(p)||Ze(),isMobileOnly:Te(p),isTablet:Ft(p)||Ze(),isBrowser:U(p),isDesktop:U(p),isAndroid:ie(G),isWinPhone:X(G),isIOS:N(G)||Ze(),isChrome:V(P),isFirefox:te(P),isSafari:O(P),isOpera:me(P),isIE:Ee(P),osVersion:R(G),osName:$(G),fullBrowserVersion:Fe(P),browserVersion:Ce(P),browserName:Oe(P),mobileVendor:Z(p),mobileModel:j(p),engineName:Ke(Ae),engineVersion:nt(Ae),getUA:Re(Me),isEdge:ae(P)||rt(Me),isYandex:L(P),deviceType:q(p),isIOS13:Pt(),isIPad13:Ze(),isIPhone13:rn(),isIPod13:Jt(),isElectron:dt(),isEdgeChromium:rt(Me),isLegacyEdge:ae(P)&&!rt(Me),isWindows:ye(G),isMacOs:re(G),isMIUI:de(P),isSamsungBrowser:Ie(P)}}var Tn=gt(i),Is=J(i),Cs=_(i),uc=ee(i),fc=W(a)||Ze(),pc=be(a),En=Yt(i)||Ze(),Bs=Te(i),Ns=Ft(i)||Ze(),Fs=U(i),mc=U(i),Ps=ie(T),Ds=X(T),Os=N(T)||Ze(),hc=V(a),gc=te(a),wc=O(a),bc=me(a),Us=Ee(a),yc=R(T),Ac=$(T),vc=Fe(a),kc=Ce(a),Tc=Oe(a),Ec=Z(i),Sc=j(i),xc=Ke(d),Ic=nt(d),Cc=Re(B),Bc=ae(a)||rt(B),Nc=L(a),Fc=q(i),Pc=Pt(),Dc=Ze(),Oc=rn(),Uc=Jt(),Rc=dt(),Mc=rt(B),Lc=ae(a)&&!rt(B),Hc=ye(T),Wc=re(T),Vc=de(a),Gc=Ie(a),Yc=function(f){if(!f||typeof f!="string"){console.error("No valid user agent string was provided");return}var p=h(f),P=p.device,G=p.browser,Ae=p.os,Me=p.engine,qe=p.ua;return kn({device:P,browser:G,os:Ae,engine:Me,ua:qe})},Jc=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Ps?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},zc=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Fs?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},jc=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Us?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},qc=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Os?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},Qc=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return En?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},Xc=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Ns?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},Kc=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Ds?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},Zc=function(f){var p=f.renderWithFragment,P=f.children;f.viewClassName,f.style;var G=c(f,["renderWithFragment","children","viewClassName","style"]);return Bs?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},_c=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Tn?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},$c=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Is?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},el=function(f){var p=f.renderWithFragment,P=f.children,G=c(f,["renderWithFragment","children"]);return Cs?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},tl=function(f){var p=f.renderWithFragment,P=f.children;f.viewClassName,f.style;var G=f.condition,Ae=c(f,["renderWithFragment","children","viewClassName","style","condition"]);return G?p?n.createElement(t.Fragment,null,P):n.createElement("div",Ae,P):null};function nl(x){return(function(f){pe(p,f);function p(P){var G;return ve(this,p),G=w(this,Be(p).call(this,P)),G.isEventListenerAdded=!1,G.handleOrientationChange=G.handleOrientationChange.bind(g(G)),G.onOrientationChange=G.onOrientationChange.bind(g(G)),G.onPageLoad=G.onPageLoad.bind(g(G)),G.state={isLandscape:!1,isPortrait:!1},G}return Y(p,[{key:"handleOrientationChange",value:function(){this.isEventListenerAdded||(this.isEventListenerAdded=!0);var G=window.innerWidth>window.innerHeight?90:0;this.setState({isPortrait:G===0,isLandscape:G===90})}},{key:"onOrientationChange",value:function(){this.handleOrientationChange()}},{key:"onPageLoad",value:function(){this.handleOrientationChange()}},{key:"componentDidMount",value:function(){(typeof window>"u"?"undefined":M(window))!==void 0&&En&&(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(x,fe({},this.props,{isLandscape:this.state.isLandscape,isPortrait:this.state.isPortrait}))}}]),p})(n.Component)}function ol(){var x=t.useState(function(){var Ae=window.innerWidth>window.innerHeight?90:0;return{isPortrait:Ae===0,isLandscape:Ae===90,orientation:Ae===0?"portrait":"landscape"}}),f=b(x,2),p=f[0],P=f[1],G=t.useCallback(function(){var Ae=window.innerWidth>window.innerHeight?90:0,Me={isPortrait:Ae===0,isLandscape:Ae===90,orientation:Ae===0?"portrait":"landscape"};p.orientation!==Me.orientation&&P(Me)},[p.orientation]);return t.useEffect(function(){return(typeof window>"u"?"undefined":M(window))!==void 0&&En&&(G(),window.addEventListener("load",G,!1),window.addEventListener("resize",G,!1)),function(){window.removeEventListener("resize",G,!1),window.removeEventListener("load",G,!1)}},[G]),p}function Rs(x){var f=x||window.navigator.userAgent;return h(f)}function sl(x){var f=x||window.navigator.userAgent,p=Rs(f),P=kn(p);return[P,p]}return oe.AndroidView=Jc,oe.BrowserTypes=z,oe.BrowserView=zc,oe.ConsoleView=$c,oe.CustomView=tl,oe.IEView=jc,oe.IOSView=qc,oe.MobileOnlyView=Zc,oe.MobileView=Qc,oe.OsTypes=se,oe.SmartTVView=_c,oe.TabletView=Xc,oe.WearableView=el,oe.WinPhoneView=Kc,oe.browserName=Tc,oe.browserVersion=kc,oe.deviceDetect=De,oe.deviceType=Fc,oe.engineName=xc,oe.engineVersion=Ic,oe.fullBrowserVersion=vc,oe.getSelectorsByUserAgent=Yc,oe.getUA=Cc,oe.isAndroid=Ps,oe.isBrowser=Fs,oe.isChrome=hc,oe.isChromium=pc,oe.isConsole=Is,oe.isDesktop=mc,oe.isEdge=Bc,oe.isEdgeChromium=Mc,oe.isElectron=Rc,oe.isEmbedded=uc,oe.isFirefox=gc,oe.isIE=Us,oe.isIOS=Os,oe.isIOS13=Pc,oe.isIPad13=Dc,oe.isIPhone13=Oc,oe.isIPod13=Uc,oe.isLegacyEdge=Lc,oe.isMIUI=Vc,oe.isMacOs=Wc,oe.isMobile=En,oe.isMobileOnly=Bs,oe.isMobileSafari=fc,oe.isOpera=bc,oe.isSafari=wc,oe.isSamsungBrowser=Gc,oe.isSmartTV=Tn,oe.isTablet=Ns,oe.isWearable=Cs,oe.isWinPhone=Ds,oe.isWindows=Hc,oe.isYandex=Nc,oe.mobileModel=Sc,oe.mobileVendor=Ec,oe.osName=Ac,oe.osVersion=yc,oe.parseUserAgent=h,oe.setUserAgent=xe,oe.useDeviceData=Rs,oe.useDeviceSelectors=sl,oe.useMobileOrientation=ol,oe.withOrientationChange=nl,oe}var Gt=ic();function fo(e,t){if(!e)return e;const n=e.toLowerCase().trim();if(n==="max"||n==="all")return t||e;const o=n.match(/^(\d+(?:\.\d+)?)%$/);if(o){const s=parseFloat(o[1])/100;return((parseFloat(t)||0)*s).toFixed(8).replace(/\.?0+$/,"")||"0"}return e}const cc=({isOpen:e,onClose:t,onTransaction:n,position:o="bottom-right",modalChatStyle:s={}})=>{const{t:a,ti:r}=xn(),{messages:i,addMessage:d,updateMessageAction:T,updateMessageText:B}=Ni(),[H,h]=ne.useState(""),[E,m]=ne.useState(!1),[C,M]=ne.useState(!0),[ve,I]=ne.useState(null),Y=ne.useRef(null),K=ne.useRef(null),fe=ne.useRef(null),pe=ne.useRef(null),Be=ne.useRef(null),l=ne.useRef(!1),u=ne.useRef(C);ne.useEffect(()=>{u.current=C},[C]);const{account:c,chainData:g,chainType:w,chainTypeMoralis:b,chainId:A,isChainSupported:y}=eo(),{config:k}=Fi(),v=A&&k?.rpcUrls?.[A]||void 0,S=ne.useCallback(()=>{const U=Bt.getItem("dataBuyToken");if(U)try{return JSON.parse(U)}catch{return{srcTokenAddress:"",descTokenAddress:"",amount:"",srcTokenDecimals:18,descTokenDecimals:18}}return{srcTokenAddress:"",descTokenAddress:"",amount:"",srcTokenDecimals:18,descTokenDecimals:18}},[]),D=ne.useCallback(U=>{Bt.setItem("dataBuyToken",JSON.stringify(U))},[]),z=ne.useCallback(U=>{const J={...S(),...U};D(J)},[S,D]),se=ne.useCallback(U=>{I(U),Gt.isDesktop&&fe.current?.focus()},[]),he=ne.useCallback(async(U,_)=>{z({descTokenAddress:U,descTokenDecimals:_||18});try{m(!0);const J=await Qe({address:c?.address||"",chain:b});if(J?.success&&J?.data?.result){const ee=J.data.result;if(ee?.length>0){const Z=ee.map(j=>({id:j.token_address,text:`${j.name}: ${j.balance_formatted} ${j.symbol} ($${ce(j.usd_value||0)?.decimalPlaces(2).toFormat()||"0"})`,value:r("buttonBuyWith",{symbol:j.symbol}),action:"click_balance_item_user_to_buy_button",fullWidth:!0,extraData:{tokenAddress:j.token_address,symbol:j.symbol,balance:j.balance_formatted,usdValue:j.usd_value,decimals:j.decimals}}));d(r("walletBalanceSpendable",{chain:g?.name||"unknown"}),"bot",void 0,Z)}else d(r("walletNoTokensFound",{chain:g?.name||"unknown"}),"bot")}else d(a("walletFetchFailed"),"bot")}catch(J){console.error("Error fetching wallet balance:",J),d(a("walletFetchError"),"bot")}finally{m(!1)}},[z,c?.address,b,d,g?.name,a,r]),ke=ne.useCallback(async(U,_,J,ee)=>{const Z=[25,50,75,100];z({srcTokenAddress:U,srcTokenDecimals:ee||18});let j=J||"0";if(U===Ve)try{const ie=await uo({chainId:A,rpcUrl:v});if(ie.isGreaterThan(0)){const ye=ie.times(1e6),X=new ce(mt(J,ee||18).toString()).minus(ye);X.isGreaterThan(0)?j=ce(Ue(BigInt(X.toFixed(0)),18)).toFixed():j="0"}}catch(ie){console.warn("getGasPrice for swap native fee deduction failed:",ie)}const q=Z.map(ie=>({id:`percent-${ie}`,text:`${ie}%`,value:r("buttonUsePercent",{percent:String(ie),symbol:_}),action:"select_percent",extraData:{percent:ie,tokenAddress:U,tokenSymbol:_,tokenBalance:j}}));if(ce(j).isZero()){d(r("insufficientFeeToken",{symbol:_}),"bot");return}d(r("selectAmountOf",{symbol:_,balance:j}),"bot",void 0,q)},[d,A,v,z,r]),xe=ne.useCallback(async(U,_)=>{z({amount:(parseFloat(_)*(U/100)).toFixed(6)});const J=S(),ee=mt(J.amount,J.srcTokenDecimals||18).toString(),Z=await ro({chainId:A,tokenIn:J.srcTokenAddress,tokenInAmount:ee,tokenOut:J.descTokenAddress,tokenOutRecipient:c?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(Z.success&&Z.data){const j=Z.data,q=j.tokenIn,ie=j.tokenOut,ye=ce(Ue(BigInt(q.amount||0),q.decimals)).decimalPlaces(6).toFormat(),re=ce(Ue(BigInt(ie.amount||0),ie.decimals)).decimalPlaces(6).toFormat(),X=J.srcTokenAddress===Ve||J.srcTokenAddress==="";let N=!1;if(!X&&c?.address&&j.tx?.to)try{const O=await lo({tokenAddress:J.srcTokenAddress,ownerAddress:c.address,spenderAddress:j.tx.to,chainId:A,rpcUrl:v});N=ce(O.toString()).isLessThan(ee)}catch(O){console.warn("Allowance check failed:",O),N=!0}const R=j.estimatedTransactionFee?.total?ce(j.estimatedTransactionFee.total):ce(0);let $=ce(0);if(N&&c?.address)try{const O=An({tokenAddress:J.srcTokenAddress,spenderAddress:j.tx?.to||"",fromAddress:c.address,chainId:A});$=await sn({from:c.address,to:O.to,data:O.data,chainId:A,rpcUrl:v})}catch(O){console.warn("Approve fee estimation failed:",O)}const V=R.plus($),te=g?.nativeCurrency?.symbol||"native";let be="",ae=!1;if(c?.address&&V.isGreaterThan(0))try{const O=await vn({address:c.address,chainId:A,rpcUrl:v});if(O.isLessThan(V)){ae=!0;const W=ce(Ue(BigInt(O.toFixed(0)),18)).decimalPlaces(6).toFormat(),me=ce(Ue(BigInt(V.toFixed(0)),18)).decimalPlaces(6).toFormat();be=r("swapFeeWarning",{symbol:te,balance:W,needed:me})}}catch(O){console.warn("Fee balance check failed:",O)}const L=`From: ${ye} ${q.symbol}
|
|
400
|
+
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"}}
|
|
401
|
+
|
|
402
|
+
User: "swap token" or "I want to swap" or "đổi token" (no specific tokens mentioned)
|
|
403
|
+
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"},yn=[{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:[]}],Ki=[{name:"safeTransferFrom",type:"function",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"}],outputs:[]}],Zi=[{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 on(e,t){return t||lt[e]?.rpcUrls?.default?.http?.[0]}function _i(e){const{action:t,parameters:n,fromAddress:s,chainId:o}=e;switch(t){case"send_native":return $i(n,s,o);case"send_token":return ec(n,s,o);case"approve_token":return tc(n,s,o);case"wrap_native":return nc(n,s,o);case"unwrap_native":return oc(n,s,o);case"send_nft":return ac(n,s,o);default:throw new Error(`Action "${t}" does not produce a transaction`)}}function $i(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 ec(e,t,n){const{contract_address:s,to_address:o,amount:a,decimals:r,token_symbol:c}=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 d=parseInt(r)||18,T=mt(a,d),N=kt({abi:yn,functionName:"transfer",args:[o,T]});return{from:t,to:s,data:N,value:"0",chainId:n,description:`Send ${a} ${c||"tokens"} to ${o}`}}function tc(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 c=a&&a?.trim()!==""?mt(a,18):Mt,d=kt({abi:yn,functionName:"approve",args:[o,c]});return{from:t,to:s,data:d,value:"0",chainId:n,description:`Approve ${a||"unlimited"} ${r||"tokens"} for ${o}`}}function nc(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 oc(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 sc(e){return["send_native","send_token","approve_token","wrap_native","unwrap_native","send_nft"].includes(e)}async function co(e){const{transactionHash:t,chainId:n,pollingInterval:s=3e3,timeout:o=12e4,rpcUrl:a}=e,r=on(n,a);if(!r)throw new Error(`No RPC endpoint for chain ${n}`);const c=Date.now();for(;Date.now()-c<o;){try{const T=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(T.result){const N=T.result;return{status:N.status==="0x1"?"success":"fail",blockNumber:N.blockNumber,gasUsed:N.gasUsed,effectiveGasPrice:N.effectiveGasPrice}}}catch(d){console.warn("eth_getTransactionReceipt poll error:",d)}await new Promise(d=>setTimeout(d,s))}throw new Error(`Transaction ${t} was not mined within ${o/1e3}s`)}async function lo(e){const{tokenAddress:t,ownerAddress:n,spenderAddress:s,chainId:o,rpcUrl:a}=e,r=on(o,a);if(!r)return console.warn(`No RPC endpoint for chain ${o}, assuming no allowance`),BigInt(0);try{const c=kt({abi:yn,functionName:"allowance",args:[n,s]}),T=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:c},"latest"]})})).json();return T.result&&T.result!=="0x"?BigInt(T.result):BigInt(0)}catch(c){return console.warn("checkAllowance failed:",c),BigInt(0)}}function An(e){const{tokenAddress:t,spenderAddress:n,fromAddress:s,chainId:o,tokenSymbol:a}=e,r=kt({abi:yn,functionName:"approve",args:[n,Mt]});return{from:s,to:t,data:r,value:"0",chainId:o,description:`Approve ${a||"token"} for swap`}}function ac(e,t,n){const{contract_address:s,token_id:o,to_address:a,token_standard:r,amount:c,nft_name:d}=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 T=(r||"ERC721").toUpperCase(),N=BigInt(o);let W,h;if(T==="ERC1155"){const C=BigInt(c||"1");W=kt({abi:Zi,functionName:"safeTransferFrom",args:[t,a,N,C,"0x"]}),h=`Send ${C>1n?C.toString()+"x ":""}${d||"NFT"} (ERC1155 #${o}) to ${a}`}else W=kt({abi:Ki,functionName:"safeTransferFrom",args:[t,a,N]}),h=`Send ${d||"NFT"} (ERC721 #${o}) to ${a}`;return{from:t,to:s,data:W,value:"0",chainId:n,description:h}}async function kn(e){const{address:t,chainId:n,rpcUrl:s}=e,o=on(n,s);if(!o)return console.warn(`No RPC endpoint for chain ${n}`),new ce(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 ce(BigInt(r.result).toString()):new ce(0)}catch(a){return console.warn("getNativeBalance failed:",a),new ce(0)}}async function sn(e){const{from:t,to:n,data:s,value:o,chainId:a,rpcUrl:r}=e,c=on(a,r);if(!c)return console.warn(`No RPC endpoint for chain ${a}`),new ce(0);try{const[d,T]=await Promise.all([fetch(c,{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(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:2,method:"eth_gasPrice",params:[]})})]),[N,W]=await Promise.all([d.json(),T.json()]),h=N.result?new ce(BigInt(N.result).toString()):new ce(0),C=W.result?new ce(BigInt(W.result).toString()):new ce(0);return h.times(C).times(1.1)}catch(d){return console.warn("estimateTransactionFee failed:",d),new ce(0)}}async function uo(e){const{chainId:t,rpcUrl:n}=e,s=on(t,n);if(!s)return console.warn(`No RPC endpoint for chain ${t}`),new ce(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 ce(BigInt(a.result).toString()):new ce(0)}catch(o){return console.warn("getGasPrice failed:",o),new ce(0)}}var se={},an={exports:{}},rc=an.exports,Es;function ic(){return Es||(Es=1,(function(e,t){(function(n,s){var o="1.0.41",a="",r="?",c="function",d="undefined",T="object",N="string",W="major",h="model",C="name",m="type",I="vendor",R="version",ke="architecture",S="console",Y="mobile",K="tablet",fe="smarttv",pe="wearable",Ne="embedded",l=500,u="Amazon",i="Apple",w="ASUS",g="BlackBerry",b="Browser",A="Chrome",y="Edge",v="Firefox",k="Google",E="Honor",L="Huawei",z="Lenovo",ae="LG",he="Microsoft",ve="Motorola",xe="Nvidia",Q="OnePlus",ge="Opera",Ee="OPPO",Ye="Samsung",at="Sharp",Ke="Sony",Pe="Xiaomi",qe="Zebra",Me="Facebook",Le="Chromium OS",Te="Mac OS",Ft=" Browser",Yt=function(U,$){var V={};for(var ne in U)$[ne]&&$[ne].length%2===0?V[ne]=$[ne].concat(U[ne]):V[ne]=U[ne];return V},wt=function(U){for(var $={},V=0;V<U.length;V++)$[U[V].toUpperCase()]=U[V];return $},D=function(U,$){return typeof U===N?_($).indexOf(_(U))!==-1:!1},_=function(U){return U.toLowerCase()},J=function(U){return typeof U===N?U.replace(/[^\d\.]/g,a).split(".")[0]:s},te=function(U,$){if(typeof U===N)return U=U.replace(/^\s\s*/,a),typeof $===d?U:U.substring(0,l)},Z=function(U,$){for(var V=0,ne,be,ee,H,O,M;V<$.length&&!O;){var me=$[V],Ce=$[V+1];for(ne=be=0;ne<me.length&&!O&&me[ne];)if(O=me[ne++].exec(U),O)for(ee=0;ee<Ce.length;ee++)M=O[++be],H=Ce[ee],typeof H===T&&H.length>0?H.length===2?typeof H[1]==c?this[H[0]]=H[1].call(this,M):this[H[0]]=H[1]:H.length===3?typeof H[1]===c&&!(H[1].exec&&H[1].test)?this[H[0]]=M?H[1].call(this,M,H[2]):s:this[H[0]]=M?M.replace(H[1],H[2]):s:H.length===4&&(this[H[0]]=M?H[3].call(this,M.replace(H[1],H[2])):s):this[H]=M||s;V+=2}},j=function(U,$){for(var V in $)if(typeof $[V]===T&&$[V].length>0){for(var ne=0;ne<$[V].length;ne++)if(D($[V][ne],U))return V===r?s:V}else if(D($[V],U))return V===r?s:V;return $.hasOwnProperty("*")?$["*"]:U},q={"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},ie={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"},ye={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[R,[C,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[R,[C,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[C,R],[/opios[\/ ]+([\w\.]+)/i],[R,[C,ge+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[R,[C,ge+" GX"]],[/\bopr\/([\w\.]+)/i],[R,[C,ge]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[R,[C,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[R,[C,"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],[C,R],[/quark(?:pc)?\/([-\w\.]+)/i],[R,[C,"Quark"]],[/\bddg\/([\w\.]+)/i],[R,[C,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[R,[C,"UC"+b]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[R,[C,"WeChat"]],[/konqueror\/([\w\.]+)/i],[R,[C,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[R,[C,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[R,[C,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[R,[C,"Smart Lenovo "+b]],[/(avast|avg)\/([\w\.]+)/i],[[C,/(.+)/,"$1 Secure "+b],R],[/\bfocus\/([\w\.]+)/i],[R,[C,v+" Focus"]],[/\bopt\/([\w\.]+)/i],[R,[C,ge+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[R,[C,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[R,[C,"Dolphin"]],[/coast\/([\w\.]+)/i],[R,[C,ge+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[R,[C,"MIUI"+Ft]],[/fxios\/([\w\.-]+)/i],[R,[C,v]],[/\bqihoobrowser\/?([\w\.]*)/i],[R,[C,"360"]],[/\b(qq)\/([\w\.]+)/i],[[C,/(.+)/,"$1Browser"],R],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[C,/(.+)/,"$1"+Ft],R],[/samsungbrowser\/([\w\.]+)/i],[R,[C,Ye+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[R,[C,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[C,"Sogou Mobile"],R],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[C,R],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[C],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[R,C],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[C,Me],R],[/(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],[C,R],[/\bgsa\/([\w\.]+) .*safari\//i],[R,[C,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[R,[C,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[R,[C,A+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[C,A+" WebView"],R],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[R,[C,"Android "+b]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[C,R],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[R,[C,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[R,C],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[C,[R,j,q]],[/(webkit|khtml)\/([\w\.]+)/i],[C,R],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[C,"Netscape"],R],[/(wolvic|librewolf)\/([\w\.]+)/i],[C,R],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[R,[C,v+" 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],[C,[R,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[C,[R,/master.|lts./,""]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[ke,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[ke,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[ke,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[ke,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[ke,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[ke,/ower/,a,_]],[/ sun4\w[;\)]/i],[[ke,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[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],[h,[I,Ye],[m,K]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[h,[I,Ye],[m,Y]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[h,[I,i],[m,Y]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[h,[I,i],[m,K]],[/(macintosh);/i],[h,[I,i]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[h,[I,at],[m,Y]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[h,[I,E],[m,K]],[/honor([-\w ]+)[;\)]/i],[h,[I,E],[m,Y]],[/\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],[h,[I,L],[m,K]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[h,[I,L],[m,Y]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[h,/_/g," "],[I,Pe],[m,K]],[/\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],[[h,/_/g," "],[I,Pe],[m,Y]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[h,[I,Ee],[m,Y]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[h,[I,j,{OnePlus:["304","403","203"],"*":Ee}],[m,K]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[h,[I,"Vivo"],[m,Y]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[h,[I,"Realme"],[m,Y]],[/\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],[h,[I,ve],[m,Y]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[h,[I,ve],[m,K]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[h,[I,ae],[m,K]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[h,[I,ae],[m,Y]],[/(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],[h,[I,z],[m,K]],[/(nokia) (t[12][01])/i],[I,h,[m,K]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[h,/_/g," "],[m,Y],[I,"Nokia"]],[/(pixel (c|tablet))\b/i],[h,[I,k],[m,K]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[h,[I,k],[m,Y]],[/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],[h,[I,Ke],[m,Y]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[h,"Xperia Tablet"],[I,Ke],[m,K]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[h,[I,Q],[m,Y]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[h,[I,u],[m,K]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[h,/(.+)/g,"Fire Phone $1"],[I,u],[m,Y]],[/(playbook);[-\w\),; ]+(rim)/i],[h,I,[m,K]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[h,[I,g],[m,Y]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[h,[I,w],[m,K]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[h,[I,w],[m,Y]],[/(nexus 9)/i],[h,[I,"HTC"],[m,K]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[I,[h,/_/g," "],[m,Y]],[/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],[h,[I,"TCL"],[m,K]],[/(itel) ((\w+))/i],[[I,_],h,[m,j,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[h,[I,"Acer"],[m,K]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[h,[I,"Meizu"],[m,Y]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[h,[I,"Ulefone"],[m,Y]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[h,[I,"Energizer"],[m,Y]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[h,[I,"Cat"],[m,Y]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[h,[I,"Smartfren"],[m,Y]],[/droid.+; (a(?:015|06[35]|142p?))/i],[h,[I,"Nothing"],[m,Y]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[h,[I,"Archos"],[m,K]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[h,[I,"Archos"],[m,Y]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[I,h,[m,K]],[/(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],[I,h,[m,Y]],[/(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],[I,h,[m,K]],[/(surface duo)/i],[h,[I,he],[m,K]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[h,[I,"Fairphone"],[m,Y]],[/(u304aa)/i],[h,[I,"AT&T"],[m,Y]],[/\bsie-(\w*)/i],[h,[I,"Siemens"],[m,Y]],[/\b(rct\w+) b/i],[h,[I,"RCA"],[m,K]],[/\b(venue[\d ]{2,7}) b/i],[h,[I,"Dell"],[m,K]],[/\b(q(?:mv|ta)\w+) b/i],[h,[I,"Verizon"],[m,K]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[h,[I,"Barnes & Noble"],[m,K]],[/\b(tm\d{3}\w+) b/i],[h,[I,"NuVision"],[m,K]],[/\b(k88) b/i],[h,[I,"ZTE"],[m,K]],[/\b(nx\d{3}j) b/i],[h,[I,"ZTE"],[m,Y]],[/\b(gen\d{3}) b.+49h/i],[h,[I,"Swiss"],[m,Y]],[/\b(zur\d{3}) b/i],[h,[I,"Swiss"],[m,K]],[/\b((zeki)?tb.*\b) b/i],[h,[I,"Zeki"],[m,K]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[I,"Dragon Touch"],h,[m,K]],[/\b(ns-?\w{0,9}) b/i],[h,[I,"Insignia"],[m,K]],[/\b((nxa|next)-?\w{0,9}) b/i],[h,[I,"NextBook"],[m,K]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[I,"Voice"],h,[m,Y]],[/\b(lvtel\-)?(v1[12]) b/i],[[I,"LvTel"],h,[m,Y]],[/\b(ph-1) /i],[h,[I,"Essential"],[m,Y]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[h,[I,"Envizen"],[m,K]],[/\b(trio[-\w\. ]+) b/i],[h,[I,"MachSpeed"],[m,K]],[/\btu_(1491) b/i],[h,[I,"Rotor"],[m,K]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[h,[I,xe],[m,K]],[/(sprint) (\w+)/i],[I,h,[m,Y]],[/(kin\.[onetw]{3})/i],[[h,/\./g," "],[I,he],[m,Y]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[h,[I,qe],[m,K]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[h,[I,qe],[m,Y]],[/smart-tv.+(samsung)/i],[I,[m,fe]],[/hbbtv.+maple;(\d+)/i],[[h,/^/,"SmartTV"],[I,Ye],[m,fe]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[I,ae],[m,fe]],[/(apple) ?tv/i],[I,[h,i+" TV"],[m,fe]],[/crkey/i],[[h,A+"cast"],[I,k],[m,fe]],[/droid.+aft(\w+)( bui|\))/i],[h,[I,u],[m,fe]],[/(shield \w+ tv)/i],[h,[I,xe],[m,fe]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[h,[I,at],[m,fe]],[/(bravia[\w ]+)( bui|\))/i],[h,[I,Ke],[m,fe]],[/(mi(tv|box)-?\w+) bui/i],[h,[I,Pe],[m,fe]],[/Hbbtv.*(technisat) (.*);/i],[I,h,[m,fe]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[I,te],[h,te],[m,fe]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[h,[m,fe]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[m,fe]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[I,h,[m,S]],[/droid.+; (shield)( bui|\))/i],[h,[I,xe],[m,S]],[/(playstation \w+)/i],[h,[I,Ke],[m,S]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[h,[I,he],[m,S]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[h,[I,Ye],[m,pe]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[I,h,[m,pe]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[h,[I,Ee],[m,pe]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[h,[I,i],[m,pe]],[/(opwwe\d{3})/i],[h,[I,Q],[m,pe]],[/(moto 360)/i],[h,[I,ve],[m,pe]],[/(smartwatch 3)/i],[h,[I,Ke],[m,pe]],[/(g watch r)/i],[h,[I,ae],[m,pe]],[/droid.+; (wt63?0{2,3})\)/i],[h,[I,qe],[m,pe]],[/droid.+; (glass) \d/i],[h,[I,k],[m,pe]],[/(pico) (4|neo3(?: link|pro)?)/i],[I,h,[m,pe]],[/; (quest( \d| pro)?)/i],[h,[I,Me],[m,pe]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[I,[m,Ne]],[/(aeobc)\b/i],[h,[I,u],[m,Ne]],[/(homepod).+mac os/i],[h,[I,i],[m,Ne]],[/windows iot/i],[[m,Ne]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[h,[m,Y]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[h,[m,K]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[m,K]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[m,Y]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[h,[I,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[R,[C,y+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[C,R],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[R,[C,"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],[C,R],[/ladybird\//i],[[C,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[R,C]],os:[[/microsoft (windows) (vista|xp)/i],[C,R],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[C,[R,j,ie]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[R,j,ie],[C,"Windows"]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[R,/_/g,"."],[C,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[C,Te],[R,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[R,C],[/(ubuntu) ([\w\.]+) like android/i],[[C,/(.+)/,"$1 Touch"],R],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[C,R],[/\(bb(10);/i],[R,[C,g]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[R,[C,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[R,[C,v+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[R,[C,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[R,[C,"watchOS"]],[/crkey\/([\d\.]+)/i],[R,[C,A+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[C,Le],R],[/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],[C,R],[/(sunos) ?([\w\.\d]*)/i],[[C,"Solaris"],R],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[C,R]]},re=function(U,$){if(typeof U===T&&($=U,U=s),!(this instanceof re))return new re(U,$).getResult();var V=typeof n!==d&&n.navigator?n.navigator:s,ne=U||(V&&V.userAgent?V.userAgent:a),be=V&&V.userAgentData?V.userAgentData:s,ee=$?Yt(ye,$):ye,H=V&&V.userAgent==ne;return this.getBrowser=function(){var O={};return O[C]=s,O[R]=s,Z.call(O,ne,ee.browser),O[W]=J(O[R]),H&&V&&V.brave&&typeof V.brave.isBrave==c&&(O[C]="Brave"),O},this.getCPU=function(){var O={};return O[ke]=s,Z.call(O,ne,ee.cpu),O},this.getDevice=function(){var O={};return O[I]=s,O[h]=s,O[m]=s,Z.call(O,ne,ee.device),H&&!O[m]&&be&&be.mobile&&(O[m]=Y),H&&O[h]=="Macintosh"&&V&&typeof V.standalone!==d&&V.maxTouchPoints&&V.maxTouchPoints>2&&(O[h]="iPad",O[m]=K),O},this.getEngine=function(){var O={};return O[C]=s,O[R]=s,Z.call(O,ne,ee.engine),O},this.getOS=function(){var O={};return O[C]=s,O[R]=s,Z.call(O,ne,ee.os),H&&!O[C]&&be&&be.platform&&be.platform!="Unknown"&&(O[C]=be.platform.replace(/chrome os/i,Le).replace(/macos/i,Te)),O},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 ne},this.setUA=function(O){return ne=typeof O===N&&O.length>l?te(O,l):O,this},this.setUA(ne),this};re.VERSION=o,re.BROWSER=wt([C,R,W]),re.CPU=wt([ke]),re.DEVICE=wt([h,I,m,S,Y,fe,K,pe,Ne]),re.ENGINE=re.OS=wt([C,R]),e.exports&&(t=e.exports=re),t.UAParser=re;var X=typeof n!==d&&(n.jQuery||n.Zepto);if(X&&!X.ua){var B=new re;X.ua=B.getResult(),X.ua.get=function(){return B.getUA()},X.ua.set=function(U){B.setUA(U);var $=B.getResult();for(var V in $)X.ua[V]=$[V]}}})(typeof window=="object"?window:rc)})(an,an.exports)),an.exports}var xs;function cc(){if(xs)return se;xs=1,Object.defineProperty(se,"__esModule",{value:!0});function e(x){return x&&typeof x=="object"&&"default"in x?x.default:x}var t=oe,n=e(t),s=ic(),o=new s,a=o.getBrowser(),r=o.getCPU(),c=o.getDevice(),d=o.getEngine(),T=o.getOS(),N=o.getUA(),W=function(f){return o.setUA(f)},h=function(f){if(!f){console.error("No userAgent string was provided");return}var p=new s(f);return{UA:p,browser:p.getBrowser(),cpu:p.getCPU(),device:p.getDevice(),engine:p.getEngine(),os:p.getOS(),ua:p.getUA(),setUserAgent:function(G){return p.setUA(G)}}},C=Object.freeze({ClientUAInstance:o,browser:a,cpu:r,device:c,engine:d,os:T,ua:N,setUa:W,parseUserAgent:h});function m(x,f){var p=Object.keys(x);if(Object.getOwnPropertySymbols){var P=Object.getOwnPropertySymbols(x);f&&(P=P.filter(function(G){return Object.getOwnPropertyDescriptor(x,G).enumerable})),p.push.apply(p,P)}return p}function I(x){for(var f=1;f<arguments.length;f++){var p=arguments[f]!=null?arguments[f]:{};f%2?m(Object(p),!0).forEach(function(P){K(x,P,p[P])}):Object.getOwnPropertyDescriptors?Object.defineProperties(x,Object.getOwnPropertyDescriptors(p)):m(Object(p)).forEach(function(P){Object.defineProperty(x,P,Object.getOwnPropertyDescriptor(p,P))})}return x}function R(x){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?R=function(f){return typeof f}:R=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},R(x)}function ke(x,f){if(!(x instanceof f))throw new TypeError("Cannot call a class as a function")}function S(x,f){for(var p=0;p<f.length;p++){var P=f[p];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(x,P.key,P)}}function Y(x,f,p){return f&&S(x.prototype,f),x}function K(x,f,p){return f in x?Object.defineProperty(x,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):x[f]=p,x}function fe(){return fe=Object.assign||function(x){for(var f=1;f<arguments.length;f++){var p=arguments[f];for(var P in p)Object.prototype.hasOwnProperty.call(p,P)&&(x[P]=p[P])}return x},fe.apply(this,arguments)}function pe(x,f){if(typeof f!="function"&&f!==null)throw new TypeError("Super expression must either be null or a function");x.prototype=Object.create(f&&f.prototype,{constructor:{value:x,writable:!0,configurable:!0}}),f&&l(x,f)}function Ne(x){return Ne=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},Ne(x)}function l(x,f){return l=Object.setPrototypeOf||function(P,G){return P.__proto__=G,P},l(x,f)}function u(x,f){if(x==null)return{};var p={},P=Object.keys(x),G,Ae;for(Ae=0;Ae<P.length;Ae++)G=P[Ae],!(f.indexOf(G)>=0)&&(p[G]=x[G]);return p}function i(x,f){if(x==null)return{};var p=u(x,f),P,G;if(Object.getOwnPropertySymbols){var Ae=Object.getOwnPropertySymbols(x);for(G=0;G<Ae.length;G++)P=Ae[G],!(f.indexOf(P)>=0)&&Object.prototype.propertyIsEnumerable.call(x,P)&&(p[P]=x[P])}return p}function w(x){if(x===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return x}function g(x,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 w(x)}function b(x,f){return A(x)||y(x,f)||v(x,f)||E()}function A(x){if(Array.isArray(x))return x}function y(x,f){var p=x==null?null:typeof Symbol<"u"&&x[Symbol.iterator]||x["@@iterator"];if(p!=null){var P=[],G=!0,Ae=!1,Re,Qe;try{for(p=p.call(x);!(G=(Re=p.next()).done)&&(P.push(Re.value),!(f&&P.length===f));G=!0);}catch(En){Ae=!0,Qe=En}finally{try{!G&&p.return!=null&&p.return()}finally{if(Ae)throw Qe}}return P}}function v(x,f){if(x){if(typeof x=="string")return k(x,f);var p=Object.prototype.toString.call(x).slice(8,-1);if(p==="Object"&&x.constructor&&(p=x.constructor.name),p==="Map"||p==="Set")return Array.from(x);if(p==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(p))return k(x,f)}}function k(x,f){(f==null||f>x.length)&&(f=x.length);for(var p=0,P=new Array(f);p<f;p++)P[p]=x[p];return P}function E(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
404
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var L={Mobile:"mobile",Tablet:"tablet",SmartTv:"smarttv",Console:"console",Wearable:"wearable",Embedded:"embedded",Browser:void 0},z={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"},ae={IOS:"iOS",Android:"Android",WindowsPhone:"Windows Phone",Windows:"Windows",MAC_OS:"Mac OS"},he={isMobile:!1,isTablet:!1,isBrowser:!1,isSmartTV:!1,isConsole:!1,isWearable:!1},ve=function(f){switch(f){case L.Mobile:return{isMobile:!0};case L.Tablet:return{isTablet:!0};case L.SmartTv:return{isSmartTV:!0};case L.Console:return{isConsole:!0};case L.Wearable:return{isWearable:!0};case L.Browser:return{isBrowser:!0};case L.Embedded:return{isEmbedded:!0};default:return he}},xe=function(f){return W(f)},Q=function(f){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"none";return f||p},ge=function(){return typeof window<"u"&&(window.navigator||navigator)?window.navigator||navigator:!1},Ee=function(f){var p=ge();return p&&p.platform&&(p.platform.indexOf(f)!==-1||p.platform==="MacIntel"&&p.maxTouchPoints>1&&!window.MSStream)},Ye=function(f,p,P,G,Ae){return{isBrowser:f,browserMajorVersion:Q(p.major),browserFullVersion:Q(p.version),browserName:Q(p.name),engineName:Q(P.name),engineVersion:Q(P.version),osName:Q(G.name),osVersion:Q(G.version),userAgent:Q(Ae)}},at=function(f,p,P,G){return I({},f,{vendor:Q(p.vendor),model:Q(p.model),os:Q(P.name),osVersion:Q(P.version),ua:Q(G)})},Ke=function(f,p,P,G){return{isSmartTV:f,engineName:Q(p.name),engineVersion:Q(p.version),osName:Q(P.name),osVersion:Q(P.version),userAgent:Q(G)}},Pe=function(f,p,P,G){return{isConsole:f,engineName:Q(p.name),engineVersion:Q(p.version),osName:Q(P.name),osVersion:Q(P.version),userAgent:Q(G)}},qe=function(f,p,P,G){return{isWearable:f,engineName:Q(p.name),engineVersion:Q(p.version),osName:Q(P.name),osVersion:Q(P.version),userAgent:Q(G)}},Me=function(f,p,P,G,Ae){return{isEmbedded:f,vendor:Q(p.vendor),model:Q(p.model),engineName:Q(P.name),engineVersion:Q(P.version),osName:Q(G.name),osVersion:Q(G.version),userAgent:Q(Ae)}};function Le(x){var f=x?h(x):C,p=f.device,P=f.browser,G=f.engine,Ae=f.os,Re=f.ua,Qe=ve(p.type),En=Qe.isBrowser,rl=Qe.isMobile,il=Qe.isTablet,Rs=Qe.isSmartTV,Ms=Qe.isConsole,Hs=Qe.isWearable,Ws=Qe.isEmbedded;if(En)return Ye(En,P,G,Ae,Re);if(Rs)return Ke(Rs,G,Ae,Re);if(Ms)return Pe(Ms,G,Ae,Re);if(rl||il)return at(Qe,p,Ae,Re);if(Hs)return qe(Hs,G,Ae,Re);if(Ws)return Me(Ws,p,G,Ae,Re)}var Te=function(f){var p=f.type;return p===L.Mobile},Ft=function(f){var p=f.type;return p===L.Tablet},Yt=function(f){var p=f.type;return p===L.Mobile||p===L.Tablet},wt=function(f){var p=f.type;return p===L.SmartTv},D=function(f){var p=f.type;return p===L.Browser},_=function(f){var p=f.type;return p===L.Wearable},J=function(f){var p=f.type;return p===L.Console},te=function(f){var p=f.type;return p===L.Embedded},Z=function(f){var p=f.vendor;return Q(p)},j=function(f){var p=f.model;return Q(p)},q=function(f){var p=f.type;return Q(p,"browser")},ie=function(f){var p=f.name;return p===ae.Android},ye=function(f){var p=f.name;return p===ae.Windows},re=function(f){var p=f.name;return p===ae.MAC_OS},X=function(f){var p=f.name;return p===ae.WindowsPhone},B=function(f){var p=f.name;return p===ae.IOS},U=function(f){var p=f.version;return Q(p)},$=function(f){var p=f.name;return Q(p)},V=function(f){var p=f.name;return p===z.Chrome},ne=function(f){var p=f.name;return p===z.Firefox},be=function(f){var p=f.name;return p===z.Chromium},ee=function(f){var p=f.name;return p===z.Edge},H=function(f){var p=f.name;return p===z.Yandex},O=function(f){var p=f.name;return p===z.Safari||p===z.MobileSafari},M=function(f){var p=f.name;return p===z.MobileSafari},me=function(f){var p=f.name;return p===z.Opera},Ce=function(f){var p=f.name;return p===z.InternetExplorer||p===z.Ie},de=function(f){var p=f.name;return p===z.MIUI},Se=function(f){var p=f.name;return p===z.SamsungBrowser},Fe=function(f){var p=f.version;return Q(p)},Ie=function(f){var p=f.major;return Q(p)},Oe=function(f){var p=f.name;return Q(p)},Ze=function(f){var p=f.name;return Q(p)},ot=function(f){var p=f.version;return Q(p)},dt=function(){var f=ge(),p=f&&f.userAgent&&f.userAgent.toLowerCase();return typeof p=="string"?/electron/.test(p):!1},rt=function(f){return typeof f=="string"&&f.indexOf("Edg/")!==-1},Pt=function(){var f=ge();return f&&(/iPad|iPhone|iPod/.test(f.platform)||f.platform==="MacIntel"&&f.maxTouchPoints>1)&&!window.MSStream},_e=function(){return Ee("iPad")},rn=function(){return Ee("iPhone")},Jt=function(){return Ee("iPod")},Ue=function(f){return Q(f)};function vn(x){var f=x||C,p=f.device,P=f.browser,G=f.os,Ae=f.engine,Re=f.ua;return{isSmartTV:wt(p),isConsole:J(p),isWearable:_(p),isEmbedded:te(p),isMobileSafari:M(P)||_e(),isChromium:be(P),isMobile:Yt(p)||_e(),isMobileOnly:Te(p),isTablet:Ft(p)||_e(),isBrowser:D(p),isDesktop:D(p),isAndroid:ie(G),isWinPhone:X(G),isIOS:B(G)||_e(),isChrome:V(P),isFirefox:ne(P),isSafari:O(P),isOpera:me(P),isIE:Ce(P),osVersion:U(G),osName:$(G),fullBrowserVersion:Fe(P),browserVersion:Ie(P),browserName:Oe(P),mobileVendor:Z(p),mobileModel:j(p),engineName:Ze(Ae),engineVersion:ot(Ae),getUA:Ue(Re),isEdge:ee(P)||rt(Re),isYandex:H(P),deviceType:q(p),isIOS13:Pt(),isIPad13:_e(),isIPhone13:rn(),isIPod13:Jt(),isElectron:dt(),isEdgeChromium:rt(Re),isLegacyEdge:ee(P)&&!rt(Re),isWindows:ye(G),isMacOs:re(G),isMIUI:de(P),isSamsungBrowser:Se(P)}}var Tn=wt(c),Ss=J(c),Is=_(c),fc=te(c),pc=M(a)||_e(),mc=be(a),Cn=Yt(c)||_e(),Ns=Te(c),Bs=Ft(c)||_e(),Fs=D(c),hc=D(c),Ps=ie(T),Ls=X(T),Os=B(T)||_e(),wc=V(a),gc=ne(a),bc=O(a),yc=me(a),Ds=Ce(a),Ac=U(T),kc=$(T),vc=Fe(a),Tc=Ie(a),Cc=Oe(a),Ec=Z(c),xc=j(c),Sc=Ze(d),Ic=ot(d),Nc=Ue(N),Bc=ee(a)||rt(N),Fc=H(a),Pc=q(c),Lc=Pt(),Oc=_e(),Dc=rn(),Uc=Jt(),Rc=dt(),Mc=rt(N),Hc=ee(a)&&!rt(N),Wc=ye(T),Vc=re(T),Gc=de(a),Yc=Se(a),Jc=function(f){if(!f||typeof f!="string"){console.error("No valid user agent string was provided");return}var p=h(f),P=p.device,G=p.browser,Ae=p.os,Re=p.engine,Qe=p.ua;return vn({device:P,browser:G,os:Ae,engine:Re,ua:Qe})},zc=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Ps?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},jc=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Fs?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},qc=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Ds?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},Qc=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Os?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},Xc=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Cn?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},Kc=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Bs?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},Zc=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Ls?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},_c=function(f){var p=f.renderWithFragment,P=f.children;f.viewClassName,f.style;var G=i(f,["renderWithFragment","children","viewClassName","style"]);return Ns?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},$c=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Tn?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},el=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Ss?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},tl=function(f){var p=f.renderWithFragment,P=f.children,G=i(f,["renderWithFragment","children"]);return Is?p?n.createElement(t.Fragment,null,P):n.createElement("div",G,P):null},nl=function(f){var p=f.renderWithFragment,P=f.children;f.viewClassName,f.style;var G=f.condition,Ae=i(f,["renderWithFragment","children","viewClassName","style","condition"]);return G?p?n.createElement(t.Fragment,null,P):n.createElement("div",Ae,P):null};function ol(x){return(function(f){pe(p,f);function p(P){var G;return ke(this,p),G=g(this,Ne(p).call(this,P)),G.isEventListenerAdded=!1,G.handleOrientationChange=G.handleOrientationChange.bind(w(G)),G.onOrientationChange=G.onOrientationChange.bind(w(G)),G.onPageLoad=G.onPageLoad.bind(w(G)),G.state={isLandscape:!1,isPortrait:!1},G}return Y(p,[{key:"handleOrientationChange",value:function(){this.isEventListenerAdded||(this.isEventListenerAdded=!0);var G=window.innerWidth>window.innerHeight?90:0;this.setState({isPortrait:G===0,isLandscape:G===90})}},{key:"onOrientationChange",value:function(){this.handleOrientationChange()}},{key:"onPageLoad",value:function(){this.handleOrientationChange()}},{key:"componentDidMount",value:function(){(typeof window>"u"?"undefined":R(window))!==void 0&&Cn&&(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(x,fe({},this.props,{isLandscape:this.state.isLandscape,isPortrait:this.state.isPortrait}))}}]),p})(n.Component)}function sl(){var x=t.useState(function(){var Ae=window.innerWidth>window.innerHeight?90:0;return{isPortrait:Ae===0,isLandscape:Ae===90,orientation:Ae===0?"portrait":"landscape"}}),f=b(x,2),p=f[0],P=f[1],G=t.useCallback(function(){var Ae=window.innerWidth>window.innerHeight?90:0,Re={isPortrait:Ae===0,isLandscape:Ae===90,orientation:Ae===0?"portrait":"landscape"};p.orientation!==Re.orientation&&P(Re)},[p.orientation]);return t.useEffect(function(){return(typeof window>"u"?"undefined":R(window))!==void 0&&Cn&&(G(),window.addEventListener("load",G,!1),window.addEventListener("resize",G,!1)),function(){window.removeEventListener("resize",G,!1),window.removeEventListener("load",G,!1)}},[G]),p}function Us(x){var f=x||window.navigator.userAgent;return h(f)}function al(x){var f=x||window.navigator.userAgent,p=Us(f),P=vn(p);return[P,p]}return se.AndroidView=zc,se.BrowserTypes=z,se.BrowserView=jc,se.ConsoleView=el,se.CustomView=nl,se.IEView=qc,se.IOSView=Qc,se.MobileOnlyView=_c,se.MobileView=Xc,se.OsTypes=ae,se.SmartTVView=$c,se.TabletView=Kc,se.WearableView=tl,se.WinPhoneView=Zc,se.browserName=Cc,se.browserVersion=Tc,se.deviceDetect=Le,se.deviceType=Pc,se.engineName=Sc,se.engineVersion=Ic,se.fullBrowserVersion=vc,se.getSelectorsByUserAgent=Jc,se.getUA=Nc,se.isAndroid=Ps,se.isBrowser=Fs,se.isChrome=wc,se.isChromium=mc,se.isConsole=Ss,se.isDesktop=hc,se.isEdge=Bc,se.isEdgeChromium=Mc,se.isElectron=Rc,se.isEmbedded=fc,se.isFirefox=gc,se.isIE=Ds,se.isIOS=Os,se.isIOS13=Lc,se.isIPad13=Oc,se.isIPhone13=Dc,se.isIPod13=Uc,se.isLegacyEdge=Hc,se.isMIUI=Gc,se.isMacOs=Vc,se.isMobile=Cn,se.isMobileOnly=Ns,se.isMobileSafari=pc,se.isOpera=yc,se.isSafari=bc,se.isSamsungBrowser=Yc,se.isSmartTV=Tn,se.isTablet=Bs,se.isWearable=Is,se.isWinPhone=Ls,se.isWindows=Wc,se.isYandex=Fc,se.mobileModel=xc,se.mobileVendor=Ec,se.osName=kc,se.osVersion=Ac,se.parseUserAgent=h,se.setUserAgent=xe,se.useDeviceData=Us,se.useDeviceSelectors=al,se.useMobileOrientation=sl,se.withOrientationChange=ol,se}var Gt=cc();function fo(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 lc=({isOpen:e,onClose:t,onTransaction:n,position:s="bottom-right",modalChatStyle:o={}})=>{const{t:a,ti:r}=xn(),{messages:c,addMessage:d,updateMessageAction:T,updateMessageText:N}=Bi(),[W,h]=oe.useState(""),[C,m]=oe.useState(!1),[I,R]=oe.useState(!0),[ke,S]=oe.useState(null),Y=oe.useRef(null),K=oe.useRef(null),fe=oe.useRef(null),pe=oe.useRef(null),Ne=oe.useRef(null),l=oe.useRef(!1),u=oe.useRef(I);oe.useEffect(()=>{u.current=I},[I]);const{account:i,chainData:w,chainType:g,chainTypeMoralis:b,chainId:A,isChainSupported:y}=eo(),{config:v}=Fi(),k=A&&v?.rpcUrls?.[A]||void 0,E=oe.useCallback(()=>{const D=Nt.getItem("dataBuyToken");if(D)try{return JSON.parse(D)}catch{return{srcTokenAddress:"",descTokenAddress:"",amount:"",srcTokenDecimals:18,descTokenDecimals:18}}return{srcTokenAddress:"",descTokenAddress:"",amount:"",srcTokenDecimals:18,descTokenDecimals:18}},[]),L=oe.useCallback(D=>{Nt.setItem("dataBuyToken",JSON.stringify(D))},[]),z=oe.useCallback(D=>{const J={...E(),...D};L(J)},[E,L]),ae=oe.useCallback(D=>{S(D),Gt.isDesktop&&fe.current?.focus()},[]),he=oe.useCallback(async(D,_)=>{z({descTokenAddress:D,descTokenDecimals:_||18});try{m(!0);const J=await je({address:i?.address||"",chain:b});if(J?.success&&J?.data?.result){const te=J.data.result;if(te?.length>0){const Z=te.map(j=>({id:j.token_address,text:`${j.name}: ${j.balance_formatted} ${j.symbol} ($${ce(j.usd_value||0)?.decimalPlaces(2).toFormat()||"0"})`,value:r("buttonBuyWith",{symbol:j.symbol}),action:"click_balance_item_user_to_buy_button",fullWidth:!0,extraData:{tokenAddress:j.token_address,symbol:j.symbol,balance:j.balance_formatted,usdValue:j.usd_value,decimals:j.decimals}}));d(r("walletBalanceSpendable",{chain:w?.name||"unknown"}),"bot",void 0,Z)}else d(r("walletNoTokensFound",{chain:w?.name||"unknown"}),"bot")}else d(a("walletFetchFailed"),"bot")}catch(J){console.error("Error fetching wallet balance:",J),d(a("walletFetchError"),"bot")}finally{m(!1)}},[z,i?.address,b,d,w?.name,a,r]),ve=oe.useCallback(async(D,_,J,te)=>{const Z=[25,50,75,100];z({srcTokenAddress:D,srcTokenDecimals:te||18});let j=J||"0";if(D===Ve)try{const ie=await uo({chainId:A,rpcUrl:k});if(ie.isGreaterThan(0)){const ye=ie.times(1e6),X=new ce(mt(J,te||18).toString()).minus(ye);X.isGreaterThan(0)?j=ce(De(BigInt(X.toFixed(0)),18)).toFixed():j="0"}}catch(ie){console.warn("getGasPrice for swap native fee deduction failed:",ie)}const q=Z.map(ie=>({id:`percent-${ie}`,text:`${ie}%`,value:r("buttonUsePercent",{percent:String(ie),symbol:_}),action:"select_percent",extraData:{percent:ie,tokenAddress:D,tokenSymbol:_,tokenBalance:j}}));if(ce(j).isZero()){d(r("insufficientFeeToken",{symbol:_}),"bot");return}d(r("selectAmountOf",{symbol:_,balance:j}),"bot",void 0,q)},[d,A,k,z,r]),xe=oe.useCallback(async(D,_)=>{z({amount:(parseFloat(_)*(D/100)).toFixed(6)});const J=E(),te=mt(J.amount,J.srcTokenDecimals||18).toString(),Z=await ro({chainId:A,tokenIn:J.srcTokenAddress,tokenInAmount:te,tokenOut:J.descTokenAddress,tokenOutRecipient:i?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(Z.success&&Z.data){const j=Z.data,q=j.tokenIn,ie=j.tokenOut,ye=ce(De(BigInt(q.amount||0),q.decimals)).decimalPlaces(6).toFormat(),re=ce(De(BigInt(ie.amount||0),ie.decimals)).decimalPlaces(6).toFormat(),X=J.srcTokenAddress===Ve||J.srcTokenAddress==="";let B=!1;if(!X&&i?.address&&j.tx?.to)try{const O=await lo({tokenAddress:J.srcTokenAddress,ownerAddress:i.address,spenderAddress:j.tx.to,chainId:A,rpcUrl:k});B=ce(O.toString()).isLessThan(te)}catch(O){console.warn("Allowance check failed:",O),B=!0}const U=j.estimatedTransactionFee?.total?ce(j.estimatedTransactionFee.total):ce(0);let $=ce(0);if(B&&i?.address)try{const O=An({tokenAddress:J.srcTokenAddress,spenderAddress:j.tx?.to||"",fromAddress:i.address,chainId:A});$=await sn({from:i.address,to:O.to,data:O.data,chainId:A,rpcUrl:k})}catch(O){console.warn("Approve fee estimation failed:",O)}const V=U.plus($),ne=w?.nativeCurrency?.symbol||"native";let be="",ee=!1;if(i?.address&&V.isGreaterThan(0))try{const O=await kn({address:i.address,chainId:A,rpcUrl:k});if(O.isLessThan(V)){ee=!0;const M=ce(De(BigInt(O.toFixed(0)),18)).decimalPlaces(6).toFormat(),me=ce(De(BigInt(V.toFixed(0)),18)).decimalPlaces(6).toFormat();be=r("swapFeeWarning",{symbol:ne,balance:M,needed:me})}}catch(O){console.warn("Fee balance check failed:",O)}const H=`From: ${ye} ${q.symbol}
|
|
401
405
|
⬇️
|
|
402
406
|
To: ${re} ${ie.symbol}
|
|
403
407
|
|
|
404
408
|
`+be+`
|
|
405
|
-
`;if(
|
|
409
|
+
`;if(ee)d(H,"bot");else if(B){const O=H+r("swapNeedApprove",{symbol:q.symbol}),M=[{id:"approve-for-swap",text:r("swapApproveButton",{symbol:q.symbol}),value:r("swapApproveValue",{symbol:q.symbol}),action:"approve_for_swap",fullWidth:!0,extraData:{tokenAddress:J.srcTokenAddress,spenderAddress:j.tx.to,tokenSymbol:q.symbol,tx:j.tx}}];d(O,"bot",void 0,M)}else{const O=[{id:"confirm-swap",text:a("swapConfirmButton"),value:a("swapConfirmValue"),action:"confirm_swap",extraData:{tx:j.tx}}];d(H+a("swapReadyToProceed"),"bot",void 0,O)}}else d(r("swapEstimationError",{error:Z.errorMessage||Z.error||"Unknown error"}),"bot")},[E,z,d,A,i?.address,w?.nativeCurrency?.symbol,k,a,r]),Q=oe.useCallback(async(D,_,J)=>{try{if(_==="suggested_action"){pe.current=D,h(D);return}if(d(D,"user"),R(!1),m(!0),_)switch(await Xe(500),_){case"click_buy_item_token_button":await he(J?.tokenAddress||"",J?.decimals||18);break;case"click_balance_item_user_to_buy_button":await ve(J?.tokenAddress||"",J?.symbol||"",J?.balance||"",J?.decimals||18);break;case"select_percent":await xe(J?.percent||0,J?.tokenBalance||"");break;case"confirm_swap":if(J?.tx&&n){const te=J.tx,Z={from:i?.address||"",to:te.to,data:te.data,value:te.value,chainId:A},j=d(a("txProcessing"),"bot");try{m(!1);const q=await n(Z);if(q.status==="success"&&q.transactionHash){const ie=w?.blockExplorers?.default?.url,ye=ie?`
|
|
406
410
|
[View on Explorer](${ie}/tx/${q.transactionHash})`:`
|
|
407
|
-
Tx: ${q.transactionHash}`;
|
|
408
|
-
Error: ${q.error}`:"";
|
|
409
|
-
Error: ${re.error}`:"";d(a("approvalFailed")+
|
|
411
|
+
Tx: ${q.transactionHash}`;N(j.id,a("txSubmitted")+ye);try{await Xe(2e3),(await co({transactionHash:q.transactionHash,chainId:A||1,rpcUrl:k})).status==="success"?N(j.id,a("txConfirmedSwap")+ye):N(j.id,a("txRevertedSwap")+ye)}catch(re){console.warn("Transaction tracking timeout:",re),N(j.id,a("txTimeout")+ye)}}else if(q.status==="success")N(j.id,a("txSuccessfulSwap"));else{const ie=q.error?`
|
|
412
|
+
Error: ${q.error}`:"";N(j.id,a("txFailed")+ie)}}catch(q){console.error("Transaction error:",q),N(j.id,a("txFailed"))}}else d(a("txDataNotAvailable"),"bot");break;case"approve_for_swap":{const te=J?.tokenAddress||"",Z=J?.spenderAddress||"",j=J?.tokenSymbol||"token",q=J?.tx;if(!te||!Z||!n){d(a("approvalDataNotAvailable"),"bot");break}const ie=An({tokenAddress:te,spenderAddress:Z,fromAddress:i?.address||"",chainId:A,tokenSymbol:j}),ye={from:ie.from,to:ie.to,data:ie.data,value:ie.value,chainId:ie.chainId};d(r("approving",{symbol:j}),"bot");try{m(!1);const re=await n(ye);let X=re.status==="success";if(re.status==="success"&&re.transactionHash)try{X=(await co({transactionHash:re.transactionHash,chainId:A||1,rpcUrl:k})).status==="success"}catch(B){console.warn("Approval tracking timeout:",B),X=!0}if(X){d(r("approvalSuccess",{symbol:j}),"bot");const B=[{id:"confirm-swap-after-approve",text:a("confirmSwapButton"),value:a("swapConfirmValue"),action:"confirm_swap",fullWidth:!0,extraData:{tx:q}}];d(a("approvalConfirmSwap"),"bot",void 0,B)}else{const B=re.error?`
|
|
413
|
+
Error: ${re.error}`:"";d(a("approvalFailed")+B,"bot")}}catch(re){console.error("Approval error:",re),d(a("approvalFailed"),"bot")}break}case"click_swap_dest_token":{const te=J?.tokenAddress||"",Z=J?.symbol||"",j=J?.decimals||18;z({descTokenAddress:te,descTokenDecimals:j});const ie=E().srcTokenAddress||"",ye=ie===Ve;try{const re=await je({address:i?.address||"",chain:b});if(re?.success&&re?.data?.result){const X=re.data.result;let B="",U="0";if(ye){const $=X.find(V=>V.native_token);B=w?.nativeCurrency?.symbol||"ETH",U=$?.balance_formatted||"0"}else{const $=X.find(V=>V.token_address.toLowerCase()===ie.toLowerCase());$&&(B=$.symbol,U=$.balance_formatted)}if(B&&parseFloat(U)>0){const V=[25,50,75,100].map(ne=>({id:`percent-${ne}`,text:`${ne}%`,value:r("buttonUsePercent",{percent:String(ne),symbol:B}),action:"select_percent",extraData:{percent:ne,tokenAddress:ie,tokenSymbol:B,tokenBalance:U}}));d(r("swapSelectAmount",{from:B,to:Z,balance:U}),"bot",void 0,V)}else d(a("swapNoSourceToken"),"bot")}else d(a("couldNotFetchBalance"),"bot")}catch(re){console.error("Error in click_swap_dest_token:",re),d(a("couldNotLoadBalance"),"bot")}break}case"select_nft_to_send":{const te=J?.name||"NFT",Z=J?.contractAddress||"",j=J?.tokenId||"",q=J?.tokenStandard||"ERC721",ie=J?.amount||"1",ye=J?.image||"",re={contract_address:Z,token_id:j,to_address:"",token_standard:q,amount:"1",maxAmount:ie,nft_name:te};d(r("nftSendReview",{name:te,standard:q,tokenId:j}),"bot",void 0,void 0,{action:"send_nft",parameters:re,status:"pending",nftInfo:{name:te,image:ye||void 0,tokenId:j,contractAddress:Z,tokenStandard:q}});break}default:d(r("actionExecutedFor",{action:_,value:D}),"bot")}else await Xe(500),d(r("receivedButtonValue",{value:D}),"bot");m(!1),Gt.isDesktop&&fe.current?.focus()}catch(te){d(a("errorProcessingRequest"),"bot"),m(!1),console.error("Error handling button click:",te)}},[i?.address,d,N,w?.blockExplorers?.default?.url,w?.nativeCurrency?.symbol,A,b,E,he,ve,n,xe,z,k,a,r]),ge=oe.useCallback(async()=>{try{m(!0);const D=w?.tokenTrendingDefault||[],[_,J]=await Promise.allSettled([nt.getTopGainers(g,"24h",5),nt.getTokensDetails(D,g)]);let te=[];_.status==="fulfilled"&&_.value?.data?te=[..._.value.data]:console.warn("⚠️ Top gainers failed:"),J.status==="fulfilled"&&J.value?.data?te=[...J.value.data,...te]:console.warn("⚠️ Default tokens failed:"),te=te.filter((q,ie,ye)=>ie===ye.findIndex(re=>re.address.toLowerCase()===q.address.toLowerCase()));const Z=te.map(q=>({id:q?.symbol,text:q?.symbol,value:r("buttonBuyToken",{name:q.name,symbol:q?.symbol||""}),action:"click_buy_item_token_button",extraData:{tokenAddress:q?.address||"",symbol:q?.symbol||"",decimals:q?.decimals||18}}));await Xe(1e3),m(!1),d(r("trendingTokensHeader",{chain:w?.name||"Unknown"}),"bot");const j=te.map((q,ie)=>`${ie+1}. ${q.name} (${q?.auditGoplus?.token_symbol||q.symbol||"Unknown"})
|
|
410
414
|
$${ce(q?.price||0).decimalPlaces(4).toFormat()} (${q.price_change_percentage_24h||q.priceChange}%)
|
|
411
415
|
|
|
412
416
|
---
|
|
413
417
|
`).join(`
|
|
414
|
-
`);d(`${j}${a("trendingTokensQuestion")}`,"bot",void 0,Z)}catch(
|
|
418
|
+
`);d(`${j}${a("trendingTokensQuestion")}`,"bot",void 0,Z)}catch(D){console.error("Error fetching trending tokens:",D),d(a("trendingTokensError"),"bot")}finally{m(!1)}},[d,w?.name,w?.tokenTrendingDefault,g,a,r]),Ee=oe.useCallback(async()=>{try{m(!0);const D=await bn({address:i?.address||"",chain:b,limit:100,exclude_spam:!1});if(D?.success&&D?.data?.result&&D.data.result.length>0){const _=D.data.result,J=_.map(Z=>{const j=Z.normalized_metadata?.name||Z.name||`#${Z.token_id}`,q=Z.normalized_metadata?.image||Z.media?.original_media_url||"";return{id:`${Z.token_address}-${Z.token_id}`,text:`${j} (${Z.symbol||Z.contract_type}) - ${Z.token_id}`,value:r("buttonSendNft",{name:j}),action:"select_nft_to_send",fullWidth:!0,extraData:{contractAddress:Z.token_address,tokenId:Z.token_id,tokenStandard:Z.contract_type,name:j,symbol:Z.symbol,amount:Z.amount,image:q}}}),te=_.map((Z,j)=>{const q=Z.normalized_metadata?.name||Z.name||`#${Z.token_id}`,ie=Z.contract_type==="ERC1155"?` (x${Z.amount})`:"",ye=Z.normalized_metadata?.image||Z.media?.original_media_url||"",re=ye?`
|
|
415
419
|
`:"🖼️ ";return`${j+1}. ${re}**${q}**${ie}
|
|
416
420
|
${Z.symbol||Z.contract_type} | Token ID: ${Z.token_id}`}).join(`
|
|
417
421
|
|
|
418
|
-
`);await
|
|
422
|
+
`);await Xe(500),m(!1),d(r("nftCollectionHeader",{count:String(_.length),list:te}),"bot",void 0,J)}else m(!1),d(a("nftNoCollection"),"bot")}catch(D){console.error("Error fetching NFTs:",D),m(!1),d(a("nftFetchError"),"bot")}},[i?.address,b,d,a,r]),Ye=oe.useCallback(async()=>{try{m(!0);const D=await je({address:i?.address||"",chain:b});if(D?.success&&D?.data?.result&&D.data.result.length>0){const _=D.data.result,J=_.flatMap(Z=>[{id:`send-${Z.token_address}`,text:r("buttonSendToken",{symbol:Z.symbol}),value:r("buttonSendToken",{symbol:Z.symbol}),action:"suggested_action",fullWidth:!!Gt.isMobile},{id:`buy-more-${Z.token_address}`,text:r("buttonBuyMoreToken",{symbol:Z.symbol}),value:r("buttonBuyMoreToken",{symbol:Z.symbol}),action:"suggested_action",fullWidth:!!Gt.isMobile}]),te=_.map((Z,j)=>{const q=Z.usd_value!==void 0?` ≈ $${ce(Z.usd_value).decimalPlaces(2).toFormat()}`:"";return`${j+1}. **${Z.name}** (${Z.symbol})
|
|
419
423
|
Balance: ${Z.balance_formatted}${q}`}).join(`
|
|
420
424
|
|
|
421
|
-
`);await
|
|
425
|
+
`);await Xe(500),m(!1),d(r("viewBalancesHeader",{chain:w?.name||"this chain",list:te}),"bot",void 0,J)}else m(!1),d(a("viewBalancesEmpty"),"bot")}catch(D){console.error("Error fetching balances:",D),m(!1),d(a("viewBalancesFetchError"),"bot")}},[i?.address,b,d,w?.name,a,r]),at=oe.useMemo(()=>[{id:"ask",icon:"❓",text:a("suggestionAskText"),action:async()=>{R(!1),m(!0),d(a("suggestionAskUserMessage"),"user"),await Xe(1e3),m(!1),d(a("suggestionAskBotReply"),"bot")}},{id:"buy",icon:"💰",text:a("suggestionBuyText"),action:async()=>{R(!1),d(a("suggestionBuyText"),"user"),He(i?.address||"")&&y?await ge():(m(!0),await Xe(1e3),He(i?.address||"")&&!y?d(a("walletConnectedChainUnsupported"),"bot"):d(a("walletNotConnected"),"bot"),m(!1))}}],[d,i?.address,ge,a,y]),Ke=D=>{if(D===0)return!0;const _=c[D],J=c[D-1],te=new Date(_.timestamp),Z=new Date(J.timestamp);return te.setHours(0,0,0,0),Z.setHours(0,0,0,0),te.getTime()!==Z.getTime()};oe.useEffect(()=>{Y.current?.scrollIntoView({behavior:"smooth"})},[c]),oe.useEffect(()=>{e?(fe.current&&Gt.isDesktop&&fe.current.focus(),Y.current?.scrollIntoView({behavior:"instant"}),l.current&&Ne.current?Date.now()-Ne.current>5e3&&R(!0):R(!0),Ne.current=null,l.current=!1,setTimeout(()=>{Y.current?.scrollIntoView({behavior:"smooth"})},50)):(Ne.current=Date.now(),l.current=!u.current)},[e]),oe.useEffect(()=>{const D=_=>{_.key==="Escape"&&e&&t()};return document.addEventListener("keydown",D),()=>document.removeEventListener("keydown",D)},[e,t]);const Pe=oe.useCallback(async()=>{if(W?.trim()===""||C)return;const D=ke,_=d(W?.trim(),"user",ke?.id);h(""),S(null),m(!0),R(!1),m(!0);try{let J,te;if(i?.address&&y)try{const[re,X]=await Promise.allSettled([je({address:i.address,chain:b}),bn({address:i.address,chain:b,limit:100,exclude_spam:!0})]);re.status==="fulfilled"&&re.value?.success&&re.value?.data?.result&&(J=re.value.data.result.map(B=>({symbol:B.symbol,name:B.name,balance_formatted:B.balance_formatted,usd_value:B.usd_value,native_token:B.native_token,token_address:B.token_address}))),X.status==="fulfilled"&&X.value?.success&&X.value?.data?.result&&(te=X.value.data.result.map(B=>({name:B.normalized_metadata?.name||B.name||`#${B.token_id}`,token_address:B.token_address,token_id:B.token_id,contract_type:B.contract_type||"",amount:B.amount||"1"})))}catch{}const Z=Xi({walletAddress:i?.address||void 0,chainName:w?.name||void 0,chainId:A||void 0,nativeSymbol:w?.nativeCurrency?.symbol||void 0,walletTokens:J,walletNfts:te}),j=c.slice(-20);let q="";if(j.length>0){q=`
|
|
422
426
|
|
|
423
427
|
## CONVERSATION HISTORY:
|
|
424
428
|
`;for(const re of j)if(re.sender==="user")q+=`User: ${re.text}
|
|
425
429
|
`;else{const X=re.text.length>400?re.text.substring(0,400)+"...":re.text;q+=`Assistant: ${X}
|
|
426
430
|
`}q+=`
|
|
427
431
|
---
|
|
428
|
-
`}let ie=
|
|
432
|
+
`}let ie=W?.trim();D&&(ie=`[Replying to ${D.sender==="user"?"my previous":"your"} message: "${D.text}"]
|
|
429
433
|
|
|
430
|
-
${ie}`);const ye=await
|
|
434
|
+
${ie}`);const ye=await Ui({prompt:ie,model:"gpt-4.1-mini",stream:!1,systemPrompt:Z+q});if(ye.success&&ye.data){const re=ye.data.text||"";let X=null;try{let B=re?.trim();B.startsWith("```json")?B=B.replace(/^```json\s*/,"").replace(/\s*```$/,""):B.startsWith("```")&&(B=B.replace(/^```\s*/,"").replace(/\s*```$/,"")),X=JSON.parse(B)}catch{X=null}if(X&&X.action&&X.action!=="chat")if(X.action==="buy_token"){const B=X.parameters?.token_symbol||"";let U=X.parameters?.contract_address||"",$=18;if(U.toLowerCase()==="native"&&(U=Ve),U&&U!==Ve)try{const V=await nt.getTokensDetails([U],g);V?.data?.[0]&&($=V.data[0].decimals||18)}catch(V){console.warn("getTokensDetails for buy_token failed:",V)}if(!U&&B&&i?.address)try{const V=await je({address:i.address,chain:b});if(V?.success&&V?.data?.result){const ne=V.data.result,be=ne.find(ee=>ee.token_address.toLowerCase()===U.toLowerCase())||ne.find(ee=>ee.symbol.toUpperCase()===B.toUpperCase());be&&(U=be.token_address,$=be.decimals)}if(!U){const ne=w.tokenTrendingDefault||[],[be,ee]=await Promise.allSettled([nt.getTopGainers(g,"24h",10),nt.getTokensDetails(ne,g)]),H=[];be.status==="fulfilled"&&be.value?.data&&H.push(...be.value.data),ee.status==="fulfilled"&&ee.value?.data&&H.push(...ee.value.data);const O=H.find(M=>M.address?.toLowerCase()===U.toLowerCase())||H.find(M=>M.symbol?.toUpperCase()===B.toUpperCase());O&&(U=O.address,$=O.decimals||18)}}catch(V){console.warn("Token lookup for buy failed:",V)}U?(d(X.message||r("buyTokenHelp",{symbol:B}),"bot",_.id),await he(U,$)):(d(X.message||r("tokenNotFoundOnChain",{symbol:B}),"bot",_.id),await ge())}else if(X.action==="swap_token"){const B={...X.parameters||{}},U=B.token_in==="native"||B.token_in_symbol?.toUpperCase()===w?.nativeCurrency?.symbol?.toUpperCase(),$=B.token_out==="native"||B.token_out_symbol?.toUpperCase()===w?.nativeCurrency?.symbol?.toUpperCase();if($&&(B.token_out=Ve),!U&&(B.token_in||B.token_in_symbol)&&i?.address)try{const ee=await je({address:i.address,chain:b});if(ee?.success&&ee?.data?.result){const H=ee.data.result,O=B.token_in?H.find(M=>M.token_address.toLowerCase()===B.token_in.toLowerCase()):H.find(M=>M.symbol.toUpperCase()===B.token_in_symbol.toUpperCase());O&&(B.token_in=O.token_address,B.token_in_decimals=String(O.decimals))}}catch(ee){console.warn("Resolve token_in failed:",ee)}if(!$&&(B.token_out||B.token_out_symbol)&&i?.address)try{const ee=await je({address:i.address,chain:b});if(ee?.success&&ee?.data?.result){const H=ee.data.result,O=B.token_out?H.find(M=>M.token_address.toLowerCase()===B.token_out.toLowerCase()):H.find(M=>M.symbol.toUpperCase()===B.token_out_symbol.toUpperCase());O&&(B.token_out=O.token_address,B.token_out_decimals=String(O.decimals))}}catch(ee){console.warn("Resolve token_out failed:",ee)}const V=!!(B.token_in||U),ne=!!B.token_out,be=!!B.amount;if(V&&ne&&be){d(X.message||a("swapPreparing"),"bot",_.id);try{const ee=[];B.token_out&&ee.push(B.token_out),B.token_in&&!U&&ee.push(B.token_in);let H=18,O=18;if(ee.length>0)try{const de=await nt.getTokensDetails(ee,g);if(de?.data)for(const Se of de.data)!U&&Se.address.toLowerCase()===B.token_in?.toLowerCase()&&(H=Se.decimals||18),Se.address.toLowerCase()===B.token_out?.toLowerCase()&&(O=Se.decimals||18)}catch(de){console.warn("getTokensDetails failed, using default decimals:",de)}if(i?.address)try{const de=await je({address:i.address,chain:b});if(de?.success&&de?.data?.result){const Se=de.data.result;if(U){const Fe=Se.find(ot=>ot.native_token);let Ie=Fe?.balance_formatted||"0";try{const ot=await uo({chainId:A,rpcUrl:k});if(ot.isGreaterThan(0)){const dt=ot.times(1e6),Pt=new ce(Fe?.balance||"0").minus(dt);Pt.isGreaterThan(0)?Ie=ce(De(BigInt(Pt.toFixed(0)),Fe?.decimals||18)).toFixed():Ie="0"}}catch(ot){console.warn("getGasPrice for swap native fee deduction failed:",ot)}B.amount=fo(B.amount,Ie);const Oe=parseFloat(Ie),Ze=parseFloat(B.amount);if(Oe<Ze){d(r("swapInsufficientNativeBalance",{balance:Oe.toFixed(6),symbol:w?.nativeCurrency?.symbol||"native",amount:B.amount}),"bot"),m(!1);return}}else{const Fe=Se.find(Ze=>Ze.token_address.toLowerCase()===B.token_in?.toLowerCase());if(!Fe){d(r("swapTokenNotInWallet",{symbol:B.token_in_symbol||B.token_in}),"bot"),m(!1);return}B.amount=fo(B.amount,Fe.balance_formatted||"0");const Ie=parseFloat(Fe.balance_formatted||"0"),Oe=parseFloat(B.amount);if(Ie<Oe){d(r("swapInsufficientTokenBalance",{balance:Ie.toFixed(6),symbol:Fe.symbol,amount:B.amount}),"bot"),m(!1);return}}}}catch(de){console.warn("Balance check failed:",de)}const M=U?Ve:B.token_in;z({srcTokenAddress:M,descTokenAddress:B.token_out,amount:B.amount,srcTokenDecimals:H,descTokenDecimals:O});const me=mt(B.amount,H).toString(),Ce=await ro({chainId:A,tokenIn:M,tokenInAmount:me,tokenOut:B.token_out,tokenOutRecipient:i?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(Ce.success&&Ce.data){const de=Ce.data,Se=de.tokenIn,Fe=de.tokenOut,Ie=ce(De(BigInt(Se.amount||0),Se.decimals)).decimalPlaces(6).toFormat(),Oe=ce(De(BigInt(Fe.amount||0),Fe.decimals)).decimalPlaces(6).toFormat();let Ze=!1;if(!U&&i?.address&&de.tx?.to)try{const Ue=await lo({tokenAddress:M,ownerAddress:i.address,spenderAddress:de.tx.to,chainId:A,rpcUrl:k});Ze=ce(Ue.toString()).isLessThan(me)}catch(Ue){console.warn("Allowance check failed (CASE 1):",Ue),Ze=!0}const ot=de.estimatedTransactionFee?.total?ce(de.estimatedTransactionFee.total):ce(0);let dt=ce(0);if(Ze&&i?.address)try{const Ue=An({tokenAddress:M,spenderAddress:de.tx?.to||"",fromAddress:i.address,chainId:A});dt=await sn({from:i.address,to:Ue.to,data:Ue.data,chainId:A,rpcUrl:k})}catch(Ue){console.warn("Approve fee estimation failed:",Ue)}const rt=ot.plus(dt),Pt=w?.nativeCurrency?.symbol||"native";let _e="",rn=!1;if(i?.address&&rt.isGreaterThan(0))try{const Ue=await kn({address:i.address,chainId:A,rpcUrl:k});if(Ue.isLessThan(rt)){rn=!0;const vn=ce(De(BigInt(Ue.toFixed(0)),18)).decimalPlaces(6).toFormat(),Tn=ce(De(BigInt(rt.toFixed(0)),18)).decimalPlaces(6).toFormat();_e=r("swapFeeWarning",{symbol:Pt,balance:vn,needed:Tn})}}catch(Ue){console.warn("Fee balance check failed:",Ue)}const Jt=`From: ${Ie} ${Se.symbol}
|
|
431
435
|
⬇️
|
|
432
436
|
To: ${Oe} ${Fe.symbol}
|
|
433
437
|
|
|
434
|
-
`+
|
|
435
|
-
`;if(rn)d(Jt,"bot");else if(Ke){const Re=[{id:"approve-for-swap",text:r("swapApproveButton",{symbol:Ie.symbol}),value:r("swapApproveValue",{symbol:Ie.symbol}),action:"approve_for_swap",fullWidth:!0,extraData:{tokenAddress:W,spenderAddress:de.tx.to,tokenSymbol:Ie.symbol,tx:de.tx}}];d(Jt+r("swapNeedApprove",{symbol:Ie.symbol}),"bot",void 0,Re)}else{const Re=[{id:"confirm-swap",text:"Yes",value:a("swapConfirmValue"),action:"confirm_swap",extraData:{tx:de.tx}}];d(Jt+a("swapReadyToProceed"),"bot",void 0,Re)}}else d(r("swapEstimationError",{error:Ee.errorMessage||Ee.error||"Unknown error"}),"bot")}catch(ae){console.error("Swap estimation error:",ae),d(a("swapEstimationFailed"),"bot")}}else if(V&&te&&!be){let ae=R?18:parseInt(N.token_in_decimals||"18",10),L=parseInt(N.token_out_decimals||"18",10);const O=[];if(N.token_out&&O.push(N.token_out),N.token_in&&!R&&O.push(N.token_in),O.length>0)try{const W=await tt.getTokensDetails(O,w);if(W?.data)for(const me of W.data)!R&&me.address.toLowerCase()===N.token_in?.toLowerCase()&&(ae=me.decimals||ae),me.address.toLowerCase()===N.token_out?.toLowerCase()&&(L=me.decimals||L)}catch(W){console.warn("getTokensDetails failed in CASE 2, using fallback decimals:",W)}if(z({descTokenAddress:N.token_out,descTokenDecimals:L}),R)try{const W=await Qe({address:c?.address||"",chain:b});if(W?.success&&W?.data?.result){const Ee=W.data.result.find(Oe=>Oe.native_token),de=g?.nativeCurrency?.symbol||"ETH";let Ie=Ee?.balance_formatted||"0";try{const Oe=await uo({chainId:A,rpcUrl:v});if(Oe.isGreaterThan(0)){const Ke=Oe.times(1e6),dt=new ce(Ee?.balance||"0").minus(Ke);dt.isGreaterThan(0)?Ie=ce(Ue(BigInt(dt.toFixed(0)),Ee?.decimals||18)).toFixed():Ie="0"}}catch(Oe){console.warn("getGasPrice for swap native fee deduction (CASE 2) failed:",Oe)}z({srcTokenAddress:Ve,srcTokenDecimals:ae});const Ce=[25,50,75,100].map(Oe=>({id:`percent-${Oe}`,text:`${Oe}%`,value:r("buttonUsePercent",{percent:String(Oe),symbol:de}),action:"select_percent",extraData:{percent:Oe,tokenAddress:Ve,tokenSymbol:de,tokenBalance:Ie}}));d(r("selectAmountToSwap",{symbol:de,balance:Ie}),"bot",_.id,Ce)}else d(a("couldNotFetchBalance"),"bot")}catch(W){console.warn("Native balance fetch failed:",W),d(a("couldNotFetchBalanceRetry"),"bot")}else{const W=N.token_in_symbol||"Token";z({srcTokenAddress:N.token_in,srcTokenDecimals:ae});try{const me=await Qe({address:c?.address||"",chain:b});if(me?.success&&me?.data?.result){const de=me.data.result.find(Ce=>Ce.token_address.toLowerCase()===N.token_in?.toLowerCase());if(!de){d(r("swapTokenNotInWallet",{symbol:W}),"bot"),m(!1);return}const Fe=[25,50,75,100].map(Ce=>({id:`percent-${Ce}`,text:`${Ce}%`,value:r("buttonUsePercent",{percent:String(Ce),symbol:de.symbol}),action:"select_percent",extraData:{percent:Ce,tokenAddress:de.token_address,tokenSymbol:de.symbol,tokenBalance:de.balance_formatted}}));d(r("selectAmountToSwap",{symbol:de.symbol,balance:`${de.balance_formatted} (~$${de.usd_value?.toFixed(2)||"0"})`}),"bot",_.id,Fe)}else d(a("couldNotFetchBalance"),"bot")}catch(me){console.warn("Token balance fetch failed:",me),d(a("couldNotFetchBalanceRetry"),"bot")}}}else if(!V&&te){d(X.message||"🔄 Please choose which token you want to swap from:","bot",_.id);let ae=parseInt(N.token_out_decimals||"18",10);if(N.token_out)try{const L=await tt.getTokensDetails([N.token_out],w);L?.data?.[0]&&(ae=L.data[0].decimals||ae)}catch(L){console.warn("getTokensDetails failed in CASE 3, using fallback:",L)}await he(N.token_out,ae)}else if(V&&!te){let ae=R?18:parseInt(N.token_in_decimals||"18",10);if(N.token_in&&!R)try{const L=await tt.getTokensDetails([N.token_in],w);L?.data?.[0]&&(ae=L.data[0].decimals||ae)}catch(L){console.warn("getTokensDetails failed in CASE 4, using fallback:",L)}z(R?{srcTokenAddress:Ve,srcTokenDecimals:18}:{srcTokenAddress:N.token_in,srcTokenDecimals:ae}),d(X.message||`🔄 You want to swap ${N.token_in_symbol||"your token"}. Please choose which token you want to receive:`,"bot",_.id);try{m(!0);const L=g?.tokenTrendingDefault||[],[O,W]=await Promise.allSettled([tt.getTopGainers(w,"24h",5),tt.getTokensDetails(L,w)]);let me=[];O.status==="fulfilled"&&O.value?.data&&(me=[...O.value.data]),W.status==="fulfilled"&&W.value?.data&&(me=[...W.value.data,...me]),me=me.filter((de,Ie,Fe)=>Ie===Fe.findIndex(Ce=>Ce.address.toLowerCase()===de.address.toLowerCase()));const Ee=me.map(de=>({id:de?.symbol,text:de?.symbol,value:r("buttonSwapTo",{name:de.name,symbol:de?.symbol||""}),action:"click_swap_dest_token",extraData:{tokenAddress:de?.address||"",symbol:de?.symbol||"",decimals:de?.decimals||18}}));d(r("trendingTokensForReceive",{chain:g?.name||"Unknown"}),"bot",void 0,Ee)}catch(L){console.error("Error fetching trending tokens for swap:",L),d(a("couldNotLoadTokenList"),"bot")}finally{m(!1)}}else d(X.message||'🔄 I need more details for your swap. Please specify which tokens you want to swap (e.g. "Swap 1 ETH to USDC").',"bot",_.id)}else if(X.action==="view_balances")d(X.message||a("viewBalancesLoading"),"bot",_.id),await Ye();else if(X.action==="view_nfts")d(X.message||"🖼️ Let me show you your NFT collection!","bot",_.id),await Se();else if(X.action==="send_token"&&!X.parameters?.contract_address&&!X.parameters?.token_symbol&&c?.address){d("💰 Which token would you like to send?","bot",_.id);try{m(!0);const N=await Qe({address:c.address,chain:b});if(N?.success&&N?.data?.result&&N.data.result.length>0){const $=N.data.result.map(V=>({id:`send-select-${V.token_address}`,text:`Send ${V.name} (${V.symbol})`,value:`Send ${V.name} (${V.symbol})`,action:"suggested_action",fullWidth:!0}));await ot(500),m(!1),d(r("walletBalanceSpendable",{chain:g?.name||"this chain"}),"bot",void 0,$)}else m(!1),d(r("walletNoTokensFound",{chain:g?.name||"this chain"}),"bot")}catch(N){console.warn("Failed to fetch balance for send_token picker:",N),m(!1),d(a("walletFetchError"),"bot")}}else if(X.action==="send_nft"&&!X.parameters?.contract_address&&!X.parameters?.token_id&&!X.parameters?.nft_name&&c?.address)d("Which NFT would you like to send?","bot",_.id),await Se();else if(X.action==="send_nft"&&!He(X.parameters?.contract_address||"")&&(X.parameters?.nft_name||X.parameters?.token_id)&&c?.address)try{m(!0);const N=await bn({address:c.address,chain:b,limit:100,exclude_spam:!1});if(N?.success&&N?.data?.result){const R=N.data.result,$=(X.parameters?.nft_name||"").toLowerCase(),V=X.parameters?.token_id||"",te=R.find(be=>{const ae=(be.normalized_metadata?.name||be.name||"").toLowerCase(),L=(be.name||"").toLowerCase(),O=$&&(ae.includes($)||L.includes($)),W=V&&be.token_id===V;return $&&V?O&&W:$?O:W});if(te){const be=te.normalized_metadata?.name||te.name||`#${te.token_id}`,ae=te.normalized_metadata?.image||te.media?.original_media_url||"",L={contract_address:te.token_address,token_id:te.token_id,to_address:X.parameters?.to_address||"",token_standard:te.contract_type||"",amount:"1",maxAmount:te.amount||"1",nft_name:be};d(X.message||r("nftSendReview",{name:be,standard:te.contract_type||"NFT",tokenId:te.token_id}),"bot",_.id,void 0,{action:"send_nft",parameters:L,status:"pending",nftInfo:{name:be,image:ae||void 0,tokenId:te.token_id,contractAddress:te.token_address,tokenStandard:te.contract_type||void 0}})}else d(X.message||r("nftNotFoundInWallet",{name:$||V}),"bot",_.id),await Se()}else d(a("nftNoCollection"),"bot",_.id)}catch(N){console.error("NFT lookup by name failed:",N),d(a("nftFetchError"),"bot",_.id)}finally{m(!1)}else{const N=oc(X.action);let R={...X.parameters||{}},$,V;const te=["send_token","approve_token"].includes(X.action)&&(R.contract_address||R.token_symbol),be=X.action==="send_native",ae=X.action==="send_nft"&&R.contract_address;if(te&&c?.address)try{const L=await Qe({address:c.address,chain:b});if(L?.success&&L?.data?.result){const O=L.data.result,W=R.contract_address?O.find(me=>me.token_address.toLowerCase()===R.contract_address.toLowerCase()):O.find(me=>me.symbol.toUpperCase()===R.token_symbol.toUpperCase());W&&(R={...R,contract_address:W.token_address,decimals:String(W.decimals)},$={symbol:W.symbol,name:W.name,balance:W.balance,balanceFormatted:W.balance_formatted,usdValue:W.usd_value,usdPrice:W.usd_price,decimals:W.decimals,logo:W.logo||W.thumbnail,contractAddress:W.token_address})}}catch(L){console.warn("Token enrichment failed:",L)}if(te&&!$&&R.contract_address)try{const L=await ks({address:R.contract_address,chain:b});if(L?.success&&L?.data){const O=L.data;$={symbol:O.symbol,name:O.name,balance:"0",balanceFormatted:"0",usdPrice:O.usd_price,decimals:O.decimals,logo:O.logo,contractAddress:R.contract_address},R={...R,decimals:String(O.decimals)}}}catch(L){console.warn("Token metadata fallback failed:",L)}if(be&&c?.address)try{const L=await Qe({address:c.address,chain:b});if(L?.success&&L?.data?.result){const W=L.data.result.find(me=>me.native_token);if(W){let me=W.balance_formatted,Ee=W.balance;try{const de=new ce(W.balance),Ie="0x"+BigInt(de.toFixed(0)).toString(16),Fe=await sn({from:c.address,to:c.address,data:"0x",value:Ie,chainId:A,rpcUrl:v});if(Fe.isGreaterThan(0)){const Ce=de.minus(Fe);Ce.isGreaterThan(0)?(Ee=Ce.toFixed(0),me=ce(Ue(BigInt(Ce.toFixed(0)),W.decimals)).toFixed()):(Ee="0",me="0")}}catch(de){console.warn("Estimate send fee for send_native failed:",de)}$={symbol:W.symbol,name:W.name,balance:Ee,balanceFormatted:me,usdValue:W.usd_value,usdPrice:W.usd_price,decimals:W.decimals,logo:W.logo||W.thumbnail,contractAddress:Ve}}else{const me=await ks({address:Ve,chain:b});if(me?.success&&me?.data){const Ee=me.data;$={symbol:Ee.symbol,name:Ee.name,balance:"0",balanceFormatted:"0",usdValue:0,usdPrice:Ee.usd_price,decimals:Ee.decimals,logo:Ee.logo||Ee.thumbnail,contractAddress:Ve}}}}}catch(L){console.warn("Native token balance fetch failed:",L)}if(ae){try{const L=await Mi({address:R.contract_address,chain:b});if(L?.success&&L?.data){const O=L.data;O.contract_type&&(R={...R,token_standard:O.contract_type}),!R.nft_name&&O.name&&(R={...R,nft_name:O.name})}}catch(L){console.warn("NFT contract metadata fetch failed:",L)}if(c?.address)try{const L=await bn({address:c.address,chain:b,limit:100,exclude_spam:!1});if(L?.success&&L?.data?.result){const O=L.data.result.find(W=>W.token_address.toLowerCase()===R.contract_address.toLowerCase()&&W.token_id===R.token_id);if(O){R={...R,amount:"1",maxAmount:O.amount||"1"};const W=O.normalized_metadata?.image||O.media?.original_media_url||"";V={name:O.normalized_metadata?.name||O.name||R.nft_name||`#${O.token_id}`,image:W||void 0,tokenId:O.token_id,contractAddress:O.token_address,tokenStandard:O.contract_type||R.token_standard||void 0}}}}catch(L){console.warn("NFT ownership lookup failed:",L)}}if(R.amount&&$?.balanceFormatted&&(X.action==="send_token"||X.action==="send_native")&&(R.amount=fo(R.amount,$.balanceFormatted)),N){const L=X.message||"Please review and complete the form below.";d(L,"bot",_.id,void 0,{action:X.action,parameters:R,status:"pending",tokenInfo:$,nftInfo:V})}else d(X.message||re,"bot",_.id)}else if(X&&X.action==="chat"){const N=X.token_mentions||[],R=X.suggested_actions||[],$=[];N.length>0&&N.forEach(V=>{$.push({id:`buy-${V.symbol}`,text:`💰 Buy ${V.symbol}`,value:r("buttonBuySymbol",{symbol:V.symbol}),action:"click_buy_item_token_button",extraData:{tokenAddress:V.contract_address||"",symbol:V.symbol,decimals:V.decimals||18},fullWidth:!0})}),R.length>0&&R.forEach((V,te)=>{$.push({id:`suggested-${te}-${V.label}`,text:V.label,value:V.prompt,action:"suggested_action",fullWidth:!0})}),$.length>0?d(X.message||re,"bot",_.id,$):d(X.message||re,"bot",_.id)}else d(re,"bot",_.id)}else d(a("errorProcessingRequest"),"bot",_.id)}catch(J){console.error("Error getting AI response:",J),d(a("errorProcessingRequest"),"bot",_.id)}m(!1),await ot(50),Gt.isDesktop&&fe.current?.focus()},[H,E,i,d,ve,c?.address,g?.name,g?.nativeCurrency?.symbol,g?.tokenTrendingDefault,A,w,b,y,he,we,Se,Ye,z,v,a,r]);ne.useEffect(()=>{pe.current&&H===pe.current&&(pe.current=null,Pe())},[H,Pe]);const je=ne.useCallback(async(U,_,J)=>{try{if(T(J,"submitted"),U==="swap_token"){let ee=18;if(_.token_in&&_.token_in!==Ve)try{const q=await tt.getTokensDetails([_.token_in],w);q?.data?.[0]&&(ee=q.data[0].decimals||18)}catch(q){console.warn("getTokensDetails failed in ActionForm swap, using default 18:",q)}const Z=mt(_.amount||"0",ee).toString(),j=await ro({chainId:A,tokenIn:_.token_in||"",tokenInAmount:Z,tokenOut:_.token_out||"",tokenOutRecipient:c?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(j.success&&j.data){const q=j.data,ie=q.tokenIn,ye=q.tokenOut,re=ce(Ue(BigInt(ie.amount||0),ie.decimals)).decimalPlaces(6).toFormat(),X=ce(Ue(BigInt(ye.amount||0),ye.decimals)).decimalPlaces(6).toFormat(),N=!_.token_in||_.token_in===Ve;let R=!1;if(!N&&c?.address&&q.tx?.to)try{const W=await lo({tokenAddress:_.token_in,ownerAddress:c.address,spenderAddress:q.tx.to,chainId:A,rpcUrl:v});R=ce(W.toString()).isLessThan(Z)}catch(W){console.warn("Allowance check failed in ActionForm swap:",W)}const $=q.estimatedTransactionFee?.total?ce(q.estimatedTransactionFee.total):ce(0);let V=ce(0);if(R&&c?.address)try{const W=An({tokenAddress:_.token_in,spenderAddress:q.tx?.to||"",fromAddress:c.address,chainId:A});V=await sn({from:c.address,to:W.to,data:W.data,chainId:A,rpcUrl:v})}catch(W){console.warn("Approve fee estimation failed:",W)}const te=$.plus(V),be=g?.nativeCurrency?.symbol||"native";let ae="",L=!1;if(c?.address&&te.isGreaterThan(0))try{const W=await vn({address:c.address,chainId:A,rpcUrl:v});if(W.isLessThan(te)){L=!0;const me=ce(Ue(BigInt(W.toFixed(0)),18)).decimalPlaces(6).toFormat(),Ee=ce(Ue(BigInt(te.toFixed(0)),18)).decimalPlaces(6).toFormat();ae=r("swapFeeWarning",{symbol:be,balance:me,needed:Ee})}}catch(W){console.warn("Fee balance check failed:",W)}const O=`From: ${re} ${ie.symbol}
|
|
438
|
+
`+_e+`
|
|
439
|
+
`;if(rn)d(Jt,"bot");else if(Ze){const Ue=[{id:"approve-for-swap",text:r("swapApproveButton",{symbol:Se.symbol}),value:r("swapApproveValue",{symbol:Se.symbol}),action:"approve_for_swap",fullWidth:!0,extraData:{tokenAddress:M,spenderAddress:de.tx.to,tokenSymbol:Se.symbol,tx:de.tx}}];d(Jt+r("swapNeedApprove",{symbol:Se.symbol}),"bot",void 0,Ue)}else{const Ue=[{id:"confirm-swap",text:a("swapConfirmYes"),value:a("swapConfirmValue"),action:"confirm_swap",extraData:{tx:de.tx}}];d(Jt+a("swapReadyToProceed"),"bot",void 0,Ue)}}else d(r("swapEstimationError",{error:Ce.errorMessage||Ce.error||"Unknown error"}),"bot")}catch(ee){console.error("Swap estimation error:",ee),d(a("swapEstimationFailed"),"bot")}}else if(V&&ne&&!be){let ee=U?18:parseInt(B.token_in_decimals||"18",10),H=parseInt(B.token_out_decimals||"18",10);const O=[];if(B.token_out&&O.push(B.token_out),B.token_in&&!U&&O.push(B.token_in),O.length>0)try{const M=await nt.getTokensDetails(O,g);if(M?.data)for(const me of M.data)!U&&me.address.toLowerCase()===B.token_in?.toLowerCase()&&(ee=me.decimals||ee),me.address.toLowerCase()===B.token_out?.toLowerCase()&&(H=me.decimals||H)}catch(M){console.warn("getTokensDetails failed in CASE 2, using fallback decimals:",M)}if(z({descTokenAddress:B.token_out,descTokenDecimals:H}),U)try{const M=await je({address:i?.address||"",chain:b});if(M?.success&&M?.data?.result){const Ce=M.data.result.find(Oe=>Oe.native_token),de=w?.nativeCurrency?.symbol||"ETH";let Se=Ce?.balance_formatted||"0";try{const Oe=await uo({chainId:A,rpcUrl:k});if(Oe.isGreaterThan(0)){const Ze=Oe.times(1e6),dt=new ce(Ce?.balance||"0").minus(Ze);dt.isGreaterThan(0)?Se=ce(De(BigInt(dt.toFixed(0)),Ce?.decimals||18)).toFixed():Se="0"}}catch(Oe){console.warn("getGasPrice for swap native fee deduction (CASE 2) failed:",Oe)}z({srcTokenAddress:Ve,srcTokenDecimals:ee});const Ie=[25,50,75,100].map(Oe=>({id:`percent-${Oe}`,text:`${Oe}%`,value:r("buttonUsePercent",{percent:String(Oe),symbol:de}),action:"select_percent",extraData:{percent:Oe,tokenAddress:Ve,tokenSymbol:de,tokenBalance:Se}}));d(r("selectAmountToSwap",{symbol:de,balance:Se}),"bot",_.id,Ie)}else d(a("couldNotFetchBalance"),"bot")}catch(M){console.warn("Native balance fetch failed:",M),d(a("couldNotFetchBalanceRetry"),"bot")}else{const M=B.token_in_symbol||"Token";z({srcTokenAddress:B.token_in,srcTokenDecimals:ee});try{const me=await je({address:i?.address||"",chain:b});if(me?.success&&me?.data?.result){const de=me.data.result.find(Ie=>Ie.token_address.toLowerCase()===B.token_in?.toLowerCase());if(!de){d(r("swapTokenNotInWallet",{symbol:M}),"bot"),m(!1);return}const Fe=[25,50,75,100].map(Ie=>({id:`percent-${Ie}`,text:`${Ie}%`,value:r("buttonUsePercent",{percent:String(Ie),symbol:de.symbol}),action:"select_percent",extraData:{percent:Ie,tokenAddress:de.token_address,tokenSymbol:de.symbol,tokenBalance:de.balance_formatted}}));d(r("selectAmountToSwap",{symbol:de.symbol,balance:`${de.balance_formatted} (~$${de.usd_value?.toFixed(2)||"0"})`}),"bot",_.id,Fe)}else d(a("couldNotFetchBalance"),"bot")}catch(me){console.warn("Token balance fetch failed:",me),d(a("couldNotFetchBalanceRetry"),"bot")}}}else if(!V&&ne){d(X.message||a("swapChooseFrom"),"bot",_.id);let ee=parseInt(B.token_out_decimals||"18",10);if(B.token_out)try{const H=await nt.getTokensDetails([B.token_out],g);H?.data?.[0]&&(ee=H.data[0].decimals||ee)}catch(H){console.warn("getTokensDetails failed in CASE 3, using fallback:",H)}await he(B.token_out,ee)}else if(V&&!ne){let ee=U?18:parseInt(B.token_in_decimals||"18",10);if(B.token_in&&!U)try{const H=await nt.getTokensDetails([B.token_in],g);H?.data?.[0]&&(ee=H.data[0].decimals||ee)}catch(H){console.warn("getTokensDetails failed in CASE 4, using fallback:",H)}z(U?{srcTokenAddress:Ve,srcTokenDecimals:18}:{srcTokenAddress:B.token_in,srcTokenDecimals:ee}),d(X.message||r("swapChooseTo",{symbol:B.token_in_symbol||"your token"}),"bot",_.id);try{m(!0);const H=w?.tokenTrendingDefault||[],[O,M]=await Promise.allSettled([nt.getTopGainers(g,"24h",5),nt.getTokensDetails(H,g)]);let me=[];O.status==="fulfilled"&&O.value?.data&&(me=[...O.value.data]),M.status==="fulfilled"&&M.value?.data&&(me=[...M.value.data,...me]),me=me.filter((de,Se,Fe)=>Se===Fe.findIndex(Ie=>Ie.address.toLowerCase()===de.address.toLowerCase()));const Ce=me.map(de=>({id:de?.symbol,text:de?.symbol,value:r("buttonSwapTo",{name:de.name,symbol:de?.symbol||""}),action:"click_swap_dest_token",extraData:{tokenAddress:de?.address||"",symbol:de?.symbol||"",decimals:de?.decimals||18}}));d(r("trendingTokensForReceive",{chain:w?.name||"Unknown"}),"bot",void 0,Ce)}catch(H){console.error("Error fetching trending tokens for swap:",H),d(a("couldNotLoadTokenList"),"bot")}finally{m(!1)}}else if(d(X.message||a("swapChooseToken"),"bot",_.id),i?.address)try{m(!0);const ee=await je({address:i.address,chain:b});if(ee?.success&&ee?.data?.result&&ee.data.result.length>0){const O=ee.data.result.map(M=>({id:`swap-select-${M.token_address}`,text:`${M.name}: ${M.balance_formatted} ${M.symbol} ($${ce(M?.usd_value||0).decimalPlaces(2).toFixed()||"0"})`,value:`Swap ${M.symbol}`,action:"suggested_action",fullWidth:!0}));await Xe(500),m(!1),d(r("walletBalanceSpendable",{chain:w?.name||"this chain"}),"bot",void 0,O)}else m(!1),d(r("walletNoTokensFound",{chain:w?.name||"this chain"}),"bot")}catch(ee){console.warn("Failed to fetch balance for swap picker:",ee),m(!1),d(a("walletFetchError"),"bot")}}else if(X.action==="view_balances")d(X.message||a("viewBalancesLoading"),"bot",_.id),await Ye();else if(X.action==="view_nfts")d(X.message||a("viewNftsLoading"),"bot",_.id),await Ee();else if(X.action==="send_token"&&!X.parameters?.contract_address&&!X.parameters?.token_symbol&&i?.address)try{const B=await je({address:i.address,chain:b});if(B?.success&&B?.data?.result&&B.data.result.length>0){d(a("sendTokenChoose"),"bot",_.id),m(!0),await Xe(500);const $=B.data.result.map(V=>({id:`send-select-${V.token_address}`,text:`${V.name}: ${V.balance_formatted} ${V.symbol} ($${ce(V?.usd_value||0).decimalPlaces(2).toFixed()||"0"})`,value:`Send ${V.name} (${V.symbol})`,action:"suggested_action",fullWidth:!0}));await Xe(500),m(!1),d(r("walletBalanceSpendable",{chain:w?.name||"this chain"}),"bot",void 0,$)}else m(!1),d(r("walletNoTokensFound",{chain:w?.name||"this chain"}),"bot")}catch(B){console.warn("Failed to fetch balance for send_token picker:",B),m(!1),d(a("walletFetchError"),"bot")}else if(X.action==="send_nft"&&!X.parameters?.contract_address&&!X.parameters?.token_id&&!X.parameters?.nft_name&&i?.address)d(a("sendNftChoose"),"bot",_.id),await Ee();else if(X.action==="send_nft"&&!He(X.parameters?.contract_address||"")&&(X.parameters?.nft_name||X.parameters?.token_id)&&i?.address)try{m(!0);const B=await bn({address:i.address,chain:b,limit:100,exclude_spam:!1});if(B?.success&&B?.data?.result){const U=B.data.result,$=(X.parameters?.nft_name||"").toLowerCase(),V=X.parameters?.token_id||"",ne=U.find(be=>{const ee=(be.normalized_metadata?.name||be.name||"").toLowerCase(),H=(be.name||"").toLowerCase(),O=$&&(ee.includes($)||H.includes($)),M=V&&be.token_id===V;return $&&V?O&&M:$?O:M});if(ne){const be=ne.normalized_metadata?.name||ne.name||`#${ne.token_id}`,ee=ne.normalized_metadata?.image||ne.media?.original_media_url||"",H={contract_address:ne.token_address,token_id:ne.token_id,to_address:X.parameters?.to_address||"",token_standard:ne.contract_type||"",amount:"1",maxAmount:ne.amount||"1",nft_name:be};d(X.message||r("nftSendReview",{name:be,standard:ne.contract_type||"NFT",tokenId:ne.token_id}),"bot",_.id,void 0,{action:"send_nft",parameters:H,status:"pending",nftInfo:{name:be,image:ee||void 0,tokenId:ne.token_id,contractAddress:ne.token_address,tokenStandard:ne.contract_type||void 0}})}else d(X.message||r("nftNotFoundInWallet",{name:$||V}),"bot",_.id),await Ee()}else d(a("nftNoCollection"),"bot",_.id)}catch(B){console.error("NFT lookup by name failed:",B),d(a("nftFetchError"),"bot",_.id)}finally{m(!1)}else{const B=sc(X.action);let U={...X.parameters||{}},$,V;const ne=["send_token","approve_token"].includes(X.action)&&(U.contract_address||U.token_symbol),be=X.action==="send_native",ee=X.action==="send_nft"&&U.contract_address;if(ne&&i?.address)try{const H=await je({address:i.address,chain:b});if(H?.success&&H?.data?.result){const O=H.data.result,M=U.contract_address?O.find(me=>me.token_address.toLowerCase()===U.contract_address.toLowerCase()):O.find(me=>me.symbol.toUpperCase()===U.token_symbol.toUpperCase());M&&(U={...U,contract_address:M.token_address,decimals:String(M.decimals)},$={symbol:M.symbol,name:M.name,balance:M.balance,balanceFormatted:M.balance_formatted,usdValue:M.usd_value,usdPrice:M.usd_price,decimals:M.decimals,logo:M.logo||M.thumbnail,contractAddress:M.token_address})}}catch(H){console.warn("Token enrichment failed:",H)}if(ne&&!$&&U.contract_address)try{const H=await vs({address:U.contract_address,chain:b});if(H?.success&&H?.data){const O=H.data;$={symbol:O.symbol,name:O.name,balance:"0",balanceFormatted:"0",usdPrice:O.usd_price,decimals:O.decimals,logo:O.logo,contractAddress:U.contract_address},U={...U,decimals:String(O.decimals)}}}catch(H){console.warn("Token metadata fallback failed:",H)}if(be&&i?.address)try{const H=await je({address:i.address,chain:b});if(H?.success&&H?.data?.result){const M=H.data.result.find(me=>me.native_token);if(M){let me=M.balance_formatted,Ce=M.balance;try{const de=new ce(M.balance),Se="0x"+BigInt(de.toFixed(0)).toString(16),Fe=await sn({from:i.address,to:i.address,data:"0x",value:Se,chainId:A,rpcUrl:k});if(Fe.isGreaterThan(0)){const Ie=de.minus(Fe);Ie.isGreaterThan(0)?(Ce=Ie.toFixed(0),me=ce(De(BigInt(Ie.toFixed(0)),M.decimals)).toFixed()):(Ce="0",me="0")}}catch(de){console.warn("Estimate send fee for send_native failed:",de)}$={symbol:M.symbol,name:M.name,balance:Ce,balanceFormatted:me,usdValue:M.usd_value,usdPrice:M.usd_price,decimals:M.decimals,logo:M.logo||M.thumbnail,contractAddress:Ve}}else{const me=await vs({address:Ve,chain:b});if(me?.success&&me?.data){const Ce=me.data;$={symbol:Ce.symbol,name:Ce.name,balance:"0",balanceFormatted:"0",usdValue:0,usdPrice:Ce.usd_price,decimals:Ce.decimals,logo:Ce.logo||Ce.thumbnail,contractAddress:Ve}}}}}catch(H){console.warn("Native token balance fetch failed:",H)}if(ee){try{const H=await Ri({address:U.contract_address,chain:b});if(H?.success&&H?.data){const O=H.data;O.contract_type&&(U={...U,token_standard:O.contract_type}),!U.nft_name&&O.name&&(U={...U,nft_name:O.name})}}catch(H){console.warn("NFT contract metadata fetch failed:",H)}if(i?.address)try{const H=await bn({address:i.address,chain:b,limit:100,exclude_spam:!1});if(H?.success&&H?.data?.result){const O=H.data.result.find(M=>M.token_address.toLowerCase()===U.contract_address.toLowerCase()&&M.token_id===U.token_id);if(O){U={...U,amount:"1",maxAmount:O.amount||"1"};const M=O.normalized_metadata?.image||O.media?.original_media_url||"";V={name:O.normalized_metadata?.name||O.name||U.nft_name||`#${O.token_id}`,image:M||void 0,tokenId:O.token_id,contractAddress:O.token_address,tokenStandard:O.contract_type||U.token_standard||void 0}}}}catch(H){console.warn("NFT ownership lookup failed:",H)}}if(U.amount&&$?.balanceFormatted&&(X.action==="send_token"||X.action==="send_native")&&(U.amount=fo(U.amount,$.balanceFormatted)),B){const H=X.message||"Please review and complete the form below.";d(H,"bot",_.id,void 0,{action:X.action,parameters:U,status:"pending",tokenInfo:$,nftInfo:V})}else d(X.message||re,"bot",_.id)}else if(X&&X.action==="chat"){const B=X.token_mentions||[],U=X.suggested_actions||[],$=[];B.length>0&&B.forEach(V=>{$.push({id:`buy-${V.symbol}`,text:`💰 Buy ${V.symbol}`,value:r("buttonBuySymbol",{symbol:V.symbol}),action:"click_buy_item_token_button",extraData:{tokenAddress:V.contract_address||"",symbol:V.symbol,decimals:V.decimals||18},fullWidth:!0})}),U.length>0&&U.forEach((V,ne)=>{$.push({id:`suggested-${ne}-${V.label}`,text:V.label,value:V.prompt,action:"suggested_action",fullWidth:!0})}),$.length>0?d(X.message||re,"bot",_.id,$):d(X.message||re,"bot",_.id)}else d(re,"bot",_.id)}else d(a("errorProcessingRequest"),"bot",_.id)}catch(J){console.error("Error getting AI response:",J),d(a("errorProcessingRequest"),"bot",_.id)}m(!1),await Xe(50),Gt.isDesktop&&fe.current?.focus()},[W,C,c,d,ke,i?.address,w?.name,w?.nativeCurrency?.symbol,w?.tokenTrendingDefault,A,g,b,y,he,ge,Ee,Ye,z,k,a,r]);oe.useEffect(()=>{pe.current&&W===pe.current&&(pe.current=null,Pe())},[W,Pe]);const qe=oe.useCallback(async(D,_,J)=>{try{if(T(J,"submitted"),D==="swap_token"){let te=18;if(_.token_in&&_.token_in!==Ve)try{const q=await nt.getTokensDetails([_.token_in],g);q?.data?.[0]&&(te=q.data[0].decimals||18)}catch(q){console.warn("getTokensDetails failed in ActionForm swap, using default 18:",q)}const Z=mt(_.amount||"0",te).toString(),j=await ro({chainId:A,tokenIn:_.token_in||"",tokenInAmount:Z,tokenOut:_.token_out||"",tokenOutRecipient:i?.address||"",slippage:"auto",accesstoken:"d6c45897b8f6"});if(j.success&&j.data){const q=j.data,ie=q.tokenIn,ye=q.tokenOut,re=ce(De(BigInt(ie.amount||0),ie.decimals)).decimalPlaces(6).toFormat(),X=ce(De(BigInt(ye.amount||0),ye.decimals)).decimalPlaces(6).toFormat(),B=!_.token_in||_.token_in===Ve;let U=!1;if(!B&&i?.address&&q.tx?.to)try{const M=await lo({tokenAddress:_.token_in,ownerAddress:i.address,spenderAddress:q.tx.to,chainId:A,rpcUrl:k});U=ce(M.toString()).isLessThan(Z)}catch(M){console.warn("Allowance check failed in ActionForm swap:",M)}const $=q.estimatedTransactionFee?.total?ce(q.estimatedTransactionFee.total):ce(0);let V=ce(0);if(U&&i?.address)try{const M=An({tokenAddress:_.token_in,spenderAddress:q.tx?.to||"",fromAddress:i.address,chainId:A});V=await sn({from:i.address,to:M.to,data:M.data,chainId:A,rpcUrl:k})}catch(M){console.warn("Approve fee estimation failed:",M)}const ne=$.plus(V),be=w?.nativeCurrency?.symbol||"native";let ee="",H=!1;if(i?.address&&ne.isGreaterThan(0))try{const M=await kn({address:i.address,chainId:A,rpcUrl:k});if(M.isLessThan(ne)){H=!0;const me=ce(De(BigInt(M.toFixed(0)),18)).decimalPlaces(6).toFormat(),Ce=ce(De(BigInt(ne.toFixed(0)),18)).decimalPlaces(6).toFormat();ee=r("swapFeeWarning",{symbol:be,balance:me,needed:Ce})}}catch(M){console.warn("Fee balance check failed:",M)}const O=`From: ${re} ${ie.symbol}
|
|
436
440
|
⬇️
|
|
437
441
|
To: ${X} ${ye.symbol}
|
|
438
442
|
|
|
439
|
-
`+
|
|
440
|
-
`;if(
|
|
443
|
+
`+ee+`
|
|
444
|
+
`;if(H)T(J,"fail"),d(O,"bot");else if(U){const M=[{id:"approve-swap-actionform",text:r("swapApproveButton",{symbol:ie.symbol}),value:r("swapApproveValue",{symbol:ie.symbol}),action:"approve_for_swap",extraData:{tokenAddress:_.token_in,spenderAddress:q.tx.to,tokenSymbol:ie.symbol,tx:q.tx},fullWidth:!0}];T(J,"success"),d(O+r("swapApprovalRequired",{symbol:ie.symbol}),"bot",void 0,M)}else{const M=[{id:"confirm-swap-actionform",text:a("swapConfirmYes"),value:a("swapConfirmValue"),action:"confirm_swap",extraData:{tx:q.tx}}];T(J,"success"),d(O+a("swapReadyToProceed"),"bot",void 0,M)}}else T(J,"fail"),d(r("swapEstimationError",{error:j.errorMessage||j.error||"Unknown error"}),"bot")}else{const te=_i({action:D,parameters:_,fromAddress:i?.address||"",chainId:A||1}),Z={from:te.from,to:te.to,data:te.data,value:te.value,chainId:te.chainId};if((D==="send_token"||D==="send_native"||D==="send_nft")&&i?.address)try{const j=w?.nativeCurrency?.symbol||"native",q=await sn({from:te.from,to:te.to,data:te.data,value:te.value&&te.value!=="0"?`0x${BigInt(te.value).toString(16)}`:void 0,chainId:A,rpcUrl:k});if(q.isGreaterThan(0)){const ie=await kn({address:i.address,chainId:A,rpcUrl:k});if(ie.isLessThan(q)){const ye=ce(De(BigInt(ie.toFixed(0)),18)).decimalPlaces(6).toFormat(),re=ce(De(BigInt(q.toFixed(0)),18)).decimalPlaces(6).toFormat();T(J,"fail"),d(r("txInsufficientGas",{symbol:j,balance:ye,fee:re}),"bot");return}}}catch(j){console.warn("Pre-execution fee check failed:",j)}if(n){m(!1);const j=await n(Z);if(j.status==="success"&&j.transactionHash){const q=w?.blockExplorers?.default?.url,ie=q?`
|
|
441
445
|
[View on Explorer](${q}/tx/${j.transactionHash})`:`
|
|
442
|
-
Tx: ${j.transactionHash}`,ye=d(a("txSubmitted")+ie,"bot");try{await
|
|
443
|
-
Error: ${j.error}`:"";d(a("txFailed")+q,"bot")}}else T(J,"fail"),d(a("txNoHandler"),"bot")}}catch(
|
|
446
|
+
Tx: ${j.transactionHash}`,ye=d(a("txSubmitted")+ie,"bot");try{await Xe(2e3),(await co({transactionHash:j.transactionHash,chainId:A||1,rpcUrl:k})).status==="success"?(T(J,"success"),N(ye.id,a("txConfirmed")+ie)):(T(J,"fail"),N(ye.id,a("txReverted")+ie))}catch(re){console.warn("Transaction tracking timeout:",re),T(J,"success"),d(a("txTimeout")+ie,"bot")}}else if(j.status==="success")T(J,"success"),d(a("txSuccessful"),"bot");else{T(J,"fail");const q=j.error?`
|
|
447
|
+
Error: ${j.error}`:"";d(a("txFailed")+q,"bot")}}else T(J,"fail"),d(a("txNoHandler"),"bot")}}catch(te){console.error("Action form submit error:",te),T(J,"fail"),d(r("txError",{message:te instanceof Error?te.message:"Unknown error"}),"bot")}},[T,A,i?.address,g,d,n,w?.blockExplorers?.default?.url,w?.nativeCurrency?.symbol,N,k,a,r]),Me=oe.useCallback(D=>{T(D,"fail")},[T]),[Le,Te]=oe.useState({}),Ft=oe.useCallback(async(D,_,J)=>{Te(te=>({...te,[J]:!0}));try{await qe(D,_,J)}finally{Te(te=>({...te,[J]:!1}))}},[qe]),Yt=oe.useCallback(D=>{D.key==="Enter"&&!D.shiftKey&&(D.preventDefault(),Pe())},[Pe]),wt=oe.useCallback(()=>{const D=window.getSelection();D&&D.toString().length>0||t()},[t]);return e?F.jsx("div",{className:`chat-modal-overlay${s==="bottom-left"?" chat-modal-overlay--left":""}`,onClick:wt,role:"dialog","aria-modal":"true","aria-labelledby":"chat-modal-title",children:F.jsxs("div",{className:"chat-modal",style:o,onClick:D=>D.stopPropagation(),children:[F.jsxs("div",{className:"chat-modal-header",children:[F.jsxs("div",{className:"chat-modal-header-left",children:[F.jsx("div",{className:"keyring-logo",children:F.jsx("img",{src:Mi,alt:"Keyring Logo",width:40,height:40})}),F.jsx("h3",{id:"chat-modal-title",children:a("chatTitle")})]}),F.jsx("button",{className:"close-button",onClick:t,"aria-label":a("closeChat"),type:"button",children:F.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:F.jsx("path",{d:"M15 5L5 15M5 5L15 15",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})})]}),F.jsx(Ci,{address:i?.address,chainId:w?.chainId}),F.jsxs("div",{className:"chat-modal-messages-wrapper",children:[F.jsxs("div",{className:"chat-modal-messages",ref:K,role:"log","aria-live":"polite",children:[c.map((D,_)=>F.jsxs("div",{children:[Ke(_)&&F.jsx("div",{className:"date-separator",children:gi(D.timestamp)}),F.jsxs("div",{className:`message ${D.sender==="user"?"message-user":"message-bot"}`,role:"article",children:[F.jsx("button",{className:"message-reply-button",onClick:()=>ae(D),"aria-label":a("replyToMessage"),type:"button",children:F.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:F.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"})})}),F.jsxs("div",{className:"message-bubble",children:[D.replyTo&&F.jsxs("div",{className:"message-reply-to",children:[F.jsxs("div",{className:"message-reply-to-label",children:[a("replyingTo")," ",D.replyTo.sender==="user"?a("replyingToYou"):a("replyingToAgent")]}),F.jsx("div",{className:"message-reply-to-text",children:D.replyTo.text})]}),F.jsx("div",{className:"message-text",children:F.jsx(Ji,{content:D.text})}),D.buttons&&D.buttons.length>0&&F.jsx("div",{className:"message-buttons",children:D.buttons.map(J=>F.jsx("button",{className:`message-button ${J.fullWidth?"full-width":""} ${J.action==="suggested_action"?"suggested-action":""}`,onClick:()=>Q(J.value,J.action,J?.extraData),type:"button",children:J.text},J.id))}),D.actionData&&D.actionData.status==="pending"&&F.jsx(qi,{action:D.actionData.action,initialValues:D.actionData.parameters,onSubmit:(J,te)=>Ft(J,te,D.id),onCancel:()=>Me(D.id),isSubmitting:Le[D.id]||!1,tokenInfo:D.actionData.tokenInfo,nftInfo:D.actionData.nftInfo}),D.actionData&&D.actionData.status==="submitted"&&F.jsx("div",{className:"action-status action-status-submitted",children:a("actionProcessing")}),D.actionData&&D.actionData.status==="success"&&F.jsx("div",{className:"action-status action-status-success",children:a("actionSuccess")}),D.actionData&&D.actionData.status==="fail"&&F.jsx("div",{className:"action-status action-status-fail",children:a("actionFail")}),F.jsxs("div",{className:"message-timestamp",children:[D.timestamp.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),D.sender==="user"&&F.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:"check-icon",children:F.jsx("path",{d:"M13.3333 4L6 11.3333L2.66667 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]})]})]})]},D.id)),C&&F.jsx("div",{className:"message message-bot typing-indicator",role:"status","aria-label":a("botIsTyping"),children:F.jsxs("div",{className:"message-bubble",children:[F.jsx("span",{className:"typing-dot"}),F.jsx("span",{className:"typing-dot"}),F.jsx("span",{className:"typing-dot"})]})}),(I||c.length===1)&&F.jsxs(F.Fragment,{children:[F.jsx("div",{className:"message message-bot",role:"article",children:F.jsx("div",{className:"message-bubble",children:F.jsx("div",{className:"message-text",children:a("canIHelpYou")})})}),F.jsx("div",{className:"suggestions-container",children:at.map(D=>F.jsxs("button",{className:"suggestion-button",onClick:D.action,type:"button",children:[F.jsx("span",{className:"suggestion-icon",children:D.icon}),F.jsx("span",{className:"suggestion-text",children:D.text})]},D.id))})]}),F.jsx("div",{ref:Y})]}),F.jsx(Qi,{scrollContainerRef:K})]}),F.jsxs("div",{className:"chat-modal-input",children:[ke&&F.jsxs("div",{className:"reply-preview",children:[F.jsxs("div",{className:"reply-preview-content",children:[F.jsxs("div",{className:"reply-preview-label",children:[a("replyingTo")," ",ke.sender==="user"?a("replyingToYou"):a("replyingToAgent")]}),F.jsx("div",{className:"reply-preview-text",children:ke.text})]}),F.jsx("button",{className:"reply-preview-close",onClick:()=>S(null),"aria-label":a("cancelReply"),type:"button",children:F.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:F.jsx("path",{d:"M12 4L4 12M4 4L12 12",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]}),F.jsxs("div",{className:"chat-modal-input-row",children:[F.jsx("input",{ref:fe,type:"text",placeholder:a("messagePlaceholder"),value:W,onChange:D=>h(D.target.value),onKeyPress:Yt,disabled:C,"aria-label":"Message input"}),F.jsx("button",{className:"send-button",onClick:Pe,"aria-label":a("sendMessage"),disabled:C||W?.trim()==="",type:"button",children:F.jsx("img",{src:Hi,alt:"Send",width:44,height:44})})]})]})]})}):null},dc=({position:e,theme:t,defaultOpen:n,onOpen:s,onClose:o,onTransaction:a})=>{const[r,c]=oe.useState(n);oe.useEffect(()=>{n&&s&&s()},[]),oe.useEffect(()=>{if(typeof window>"u")return;const h=document.body,C=document.documentElement,m=h.style.overscrollBehavior,I=C.style.overscrollBehavior,R=h.style.overflow;return r&&(h.style.overscrollBehavior="none",C.style.overscrollBehavior="none",h.style.overflow="hidden"),()=>{h.style.overscrollBehavior=m,C.style.overscrollBehavior=I,h.style.overflow=R}},[r]);const d=oe.useCallback(()=>{c(!0),s?.()},[s]),T=oe.useCallback(()=>{c(!1),o?.()},[o]),N=oe.useCallback(()=>{r?T():d()},[r,d,T]),W={position:"fixed",[e==="bottom-right"?"right":"left"]:t.offset?.x??20,bottom:t.offset?.y??20,zIndex:t.zIndex??9999};return F.jsxs("div",{style:W,role:"complementary","aria-label":"Chat widget",children:[F.jsx(Js,{buttonSize:t.buttonSize,onClick:N}),F.jsx(lc,{isOpen:r,onClose:T,onTransaction:a,position:e,modalChatStyle:t.modalChatStyle})]})},uc=({position:e="bottom-right",theme:t={},defaultOpen:n=!1,onOpen:s,onClose:o,account:a,onTransaction:r,language:c="en",rpcUrls:d})=>{const T={position:e,theme:t,rpcUrls:d};return typeof window>"u"?null:F.jsx(Pi,{initialConfig:T,children:F.jsx(Ti,{initialAccount:a,children:F.jsx(Ys,{initialLanguage:c,children:F.jsx(dc,{position:e,theme:t,defaultOpen:n,onOpen:s,onClose:o,onTransaction:r})})})})};gt.ChatWidget=uc,Object.defineProperty(gt,Symbol.toStringTag,{value:"Module"})}));
|