@swapkit/toolboxes 4.15.3 → 4.15.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/aptos/index.cjs +1 -1
- package/dist/src/cardano/index.cjs +1 -1
- package/dist/src/cosmos/index.cjs +1 -1
- package/dist/src/evm/index.cjs +1 -1
- package/dist/src/hypercore/index.cjs +1 -1
- package/dist/src/index.cjs +1 -1
- package/dist/src/near/index.cjs +1 -1
- package/dist/src/radix/index.cjs +1 -1
- package/dist/src/ripple/index.cjs +1 -1
- package/dist/src/solana/index.cjs +1 -1
- package/dist/src/starknet/index.cjs +1 -1
- package/dist/src/stellar/index.cjs +1 -1
- package/dist/src/substrate/index.cjs +1 -1
- package/dist/src/sui/index.cjs +1 -1
- package/dist/src/ton/index.cjs +1 -1
- package/dist/src/tron/index.cjs +1 -1
- package/dist/src/utxo/index.cjs +1 -1
- package/package.json +2 -2
package/dist/src/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var zH=Object.create;var{getPrototypeOf:DH,defineProperty:ty,getOwnPropertyNames:f0,getOwnPropertyDescriptor:OH}=Object,T0=Object.prototype.hasOwnProperty;function t0(n){return this[n]}var RH,xH,C0=(n,y,T)=>{var o=n!=null&&typeof n==="object";if(o){var f=y?RH??=new WeakMap:xH??=new WeakMap,t=f.get(n);if(t)return t}T=n!=null?zH(DH(n)):{};let C=y||!n||!n.__esModule?ty(T,"default",{value:n,enumerable:!0}):T;for(let H of f0(n))if(!T0.call(C,H))ty(C,H,{get:t0.bind(n,H),enumerable:!0});if(o)f.set(n,C);return C},Jn=(n)=>{var y=(y0??=new WeakMap).get(n),T;if(y)return y;if(y=ty({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var o of f0(n))if(!T0.call(y,o))ty(y,o,{get:t0.bind(n,o),enumerable:!(T=OH(n,o))||T.enumerable})}return y0.set(n,y),y},y0;var FH=(n)=>n;function SH(n,y){this[n]=FH.bind(null,y)}var Mn=(n,y)=>{for(var T in y)ty(n,T,{get:y[T],enumerable:!0,configurable:!0,set:SH.bind(y,T)})};var p=(n,y)=>()=>(n&&(y=n(n=0)),y);function uo(n){if(!n||typeof n!=="string"||!n.startsWith("0x"))return!1;let y=n.slice(2);if(y.length===0||y.length>64)return!1;return pH.test(y)}function H0({derivationPath:n,provider:y,...T}={}){let o,f=V.derivationPathToString(n||V.NetworkDerivationPath[V.Chain.Aptos],{allHardened:!0});async function t(){if(o)return o;return o=await Qo.match(T).with({phrase:Qo.P.string},async({phrase:w})=>{let{Ed25519Account:Q}=await import("@aptos-labs/ts-sdk");return Q.fromDerivationPath({mnemonic:w,path:f})}).with({signer:Qo.P.any},({signer:w})=>w).otherwise(()=>{return}),o}async function C(){let{Aptos:w,AptosConfig:Q}=await import("@aptos-labs/ts-sdk"),N=new Q({fullnode:y||V.getRPCUrlSync(V.Chain.Aptos)});return new w(N)}async function H(){return(await t())?.accountAddress.toString()||""}async function A(w){let Q=w||await H();if(!Q)throw new V.SwapKitError("toolbox_aptos_address_required");let{baseDecimal:N,chain:Y}=V.getChainConfig(V.Chain.Aptos);try{let z=await C(),J=await z.getAccountAPTAmount({accountAddress:Q}),l=[V.AssetValue.from({chain:Y,fromBaseDecimal:N,value:J.toString()})],M=await z.getCurrentFungibleAssetBalances({options:{where:{owner_address:{_eq:Q}}}});for(let W of M){if(W.asset_type===Lo.COIN_TYPE||Number(W.amount)<=0)continue;let Z=W.asset_type;if(Z){let L=("metadata"in W&&typeof W.metadata==="object"&&W.metadata!==null?W.metadata:void 0)?.decimals??N;l.push(V.AssetValue.from({asset:`${V.Chain.Aptos}.APT-${Z}`,fromBaseDecimal:L,value:String(W.amount)}))}}return l}catch{return[V.AssetValue.from({chain:Y})]}}async function _(w){if(!w){let{baseDecimal:M}=V.getChainConfig(V.Chain.Aptos),W=y||V.getRPCUrlSync(V.Chain.Aptos),Z=await fetch(`${W}/estimate_gas_price`),{gas_estimate:D}=await Z.json();return V.AssetValue.from({chain:V.Chain.Aptos,fromBaseDecimal:M,value:String(D)})}let Q=await t();if(!Q)throw new V.SwapKitError("toolbox_aptos_no_signer");let N=await X(w),Y=await C(),[z]=await Y.transaction.simulate.simple({signerPublicKey:Q.publicKey,transaction:N});if(!z)throw new V.SwapKitError("toolbox_aptos_transaction_creation_error");let J=BigInt(z.gas_used)*BigInt(z.gas_unit_price),{baseDecimal:l}=V.getChainConfig(V.Chain.Aptos);return V.AssetValue.from({chain:V.Chain.Aptos,fromBaseDecimal:l,value:J.toString()})}async function X({recipient:w,assetValue:Q,maxGasAmount:N,sender:Y}){if(!uo(w))throw new V.SwapKitError("core_transaction_invalid_recipient_address");let z=Y||await H();if(!z)throw new V.SwapKitError("toolbox_aptos_no_sender");let{AccountAddress:J}=await import("@aptos-labs/ts-sdk"),l=await C(),M=J.from(z);try{let W=Q.isGasAsset?Lo.TRANSFER:Lo.FUNGIBLE_STORE_TRANSFER,Z=Qo.match({address:Q?.address,isGasAsset:Q.isGasAsset}).with({isGasAsset:!0},()=>[J.from(w),Q.getBaseValue("bigint")]).with({address:Qo.P.string},({address:D})=>[J.from(D),J.from(w),Q.getBaseValue("bigint")]).otherwise(()=>null);if(!Z)throw new V.SwapKitError("toolbox_aptos_missing_asset_type");return l.transaction.build.simple({data:{function:W,functionArguments:Z,typeArguments:Q.isGasAsset?[]:[Lo.FUNGIBLE_ASSET_METADATA]},options:N?{maxGasAmount:N}:void 0,sender:M})}catch(W){if(W instanceof V.SwapKitError)throw W;throw new V.SwapKitError("toolbox_aptos_transaction_creation_error",W)}}async function B(w){let Q=await t();if(!Q)throw new V.SwapKitError("toolbox_aptos_no_signer");return(await C()).transaction.sign({signer:Q,transaction:w})}async function U({assetValue:w,maxGasAmount:Q,recipient:N}){let Y=await t();if(!Y)throw new V.SwapKitError("toolbox_aptos_no_signer");if(!uo(N))throw new V.SwapKitError("core_transaction_invalid_recipient_address");try{let z=Y.accountAddress.toString(),J=await X({assetValue:w,maxGasAmount:Q,recipient:N,sender:z});return(await(await C()).signAndSubmitTransaction({signer:Y,transaction:J})).hash}catch(z){if(z instanceof V.SwapKitError)throw z;throw new V.SwapKitError("toolbox_aptos_transaction_creation_error",z)}}async function q({senderAuthenticator:w,transaction:Q}){try{return(await(await C()).transaction.submit.simple({senderAuthenticator:w,transaction:Q})).hash}catch(N){throw new V.SwapKitError("toolbox_aptos_broadcast_error",N)}}async function G(w){let Q=await B(w);return q({senderAuthenticator:Q,transaction:w})}return{broadcastTransaction:q,createTransaction:X,estimateTransactionFee:_,getAddress:H,getBalance:A,signAndBroadcastTransaction:G,signTransaction:B,transfer:U,validateAddress:uo}}function A0({provider:n}){return async function({assetValue:T,recipient:o}){if(!uo(o))throw new V.SwapKitError("core_transaction_invalid_recipient_address");let{AccountAddress:f}=await import("@aptos-labs/ts-sdk");if(T.isGasAsset)return(await n.signAndSubmitTransaction({arguments:[f.from(o).toString(),T.getBaseValue("string")],function:Lo.TRANSFER,type:"entry_function_payload",type_arguments:[]})).hash;let t=T.address;if(!t)throw new V.SwapKitError("toolbox_aptos_missing_asset_type");return(await n.signAndSubmitTransaction({arguments:[t,f.from(o).toString(),T.getBaseValue("string")],function:Lo.FUNGIBLE_STORE_TRANSFER,type:"entry_function_payload",type_arguments:[Lo.FUNGIBLE_ASSET_METADATA]})).hash}}var V,Qo,Lo,pH;var _0=p(()=>{V=require("@swapkit/helpers"),Qo=require("ts-pattern"),Lo={COIN_TYPE:"0x1::aptos_coin::AptosCoin",FUNGIBLE_ASSET_METADATA:"0x1::fungible_asset::Metadata",FUNGIBLE_STORE_TRANSFER:"0x1::primary_fungible_store::transfer",TRANSFER:"0x1::aptos_account::transfer"},pH=/^[0-9a-fA-F]+$/});var by={};Mn(by,{validateAptosAddress:()=>uo,getAptosToolbox:()=>H0,createAptosExtensionTransfer:()=>A0});module.exports=Jn(by);var vy=p(()=>{_0()});function w0(){function n(){let y=Date.now(),T=TT||y;return TT=T,y>TT?y:T+1}return kH+n().toString(36)}function xn(n){return async function(T,o=!0){let f=await U0.SwapKitApi.getChainBalance({address:T,chain:n,scamFilter:o}),{baseDecimal:t}=Cy.getChainConfig(n),C=f.map(({identifier:A,value:_,decimal:X})=>{return new Cy.AssetValue({decimal:X||t,identifier:A,value:_})});if(!C.some((A)=>A.isGasAsset))return[Cy.AssetValue.from({chain:n}),...C];return C}}var Cy,U0,kH,TT=0;var dn=p(()=>{Cy=require("@swapkit/helpers"),U0=require("@swapkit/helpers/api"),kH=typeof process<"u"&&process.pid?process.pid.toString(36):""});function Hy(n){return{getBalance:xn(n)}}function uH(n){return n}var Vy=p(()=>{dn()});function G0(n){return new Zo.JsonRpcProvider(n)}async function _T(n,y){return G0(y||await g.getRPCUrl(n))}function Ay(n){return n>0n?`0x${n.toString(16)}`:"0x0"}function UT(n){let{explorerUrl:y,chainIdHex:T,rpcUrls:o}=g.getChainConfig(n);return function(){return n!==g.Chain.Ethereum?{...PH({chain:n}),blockExplorerUrls:[y],chainId:T,rpcUrls:o}:void 0}}function wT(n){return![g.Chain.Adi,g.Chain.Arbitrum,g.Chain.BinanceSmartChain].includes(n)}function PH({chain:n}){let{name:y,nativeCurrency:T,baseDecimal:o}=g.getChainConfig(n);return AT.match(n).with(g.Chain.Arbitrum,()=>({chainName:"Arbitrum One",nativeCurrency:{decimals:o,name:"Ethereum",symbol:g.Chain.Ethereum}})).with(g.Chain.Aurora,()=>({chainName:"Aurora Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:g.Chain.Ethereum}})).with(g.Chain.Avalanche,()=>({chainName:"Avalanche Network",nativeCurrency:{decimals:o,name:"Avalanche",symbol:n}})).with(g.Chain.Base,()=>({chainName:"Base Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:g.Chain.Ethereum}})).with(g.Chain.Berachain,()=>({chainName:"Berachain",nativeCurrency:{decimals:o,name:"Berachain",symbol:"BERA"}})).with(g.Chain.XLayer,()=>({chainName:"X Layer",nativeCurrency:{decimals:o,name:"OKB",symbol:"OKB"}})).with(g.Chain.BinanceSmartChain,()=>({chainName:"BNB Smart Chain Mainnet",nativeCurrency:{decimals:o,name:"Binance Coin",symbol:"BNB"}})).with(g.Chain.Gnosis,()=>({chainName:"Gnosis",nativeCurrency:{decimals:o,name:"xDAI",symbol:"XDAI"}})).with(g.Chain.Optimism,()=>({chainName:"OP Mainnet",nativeCurrency:{decimals:o,name:"Ethereum",symbol:g.Chain.Ethereum}})).with(g.Chain.Polygon,()=>({chainName:"Polygon Mainnet",nativeCurrency:{decimals:o,name:"Polygon",symbol:g.Chain.Polygon}})).otherwise(()=>({chainName:y,nativeCurrency:{decimals:o,name:T,symbol:T}}))}async function qT(n,y){if(!("authorize"in n))throw Error("Signer does not support EIP-7702 authorization. Requires ethers.js v6.14+");let T={...y,nonce:y.nonce!==void 0?BigInt(y.nonce):void 0};return await n.authorize(T)}function l0(n,y){let T=y!==void 0?`index ${y}: `:"",o=(f,t)=>{throw new g.SwapKitError({errorKey:"toolbox_evm_invalid_eip7702_authorization",info:{field:f,message:`${T}${t}`}})};AT.match(n).when(({chainId:f})=>typeof f!=="bigint",()=>o("chainId","chainId must be a bigint")).when(({address:f})=>!IH(f),()=>o("address","address must be a valid checksummed address")).when(({nonce:f})=>typeof f!=="bigint"||f<0n,()=>o("nonce","nonce must be a non-negative bigint")).when(({signature:f})=>!f,()=>o("signature","signature is required")).when(({signature:f})=>typeof f?.yParity!=="number"||![0,1].includes(f.yParity),()=>o("signature.yParity","yParity must be 0 or 1")).when(({signature:f})=>!q0(f?.r),()=>o("signature.r","r must be a 32-byte hex string")).when(({signature:f})=>!q0(f?.s),()=>o("signature.s","s must be a 32-byte hex string")).otherwise(()=>{})}function X0(n){return[{key:"name",type:"string"},{key:"version",type:"string"},{key:"chainId",type:"uint256"},{key:"verifyingContract",type:"address"},{key:"salt",type:"bytes32"}].filter(({key:y})=>n[y]!=null).map(({key:y,type:T})=>({name:y,type:T}))}function tT(n){return n.charAt(0).toUpperCase()+n.slice(1)}function CT(n,y){if(n.isTuple()&&n.components){let T=tT(n.name);return y[T]=n.components.map((o)=>({name:o.name,type:CT(o,y)})),T}if(n.isArray()){let T=n.arrayChildren;if(T?.isTuple()&&T.components){let o=tT(n.name.replace(/s$/,""));return y[o]=T.components.map((f)=>({name:f.name,type:CT(f,y)})),`${o}[]`}return`${T?.type??"bytes"}[]`}return n.type}function HT(n,y){if(typeof n==="bigint")return n;if(y?.isTuple()&&typeof n?.toObject==="function"){let T=n.toObject(),o={};for(let[f,t]of(y.components??[]).entries())o[t.name]=HT(T[t.name]??n[f],t);return o}if(Array.isArray(n)){let T=y?.arrayChildren;return n.map((o)=>HT(o,T??void 0))}return n}function $H({chain:n,abi:y,data:T,to:o}){let t=new Zo.Interface(y).parseTransaction({data:T});if(!t)throw new g.SwapKitError({errorKey:"toolbox_evm_invalid_params",info:{error:"Could not decode calldata"}});let C={},H=tT(t.name);C[H]=t.fragment.inputs.map((U)=>({name:U.name,type:CT(U,C)}));let A={};for(let[U,q]of t.fragment.inputs.entries())A[q.name]=HT(t.args[U],q);let{chainId:_}=g.getChainConfig(n),X={chainId:Number(_),verifyingContract:Zo.getAddress(o)},B=X0(X);return{domain:X,message:A,primaryType:H,types:{EIP712Domain:B,...C}}}function GT(n,y){if(!Array.isArray(n)||n.length===0)throw new g.SwapKitError({errorKey:"toolbox_evm_invalid_eip7702_authorization",info:{message:"EIP-7702 transactions require at least one authorization"}});for(let[T,o]of n.entries())if(l0(o,T),y!==void 0&&o.chainId!==y)throw new g.SwapKitError({errorKey:"toolbox_evm_invalid_eip7702_authorization",info:{field:"chainId",message:`index ${T}: authorization chainId (${o.chainId}) does not match transaction chainId (${y})`}})}var g,Zo,AT,q0=(n)=>typeof n==="string"&&/^0x[a-fA-F0-9]{64}$/.test(n),IH=(n)=>{try{return typeof n==="string"&&!!Zo.getAddress(n)}catch{return!1}};var _y=p(()=>{g=require("@swapkit/helpers"),Zo=require("ethers"),AT=require("ts-pattern")});var W0;var B0=p(()=>{W0=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"blockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBlockNumber",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryAggregate",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryBlockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"}]});function Io({chain:n=x.Chain.Ethereum,provider:y,signer:T,isEIP1559Compatible:o=!0}){return{approve:KH({chain:n,isEIP1559Compatible:o,provider:y,signer:T}),approvedAmount:Q0({chain:n,provider:y}),broadcastTransaction:y.broadcastTransaction,call:LT({chain:n,isEIP1559Compatible:o,provider:y,signer:T}),createApprovalTx:hH({chain:n,provider:y,signer:T}),createContract:WT({chain:n,provider:y}),createContractTxObject:Jo({chain:n,provider:y}),createTransaction:lT({chain:n,provider:y,signer:T}),createTransferTx:lT({chain:n,provider:y,signer:T}),EIP1193SendTransaction:Eo(y),estimateCall:Z0({provider:y,signer:T}),estimateGasLimit:cH({chain:n,provider:y,signer:T}),estimateGasPrices:Yo({chain:n,isEIP1559Compatible:o,provider:y}),estimateTransactionFee:mH({chain:n,isEIP1559Compatible:o,provider:y}),getAddress:()=>{return T?T.getAddress():void 0},getBalance:Hy(n).getBalance,getNetworkParams:UT(n),isApproved:VH({chain:n,provider:y}),sendTransaction:J0({chain:n,isEIP1559Compatible:o,provider:y,signer:T}),signAuthorization:iH({signer:T}),signMessage:T?(f)=>T.signMessage(f):void 0,signTypedData:T?({domain:f,types:t,value:C})=>T.signTypedData(f,t,C):void 0,transfer:jH({chain:n,isEIP1559Compatible:o,provider:y,signer:T}),validateAddress:wy}}function wy(n){try{return pn.getAddress(n),!0}catch{return!1}}function $o(n){return n instanceof pn.BrowserProvider}function qy(n,y,T){return new pn.Contract(n,pn.Interface.from(y),T)}function WT({provider:n}){return function(T,o){return new pn.Contract(T,pn.Interface.from(o),n)}}function BT({abi:n,funcName:y}){let T=n.find((o)=>o.name===y);if(!T)throw new x.SwapKitError("toolbox_evm_no_abi_fragment",{funcName:y});return T.stateMutability&&EH.includes(T.stateMutability)}function M0(n){return pn.getAddress(n)}function Eo(n){return function({value:T,...o}){if(!$o(n))throw new x.SwapKitError("toolbox_evm_provider_not_eip1193_compatible");let{gasLimit:f,gasPrice:t,maxFeePerGas:C,maxPriorityFeePerGas:H,...A}=o;return n.send("eth_sendTransaction",[{...A,value:Ay(BigInt(T||0))}])}}function L0(n,y){let T=bo(n,y);if(T)return pn.getAddress(T.toLowerCase());throw new x.SwapKitError("toolbox_evm_invalid_gas_asset_address")}function bo({chain:n,symbol:y,ticker:T},o){try{let f=n===x.Chain.BinanceSmartChain&&y==="BNB"&&T==="BNB",t=n===x.Chain.Hyperevm&&y==="HYPE"&&T==="HYPE",C=n===o&&y===o&&T===o,H=vH.includes(n)&&y==="ETH"&&T==="ETH";if(C||f||t||H)return MT[o];return pn.getAddress(y.slice(T.length+1).replace(/^0X/,""))}catch{return null}}function Jo({provider:n}){return async({contractAddress:y,abi:T,funcName:o,funcParams:f=[],txOverrides:t})=>qy(y,T,n).getFunction(o).populateTransaction(...f.concat(t).filter((C)=>typeof C<"u"))}function Yo({chain:n,provider:y,isEIP1559Compatible:T=!0}){return XT.match(n).with(x.Chain.Gnosis,()=>{return async function(){try{let{gasPrice:f,maxPriorityFeePerGas:t}=await y.getFeeData();if(!f||t===null)throw new x.SwapKitError("toolbox_evm_no_fee_data");return{[x.FeeOption.Average]:{maxFeePerGas:x.applyFeeMultiplierToBigInt(f,x.FeeOption.Average),maxPriorityFeePerGas:x.applyFeeMultiplierToBigInt(t,x.FeeOption.Average)},[x.FeeOption.Fast]:{maxFeePerGas:x.applyFeeMultiplierToBigInt(f,x.FeeOption.Fast),maxPriorityFeePerGas:x.applyFeeMultiplierToBigInt(t,x.FeeOption.Fast)},[x.FeeOption.Fastest]:{maxFeePerGas:x.applyFeeMultiplierToBigInt(f,x.FeeOption.Fastest),maxPriorityFeePerGas:x.applyFeeMultiplierToBigInt(t,x.FeeOption.Fastest)}}}catch(f){throw new x.SwapKitError("toolbox_evm_gas_estimation_error",{error:f.msg??f.toString()})}}}).with(x.Chain.Arbitrum,()=>{return async function(){try{let{gasPrice:f}=await y.getFeeData();if(!f)throw new x.SwapKitError("toolbox_evm_no_fee_data");let t=f*12n/10n;return{[x.FeeOption.Average]:{gasPrice:t},[x.FeeOption.Fast]:{gasPrice:x.applyFeeMultiplierToBigInt(t,x.FeeOption.Fast)},[x.FeeOption.Fastest]:{gasPrice:x.applyFeeMultiplierToBigInt(t,x.FeeOption.Fastest)}}}catch(f){throw new x.SwapKitError("toolbox_evm_gas_estimation_error",{error:f.msg??f.toString()})}}}).otherwise(()=>{return async function(){try{let{maxFeePerGas:f,maxPriorityFeePerGas:t,gasPrice:C}=await y.getFeeData();if(T){if(f===null||t===null)throw new x.SwapKitError("toolbox_evm_no_fee_data");return{[x.FeeOption.Average]:{maxFeePerGas:f,maxPriorityFeePerGas:t},[x.FeeOption.Fast]:{maxFeePerGas:x.applyFeeMultiplierToBigInt(f,x.FeeOption.Fast),maxPriorityFeePerGas:x.applyFeeMultiplierToBigInt(t,x.FeeOption.Fast)},[x.FeeOption.Fastest]:{maxFeePerGas:x.applyFeeMultiplierToBigInt(f,x.FeeOption.Fastest),maxPriorityFeePerGas:x.applyFeeMultiplierToBigInt(t,x.FeeOption.Fastest)}}}if(!C)throw new x.SwapKitError("toolbox_evm_no_gas_price");return{[x.FeeOption.Average]:{gasPrice:C},[x.FeeOption.Fast]:{gasPrice:x.applyFeeMultiplierToBigInt(C,x.FeeOption.Fast)},[x.FeeOption.Fastest]:{gasPrice:x.applyFeeMultiplierToBigInt(C,x.FeeOption.Fastest)}}}catch(f){throw new x.SwapKitError("toolbox_evm_gas_estimation_error",{error:f.msg??f.toString()})}}})}function LT({provider:n,isEIP1559Compatible:y,signer:T,chain:o}){return async function({callProvider:t,contractAddress:C,abi:H,funcName:A,funcParams:_=[],txOverrides:X={},feeOption:B=x.FeeOption.Fast}){let U=t||n;if(!C)throw new x.SwapKitError("toolbox_evm_invalid_params",{error:"contractAddress must be provided"});let q=BT({abi:H,funcName:A});if(q&&$o(U)&&T){let Q=Jo({chain:o,provider:U}),N=X?.from||await T?.getAddress(),Y=await Q({abi:H,contractAddress:C,funcName:A,funcParams:_,txOverrides:{...X,from:N}});return Eo(U)(Y)}let G=qy(C,H,U);if(q){if(!T)throw new x.SwapKitError("toolbox_evm_no_signer");let Q=X?.from||await T.getAddress();if(!Q)throw new x.SwapKitError("toolbox_evm_no_signer_address");let N=G.connect(T),Y=Yo({chain:o,isEIP1559Compatible:y,provider:n}),{maxFeePerGas:z,maxPriorityFeePerGas:J,gasPrice:l}=(await Y())[B],M=await G.getFunction(A).estimateGas(..._,X),W=await N[A](..._,{...X,gasLimit:M,gasPrice:l,maxFeePerGas:z,maxPriorityFeePerGas:J,nonce:X?.nonce||await U.getTransactionCount(Q)});return typeof W?.hash==="string"?W?.hash:W}let w=await G[A]?.(..._);return typeof w?.hash==="string"?w?.hash:w}}function Q0({provider:n,chain:y}){return function({assetAddress:o,spenderAddress:f,from:t}){return LT({chain:y,isEIP1559Compatible:!0,provider:n})({abi:Po.erc20ABI,contractAddress:o,funcName:"allowance",funcParams:[t,f]})}}function VH({provider:n,chain:y}){return async function({assetAddress:o,spenderAddress:f,from:t,amount:C=Uy}){let H=await Q0({chain:y,provider:n})({assetAddress:o,from:t,spenderAddress:f});return x.SwapKitNumber.fromBigInt(H).gte(x.SwapKitNumber.fromBigInt(BigInt(C)))}}function KH({signer:n,isEIP1559Compatible:y=!0,provider:T,chain:o}){return async function({assetAddress:t,spenderAddress:C,feeOptionKey:H=x.FeeOption.Fast,amount:A,gasLimitFallback:_,from:X,nonce:B}){let U=[C,BigInt(A||Uy)],q=await n?.getAddress()||X,G={abi:Po.erc20ABI,contractAddress:t,funcName:"approve",funcParams:U,signer:n,txOverrides:{from:q}};if($o(T)){let Q=Jo({chain:o,provider:T}),N=Eo(T),Y=await Q(G);return N(Y)}return LT({chain:o,isEIP1559Compatible:y,provider:T,signer:n})({...G,feeOption:H,funcParams:U,txOverrides:{from:q,gasLimit:_?BigInt(_.toString()):void 0,nonce:B}})}}function jH({signer:n,isEIP1559Compatible:y=!0,provider:T}){return async function({assetValue:f,memo:t,recipient:C,feeOptionKey:H=x.FeeOption.Fast,sender:A,..._}){let{hexlify:X,toUtf8Bytes:B}=await import("ethers"),U=f.getBaseValue("bigint"),q=f.chain,G=A||await n?.getAddress(),w=J0({chain:q,isEIP1559Compatible:y,provider:T,signer:n});if(!G)throw new x.SwapKitError("toolbox_evm_no_from_address");if(f.isGasAsset){let l={..._,data:X(B(t||"")),feeOptionKey:H,from:G,to:C,value:U};return w(l)}if(!bo(f,q))throw new x.SwapKitError("toolbox_evm_no_contract_address");let{maxFeePerGas:N,maxPriorityFeePerGas:Y,gasPrice:z}=(await Yo({chain:q,isEIP1559Compatible:y,provider:T})())[H],J=await lT({chain:q,provider:T,signer:n})({assetValue:f,data:X(B(t||"")),gasPrice:z,maxFeePerGas:N,maxPriorityFeePerGas:Y,memo:t,recipient:C,sender:G});return w(J)}}function Z0({provider:n,signer:y}){return function({contractAddress:o,abi:f,funcName:t,funcParams:C=[],txOverrides:H}){if(!o)throw new x.SwapKitError("toolbox_evm_no_contract_address");let A=qy(o,f,n);return y?A.connect(y).getFunction(t).estimateGas(...C,H):A.getFunction(t).estimateGas(...C,H)}}function cH({provider:n,signer:y}){return async function({assetValue:o,recipient:f,memo:t,data:C,sender:H,funcName:A,funcParams:_,txOverrides:X}){let B=o.bigIntValue,U=o.isGasAsset?null:bo(o,o.chain);if(U&&A)return Z0({provider:n,signer:y})({abi:Po.erc20ABI,contractAddress:U,funcName:A,funcParams:_,txOverrides:X});let{hexlify:q,toUtf8Bytes:G}=await import("ethers");return n.estimateGas({data:C?C:t?q(G(t)):void 0,from:H,to:f,value:B})}}function iH({signer:n}){if(!n)return;return(y)=>qT(n,y)}function J0({provider:n,signer:y,isEIP1559Compatible:T=!0,chain:o}){return async function({feeOptionKey:t=x.FeeOption.Fast,...C}){let{from:H,to:A,data:_,value:X,...B}=C;if(!y)throw new x.SwapKitError("toolbox_evm_no_signer");if(!A)throw new x.SwapKitError("toolbox_evm_no_to_address");let U={...B,data:_||"0x",from:H,to:A,value:BigInt(X||0)};if($o(n))return Eo(n)(U);let q=H||await y.getAddress(),G=C.nonce||await n.getTransactionCount(q),w=(await n.getNetwork()).chainId,Q=ZT(U,T);if(Q==="eip7702")GT(U.authorizations||[],w);let N=XT.match(Q).with("eip7702",()=>4).with("eip1559",()=>2).otherwise(()=>0),Y={...U,chainId:w,nonce:G,type:N,...Q==="eip7702"&&{authorizationList:U.authorizations}},z=Yo({chain:o,isEIP1559Compatible:T,provider:n}),l=Q!=="legacy"&&!(U.maxFeePerGas&&U.maxPriorityFeePerGas)||!U.gasPrice?Object.entries((await z())[t]).reduce((W,[Z,D])=>({...W,[Z]:Ay(BigInt(D))}),{}):{},M;try{M=Ay(U.gasLimit||await n.estimateGas(Y)*11n/10n)}catch(W){throw new x.SwapKitError("toolbox_evm_error_estimating_gas_limit",{error:W})}try{let W={...Y,gasLimit:M,...l};try{return(await y.sendTransaction(W)).hash}catch{let Z=await y.signTransaction({...W,from:q});return(await n.broadcastTransaction(Z)).hash}}catch(W){throw new x.SwapKitError("toolbox_evm_error_sending_transaction",{error:W})}}}function lT({provider:n,signer:y}){return async function({assetValue:o,memo:f,recipient:t,data:C,sender:H,maxFeePerGas:A,maxPriorityFeePerGas:_,gasPrice:X,...B}){let U=o.getBaseValue("bigint"),q=o.chain,G=H||await y?.getAddress();if(!G)throw new x.SwapKitError("toolbox_evm_no_from_address");if(x.isGasAsset(o)){let{hexlify:N,toUtf8Bytes:Y}=await import("ethers");return{...B,data:C||N(Y(f||"")),from:G,to:t,value:U}}let w=bo(o,q);if(!w)throw new x.SwapKitError("toolbox_evm_no_contract_address");return Jo({chain:o.chain,provider:n})({abi:Po.erc20ABI,contractAddress:w,funcName:"transfer",funcParams:[t,U],txOverrides:{from:G,gasPrice:X,maxFeePerGas:A,maxPriorityFeePerGas:_}})}}function hH({provider:n,signer:y,chain:T}){return async function({assetAddress:f,spenderAddress:t,amount:C,from:H}){let A=await y?.getAddress()||H,_=Jo({chain:T,provider:n}),X=["bigint","number"].includes(typeof C)?C:C||Uy;return await _({abi:Po.erc20ABI,contractAddress:f,funcName:"approve",funcParams:[t,BigInt(X)],txOverrides:{from:A}})}}function mH({provider:n,isEIP1559Compatible:y=!0,chain:T}){return async function({feeOption:f=x.FeeOption.Fast,...t}){let H=await Yo({chain:T,isEIP1559Compatible:y,provider:n})(),A=await n.estimateGas(t),_=x.AssetValue.from({chain:T}),{gasPrice:X,maxFeePerGas:B,maxPriorityFeePerGas:U}=H[f];if(!y&&X)return _.set(x.SwapKitNumber.fromBigInt(X*A,_.decimal));if(B&&U){let q=(B+U)*A;return _.set(x.SwapKitNumber.fromBigInt(q,_.decimal))}throw new x.SwapKitError("toolbox_evm_no_gas_price")}}var x,Po,pn,XT,Uy,EH,bH,MT,vH,Ky=(n)=>n.type===4||(n.authorizations?.length??0)>0,QT=(n)=>!Ky(n)&&(n.type===2||!!n.maxFeePerGas||!!n.maxPriorityFeePerGas),ZT=(n,y=!0)=>{if(Ky(n))return"eip7702";if(QT(n)||y)return"eip1559";return"legacy"};var jy=p(()=>{Vy();_y();x=require("@swapkit/helpers"),Po=require("@swapkit/helpers/contracts"),pn=require("ethers"),XT=require("ts-pattern"),Uy=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");EH=["payable","nonpayable"];bH=x.EVMChains.reduce((n,y)=>{return n[y]="0x0000000000000000000000000000000000000000",n},{}),MT={...bH,[x.Chain.Optimism]:"0x4200000000000000000000000000000000000042",[x.Chain.Polygon]:"0x0000000000000000000000000000000000001010"},vH=[x.Chain.Arbitrum,x.Chain.Aurora,x.Chain.Base,x.Chain.Optimism]});function cy(n){let y=wn(Cn.Chain.Ethereum)(n);async function T(o,f="0x5ba1e12693dc8f9c48aad8770482f4739beed696",t="aggregate",C=Cn.FeeOption.Fast){let H=await y.createContractTxObject({abi:W0,contractAddress:f,funcName:t,funcParams:[o]});return y.sendTransaction({...H,feeOptionKey:C})}return{...y,multicall:T}}function wn(n){return function({provider:T,...o}){let f=wT(n),t=Gy.match(o).with({phrase:Gy.P.string},({phrase:H})=>Y0.HDNodeWallet.fromPhrase(H).connect(T)).with({signer:Gy.P.any},({signer:H})=>H).otherwise(()=>{return});return Io({chain:n,isEIP1559Compatible:f,provider:T,signer:t})}}var Cn,Y0,Gy,iy,hy,my,ry,gy,dy,ay,N0,sy,ey,nf,of,yf,ff,ly,Tf,tf,Cf,Hf;var JT=p(()=>{B0();_y();jy();Cn=require("@swapkit/helpers"),Y0=require("ethers"),Gy=require("ts-pattern");iy=wn(Cn.Chain.Adi),hy=wn(Cn.Chain.Arbitrum),my=wn(Cn.Chain.Aurora),ry=wn(Cn.Chain.Avalanche),gy=wn(Cn.Chain.Base),dy=wn(Cn.Chain.Berachain),ay=wn(Cn.Chain.BinanceSmartChain),N0=wn(Cn.Chain.Botanix),sy=wn(Cn.Chain.Core),ey=wn(Cn.Chain.Corn),nf=wn(Cn.Chain.Cronos),of=wn(Cn.Chain.Gnosis),yf=wn(Cn.Chain.Hyperevm),ff=wn(Cn.Chain.Polygon),ly=wn(Cn.Chain.Sonic),Tf=wn(Cn.Chain.Unichain),tf=wn(Cn.Chain.XLayer),Cf=wn(Cn.Chain.Monad),Hf=wn(Cn.Chain.MegaETH)});var z0;var D0=p(()=>{z0=[{inputs:[{internalType:"address",name:"_owner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"DecimalsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"GasPriceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"L1BaseFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"OverheadUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"ScalarUpdated",type:"event"},{inputs:[],name:"decimals",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"gasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1Fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1GasUsed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"l1BaseFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"overhead",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"scalar",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_decimals",type:"uint256"}],name:"setDecimals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_gasPrice",type:"uint256"}],name:"setGasPrice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_baseFee",type:"uint256"}],name:"setL1BaseFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_overhead",type:"uint256"}],name:"setOverhead",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_scalar",type:"uint256"}],name:"setScalar",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"}]});function YT(n){return new Af.Contract(gH,z0,n)}function O0(n){return async function(){let T=YT(n);if(T&&"l1BaseFee"in T)return await T?.l1BaseFee();return}}function R0(n){return async function({from:T,to:o,nonce:f,...t}){let{Transaction:C}=await import("ethers");if(!o)throw new Hn.SwapKitError("toolbox_evm_invalid_transaction",{error:"Missing to address"});return C.from({...t,authorizationList:t.authorizationList,nonce:f?f:T?await n.getTransactionCount(T):0,to:o}).serialized}}function x0(n){return async function(T){let o=YT(n),f=await R0(n)(T);if(o&&"getL1Fee"in o)return o.getL1Fee(f)}}function F0(n){return async function(T){let f=(await n.getFeeData()).gasPrice??0n,t=await n.estimateGas(T);return f*t}}function dH(n){return async function(T){let o=await x0(n)(T)??0n,f=await F0(n)(T);return o+f}}function aH(n){return async function(T){let o=YT(n),f=await R0(n)(T);if(o&&"getL1GasUsed"in o)return o.getL1GasUsed(f)}}function sH(n){return async function(){try{let{maxFeePerGas:T,maxPriorityFeePerGas:o,gasPrice:f}=await n.getFeeData(),t=await O0(n)(),C=f;if(!(T&&o))throw new Hn.SwapKitError("toolbox_evm_no_fee_data");return{[Hn.FeeOption.Average]:{gasPrice:C,l1GasPrice:t,maxFeePerGas:T,maxPriorityFeePerGas:o},[Hn.FeeOption.Fast]:{gasPrice:Hn.applyFeeMultiplierToBigInt(C,Hn.FeeOption.Fast),l1GasPrice:Hn.applyFeeMultiplierToBigInt(t||0n,Hn.FeeOption.Fast),maxFeePerGas:T,maxPriorityFeePerGas:Hn.applyFeeMultiplierToBigInt(o,Hn.FeeOption.Fast)},[Hn.FeeOption.Fastest]:{gasPrice:Hn.applyFeeMultiplierToBigInt(C,Hn.FeeOption.Fastest),l1GasPrice:Hn.applyFeeMultiplierToBigInt(t||0n,Hn.FeeOption.Fastest),maxFeePerGas:T,maxPriorityFeePerGas:Hn.applyFeeMultiplierToBigInt(o,Hn.FeeOption.Fastest)}}}catch(T){throw new Hn.SwapKitError("toolbox_evm_gas_estimation_error",{error:T.msg??T.toString()})}}}function _f({provider:n,...y}){let T=Xy.match(y).with({phrase:Xy.P.string},({phrase:t})=>Af.HDNodeWallet.fromPhrase(t).connect(n)).with({signer:Xy.P.any},({signer:t})=>t).otherwise(()=>{return}),o=Io({provider:n,signer:T}),f=O0(n);return{...o,estimateGasPrices:sH(n),estimateL1Gas:aH(n),estimateL1GasCost:x0(n),estimateL2GasCost:F0(n),estimateTotalGasCost:dH(n),getBalance:Hy(Hn.Chain.Optimism).getBalance,getL1GasPrice:f}}var Hn,Af,Xy,gH="0x420000000000000000000000000000000000000f";var NT=p(()=>{Vy();D0();jy();Hn=require("@swapkit/helpers"),Af=require("ethers"),Xy=require("ts-pattern")});var k0={};Mn(k0,{validateEVMAddress:()=>wy,toChecksumAddress:()=>M0,isStateChangingCall:()=>BT,isEIP7702Transaction:()=>Ky,isEIP1559Transaction:()=>QT,isBrowserProvider:()=>$o,getTokenAddress:()=>bo,getEvmToolboxAsync:()=>p0,getEvmToolbox:()=>zT,getEstimateGasPrices:()=>Yo,getEVMTxType:()=>ZT,getEIP1193SendTransaction:()=>Eo,getCreateContractTxObject:()=>Jo,getCreateContract:()=>WT,getChecksumAddressFromAsset:()=>L0,createContract:()=>qy,XLayerToolbox:()=>tf,UNIToolbox:()=>Tf,SONICToolbox:()=>ly,OPToolbox:()=>_f,MONADToolbox:()=>Cf,MEGAETHToolbox:()=>Hf,MAX_APPROVAL:()=>Uy,MATICToolbox:()=>ff,HYPEREVMToolbox:()=>yf,GNOToolbox:()=>of,ETHToolbox:()=>cy,ContractAddress:()=>MT,CROToolbox:()=>nf,CORNToolbox:()=>ey,COREToolbox:()=>sy,BotanixToolbox:()=>N0,BaseEVMToolbox:()=>Io,BSCToolbox:()=>ay,BERAToolbox:()=>dy,BASEToolbox:()=>gy,AVAXToolbox:()=>ry,AURORAToolbox:()=>my,ARBToolbox:()=>hy,ADIToolbox:()=>iy});function zT(n,y){return S0.match(n).with(Un.Chain.Adi,()=>iy(y)).with(Un.Chain.Arbitrum,()=>hy(y)).with(Un.Chain.Aurora,()=>my(y)).with(Un.Chain.Avalanche,()=>ry(y)).with(Un.Chain.Base,()=>gy(y)).with(Un.Chain.Berachain,()=>dy(y)).with(Un.Chain.BinanceSmartChain,()=>ay(y)).with(Un.Chain.Botanix,()=>ly(y)).with(Un.Chain.Core,()=>sy(y)).with(Un.Chain.Corn,()=>ey(y)).with(Un.Chain.Cronos,()=>nf(y)).with(Un.Chain.Ethereum,()=>cy(y)).with(Un.Chain.Gnosis,()=>of(y)).with(Un.Chain.Hyperevm,()=>yf(y)).with(Un.Chain.Optimism,()=>_f(y)).with(Un.Chain.Polygon,()=>ff(y)).with(Un.Chain.Sonic,()=>ly(y)).with(Un.Chain.Unichain,()=>Tf(y)).with(Un.Chain.XLayer,()=>tf(y)).with(Un.Chain.Monad,()=>Cf(y)).with(Un.Chain.MegaETH,()=>Hf(y)).exhaustive()}async function p0(n,y){let T={...y,provider:y?.provider||await _T(n)};return zT(n,T)}var Un,S0;var DT=p(()=>{_y();JT();NT();Un=require("@swapkit/helpers"),S0=require("ts-pattern");jy();JT();NT()});var u0;var P0=p(()=>{((T)=>{T.Test="goerli";T.Main="homestead"})(u0||={})});var I0={};Mn(I0,{validateEVMAddress:()=>wy,validateAuthorizations:()=>GT,validateAuthorization:()=>l0,toHexString:()=>Ay,toChecksumAddress:()=>M0,signAuthorization:()=>qT,parseEIP712FromEVMTx:()=>$H,isStateChangingCall:()=>BT,isEIP7702Transaction:()=>Ky,isEIP1559Transaction:()=>QT,isBrowserProvider:()=>$o,getTokenAddress:()=>bo,getProviderSync:()=>G0,getProvider:()=>_T,getNetworkParams:()=>UT,getIsEIP1559Compatible:()=>wT,getEvmToolboxAsync:()=>p0,getEvmToolbox:()=>zT,getEvmApi:()=>Hy,getEstimateGasPrices:()=>Yo,getEVMTxType:()=>ZT,getEIP1193SendTransaction:()=>Eo,getCreateContractTxObject:()=>Jo,getCreateContract:()=>WT,getChecksumAddressFromAsset:()=>L0,createCustomEvmApi:()=>uH,createContract:()=>qy,buildEIP712DomainType:()=>X0,XLayerToolbox:()=>tf,UNIToolbox:()=>Tf,SONICToolbox:()=>ly,OPToolbox:()=>_f,MONADToolbox:()=>Cf,MEGAETHToolbox:()=>Hf,MAX_APPROVAL:()=>Uy,MATICToolbox:()=>ff,HYPEREVMToolbox:()=>yf,GNOToolbox:()=>of,EthNetwork:()=>u0,ETHToolbox:()=>cy,ContractAddress:()=>MT,CROToolbox:()=>nf,CORNToolbox:()=>ey,COREToolbox:()=>sy,BotanixToolbox:()=>N0,BaseEVMToolbox:()=>Io,BSCToolbox:()=>ay,BERAToolbox:()=>dy,BASEToolbox:()=>gy,AVAXToolbox:()=>ry,AURORAToolbox:()=>my,ARBToolbox:()=>hy,ADIToolbox:()=>iy});module.exports=Jn(I0);var OT=p(()=>{Vy();_y();DT();P0()});async function xT(n,y){let T=await fetch(`${j0}${n}`,{...y,headers:{project_id:K0,...y?.headers}});if(!T.ok)throw Error(`Blockfrost API error: ${T.status} ${T.statusText}`);return T.json()}async function c0(n){try{return await xT(`/addresses/${n}/utxos`)}catch{return[]}}async function nA(){return(await xT("/blocks/latest")).slot}async function oA(){let n=await xT("/epochs/latest/parameters"),y={PlutusScriptV1:n.cost_models.PlutusV1?Object.values(n.cost_models.PlutusV1):[],PlutusScriptV2:n.cost_models.PlutusV2?Object.values(n.cost_models.PlutusV2):[],PlutusScriptV3:n.cost_models.PlutusV3?Object.values(n.cost_models.PlutusV3):[]};return{collateralPercent:new Fn.default(n.collateral_percent),languageView:y,lovelacePerUtxoWord:new Fn.default(0),maxValueSize:Number.parseInt(n.max_val_size,10),minFeeA:new Fn.default(n.min_fee_a),minFeeB:new Fn.default(n.min_fee_b),minFeeRefScriptCostPerByte:new Fn.default(15),priceMem:new Fn.default(n.price_mem),priceSteps:new Fn.default(n.price_step),stakeKeyDeposit:new Fn.default(2000000),utxoCostPerByte:new Fn.default(n.coins_per_utxo_size)}}async function E0(n){let y=await fetch(`${j0}/tx/submit`,{body:Buffer.from(n,"hex"),headers:{"Content-Type":"application/cbor",project_id:K0},method:"POST"});if(!y.ok){let T=await y.text();throw Error(`Transaction submission failed: ${T}`)}return y.json()}function yA(n,y){return n.map((T)=>{let o=T.amount.find((C)=>C.unit==="lovelace"),f=o?new Fn.default(o.quantity):new Fn.default(0),t=T.amount.filter((C)=>C.unit!=="lovelace").map((C)=>({amount:new Fn.default(C.quantity),assetName:C.unit.slice(56),policyId:C.unit.slice(0,56)}));return{address:y,amount:f,index:T.output_index,tokens:t,txId:T.tx_hash}})}async function fA(n){try{let y=await c0(n),T=0n,o=new Map;for(let C of y){if(!C.amount||!Array.isArray(C.amount))continue;for(let H of C.amount){let{unit:A,quantity:_}=H;if(A==="lovelace")T+=BigInt(_);else{let X=o.get(A)||0n;o.set(A,X+BigInt(_))}}}let f=[],{baseDecimal:t}=An.getChainConfig(An.Chain.Cardano);if(T>0n)f.push(An.AssetValue.from({chain:An.Chain.Cardano,fromBaseDecimal:t,value:T.toString()}));for(let[C,H]of o)f.push(An.AssetValue.from({asset:`${An.Chain.Cardano}.${C}`,value:H.toString()}));if(f.length===0)return[An.AssetValue.from({chain:An.Chain.Cardano})];return f}catch(y){let T=y instanceof Error?y.message:String(y);return console.error(`Cardano balance fetch error: ${T}`),[An.AssetValue.from({chain:An.Chain.Cardano})]}}function i0(n){if(!n||typeof n!=="string")return!1;try{let y=b0.bech32.decode(n,120);return y.prefix==="addr"||y.prefix==="addr_test"}catch{return!1}}async function TA(n,y=0,T=0){let o=await v0.mnemonicToSeed(n,""),t=(await V0.Bip32PrivateKey.fromEntropy(Buffer.from(o.slice(0,64)))).derive(RT+1852).derive(RT+1815).derive(RT+y),C=t.derive(0).derive(T),H=C.toBip32PublicKey().toPublicKey().toBytes(),A=Nn.crypto.hash28(H),X=t.derive(2).derive(0).toBip32PublicKey().toPublicKey().toBytes(),B=Nn.crypto.hash28(X),U={hash:A,type:Nn.types.HashType.ADDRESS},q={hash:B,type:Nn.types.HashType.ADDRESS},w=new Nn.address.BaseAddress(eH,U,q).getBech32(),Q=C.toPrivateKey();return{getAddress:()=>w,publicKey:H,publicKeyHash:A,signTransaction:async(N)=>{try{let Y=await import("@stricahq/cbors"),z=Buffer.from(N,"hex"),J=Y.Decoder.decode(z),[l,M,W,Z]=J.value,D=Y.Encoder.encode(l),L=Nn.crypto.hash32(D),O=Q.sign(L),R=M instanceof Map?M:new Map,k=R.get($0)||[];k.push([H,O]),R.set($0,k);let u=[l,R,W,Z];return Y.Encoder.encode(u).toString("hex")}catch(Y){throw new An.SwapKitError("toolbox_cardano_sign_transaction_failed",{message:String(Y)})}}}}function tA(n){let y,T,o;async function f(){if(!o)o=await oA();return o}async function t(){if(y!==void 0)return y;if(n&&"phrase"in n&&n.phrase){let q=n.index??0;return y=await TA(n.phrase,0,q),y}if(n&&"signer"in n&&n.signer)return y=n.signer,y;return}async function C(){if(T)return T;let q=await t();if(!q)return"";if("getAddress"in q)return T=await q.getAddress(),T;return""}async function H(q){let G=q||await C();if(!G)throw new An.SwapKitError("core_wallet_connection_not_found");return fA(G)}async function A(q){if(q)try{let{tx:N}=await _(q),Y=N.getFee();return An.AssetValue.from({chain:An.Chain.Cardano,fromBaseDecimal:6,value:Y.toString()})}catch{}let G=await f(),w=400,Q=G.minFeeB.plus(G.minFeeA.times(w));return An.AssetValue.from({chain:An.Chain.Cardano,fromBaseDecimal:6,value:Q.toString()})}async function _({sender:q="",recipient:G,assetValue:w,memo:Q,pureLovelaceOnly:N=!1}){let Y=q||await C();if(!Y)throw new An.SwapKitError("core_wallet_connection_not_found");let[z,J,l]=await Promise.all([c0(Y),nA(),f()]),M=z.filter((tn)=>N?tn.amount.every((on)=>on.unit==="lovelace"):tn.amount.some((on)=>on.unit==="lovelace")).sort((tn,on)=>{let Zn=tn.amount.some((On)=>On.unit!=="lovelace"),Bn=on.amount.some((On)=>On.unit!=="lovelace");if(Zn===Bn)return 0;return Zn?1:-1}),W=Nn.utils.getAddressFromString(Y),Z=Nn.utils.getAddressFromString(G),D=yA(M,W),L=new Fn.default(w.getBaseValue("string")),O=[{address:Z,amount:L,tokens:[]}],R;if(Q){let tn=new Map;tn.set("msg",[Q]),R={metadata:[{data:tn,label:674}]}}let k={...l,minFeeB:l.minFeeB.plus(l.minFeeA.times(4))},K=new Nn.Transaction({protocolParams:k}).paymentTransaction({auxiliaryData:R,changeAddress:W,inputs:D,outputs:O,ttl:J+3600}),{payload:s}=K.buildTransaction();return{tx:K,unsignedTx:s}}async function X(q){let G=await t();if(!G||!("signTransaction"in G))throw new An.SwapKitError("core_wallet_connection_not_found");return G.signTransaction(q)}async function B({recipient:q,assetValue:G,memo:w}){let Q=await t();if(!Q||!("signTransaction"in Q))throw new An.SwapKitError("core_wallet_connection_not_found");let{unsignedTx:N}=await _({assetValue:G,memo:w,recipient:q,sender:await C()}),Y=await X(N);return await E0(Y)}async function U(q){let G=await X(q);return await E0(G)}return{createTransaction:_,estimateTransactionFee:A,getAddress:C,getBalance:H,signAndBroadcastTransaction:U,signTransaction:X,transfer:B,validateAddress:i0}}var b0,v0,V0,Nn,An,Fn,K0="mainnet3YT7XK6NidLPlkHxxyBB5V0WzXUOTIJS",j0="https://cardano-mainnet.blockfrost.io/api/v0",eH,RT=2147483648,$0=0;var h0=p(()=>{b0=require("@scure/base"),v0=require("@scure/bip39"),V0=require("@stricahq/bip32ed25519"),Nn=require("@stricahq/typhonjs"),An=require("@swapkit/helpers"),Fn=C0(require("bignumber.js")),eH=Nn.types.NetworkId.MAINNET});var FT={};Mn(FT,{validateCardanoAddress:()=>i0,getCardanoToolbox:()=>tA});module.exports=Jn(FT);var ST=p(()=>{h0()});function Wy(n){return hn.base64.encode(Uint8Array.from(hn.bech32.fromWords(hn.bech32.decode(n).words)))}function By(n,y="thor"){return hn.bech32.encode(y,hn.bech32.toWords(hn.base64.decode(n)))}function CA(n){return hn.base64.encode(n)}function HA(n){if(!n.match(/^[a-zA-Z0-9+/]*={0,2}$/))throw new m0.SwapKitError("toolbox_cosmos_invalid_params",{error:"Invalid base64 string format"});return hn.base64.decode(n)}var hn,m0;var pT=p(()=>{hn=require("@scure/base"),m0=require("@swapkit/helpers")});function an(n){switch(n){case b.Chain.Maya:return{amount:[],gas:"10000000000"};case b.Chain.THORChain:return{amount:[],gas:"500000000"};case b.Chain.Kujira:return d0;case b.Chain.Noble:return a0;default:return g0}}async function sn(n){let y=await import("@cosmjs/stargate"),T=y.StargateClient??y.default?.StargateClient,o=typeof window<"u"?{}:{referer:"https://sdk.swapkit.dev",referrer:"https://sdk.swapkit.dev"};return T.connect({headers:o,url:n})}async function No(n,y,T={}){let o=await import("@cosmjs/stargate"),f=o.SigningStargateClient??o.default?.SigningStargateClient,t=o.GasPrice??o.default?.GasPrice,C=typeof T==="string"?T:"0.0003uatom",H=typeof T==="string"?{}:T;return f.connectWithSigner(n,y,{gasPrice:t.fromString(C),...H})}async function uT(n,y){let T=await import("@cosmjs/stargate");return(T.SigningStargateClient??T.default?.SigningStargateClient).offline(n,y)}async function PT({sender:n,recipient:y,assetValue:T,memo:o="",feeRate:f,sequence:t,accountNumber:C}){let{chain:H,chainId:A}=T,_=await b.getRPCUrl(H),B=await(await sn(_)).getAccount(n);if(!B)throw new b.SwapKitError("toolbox_cosmos_account_not_found",{sender:n});let U=b.AssetValue.from({chain:H}),q=to(U.symbol),G=an(H),w=q&&f?{amount:[{amount:f.toString(),denom:q}],gas:G.gas}:G,Q={amount:[{amount:T.getBaseValue("string"),denom:to(T.symbol)}],fromAddress:n,toAddress:y};return{accountNumber:C??B.accountNumber,chainId:A,fee:w,memo:o,msgs:[{typeUrl:AA(H),value:Q}],sequence:t??B.sequence}}var b,kT="FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK",r0="FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM",g0,d0,a0,to=(n,y=!1)=>{if(y)return n.toLowerCase();switch(n){case"uUSK":case"USK":return kT;case"uYUM":case"YUM":return r0;case"uKUJI":case"KUJI":return"ukuji";case"ATOM":case"uATOM":return"uatom";case"uUSDC":case"USDC":return"uusdc";default:return n}},My=({symbol:n,chain:y})=>{if(y===b.Chain.Maya)return(n.toUpperCase()!=="CACAO"?n:`${b.Chain.Maya}.${n}`).toUpperCase();if(y===b.Chain.THORChain)return(["RUNE","TCY","RUJI"].includes(n.toUpperCase())?`${b.Chain.THORChain}.${n}`:n).toUpperCase();return to(n,!1)},AA=(n)=>{switch(n){case b.Chain.Maya:case b.Chain.THORChain:return"/types.MsgSend";case b.Chain.Cosmos:case b.Chain.Kujira:case b.Chain.Noble:return"/cosmos.bank.v1beta1.MsgSend";default:throw new b.SwapKitError("toolbox_cosmos_not_supported",{chain:n})}},_A,IT=(n,y)=>{let T=_A[n.toLowerCase()];if(!T)return b.AssetValue.from({asset:n,fromBaseDecimal:8,value:y});let{chain:o,asset:f,decimals:t}=T,C=o?{chain:o}:{asset:f};return b.AssetValue.from({...C,fromBaseDecimal:t,value:y})};var Ly=p(()=>{b=require("@swapkit/helpers"),g0={amount:[{amount:"500",denom:"uatom"}],gas:"200000"},d0={amount:[{amount:"1000",denom:"ukuji"}],gas:"200000"},a0={amount:[{amount:"1000",denom:"uusdc"}],gas:"200000"};_A={atom:{chain:b.Chain.Cosmos,decimals:b.getChainConfig(b.Chain.Cosmos).baseDecimal},cacao:{chain:b.Chain.Maya,decimals:10},kuji:{chain:b.Chain.Kujira,decimals:b.getChainConfig(b.Chain.Kujira).baseDecimal},maya:{asset:`${b.Chain.Maya}.${b.Chain.Maya}`,decimals:4},rune:{chain:b.Chain.THORChain,decimals:b.getChainConfig(b.Chain.THORChain).baseDecimal},tcy:{asset:"THOR.TCY",decimals:b.getChainConfig(b.Chain.THORChain).baseDecimal},uatom:{chain:b.Chain.Cosmos,decimals:b.getChainConfig(b.Chain.Cosmos).baseDecimal},ukuji:{chain:b.Chain.Kujira,decimals:b.getChainConfig(b.Chain.Kujira).baseDecimal},usdc:{chain:b.Chain.Noble,decimals:b.getChainConfig(b.Chain.Noble).baseDecimal},uusdc:{chain:b.Chain.Noble,decimals:b.getChainConfig(b.Chain.Noble).baseDecimal},"x/kuji":{asset:"THOR.KUJI",decimals:b.getChainConfig(b.Chain.THORChain).baseDecimal},[kT.toLowerCase()]:{asset:`${b.Chain.Kujira}.USK`,decimals:b.getChainConfig(b.Chain.Kujira).baseDecimal}}});var s0={};Mn(s0,{$root:()=>S});var Ln,v,un,I,S;var e0=p(()=>{Ln=C0(require("protobufjs/minimal.js")),v=Ln.default.Reader,un=Ln.default.Writer,I=Ln.default.util,S=Ln.default.roots.default||(Ln.default.roots.default={});S.common=(()=>{let n={};return n.Asset=(()=>{function y(T){if(T){for(let o=Object.keys(T),f=0;f<o.length;++f)if(T[o[f]]!=null)this[o[f]]=T[o[f]]}}return y.prototype.chain="",y.prototype.symbol="",y.prototype.ticker="",y.prototype.synth=!1,y.create=function(o){return new y(o)},y.encode=function(o,f){if(!f)f=un.create();if(o.chain!=null&&Object.hasOwnProperty.call(o,"chain"))f.uint32(10).string(o.chain);if(o.symbol!=null&&Object.hasOwnProperty.call(o,"symbol"))f.uint32(18).string(o.symbol);if(o.ticker!=null&&Object.hasOwnProperty.call(o,"ticker"))f.uint32(26).string(o.ticker);if(o.synth!=null&&Object.hasOwnProperty.call(o,"synth"))f.uint32(32).bool(o.synth);return f},y.encodeDelimited=function(o,f){return this.encode(o,f).ldelim()},y.decode=function(o,f){if(!(o instanceof v))o=v.create(o);let t=f===void 0?o.len:o.pos+f,C=new S.common.Asset;while(o.pos<t){let H=o.uint32();switch(H>>>3){case 1:C.chain=o.string();break;case 2:C.symbol=o.string();break;case 3:C.ticker=o.string();break;case 4:C.synth=o.bool();break;default:o.skipType(H&7);break}}return C},y.decodeDelimited=function(o){if(!(o instanceof v))o=new v(o);return this.decode(o,o.uint32())},y.verify=function(o){if(typeof o!=="object"||o===null)return"object expected";if(o.chain!=null&&o.hasOwnProperty("chain")){if(!I.isString(o.chain))return"chain: string expected"}if(o.symbol!=null&&o.hasOwnProperty("symbol")){if(!I.isString(o.symbol))return"symbol: string expected"}if(o.ticker!=null&&o.hasOwnProperty("ticker")){if(!I.isString(o.ticker))return"ticker: string expected"}if(o.synth!=null&&o.hasOwnProperty("synth")){if(typeof o.synth!=="boolean")return"synth: boolean expected"}return null},y.fromObject=function(o){if(o instanceof S.common.Asset)return o;let f=new S.common.Asset;if(o.chain!=null)f.chain=String(o.chain);if(o.symbol!=null)f.symbol=String(o.symbol);if(o.ticker!=null)f.ticker=String(o.ticker);if(o.synth!=null)f.synth=Boolean(o.synth);return f},y.toObject=function(o,f){if(!f)f={};let t={};if(f.defaults)t.chain="",t.symbol="",t.ticker="",t.synth=!1;if(o.chain!=null&&o.hasOwnProperty("chain"))t.chain=o.chain;if(o.symbol!=null&&o.hasOwnProperty("symbol"))t.symbol=o.symbol;if(o.ticker!=null&&o.hasOwnProperty("ticker"))t.ticker=o.ticker;if(o.synth!=null&&o.hasOwnProperty("synth"))t.synth=o.synth;return t},y.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},y})(),n.Coin=(()=>{function y(T){if(T){for(let o=Object.keys(T),f=0;f<o.length;++f)if(T[o[f]]!=null)this[o[f]]=T[o[f]]}}return y.prototype.asset=null,y.prototype.amount="",y.prototype.decimals=I.Long?I.Long.fromBits(0,0,!1):0,y.create=function(o){return new y(o)},y.encode=function(o,f){if(!f)f=un.create();if(o.asset!=null&&Object.hasOwnProperty.call(o,"asset"))S.common.Asset.encode(o.asset,f.uint32(10).fork()).ldelim();if(o.amount!=null&&Object.hasOwnProperty.call(o,"amount"))f.uint32(18).string(o.amount);if(o.decimals!=null&&Object.hasOwnProperty.call(o,"decimals"))f.uint32(24).int64(o.decimals);return f},y.encodeDelimited=function(o,f){return this.encode(o,f).ldelim()},y.decode=function(o,f){if(!(o instanceof v))o=v.create(o);let t=f===void 0?o.len:o.pos+f,C=new S.common.Coin;while(o.pos<t){let H=o.uint32();switch(H>>>3){case 1:C.asset=S.common.Asset.decode(o,o.uint32());break;case 2:C.amount=o.string();break;case 3:C.decimals=o.int64();break;default:o.skipType(H&7);break}}return C},y.decodeDelimited=function(o){if(!(o instanceof v))o=new v(o);return this.decode(o,o.uint32())},y.verify=function(o){if(typeof o!=="object"||o===null)return"object expected";if(o.asset!=null&&o.hasOwnProperty("asset")){let f=S.common.Asset.verify(o.asset);if(f)return"asset."+f}if(o.amount!=null&&o.hasOwnProperty("amount")){if(!I.isString(o.amount))return"amount: string expected"}if(o.decimals!=null&&o.hasOwnProperty("decimals")){if(!I.isInteger(o.decimals)&&!(o.decimals&&I.isInteger(o.decimals.low)&&I.isInteger(o.decimals.high)))return"decimals: integer|Long expected"}return null},y.fromObject=function(o){if(o instanceof S.common.Coin)return o;let f=new S.common.Coin;if(o.asset!=null){if(typeof o.asset!=="object")throw TypeError(".common.Coin.asset: object expected");f.asset=S.common.Asset.fromObject(o.asset)}if(o.amount!=null)f.amount=String(o.amount);if(o.decimals!=null){if(I.Long)(f.decimals=I.Long.fromValue(o.decimals)).unsigned=!1;else if(typeof o.decimals==="string")f.decimals=Number.parseInt(o.decimals,10);else if(typeof o.decimals==="number")f.decimals=o.decimals;else if(typeof o.decimals==="object")f.decimals=new I.LongBits(o.decimals.low>>>0,o.decimals.high>>>0).toNumber()}return f},y.toObject=function(o,f){if(!f)f={};let t={};if(f.defaults)if(t.asset=null,t.amount="",I.Long){let C=new I.Long(0,0,!1);t.decimals=f.longs===String?C.toString():f.longs===Number?C.toNumber():C}else t.decimals=f.longs===String?"0":0;if(o.asset!=null&&o.hasOwnProperty("asset"))t.asset=S.common.Asset.toObject(o.asset,f);if(o.amount!=null&&o.hasOwnProperty("amount"))t.amount=o.amount;if(o.decimals!=null&&o.hasOwnProperty("decimals"))if(typeof o.decimals==="number")t.decimals=f.longs===String?String(o.decimals):o.decimals;else t.decimals=f.longs===String?I.Long.prototype.toString.call(o.decimals):f.longs===Number?new I.LongBits(o.decimals.low>>>0,o.decimals.high>>>0).toNumber():o.decimals;return t},y.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},y})(),n.PubKeySet=(()=>{function y(T){if(T){for(let o=Object.keys(T),f=0;f<o.length;++f)if(T[o[f]]!=null)this[o[f]]=T[o[f]]}}return y.prototype.secp256k1="",y.prototype.ed25519="",y.create=function(o){return new y(o)},y.encode=function(o,f){if(!f)f=un.create();if(o.secp256k1!=null&&Object.hasOwnProperty.call(o,"secp256k1"))f.uint32(10).string(o.secp256k1);if(o.ed25519!=null&&Object.hasOwnProperty.call(o,"ed25519"))f.uint32(18).string(o.ed25519);return f},y.encodeDelimited=function(o,f){return this.encode(o,f).ldelim()},y.decode=function(o,f){if(!(o instanceof v))o=v.create(o);let t=f===void 0?o.len:o.pos+f,C=new S.common.PubKeySet;while(o.pos<t){let H=o.uint32();switch(H>>>3){case 1:C.secp256k1=o.string();break;case 2:C.ed25519=o.string();break;default:o.skipType(H&7);break}}return C},y.decodeDelimited=function(o){if(!(o instanceof v))o=new v(o);return this.decode(o,o.uint32())},y.verify=function(o){if(typeof o!=="object"||o===null)return"object expected";if(o.secp256k1!=null&&o.hasOwnProperty("secp256k1")){if(!I.isString(o.secp256k1))return"secp256k1: string expected"}if(o.ed25519!=null&&o.hasOwnProperty("ed25519")){if(!I.isString(o.ed25519))return"ed25519: string expected"}return null},y.fromObject=function(o){if(o instanceof S.common.PubKeySet)return o;let f=new S.common.PubKeySet;if(o.secp256k1!=null)f.secp256k1=String(o.secp256k1);if(o.ed25519!=null)f.ed25519=String(o.ed25519);return f},y.toObject=function(o,f){if(!f)f={};let t={};if(f.defaults)t.secp256k1="",t.ed25519="";if(o.secp256k1!=null&&o.hasOwnProperty("secp256k1"))t.secp256k1=o.secp256k1;if(o.ed25519!=null&&o.hasOwnProperty("ed25519"))t.ed25519=o.ed25519;return t},y.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},y})(),n.Tx=(()=>{function y(T){if(this.coins=[],this.gas=[],T){for(let o=Object.keys(T),f=0;f<o.length;++f)if(T[o[f]]!=null)this[o[f]]=T[o[f]]}}return y.prototype.id="",y.prototype.chain="",y.prototype.fromAddress="",y.prototype.toAddress="",y.prototype.coins=I.emptyArray,y.prototype.gas=I.emptyArray,y.prototype.memo="",y.create=function(o){return new y(o)},y.encode=function(o,f){if(!f)f=un.create();if(o.id!=null&&Object.hasOwnProperty.call(o,"id"))f.uint32(10).string(o.id);if(o.chain!=null&&Object.hasOwnProperty.call(o,"chain"))f.uint32(18).string(o.chain);if(o.fromAddress!=null&&Object.hasOwnProperty.call(o,"fromAddress"))f.uint32(26).string(o.fromAddress);if(o.toAddress!=null&&Object.hasOwnProperty.call(o,"toAddress"))f.uint32(34).string(o.toAddress);if(o.coins?.length)for(let t=0;t<o.coins.length;++t)S.common.Coin.encode(o.coins[t],f.uint32(42).fork()).ldelim();if(o.gas?.length)for(let t=0;t<o.gas.length;++t)S.common.Coin.encode(o.gas[t],f.uint32(50).fork()).ldelim();if(o.memo!=null&&Object.hasOwnProperty.call(o,"memo"))f.uint32(58).string(o.memo);return f},y.encodeDelimited=function(o,f){return this.encode(o,f).ldelim()},y.decode=function(o,f){if(!(o instanceof v))o=v.create(o);let t=f===void 0?o.len:o.pos+f,C=new S.common.Tx;while(o.pos<t){let H=o.uint32();switch(H>>>3){case 1:C.id=o.string();break;case 2:C.chain=o.string();break;case 3:C.fromAddress=o.string();break;case 4:C.toAddress=o.string();break;case 5:if(!C.coins?.length)C.coins=[];C.coins.push(S.common.Coin.decode(o,o.uint32()));break;case 6:if(!C.gas?.length)C.gas=[];C.gas.push(S.common.Coin.decode(o,o.uint32()));break;case 7:C.memo=o.string();break;default:o.skipType(H&7);break}}return C},y.decodeDelimited=function(o){if(!(o instanceof v))o=new v(o);return this.decode(o,o.uint32())},y.verify=function(o){if(typeof o!=="object"||o===null)return"object expected";if(o.id!=null&&o.hasOwnProperty("id")){if(!I.isString(o.id))return"id: string expected"}if(o.chain!=null&&o.hasOwnProperty("chain")){if(!I.isString(o.chain))return"chain: string expected"}if(o.fromAddress!=null&&o.hasOwnProperty("fromAddress")){if(!I.isString(o.fromAddress))return"fromAddress: string expected"}if(o.toAddress!=null&&o.hasOwnProperty("toAddress")){if(!I.isString(o.toAddress))return"toAddress: string expected"}if(o.coins!=null&&o.hasOwnProperty("coins")){if(!Array.isArray(o.coins))return"coins: array expected";for(let f=0;f<o.coins.length;++f){let t=S.common.Coin.verify(o.coins[f]);if(t)return"coins."+t}}if(o.gas!=null&&o.hasOwnProperty("gas")){if(!Array.isArray(o.gas))return"gas: array expected";for(let f=0;f<o.gas.length;++f){let t=S.common.Coin.verify(o.gas[f]);if(t)return"gas."+t}}if(o.memo!=null&&o.hasOwnProperty("memo")){if(!I.isString(o.memo))return"memo: string expected"}return null},y.fromObject=function(o){if(o instanceof S.common.Tx)return o;let f=new S.common.Tx;if(o.id!=null)f.id=String(o.id);if(o.chain!=null)f.chain=String(o.chain);if(o.fromAddress!=null)f.fromAddress=String(o.fromAddress);if(o.toAddress!=null)f.toAddress=String(o.toAddress);if(o.coins){if(!Array.isArray(o.coins))throw TypeError(".common.Tx.coins: array expected");f.coins=[];for(let t=0;t<o.coins.length;++t){if(typeof o.coins[t]!=="object")throw TypeError(".common.Tx.coins: object expected");f.coins[t]=S.common.Coin.fromObject(o.coins[t])}}if(o.gas){if(!Array.isArray(o.gas))throw TypeError(".common.Tx.gas: array expected");f.gas=[];for(let t=0;t<o.gas.length;++t){if(typeof o.gas[t]!=="object")throw TypeError(".common.Tx.gas: object expected");f.gas[t]=S.common.Coin.fromObject(o.gas[t])}}if(o.memo!=null)f.memo=String(o.memo);return f},y.toObject=function(o,f){if(!f)f={};let t={};if(f.arrays||f.defaults)t.coins=[],t.gas=[];if(f.defaults)t.id="",t.chain="",t.fromAddress="",t.toAddress="",t.memo="";if(o.id!=null&&o.hasOwnProperty("id"))t.id=o.id;if(o.chain!=null&&o.hasOwnProperty("chain"))t.chain=o.chain;if(o.fromAddress!=null&&o.hasOwnProperty("fromAddress"))t.fromAddress=o.fromAddress;if(o.toAddress!=null&&o.hasOwnProperty("toAddress"))t.toAddress=o.toAddress;if(o.coins?.length){t.coins=[];for(let C=0;C<o.coins.length;++C)t.coins[C]=S.common.Coin.toObject(o.coins[C],f)}if(o.gas?.length){t.gas=[];for(let C=0;C<o.gas.length;++C)t.gas[C]=S.common.Coin.toObject(o.gas[C],f)}if(o.memo!=null&&o.hasOwnProperty("memo"))t.memo=o.memo;return t},y.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},y})(),n.Fee=(()=>{function y(T){if(this.coins=[],T){for(let o=Object.keys(T),f=0;f<o.length;++f)if(T[o[f]]!=null)this[o[f]]=T[o[f]]}}return y.prototype.coins=I.emptyArray,y.prototype.poolDeduct="",y.create=function(o){return new y(o)},y.encode=function(o,f){if(!f)f=un.create();if(o.coins?.length)for(let t=0;t<o.coins.length;++t)S.common.Coin.encode(o.coins[t],f.uint32(10).fork()).ldelim();if(o.poolDeduct!=null&&Object.hasOwnProperty.call(o,"poolDeduct"))f.uint32(18).string(o.poolDeduct);return f},y.encodeDelimited=function(o,f){return this.encode(o,f).ldelim()},y.decode=function(o,f){if(!(o instanceof v))o=v.create(o);let t=f===void 0?o.len:o.pos+f,C=new S.common.Fee;while(o.pos<t){let H=o.uint32();switch(H>>>3){case 1:if(!C.coins?.length)C.coins=[];C.coins.push(S.common.Coin.decode(o,o.uint32()));break;case 2:C.poolDeduct=o.string();break;default:o.skipType(H&7);break}}return C},y.decodeDelimited=function(o){if(!(o instanceof v))o=new v(o);return this.decode(o,o.uint32())},y.verify=function(o){if(typeof o!=="object"||o===null)return"object expected";if(o.coins!=null&&o.hasOwnProperty("coins")){if(!Array.isArray(o.coins))return"coins: array expected";for(let f=0;f<o.coins.length;++f){let t=S.common.Coin.verify(o.coins[f]);if(t)return"coins."+t}}if(o.poolDeduct!=null&&o.hasOwnProperty("poolDeduct")){if(!I.isString(o.poolDeduct))return"poolDeduct: string expected"}return null},y.fromObject=function(o){if(o instanceof S.common.Fee)return o;let f=new S.common.Fee;if(o.coins){if(!Array.isArray(o.coins))throw TypeError(".common.Fee.coins: array expected");f.coins=[];for(let t=0;t<o.coins.length;++t){if(typeof o.coins[t]!=="object")throw TypeError(".common.Fee.coins: object expected");f.coins[t]=S.common.Coin.fromObject(o.coins[t])}}if(o.poolDeduct!=null)f.poolDeduct=String(o.poolDeduct);return f},y.toObject=function(o,f){if(!f)f={};let t={};if(f.arrays||f.defaults)t.coins=[];if(f.defaults)t.poolDeduct="";if(o.coins?.length){t.coins=[];for(let C=0;C<o.coins.length;++C)t.coins[C]=S.common.Coin.toObject(o.coins[C],f)}if(o.poolDeduct!=null&&o.hasOwnProperty("poolDeduct"))t.poolDeduct=o.poolDeduct;return t},y.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},y})(),n.ProtoUint=(()=>{function y(T){if(T){for(let o=Object.keys(T),f=0;f<o.length;++f)if(T[o[f]]!=null)this[o[f]]=T[o[f]]}}return y.prototype.value="",y.create=function(o){return new y(o)},y.encode=function(o,f){if(!f)f=un.create();if(o.value!=null&&Object.hasOwnProperty.call(o,"value"))f.uint32(10).string(o.value);return f},y.encodeDelimited=function(o,f){return this.encode(o,f).ldelim()},y.decode=function(o,f){if(!(o instanceof v))o=v.create(o);let t=f===void 0?o.len:o.pos+f,C=new S.common.ProtoUint;while(o.pos<t){let H=o.uint32();switch(H>>>3){case 1:C.value=o.string();break;default:o.skipType(H&7);break}}return C},y.decodeDelimited=function(o){if(!(o instanceof v))o=new v(o);return this.decode(o,o.uint32())},y.verify=function(o){if(typeof o!=="object"||o===null)return"object expected";if(o.value!=null&&o.hasOwnProperty("value")){if(!I.isString(o.value))return"value: string expected"}return null},y.fromObject=function(o){if(o instanceof S.common.ProtoUint)return o;let f=new S.common.ProtoUint;if(o.value!=null)f.value=String(o.value);return f},y.toObject=function(o,f){if(!f)f={};let t={};if(f.defaults)t.value="";if(o.value!=null&&o.hasOwnProperty("value"))t.value=o.value;return t},y.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},y})(),n})();S.types=(()=>{let n={};return n.MsgDeposit=(()=>{function y(T){if(this.coins=[],T){for(let o=Object.keys(T),f=0;f<o.length;++f)if(T[o[f]]!=null)this[o[f]]=T[o[f]]}}return y.prototype.coins=I.emptyArray,y.prototype.memo="",y.prototype.signer=I.newBuffer([]),y.create=function(o){return new y(o)},y.encode=function(o,f){if(!f)f=un.create();if(o.coins?.length)for(let t=0;t<o.coins.length;++t)S.common.Coin.encode(o.coins[t],f.uint32(10).fork()).ldelim();if(o.memo!=null&&Object.hasOwnProperty.call(o,"memo"))f.uint32(18).string(o.memo);if(o.signer!=null&&Object.hasOwnProperty.call(o,"signer"))f.uint32(26).bytes(o.signer);return f},y.encodeDelimited=function(o,f){return this.encode(o,f).ldelim()},y.decode=function(o,f){if(!(o instanceof v))o=v.create(o);let t=f===void 0?o.len:o.pos+f,C=new S.types.MsgDeposit;while(o.pos<t){let H=o.uint32();switch(H>>>3){case 1:if(!C.coins?.length)C.coins=[];C.coins.push(S.common.Coin.decode(o,o.uint32()));break;case 2:C.memo=o.string();break;case 3:C.signer=o.bytes();break;default:o.skipType(H&7);break}}return C},y.decodeDelimited=function(o){if(!(o instanceof v))o=new v(o);return this.decode(o,o.uint32())},y.verify=function(o){if(typeof o!=="object"||o===null)return"object expected";if(o.coins!=null&&o.hasOwnProperty("coins")){if(!Array.isArray(o.coins))return"coins: array expected";for(let f=0;f<o.coins.length;++f){let t=S.common.Coin.verify(o.coins[f]);if(t)return"coins."+t}}if(o.memo!=null&&o.hasOwnProperty("memo")){if(!I.isString(o.memo))return"memo: string expected"}if(o.signer!=null&&o.hasOwnProperty("signer")){if(!(o.signer&&typeof o.signer.length==="number"||I.isString(o.signer)))return"signer: buffer expected"}return null},y.fromObject=function(o){if(o instanceof S.types.MsgDeposit)return o;let f=new S.types.MsgDeposit;if(o.coins){if(!Array.isArray(o.coins))throw TypeError(".types.MsgDeposit.coins: array expected");f.coins=[];for(let t=0;t<o.coins.length;++t){if(typeof o.coins[t]!=="object")throw TypeError(".types.MsgDeposit.coins: object expected");f.coins[t]=S.common.Coin.fromObject(o.coins[t])}}if(o.memo!=null)f.memo=String(o.memo);if(o.signer!=null){if(typeof o.signer==="string")I.base64.decode(o.signer,f.signer=I.newBuffer(I.base64.length(o.signer)),0);else if(o.signer.length)f.signer=o.signer}return f},y.toObject=function(o,f){if(!f)f={};let t={};if(f.arrays||f.defaults)t.coins=[];if(f.defaults){if(t.memo="",f.bytes===String)t.signer="";else if(t.signer=[],f.bytes!==Array)t.signer=I.newBuffer(t.signer)}if(o.coins?.length){t.coins=[];for(let C=0;C<o.coins.length;++C)t.coins[C]=S.common.Coin.toObject(o.coins[C],f)}if(o.memo!=null&&o.hasOwnProperty("memo"))t.memo=o.memo;if(o.signer!=null&&o.hasOwnProperty("signer"))t.signer=f.bytes===String?I.base64.encode(o.signer,0,o.signer.length):f.bytes===Array?Array.prototype.slice.call(o.signer):o.signer;return t},y.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},y})(),n.MsgSend=(()=>{function y(T){if(this.amount=[],T){for(let o=Object.keys(T),f=0;f<o.length;++f)if(T[o[f]]!=null)this[o[f]]=T[o[f]]}}return y.prototype.fromAddress=I.newBuffer([]),y.prototype.toAddress=I.newBuffer([]),y.prototype.amount=I.emptyArray,y.create=function(o){return new y(o)},y.encode=function(o,f){if(!f)f=un.create();if(o.fromAddress!=null&&Object.hasOwnProperty.call(o,"fromAddress"))f.uint32(10).bytes(o.fromAddress);if(o.toAddress!=null&&Object.hasOwnProperty.call(o,"toAddress"))f.uint32(18).bytes(o.toAddress);if(o.amount?.length)for(let t=0;t<o.amount.length;++t)S.cosmos.base.v1beta1.Coin.encode(o.amount[t],f.uint32(26).fork()).ldelim();return f},y.encodeDelimited=function(o,f){return this.encode(o,f).ldelim()},y.decode=function(o,f){if(!(o instanceof v))o=v.create(o);let t=f===void 0?o.len:o.pos+f,C=new S.types.MsgSend;while(o.pos<t){let H=o.uint32();switch(H>>>3){case 1:C.fromAddress=o.bytes();break;case 2:C.toAddress=o.bytes();break;case 3:if(!C.amount?.length)C.amount=[];C.amount.push(S.cosmos.base.v1beta1.Coin.decode(o,o.uint32()));break;default:o.skipType(H&7);break}}return C},y.decodeDelimited=function(o){if(!(o instanceof v))o=new v(o);return this.decode(o,o.uint32())},y.verify=function(o){if(typeof o!=="object"||o===null)return"object expected";if(o.fromAddress!=null&&o.hasOwnProperty("fromAddress")){if(!(o.fromAddress&&typeof o.fromAddress.length==="number"||I.isString(o.fromAddress)))return"fromAddress: buffer expected"}if(o.toAddress!=null&&o.hasOwnProperty("toAddress")){if(!(o.toAddress&&typeof o.toAddress.length==="number"||I.isString(o.toAddress)))return"toAddress: buffer expected"}if(o.amount!=null&&o.hasOwnProperty("amount")){if(!Array.isArray(o.amount))return"amount: array expected";for(let f=0;f<o.amount.length;++f){let t=S.cosmos.base.v1beta1.Coin.verify(o.amount[f]);if(t)return"amount."+t}}return null},y.fromObject=function(o){if(o instanceof S.types.MsgSend)return o;let f=new S.types.MsgSend;if(o.fromAddress!=null){if(typeof o.fromAddress==="string")I.base64.decode(o.fromAddress,f.fromAddress=I.newBuffer(I.base64.length(o.fromAddress)),0);else if(o.fromAddress.length)f.fromAddress=o.fromAddress}if(o.toAddress!=null){if(typeof o.toAddress==="string")I.base64.decode(o.toAddress,f.toAddress=I.newBuffer(I.base64.length(o.toAddress)),0);else if(o.toAddress.length)f.toAddress=o.toAddress}if(o.amount){if(!Array.isArray(o.amount))throw TypeError(".types.MsgSend.amount: array expected");f.amount=[];for(let t=0;t<o.amount.length;++t){if(typeof o.amount[t]!=="object")throw TypeError(".types.MsgSend.amount: object expected");f.amount[t]=S.cosmos.base.v1beta1.Coin.fromObject(o.amount[t])}}return f},y.toObject=function(o,f){if(!f)f={};let t={};if(f.arrays||f.defaults)t.amount=[];if(f.defaults){if(f.bytes===String)t.fromAddress="";else if(t.fromAddress=[],f.bytes!==Array)t.fromAddress=I.newBuffer(t.fromAddress);if(f.bytes===String)t.toAddress="";else if(t.toAddress=[],f.bytes!==Array)t.toAddress=I.newBuffer(t.toAddress)}if(o.fromAddress!=null&&o.hasOwnProperty("fromAddress"))t.fromAddress=f.bytes===String?I.base64.encode(o.fromAddress,0,o.fromAddress.length):f.bytes===Array?Array.prototype.slice.call(o.fromAddress):o.fromAddress;if(o.toAddress!=null&&o.hasOwnProperty("toAddress"))t.toAddress=f.bytes===String?I.base64.encode(o.toAddress,0,o.toAddress.length):f.bytes===Array?Array.prototype.slice.call(o.toAddress):o.toAddress;if(o.amount?.length){t.amount=[];for(let C=0;C<o.amount.length;++C)t.amount[C]=S.cosmos.base.v1beta1.Coin.toObject(o.amount[C],f)}return t},y.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},y})(),n})();S.cosmos=(()=>{let n={};return n.base=(()=>{let y={};return y.v1beta1=(()=>{let T={};return T.Coin=(()=>{function o(f){if(f){for(let t=Object.keys(f),C=0;C<t.length;++C)if(f[t[C]]!=null)this[t[C]]=f[t[C]]}}return o.prototype.denom="",o.prototype.amount="",o.create=function(t){return new o(t)},o.encode=function(t,C){if(!C)C=un.create();if(t.denom!=null&&Object.hasOwnProperty.call(t,"denom"))C.uint32(10).string(t.denom);if(t.amount!=null&&Object.hasOwnProperty.call(t,"amount"))C.uint32(18).string(t.amount);return C},o.encodeDelimited=function(t,C){return this.encode(t,C).ldelim()},o.decode=function(t,C){if(!(t instanceof v))t=v.create(t);let H=C===void 0?t.len:t.pos+C,A=new S.cosmos.base.v1beta1.Coin;while(t.pos<H){let _=t.uint32();switch(_>>>3){case 1:A.denom=t.string();break;case 2:A.amount=t.string();break;default:t.skipType(_&7);break}}return A},o.decodeDelimited=function(t){if(!(t instanceof v))t=new v(t);return this.decode(t,t.uint32())},o.verify=function(t){if(typeof t!=="object"||t===null)return"object expected";if(t.denom!=null&&t.hasOwnProperty("denom")){if(!I.isString(t.denom))return"denom: string expected"}if(t.amount!=null&&t.hasOwnProperty("amount")){if(!I.isString(t.amount))return"amount: string expected"}return null},o.fromObject=function(t){if(t instanceof S.cosmos.base.v1beta1.Coin)return t;let C=new S.cosmos.base.v1beta1.Coin;if(t.denom!=null)C.denom=String(t.denom);if(t.amount!=null)C.amount=String(t.amount);return C},o.toObject=function(t,C){if(!C)C={};let H={};if(C.defaults)H.denom="",H.amount="";if(t.denom!=null&&t.hasOwnProperty("denom"))H.denom=t.denom;if(t.amount!=null&&t.hasOwnProperty("amount"))H.amount=t.amount;return H},o.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},o})(),T.DecCoin=(()=>{function o(f){if(f){for(let t=Object.keys(f),C=0;C<t.length;++C)if(f[t[C]]!=null)this[t[C]]=f[t[C]]}}return o.prototype.denom="",o.prototype.amount="",o.create=function(t){return new o(t)},o.encode=function(t,C){if(!C)C=un.create();if(t.denom!=null&&Object.hasOwnProperty.call(t,"denom"))C.uint32(10).string(t.denom);if(t.amount!=null&&Object.hasOwnProperty.call(t,"amount"))C.uint32(18).string(t.amount);return C},o.encodeDelimited=function(t,C){return this.encode(t,C).ldelim()},o.decode=function(t,C){if(!(t instanceof v))t=v.create(t);let H=C===void 0?t.len:t.pos+C,A=new S.cosmos.base.v1beta1.DecCoin;while(t.pos<H){let _=t.uint32();switch(_>>>3){case 1:A.denom=t.string();break;case 2:A.amount=t.string();break;default:t.skipType(_&7);break}}return A},o.decodeDelimited=function(t){if(!(t instanceof v))t=new v(t);return this.decode(t,t.uint32())},o.verify=function(t){if(typeof t!=="object"||t===null)return"object expected";if(t.denom!=null&&t.hasOwnProperty("denom")){if(!I.isString(t.denom))return"denom: string expected"}if(t.amount!=null&&t.hasOwnProperty("amount")){if(!I.isString(t.amount))return"amount: string expected"}return null},o.fromObject=function(t){if(t instanceof S.cosmos.base.v1beta1.DecCoin)return t;let C=new S.cosmos.base.v1beta1.DecCoin;if(t.denom!=null)C.denom=String(t.denom);if(t.amount!=null)C.amount=String(t.amount);return C},o.toObject=function(t,C){if(!C)C={};let H={};if(C.defaults)H.denom="",H.amount="";if(t.denom!=null&&t.hasOwnProperty("denom"))H.denom=t.denom;if(t.amount!=null&&t.hasOwnProperty("amount"))H.amount=t.amount;return H},o.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},o})(),T.IntProto=(()=>{function o(f){if(f){for(let t=Object.keys(f),C=0;C<t.length;++C)if(f[t[C]]!=null)this[t[C]]=f[t[C]]}}return o.prototype.int="",o.create=function(t){return new o(t)},o.encode=function(t,C){if(!C)C=un.create();if(t.int!=null&&Object.hasOwnProperty.call(t,"int"))C.uint32(10).string(t.int);return C},o.encodeDelimited=function(t,C){return this.encode(t,C).ldelim()},o.decode=function(t,C){if(!(t instanceof v))t=v.create(t);let H=C===void 0?t.len:t.pos+C,A=new S.cosmos.base.v1beta1.IntProto;while(t.pos<H){let _=t.uint32();switch(_>>>3){case 1:A.int=t.string();break;default:t.skipType(_&7);break}}return A},o.decodeDelimited=function(t){if(!(t instanceof v))t=new v(t);return this.decode(t,t.uint32())},o.verify=function(t){if(typeof t!=="object"||t===null)return"object expected";if(t.int!=null&&t.hasOwnProperty("int")){if(!I.isString(t.int))return"int: string expected"}return null},o.fromObject=function(t){if(t instanceof S.cosmos.base.v1beta1.IntProto)return t;let C=new S.cosmos.base.v1beta1.IntProto;if(t.int!=null)C.int=String(t.int);return C},o.toObject=function(t,C){if(!C)C={};let H={};if(C.defaults)H.int="";if(t.int!=null&&t.hasOwnProperty("int"))H.int=t.int;return H},o.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},o})(),T.DecProto=(()=>{function o(f){if(f){for(let t=Object.keys(f),C=0;C<t.length;++C)if(f[t[C]]!=null)this[t[C]]=f[t[C]]}}return o.prototype.dec="",o.create=function(t){return new o(t)},o.encode=function(t,C){if(!C)C=un.create();if(t.dec!=null&&Object.hasOwnProperty.call(t,"dec"))C.uint32(10).string(t.dec);return C},o.encodeDelimited=function(t,C){return this.encode(t,C).ldelim()},o.decode=function(t,C){if(!(t instanceof v))t=v.create(t);let H=C===void 0?t.len:t.pos+C,A=new S.cosmos.base.v1beta1.DecProto;while(t.pos<H){let _=t.uint32();switch(_>>>3){case 1:A.dec=t.string();break;default:t.skipType(_&7);break}}return A},o.decodeDelimited=function(t){if(!(t instanceof v))t=new v(t);return this.decode(t,t.uint32())},o.verify=function(t){if(typeof t!=="object"||t===null)return"object expected";if(t.dec!=null&&t.hasOwnProperty("dec")){if(!I.isString(t.dec))return"dec: string expected"}return null},o.fromObject=function(t){if(t instanceof S.cosmos.base.v1beta1.DecProto)return t;let C=new S.cosmos.base.v1beta1.DecProto;if(t.dec!=null)C.dec=String(t.dec);return C},o.toObject=function(t,C){if(!C)C={};let H={};if(C.defaults)H.dec="";if(t.dec!=null&&t.hasOwnProperty("dec"))H.dec=t.dec;return H},o.prototype.toJSON=function(){return this.constructor.toObject(this,Ln.default.util.toJSONOptions)},o})(),T})(),y})(),n})()});async function zo(){let{$root:n}=await Promise.resolve().then(() => (e0(),s0)),y=await import("@cosmjs/proto-signing"),T=y.Registry??y.default?.Registry,o=await import("@cosmjs/stargate"),f=o.defaultRegistryTypes??o.default?.defaultRegistryTypes;return new T([...f,["/types.MsgSend",n.types.MsgSend],["/types.MsgDeposit",n.types.MsgDeposit]])}async function Co(n){let y=await import("@cosmjs/stargate"),T=y.AminoTypes??y.default?.AminoTypes,o=n===nC.Chain.THORChain?"thorchain":"mayachain";return new T({"/types.MsgDeposit":{aminoType:`${o}/MsgDeposit`,fromAmino:({signer:f,...t})=>({...t,signer:Wy(f)}),toAmino:({signer:f,...t})=>({...t,signer:By(f)})},"/types.MsgSend":{aminoType:`${o}/MsgSend`,fromAmino:({from_address:f,to_address:t,...C})=>({...C,fromAddress:Wy(f),toAddress:Wy(t)}),toAmino:({fromAddress:f,toAddress:t,...C})=>({...C,from_address:By(f),to_address:By(t)})}})}var nC;var $T=p(()=>{pT();nC=require("@swapkit/helpers")});function vT(n){let{assetValue:y,recipient:T,memo:o,sender:f,asSignable:t,asAminoMessage:C}=n;if(T)return yC({asAminoMessage:C,asSignable:t,assetValue:y,memo:o,recipient:T,sender:f});return fC({asAminoMessage:C,asSignable:t,assetValue:y,memo:o,sender:f})}async function yC({sender:n,recipient:y,assetValue:T,memo:o="",asSignable:f=!0,asAminoMessage:t=!1,sequence:C,accountNumber:H}){let A=T.chain,_=await zn.getRPCUrl(A),X=await oC({rpcUrl:_,sender:n}),{chainId:B}=zn.getChainConfig(A),U=ET({assetValue:T,recipient:y,sender:n}),q=f?await Ho(t?U:Ao(U),A):U;return{accountNumber:H||X.accountNumber,chainId:B,fee:an(A),memo:o,msgs:[q],sequence:C||X.sequence}}async function fC({sender:n,assetValue:y,memo:T="",asSignable:o=!0,asAminoMessage:f=!1,sequence:t,accountNumber:C}){let H=y.chain,A=await zn.getRPCUrl(H),_=await oC({rpcUrl:A,sender:n}),{chainId:X}=zn.getChainConfig(H),B=bT({assetValue:y,memo:T,sender:n}),U=o?await Ho(f?B:Ao(B),H):B;return{accountNumber:C||_.accountNumber,chainId:X,fee:an(H),memo:T,msgs:[U],sequence:t||_.sequence}}function Ao(n){if(n.type==="thorchain/MsgSend"||n.type==="mayachain/MsgSend")return n;return{...n,value:{...n.value,coins:n.value.coins.map((y)=>{let T=zn.AssetValue.from({asset:y.asset}),o=(T.isSynthetic?T.symbol.split("/")?.[1]:T.symbol)?.toUpperCase(),f=(T.isSynthetic?T.symbol.split("/")?.[0]:T.chain)?.toUpperCase();return{...y,asset:{chain:f,symbol:o,synth:T.isSynthetic,ticker:T.ticker}}})}}}async function Qy({chain:n,memo:y,msgs:T}){let o=await zo(),f=await Co(n),t={typeUrl:"/cosmos.tx.v1beta1.TxBody",value:{memo:y,messages:T.map((C)=>f.fromAmino(C))}};return o.encode(t)}var zn,UA,wA,ET=({sender:n,recipient:y,assetValue:T})=>{return{type:`${T.chain===zn.Chain.Maya?"mayachain":"thorchain"}/MsgSend`,value:{amount:[{amount:T.getBaseValue("string"),denom:to(T.symbol,!0)}],from_address:n,to_address:y}}},bT=({sender:n,assetValue:y,memo:T=""})=>{return{type:`${y.chain===zn.Chain.Maya?"mayachain":"thorchain"}/MsgDeposit`,value:{coins:[{amount:y.getBaseValue("string"),asset:My(y)}],memo:T,signer:n}}},Uf=({sender:n,recipient:y,assetValue:T,memo:o})=>{return!y?bT({assetValue:T,memo:o,sender:n}):ET({assetValue:T,recipient:y,sender:n})},Ho=async(n,y)=>{return(await Co(y)).fromAmino(n)},oC=async({rpcUrl:n,sender:y})=>{let o=await(await sn(n)).getAccount(y);if(!o)throw new zn.SwapKitError("toolbox_cosmos_account_not_found",{sender:y});return o};var TC=p(()=>{Ly();$T();zn=require("@swapkit/helpers"),UA=an(zn.Chain.THORChain).gas,wA=an(zn.Chain.Maya).gas});var tC=()=>{};var CC=p(()=>{tC()});var VT=p(()=>{pT();TC();$T();CC()});async function cT(n,y){try{let o=(await jT.SwapKitApi.getGasRate()).find((f)=>f.chainId===n)?.value;return o?Number.parseFloat(o):y}catch{return y}}async function KT({phrase:n,prefix:y,...T}){let o="derivationPath"in T?T.derivationPath:`${P.DerivationPath[T.chain]}/${T.index}`;return await wC.DirectSecp256k1HdWallet.fromMnemonic(n,{hdPaths:[UC.stringToPath(o)],prefix:y})}async function qA({privateKey:n,prefix:y}){let T=await import("@cosmjs/proto-signing");return(T.DirectSecp256k1Wallet??T.default?.DirectSecp256k1Wallet).fromKey(n,y)}function qC(n){return async function({signature:T,message:o,address:f}){let t=await n(f);if(!t?.pubkey)throw new P.SwapKitError("toolbox_cosmos_verify_signature_no_pubkey");let C=await import("@cosmjs/crypto"),H=C.Secp256k1Signature??C.default?.Secp256k1Signature,A=C.Secp256k1??C.default?.Secp256k1,_=H.fromFixedLength(_o.base64.decode(T));return A.verifySignature(_,_o.base64.decode(o),t.pubkey.value)}}function Jy({chain:n,...y}){let T=P.CosmosChainPrefixes[n],o="index"in y?y.index||0:0,f=P.derivationPathToString("derivationPath"in y&&y.derivationPath?y.derivationPath:P.updateDerivationPath(P.NetworkDerivationPath[n],{index:o})),t;async function C(){if(t)return t;return t=await Zy.match(y).with({phrase:Zy.P.string},({phrase:q})=>KT({derivationPath:f,phrase:q,prefix:T})).with({signer:Zy.P.any},({signer:q})=>q).otherwise(()=>{return}),t}async function H(q){let G=await P.getRPCUrl(n);return(await sn(G)).getAccount(q)}async function A(){let q=await C(),[G]=await q?.getAccounts()||[];return G?.address}async function _(){let q=await C(),[G]=await q?.getAccounts()||[];if(!G?.pubkey)throw new P.SwapKitError("toolbox_cosmos_signer_not_defined");return _o.base64.encode(G?.pubkey)}async function X(q){let G=await C(),w=await A(),Q=await P.getRPCUrl(n);if(!(G&&w))throw new P.SwapKitError("toolbox_cosmos_signer_not_defined");return await(await No(Q,G)).sign(w,q.msgs,q.fee,q.memo,{accountNumber:q.accountNumber,chainId:q.chainId,sequence:q.sequence})}async function B(q){let G=await C(),w=await A(),Q=await P.getRPCUrl(n);if(!(G&&w))throw new P.SwapKitError("toolbox_cosmos_signer_not_defined");let Y=await(await No(Q,G)).signAndBroadcast(w,q.msgs,q.fee,q.memo);if(Y.code!==0)throw new P.SwapKitError("core_swap_transaction_error",{code:Y.code,message:Y.rawLog});return Y.transactionHash}async function U({recipient:q,assetValue:G,memo:w="",feeRate:Q,feeOptionKey:N=P.FeeOption.Fast}){let Y=await C(),z=await A();if(!(Y&&z))throw new P.SwapKitError("toolbox_cosmos_signer_not_defined");let J=await P.getRPCUrl(n),l=P.AssetValue.from({chain:n}),M=My(l),W=Q||XA((await AC(n,HC[n]))[N],M),Z=await No(J,Y),D=to(G.symbol),L=[{amount:G.getBaseValue("string"),denom:D}],{transactionHash:O}=await Z.sendTokens(z,q,L,W,w);return O}return{createPrivateKeyFromPhrase:BA(f),createTransaction:PT,fetchFeeRateFromSwapKit:cT,getAccount:H,getAddress:A,getBalance:async(q,G)=>{let w=await _C(n)(q),Q=await Promise.all(w.filter(({denom:N})=>N&&!N.includes("IBC/")&&!([P.Chain.THORChain,P.Chain.Maya].includes(n)&&N.split("-").length>2)).map(({denom:N,amount:Y})=>{let z=[P.Chain.THORChain,P.Chain.Maya].includes(n)&&(N.includes("/")||N.includes("˜"))?`${n}.${N}`:N;return IT(z,Y)}));if(Q.length===0)return[P.AssetValue.from({chain:n})];return Q},getBalanceAsDenoms:_C(n),getFees:()=>AC(n,HC[n]),getPubKey:_,getSignerFromPhrase:({phrase:q,derivationPath:G})=>KT({derivationPath:P.derivationPathToString(G),index:o,phrase:q,prefix:T}),getSignerFromPrivateKey:async(q)=>{let G=await import("@cosmjs/proto-signing");return(G.DirectSecp256k1Wallet??G.default?.DirectSecp256k1Wallet).fromKey(q,T)},signAndBroadcastTransaction:B,signTransaction:X,transfer:U,validateAddress:GC(n),verifySignature:qC(H)}}async function GA(n,y){try{let o=(await jT.SwapKitApi.getGasRate()).find((f)=>f.chainId===n)?.value;return o?Number.parseFloat(o):y}catch{return y}}function lA({assetValue:{chain:n}}){return P.AssetValue.from({chain:n,value:WA(n)})}async function AC(n,y){let{chainId:T,baseDecimal:o}=P.getChainConfig(n),f=await cT(T,y);return{average:P.SwapKitNumber.fromBigInt(BigInt(f),o),fast:P.SwapKitNumber.fromBigInt(BigInt(P.applyFeeMultiplier(f,P.FeeOption.Fast,!0)),o),fastest:P.SwapKitNumber.fromBigInt(BigInt(P.applyFeeMultiplier(f,P.FeeOption.Fastest,!0)),o)}}function XA(n,y){return{amount:[{amount:n.getBaseValue("string"),denom:y}],gas:"200000"}}function WA(n){return{[P.Chain.Cosmos]:0.007,[P.Chain.Kujira]:0.02,[P.Chain.Noble]:0.01,[P.Chain.THORChain]:0.02,[P.Chain.Maya]:0.02,[P.Chain.Harbor]:0.02}[n]||0}function GC(n){let y=P.CosmosChainPrefixes[n];return function(o){if(!o.startsWith(y))return!1;try{let{prefix:f,words:t}=_o.bech32.decode(o);return _o.bech32.encode(f,t)===o.toLocaleLowerCase()}catch{return!1}}}function _C(n){return async function(T){let o=await P.getRPCUrl(n);return(await(await sn(o)).getAllBalances(T)).map((H)=>({...H,denom:H.denom.includes("/")?H.denom.toUpperCase():H.denom}))}}function BA(n){return async function(T){let o=await import("@cosmjs/crypto"),f=o.stringToPath??o.default?.stringToPath,t=o.Slip10Curve??o.default?.Slip10Curve,C=o.Slip10??o.default?.Slip10,H=o.EnglishMnemonic??o.default?.EnglishMnemonic,A=o.Bip39??o.default?.Bip39,_=new H(T),X=await A.mnemonicToSeed(_),{privkey:B}=C.derivePath(t.Secp256k1,X,f(n));return B}}var UC,wC,_o,P,jT,Zy,HC;var wf=p(()=>{Ly();UC=require("@cosmjs/crypto"),wC=require("@cosmjs/proto-signing"),_o=require("@scure/base"),P=require("@swapkit/helpers"),jT=require("@swapkit/helpers/api"),Zy=require("ts-pattern");HC={[P.Chain.Cosmos]:1000,[P.Chain.Kujira]:1000,[P.Chain.Noble]:1000,[P.Chain.THORChain]:5000000,[P.Chain.Maya]:5000000,[P.Chain.Harbor]:5000000}});function MA({prefix:n,derivationPath:y}){return async function(o,f=0){let t=await import("@cosmjs/amino"),C=t.Secp256k1HdWallet??t.default?.Secp256k1HdWallet,H=await import("@cosmjs/crypto"),A=H.stringToPath??H.default?.stringToPath;return C.fromMnemonic(o,{hdPaths:[A(`${y}/${f}`)],prefix:n})}}function LA(n){return Uo.base64.encode(n)}function QA(n){return async function({wallet:T,tx:o}){let{msgs:f,accountNumber:t,sequence:C,chainId:H,fee:A,memo:_}=typeof o==="string"?JSON.parse(o):o,X=(await T.getAccounts())?.[0]?.address||"",B=await Co(n),U=await zo(),q=await uT(T,{aminoTypes:B,registry:U}),G=[];for(let N of f){let Y=await Ho(N,n);G.push(Y)}let{signatures:[w]}=await q.sign(X,G,A,_,{accountNumber:t,chainId:H,sequence:C});return{bodyBytes:await Qy({chain:n,memo:_,msgs:f.map(Ao)}),signature:LA(w)}}}function ZA({prefix:n,chain:y}){return async function(o,f,t,C,H){let A=await e.getRPCUrl(y),{encodeSecp256k1Pubkey:_,pubkeyToAddress:X}=(await import("@cosmjs/amino")).default,{makeMultisignedTxBytes:B}=(await import("@cosmjs/stargate")).default,{sequence:U,fee:q}=JSON.parse(o),G=await lC(t,C),w=f.map((Y)=>[X(_(Uo.base64.decode(Y.pubKey)),n),Uo.base64.decode(Y.signature)]),Q=await sn(A),{transactionHash:N}=await Q.broadcastTx(B(G,U,q,H,new Map(w)));return N}}async function lC(n,y,T=!0){let{createMultisigThresholdPubkey:o,encodeSecp256k1Pubkey:f}=(await import("@cosmjs/amino")).default;return o(n.map((t)=>f(Uo.base64.decode(t))),y,T)}function JA(n){return Uo.base64.decode(n)}async function YA({privateKey:n,message:y}){let{Secp256k1:T}=(await import("@cosmjs/crypto")).default,o=await T.createSignature(Uo.base64.decode(y),n);return Uo.base64.encode(Buffer.concat([o.r(32),o.s(32)]))}function iT({chain:n,...y}){let{isStagenet:T}=e.SKConfig.get("envs"),o=e.SKConfig.get("thornodeUrls"),f=n===e.Chain.Maya,t=vo.match({isMayachain:f,isStagenet:T}).with({isMayachain:!0},({isStagenet:q})=>q?o.MAYA_STAGENET:o.MAYA).otherwise(({isStagenet:q})=>q?o.THOR_STAGENET:o.THOR),C=`${T?"s":""}${e.CosmosChainPrefixes[n]}`,H="index"in y?y.index||0:0,A="derivationPath"in y&&y.derivationPath?y.derivationPath:e.updateDerivationPath(e.NetworkDerivationPath[n],{index:H}),_=Jy({chain:n,...y}),X=an(n);async function B(){let q,G=`${t}/${f?"mayachain":"thorchain"}/constants`;try{let{int_64_values:{NativeTransactionFee:w}}=await e.RequestClient.get(G);if(!w||Number.isNaN(w)||w<0)throw new e.SwapKitError("toolbox_cosmos_invalid_fee",{nativeFee:w.toString()});q=new e.SwapKitNumber(w)}catch{q=new e.SwapKitNumber({decimal:e.getChainConfig(n).baseDecimal,value:f?1:0.02})}return{[e.FeeOption.Average]:q,[e.FeeOption.Fast]:q,[e.FeeOption.Fastest]:q}}async function U({assetValue:q,memo:G="",recipient:w}){let Q=await e.getRPCUrl(n),N=await vo.match(y).with({phrase:vo.P.string},({phrase:R})=>_.getSignerFromPhrase({derivationPath:A,phrase:R})).with({signer:vo.P.any},({signer:R})=>R).otherwise(()=>{return}),{TxRaw:Y}=await import("cosmjs-types/cosmos/tx/v1beta1/tx"),z=(await N?.getAccounts())?.[0]?.address;if(!(z&&N))throw new e.SwapKitError("toolbox_cosmos_no_signer");let J="signAmino"in N,l=await zo(),M=await Co(n),W=await No(Q,N,{aminoTypes:M,registry:l}),Z=Uf({assetValue:q,memo:G,recipient:w,sender:z});if(J){let R=await Ho(Z,n),{signatures:k,authInfoBytes:u}=await W.sign(z,[R],X,G),K=Y.encode({authInfoBytes:u,bodyBytes:await Qy({chain:n,memo:G,msgs:[Z].map(Ao)}),signatures:k}).finish();return(await W.broadcastTx(K)).transactionHash}let D=Ao(Z),L=await Ho(D,n);return(await W.signAndBroadcast(z,[L],X,G)).transactionHash}return{..._,broadcastMultisigTx:ZA({chain:n,prefix:C}),buildAminoMsg:Uf,buildEncodedTxBody:Qy,convertToSignable:Ho,createDefaultAminoTypes:()=>Co(n),createDefaultRegistry:zo,createMultisig:lC,createTransaction:vT,deposit:U,getFees:B,importSignature:JA,parseAminoMessageForDirectSigning:Ao,pubkeyToAddress:async(q)=>{let{pubkeyToAddress:G}=(await import("@cosmjs/amino")).default;return G(q,C)},secp256k1HdWalletFromMnemonic:MA({derivationPath:e.derivationPathToString(A),prefix:C}),signMultisigTx:QA(n),signWithPrivateKey:YA,transfer:U}}var Uo,e,vo;var hT=p(()=>{VT();Ly();wf();Uo=require("@scure/base"),e=require("@swapkit/helpers"),vo=require("ts-pattern")});var wo,NA=(n,y)=>{switch(n){case wo.Chain.Cosmos:case wo.Chain.Kujira:case wo.Chain.Noble:return Jy({chain:n,...y});case wo.Chain.Maya:case wo.Chain.THORChain:return iT({chain:n,...y});default:throw new wo.SwapKitError("toolbox_cosmos_not_supported",{chain:n})}};var XC=p(()=>{wf();hT();wo=require("@swapkit/helpers");wf();hT()});var qf={};Mn(qf,{verifySignature:()=>qC,transferMsgAmino:()=>ET,toBase64:()=>CA,parseAminoMessageForDirectSigning:()=>Ao,getSignerFromPrivateKey:()=>qA,getSignerFromPhrase:()=>KT,getMsgSendDenom:()=>to,getFeeRateFromSwapKit:()=>GA,getDenomWithChain:()=>My,getDefaultChainFee:()=>an,getCosmosToolbox:()=>NA,getCosmosAddressValidator:()=>GC,getAssetFromDenom:()=>IT,fromBase64:()=>HA,fetchFeeRateFromSwapKit:()=>cT,estimateTransactionFee:()=>lA,depositMsgAmino:()=>bT,createTransaction:()=>vT,createThorchainToolbox:()=>iT,createStargateClient:()=>sn,createSigningStargateClient:()=>No,createOfflineStargateClient:()=>uT,createDefaultRegistry:()=>zo,createDefaultAminoTypes:()=>Co,createCosmosToolbox:()=>Jy,cosmosCreateTransaction:()=>PT,convertToSignable:()=>Ho,buildTransferTx:()=>yC,buildEncodedTxBody:()=>Qy,buildDepositTx:()=>fC,buildAminoMsg:()=>Uf,bech32ToBase64:()=>Wy,base64ToBech32:()=>By,YUM_KUJIRA_FACTORY_DENOM:()=>r0,USK_KUJIRA_FACTORY_DENOM:()=>kT,THORCHAIN_GAS_VALUE:()=>UA,MAYA_GAS_VALUE:()=>wA,DEFAULT_NOBLE_FEE_MAINNET:()=>a0,DEFAULT_KUJI_FEE_MAINNET:()=>d0,DEFAULT_COSMOS_FEE_MAINNET:()=>g0});module.exports=Jn(qf);var Gf=p(()=>{VT();XC();Ly()});function zA({builder:n,grouping:y="na",orders:T}){return{builder:n,grouping:y,orders:T,type:"order"}}function DA({cancels:n}){return{cancels:n,type:"cancel"}}function OA({cancels:n}){return{cancels:n,type:"cancelByCloid"}}function RA({oid:n,order:y}){return{oid:n,order:y,type:"modify"}}function xA({modifies:n}){return{modifies:n,type:"batchModify"}}function FA({asset:n,isCross:y,leverage:T}){return{asset:n,isCross:y,leverage:T,type:"updateLeverage"}}function SA({asset:n,isBuy:y,ntli:T}){return{asset:n,isBuy:y,ntli:T,type:"updateIsolatedMargin"}}function pA({asset:n,leverage:y}){return{asset:n,leverage:y,type:"topUpIsolatedOnlyMargin"}}function kA({time:n}){return{time:n,type:"scheduleCancel"}}function uA({amount:n,hyperliquidChain:y,nonce:T,signatureChainId:o,toPerp:f}){return{amount:n,hyperliquidChain:y,nonce:T,signatureChainId:o,toPerp:f,type:"usdClassTransfer"}}function PA({amount:n,destination:y,destinationDex:T,fromSubAccount:o,hyperliquidChain:f,nonce:t,signatureChainId:C,sourceDex:H,token:A}){return{amount:n,destination:y,destinationDex:T,fromSubAccount:o,hyperliquidChain:f,nonce:t,signatureChainId:C,sourceDex:H,token:A,type:"sendAsset"}}function IA({agentAddress:n,agentName:y,hyperliquidChain:T,nonce:o,signatureChainId:f}){return{agentAddress:n,agentName:y,hyperliquidChain:T,nonce:o,signatureChainId:f,type:"approveAgent"}}function $A({builder:n,hyperliquidChain:y,maxFeeRate:T,nonce:o,signatureChainId:f}){return{builder:n,hyperliquidChain:y,maxFeeRate:T,nonce:o,signatureChainId:f,type:"approveBuilderFee"}}function EA({hyperliquidChain:n,isUndelegate:y,nonce:T,signatureChainId:o,validator:f,wei:t}){return{hyperliquidChain:n,isUndelegate:y,nonce:T,signatureChainId:o,type:"tokenDelegate",validator:f,wei:t}}function Sn(...n){let y=n.reduce((f,t)=>f+t.length,0),T=new Uint8Array(y),o=0;for(let f of n)T.set(f,o),o+=f.length;return T}function cA(n,y,T){if(T<y)return new Uint8Array([n+T]);if(T<=255)return new Uint8Array([n+y,T]);if(T<=65535)return new Uint8Array([n+y+1,T>>8,T&255]);return new Uint8Array([n+y+2,T>>>24&255,T>>>16&255,T>>>8&255,T&255])}function qo(n,y){let T=new Uint8Array(y),o=n;for(let f=y-1;f>=0;f-=1)T[f]=Number(o&0xffn),o>>=8n;return T}function WC(n){if(n>=0n){if(n<=0x7fn)return new Uint8Array([Number(n)]);if(n<=0xffn)return new Uint8Array([204,Number(n)]);if(n<=0xffffn)return Sn(new Uint8Array([205]),qo(n,2));if(n<=0xffffffffn)return Sn(new Uint8Array([206]),qo(n,4));return Sn(new Uint8Array([207]),qo(n,8))}if(n>=-32n)return new Uint8Array([256+Number(n)]);if(n>=-128n)return new Uint8Array([208,256+Number(n)]);if(n>=-32768n)return Sn(new Uint8Array([209]),qo(BigInt.asUintN(16,n),2));if(n>=-2147483648n)return Sn(new Uint8Array([210]),qo(BigInt.asUintN(32,n),4));return Sn(new Uint8Array([211]),qo(BigInt.asUintN(64,n),8))}function LC(n){let y=jA.encode(n);if(y.length<32)return Sn(new Uint8Array([160+y.length]),y);return Sn(cA(217,0,y.length),y)}function iA(n){let y=n.map((o)=>mT(o)),T=n.length<16?new Uint8Array([144+n.length]):n.length<=65535?new Uint8Array([220,n.length>>8,n.length&255]):new Uint8Array([221,n.length>>>24&255,n.length>>>16&255,n.length>>>8&255,n.length&255]);return Sn(T,...y)}function hA(n){let y=Object.entries(n).filter(([,o])=>typeof o<"u"),T=y.length<16?new Uint8Array([128+y.length]):y.length<=65535?new Uint8Array([222,y.length>>8,y.length&255]):new Uint8Array([223,y.length>>>24&255,y.length>>>16&255,y.length>>>8&255,y.length&255]);return Sn(T,...y.flatMap(([o,f])=>[LC(o),mT(f)]))}function mT(n){if(n===null)return new Uint8Array([192]);if(typeof n==="boolean")return new Uint8Array([n?195:194]);if(typeof n==="string")return LC(n);if(typeof n==="number"){if(!Number.isFinite(n)||!Number.isInteger(n))throw new lf.SwapKitError("helpers_invalid_params",{message:"Hyperliquid msgpack only supports integers"});return WC(BigInt(n))}if(typeof n==="bigint")return WC(n);if(n instanceof Uint8Array){let y=n.length<=255?new Uint8Array([196,n.length]):n.length<=65535?new Uint8Array([197,n.length>>8,n.length&255]):new Uint8Array([198,n.length>>>24&255,n.length>>>16&255,n.length>>>8&255,n.length&255]);return Sn(y,n)}if(Array.isArray(n))return iA(n);if(typeof n==="object")return hA(n);throw new lf.SwapKitError("helpers_invalid_params",{message:`Unsupported Hyperliquid msgpack value: ${String(n)}`})}function mA(n){let y=n.startsWith("0x")?n.slice(2):n;if(y.length%2!==0||/[^a-fA-F0-9]/u.test(y))throw new lf.SwapKitError("helpers_invalid_params",{hexValue:n});let T=new Uint8Array(y.length/2);for(let o=0;o<y.length;o+=2)T[o/2]=Number.parseInt(y.slice(o,o+2),16);return T}function QC(n){return{domain:bA,message:{connectionId:n,source:"a"},primaryType:"Agent",types:{Agent:[...vA.Agent]}}}function ZC(n){let y=KA[n.type],T=VA[n.type],{type:o,...f}=n;return{domain:{chainId:Number.parseInt(f.signatureChainId||"0xa4b1",16),name:"HyperliquidSignTransaction",verifyingContract:BC,version:"1"},message:{...f,hyperliquidChain:f.hyperliquidChain||MC},primaryType:y,types:{[y]:T}}}function JC(n){let y=Xf.Signature.from(n);return{r:y.r,s:y.s,v:y.v}}function YC(n,y,{expiresAfter:T,vaultAddress:o}={}){let f=mT(n),t=qo(BigInt(y),8),C=o?Sn(new Uint8Array([1]),mA(o.toLowerCase())):new Uint8Array([0]),H=typeof T==="number"?Sn(new Uint8Array([0]),qo(BigInt(T),8)):new Uint8Array;return Xf.keccak256(Sn(f,t,C,H))}function NC(n){let y=n.hyperliquidChain||MC;switch(n.type){case"approveAgent":return{...n,agentAddress:n.agentAddress.toLowerCase(),hyperliquidChain:y};case"approveBuilderFee":return{...n,builder:n.builder.toLowerCase(),hyperliquidChain:y};case"sendAsset":return{...n,destination:n.destination.toLowerCase(),fromSubAccount:n.fromSubAccount.toLowerCase(),hyperliquidChain:y};case"tokenDelegate":return{...n,hyperliquidChain:y,validator:n.validator.toLowerCase()};case"usdClassTransfer":return{...n,hyperliquidChain:y};default:return n}}var lf,Xf,BC="0x0000000000000000000000000000000000000000",bA,vA,MC="Mainnet",VA,KA,jA;var zC=p(()=>{lf=require("@swapkit/helpers"),Xf=require("ethers"),bA={chainId:1337,name:"Exchange",verifyingContract:BC,version:"1"},vA={Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]},VA={approveAgent:[{name:"hyperliquidChain",type:"string"},{name:"agentAddress",type:"address"},{name:"agentName",type:"string"},{name:"nonce",type:"uint64"}],approveBuilderFee:[{name:"hyperliquidChain",type:"string"},{name:"maxFeeRate",type:"string"},{name:"builder",type:"address"},{name:"nonce",type:"uint64"}],sendAsset:[{name:"hyperliquidChain",type:"string"},{name:"destination",type:"string"},{name:"sourceDex",type:"string"},{name:"destinationDex",type:"string"},{name:"token",type:"string"},{name:"amount",type:"string"},{name:"fromSubAccount",type:"string"},{name:"nonce",type:"uint64"}],tokenDelegate:[{name:"hyperliquidChain",type:"string"},{name:"validator",type:"address"},{name:"wei",type:"uint64"},{name:"isUndelegate",type:"bool"},{name:"nonce",type:"uint64"}],usdClassTransfer:[{name:"hyperliquidChain",type:"string"},{name:"amount",type:"string"},{name:"toPerp",type:"bool"},{name:"nonce",type:"uint64"}]},KA={approveAgent:"HyperliquidTransaction:ApproveAgent",approveBuilderFee:"HyperliquidTransaction:ApproveBuilderFee",sendAsset:"HyperliquidTransaction:SendAsset",tokenDelegate:"HyperliquidTransaction:TokenDelegate",usdClassTransfer:"HyperliquidTransaction:UsdClassTransfer"},jA=new TextEncoder});function $n(n,y){if(!dT(n))throw new a.SwapKitError(y,{address:n});return n.toLowerCase()}async function Do(n){let y=await Wf();return a.RequestClient.post(`${y}/info`,{json:n})}function n_({dex:n,user:y}){return Do({...n?{dex:n}:{},type:"clearinghouseState",user:$n(y,"helpers_invalid_params")})}function o_({user:n}){return Do({type:"spotClearinghouseState",user:$n(n,"helpers_invalid_params")})}function y_({dex:n,user:y}){return Do({...n?{dex:n}:{},type:"openOrders",user:$n(y,"helpers_invalid_params")})}function f_({dex:n,user:y}){return Do({...n?{dex:n}:{},type:"frontendOpenOrders",user:$n(y,"helpers_invalid_params")})}function T_({oidOrCloid:n,user:y}){return Do({oid:n,type:"orderStatus",user:$n(y,"helpers_invalid_params")})}function t_({aggregateByTime:n,user:y}){return Do({...typeof n==="boolean"?{aggregateByTime:n}:{},type:"userFills",user:$n(y,"helpers_invalid_params")})}function C_({aggregateByTime:n,endTime:y,startTime:T,user:o}){return Do({...typeof n==="boolean"?{aggregateByTime:n}:{},...typeof y==="number"?{endTime:y}:{},startTime:T,type:"userFillsByTime",user:$n(o,"helpers_invalid_params")})}function DC({coin:n,token:y,value:T,spotMeta:o}){if(!T||Number(T)<=0)return null;let f=n?.toUpperCase()||`TOKEN-${y||"UNKNOWN"}`,t=rA[f]||xC,C=o?.tokens?.find((A)=>A.name===n||y!==void 0&&A.index===Number(y)),H=C?`${mn}.${f}-${C.name}:${C.tokenId}`:`${mn}.${f}`;return new a.AssetValue({decimal:t,identifier:H,value:T})}function H_(n){let y=new Map;for(let T of n){let o=T.toString({includeSynthProtocol:!0}),f=y.get(o);y.set(o,f?f.add(T):T)}if(![...y.values()].some((T)=>T.isGasAsset||T.ticker==="HYPE")){let T=a.AssetValue.from({chain:mn,value:0});y.set(T.toString({includeSynthProtocol:!0}),T)}return[...y.values()]}async function Wf(){try{return await a.getRPCUrl(mn)}catch{let[n]=a.getChainConfig(mn).rpcUrls;if(!n)throw new a.SwapKitError("helpers_chain_no_public_or_set_rpc_url",{chain:mn});return n}}async function gT(){return`${await Wf()}/exchange`}function A_(n){let y=eA[n.type],{type:T,...o}=n,f=sA[T];return{domain:{chainId:Number.parseInt(n.signatureChainId,16),name:"HyperliquidSignTransaction",verifyingContract:aA,version:"1"},message:o,primaryType:y,types:{[y]:f}}}async function FC({action:n,expiresAfter:y,nonce:T,vaultAddress:o}){let f=T||Date.now(),t=o?$n(o,"helpers_invalid_params"):void 0,C=await gT(),H=YC(n,f,{expiresAfter:y,vaultAddress:t});return{action:n,endpoint:C,expiresAfter:y,nonce:f,typedData:QC(H),vaultAddress:t}}async function SC({action:n,nonce:y,signatureChainId:T}){let o=y||n.nonce||Date.now(),f=T||n.signatureChainId||"0xa4b1",t=NC({...n,nonce:o,signatureChainId:f});return{action:t,endpoint:await gT(),nonce:o,typedData:ZC(t)}}async function rT({assetValue:n,recipient:y,sender:T,signatureChainId:o,time:f}){let t=$n(y,"core_transaction_invalid_recipient_address"),C=$n(T,"core_transaction_invalid_sender_address"),H=await gT(),A=n.getValue("string"),_=f||Date.now(),X=n.address;if(!X)throw new a.SwapKitError("helpers_invalid_params",{asset:n.toString(),from:C});let B={amount:A,destination:t,hyperliquidChain:gA,signatureChainId:o||dA,time:_,token:X,type:"spotSend"};return{action:B,endpoint:H,nonce:_,typedData:A_(B)}}async function OC(n){let y=await a.RequestClient.post(n.endpoint,{json:{action:n.action,...typeof n.expiresAfter==="number"?{expiresAfter:n.expiresAfter}:{},nonce:n.nonce,signature:n.signature,...n.vaultAddress?{vaultAddress:n.vaultAddress}:{}}});if(y.status!=="ok")throw new a.SwapKitError("core_transaction_failed",{response:y});return y}async function __(n,y){let T=await Wf(),o=y-5000;for(let f=0;f<5;f++){if(f>0)await new Promise((t)=>setTimeout(t,1000));try{let t=await a.RequestClient.post(`${T}/info`,{json:{startTime:o,type:"userNonFundingLedgerUpdates",user:n}}),C=Array.isArray(t)?t.find((H)=>H.time&&H.time>=y&&(H.delta?.type==="spotTransfer"||H.delta?.type==="internalTransfer")):void 0;if(C?.hash)return C.hash}catch{}}return""}function dT(n){return n.startsWith("0x")&&wy(n)}function U_(n){let y=xn(mn),T=n&&"index"in n?n.index||0:0,o=a.derivationPathToString(n&&"derivationPath"in n&&n.derivationPath?n.derivationPath:a.updateDerivationPath(a.NetworkDerivationPath[mn],{index:T})),f,t=!1;function C(){if(t)return f;return f=Vo.match(n).with({phrase:Vo.P.string},({phrase:U})=>{return RC.HDNodeWallet.fromPhrase(U,void 0,o)}).with({signer:Vo.P.not(Vo.P.nullish)},({signer:U})=>U).otherwise(()=>{return}),t=!0,f}async function H(){let U=C();return U?await U.getAddress():""}async function A(U){let q=C();if(!q)throw new a.SwapKitError("toolbox_hypercore_no_signer");let G=await q.signTypedData(U.typedData.domain,U.typedData.types,U.typedData.message);return{action:U.action,endpoint:U.endpoint,nonce:U.nonce,signature:JC(G),..."expiresAfter"in U?{expiresAfter:U.expiresAfter}:{},..."vaultAddress"in U?{vaultAddress:U.vaultAddress}:{}}}async function _(U){let q=$n(U,"helpers_invalid_params");try{let G=await Wf(),[w,Q,N]=await Promise.all([a.RequestClient.post(`${G}/info`,{json:{type:"spotClearinghouseState",user:q}}),a.RequestClient.post(`${G}/info`,{json:{type:"clearinghouseState",user:q}}),a.RequestClient.post(`${G}/info`,{json:{type:"spotMeta"}})]),Y=(w.spotState?.balances||w.balances||[]).map(({coin:J,token:l,total:M})=>DC({coin:J,spotMeta:N,token:l,value:M})).filter((J)=>!!J),z=DC({coin:"USDC",spotMeta:N,value:Q.withdrawable||Q.marginSummary?.accountValue||Q.marginSummary?.totalRawUsd});return H_(z?[...Y,z]:Y)}catch{return y(q)}}async function X(U){let q=C();if(!q)throw new a.SwapKitError("toolbox_hypercore_no_signer");let G=U.sender||await q.getAddress(),w=await rT({...U,feeRate:0,sender:G}),Q=await A(w);return await OC(Q),__(G,w.nonce)}function B(){return a.AssetValue.from({chain:mn,value:0})}return{broadcastTransaction:OC,createL1ActionRequest:FC,createTransaction:rT,createUserSignedActionRequest:SC,estimateTransactionFee:B,getAddress:H,getBalance:_,getState:{clearinghouse:n_,frontendOpenOrders:f_,openOrders:y_,orderStatus:T_,spotClearinghouse:o_,userFills:t_,userFillsByTime:C_},signTransaction:A,transfer:X,validateAddress:dT}}var a,RC,Vo,mn,xC,rA,gA="Mainnet",dA="0xa4b1",aA="0x0000000000000000000000000000000000000000",sA,eA;var pC=p(()=>{OT();dn();zC();a=require("@swapkit/helpers"),RC=require("ethers"),Vo=require("ts-pattern"),mn=a.Chain.HyperCore,{baseDecimal:xC}=a.getChainConfig(mn),rA={HYPE:xC,USDC:6,USDT:6},sA={spotSend:[{name:"hyperliquidChain",type:"string"},{name:"destination",type:"string"},{name:"token",type:"string"},{name:"amount",type:"string"},{name:"time",type:"uint64"}]},eA={spotSend:"HyperliquidTransaction:SpotSend"}});var aT={};Mn(aT,{validateHyperCoreAddress:()=>dT,getHyperCoreToolbox:()=>U_,createUserSignedActionRequest:()=>SC,createTransaction:()=>rT,createL1ActionRequest:()=>FC,buildUsdClassTransferAction:()=>uA,buildUpdateLeverageAction:()=>FA,buildUpdateIsolatedMarginAction:()=>SA,buildTopUpIsolatedOnlyMarginAction:()=>pA,buildTokenDelegateAction:()=>EA,buildSendAssetAction:()=>PA,buildScheduleCancelAction:()=>kA,buildOrderAction:()=>zA,buildModifyAction:()=>RA,buildCancelByCloidAction:()=>OA,buildCancelAction:()=>DA,buildBatchModifyAction:()=>xA,buildApproveBuilderFeeAction:()=>$A,buildApproveAgentAction:()=>IA});module.exports=Jn(aT);var sT=p(()=>{pC()});async function PC(n){let y=r.AssetValue.from({address:n,chain:r.Chain.Solana});if(y.symbol!=="UNKNOWN")return{decimals:y.decimal||0,id:n,logoURI:y.getIconUrl(),name:y.symbol,symbol:y.ticker};let T=`https://lite-api.jup.ag/tokens/v2/search?query=${encodeURIComponent(n)}`;try{let o=await fetch(T);if(!o.ok)return null;let f=await o.json();if(!Array.isArray(f)||f.length===0)return null;return f.find((C)=>C.id===n)||null}catch{return null}}async function w_(n){let y=await en(),{PublicKey:T}=await import("@solana/web3.js"),{TOKEN_PROGRAM_ID:o}=await import("@solana/spl-token"),f=new T(n),{baseDecimal:t}=r.getChainConfig(r.Chain.Solana),C=await y.getBalance(f),H=[r.AssetValue.from({chain:r.Chain.Solana,fromBaseDecimal:t,value:C||0})],A=await y.getParsedTokenAccountsByOwner(f,{programId:o});for(let{account:_}of A.value){let X=_.data.parsed.info,B=X.mint,U=X.tokenAmount.amount;if(Number(U)===0)continue;let q=await PC(B),G=q?.symbol||"UNKNOWN",w=q?.decimals||X.tokenAmount.decimals;H.push(r.AssetValue.from({asset:`${r.Chain.Solana}.${G}-${B}`,fromBaseDecimal:w,value:U}))}return H}function nt(n){try{let y=new no.PublicKey(n);return no.PublicKey.isOnCurve(y.toBytes())}catch{return!1}}function q_(n){let y=n&&"index"in n?n.index||0:0,T=r.derivationPathToString(n&&"derivationPath"in n&&n.derivationPath?n.derivationPath:r.updateDerivationPath(r.NetworkDerivationPath[r.Chain.Solana],{index:y})),o;async function f(){if(o)return o;return o=await Yy.match(n).with({phrase:Yy.P.string},({phrase:C})=>eT({derivationPath:T,phrase:C})).with({signer:Yy.P.any},({signer:C})=>C).otherwise(()=>{return}),o}async function t(){let C=await f();return C?.publicKey?uC(C.publicKey):""}return{broadcastTransaction:Bf(en),createKeysForPath:eT,createTransaction:ot(en),createTransactionFromInstructions:W_,estimateTransactionFee:G_(en),getAddress:t,getAddressFromPubKey:uC,getBalance:xn(r.Chain.Solana),getBalanceFromRPC:w_,getConnection:en,getPubkeyFromAddress:(C)=>new no.PublicKey(C),signAndBroadcastTransaction:async(C)=>{let H=await kC(en,f)(C);return Bf(en)(H)},signTransaction:kC(en,f),transfer:B_(en,f),validateAddress:nt}}function G_(n){return async({recipient:y,assetValue:T,memo:o,isProgramDerivedAddress:f,sender:t})=>{let C=await n(),A=(await ot(n)({assetValue:T,isProgramDerivedAddress:f,memo:o,recipient:y,sender:t})).compileMessage(),_=await C.getFeeForMessage(A);if(_.value===null)throw new r.SwapKitError("toolbox_fee_estimation_failed","Could not estimate Solana fee.");let{baseDecimal:X}=r.getChainConfig(r.Chain.Solana);return r.AssetValue.from({chain:r.Chain.Solana,fromBaseDecimal:X,value:_.value})}}async function en(){let{Connection:n}=await import("@solana/web3.js"),y=await r.getRPCUrl(r.Chain.Solana);return new n(y,{commitment:"confirmed",fetchMiddleware:(T,o,f)=>{let t={};for(let[C,H]of Object.entries(o?.headers??{})){let A=C.toLowerCase();if(A!=="pragma"&&A!=="solana-client")t[C]=H}f(T,{...o,headers:t})}})}function l_(n){return async({assetValue:y,recipient:T,sender:o,isProgramDerivedAddress:f})=>{let t=await n(),C=new no.PublicKey(o);if(y.isGasAsset){let{Transaction:H,SystemProgram:A}=await import("@solana/web3.js");return new H().add(A.transfer({fromPubkey:C,lamports:y.getBaseValue("number"),toPubkey:new no.PublicKey(T)}))}if(y.address)return X_({amount:y.getBaseValue("number"),connection:t,decimals:y.decimal,from:C,isProgramDerivedAddress:f,recipient:T,tokenAddress:y.address});return}}async function X_({tokenAddress:n,recipient:y,from:T,connection:o,amount:f,decimals:t,isProgramDerivedAddress:C}){let{getAssociatedTokenAddress:H,getAccount:A,createAssociatedTokenAccountInstruction:_,createTransferCheckedInstruction:X}=await import("@solana/spl-token"),{Transaction:B}=await import("@solana/web3.js"),U=new B,q=new no.PublicKey(n),G=await H(q,T),w=new no.PublicKey(y),Q=await H(q,w,C),N=!1;try{await A(o,Q),N=!0}catch{}if(!N)U.add(_(T,Q,w,q));return U.add(X(G,q,Q,T,f,t)),U}function ot(n){return async({recipient:y,assetValue:T,memo:o,isProgramDerivedAddress:f,sender:t})=>{let{createMemoInstruction:C}=await import("@solana/spl-memo"),H=new no.PublicKey(t);if(!(f||nt(y)))throw new r.SwapKitError("core_transaction_invalid_recipient_address");let A=await n(),_=await l_(n)({assetValue:T,isProgramDerivedAddress:f,recipient:y,sender:t});if(!_)throw new r.SwapKitError("core_transaction_invalid_sender_address");if(o)_.add(C(o));let X=await A.getLatestBlockhash();return _.recentBlockhash=X.blockhash,_.feePayer=H,_}}async function W_({instructions:n}){let{Transaction:y}=await import("@solana/web3.js"),T=new y().add(...n);if(!T)throw new r.SwapKitError("core_transaction_invalid_sender_address");return T}function B_(n,y){return async({recipient:T,assetValue:o,memo:f,isProgramDerivedAddress:t})=>{let C=await y();if(!C)throw new r.SwapKitError("core_transaction_invalid_sender_address");let H=C.publicKey?.toString()??(await C.connect()).publicKey.toString(),A=await ot(n)({assetValue:o,isProgramDerivedAddress:t,memo:f,recipient:T,sender:H});if("signTransaction"in C){let _=await C.signTransaction(A);return Bf(n)(_)}return A.sign(C),Bf(n)(A)}}function Bf(n){return async(y)=>{return(await n()).sendRawTransaction(y.serialize())}}function kC(n,y){return async(T)=>{let o=await y();if(!o)throw new r.SwapKitError("toolbox_solana_no_signer");let{VersionedTransaction:f}=await import("@solana/web3.js");if(!(T instanceof f)){let C=await(await n()).getLatestBlockhash();T.recentBlockhash=C.blockhash,T.feePayer=o.publicKey||void 0}if("connect"in o)return await o.signTransaction(T);return T.sign([o]),T}}async function eT({phrase:n,derivationPath:y=r.DerivationPath.SOL}){let{HDKey:T}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:o}=await import("@scure/bip39"),{Keypair:f}=await import("@solana/web3.js"),t=o(n),C=T.fromMasterSeed(t);return f.fromSeed(C.derive(y,!0).privateKey)}function uC(n){return n.toString()}var no,r,Yy;var IC=p(()=>{dn();no=require("@solana/web3.js"),r=require("@swapkit/helpers"),Yy=require("ts-pattern")});var yt={};Mn(yt,{validateSolanaAddress:()=>nt,getSolanaToolbox:()=>q_,fetchTokenMetaData:()=>PC,createKeysForPath:()=>eT});module.exports=Jn(yt);var ft=p(()=>{IC()});function Mf(n){if(!n)return!1;return/^0x[0-9a-fA-F]{1,64}$/.test(n)}async function Lf({phrase:n,derivationPath:y=c.DerivationPath.STRK}){let{HDKey:T}=await import("@scure/bip32"),{mnemonicToSeedSync:o}=await import("@scure/bip39"),{ec:f,hash:t,encode:C,CallData:H}=await import("starknet"),A=o(n),X=T.fromMasterSeed(A).derive(y);if(!X.privateKey)throw new c.SwapKitError("toolbox_starknet_no_signer");let B=C.addHexPrefix(Buffer.from(X.privateKey).toString("hex")),U=f.starkCurve.grindKey(B),q=C.addHexPrefix(U),G=f.starkCurve.getStarkKey(q),w=H.compile([G,0]);return{address:t.calculateContractAddressFromHash(G,tt,w,0),privateKey:q,publicKey:G}}async function Ct({phrase:n,derivationPath:y=c.DerivationPath.STRK}){let{Account:T,RpcProvider:o}=await import("starknet"),{privateKey:f,address:t}=await Lf({derivationPath:y,phrase:n}),C=await c.getRPCUrl(c.Chain.Starknet),H=new o({nodeUrl:C});return new T({address:t,provider:H,signer:f})}function EC(n){let y=c.Chain.Starknet,T=n&&"index"in n?n.index||0:0,o=c.derivationPathToString(n&&"derivationPath"in n&&n.derivationPath?n.derivationPath:c.updateDerivationPath(c.NetworkDerivationPath[y],{index:T})),f,t,C;async function H(){if(t)return t;let{RpcProvider:l}=await import("starknet"),M=await c.getRPCUrl(y);return t=new l({nodeUrl:M}),t}async function A(l){let M=await H(),W=l||await U();if(!W)return!1;try{return await M.getClassHashAt(W),!0}catch(Z){if(Z instanceof Error&&Z.message.includes("Contract not found"))return!1;let D=Z;if(D?.code===20||D?.code===19)return!1;throw Z}}async function _(){let{CallData:l,hash:M}=await import("starknet"),W=await H(),Z=await B();if(!Z)throw new c.SwapKitError("toolbox_starknet_no_signer");if(!C)throw new c.SwapKitError({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Cannot deploy account: public key not available. Use phrase-based wallet initialization."}});if(await A())return Z.address;let L=l.compile([C,0]);if(M.calculateContractAddressFromHash(C,tt,L,0).toLowerCase()!==Z.address.toLowerCase())throw new c.SwapKitError({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Address mismatch during deployment verification"}});let R={addressSalt:C,classHash:tt,constructorCalldata:L},{transaction_hash:k}=await Z.deployAccount(R);return await W.waitForTransaction(k),k}async function X(){if(!await A()){if(!C)throw new c.SwapKitError({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Starknet account is not deployed and cannot be auto-deployed without public key. Use phrase-based wallet initialization."}});await _()}}async function B(){if(f)return f;return f=await En.match(n).with({phrase:En.P.string},async({phrase:l})=>{let{Account:M,RpcProvider:W}=await import("starknet"),{privateKey:Z,address:D,publicKey:L}=await Lf({derivationPath:o,phrase:l});C=L;let O=await c.getRPCUrl(c.Chain.Starknet),R=new W({nodeUrl:O});return new M({address:D,provider:R,signer:Z})}).with({address:En.P.string,privateKey:En.P.string},async({privateKey:l,address:M})=>{let{Account:W}=await import("starknet"),Z=await H();return new W({address:M,provider:Z,signer:l})}).with({signer:En.P.instanceOf(Object)},({signer:l})=>l).otherwise(()=>{return}),f}async function U(){return(await B())?.address??""}async function q(l){let M=await H(),{uint256:W,CallData:Z}=await import("starknet"),D=[],L=[Tt,$C];for(let O of L)try{let[R="0",k="0"]=await M.callContract({calldata:Z.compile({account:l}),contractAddress:O,entrypoint:"balanceOf"}),u=W.uint256ToBN({high:R,low:k});En.match(O).with(Tt,()=>{D.push(c.AssetValue.from({chain:y,value:u}))}).with($C,()=>{if(u>0n)D.push(c.AssetValue.from({asset:`${y}.ETH-${O}`,value:u}))}).otherwise(()=>{})}catch{}return D}async function G({recipient:l,assetValue:M}){let{CallData:W,uint256:Z}=await import("starknet");if(!Mf(l))throw new c.SwapKitError("core_transaction_invalid_recipient_address",{address:l});let D=M.isGasAsset?Tt:M.address;if(!D)throw new c.SwapKitError("toolbox_starknet_invalid_address",{address:D,assetValue:M});let L=Z.bnToUint256(M.getBaseValue("bigint"));return[{calldata:W.compile([l,L]),contractAddress:D,entrypoint:"transfer"}]}async function w({recipient:l,assetValue:M,sender:W}){let{baseDecimal:Z}=c.getChainConfig(c.Chain.Starknet),D=await B(),L=await En.match({sender:W,signer:D}).with({sender:En.P.string},async({sender:O})=>{let{Account:R}=await import("starknet"),k=await H();return new R({address:O,provider:k,signer:"0x0"})}).with({signer:En.P.nonNullable},({signer:O})=>O).otherwise((O)=>{throw new c.SwapKitError({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Estimating fee needs a valid sender address or signer",params:O}})});try{let O=await G({assetValue:M,recipient:l}),R=await L.estimateInvokeFee(O);if(R?.overall_fee)return c.AssetValue.from({chain:y,fromBaseDecimal:Z,value:R.overall_fee})}catch(O){throw new c.SwapKitError("toolbox_starknet_fee_estimation_failed",O)}return c.AssetValue.from({chain:y,value:"0.00001"})}async function Q({recipient:l,assetValue:M,memo:W}){let Z=await B();if(!Z)throw new c.SwapKitError("toolbox_starknet_no_signer");await X();let D=await G({assetValue:M,memo:W,recipient:l});return(await Z.execute(D)).transaction_hash}async function N(l){let M=await B();if(!M)throw new c.SwapKitError("toolbox_starknet_no_signer");let W=await M.signMessage(l);return Array.isArray(W)?W:[W.r.toString(),W.s.toString()]}async function Y(l){let M=await B();if(!M)throw new c.SwapKitError("toolbox_starknet_no_signer");return await X(),(await M.execute(l)).transaction_hash}function z(l){return Y(l)}function J(l,M=!0){try{return xn(y)(l,M)}catch{return q(l)}}return{broadcastTransaction:Y,createKeysForPath:Ct,createTransaction:G,deployAccount:_,estimateTransactionFee:w,getAddress:U,getBalance:J,getProvider:H,isAccountDeployed:A,signAndBroadcastTransaction:z,signMessage:N,transfer:Q,validateAddress:Mf}}var c,En,Tt="0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",$C="0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",tt="0x01a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003";var bC=p(()=>{dn();c=require("@swapkit/helpers"),En=require("ts-pattern")});var Qf={};Mn(Qf,{validateStarknetAddress:()=>Mf,starknetCreateKeysForPath:()=>Ct,getStarknetToolbox:()=>EC,deriveStarknetKeys:()=>Lf});module.exports=Jn(Qf);var Zf=p(()=>{bC()});async function KC(n,y,T,o=[],f){let t=await n.getCoins({coinType:T,cursor:f,owner:y}),C=[...o,...t.data];return t.hasNextPage?KC(n,y,T,C,t.nextCursor):C}function M_(n,y,T){let o=y.reduce((A,_)=>A+BigInt(_.balance),0n);if(o<T)throw new yn.SwapKitError("toolbox_sui_insufficient_balance",{available:o.toString(),required:T.toString()});let{ids:f}=y.reduce((A,_)=>{if(A.total>=T)return A;return{ids:[...A.ids,_.coinObjectId],total:A.total+BigInt(_.balance)}},{ids:[],total:0n}),t=f[0],C=f.slice(1);if(C.length>0)n.mergeCoins(t,C);let[H]=n.splitCoins(t,[T]);return H}function jC(n){try{return VC.isValidSuiAddress(n)}catch{return!1}}function vC(n){return"signWithIntent"in n}function L_({provider:n,...y}={}){let T;async function o(){if(T)return T;return T=await Ny.match(y).with({phrase:Ny.P.string},async({phrase:G})=>{let{Ed25519Keypair:w}=await import("@mysten/sui/keypairs/ed25519");return w.deriveKeypair(G)}).with({signer:Ny.P.any},({signer:G})=>G).otherwise(()=>{return}),T}async function f(G=n){let{SuiClient:w,getFullnodeUrl:Q}=await import("@mysten/sui/client");return new w({url:G||Q("mainnet")})}async function t(){return(await o())?.toSuiAddress()||""}function C(G){try{let w=yn.AssetValue.from({address:G,chain:yn.Chain.Sui});return{asset:w.toString(),decimals:w.decimal}}catch{}return null}async function H(G){let w=G||await t();if(!w)throw new yn.SwapKitError("toolbox_sui_address_required");let{baseDecimal:Q,chain:N}=yn.getChainConfig(yn.Chain.Sui);try{let Y=await f(),{totalBalance:z}=await Y.getBalance({owner:w}),J=[yn.AssetValue.from({chain:N,fromBaseDecimal:Q,value:z})],l=await Y.getAllBalances({owner:w});for(let{coinType:M,totalBalance:W}of l){if(M==="0x2::sui::SUI"||Number(W)<=0)continue;let Z=C(M);if(Z)J.push(yn.AssetValue.from({asset:Z.asset,fromBaseDecimal:Z.decimals,value:W}))}return J}catch{return[yn.AssetValue.from({chain:N})]}}async function A(G){let w=yn.AssetValue.from({chain:yn.Chain.Sui,value:"0.01"});if(!G)return w;try{let Q=await f(),{txBytes:N}=await _(G),{effects:{status:Y,gasUsed:z}}=await Q.dryRunTransactionBlock({transactionBlock:N});if(Y.status!=="success")return w;let J=Number(z.computationCost)+Number(z.storageCost)-Number(z.storageRebate);return yn.AssetValue.from({chain:yn.Chain.Sui,value:J.toString()})}catch{return w}}async function _({recipient:G,assetValue:w,gasBudget:Q,sender:N}){let{Transaction:Y}=await import("@mysten/sui/transactions"),z=N||await t();if(!z)throw new yn.SwapKitError("toolbox_sui_no_sender");try{let J=new Y;if(J.setSender(z),w.isGasAsset||w.symbol==="SUI"){let[W]=J.splitCoins(J.gas,[w.getBaseValue("string")]);J.transferObjects([W],G)}else{let W=w.address;if(!W)throw new yn.SwapKitError("toolbox_sui_missing_coin_type");let Z=await f(),D=w.getBaseValue("bigint"),L=await KC(Z,z,W);if(!L.length)throw new yn.SwapKitError("toolbox_sui_no_coins_found",{coinType:W});let O=M_(J,L,D);J.transferObjects([O],G)}if(Q)J.setGasBudget(Q);let l=await f(),M=await J.build({client:l});return{tx:J,txBytes:M}}catch(J){if(J instanceof yn.SwapKitError)throw J;throw new yn.SwapKitError("toolbox_sui_transaction_creation_error",{error:J})}}async function X(G){let w=await o();if(!w)throw new yn.SwapKitError("toolbox_sui_no_signer");if(G instanceof Uint8Array)return w.signTransaction(G);let{txBytes:Q}="tx"in G?G:await _(G);return w.signTransaction(Q)}async function B({assetValue:G,gasBudget:w,recipient:Q}){let N=await o();if(!N)throw new yn.SwapKitError("toolbox_sui_no_signer");let Y=N.toSuiAddress()||await t();if(!Y)throw new yn.SwapKitError("toolbox_sui_no_sender");let{txBytes:z}=await _({assetValue:G,gasBudget:w,recipient:Q,sender:Y}),J=await f();if(!vC(N)){let M=await N.signTransaction(z),{digest:W}=await J.executeTransactionBlock({signature:M.signature,transactionBlock:M.bytes});return W}let{digest:l}=await J.signAndExecuteTransaction({signer:N,transaction:z});return l}async function U(G){let w=await f(),{digest:Q}=await w.executeTransactionBlock({signature:G.signature,transactionBlock:G.bytes});return Q}async function q(G){let w=await o();if(!w)throw new yn.SwapKitError("toolbox_sui_no_signer");let Q=await f(),N;if(typeof G==="string")N=Uint8Array.from(Buffer.from(G,"base64"));else if(G instanceof Uint8Array)N=G;else N=await G.build({client:Q});if(!vC(w)){let z=await w.signTransaction(N),{digest:J}=await Q.executeTransactionBlock({signature:z.signature,transactionBlock:z.bytes});return J}let{digest:Y}=await Q.signAndExecuteTransaction({signer:w,transaction:N});return Y}return{broadcastTransaction:U,createTransaction:_,estimateTransactionFee:A,getAddress:t,getBalance:H,signAndBroadcastTransaction:q,signTransaction:X,transfer:B,validateAddress:jC}}var VC,yn,Ny;var cC=p(()=>{VC=require("@mysten/sui/utils"),yn=require("@swapkit/helpers"),Ny=require("ts-pattern")});var Jf={};Mn(Jf,{validateSuiAddress:()=>jC,getSuiToolbox:()=>L_});module.exports=Jn(Jf);var Yf=p(()=>{cC()});async function N_(){let n=Date.now();if(Nf&&n-hC<Y_)return Nf;try{return Nf=await mC.getHttpEndpoint(),hC=n,Nf}catch{return qn.getRPCUrl(qn.Chain.Ton)}}function z_(n={}){let y,T,o;async function f(){if(!y){let J=n.provider??await N_();y=new h.TonClient({endpoint:J})}return y}async function t(){return(await H()).address.toString()}async function C(){if(o)return o;return o=await Oo.match(n).with({phrase:Oo.P.string},async({phrase:J})=>rC.mnemonicToWalletKey(J.split(" "))).with({signer:Oo.P.any},({signer:J})=>J).otherwise(()=>{return}),o}async function H(J){if(!T||J){let l=await C(),M=await f(),W=J||l;if(!W)throw new qn.SwapKitError("core_wallet_connection_not_found");let Z=h.WalletContractV4.create({publicKey:W.publicKey,workchain:0});T=M.open(Z)}return T}let A=xn(qn.Chain.Ton);async function _({assetValue:J,recipient:l,memo:M,sender:W}){if(J.isGasAsset){let s=M?z(M).toBoc().toString("base64"):void 0;return[{address:l,amount:J.getBaseValue("string"),payload:s}]}let Z=J.address;if(!Z)throw new qn.SwapKitError({errorKey:"core_swap_contract_not_found",info:{asset:J.toString()}});let D=W??await t(),L=await N({jettonMasterAddress:Z,ownerAddress:D}),O=h.Address.parse(l),R=h.Address.parse(D),k=J.getBaseValue("bigint"),u=M?z(M):void 0,K=Y({destinationAddress:O,forwardPayload:u,jettonAmount:k,responseAddress:R});return[{address:L.toString(),amount:J_.toString(),payload:K.toBoc().toString("base64")}]}function X({sender:J,...l}){return _({...l,sender:J})}function B(J){return J.map((l)=>{let M=l.payload?h.Cell.fromBase64(l.payload):void 0,W=l.stateInit?h.loadStateInit(h.Cell.fromBase64(l.stateInit).asSlice()):void 0,Z=h.Address.parse(l.address),D=h.Address.isFriendly(l.address)?h.Address.parseFriendly(l.address).isBounceable:!0;return h.internal({body:M,bounce:D,init:W,to:Z,value:BigInt(l.amount)})})}async function U(J){let l=await C(),M=await H();if(!M||!l)throw new qn.SwapKitError("core_wallet_connection_not_found");let W=await f(),{state:Z}=await W.getContractState(M.address),D=Z==="active",L=D?await M.getSeqno():0,O=M.createTransfer({messages:B(J),secretKey:l.secretKey,sendMode:iC,seqno:L}),R=h.external({body:O,init:D?void 0:M.init,to:M.address});return h.beginCell().store(h.storeMessage(R)).endCell()}async function q(J){return await(await f()).sendFile(J.toBoc()),J.hash().toString("hex")}async function G(J){let l=await U(J);return q(l)}async function w({assetValue:J,recipient:l,memo:M}){let W=await X({assetValue:J,memo:M,recipient:l});return G(W)}async function Q({sender:J,...l}){let{baseDecimal:M}=qn.getChainConfig(qn.Chain.Ton),W=await Oo.match(J).with(Oo.P.string,(L)=>{return h.Address.parseFriendly(L).address}).otherwise(async()=>{return(await H()).address});if(!W)throw new qn.SwapKitError("toolbox_fee_estimation_failed",{chain:qn.Chain.Ton});let Z=qn.AssetValue.from({chain:qn.Chain.Ton,value:"0.01"}),D=await f();try{let L=await X({sender:J,...l}),O=await C(),R=await H();if(!R||!O)return Z;let k=await R.getSeqno(),u=R.createTransfer({messages:B(L),secretKey:O.secretKey,sendMode:iC,seqno:k}),{source_fees:K}=await D.estimateExternalMessageFee(W,{body:u,ignoreSignature:!0,initCode:null,initData:null}),s=K.in_fwd_fee+K.storage_fee+K.gas_fee+K.fwd_fee;return Z.set(qn.SwapKitNumber.fromBigInt(BigInt(s),M))}catch{return Z}}async function N({jettonMasterAddress:J,ownerAddress:l}){try{let M=await f(),W=h.Address.parse(J),Z=h.Address.parse(l);return await M.open(h.JettonMaster.create(W)).getWalletAddress(Z)}catch{throw new qn.SwapKitError({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:J,ownerAddress:l}})}}function Y({jettonAmount:J,destinationAddress:l,responseAddress:M,forwardAmount:W=Z_,forwardPayload:Z}){let D=h.beginCell().storeUint(Q_,32).storeUint(0,64).storeCoins(J).storeAddress(l).storeAddress(M).storeBit(0).storeCoins(W);if(Z)D.storeBit(1).storeRef(Z);else D.storeBit(0);return D.endCell()}function z(J){return h.beginCell().storeUint(0,32).storeStringTail(J).endCell()}return{broadcastTransaction:q,createTransaction:X,estimateTransactionFee:Q,getAddress:t,getBalance:A,getJettonWalletAddress:N,sign:U,signAndBroadcastTransaction:G,transfer:w,validateAddress:gC}}function gC(n){try{return h.Address.parse(n),!0}catch{return!1}}var mC,qn,rC,h,Oo,Q_=260734629,Z_,J_,iC,Y_=60000,Nf,hC=0;var dC=p(()=>{dn();mC=require("@orbs-network/ton-access"),qn=require("@swapkit/helpers"),rC=require("@ton/crypto"),h=require("@ton/ton"),Oo=require("ts-pattern"),Z_=h.toNano("0.01"),J_=h.toNano("0.05"),iC=h.SendMode.PAY_GAS_SEPARATELY+h.SendMode.IGNORE_ERRORS});var zf={};Mn(zf,{validateTonAddress:()=>gC,getTONToolbox:()=>z_});module.exports=Jn(zf);var Df=p(()=>{dC()});function bn(n,y){if(!Number.isInteger(y)||y<0)throw RangeError(`${n} must be a non-negative integer, got: ${y}`)}function Go({accountIndex:n,chain:y,derivationPath:T}){if(n!==void 0)bn("accountIndex",n);let o=[...T?.slice(0,3)??aC.NetworkDerivationPath[y].slice(0,3)];if(n!==void 0)o[2]=n;return o}function Ko({accountIndex:n,change:y=!1,chain:T,derivationPath:o,index:f}){return bn("index",f),[...Go({accountIndex:n,chain:T,derivationPath:o}),Number(y),f]}function Ro(n){return n[2]??0}function sC({deriveAddress:n,getBalance:y,getUtxos:T}){async function o(H){let{accountIndex:A,count:_,startIndex:X=0,change:B=!1}=H;if(bn("count",_),_<1)throw RangeError("count must be at least 1");bn("startIndex",X);let U=[];for(let q=0;q<_;q++){let G=await n({accountIndex:A,change:B,index:X+q});if(G)U.push(G)}return U}async function f(H){let{gapLimit:A=20,change:_=!1}=H??{},X=[],B=0,U=0;while(B<A){let q=await n({change:_,index:U});if(!q)break;if((await y(q.address)).some((Q)=>Q.getValue("number")>0))X.push(q),B=0;else B++;U++}return X}async function t(H=20){let[A,_]=await Promise.all([f({change:!1,gapLimit:H}),f({change:!0,gapLimit:H})]),X=[...A,..._],B=await Promise.all(X.map(async(q)=>{let w=(await y(q.address)).reduce((Q,N)=>Q+N.getValue("number"),0);return{...q,balance:w}})),U=B.reduce((q,G)=>q+G.balance,0);return{addresses:B,total:U}}async function C(H=20){let[A,_]=await Promise.all([f({change:!1,gapLimit:H}),f({change:!0,gapLimit:H})]),X=[...A,..._];return(await Promise.all(X.map(async(U)=>{return(await T(U.address)).map((G)=>({...G,address:U.address,derivationIndex:U.index,isChange:U.change}))}))).flat()}return{deriveAddresses:o,getAggregatedBalance:t,getAggregatedUtxos:C,scanForAddresses:f}}var aC;var zy=p(()=>{aC=require("@swapkit/helpers")});async function D_({chain:n,txHash:y}){let T=`${Dy(n)}/push/transaction`,o=JSON.stringify({data:y});try{let f=await j.RequestClient.post(T,{body:o,headers:{"Content-Type":"application/json"}});if(f.context.code!==200)throw new j.SwapKitError("toolbox_utxo_broadcast_failed",{error:f.context.error||"Transaction broadcast failed"});return f.data?.transaction_hash||y}catch(f){let t=await j.getRPCUrl(n);if(t){let C=JSON.stringify({id:w0(),jsonrpc:"2.0",method:"sendrawtransaction",params:[y]}),H=await j.RequestClient.post(t,{body:C,headers:{"Content-Type":"application/json"}});if(H.error)throw new j.SwapKitError("toolbox_utxo_broadcast_failed",{error:H.error?.message});if(H.result.includes('"code":-26'))throw new j.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return H.result}throw f}}function Dy(n){return`https://api.blockchair.com/${O_(n)}`}function eC(n){switch(n){case j.Chain.Bitcoin:return 5;case j.Chain.Dogecoin:return 1e4;case j.Chain.Litecoin:return 1;case j.Chain.Zcash:return 1;default:return 2}}function O_(n){switch(n){case j.Chain.BitcoinCash:return"bitcoin-cash";case j.Chain.Litecoin:return"litecoin";case j.Chain.Dash:return"dash";case j.Chain.Dogecoin:return"dogecoin";case j.Chain.Zcash:return"zcash";case j.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function R_(n){try{let{feePerKb:y}=await j.RequestClient.get(`https://app.bitgo.com/api/v2/${n.toLowerCase()}/tx/fee`),T=y/1000;return Math.max(T,eC(n))}catch{return eC(n)}}async function Of(n,y){let T=await j.RequestClient.get(`${n}${y?`${n.includes("?")?"&":"?"}key=${y}`:""}`);if(!T||T.context.code!==200)throw new j.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${n}`});return T.data}async function o1({address:n,chain:y,apiKey:T}){if(!n)throw new j.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await Of(`${Dy(y)}/dashboards/address/${n}?transaction_details=true`,T))[n]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function x_({address:n,chain:y,apiKey:T}){return(await o1({address:n,apiKey:T,chain:y}))?.address.balance||0}async function y1({chain:n,apiKey:y,txHash:T}){if(!T)throw new j.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await Of(`${Dy(n)}/raw/transaction/${T}`,y))?.[T]?.raw_transaction||""}catch(o){let f=o instanceof Error?o.message:String(o);return console.error(`Failed to fetch raw transaction: ${f}`),""}}async function S_({chain:n,apiKey:y,txHash:T}){if(!T)throw new j.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});let f=(await Of(`${Dy(n)}/dashboards/transaction/${T}`,y))?.[T];if(!f)throw new j.SwapKitError("toolbox_utxo_tx_not_found",{txHash:T});let{transaction:t,inputs:C,outputs:H}=f,A=C.map((X)=>X.spending_sequence),_=t.is_rbf===!0||A.some((X)=>X<F_);return{blockId:t.block_id,confirmed:t.block_id!==-1,fee:t.fee,inputs:C,isRBF:_,outputs:H,sequences:A,size:t.size,txid:t.hash,weight:t.weight}}async function p_({chain:n,address:y,apiKey:T,offset:o=0,limit:f=30}){return(await Of(`${Dy(n)}/outputs?q=recipient(${y}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${f}&offset=${o}`,T)).map(({is_spent:A,script_hex:_,block_id:X,transaction_hash:B,index:U,value:q,spending_signature_hex:G})=>({hash:B,index:U,is_confirmed:X!==-1,is_spent:A,script_hex:_,txHex:G,value:q}))}function k_(n){return n.reduce((y,T)=>y+T.value,0)}function n1(n,y){let T=[...n].sort((o,f)=>f.value-o.value);if(y){let o=[],f=0;for(let t of T)if(o.push(t),f+=t.value,f>=y)break;return o}return T}async function f1({chain:n,address:y,apiKey:T,targetValue:o,accumulativeValue:f=0,offset:t=0,limit:C=30}){if(!y)throw new j.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let H=await p_({address:y,apiKey:T,chain:n,limit:C,offset:t,targetValue:o}),_=H.length<C,X=H.filter(({is_spent:Q})=>!Q),B=k_(X),U=f+B,q=o&&U>=o;if(_||q)return n1(X,o);let G=await f1({accumulativeValue:U,address:y,apiKey:T,chain:n,limit:C,offset:t+C,targetValue:o}),w=[...X,...G];return n1(w,o)}catch(H){let A=H instanceof Error?H.message:String(H);return console.error(`Failed to fetch unspent UTXOs: ${A}`),[]}}async function u_({address:n,chain:y,apiKey:T,fetchTxHex:o=!0,targetValue:f}){let t=await f1({address:n,apiKey:T,chain:y,targetValue:f}),C=[];for(let{hash:H,index:A,script_hex:_,value:X}of t){let B;if(o)B=await y1({apiKey:T,chain:y,txHash:H});C.push({address:n,hash:H,index:A,txHex:B,value:X,witnessUtxo:{script:Buffer.from(_,"hex"),value:X}})}return C}function Qn(n){let y=j.SKConfig.get("apiKeys").blockchair||"";return j.warnOnce({condition:!y,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(T)=>D_({chain:n,txHash:T}),getAddressData:(T)=>o1({address:T,apiKey:y,chain:n}),getBalance:(T)=>x_({address:T,apiKey:y,chain:n}),getRawTx:(T)=>y1({apiKey:y,chain:n,txHash:T}),getSuggestedTxFee:()=>R_(n),getTransactionDetails:(T)=>S_({apiKey:y,chain:n,txHash:T}),getUtxos:(T)=>u_({...T,apiKey:y,chain:n})}}function P_(n){return n}function I_(){return function(y){switch(y){case j.Chain.Bitcoin:return xo.NETWORKS.bitcoin;case j.Chain.BitcoinCash:return xo.NETWORKS.bitcoinCash;case j.Chain.Dash:return xo.NETWORKS.dash;case j.Chain.Litecoin:return xo.NETWORKS.litecoin;case j.Chain.Dogecoin:return xo.NETWORKS.dogecoin;case j.Chain.Zcash:return xo.NETWORKS.zcash;default:throw new j.SwapKitError("toolbox_utxo_not_supported",{chain:y})}}}var j,xo,F_=4294967294;var T1=p(()=>{dn();j=require("@swapkit/helpers"),xo=require("@swapkit/utxo-signer")});function b_(n,y,T){return oo.encodeCashAddr({hash:T,prefix:n,type:$_[y]})}function v_(n){let y=oo.decodeCashAddr(n),T=E_[y.type];if(!T)throw Error(`Unknown CashAddr type: ${y.type}`);return{hash:y.hash,prefix:y.prefix,type:T}}var oo,$_,E_,Ht;var t1=p(()=>{oo=require("@swapkit/utxo-signer"),$_={P2PKH:oo.CashAddrType.P2PKH,P2SH:oo.CashAddrType.P2SH},E_={[oo.CashAddrType.P2PKH]:"P2PKH",[oo.CashAddrType.P2SH]:"P2SH"};Ht={decode:v_,encode:b_}});function Ut(n){try{return Rf(n),!0}catch{return!1}}function wt(n){return Rf(n)?.network}function yo(n){let y=Rf(n);if(y?.format==="legacy")return n;return j_(y)}function Oy(n){let y=Rf(n);return c_(y)}function Rf(n){try{let y=V_(n);if(y)return y}catch{}try{let y=K_(n);if(y)return y}catch{}throw new At.SwapKitError("toolbox_utxo_invalid_address",{address:n})}function V_(n){try{let y=_1.decode(n);if(y.length!==21)throw new At.SwapKitError("toolbox_utxo_invalid_address",{address:n});let T=y[0],o=Array.prototype.slice.call(y,1);switch(T){case Fo.legacy.mainnet.p2pkh:return{format:"legacy",hash:o,network:"mainnet",type:"p2pkh"};case Fo.legacy.mainnet.p2sh:return{format:"legacy",hash:o,network:"mainnet",type:"p2sh"};case Fo.legacy.testnet.p2pkh:return{format:"legacy",hash:o,network:"testnet",type:"p2pkh"};case Fo.legacy.testnet.p2sh:return{format:"legacy",hash:o,network:"testnet",type:"p2sh"};case Fo.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:o,network:"mainnet",type:"p2pkh"};case Fo.bitpay.mainnet.p2sh:return{format:"bitpay",hash:o,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function K_(n){if(n.indexOf(":")!==-1)try{return C1(n)}catch{}else{let y=["bitcoincash","bchtest","bchreg"];for(let T of y)try{return C1(`${T}:${n}`)}catch{}}return}function C1(n){try{let{hash:y,prefix:T,type:o}=Ht.decode(n);return{format:"cashaddr",hash:Array.prototype.slice.call(y,0),network:T==="bitcoincash"?"mainnet":"testnet",type:o==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function j_(n){let y=Fo.legacy[n.network][n.type],T=Buffer.alloc(1+n.hash.length);return T[0]=y,T.set(n.hash,1),_1.encode(T)}function c_(n){let y=n.network==="mainnet"?"bitcoincash":"bchtest",T=n.type==="p2pkh"?"P2PKH":"P2SH",o=new Uint8Array(n.hash);return Ht.encode(y,T,o)}var H1,A1,At,_1,_t,Fo;var U1=p(()=>{t1();H1=require("@noble/hashes/sha2.js"),A1=require("@scure/base"),At=require("@swapkit/helpers"),_1=A1.createBase58check(H1.sha256);((T)=>{T.Mainnet="mainnet";T.Testnet="testnet"})(_t||={});Fo={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function kn(n){let y=new Uint8Array(Buffer.from(n,"utf8"));return q1.Script.encode(["RETURN",y])}var w1,q1,i_=1000,Ff=10,Sf=2,G1=10,h_=41,m_=107,pf,xf,Ry,jo=(n)=>{if(n.startsWith("bc1")||n.startsWith("tb1")||n.startsWith("ltc1")||n.startsWith("tltc1"))return"P2WPKH";if(n.startsWith("1")||n.startsWith("m")||n.startsWith("n")||n.startsWith("bitcoincash:q")||n.startsWith("bitcoincash:p")||n.startsWith("q")||n.startsWith("p")||n.startsWith("L")||n.startsWith("M")||n.startsWith("3")||n.startsWith("D")||n.startsWith("A")||n.startsWith("9")||n.startsWith("X")||n.startsWith("7")||n.startsWith("y")||n.startsWith("t1")||n.startsWith("t3")||n.startsWith("tm"))return"P2PKH";throw new w1.SwapKitError("toolbox_utxo_invalid_address",{address:n})},So=({inputs:n,outputs:y,feeRate:T})=>{let o=n[0]&&"address"in n[0]&&n[0].address?jo(n[0].address):"P2PKH",t=(T?n.filter((_)=>_.value>=xf["type"in _&&_.type?_.type:"P2PKH"]*Math.ceil(T)):n).reduce((_,X)=>_+lo(X),0),C=y?.reduce((_,X)=>_+xy(X),0)||Ry[o],H=Ff+t+C;return o==="P2WPKH"?Math.ceil(H+Sf/4):H},lo=(n)=>{if("type"in n&&n.type)return xf[n.type];if("address"in n&&n.address)return xf[jo(n.address)];return h_+m_},xy=(n,y)=>{if(n?.script)return G1+n.script.length+(n.script.length>=74?2:1);if(y)return Ry[y];if("address"in n&&n.address)return Ry[jo(n.address)];return Ry.P2PKH};var qt=p(()=>{w1=require("@swapkit/helpers"),q1=require("@swapkit/utxo-signer");((T)=>{T.P2PKH="P2PKH";T.P2WPKH="P2WPKH"})(pf||={});xf={["P2PKH"]:148,["P2WPKH"]:68},Ry={["P2PKH"]:34,["P2WPKH"]:31}});function Fy(n){switch(n){case rn.Chain.Bitcoin:case rn.Chain.BitcoinCash:return 550;case rn.Chain.Dash:case rn.Chain.Litecoin:return 5500;case rn.Chain.Dogecoin:return 1e5;case rn.Chain.Zcash:return 546;default:throw new rn.SwapKitError("toolbox_utxo_not_supported",{chain:n})}}function vn({inputs:n,outputs:y,feeRate:T=1,chain:o=rn.Chain.Bitcoin,changeAddress:f=""}){let t=n[0]&&"address"in n[0]&&n[0].address?jo(n[0].address):"P2PKH",C=n.filter((G)=>lo(G)*T<=G.value),A=t==="P2WPKH"?Math.ceil(Sf/4):0,_=Ff+A+y.reduce((G,w)=>G+xy(w),0),X=y.reduce((G,w)=>G+w.value,0),B=_*T,U=0,q=[];for(let G of C){let w=lo(G),Q=T*w;B+=Q,U+=G.value,q.push(G);let N=B+X;if(U<N)continue;let Y=U-N,z=T*xy({address:f,value:0});if(Y>z){let J=z+B,l=U-(X+Math.ceil(J));if(l>Math.max(lo({value:0})*T,Fy(o)))return{fee:Math.ceil(J),inputs:q,outputs:y.concat({address:f,value:l})}}return{fee:Math.ceil(B),inputs:q,outputs:y}}return{fee:Math.ceil(T*So({inputs:n,outputs:y}))}}var rn;var l1=p(()=>{qt();rn=require("@swapkit/helpers")});var co=p(()=>{T1();U1();l1();qt()});function po(n){return n.replace(/(bchtest:|bitcoincash:)/,"")}function Xo(n){let y=po(n);return Ut(y)&&wt(y)==="mainnet"}function io(n){try{if(n.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let T=kf.Address(kf.ZCASH_NETWORK).decode(n);return T.type==="pkh"||T.type==="sh"}catch{return!1}}var kf;var Sy=p(()=>{co();kf=require("@swapkit/utxo-signer")});function Xt({address:n,chain:y}){return lt.match(y).with(F.Chain.BitcoinCash,()=>Xo(n)).with(F.Chain.Zcash,()=>io(n)).otherwise(()=>{try{return m.Address(Dn(y)).decode(n),!0}catch{return!1}})}function Dn(n){return lt.match(n).with(F.Chain.Bitcoin,()=>m.NETWORKS.bitcoin).with(F.Chain.BitcoinCash,()=>m.NETWORKS.bitcoinCash).with(F.Chain.Dash,()=>m.NETWORKS.dash).with(F.Chain.Dogecoin,()=>m.NETWORKS.dogecoin).with(F.Chain.Litecoin,()=>m.NETWORKS.litecoin).with(F.Chain.Zcash,()=>m.NETWORKS.zcash).exhaustive()}function r_({phrase:n,derivationPath:y,network:T,seed:o}){let f=o??Pf.mnemonicToSeedSync(n),C=Gt.HDKey.fromMasterSeed(f,T.bip32).derive(y);if(!C.privateKey)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return C.privateKey}function X1(n){return W1.secp256k1.getPublicKey(n,!0)}function ky({publicKey:n,chain:y,network:T}){if(y===F.Chain.BitcoinCash){let t=m.p2pkh(n,T);if(!t.hash)throw new F.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return m.encodeCashAddr({hash:t.hash,prefix:m.CashAddrPrefix.MAINNET,type:m.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}let f=!py.includes(y)?m.p2wpkh(n,T):m.p2pkh(n,T);if(!f.address)throw new F.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive address"});return f.address}function ho({phrase:n,derivationPath:y,chain:T,wif:o,seed:f}){let t=Dn(T);if(o){let _=m.WIF(t).decode(o),X=X1(_);return{privateKey:_,publicKey:X}}if(!n)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let C=y||F.derivationPathToString(F.NetworkDerivationPath[T]),H=r_({derivationPath:C,network:t,phrase:n,seed:f}),A=X1(H);return{privateKey:H,publicKey:A}}function g_(n,y){return m.WIF(Dn(y)).encode(n)}function d_({phrase:n,derivationPath:y,chain:T,seed:o}){let f=y.split("/");if(f.length<4)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${f.length}): ${y}`});let t=Dn(T),C=o??Pf.mnemonicToSeedSync(n),H=Gt.HDKey.fromMasterSeed(C,t.bip32),A=f.slice(0,4).join("/");return H.derive(A)}function Bo({inputs:n,outputs:y,chain:T,tx:o,sender:f,compiledMemo:t,enableRBF:C=!1}){let H=Dn(T),A=!py.includes(T),_=C?m.RBF_SEQUENCE:void 0,X=new Set;for(let B of n){let U=`${B.hash}:${B.index}`;if(X.has(U))throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});X.add(U);let q=typeof B.hash==="string"?Wo.hex.decode(B.hash):B.hash;if(A&&B.witnessUtxo)o.addInput({index:B.index,sequence:_,txid:q,witnessUtxo:{amount:BigInt(B.witnessUtxo.value),script:B.witnessUtxo.script}});else if(B.txHex)o.addInput({index:B.index,nonWitnessUtxo:Wo.hex.decode(B.txHex),sequence:_,txid:q,...T===F.Chain.BitcoinCash?{sighashType:m.BCHSigHash.ALL}:{}});else throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let B of y){let U="address"in B&&B.address?B.address:f;if(T===F.Chain.BitcoinCash)U=yo(U);if(B.script){if(t)o.addOutput({amount:0n,script:t})}else o.addOutputAddress(U,BigInt(B.value),H)}return{inputs:n,tx:o}}async function mo(n){let y=await Qn(n).getSuggestedTxFee();return{[F.FeeOption.Average]:y,[F.FeeOption.Fast]:F.applyFeeMultiplier(y,F.FeeOption.Fast),[F.FeeOption.Fastest]:F.applyFeeMultiplier(y,F.FeeOption.Fastest)}}async function B1({assetValue:n,recipient:y,memo:T,sender:o,fetchTxHex:f=!1}){let t=n.chain,C=(await mo(t))[F.FeeOption.Fastest],H=f||py.includes(t),A=n.getBaseValue("number"),_=Math.ceil(A+C*5000);return{inputs:await Qn(t).getUtxos({address:o,fetchTxHex:H,targetValue:_}),outputs:[{address:y,value:A},...T?[{address:"",script:kn(T),value:0}]:[]]}}async function M1({assetValue:n,recipient:y,memo:T,feeRate:o,sender:f,fetchTxHex:t=!1,enableRBF:C=!1}){let H=n.chain,A=T?kn(T):null,_=await B1({assetValue:n,fetchTxHex:t,memo:T,recipient:y,sender:f}),{inputs:X,outputs:B}=vn({..._,chain:H,feeRate:o});if(!(X&&B))throw new F.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:n,sender:f});let U=new m.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!A,version:1}),{inputs:q,tx:G}=Bo({chain:H,compiledMemo:A,enableRBF:C,inputs:X,outputs:B,sender:f,tx:U});return{inputs:q,tx:G,utxos:_.inputs}}async function L1({assetValue:n,feeOptionKey:y=F.FeeOption.Fast,feeRate:T,memo:o,sender:f,recipient:t}){let C=n.chain,H=await B1({assetValue:n,memo:o,recipient:t,sender:f}),A=T?Math.floor(T):(await mo(C))[y];return vn({...H,chain:C,feeRate:A})}function a_(n){return async function({from:T,memo:o,feeRate:f,feeOptionKey:t=F.FeeOption.Fast,recipients:C=1}){let H=await Qn(n).getAddressData(T),A=f?Math.ceil(f):(await mo(n))[t],_=H?.utxo.map((w)=>({...w,hash:"",type:"P2PKH"})).filter((w)=>w.value>Math.max(Fy(n),lo(w)*A));if(!_?.length)return F.AssetValue.from({chain:n});let X=BigInt(_.reduce((w,Q)=>w+Q.value,0)),B=F.AssetValue.from({chain:n,value:X}),U=typeof C==="number"?Array.from({length:C},()=>({address:T,value:0})):C;if(o)U.push({address:T,script:kn(o),value:0});let q=So({inputs:_,outputs:U}),G=F.AssetValue.from({chain:n,value:BigInt(q*A)});return B.sub(G)}}function s_(n){return async function(T){let{fee:o}=await L1(T);return F.AssetValue.from({chain:n,value:F.SwapKitNumber.fromBigInt(BigInt(o),8).getValue("string")})}}function e_({chain:n,phrase:y,derivationPath:T,seed:o}){let f=Dn(n),{privateKey:t,publicKey:C}=ho({chain:n,derivationPath:T,phrase:y,seed:o}),H=n===F.Chain.BitcoinCash?[m.BCHSigHash.ALL]:[m.SigHash.ALL];return{getAddress:()=>ky({chain:n,network:f,publicKey:C}),privateKey:t,publicKey:C,signTransaction:(A)=>{return A.sign(t,H),A}}}function n5(n,y){return async function({memo:o,recipient:f,feeOptionKey:t,feeRate:C,assetValue:H,enableRBF:A=!1}){let _=y?.getAddress();if(!(y&&_))throw new F.SwapKitError("toolbox_utxo_no_signer");if(!f)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});F.warnOnce({condition:A&&!uf.includes(n),id:`rbf_not_supported_${n}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${n}. Transaction will be created without RBF signaling.`});let X=A&&uf.includes(n),B=C||(await mo(n))[t||F.FeeOption.Fast],{tx:U}=await M1({assetValue:H,enableRBF:X,feeRate:B,memo:o,recipient:f,sender:_});return y.signTransaction(U),U.finalize(),Qn(n).broadcastTx(Wo.hex.encode(U.extract()))}}function Wt(n){return(y)=>Xt({address:y,chain:n})}function Bt(n){let y=Dn(n);return function(o){if(!o)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return ky({chain:n,network:y,publicKey:o.publicKey})}}function Mo({chain:n,...y}){let T="phrase"in y?y.phrase:void 0,o="index"in y?y.index||0:0,f=T?Pf.mnemonicToSeedSync(T):void 0,t="derivationPath"in y&&y.derivationPath?y.derivationPath:F.updateDerivationPath(F.NetworkDerivationPath[n],{index:o}),C=F.derivationPathToString(t),H=T?e_({chain:n,derivationPath:C,phrase:T,seed:f}):void 0,A="signer"in y?y.signer:void 0,_=T?ho({chain:n,derivationPath:C,phrase:T,seed:f}):void 0;function X(){if(H)return Promise.resolve(H.getAddress());if(A)return A.getAddress();return Promise.resolve(void 0)}function B(W){if(!T)return;let Z=Go({accountIndex:W,chain:n,derivationPath:t});return d_({chain:n,derivationPath:F.derivationPathToString(Z),phrase:T,seed:f})}let U=B();function q(){if(!U)return;return U.publicExtendedKey}function G({accountIndex:W}={}){let Z=W===void 0?U:B(W);if(!Z)return;let D=Go({accountIndex:W,chain:n,derivationPath:t});return{accountIndex:Ro(D),path:F.derivationPathToString(D),xpub:Z.publicExtendedKey}}function w({accountIndex:W,index:Z,change:D=!1}){let L=W===void 0?U:B(W);if(!L)return;let O=Ko({accountIndex:W,chain:n,change:D,derivationPath:t,index:Z}),R=Dn(n),k=L.deriveChild(Number(D)).deriveChild(Z);if(!k.publicKey)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let u=ky({chain:n,network:R,publicKey:k.publicKey}),K=Wo.hex.encode(k.publicKey);return{accountIndex:Ro(O),address:u,change:D,index:Z,path:F.derivationPathToString(O),pubkey:K}}async function Q(W){if(!uf.includes(n))return{reason:`RBF is not supported on ${n}`,supported:!1};let Z=await Qn(n).getTransactionDetails(W);return{canReplace:Z.isRBF&&!Z.confirmed,confirmed:Z.confirmed,enabled:Z.isRBF,fee:Z.fee,sequences:Z.sequences,supported:!0}}async function N({txid:W,newFeeRate:Z,recipient:D,memo:L}){if(!uf.includes(n))throw new F.SwapKitError("toolbox_utxo_rbf_not_supported",{chain:n});let O=await Qn(n).getTransactionDetails(W);if(!O.isRBF)throw new F.SwapKitError("toolbox_utxo_tx_not_replaceable",{txid:W});if(O.confirmed)throw new F.SwapKitError("toolbox_utxo_tx_already_confirmed",{blockId:O.blockId,txid:W});let R=O.inputs.reduce((ln,In)=>ln+In.value,0),u=O.outputs.find((ln)=>ln.recipient===D)?.value||0;if(u===0)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let K=await Promise.all(O.inputs.map(async(ln)=>{let In=await Qn(n).getRawTx(ln.transaction_hash);return{hash:ln.transaction_hash,index:ln.index,txHex:In,value:ln.value,witnessUtxo:void 0}})),s=L?kn(L):null,tn=So({feeRate:Z,inputs:K.map((ln)=>({...ln,type:"P2WPKH"})),outputs:[{address:D,value:u}]}),on=Math.ceil(tn*Z);if(on<=O.fee)throw new F.SwapKitError("toolbox_utxo_rbf_fee_too_low",{newFee:on,originalFee:O.fee});let Zn=on-O.fee,Bn=u-Zn;if(Bn<=0)throw new F.SwapKitError("toolbox_utxo_rbf_insufficient_change");let On=new m.Transaction({allowLegacyWitnessUtxo:!0,version:1}),jn=[{address:D,value:Bn},...L?[{address:"",script:kn(L),value:0}]:[]],cn=R-Bn-on,Rn=await X();if(cn>Fy(n)&&Rn)jn.push({address:Rn,value:cn});return Bo({chain:n,compiledMemo:s,inputs:K,outputs:jn,sender:Rn||D,tx:On}),{feeDelta:Zn,newFee:on,originalFee:O.fee,tx:On}}async function Y({txid:W,newFeeRate:Z,recipient:D,memo:L}){if(!H)throw new F.SwapKitError("toolbox_utxo_no_signer");let{tx:O,originalFee:R,newFee:k}=await N({memo:L,newFeeRate:Z,recipient:D,txid:W});H.signTransaction(O),O.finalize();let u=await Qn(n).broadcastTx(Wo.hex.encode(O.extract()));return{newFee:k,originalFee:R,txid:u}}function z({accountIndex:W,index:Z,change:D=!1}){bn("index",Z);let L=W===void 0?U:B(W);if(!L)return;return L.deriveChild(Number(D)).deriveChild(Z).privateKey||void 0}function J({tx:W,inputDerivations:Z}){if(!U)throw new F.SwapKitError("toolbox_utxo_no_signer");let D=n===F.Chain.BitcoinCash?[m.BCHSigHash.ALL]:[m.SigHash.ALL];for(let L=0;L<Z.length;L++){let O=Z[L];if(!O)continue;let{derivationIndex:R,isChange:k}=O,u=z({change:k,index:R});if(!u)throw new F.SwapKitError("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${L} at index ${R}`});W.signIdx(u,L,D)}return W}async function l({utxos:W,recipient:Z,assetValue:D,memo:L,feeRate:O,feeOptionKey:R,changeAddress:k}){if(!U)throw new F.SwapKitError("toolbox_utxo_no_signer");let u=O||(await mo(n))[R||F.FeeOption.Fast],K=L?kn(L):null,s=[{address:Z,value:D.getBaseValue("number")}];if(K)s.push({address:"",script:K,value:0});let tn=W.map(({hash:Rn,index:ln,value:In,txHex:NH,witnessUtxo:fT})=>({hash:Rn,index:ln,txHex:NH,value:In,witnessUtxo:fT?{script:fT.script,value:fT.value}:void 0})),{inputs:on,outputs:Zn}=vn({chain:n,feeRate:u,inputs:tn,outputs:s});if(!(on&&Zn))throw new F.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:D,sender:"multiple addresses"});let Bn=new m.Transaction({allowLegacyWitnessUtxo:!0,version:1}),On=W[0]?.address,jn=k||await X()||On||Z;Bo({chain:n,compiledMemo:K,inputs:on,outputs:Zn,sender:jn,tx:Bn});let cn=on.map((Rn)=>{let ln=W.find((In)=>In.hash===Rn.hash&&In.index===Rn.index);return ln?{derivationIndex:ln.derivationIndex,isChange:ln.isChange}:{derivationIndex:0,isChange:!1}});return J({inputDerivations:cn,tx:Bn}),Bn.finalize(),Qn(n).broadcastTx(Wo.hex.encode(Bn.extract()))}function M({address:W,gapLimit:Z=20}){if(!U)return;for(let D=0;D<Z;D++){let L=w({change:!1,index:D}),O=w({change:!0,index:D}),R=L?.address===W?!1:O?.address===W;if(L?.address===W||O?.address===W)return{change:R,index:D}}return}return{accumulative:vn,broadcastTx:(W)=>Qn(n).broadcastTx(W),bumpFee:Y,calculateTxSize:So,createKeysForPath:(W)=>ho({...W,chain:n}),createReplacementTransaction:N,createTransaction:M1,deriveAddressAtIndex:w,derivePrivateKeyAtIndex:z,estimateMaxSendableAmount:a_(n),estimateTransactionFee:s_(n),getAddress:X,getAddressFromKeys:Bt(n),getBalance:xn(n),getExtendedPublicKey:q,getExtendedPublicKeyInfo:G,getFeeRates:()=>mo(n),getInputsOutputsFee:L1,getNetworkForChain:()=>Dn(n),getPrivateKeyFromMnemonic:(W)=>g_(ho({...W,chain:n}).privateKey,n),isRBFEnabled:Q,keys:_,resolveDerivationIndex:M,signAndBroadcastTransaction:async(W)=>{if(!H)throw new F.SwapKitError("toolbox_utxo_no_signer");return H.signTransaction(W),W.finalize(),await Qn(n).broadcastTx(Wo.hex.encode(W.extract()))},signTransactionWithMultipleKeys:J,transfer:n5(n,H),transferFromMultipleAddresses:l,validateAddress:Wt(n)}}var W1,Wo,Gt,Pf,F,m,lt,py,uf;var ro=p(()=>{dn();zy();co();Sy();W1=require("@noble/curves/secp256k1.js"),Wo=require("@scure/base"),Gt=require("@scure/bip32"),Pf=require("@scure/bip39"),F=require("@swapkit/helpers"),m=require("@swapkit/utxo-signer"),lt=require("ts-pattern"),py=[F.Chain.Dash,F.Chain.Dogecoin,F.Chain.Zcash,F.Chain.BitcoinCash],uf=[F.Chain.Bitcoin]});function uy(n){return po(Oy(n))}function o5(n){let y=Dn(gn);function T(f){return f.sign(n.privateKey,[Wn.BCHSigHash.ALL]),f}function o(){let f=Wn.p2pkh(n.publicKey,y);if(!f.hash)throw new Xn.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let t=Wn.encodeCashAddr({hash:f.hash,prefix:Wn.CashAddrPrefix.MAINNET,type:Wn.CashAddrType.P2PKH});return Promise.resolve(t.replace(/^bitcoincash:/,""))}return{getAddress:o,signTransaction:T}}function Mt(n){let y="phrase"in n?n.phrase:void 0,T="index"in n?n.index||0:0,o=Xn.derivationPathToString("derivationPath"in n&&n.derivationPath?n.derivationPath:Xn.updateDerivationPath(Xn.NetworkDerivationPath[gn],{index:T})),f=y?ho({chain:gn,derivationPath:o,phrase:y}):void 0,t=f?o5(f):("signer"in n)?n.signer:void 0;function C(){return Promise.resolve(t?.getAddress())}let{getBalance:H,getFeeRates:A,broadcastTx:_,...X}=Mo({chain:gn});function B(U,q=!0){return H(po(Oy(U)))}return{...X,broadcastTx:_,buildTx:f5,createTransaction:Z1,getAddress:C,getAddressFromKeys:T5,getBalance:B,getFeeRates:A,stripPrefix:po,stripToCashAddress:uy,transfer:y5({broadcastTx:_,getFeeRates:A,signer:t}),validateAddress:Xo}}async function Z1({assetValue:n,recipient:y,memo:T,feeRate:o,sender:f}){if(!Xo(y))throw new Xn.SwapKitError("toolbox_utxo_invalid_address",{address:y});let t=Math.ceil(n.getBaseValue("number")+o*7500),C=await Qn(gn).getUtxos({address:uy(f),fetchTxHex:!0,targetValue:t}),H=T?kn(T):null,A=[],_=yo(y);if(A.push({address:_,value:n.getBaseValue("number")}),H)A.push({script:H,value:0});let{inputs:X,outputs:B}=vn({chain:gn,feeRate:o,inputs:C,outputs:A});if(!(X&&B))throw new Xn.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:n,sender:f});let U=new Wn.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!H,version:1}),q=yo(f),{inputs:G,tx:w}=Bo({chain:gn,compiledMemo:H,inputs:X,outputs:B.map((Q)=>("address"in Q)&&Q.address?{...Q,address:yo(Q.address)}:Q),sender:q,tx:U});return{inputs:G,tx:w,utxos:X}}function y5({broadcastTx:n,getFeeRates:y,signer:T}){return async function({recipient:f,assetValue:t,feeOptionKey:C=Xn.FeeOption.Fast,...H}){let A=await T?.getAddress();if(!(T&&A))throw new Xn.SwapKitError("toolbox_utxo_no_signer");if(!f)throw new Xn.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let _=H.feeRate||(await y())[C],{tx:X}=await Z1({...H,assetValue:t,feeRate:_,recipient:f,sender:A}),B=await T.signTransaction(X);return B.finalize(),n(Q1.hex.encode(B.extract()))}}async function f5({assetValue:n,recipient:y,memo:T,feeRate:o,sender:f}){let t=Oy(y);if(!Xo(t))throw new Xn.SwapKitError("toolbox_utxo_invalid_address",{address:t});let C=Math.ceil(n.getBaseValue("number")+o*7500),H=await Qn(gn).getUtxos({address:uy(f),fetchTxHex:!0,targetValue:C}),A=Number(o.toFixed(0)),_=T?kn(T):null,X=[];if(X.push({address:yo(y),value:n.getBaseValue("number")}),_)X.push({script:_,value:0});let{inputs:B,outputs:U}=vn({chain:gn,feeRate:A,inputs:H,outputs:X});if(!(B&&U))throw new Xn.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:n,sender:f});let q=new Wn.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!_,version:1}),{inputs:G,tx:w}=Bo({chain:gn,compiledMemo:_,inputs:B,outputs:U,sender:yo(f),tx:q});return{inputs:G,tx:w,utxos:H}}function T5(n){let y=Wn.NETWORKS.bitcoinCash,T=Wn.p2pkh(n.publicKey,y);if(!T.hash)throw new Xn.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return Wn.encodeCashAddr({hash:T.hash,prefix:Wn.CashAddrPrefix.MAINNET,type:Wn.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}var Q1,Xn,Wn,gn;var If=p(()=>{co();ro();Sy();Q1=require("@scure/base"),Xn=require("@swapkit/helpers"),Wn=require("@swapkit/utxo-signer"),gn=Xn.Chain.BitcoinCash});function Y1(){let{isStagenet:n}=_n.SKConfig.get("envs");return n?Tn.ZCASH_TEST_NETWORK:Tn.ZCASH_NETWORK}function C5(n){return t5.encode(n)}function H5({phrase:n,derivationPath:y}){let T=Qt.mnemonicToSeedSync(n),f=Lt.HDKey.fromMasterSeed(T).derive(y);if(!f.privateKey||!f.publicKey)throw new _n.SwapKitError("toolbox_utxo_invalid_params");let{privateKey:t,publicKey:C}=f,H=Tn.utils.hash160(C),{isStagenet:A}=_n.SKConfig.get("envs"),_=A?new Uint8Array([29,37]):new Uint8Array([28,184]),X=new Uint8Array(_.length+H.length);X.set(_,0),X.set(H,_.length);let B=C5(X);return{getAddress:()=>Promise.resolve(B),signTransaction:(U)=>{if(U instanceof Tn.PCZT)return U.signAllInputs(t,C,Tn.ZcashSigHash.ALL),U.finalizeAllInputs(),Promise.resolve(U.extract());return U.signAllInputs(t,C,Tn.ZcashSigHash.ALL),Promise.resolve(U)}}}function A5({inputs:n,outputs:y,tx:T,sender:o,compiledMemo:f}){let t=Y1();for(let C of n){let H=Tn.Address(t).decode(o),A=Tn.OutScript.encode(H);T.addInput({index:C.index,script:A,sequence:4294967295,txid:$f.hex.decode(C.hash),value:BigInt(C.value)})}for(let C of y){let H="address"in C&&C.address?C.address:o,A=C.script;if(A&&!f)continue;if(A&&f)T.addOutput({amount:0n,script:f});else T.addOutputAddress(H,BigInt(C.value),t)}return{inputs:n,tx:T}}async function J1(n){let{assetValue:y,recipient:T,memo:o,feeRate:f,sender:t,fetchTxHex:C}=n,H=o?kn(o):null,A=await Qn(_n.Chain.Zcash).getUtxos({address:t,fetchTxHex:C!==!1}),_=[{address:T,value:Number(y.getBaseValue("string"))},...H?[{script:H,value:0}]:[]],{inputs:X,outputs:B}=vn({chain:_n.Chain.Zcash,changeAddress:t,feeRate:f,inputs:A,outputs:_});if(!(X&&B))throw new _n.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:y,sender:t});let U=Tn.createZcashTransaction({consensusBranchId:Tn.ZcashConsensusBranchId.NU6_1,expiryHeight:0,lockTime:0,version:4,versionGroupId:Tn.ZcashVersionGroupId.SAPLING}),{tx:q,inputs:G}=A5({compiledMemo:H,inputs:X,outputs:B,sender:t,tx:U});return{inputs:G,outputs:B,tx:q}}function Zt(n){let y=go.match(n).with({signer:go.P.not(go.P.nullish)},({signer:A})=>A).with({phrase:go.P.string},({phrase:A,derivationPath:_,index:X=0})=>{let B=_||_n.NetworkDerivationPath[_n.Chain.Zcash]||[44,133,0,0,0],U=_n.updateDerivationPath(B,{index:X}),q=_n.derivationPathToString(U);return H5({derivationPath:q,phrase:A})}).otherwise(()=>{return}),T=Mo({chain:_n.Chain.Zcash,signer:y});async function o({recipient:A,assetValue:_,feeOptionKey:X=_n.FeeOption.Fast,...B}){let U=await y?.getAddress();if(!(y&&U))throw new _n.SwapKitError("toolbox_utxo_no_signer");let q=B.feeRate||(await T.getFeeRates())[X],{tx:G}=await J1({...B,assetValue:_,feeRate:q,recipient:A,sender:U}),Q=(await y.signTransaction(G)).toHex();return T.broadcastTx(Q)}function f({phrase:A,derivationPath:_="m/44'/133'/0'/0/0"}){let X=Qt.mnemonicToSeedSync(A),U=Lt.HDKey.fromMasterSeed(X).derive(_);if(!U.privateKey||!U.publicKey)throw new _n.SwapKitError("toolbox_utxo_invalid_params");return{privateKey:U.privateKey,publicKey:U.publicKey}}function t({phrase:A,derivationPath:_="m/44'/133'/0'/0/0"}){let X=f({derivationPath:_,phrase:A}),B=Y1();return Tn.WIF(B).encode(X.privateKey)}function C(A){return async function(X){if(!A)throw new _n.SwapKitError("toolbox_utxo_no_signer");return await A.signTransaction(X)}}function H(A){return async function(X){if(!A)throw new _n.SwapKitError("toolbox_utxo_no_signer");let B=await A.signTransaction(X);return T.broadcastTx(B.toHex())}}return{...T,createKeysForPath:f,createTransaction:J1,getPrivateKeyFromMnemonic:t,signAndBroadcastTransaction:H(y),signTransaction:C(y),transfer:o,validateAddress:io}}var $f,Lt,Qt,_n,Tn,go,t5;var Jt=p(()=>{co();ro();Sy();$f=require("@scure/base"),Lt=require("@scure/bip32"),Qt=require("@scure/bip39"),_n=require("@swapkit/helpers"),Tn=require("@swapkit/utxo-signer"),go=require("ts-pattern");t5=$f.createBase58check(Tn.utils.sha256)});function O1({xpub:n,chain:y,count:T,startIndex:o=0,accountIndex:f}){if(bn("count",T),T<1)throw RangeError("count must be at least 1");bn("startIndex",o);let t=Dn(y),C=z1.HDKey.fromExtendedKey(n,t.bip32),H=Go({accountIndex:f,chain:y}),A=Ro(H),_=[];for(let X of[!1,!0]){let B=C.deriveChild(Number(X));for(let U=0;U<T;U++){let q=o+U,G=B.deriveChild(q);if(!G.publicKey)continue;let w=Ko({accountIndex:f,chain:y,change:X,index:q});_.push({accountIndex:A,address:ky({chain:y,network:t,publicKey:G.publicKey}),change:X,index:q,path:D1.derivationPathToString(w),pubkey:N1.hex.encode(G.publicKey)})}}return _}var N1,z1,D1;var R1=p(()=>{zy();ro();N1=require("@scure/base"),z1=require("@scure/bip32"),D1=require("@swapkit/helpers")});function _5(n,y){switch(n){case fo.Chain.BitcoinCash:return Mt(y||{});case fo.Chain.Zcash:return Zt(y);case fo.Chain.Bitcoin:case fo.Chain.Dogecoin:case fo.Chain.Litecoin:case fo.Chain.Dash:return Mo({chain:n,...y});default:throw new fo.SwapKitError("toolbox_utxo_not_supported",{chain:n})}}var fo;var x1=p(()=>{If();ro();Jt();zy();R1();If();Sy();fo=require("@swapkit/helpers")});var Yt={};Mn(Yt,{validateZcashAddress:()=>io,validateUtxoAddress:()=>Xt,validateBchAddress:()=>Xo,toLegacyAddress:()=>yo,toCashAddress:()=>Oy,stripToCashAddress:()=>uy,stripPrefix:()=>po,nonSegwitChains:()=>py,isValidAddress:()=>Ut,getUtxoToolbox:()=>_5,getUtxoNetwork:()=>I_,getUtxoApi:()=>Qn,getUTXOAddressValidator:()=>Wt,getUTXOAddressPath:()=>Ko,getUTXOAccountPath:()=>Go,getUTXOAccountIndexFromPath:()=>Ro,getScriptTypeForAddress:()=>jo,getOutputSize:()=>xy,getNetworkForChain:()=>Dn,getInputSize:()=>lo,getDustThreshold:()=>Fy,detectAddressNetwork:()=>wt,deriveAddressesFromXpub:()=>O1,createZcashToolbox:()=>Zt,createUTXOToolbox:()=>Mo,createHDWalletHelpers:()=>sC,createCustomUtxoApi:()=>P_,createBCHToolbox:()=>Mt,compileMemo:()=>kn,calculateTxSize:()=>So,assertDerivationIndex:()=>bn,addressFromKeysGetter:()=>Bt,addInputsAndOutputs:()=>Bo,accumulative:()=>vn,UtxoNetwork:()=>_t,UTXOScriptType:()=>pf,TX_OVERHEAD:()=>Ff,SEGWIT_MARKER_FLAG_WEIGHT:()=>Sf,OutputSizes:()=>Ry,OP_RETURN_OVERHEAD:()=>G1,MIN_TX_FEE:()=>i_,InputSizes:()=>xf});module.exports=Jn(Yt);var Nt=p(()=>{ro();zy();co();x1();If();Jt()});function Py(n){return n.length>=2&&n.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(n)}async function bf(n){let{parseSeedPhrase:y}=await import("near-seed-phrase"),{KeyPair:T}=await import("@near-js/crypto"),o=n.index||0,f=n.derivationPath?Ef.derivationPathToString(n.derivationPath.slice(0,3)):`m/44'/397'/${o}'`,{secretKey:t}=y(n.phrase,f),C=T.fromString(t);return p1(C)}async function zt(n){let{KeyPair:y}=await import("@near-js/crypto"),T=y.fromString(n);return p1(T)}function p1(n){return new S1(n)}async function vf(n,y){let o=(await n.query({account_id:y,finality:"final",request_type:"view_access_key_list"})).keys.find((H)=>H.access_key.permission==="FullAccess");if(!o)throw new Ef.SwapKitError("toolbox_near_no_public_key_found");let{PublicKey:f}=await import("@near-js/crypto"),t=f.fromString(o.public_key);return{nonce:o.access_key.nonce||0,publicKey:t}}var F1,Ef,S1;var Dt=p(()=>{F1=require("@near-js/signers"),Ef=require("@swapkit/helpers");S1=class S1 extends F1.KeyPairSigner{#n;constructor(n){super(n);this.#n=n}getAddress(){let n=this.#n.getPublicKey(),y=Buffer.from(n.data).toString("hex");return Promise.resolve(y)}}});function Ot(n){return"recipient"in n&&"amount"in n&&!("contractId"in n)}function Rt(n){return"contractId"in n&&"methodName"in n}function xt(n){return"actions"in n}function Ft(n){return"newAccountId"in n}function St(n){return"contractCode"in n}function pt(n){return"customEstimator"in n}function kt(n){let y=0;for(let T of n)switch(T.enum){case"transfer":y+=Number(Yn.SIMPLE_TRANSFER);break;case"functionCall":y+=Number(Yn.CONTRACT_CALL);break;case"createAccount":y+=Number(Yn.ACCOUNT_CREATION);break;case"deployContract":y+=Number(Yn.CONTRACT_DEPLOYMENT);break;case"addKey":y+=Number(Yn.ACCESS_KEY_ADDITION);break;case"deleteKey":y+=Number(Yn.ACCESS_KEY_DELETION);break;case"stake":y+=Number(Yn.STAKE);break;default:y+=Number(Yn.CONTRACT_CALL)}return y.toString()}function ut(n){if(n==="ft_transfer"||n==="ft_transfer_call")return Yn.TOKEN_TRANSFER;if(n==="storage_deposit")return Yn.STORAGE_DEPOSIT;return Yn.CONTRACT_CALL}function U5(n){return(BigInt(n)*BigInt(1000000000000)).toString()}function w5(n){return(BigInt(n)/BigInt(1000000000000)).toString()}var Yn;var Pt=p(()=>{Yn={ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",ACCOUNT_CREATION:"30",CONTRACT_CALL:"150",CONTRACT_DEPLOYMENT:"200",SIMPLE_TRANSFER:"1",STAKE:"10",STORAGE_DEPOSIT:"150",TOKEN_TRANSFER:"150"}});async function It({account:n,contractId:y,viewMethods:T,changeMethods:o}){let{Contract:f}=await import("@near-js/accounts");return new f(n,y,{changeMethods:o,useLocalViewExecution:!0,viewMethods:T})}function q5(n){let y;async function T(){if(y)return y;return y=await ao.match(n).with({phrase:ao.P.string},async(L)=>{return await bf(L)}).with({signer:ao.P.any},({signer:L})=>L).otherwise(()=>{return}),y}async function o(){let L=await nn.getRPCUrl(nn.Chain.Near);return new k1.JsonRpcProvider({url:L})}async function f(L){let{Account:O}=await import("@near-js/accounts"),R=await o(),k=await T(),u=L||await t();return new O(u,R,k)}async function t(){let L=await T();if(!L)throw new nn.SwapKitError("toolbox_near_no_signer");return await L.getAddress()}async function C(L){return(await J({changeMethods:[],contractId:L.contractId,viewMethods:["storage_balance_of"]})).storage_balance_of({account_id:L.accountId})}async function H(L){let R=[await U({args:{account_id:L.recipient},attachedDeposit:"1250000000000000000000",gas:"150000000000000",methodName:"storage_deposit"}),await U({args:{amount:L.assetValue.getBaseValue("string"),memo:L.memo||null,receiver_id:L.recipient},attachedDeposit:"1",gas:"150000000000000",methodName:"ft_transfer"})];return l({actions:R,receiverId:L.contractId})}async function A(L){if(!await T())throw new nn.SwapKitError("toolbox_near_no_signer");let{assetValue:R,recipient:k,memo:u}=L,K=await t();if(!R.isGasAsset&&R.address){if(!await C({accountId:k,contractId:R.address}))return H({assetValue:R,contractId:R.address,memo:u,recipient:k})}let s=await _({...L,sender:K});return w(s)}async function _({recipient:L,assetValue:O,memo:R,attachedDeposit:k,sender:u,functionCall:K}){let s=await o();if(!Py(L))throw new nn.SwapKitError("toolbox_near_invalid_address",{recipient:L});if(!Py(u))throw new nn.SwapKitError("toolbox_near_invalid_address",{sender:u});if(K)return B({...K,sender:u});if(!O.isGasAsset){let In=O.address;if(!In)throw new nn.SwapKitError("toolbox_near_missing_contract_address");return B({args:{amount:O.getBaseValue("string"),memo:R||null,receiver_id:L},attachedDeposit:k||"1",contractId:In,gas:"250000000000000",methodName:"ft_transfer",sender:u})}let{publicKey:tn,nonce:on}=await vf(s,u),Zn=O.getBaseValue("bigint"),{actionCreators:Bn,createTransaction:On}=await import("@near-js/transactions"),{baseDecode:jn}=await import("@near-js/utils"),cn=[Bn.transfer(Zn)];if(R&&k)cn.push(Bn.functionCall("memo",{memo:R},BigInt("250000000000000"),BigInt(k)));let Rn=await s.block({finality:"final"}),ln=jn(Rn.header.hash);return On(u,tn,L,on+1,cn,ln)}function X(L){let O=L.encode();return Buffer.from(O).toString("base64")}async function B({args:L,attachedDeposit:O,contractId:R,gas:k,methodName:u,sender:K}){let s=await o(),{publicKey:tn,nonce:on}=await vf(s,K),{createTransaction:Zn,actionCreators:Bn}=await import("@near-js/transactions"),{baseDecode:On}=await import("@near-js/utils"),jn=await s.block({finality:"final"}),cn=On(jn.header.hash),Rn=[Bn.functionCall(u,Buffer.from(JSON.stringify(L)),BigInt(k),BigInt(O))];return Zn(K,tn,R,on+1,Rn,cn)}async function U(L){let{actionCreators:O}=await import("@near-js/transactions");return O.functionCall(L.methodName,Buffer.from(JSON.stringify(L.args)),BigInt(L.gas),BigInt(L.attachedDeposit))}async function q(L){let O=await T();if(!O)throw new nn.SwapKitError("toolbox_near_no_signer");let[R,k]=await O.signTransaction(L);return k}async function G(L){return(await(await o()).sendTransaction(L)).transaction.hash}async function w(L){let O=await T();if(!O)throw new nn.SwapKitError("toolbox_near_no_signer");try{let R=await q(L);return await G(R)}catch{return O.signAndSendTransactions?.({transactions:[L]})}}async function Q(L){let O=await T();if("assetValue"in L){let k=await N();try{let u=await nn.getRPCUrl(nn.Chain.Near),K=await fetch(u,{body:JSON.stringify({id:"dontcare",jsonrpc:"2.0",method:"EXPERIMENTAL_protocol_config",params:{finality:"final"}}),headers:{"Content-Type":"application/json"},method:"POST"}),{result:{runtime_config:s}}=await K.json(),{execution:tn,send_sir:on}=s.transaction_costs.action_receipt_creation_config,{execution:Zn,send_sir:Bn}=s.transaction_costs.action_creation_config.transfer_cost,On=BigInt(Bn)+BigInt(Zn),jn=BigInt(on)+BigInt(tn),Rn=(On+jn)*BigInt(k.toString());return nn.AssetValue.from({chain:nn.Chain.Near,value:Rn})}catch(u){console.debug("NEAR fee estimation (protocol config) failed, using fallback:",u);let K=BigInt("115123062500"),s=BigInt("108059500000"),on=(K+s)*BigInt(k.toString());return nn.AssetValue.from({chain:nn.Chain.Near,value:on})}}let R=O?await f():void 0;return M(L,R)}async function N(){let L=await o();try{return await L.query({account_id:"system",args_base64:"",finality:"final",method_name:"gas_price",request_type:"call_function"})}catch{return"100000000"}}async function Y(L,O,R){if(!await T())throw new nn.SwapKitError("toolbox_near_no_signer");let u=await f(),{formatNearAmount:K}=await import("@near-js/utils"),{PublicKey:s}=await import("@near-js/crypto"),tn=K(R)||"0";return(await u.createAccount(L,s.fromString(O),BigInt(tn))).transaction.hash}async function z(L){let O=await T();try{if(!O)throw new nn.SwapKitError("toolbox_near_no_signer");let{actionCreators:R}=await import("@near-js/transactions"),{contractId:k,methodName:u,args:K,deposit:s}=L,tn=await f(),on=await M({args:K||{},contractId:k,methodName:u}),Zn=R.functionCall(u,K||{},on.getBaseValue("bigint"),BigInt(s||"1"));return(await tn.signAndSendTransaction({actions:[Zn],receiverId:k})).transaction_outcome.id}catch(R){throw new nn.SwapKitError("toolbox_near_transfer_failed",{error:R})}}async function J(L){let O=await f();return It({account:O,changeMethods:L.changeMethods,contractId:L.contractId,viewMethods:L.viewMethods})}async function l(L){if(!await T())throw new nn.SwapKitError("toolbox_near_no_signer");if(L.actions.length===0)throw new nn.SwapKitError("toolbox_near_empty_batch");return(await(await f()).signAndSendTransaction({actions:L.actions,receiverId:L.receiverId})).transaction.hash}async function M(L,O){let R=await ao.match(L).when(Ot,()=>Yn.SIMPLE_TRANSFER).when(Rt,(u)=>ut(u.methodName)).when(xt,(u)=>kt(u.actions)).when(Ft,()=>Yn.ACCOUNT_CREATION).when(St,()=>Yn.CONTRACT_DEPLOYMENT).when(pt,(u)=>{if(!O)throw new nn.SwapKitError("toolbox_near_no_account");return u.customEstimator(O)}).otherwise(()=>{throw new nn.SwapKitError("toolbox_near_invalid_gas_params")}),k=BigInt(R)*BigInt(1000000000000);return nn.AssetValue.from({chain:nn.Chain.Near,value:k})}function W(L,O){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),M(L,O)}async function Z(){let L=await o();try{return(await L.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function D(){let L=await T();return L?(await L.getPublicKey()).toString():""}return{broadcastTransaction:G,callFunction:z,createAction:U,createContract:J,createContractFunctionCall:B,createSubAccount:Y,createTransaction:_,estimateGas:W,estimateGasLimit:M,estimateTransactionFee:Q,executeBatchTransaction:l,getAddress:t,getBalance:xn(nn.Chain.Near),getGasPrice:Z,getNearProvider:o,getPublicKey:D,getSignerFromPhrase:bf,getSignerFromPrivateKey:zt,serializeTransaction:X,signAndBroadcastTransaction:w,signTransaction:q,transfer:A,validateAddress:Py}}var k1,nn,ao;var $t=p(()=>{dn();Dt();Pt();k1=require("@near-js/providers"),nn=require("@swapkit/helpers"),ao=require("ts-pattern")});var u1=p(()=>{$t()});var Et={};Mn(Et,{validateNearAddress:()=>Py,tgasToGas:()=>U5,isSimpleTransfer:()=>Ot,isCustomEstimator:()=>pt,isContractDeployment:()=>St,isContractCall:()=>Rt,isBatchTransaction:()=>xt,isAccountCreation:()=>Ft,getNearToolbox:()=>q5,getNearSignerFromPrivateKey:()=>zt,getNearSignerFromPhrase:()=>bf,getFullAccessPublicKey:()=>vf,getContractMethodGas:()=>ut,gasToTGas:()=>w5,estimateBatchGas:()=>kt,createNearContract:()=>It,GAS_COSTS:()=>Yn});module.exports=Jn(Et);var bt=p(()=>{Dt();Pt();$t();u1()});var vt={};Mn(vt,{validateRadixAddress:()=>$1,getRadixToolbox:()=>B5});module.exports=Jn(vt);function $1(n){return n.startsWith("account_rdx1")&&n.length===66}function G5({networkApi:n}){return async function(T){let o=await l5({address:T,networkApi:n}),f=await X5({networkApi:n,resources:o});if(!f.some((C)=>C.isGasAsset))return[Vn.AssetValue.from({chain:Vn.Chain.Radix}),...f];return f}}async function l5({address:n,networkApi:y}){let T=!0,o,f=[],t=await W5(y);while(T){let C={address:n,at_ledger_state:{state_version:t},cursor:o,limit_per_page:100},H=await y.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:C});if(f=f.concat(H.items),H.next_cursor)o=H.next_cursor;else T=!1}return f}async function X5({resources:n,networkApi:y}){let T=[],o=50,f=[];for(let t=0;t<n.length;t+=50)f.push(n.slice(t,t+50));for(let t of f){let C=t.map((_)=>_.resource_address),H=await y.state.getEntityDetailsVaultAggregated(C),A=new Map;for(let _ of H)if(_.details!==void 0){let X=_.metadata?.items.find((U)=>U.key==="symbol"),B=X?.value.typed.type==="String"?X.value.typed.value:"?";if(_.details.type==="FungibleResource")A.set(_.address,{decimals:_.details.divisibility,symbol:B})}for(let _ of t)if(_.aggregation_level==="Global"){let X=A.get(_.resource_address)||{decimals:0,symbol:"?"},B=Vn.AssetValue.from({asset:X.symbol!==Vn.Chain.Radix?`${Vn.Chain.Radix}.${X.symbol}-${_.resource_address}`:"XRD.XRD",value:_.amount});T.push(B)}}return T}async function W5(n){return(await n.status.getCurrent()).ledger_state.state_version}function B5({dappConfig:n}={}){let y=n||Vn.SKConfig.get("integrations").radix,T=I1.RadixDappToolkit({...y,networkId:y.network?.networkId||1}),o=P1.GatewayApiClient.initialize(T.gatewayApi.clientConfig);return{getAddress:()=>"",getBalance:G5({networkApi:o}),networkApi:o,signAndBroadcast:()=>{throw new Vn.SwapKitError("toolbox_radix_method_not_supported",{method:"signAndBroadcast"})},validateAddress:$1}}var P1,I1,Vn;var Vt=p(()=>{P1=require("@radixdlt/babylon-gateway-api-sdk"),I1=require("@radixdlt/radix-dapp-toolkit"),Vn=require("@swapkit/helpers")});function Vf(n){return/^[0-9A-Fa-f]{40}$/.test(n)}function Iy(n){if(Vf(n))return n.toUpperCase();if(n.length<=3){let T=Buffer.from(n.padEnd(3,"\x00")).toString("hex");return`00${"0".repeat(22)}${T}${"0".repeat(10)}`.toUpperCase()}let y=Buffer.from(n).toString("hex").toUpperCase();if(y.length>40)throw new E1.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:n,reason:"Currency exceeds maximum length (20 bytes)"}});return y.padEnd(40,"0")}function M5(n){if(!Vf(n))return n;if(n.toUpperCase().startsWith("00")){let y=n.slice(24,30);try{let T=Buffer.from(y,"hex").toString("ascii").replace(/\0/g,"");if(/^[A-Za-z0-9?!@#$%^&*<>(){}[\]|]+$/.test(T)&&T.length>0)return T}catch{}return n.toUpperCase()}try{let y=n.replace(/0+$/,""),T=y.length%2===0?y:`${y}0`,o=Buffer.from(T,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test(o))return o}catch{}return n.toUpperCase()}function so(n){if(Vf(n))return n.toUpperCase();if(n.length<=3)return n;return Iy(n)}var E1;var Kf=p(()=>{E1=require("@swapkit/helpers")});async function L5(n,y){let T=so(n),o=cf.find((f)=>so(f.currency)===T&&f.issuer===y);if(o)return o;try{let f=await jf.RequestClient.get(`https://api.xrplmeta.org/token/${n}:${y}`);if(f)return{currency:n,decimals:15,description:f.desc,domain:f.domain,icon:f.icon,issuer:y,name:f.name,verified:f.self_assessment?.is_regulated||f.self_assessment?.is_licensed}}catch(f){jf.warnOnce({condition:!0,id:`xrpl_token_lookup_${n}_${y}`,warning:`Failed to fetch XRPL token info for ${n}:${y}: ${f}`})}return{currency:n,decimals:15,issuer:y,verified:!1}}function Q5(n){return cf.filter((y)=>y.issuer===n)}function Z5(n,y){let T=so(n);return cf.some((o)=>so(o.currency)===T&&o.issuer===y)}var jf,cf;var b1=p(()=>{Kf();jf=require("@swapkit/helpers"),cf=[{currency:"USD",decimals:15,domain:"circle.com",issuer:"rcEGREd8NmkKRE8GE424sksyt1tJVFZwu",name:"Circle USDC",verified:!0},{currency:"RLUSD",decimals:15,domain:"ripple.com",issuer:"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De",name:"Ripple USD",verified:!0},{currency:"USD",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp USD",verified:!0},{currency:"BTC",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp BTC",verified:!0},{currency:"EUR",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp EUR",verified:!0},{currency:"USD",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub USD",verified:!0},{currency:"EUR",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub EUR",verified:!0},{currency:"BTC",decimals:15,domain:"gatehub.net",issuer:"rchGBxcD1A1C2tdxF6papQYZ8kjRKMYcL",name:"GateHub BTC",verified:!0},{currency:"ETH",decimals:15,domain:"gatehub.net",issuer:"rcA8X3TVMST1n3CJeAdGk1RdRCHii7N2h",name:"GateHub ETH",verified:!0},{currency:"SOLO",decimals:15,domain:"sologenic.com",issuer:"rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz",name:"Sologenic",verified:!0}]});var Kt={};Mn(Kt,{validateRippleAddress:()=>mf,parseXrplTokenIdentifier:()=>K1,normalizeCurrency:()=>so,isKnownToken:()=>Z5,isHexCurrency:()=>Vf,hexToCurrency:()=>M5,hashes:()=>c1.hashes,getXrplTokenInfo:()=>L5,getRippleToolbox:()=>Y5,getKnownTokensByIssuer:()=>Q5,formatXrplTokenIdentifier:()=>j1,currencyToHex:()=>Iy,XRPL_TOKEN_ERROR_CODES:()=>hf,XRPL_KNOWN_TOKENS:()=>cf});module.exports=Jn(Kt);function K1(n){let y=n.match(/^XRP\.([A-Fa-f0-9]{40}|[\x20-\x7E]{1,20})-([a-zA-Z0-9]{25,34})$/);if(!y?.[1]||!y?.[2])return null;if(!To.isValidAddress(y[2]))return null;return{currency:y[1],issuer:y[2]}}function j1(n,y){return`${i.Chain.Ripple}.${n}-${y}`}function J5(n){if(n.isGasAsset)return To.xrpToDrops(n.getValue("string"));let y=K1(n.toString());if(!y)throw new i.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:n.toString()}});return{currency:y.currency,issuer:y.issuer,value:n.getValue("string")}}function V1(n){let y=To.Wallet.fromMnemonic(n);return{getAddress:()=>Promise.resolve(y.address),signTransaction:(T)=>Promise.resolve(y.sign(T))}}function mf(n){return To.isValidAddress(n)}function Y5(n={}){let y=eo.match(n).with({phrase:eo.P.string},({phrase:Y})=>V1(Y)).with({signer:eo.P.any},({signer:Y})=>Y).otherwise(()=>{return}),T;async function o(){let Y=await i.getRPCUrl(i.Chain.Ripple);if(!Y)throw new i.SwapKitError({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:i.Chain.Ripple}});let z=new To.Client(Y);return await z.connect(),z}async function f(){if(T){let Y=await T.catch(()=>null);if(Y?.isConnected())return Y}return T=o(),T}let t=()=>{if(!y)throw new i.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return y.getAddress()},C=async(Y)=>{let z=Y||await t(),{baseDecimal:J}=i.getChainConfig(i.Chain.Ripple),l=await f();try{let[M,W]=await Promise.all([l.request({account:z,command:"account_info"}),l.request({account:z,command:"account_lines"})]),Z=M.result.account_data.Balance,D=[i.AssetValue.from({chain:i.Chain.Ripple,fromBaseDecimal:J,value:Z})];for(let L of W.result.lines){let O=j1(L.currency,L.account);if(Number.parseFloat(L.balance)!==0)D.push(i.AssetValue.from({asset:O,asyncTokenLookup:!1,value:L.balance}))}return D}catch(M){if(M.data?.error_code===v1.ACCOUNT_NOT_FOUND)return[i.AssetValue.from({chain:i.Chain.Ripple,value:0})];throw new i.SwapKitError({errorKey:"toolbox_ripple_get_balance_error",info:{address:z,error:M}})}},H=async()=>{let{baseDecimal:Y}=i.getChainConfig(i.Chain.Ripple),l=(await(await f()).request({command:"fee"})).result.drops.open_ledger_fee;return i.AssetValue.from({chain:i.Chain.Ripple,fromBaseDecimal:Y,value:l})};async function A(Y){let z=Y||await t(),J=await f();try{return(await J.request({account:z,command:"account_lines"})).result.lines.map((M)=>({account:M.account,authorized:M.authorized??!1,balance:M.balance,currency:M.currency,freeze:M.freeze??!1,freezePeer:M.freeze_peer??!1,limit:M.limit,limitPeer:M.limit_peer,noRipple:M.no_ripple??!1,noRipplePeer:M.no_ripple_peer??!1,peerAuthorized:M.peer_authorized??!1,qualityIn:M.quality_in??0,qualityOut:M.quality_out??0}))}catch(l){if(l.data?.error_code===v1.ACCOUNT_NOT_FOUND)return[];throw new i.SwapKitError({errorKey:"toolbox_ripple_get_trust_lines_error",info:{address:z,error:l}})}}async function _({address:Y,currency:z,issuer:J}){let l=await A(Y),M=Iy(z);return l.some((W)=>{return Iy(W.currency)===M&&W.account===J})}async function X({currency:Y,issuer:z,limit:J,sender:l}){let M=l||await t();if(!mf(z))throw new i.SwapKitError({errorKey:"core_transaction_invalid_recipient_address",info:{address:z}});let W=Number.parseFloat(J);if(Number.isNaN(W)||W<0)throw new i.SwapKitError({errorKey:"toolbox_ripple_invalid_trust_line_limit",info:{limit:J}});let Z=await f(),D={Account:M,LimitAmount:{currency:Y,issuer:z,value:J},TransactionType:"TrustSet"};return Z.autofill(D)}async function B({assetValue:Y,recipient:z,memo:J,sender:l,destinationTag:M,extendBySeconds:W=150}){if(!mf(z))throw new i.SwapKitError({errorKey:"core_transaction_invalid_recipient_address"});let Z=l||await t();if(Y.chain!==i.Chain.Ripple)throw new i.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:Y.toString()}});let D=J5(Y),L={Account:Z,Amount:D,Destination:z,TransactionType:"Payment",...M!==void 0&&{DestinationTag:M}};if(J)L.Memos=[{Memo:{MemoData:Buffer.from(J).toString("hex")}}];let R=await(await f()).autofill(L);if(R.LastLedgerSequence&&W>0)R.LastLedgerSequence+=Math.ceil(W/4);return R}function U(Y){if(!y)throw new i.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return y.signTransaction(Y)}async function q(Y){let J=await(await f()).submitAndWait(Y),{result:l}=J;if(l.validated)return l.hash;let M=l.meta?.TransactionResult,W=eo.match(M).with(hf.tecNO_LINE,()=>"No trust line exists for this token").with(hf.tecPATH_DRY,()=>"Payment path could not deliver funds").with(hf.tecFROZEN,()=>"Token is frozen").otherwise(()=>{return});throw new i.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:i.Chain.Ripple,...W?{reason:W}:{txResult:M}}})}let G=async(Y)=>{try{let z=await U(Y);return q(z.tx_blob)}catch(z){if(z instanceof i.SwapKitError)throw z;throw new i.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:i.Chain.Ripple,error:z}})}};async function w(Y){if(!y)throw new i.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let z=await y.getAddress(),J=await B({...Y,sender:z}),l=await U(J);return q(l.tx_blob)}async function Q(Y){if(!y)throw new i.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let z=await y.getAddress(),J=await X({...Y,sender:z}),l=await U(J);return q(l.tx_blob)}function N(){let Y=T;if(T=null,Y)Y.then((z)=>{if(z?.isConnected())return z.disconnect();return}).catch((z)=>{console.warn("XRPL Cleanup failed silently:",z)})}return{broadcastTransaction:q,createSigner:V1,createTransaction:B,disconnect:N,estimateTransactionFee:H,getAddress:t,getBalance:C,getTrustLines:A,hasTrustLine:_,setTrustLine:X,setTrustLineAndBroadcast:Q,signAndBroadcastTransaction:G,signTransaction:U,transfer:w,validateAddress:mf}}var i,eo,To,c1,v1,hf;var jt=p(()=>{Kf();i=require("@swapkit/helpers"),eo=require("ts-pattern"),To=require("xrpl");Kf();b1();c1=require("xrpl"),v1={ACCOUNT_NOT_FOUND:19},hf={tecFROZEN:"tecFROZEN",tecNO_AUTH:"tecNO_AUTH",tecNO_DST:"tecNO_DST",tecNO_LINE:"tecNO_LINE",tecPATH_DRY:"tecPATH_DRY",tecUNFUNDED_OFFER:"tecUNFUNDED_OFFER"}});function ct(n,y){let T=0n,o=0n,f=y;while(f<n.length&&f-y<10){let t=n[f++];if(t===void 0)break;if(T|=BigInt(t&127)<<o,o+=7n,(t&128)===0)return[T,f]}throw new ko.SwapKitError("toolbox_tron_transaction_creation_failed")}function $y(n){let y=[],T=n<0n?n+2n**64n:n;while(T>=128n)y.push(Number(T&0x7fn)|128),T>>=7n;return y.push(Number(T)),y}function rf(n,y,T){let o=n.get(y);if(o)o.push(T);else n.set(y,[T])}function O5(n){let y=new Map,T=0;while(T<n.length){let[o,f]=ct(n,T);T=f;let t=Number(o>>3n),C=Number(o&7n);if(C===gf){let[H,A]=ct(n,T);T=A,rf(y,t,{data:new Uint8Array($y(H)),wireType:gf})}else if(C===df){let[H,A]=ct(n,T);T=A;let _=Number(H);if(_<0||T+_>n.length)throw new ko.SwapKitError("toolbox_tron_transaction_creation_failed");let X=n.slice(T,T+_);T+=_,rf(y,t,{data:X,wireType:df})}else if(C===i1){if(T+8>n.length)throw new ko.SwapKitError("toolbox_tron_transaction_creation_failed");let H=n.slice(T,T+8);T+=8,rf(y,t,{data:H,wireType:i1})}else if(C===h1){if(T+4>n.length)throw new ko.SwapKitError("toolbox_tron_transaction_creation_failed");let H=n.slice(T,T+4);T+=4,rf(y,t,{data:H,wireType:h1})}else throw new ko.SwapKitError("toolbox_tron_transaction_creation_failed")}return y}function R5(n){let y=[];for(let[t,C]of[...n.entries()].sort(([H],[A])=>H-A))for(let{wireType:H,data:A}of C){let _=BigInt(t<<3|H);if(y.push(new Uint8Array($y(_))),H===df)y.push(new Uint8Array($y(BigInt(A.length))));y.push(A)}let T=y.reduce((t,C)=>t+C.length,0),o=new Uint8Array(T),f=0;for(let t of y)o.set(t,f),f+=t.length;return o}function r1(n,y){if(!n||n.length%2!==0)throw new ko.SwapKitError("toolbox_tron_transaction_creation_failed");let T=ny.hexToBytes(n),o=O5(T);if(y.expiration!==void 0)o.set(N5,[{data:new Uint8Array($y(BigInt(y.expiration))),wireType:gf}]);if(y.data!==void 0)o.set(z5,[{data:ny.hexToBytes(y.data),wireType:df}]);if(y.fee_limit!==void 0)o.set(D5,[{data:new Uint8Array($y(BigInt(y.fee_limit))),wireType:gf}]);let f=R5(o),t=ny.bytesToHex(f),C=ny.bytesToHex(m1.sha256(f));return{raw_data_hex:t,txID:C}}var m1,ny,ko,gf=0,i1=1,df=2,h1=5,N5=8,z5=10,D5=18;var g1=p(()=>{m1=require("@noble/hashes/sha2.js"),ny=require("@noble/hashes/utils.js"),ko=require("@swapkit/helpers")});function Kn(n){if(typeof n!=="string")return!1;try{let y=af.decode(n);return y.length===21&&y[0]===s1}catch{return!1}}function e1(n){return Pn.bytesToHex(af.decode(n))}function F5(n){return af.decode(n).slice(1)}function nH(n){let y=it.secp256k1.getPublicKey(Pn.hexToBytes(n),!1),T=d1.keccak_256(y.slice(1)).slice(-20),o=new Uint8Array(21);return o[0]=s1,o.set(T,1),af.encode(o)}function oH({txID:n,privateKey:y}){let T=it.secp256k1.sign(Pn.hexToBytes(n),Pn.hexToBytes(y),{format:"recovered",prehash:!1}),o=T[0]??0,f=Pn.bytesToHex(T.slice(1,33)),t=Pn.bytesToHex(T.slice(33,65)),C=(o+27).toString(16).padStart(2,"0");return f+t+C}function oy({txID:n,raw_data_hex:y}){let T=Pn.bytesToHex(ht.sha256(Pn.hexToBytes(y)));if(n!==T)throw new mt.SwapKitError("toolbox_tron_invalid_transaction_integrity",{expected:T,txID:n})}function S5(n){return`000000000000000000000000${Pn.bytesToHex(F5(n))}`}function p5(n){let y=typeof n==="bigint"?n:BigInt(n);if(y<0n||y>=x5)throw new mt.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:y.toString()});return y.toString(16).padStart(64,"0")}function yy(n){return n.map(({type:y,value:T})=>y==="address"?S5(T):p5(BigInt(T))).join("")}function yH(n){return Pn.bytesToHex(new TextEncoder().encode(n))}var it,ht,d1,Pn,a1,mt,af,s1=65,x5;var rt=p(()=>{it=require("@noble/curves/secp256k1.js"),ht=require("@noble/hashes/sha2.js"),d1=require("@noble/hashes/sha3.js"),Pn=require("@noble/hashes/utils.js"),a1=require("@scure/base"),mt=require("@swapkit/helpers"),af=a1.createBase58check(ht.sha256),x5=2n**256n});function TH(){try{return Gn.getRPCUrlSync(Gn.Chain.Tron)}catch{return fH}}function tH(){let n=new AbortController,y=setTimeout(()=>n.abort(),I5);return{cleanup:()=>clearTimeout(y),signal:n.signal}}async function fy(n,y){let{signal:T,cleanup:o}=tH();try{let f=await fetch(`${TH()}${n}`,{body:JSON.stringify(y),headers:{"Content-Type":"application/json"},method:"POST",signal:T});if(!f.ok)throw new Gn.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${f.status} ${f.statusText} on ${n}`});return await f.json()}finally{o()}}async function CH(n,y){let{signal:T,cleanup:o}=tH();try{let f=await fetch(`${y??TH()}${n}`,{headers:{"Content-Type":"application/json"},signal:T});if(!f.ok)throw new Gn.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${f.status} ${f.statusText} on ${n}`});return await f.json()}finally{o()}}async function HH(n){if(!Kn(n))throw new Gn.SwapKitError("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let y=await CH(`/v1/accounts/${n}`,fH);if(!(y.success&&y.data)||y.data.length===0)return;let T;try{T=e1(n).toLowerCase()}catch{T=n.toLowerCase()}let o=y.data.find((f)=>f.address.toLowerCase()===T);if(!o)return;return{balance:o.balance,trc20:o.trc20||[]}}catch(y){if(y instanceof Gn.SwapKitError)throw y;throw new Gn.SwapKitError("toolbox_tron_trongrid_api_error",{address:n,message:y instanceof Error?y.message:"Unknown error"})}}async function AH({from:n,to:y,amount:T}){let f=await fy("/wallet/createtransaction",{amount:T,owner_address:n,to_address:y,visible:!0});if(!f.txID||!f.raw_data_hex||!f.raw_data)throw new Gn.SwapKitError("toolbox_tron_transaction_creation_failed");let C=f.raw_data?.contract?.[0]?.parameter?.value;if(C?.to_address!==y||C?.owner_address!==n||C?.amount!==T)throw new Gn.SwapKitError("toolbox_tron_transaction_creation_failed");return oy(f),f}async function _H({ownerAddress:n,contractAddress:y,functionSelector:T,parameter:o,feeLimit:f,callValue:t=0}){let C=await fy("/wallet/triggersmartcontract",{call_value:t,contract_address:y,fee_limit:f,function_selector:T,owner_address:n,parameter:o,visible:!0});if(!C.result.result||!C.transaction?.txID||!C.transaction?.raw_data_hex)throw new Gn.SwapKitError("toolbox_tron_transaction_creation_failed");let A=C.transaction.raw_data?.contract?.[0]?.parameter?.value;if(A?.contract_address!==y||A?.owner_address!==n)throw new Gn.SwapKitError("toolbox_tron_transaction_creation_failed");return oy(C.transaction),C.transaction}function UH({ownerAddress:n,contractAddress:y,functionSelector:T,parameter:o}){return fy("/wallet/triggerconstantcontract",{contract_address:y,function_selector:T,owner_address:n,parameter:o,visible:!0})}async function Ey(n){try{let{result:y,txid:T}=await fy("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!y||!T)throw new Gn.SwapKitError("toolbox_tron_token_transfer_failed");return T}catch(y){throw new Gn.SwapKitError("toolbox_tron_broadcast_failed",{error:y})}}async function sf(){let n={};try{let{chainParameter:y}=await CH("/wallet/getchainparameters");for(let T of y)n[T.key]=T.value}catch(y){Gn.warnOnce({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${y instanceof Error?y.message:y}`})}return{bandwidthFee:n.getTransactionFee??k5,createAccountFee:n.getCreateAccountFee??u5,energyFee:n.getEnergyFee??P5}}async function gt(n){try{let y=await fy("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:(y.freeNetLimit??600)-(y.freeNetUsed??0),total:y.NetLimit??0,used:y.NetUsed??0},energy:{total:y.EnergyLimit??0,used:y.EnergyUsed??0}}}catch(y){return Gn.warnOnce({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${y instanceof Error?y.message:y}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function dt(n){try{let y=await fy("/wallet/getaccount",{address:n,visible:!0});return y&&Object.keys(y).length>0}catch{return!1}}async function at(n){try{let{energy_used:y}=await UH({...n,ownerAddress:n.sender});return y}catch(y){return Gn.warnOnce({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy, using default: ${y instanceof Error?y.message:y}`}),65000}}async function wH({assetAddress:n,owner:y,spender:T}){let o=yy([{type:"address",value:y},{type:"address",value:T}]),t=(await UH({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:T,parameter:o})).constant_result?.[0];if(!t)return 0n;try{return BigInt(`0x${t}`)}catch{return 0n}}var Gn,fH="https://api.trongrid.io",k5=1000,u5=1e5,P5=420,I5=30000;var qH=p(()=>{rt();Gn=require("@swapkit/helpers")});function MH({phrase:n,derivationPath:y}){let T=XH.HDKey.fromMasterSeed(WH.mnemonicToSeedSync(n)).derive(y);if(!T.privateKey)throw new E.SwapKitError("toolbox_tron_no_signer");return lH.bytesToHex(T.privateKey)}function LH({phrase:n,derivationPath:y,index:T}){let o=y||E.derivationPathToString(E.updateDerivationPath(E.NetworkDerivationPath[E.Chain.Tron],{index:T||0}));return MH({derivationPath:o,phrase:n})}function V5({phrase:n,derivationPath:y}){let T=MH({derivationPath:y,phrase:n}),o=nH(T);return{getAddress:()=>Promise.resolve(o),signTransaction:(f)=>{oy(f);let t=oH({privateKey:T,txID:f.txID});return Promise.resolve({...f,signature:[t]})}}}function GH({transaction:n,memo:y,expiration:T,feeLimit:o}){let f={},t={};if(o!==void 0&&n.raw_data)f.fee_limit=o,t.fee_limit=o;if(y){let A=yH(y);f.data=A,t.data=A}if(T){let A=n.raw_data.expiration+T*1000;f.expiration=A,t.expiration=A}if(Object.keys(f).length===0)return n;let{raw_data_hex:C,txID:H}=r1(n.raw_data_hex,f);return{...n,raw_data:{...n.raw_data,...t},raw_data_hex:C,txID:H}}function QH(n={}){let y="index"in n?n.index||0:0,T=E.derivationPathToString("derivationPath"in n&&n.derivationPath?n.derivationPath:E.updateDerivationPath(E.NetworkDerivationPath[E.Chain.Tron],{index:y})),o,f=!1;function t(){if(f)return Promise.resolve(o);return o=Ty.match(n).with({phrase:Ty.P.string},({phrase:l})=>V5({derivationPath:T,phrase:l})).with({signer:Ty.P.not(Ty.P.nullish)},({signer:l})=>l).otherwise(()=>{return}),f=!0,Promise.resolve(o)}async function C(){let l=await t();if(!l)throw new E.SwapKitError("toolbox_tron_no_signer");return l.getAddress()}async function H(l){let M=l||E5,W=await sf(),Z=M*W.energyFee,D=Math.ceil(Z*1.5);return Math.min(Math.max(D,1e7),150000000)}async function A({contractAddress:l,functionSelector:M,parameter:W,sender:Z,memo:D,expiration:L}){let O=await at({contractAddress:l,functionSelector:M,parameter:W,sender:Z}),R=await H(O),k=await _H({contractAddress:l,feeLimit:R,functionSelector:M,ownerAddress:Z,parameter:W});return GH({expiration:L,feeLimit:R,memo:D,transaction:k})}async function _(l){if(!Kn(l))return[E.AssetValue.from({chain:E.Chain.Tron})];try{let M=await HH(l);if(!M)return[E.AssetValue.from({chain:E.Chain.Tron})];let W=[E.AssetValue.from({chain:E.Chain.Tron,fromBaseDecimal:6,value:String(M.balance)})],Z=M.trc20?.find((D)=>(st in D));if(Z){let D=Z[st];W.push(E.AssetValue.from({asset:`TRON.USDT-${st}`,fromBaseDecimal:6,value:D}))}return W}catch(M){return E.warnOnce({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${M instanceof Error?M.message:M}`}),[E.AssetValue.from({chain:E.Chain.Tron})]}}async function X({recipient:l,assetValue:M,memo:W,expiration:Z}){if(!Kn(l))throw new E.SwapKitError("toolbox_tron_token_transfer_failed",{message:"invalid address"});let D=await t();if(!D)throw new E.SwapKitError("toolbox_tron_no_signer");try{let L=await C(),O=await w({assetValue:M,expiration:Z,memo:W,recipient:l,sender:L}),R=await D.signTransaction(O),k=await Ey(R);if(!k)throw new E.SwapKitError("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return k}catch(L){throw new E.SwapKitError("toolbox_tron_token_transfer_failed",{message:L instanceof Error?L.message:String(L)})}}function B({requiredBandwidth:l,resources:M,feePerUnit:W}){let Z=Math.max(0,M.free+M.total-M.used);return l>Z?(l-Z)*W:0}async function U({recipient:l,senderAddress:M}){let[W,Z,D]=await Promise.all([sf(),dt(l),gt(M)]),L=Z?0:W.createAccountFee,O=B({feePerUnit:W.bandwidthFee,requiredBandwidth:$5,resources:D.bandwidth});return E.AssetValue.from({chain:E.Chain.Tron,fromBaseDecimal:E.BaseDecimal.TRON,value:L+O})}async function q({assetValue:l,recipient:M,senderAddress:W}){let Z=l.address;if(!Z)throw new E.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:l.toString()});let[D,L,O,R]=await Promise.all([sf(),dt(M),gt(W),at({contractAddress:Z,functionSelector:"transfer(address,uint256)",parameter:yy([{type:"address",value:M},{type:"uint256",value:l.getBaseValue("string")}]),sender:W})]),k=L?0:D.createAccountFee,u=B({feePerUnit:D.bandwidthFee,requiredBandwidth:b5,resources:O.bandwidth}),K=Math.max(0,O.energy.total-O.energy.used),s=R>K?(R-K)*D.energyFee:0;return E.AssetValue.from({chain:E.Chain.Tron,fromBaseDecimal:E.BaseDecimal.TRON,value:k+u+s})}async function G({assetValue:l,recipient:M,sender:W}){let Z=await t();try{let D=W?W:Z?await C():void 0;if(!D)return l.isGasAsset?E.AssetValue.from({chain:E.Chain.Tron,value:0.1}):E.AssetValue.from({chain:E.Chain.Tron,value:15});return l.isGasAsset?U({recipient:M,senderAddress:D}):q({assetValue:l,recipient:M,senderAddress:D})}catch(D){throw E.warnOnce({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${D instanceof Error?D.message:D}`}),new E.SwapKitError("toolbox_fee_estimation_failed",{chain:E.Chain.Tron,error:D})}}async function w({recipient:l,assetValue:M,memo:W,sender:Z,expiration:D}){if(!Kn(l)||!Kn(Z))throw new E.SwapKitError("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(M.isGasAsset){let O=await AH({amount:M.getBaseValue("number"),from:Z,to:l});return GH({expiration:D,memo:W,transaction:O})}let L=M.address;if(!L)throw new E.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:M.toString()});return A({contractAddress:L,expiration:D,functionSelector:"transfer(address,uint256)",memo:W,parameter:yy([{type:"address",value:l},{type:"uint256",value:M.getBaseValue("string")}]),sender:Z})}async function Q(l){oy(l);let M=await t();if(!M)throw new E.SwapKitError("toolbox_tron_no_signer");return M.signTransaction(l)}async function N(l){let M=await Q(l);return Ey(M)}function Y({assetAddress:l,spenderAddress:M,from:W}){return wH({assetAddress:l,owner:W,spender:M})}async function z({assetAddress:l,spenderAddress:M,from:W,amount:Z}){let D=await Y({assetAddress:l,from:W,spenderAddress:M});if(!Z)return D>0n;return D>=BigInt(Z)}async function J({assetAddress:l,spenderAddress:M,amount:W,from:Z}){if(!Kn(l)||!Kn(M))throw new E.SwapKitError("toolbox_tron_approve_failed");let D=await t();if(!D)throw new E.SwapKitError("toolbox_tron_no_signer");let L=Z||await C(),O=W!==void 0?BigInt(W).toString():v5;try{let R=await A({contractAddress:l,functionSelector:"approve(address,uint256)",parameter:yy([{type:"address",value:M},{type:"uint256",value:O}]),sender:L}),k=await D.signTransaction(R),u=await Ey(k);if(!u)throw new E.SwapKitError("toolbox_tron_approve_failed");return u}catch(R){if(R instanceof E.SwapKitError)throw R;throw new E.SwapKitError("toolbox_tron_approve_failed",{error:R})}}return{approve:J,broadcastTransaction:Ey,createTransaction:w,estimateTransactionFee:G,getAddress:C,getApprovedAmount:Y,getBalance:_,getRpcUrl:()=>E.getRPCUrl(E.Chain.Tron),isApproved:z,signAndBroadcastTransaction:N,signTransaction:Q,transfer:X,validateAddress:Kn}}var lH,XH,WH,E,Ty,BH,$5=268,E5=65000,b5=345,st="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",v5="115792089237316195423570985008687907853269984665640564039457584007913129639935";var ZH=p(()=>{g1();qH();rt();lH=require("@noble/hashes/utils.js"),XH=require("@scure/bip32"),WH=require("@scure/bip39"),E=require("@swapkit/helpers"),Ty=require("ts-pattern"),BH=Kn});var et={};Mn(et,{validateTronAddress:()=>BH,getTronToolbox:()=>QH,getTronPrivateKeyFromMnemonic:()=>LH});module.exports=Jn(et);var n0=p(()=>{ZH()});function nT(n){if(!n||typeof n!=="string"||!n.startsWith("G")||n.length!==56)return!1;return K5.test(n)}async function j5(n){if(!nT(n))return!1;try{let{StrKey:y}=await import("@stellar/stellar-sdk");return y.isValidEd25519PublicKey(n)}catch{return!1}}function JH(n={}){let y,T=n.derivationPath||d.NetworkDerivationPath[d.Chain.Stellar],o=d.derivationPathToString(T.slice(0,3));async function f({phrase:w,path:Q}){let{HDKey:N}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:Y}=await import("@scure/bip39"),{Keypair:z}=await import("@stellar/stellar-sdk"),J=Y(w),M=N.fromMasterSeed(J).derive(Q,!0);return z.fromRawEd25519Seed(Buffer.from(M.privateKey))}async function t(){if(y)return y;let w=ef.match(n).with({phrase:ef.P.string},({phrase:Q})=>Q).otherwise(()=>{return});if(!w)throw new d.SwapKitError("toolbox_stellar_no_signer");return y=await f({path:o,phrase:w}),y}async function C(){let{Horizon:w}=await import("@stellar/stellar-sdk"),Q=await d.getRPCUrl(d.Chain.Stellar);return new w.Server(Q)}async function H(){try{return(await t()).publicKey()}catch{return""}}async function A(w){let Q=w||await H();if(!Q)throw new d.SwapKitError("toolbox_stellar_account_not_found");try{return(await(await C()).loadAccount(Q)).balances.map((z)=>{if(z.asset_type==="native")return d.AssetValue.from({chain:d.Chain.Stellar,value:z.balance});let J="asset_code"in z?z.asset_code:"",l="asset_issuer"in z?z.asset_issuer:"";return d.AssetValue.from({asset:`${d.Chain.Stellar}.${J}-${l}`,asyncTokenLookup:!1,value:z.balance})})}catch{return[d.AssetValue.from({chain:d.Chain.Stellar,value:0})]}}async function _({recipient:w,assetValue:Q,memo:N,sender:Y}){if(N){if(new TextEncoder().encode(N).length>28)throw new d.SwapKitError("helpers_invalid_memo_type")}if(!await j5(w))throw new d.SwapKitError("core_transaction_invalid_recipient_address");let J=Y||await H();if(!J)throw new d.SwapKitError("toolbox_stellar_no_signer");let{Asset:l,Memo:M,Networks:W,Operation:Z,TransactionBuilder:D}=await import("@stellar/stellar-sdk"),L=await C(),O=await L.fetchBaseFee(),R=await L.loadAccount(J),k=new D(R,{fee:String(O),networkPassphrase:W.PUBLIC});if(Q.isGasAsset)try{await L.loadAccount(w),k.addOperation(Z.payment({amount:Q.getValue("string"),asset:l.native(),destination:w}))}catch{k.addOperation(Z.createAccount({destination:w,startingBalance:Q.getValue("string")}))}else k.addOperation(Z.payment({amount:Q.getValue("string"),asset:new l(Q.symbol,Q.address),destination:w}));if(N)k.addMemo(M.text(N));return k.setTimeout(30).build()}async function X(w){let{TransactionBuilder:Q,Networks:N}=await import("@stellar/stellar-sdk"),Y=await t(),z=Q.fromXDR(w.toXDR(),N.PUBLIC);return z.sign(Y),z}async function B(w){try{let Q=await C(),{hash:N}=await Q.submitTransaction(w);return N}catch(Q){throw new d.SwapKitError("toolbox_stellar_broadcast_error",Q)}}async function U({recipient:w,assetValue:Q,memo:N}){let Y=await t(),z=Y.publicKey(),J=await _({assetValue:Q,memo:N,recipient:w,sender:z});J.sign(Y);try{return(await(await C()).submitTransaction(J)).hash}catch(l){if(l instanceof d.SwapKitError)throw l;throw new d.SwapKitError("toolbox_stellar_transaction_failed",l)}}async function q(w){let Q=await X(w);return B(Q)}async function G(){let{baseDecimal:w}=d.getChainConfig(d.Chain.Stellar);try{let Y=(await(await C()).feeStats()).fee_charged.p50;return d.AssetValue.from({chain:d.Chain.Stellar,fromBaseDecimal:w,value:Y})}catch{return d.AssetValue.from({chain:d.Chain.Stellar,fromBaseDecimal:w,value:"100"})}}return{broadcastTransaction:B,createTransaction:_,estimateTransactionFee:G,getAddress:H,getBalance:A,signAndBroadcastTransaction:q,signTransaction:X,transfer:U,validateAddress:nT}}var d,ef,K5;var YH=p(()=>{d=require("@swapkit/helpers"),ef=require("ts-pattern"),K5=/^G[A-Z2-7]{55}$/});var oT={};Mn(oT,{validateStellarAddress:()=>nT,getStellarToolbox:()=>JH});module.exports=Jn(oT);var yT=p(()=>{YH()});var h5={};Mn(h5,{getToolbox:()=>o0,getFeeEstimator:()=>i5,getAddressValidator:()=>c5});module.exports=Jn(h5);var $=require("@swapkit/helpers");async function c5(){let{match:n}=await import("ts-pattern"),{validateAptosAddress:y}=await Promise.resolve().then(() => (vy(),by)),{validateEVMAddress:T}=await Promise.resolve().then(() => (OT(),I0)),{validateCardanoAddress:o}=await Promise.resolve().then(() => (ST(),FT)),{getCosmosAddressValidator:f}=await Promise.resolve().then(() => (Gf(),qf)),{validateHyperCoreAddress:t}=await Promise.resolve().then(() => (sT(),aT)),{validateSolanaAddress:C}=await Promise.resolve().then(() => (ft(),yt)),{validateStarknetAddress:H}=await Promise.resolve().then(() => (Zf(),Qf)),{validateSuiAddress:A}=await Promise.resolve().then(() => (Yf(),Jf)),{validateTonAddress:_}=await Promise.resolve().then(() => (Df(),zf)),{getUTXOAddressValidator:X}=await Promise.resolve().then(() => (Nt(),Yt)),{validateNearAddress:B}=await Promise.resolve().then(() => (bt(),Et)),{validateRadixAddress:U}=await Promise.resolve().then(() => (Vt(),vt)),{validateRippleAddress:q}=await Promise.resolve().then(() => (jt(),Kt)),{validateTronAddress:G}=await Promise.resolve().then(() => (n0(),et)),{validateStellarAddress:w}=await Promise.resolve().then(() => (yT(),oT));return function({address:N,chain:Y}){return n(Y).with(...$.EVMChains,()=>T(N)).with(...$.UTXOChains,(J)=>{return X(J)(N)}).with(...$.CosmosChains,(J)=>{return f(J)(N)}).with($.Chain.Aptos,()=>y(N)).with($.Chain.Radix,()=>U(N)).with($.Chain.HyperCore,()=>t(N)).with($.Chain.Near,()=>B(N)).with($.Chain.Ripple,()=>q(N)).with($.Chain.Solana,()=>C(N)).with($.Chain.Stellar,()=>w(N)).with($.Chain.Starknet,()=>H(N)).with($.Chain.Sui,()=>A(N)).with($.Chain.Ton,()=>_(N)).with($.Chain.Tron,()=>G(N)).with($.Chain.Cardano,()=>o(N)).otherwise(()=>!1)}}function i5(n){return async function(T){let{match:o}=await import("ts-pattern");return o(n).returnType().with(...$.EVMChains,async(f)=>{let t=await o0(f),C=await t.createTransaction(T),H="feeOptionKey"in T?T.feeOptionKey:$.FeeOption.Fast;return t.estimateTransactionFee({...C,feeOption:H})}).with($.Chain.Bitcoin,$.Chain.BitcoinCash,$.Chain.Dogecoin,$.Chain.Dash,$.Chain.Litecoin,$.Chain.Solana,$.Chain.Ripple,$.Chain.Tron,$.Chain.Near,$.Chain.Cardano,$.Chain.HyperCore,async(f)=>{return(await o0(f)).estimateTransactionFee(T)}).with($.Chain.Aptos,async()=>{let{getAptosToolbox:f}=await Promise.resolve().then(() => (vy(),by));return f().estimateTransactionFee(T)}).with($.Chain.Starknet,async()=>{let{getStarknetToolbox:f}=await Promise.resolve().then(() => (Zf(),Qf));return(await f()).estimateTransactionFee(T)}).with($.Chain.Stellar,async()=>{let{getStellarToolbox:f}=await Promise.resolve().then(() => (yT(),oT));return f().estimateTransactionFee()}).with($.Chain.Sui,async()=>{let{getSuiToolbox:f}=await Promise.resolve().then(() => (Yf(),Jf));return f().estimateTransactionFee(T)}).with($.Chain.Ton,async()=>{let{getTONToolbox:f}=await Promise.resolve().then(() => (Df(),zf));return f().estimateTransactionFee(T)}).with(...$.CosmosChains,async()=>{let{estimateTransactionFee:f}=await Promise.resolve().then(() => (Gf(),qf));return f(T)}).otherwise(async()=>$.AssetValue.from({chain:n}))}}async function o0(n,y){let{match:T}=await import("ts-pattern");return T(n).returnType().with(...$.EVMChains,async()=>{let{getEvmToolboxAsync:o}=await Promise.resolve().then(() => (DT(),k0));return await o(n,y)}).with(...$.UTXOChains,async()=>{let{getUtxoToolbox:o}=await Promise.resolve().then(() => (Nt(),Yt));return o(n,y)}).with(...$.CosmosChains,async()=>{let{getCosmosToolbox:o}=await Promise.resolve().then(() => (Gf(),qf));return o(n,y)}).with($.Chain.Aptos,async()=>{let{getAptosToolbox:o}=await Promise.resolve().then(() => (vy(),by));return o(y)}).with($.Chain.HyperCore,async()=>{let{getHyperCoreToolbox:o}=await Promise.resolve().then(() => (sT(),aT));return o(y)}).with($.Chain.Radix,async()=>{let{getRadixToolbox:o}=await Promise.resolve().then(() => (Vt(),vt));return o(y)}).with($.Chain.Ripple,async()=>{let{getRippleToolbox:o}=await Promise.resolve().then(() => (jt(),Kt));return o(y)}).with($.Chain.Solana,async()=>{let{getSolanaToolbox:o}=await Promise.resolve().then(() => (ft(),yt));return o(y)}).with($.Chain.Stellar,async()=>{let{getStellarToolbox:o}=await Promise.resolve().then(() => (yT(),oT));return o(y)}).with($.Chain.Starknet,async()=>{let{getStarknetToolbox:o}=await Promise.resolve().then(() => (Zf(),Qf));return o(y)}).with($.Chain.Sui,async()=>{let{getSuiToolbox:o}=await Promise.resolve().then(() => (Yf(),Jf));return o(y)}).with($.Chain.Tron,async()=>{let{getTronToolbox:o}=await Promise.resolve().then(() => (n0(),et));return o(y)}).with($.Chain.Near,async()=>{let{getNearToolbox:o}=await Promise.resolve().then(() => (bt(),Et));return o(y)}).with($.Chain.Cardano,async()=>{let{getCardanoToolbox:o}=await Promise.resolve().then(() => (ST(),FT));return o(y)}).with($.Chain.Ton,async()=>{let{getTONToolbox:o}=await Promise.resolve().then(() => (Df(),zf));return o(y)}).otherwise(()=>{throw new $.SwapKitError("toolbox_not_supported",{chain:n})})}
|
|
1
|
+
var __create=Object.create;var{getPrototypeOf:__getProtoOf,defineProperty:__defProp,getOwnPropertyNames:__getOwnPropNames,getOwnPropertyDescriptor:__getOwnPropDesc}=Object,__hasOwnProp=Object.prototype.hasOwnProperty;function __accessProp(key){return this[key]}var __toESMCache_node,__toESMCache_esm,__toESM=(mod,isNodeMode,target)=>{var canCache=mod!=null&&typeof mod==="object";if(canCache){var cache=isNodeMode?__toESMCache_node??=new WeakMap:__toESMCache_esm??=new WeakMap,cached=cache.get(mod);if(cached)return cached}target=mod!=null?__create(__getProtoOf(mod)):{};let to=isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target;for(let key of __getOwnPropNames(mod))if(!__hasOwnProp.call(to,key))__defProp(to,key,{get:__accessProp.bind(mod,key),enumerable:!0});if(canCache)cache.set(mod,to);return to},__toCommonJS=(from)=>{var entry=(__moduleCache??=new WeakMap).get(from),desc;if(entry)return entry;if(entry=__defProp({},"__esModule",{value:!0}),from&&typeof from==="object"||typeof from==="function"){for(var key of __getOwnPropNames(from))if(!__hasOwnProp.call(entry,key))__defProp(entry,key,{get:__accessProp.bind(from,key),enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return __moduleCache.set(from,entry),entry},__moduleCache;var __returnValue=(v)=>v;function __exportSetter(name,newValue){this[name]=__returnValue.bind(null,newValue)}var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0,configurable:!0,set:__exportSetter.bind(all,name)})};var __esm=(fn,res)=>()=>(fn&&(res=fn(fn=0)),res);function validateAptosAddress(address){if(!address||typeof address!=="string"||!address.startsWith("0x"))return!1;let hex=address.slice(2);if(hex.length===0||hex.length>64)return!1;return hexRegex.test(hex)}function getAptosToolbox({derivationPath,provider:providerParam,...signerParams}={}){let cachedSigner,derivePath=import_helpers.derivationPathToString(derivationPath||import_helpers.NetworkDerivationPath[import_helpers.Chain.Aptos],{allHardened:!0});async function getSigner(){if(cachedSigner)return cachedSigner;return cachedSigner=await import_ts_pattern.match(signerParams).with({phrase:import_ts_pattern.P.string},async({phrase})=>{let{Ed25519Account}=await import("@aptos-labs/ts-sdk");return Ed25519Account.fromDerivationPath({mnemonic:phrase,path:derivePath})}).with({signer:import_ts_pattern.P.any},({signer})=>signer).otherwise(()=>{return}),cachedSigner}async function getAptosClient(){let{Aptos,AptosConfig}=await import("@aptos-labs/ts-sdk"),config=new AptosConfig({fullnode:providerParam||import_helpers.getRPCUrlSync(import_helpers.Chain.Aptos)});return new Aptos(config)}async function getAddress(){return(await getSigner())?.accountAddress.toString()||""}async function getBalance(targetAddress){let addressToQuery=targetAddress||await getAddress();if(!addressToQuery)throw new import_helpers.SwapKitError("toolbox_aptos_address_required");let{baseDecimal,chain}=import_helpers.getChainConfig(import_helpers.Chain.Aptos);try{let aptos=await getAptosClient(),aptBalance=await aptos.getAccountAPTAmount({accountAddress:addressToQuery}),aptosBalances=[import_helpers.AssetValue.from({chain,fromBaseDecimal:baseDecimal,value:aptBalance.toString()})],fungibleAssets=await aptos.getCurrentFungibleAssetBalances({options:{where:{owner_address:{_eq:addressToQuery}}}});for(let asset of fungibleAssets){if(asset.asset_type===AptosModules.COIN_TYPE||Number(asset.amount)<=0)continue;let assetType=asset.asset_type;if(assetType){let decimal=("metadata"in asset&&typeof asset.metadata==="object"&&asset.metadata!==null?asset.metadata:void 0)?.decimals??baseDecimal;aptosBalances.push(import_helpers.AssetValue.from({asset:`${import_helpers.Chain.Aptos}.APT-${assetType}`,fromBaseDecimal:decimal,value:String(asset.amount)}))}}return aptosBalances}catch{return[import_helpers.AssetValue.from({chain})]}}async function estimateTransactionFee(params){if(!params){let{baseDecimal:baseDecimal2}=import_helpers.getChainConfig(import_helpers.Chain.Aptos),fullnode=providerParam||import_helpers.getRPCUrlSync(import_helpers.Chain.Aptos),response=await fetch(`${fullnode}/estimate_gas_price`),{gas_estimate:gasEstimate}=await response.json();return import_helpers.AssetValue.from({chain:import_helpers.Chain.Aptos,fromBaseDecimal:baseDecimal2,value:String(gasEstimate)})}let signer=await getSigner();if(!signer)throw new import_helpers.SwapKitError("toolbox_aptos_no_signer");let transaction=await createTransaction(params),aptos=await getAptosClient(),[simulation]=await aptos.transaction.simulate.simple({signerPublicKey:signer.publicKey,transaction});if(!simulation)throw new import_helpers.SwapKitError("toolbox_aptos_transaction_creation_error");let gasUsed=BigInt(simulation.gas_used)*BigInt(simulation.gas_unit_price),{baseDecimal}=import_helpers.getChainConfig(import_helpers.Chain.Aptos);return import_helpers.AssetValue.from({chain:import_helpers.Chain.Aptos,fromBaseDecimal:baseDecimal,value:gasUsed.toString()})}async function createTransaction({recipient,assetValue,maxGasAmount,sender:_senderAddress}){if(!validateAptosAddress(recipient))throw new import_helpers.SwapKitError("core_transaction_invalid_recipient_address");let senderAddress=_senderAddress||await getAddress();if(!senderAddress)throw new import_helpers.SwapKitError("toolbox_aptos_no_sender");let{AccountAddress}=await import("@aptos-labs/ts-sdk"),aptos=await getAptosClient(),sender=AccountAddress.from(senderAddress);try{let functionName=assetValue.isGasAsset?AptosModules.TRANSFER:AptosModules.FUNGIBLE_STORE_TRANSFER,functionArguments=import_ts_pattern.match({address:assetValue?.address,isGasAsset:assetValue.isGasAsset}).with({isGasAsset:!0},()=>[AccountAddress.from(recipient),assetValue.getBaseValue("bigint")]).with({address:import_ts_pattern.P.string},({address})=>[AccountAddress.from(address),AccountAddress.from(recipient),assetValue.getBaseValue("bigint")]).otherwise(()=>null);if(!functionArguments)throw new import_helpers.SwapKitError("toolbox_aptos_missing_asset_type");return aptos.transaction.build.simple({data:{function:functionName,functionArguments,typeArguments:assetValue.isGasAsset?[]:[AptosModules.FUNGIBLE_ASSET_METADATA]},options:maxGasAmount?{maxGasAmount}:void 0,sender})}catch(error){if(error instanceof import_helpers.SwapKitError)throw error;throw new import_helpers.SwapKitError("toolbox_aptos_transaction_creation_error",error)}}async function signTransaction(transaction){let signer=await getSigner();if(!signer)throw new import_helpers.SwapKitError("toolbox_aptos_no_signer");return(await getAptosClient()).transaction.sign({signer,transaction})}async function transfer({assetValue,maxGasAmount,recipient}){let signer=await getSigner();if(!signer)throw new import_helpers.SwapKitError("toolbox_aptos_no_signer");if(!validateAptosAddress(recipient))throw new import_helpers.SwapKitError("core_transaction_invalid_recipient_address");try{let sender=signer.accountAddress.toString(),transaction=await createTransaction({assetValue,maxGasAmount,recipient,sender});return(await(await getAptosClient()).signAndSubmitTransaction({signer,transaction})).hash}catch(error){if(error instanceof import_helpers.SwapKitError)throw error;throw new import_helpers.SwapKitError("toolbox_aptos_transaction_creation_error",error)}}async function broadcastTransaction({senderAuthenticator,transaction}){try{return(await(await getAptosClient()).transaction.submit.simple({senderAuthenticator,transaction})).hash}catch(error){throw new import_helpers.SwapKitError("toolbox_aptos_broadcast_error",error)}}async function signAndBroadcastTransaction(transaction){let senderAuthenticator=await signTransaction(transaction);return broadcastTransaction({senderAuthenticator,transaction})}return{broadcastTransaction,createTransaction,estimateTransactionFee,getAddress,getBalance,signAndBroadcastTransaction,signTransaction,transfer,validateAddress:validateAptosAddress}}function createAptosExtensionTransfer({provider}){return async function({assetValue,recipient}){if(!validateAptosAddress(recipient))throw new import_helpers.SwapKitError("core_transaction_invalid_recipient_address");let{AccountAddress}=await import("@aptos-labs/ts-sdk");if(assetValue.isGasAsset)return(await provider.signAndSubmitTransaction({arguments:[AccountAddress.from(recipient).toString(),assetValue.getBaseValue("string")],function:AptosModules.TRANSFER,type:"entry_function_payload",type_arguments:[]})).hash;let assetAddress=assetValue.address;if(!assetAddress)throw new import_helpers.SwapKitError("toolbox_aptos_missing_asset_type");return(await provider.signAndSubmitTransaction({arguments:[assetAddress,AccountAddress.from(recipient).toString(),assetValue.getBaseValue("string")],function:AptosModules.FUNGIBLE_STORE_TRANSFER,type:"entry_function_payload",type_arguments:[AptosModules.FUNGIBLE_ASSET_METADATA]})).hash}}var import_helpers,import_ts_pattern,AptosModules,hexRegex;var init_toolbox=__esm(()=>{import_helpers=require("@swapkit/helpers"),import_ts_pattern=require("ts-pattern"),AptosModules={COIN_TYPE:"0x1::aptos_coin::AptosCoin",FUNGIBLE_ASSET_METADATA:"0x1::fungible_asset::Metadata",FUNGIBLE_STORE_TRANSFER:"0x1::primary_fungible_store::transfer",TRANSFER:"0x1::aptos_account::transfer"},hexRegex=/^[0-9a-fA-F]+$/});var exports_aptos={};__export(exports_aptos,{validateAptosAddress:()=>validateAptosAddress,getAptosToolbox:()=>getAptosToolbox,createAptosExtensionTransfer:()=>createAptosExtensionTransfer});module.exports=__toCommonJS(exports_aptos);var init_aptos=__esm(()=>{init_toolbox()});function uniqid(){function now(){let time=Date.now(),lastTime=last||time;return last=lastTime,time>last?time:lastTime+1}return pid+now().toString(36)}function getBalance(chain){return async function(address,scamFilter=!0){let balances=await import_api.SwapKitApi.getChainBalance({address,chain,scamFilter}),{baseDecimal}=import_helpers2.getChainConfig(chain),assetValues=balances.map(({identifier,value,decimal})=>{return new import_helpers2.AssetValue({decimal:decimal||baseDecimal,identifier,value})});if(!assetValues.some((asset)=>asset.isGasAsset))return[import_helpers2.AssetValue.from({chain}),...assetValues];return assetValues}}var import_helpers2,import_api,pid,last=0;var init_utils=__esm(()=>{import_helpers2=require("@swapkit/helpers"),import_api=require("@swapkit/helpers/api"),pid=typeof process<"u"&&process.pid?process.pid.toString(36):""});function getEvmApi(chain){return{getBalance:getBalance(chain)}}function createCustomEvmApi(methods){return methods}var init_api=__esm(()=>{init_utils()});function getProviderSync(url){return new import_ethers.JsonRpcProvider(url)}async function getProvider(chain,customUrl){return getProviderSync(customUrl||await import_helpers3.getRPCUrl(chain))}function toHexString(value){return value>0n?`0x${value.toString(16)}`:"0x0"}function getNetworkParams(chain){let{explorerUrl,chainIdHex,rpcUrls}=import_helpers3.getChainConfig(chain);return function(){return chain!==import_helpers3.Chain.Ethereum?{...getNetworkInfo({chain}),blockExplorerUrls:[explorerUrl],chainId:chainIdHex,rpcUrls}:void 0}}function getIsEIP1559Compatible(chain){return![import_helpers3.Chain.Adi,import_helpers3.Chain.Arbitrum,import_helpers3.Chain.BinanceSmartChain].includes(chain)}function getNetworkInfo({chain}){let{name,nativeCurrency,baseDecimal:decimals}=import_helpers3.getChainConfig(chain);return import_ts_pattern2.match(chain).with(import_helpers3.Chain.Arbitrum,()=>({chainName:"Arbitrum One",nativeCurrency:{decimals,name:"Ethereum",symbol:import_helpers3.Chain.Ethereum}})).with(import_helpers3.Chain.Aurora,()=>({chainName:"Aurora Mainnet",nativeCurrency:{decimals,name:"Ethereum",symbol:import_helpers3.Chain.Ethereum}})).with(import_helpers3.Chain.Avalanche,()=>({chainName:"Avalanche Network",nativeCurrency:{decimals,name:"Avalanche",symbol:chain}})).with(import_helpers3.Chain.Base,()=>({chainName:"Base Mainnet",nativeCurrency:{decimals,name:"Ethereum",symbol:import_helpers3.Chain.Ethereum}})).with(import_helpers3.Chain.Berachain,()=>({chainName:"Berachain",nativeCurrency:{decimals,name:"Berachain",symbol:"BERA"}})).with(import_helpers3.Chain.XLayer,()=>({chainName:"X Layer",nativeCurrency:{decimals,name:"OKB",symbol:"OKB"}})).with(import_helpers3.Chain.BinanceSmartChain,()=>({chainName:"BNB Smart Chain Mainnet",nativeCurrency:{decimals,name:"Binance Coin",symbol:"BNB"}})).with(import_helpers3.Chain.Gnosis,()=>({chainName:"Gnosis",nativeCurrency:{decimals,name:"xDAI",symbol:"XDAI"}})).with(import_helpers3.Chain.Optimism,()=>({chainName:"OP Mainnet",nativeCurrency:{decimals,name:"Ethereum",symbol:import_helpers3.Chain.Ethereum}})).with(import_helpers3.Chain.Polygon,()=>({chainName:"Polygon Mainnet",nativeCurrency:{decimals,name:"Polygon",symbol:import_helpers3.Chain.Polygon}})).otherwise(()=>({chainName:name,nativeCurrency:{decimals,name:nativeCurrency,symbol:nativeCurrency}}))}async function signAuthorization(signer,params){if(!("authorize"in signer))throw Error("Signer does not support EIP-7702 authorization. Requires ethers.js v6.14+");let normalizedParams={...params,nonce:params.nonce!==void 0?BigInt(params.nonce):void 0};return await signer.authorize(normalizedParams)}function validateAuthorization(auth,index){let prefix=index!==void 0?`index ${index}: `:"",throwError=(field,message)=>{throw new import_helpers3.SwapKitError({errorKey:"toolbox_evm_invalid_eip7702_authorization",info:{field,message:`${prefix}${message}`}})};import_ts_pattern2.match(auth).when(({chainId})=>typeof chainId!=="bigint",()=>throwError("chainId","chainId must be a bigint")).when(({address})=>!isValidAddress(address),()=>throwError("address","address must be a valid checksummed address")).when(({nonce})=>typeof nonce!=="bigint"||nonce<0n,()=>throwError("nonce","nonce must be a non-negative bigint")).when(({signature})=>!signature,()=>throwError("signature","signature is required")).when(({signature})=>typeof signature?.yParity!=="number"||![0,1].includes(signature.yParity),()=>throwError("signature.yParity","yParity must be 0 or 1")).when(({signature})=>!isValidHex32(signature?.r),()=>throwError("signature.r","r must be a 32-byte hex string")).when(({signature})=>!isValidHex32(signature?.s),()=>throwError("signature.s","s must be a 32-byte hex string")).otherwise(()=>{})}function buildEIP712DomainType(domain){return[{key:"name",type:"string"},{key:"version",type:"string"},{key:"chainId",type:"uint256"},{key:"verifyingContract",type:"address"},{key:"salt",type:"bytes32"}].filter(({key})=>domain[key]!=null).map(({key,type})=>({name:key,type}))}function toPascalCase(str){return str.charAt(0).toUpperCase()+str.slice(1)}function resolveEIP712Type(param,types){if(param.isTuple()&¶m.components){let typeName=toPascalCase(param.name);return types[typeName]=param.components.map((c)=>({name:c.name,type:resolveEIP712Type(c,types)})),typeName}if(param.isArray()){let child=param.arrayChildren;if(child?.isTuple()&&child.components){let typeName=toPascalCase(param.name.replace(/s$/,""));return types[typeName]=child.components.map((c)=>({name:c.name,type:resolveEIP712Type(c,types)})),`${typeName}[]`}return`${child?.type??"bytes"}[]`}return param.type}function resolveMessageValue(val,param){if(typeof val==="bigint")return val;if(param?.isTuple()&&typeof val?.toObject==="function"){let obj=val.toObject(),resolved={};for(let[i,comp]of(param.components??[]).entries())resolved[comp.name]=resolveMessageValue(obj[comp.name]??val[i],comp);return resolved}if(Array.isArray(val)){let child=param?.arrayChildren;return val.map((v)=>resolveMessageValue(v,child??void 0))}return val}function parseEIP712FromEVMTx({chain,abi,data,to}){let parsed=new import_ethers.Interface(abi).parseTransaction({data});if(!parsed)throw new import_helpers3.SwapKitError({errorKey:"toolbox_evm_invalid_params",info:{error:"Could not decode calldata"}});let customTypes={},primaryType=toPascalCase(parsed.name);customTypes[primaryType]=parsed.fragment.inputs.map((input)=>({name:input.name,type:resolveEIP712Type(input,customTypes)}));let message={};for(let[i,input]of parsed.fragment.inputs.entries())message[input.name]=resolveMessageValue(parsed.args[i],input);let{chainId}=import_helpers3.getChainConfig(chain),domain={chainId:Number(chainId),verifyingContract:import_ethers.getAddress(to)},domainTypes=buildEIP712DomainType(domain);return{domain,message,primaryType,types:{EIP712Domain:domainTypes,...customTypes}}}function validateAuthorizations(authorizations,expectedChainId){if(!Array.isArray(authorizations)||authorizations.length===0)throw new import_helpers3.SwapKitError({errorKey:"toolbox_evm_invalid_eip7702_authorization",info:{message:"EIP-7702 transactions require at least one authorization"}});for(let[i,auth]of authorizations.entries())if(validateAuthorization(auth,i),expectedChainId!==void 0&&auth.chainId!==expectedChainId)throw new import_helpers3.SwapKitError({errorKey:"toolbox_evm_invalid_eip7702_authorization",info:{field:"chainId",message:`index ${i}: authorization chainId (${auth.chainId}) does not match transaction chainId (${expectedChainId})`}})}var import_helpers3,import_ethers,import_ts_pattern2,isValidHex32=(v)=>typeof v==="string"&&/^0x[a-fA-F0-9]{64}$/.test(v),isValidAddress=(v)=>{try{return typeof v==="string"&&!!import_ethers.getAddress(v)}catch{return!1}};var init_helpers=__esm(()=>{import_helpers3=require("@swapkit/helpers"),import_ethers=require("ethers"),import_ts_pattern2=require("ts-pattern")});var multicallAbi;var init_multicall=__esm(()=>{multicallAbi=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"blockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBlockNumber",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryAggregate",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall2.Call[]",name:"calls",type:"tuple[]"}],name:"tryBlockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall2.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"nonpayable",type:"function"}]});function BaseEVMToolbox({chain=import_helpers4.Chain.Ethereum,provider,signer,isEIP1559Compatible=!0}){return{approve:getApprove({chain,isEIP1559Compatible,provider,signer}),approvedAmount:getApprovedAmount({chain,provider}),broadcastTransaction:provider.broadcastTransaction,call:getCall({chain,isEIP1559Compatible,provider,signer}),createApprovalTx:getCreateApprovalTx({chain,provider,signer}),createContract:getCreateContract({chain,provider}),createContractTxObject:getCreateContractTxObject({chain,provider}),createTransaction:getCreateTransferTx({chain,provider,signer}),createTransferTx:getCreateTransferTx({chain,provider,signer}),EIP1193SendTransaction:getEIP1193SendTransaction(provider),estimateCall:getEstimateCall({provider,signer}),estimateGasLimit:getEstimateGasLimit({chain,provider,signer}),estimateGasPrices:getEstimateGasPrices({chain,isEIP1559Compatible,provider}),estimateTransactionFee:getEstimateTransactionFee({chain,isEIP1559Compatible,provider}),getAddress:()=>{return signer?signer.getAddress():void 0},getBalance:getEvmApi(chain).getBalance,getNetworkParams:getNetworkParams(chain),isApproved:getIsApproved({chain,provider}),sendTransaction:getSendTransaction({chain,isEIP1559Compatible,provider,signer}),signAuthorization:getSignAuthorization({signer}),signMessage:signer?(message)=>signer.signMessage(message):void 0,signTypedData:signer?({domain,types,value})=>signer.signTypedData(domain,types,value):void 0,transfer:getTransfer({chain,isEIP1559Compatible,provider,signer}),validateAddress:validateEVMAddress}}function validateEVMAddress(address){try{return import_ethers2.getAddress(address),!0}catch{return!1}}function isBrowserProvider(provider){return provider instanceof import_ethers2.BrowserProvider}function createContract(address,abi,provider){return new import_ethers2.Contract(address,import_ethers2.Interface.from(abi),provider)}function getCreateContract({provider}){return function(address,abi){return new import_ethers2.Contract(address,import_ethers2.Interface.from(abi),provider)}}function isStateChangingCall({abi,funcName}){let abiFragment=abi.find((fragment)=>fragment.name===funcName);if(!abiFragment)throw new import_helpers4.SwapKitError("toolbox_evm_no_abi_fragment",{funcName});return abiFragment.stateMutability&&stateMutable.includes(abiFragment.stateMutability)}function toChecksumAddress(address){return import_ethers2.getAddress(address)}function getEIP1193SendTransaction(provider){return function({value,...params}){if(!isBrowserProvider(provider))throw new import_helpers4.SwapKitError("toolbox_evm_provider_not_eip1193_compatible");let{gasLimit:_gasLimit,gasPrice:_gasPrice,maxFeePerGas:_maxFeePerGas,maxPriorityFeePerGas:_maxPriorityFeePerGas,...cleanParams}=params;return provider.send("eth_sendTransaction",[{...cleanParams,value:toHexString(BigInt(value||0))}])}}function getChecksumAddressFromAsset(asset,chain){let assetAddress=getTokenAddress(asset,chain);if(assetAddress)return import_ethers2.getAddress(assetAddress.toLowerCase());throw new import_helpers4.SwapKitError("toolbox_evm_invalid_gas_asset_address")}function getTokenAddress({chain,symbol,ticker},baseAssetChain){try{let isBSCBNB=chain===import_helpers4.Chain.BinanceSmartChain&&symbol==="BNB"&&ticker==="BNB",isHyperevmHYPE=chain===import_helpers4.Chain.Hyperevm&&symbol==="HYPE"&&ticker==="HYPE",isBaseAsset=chain===baseAssetChain&&symbol===baseAssetChain&&ticker===baseAssetChain,isEVMAsset=ethGasChains.includes(chain)&&symbol==="ETH"&&ticker==="ETH";if(isBaseAsset||isBSCBNB||isHyperevmHYPE||isEVMAsset)return ContractAddress[baseAssetChain];return import_ethers2.getAddress(symbol.slice(ticker.length+1).replace(/^0X/,""))}catch{return null}}function getCreateContractTxObject({provider}){return async({contractAddress,abi,funcName,funcParams=[],txOverrides})=>createContract(contractAddress,abi,provider).getFunction(funcName).populateTransaction(...funcParams.concat(txOverrides).filter((p)=>typeof p<"u"))}function getEstimateGasPrices({chain,provider,isEIP1559Compatible=!0}){return import_ts_pattern3.match(chain).with(import_helpers4.Chain.Gnosis,()=>{return async function(){try{let{gasPrice,maxPriorityFeePerGas}=await provider.getFeeData();if(!gasPrice||maxPriorityFeePerGas===null)throw new import_helpers4.SwapKitError("toolbox_evm_no_fee_data");return{[import_helpers4.FeeOption.Average]:{maxFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(gasPrice,import_helpers4.FeeOption.Average),maxPriorityFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(maxPriorityFeePerGas,import_helpers4.FeeOption.Average)},[import_helpers4.FeeOption.Fast]:{maxFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(gasPrice,import_helpers4.FeeOption.Fast),maxPriorityFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(maxPriorityFeePerGas,import_helpers4.FeeOption.Fast)},[import_helpers4.FeeOption.Fastest]:{maxFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(gasPrice,import_helpers4.FeeOption.Fastest),maxPriorityFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(maxPriorityFeePerGas,import_helpers4.FeeOption.Fastest)}}}catch(error){throw new import_helpers4.SwapKitError("toolbox_evm_gas_estimation_error",{error:error.msg??error.toString()})}}}).with(import_helpers4.Chain.Arbitrum,()=>{return async function(){try{let{gasPrice}=await provider.getFeeData();if(!gasPrice)throw new import_helpers4.SwapKitError("toolbox_evm_no_fee_data");let bufferedGasPrice=gasPrice*12n/10n;return{[import_helpers4.FeeOption.Average]:{gasPrice:bufferedGasPrice},[import_helpers4.FeeOption.Fast]:{gasPrice:import_helpers4.applyFeeMultiplierToBigInt(bufferedGasPrice,import_helpers4.FeeOption.Fast)},[import_helpers4.FeeOption.Fastest]:{gasPrice:import_helpers4.applyFeeMultiplierToBigInt(bufferedGasPrice,import_helpers4.FeeOption.Fastest)}}}catch(error){throw new import_helpers4.SwapKitError("toolbox_evm_gas_estimation_error",{error:error.msg??error.toString()})}}}).otherwise(()=>{return async function(){try{let{maxFeePerGas,maxPriorityFeePerGas,gasPrice}=await provider.getFeeData();if(isEIP1559Compatible){if(maxFeePerGas===null||maxPriorityFeePerGas===null)throw new import_helpers4.SwapKitError("toolbox_evm_no_fee_data");return{[import_helpers4.FeeOption.Average]:{maxFeePerGas,maxPriorityFeePerGas},[import_helpers4.FeeOption.Fast]:{maxFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(maxFeePerGas,import_helpers4.FeeOption.Fast),maxPriorityFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(maxPriorityFeePerGas,import_helpers4.FeeOption.Fast)},[import_helpers4.FeeOption.Fastest]:{maxFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(maxFeePerGas,import_helpers4.FeeOption.Fastest),maxPriorityFeePerGas:import_helpers4.applyFeeMultiplierToBigInt(maxPriorityFeePerGas,import_helpers4.FeeOption.Fastest)}}}if(!gasPrice)throw new import_helpers4.SwapKitError("toolbox_evm_no_gas_price");return{[import_helpers4.FeeOption.Average]:{gasPrice},[import_helpers4.FeeOption.Fast]:{gasPrice:import_helpers4.applyFeeMultiplierToBigInt(gasPrice,import_helpers4.FeeOption.Fast)},[import_helpers4.FeeOption.Fastest]:{gasPrice:import_helpers4.applyFeeMultiplierToBigInt(gasPrice,import_helpers4.FeeOption.Fastest)}}}catch(error){throw new import_helpers4.SwapKitError("toolbox_evm_gas_estimation_error",{error:error.msg??error.toString()})}}})}function getCall({provider,isEIP1559Compatible,signer,chain}){return async function({callProvider,contractAddress,abi,funcName,funcParams=[],txOverrides={},feeOption=import_helpers4.FeeOption.Fast}){let contractProvider=callProvider||provider;if(!contractAddress)throw new import_helpers4.SwapKitError("toolbox_evm_invalid_params",{error:"contractAddress must be provided"});let isStateChanging=isStateChangingCall({abi,funcName});if(isStateChanging&&isBrowserProvider(contractProvider)&&signer){let createTx=getCreateContractTxObject({chain,provider:contractProvider}),from=txOverrides?.from||await signer?.getAddress(),txObject=await createTx({abi,contractAddress,funcName,funcParams,txOverrides:{...txOverrides,from}});return getEIP1193SendTransaction(contractProvider)(txObject)}let contract=createContract(contractAddress,abi,contractProvider);if(isStateChanging){if(!signer)throw new import_helpers4.SwapKitError("toolbox_evm_no_signer");let from=txOverrides?.from||await signer.getAddress();if(!from)throw new import_helpers4.SwapKitError("toolbox_evm_no_signer_address");let connectedContract=contract.connect(signer),estimateGasPrices=getEstimateGasPrices({chain,isEIP1559Compatible,provider}),{maxFeePerGas,maxPriorityFeePerGas,gasPrice}=(await estimateGasPrices())[feeOption],gasLimit=await contract.getFunction(funcName).estimateGas(...funcParams,txOverrides),result2=await connectedContract[funcName](...funcParams,{...txOverrides,gasLimit,gasPrice,maxFeePerGas,maxPriorityFeePerGas,nonce:txOverrides?.nonce||await contractProvider.getTransactionCount(from)});return typeof result2?.hash==="string"?result2?.hash:result2}let result=await contract[funcName]?.(...funcParams);return typeof result?.hash==="string"?result?.hash:result}}function getApprovedAmount({provider,chain}){return function({assetAddress,spenderAddress,from}){return getCall({chain,isEIP1559Compatible:!0,provider})({abi:import_contracts.erc20ABI,contractAddress:assetAddress,funcName:"allowance",funcParams:[from,spenderAddress]})}}function getIsApproved({provider,chain}){return async function({assetAddress,spenderAddress,from,amount=MAX_APPROVAL}){let approvedAmount=await getApprovedAmount({chain,provider})({assetAddress,from,spenderAddress});return import_helpers4.SwapKitNumber.fromBigInt(approvedAmount).gte(import_helpers4.SwapKitNumber.fromBigInt(BigInt(amount)))}}function getApprove({signer,isEIP1559Compatible=!0,provider,chain}){return async function({assetAddress,spenderAddress,feeOptionKey=import_helpers4.FeeOption.Fast,amount,gasLimitFallback,from:fromParam,nonce}){let funcParams=[spenderAddress,BigInt(amount||MAX_APPROVAL)],from=await signer?.getAddress()||fromParam,functionCallParams={abi:import_contracts.erc20ABI,contractAddress:assetAddress,funcName:"approve",funcParams,signer,txOverrides:{from}};if(isBrowserProvider(provider)){let createTx=getCreateContractTxObject({chain,provider}),sendTx=getEIP1193SendTransaction(provider),txObject=await createTx(functionCallParams);return sendTx(txObject)}return getCall({chain,isEIP1559Compatible,provider,signer})({...functionCallParams,feeOption:feeOptionKey,funcParams,txOverrides:{from,gasLimit:gasLimitFallback?BigInt(gasLimitFallback.toString()):void 0,nonce}})}}function getTransfer({signer,isEIP1559Compatible=!0,provider}){return async function({assetValue,memo,recipient,feeOptionKey=import_helpers4.FeeOption.Fast,sender,...tx}){let{hexlify,toUtf8Bytes}=await import("ethers"),txAmount=assetValue.getBaseValue("bigint"),chain=assetValue.chain,from=sender||await signer?.getAddress(),sendTx=getSendTransaction({chain,isEIP1559Compatible,provider,signer});if(!from)throw new import_helpers4.SwapKitError("toolbox_evm_no_from_address");if(assetValue.isGasAsset){let transaction2={...tx,data:hexlify(toUtf8Bytes(memo||"")),feeOptionKey,from,to:recipient,value:txAmount};return sendTx(transaction2)}if(!getTokenAddress(assetValue,chain))throw new import_helpers4.SwapKitError("toolbox_evm_no_contract_address");let{maxFeePerGas,maxPriorityFeePerGas,gasPrice}=(await getEstimateGasPrices({chain,isEIP1559Compatible,provider})())[feeOptionKey],transaction=await getCreateTransferTx({chain,provider,signer})({assetValue,data:hexlify(toUtf8Bytes(memo||"")),gasPrice,maxFeePerGas,maxPriorityFeePerGas,memo,recipient,sender:from});return sendTx(transaction)}}function getEstimateCall({provider,signer}){return function({contractAddress,abi,funcName,funcParams=[],txOverrides}){if(!contractAddress)throw new import_helpers4.SwapKitError("toolbox_evm_no_contract_address");let contract=createContract(contractAddress,abi,provider);return signer?contract.connect(signer).getFunction(funcName).estimateGas(...funcParams,txOverrides):contract.getFunction(funcName).estimateGas(...funcParams,txOverrides)}}function getEstimateGasLimit({provider,signer}){return async function({assetValue,recipient,memo,data,sender,funcName,funcParams,txOverrides}){let value=assetValue.bigIntValue,assetAddress=assetValue.isGasAsset?null:getTokenAddress(assetValue,assetValue.chain);if(assetAddress&&funcName)return getEstimateCall({provider,signer})({abi:import_contracts.erc20ABI,contractAddress:assetAddress,funcName,funcParams,txOverrides});let{hexlify,toUtf8Bytes}=await import("ethers");return provider.estimateGas({data:data?data:memo?hexlify(toUtf8Bytes(memo)):void 0,from:sender,to:recipient,value})}}function getSignAuthorization({signer}){if(!signer)return;return(params)=>signAuthorization(signer,params)}function getSendTransaction({provider,signer,isEIP1559Compatible=!0,chain}){return async function({feeOptionKey=import_helpers4.FeeOption.Fast,...tx}){let{from,to,data,value,...transaction}=tx;if(!signer)throw new import_helpers4.SwapKitError("toolbox_evm_no_signer");if(!to)throw new import_helpers4.SwapKitError("toolbox_evm_no_to_address");let parsedTxObject={...transaction,data:data||"0x",from,to,value:BigInt(value||0)};if(isBrowserProvider(provider))return getEIP1193SendTransaction(provider)(parsedTxObject);let address=from||await signer.getAddress(),nonce=tx.nonce||await provider.getTransactionCount(address),chainId=(await provider.getNetwork()).chainId,txType=getEVMTxType(parsedTxObject,isEIP1559Compatible);if(txType==="eip7702")validateAuthorizations(parsedTxObject.authorizations||[],chainId);let txTypeNum=import_ts_pattern3.match(txType).with("eip7702",()=>4).with("eip1559",()=>2).otherwise(()=>0),baseTxObject={...parsedTxObject,chainId,nonce,type:txTypeNum,...txType==="eip7702"&&{authorizationList:parsedTxObject.authorizations}},estimateGasPrices=getEstimateGasPrices({chain,isEIP1559Compatible,provider}),feeData=txType!=="legacy"&&!(parsedTxObject.maxFeePerGas&&parsedTxObject.maxPriorityFeePerGas)||!parsedTxObject.gasPrice?Object.entries((await estimateGasPrices())[feeOptionKey]).reduce((acc,[k,v])=>({...acc,[k]:toHexString(BigInt(v))}),{}):{},gasLimit;try{gasLimit=toHexString(parsedTxObject.gasLimit||await provider.estimateGas(baseTxObject)*11n/10n)}catch(error){throw new import_helpers4.SwapKitError("toolbox_evm_error_estimating_gas_limit",{error})}try{let txObject={...baseTxObject,gasLimit,...feeData};try{return(await signer.sendTransaction(txObject)).hash}catch{let txHex=await signer.signTransaction({...txObject,from:address});return(await provider.broadcastTransaction(txHex)).hash}}catch(error){throw new import_helpers4.SwapKitError("toolbox_evm_error_sending_transaction",{error})}}}function getCreateTransferTx({provider,signer}){return async function({assetValue,memo,recipient,data,sender:fromOverride,maxFeePerGas,maxPriorityFeePerGas,gasPrice,...tx}){let txAmount=assetValue.getBaseValue("bigint"),chain=assetValue.chain,from=fromOverride||await signer?.getAddress();if(!from)throw new import_helpers4.SwapKitError("toolbox_evm_no_from_address");if(import_helpers4.isGasAsset(assetValue)){let{hexlify,toUtf8Bytes}=await import("ethers");return{...tx,data:data||hexlify(toUtf8Bytes(memo||"")),from,to:recipient,value:txAmount}}let contractAddress=getTokenAddress(assetValue,chain);if(!contractAddress)throw new import_helpers4.SwapKitError("toolbox_evm_no_contract_address");return getCreateContractTxObject({chain:assetValue.chain,provider})({abi:import_contracts.erc20ABI,contractAddress,funcName:"transfer",funcParams:[recipient,txAmount],txOverrides:{from,gasPrice,maxFeePerGas,maxPriorityFeePerGas}})}}function getCreateApprovalTx({provider,signer,chain}){return async function({assetAddress,spenderAddress,amount,from:fromParam}){let from=await signer?.getAddress()||fromParam,createTx=getCreateContractTxObject({chain,provider}),approvalAmount=["bigint","number"].includes(typeof amount)?amount:amount||MAX_APPROVAL;return await createTx({abi:import_contracts.erc20ABI,contractAddress:assetAddress,funcName:"approve",funcParams:[spenderAddress,BigInt(approvalAmount)],txOverrides:{from}})}}function getEstimateTransactionFee({provider,isEIP1559Compatible=!0,chain}){return async function({feeOption=import_helpers4.FeeOption.Fast,...txObject}){let gasPrices=await getEstimateGasPrices({chain,isEIP1559Compatible,provider})(),gasLimit=await provider.estimateGas(txObject),assetValue=import_helpers4.AssetValue.from({chain}),{gasPrice,maxFeePerGas,maxPriorityFeePerGas}=gasPrices[feeOption];if(!isEIP1559Compatible&&gasPrice)return assetValue.set(import_helpers4.SwapKitNumber.fromBigInt(gasPrice*gasLimit,assetValue.decimal));if(maxFeePerGas&&maxPriorityFeePerGas){let fee=(maxFeePerGas+maxPriorityFeePerGas)*gasLimit;return assetValue.set(import_helpers4.SwapKitNumber.fromBigInt(fee,assetValue.decimal))}throw new import_helpers4.SwapKitError("toolbox_evm_no_gas_price")}}var import_helpers4,import_contracts,import_ethers2,import_ts_pattern3,MAX_APPROVAL,stateMutable,baseContractAddresses,ContractAddress,ethGasChains,isEIP7702Transaction=(tx)=>tx.type===4||(tx.authorizations?.length??0)>0,isEIP1559Transaction=(tx)=>!isEIP7702Transaction(tx)&&(tx.type===2||!!tx.maxFeePerGas||!!tx.maxPriorityFeePerGas),getEVMTxType=(tx,isEIP1559Compatible=!0)=>{if(isEIP7702Transaction(tx))return"eip7702";if(isEIP1559Transaction(tx)||isEIP1559Compatible)return"eip1559";return"legacy"};var init_baseEVMToolbox=__esm(()=>{init_api();init_helpers();import_helpers4=require("@swapkit/helpers"),import_contracts=require("@swapkit/helpers/contracts"),import_ethers2=require("ethers"),import_ts_pattern3=require("ts-pattern"),MAX_APPROVAL=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");stateMutable=["payable","nonpayable"];baseContractAddresses=import_helpers4.EVMChains.reduce((acc,chain)=>{return acc[chain]="0x0000000000000000000000000000000000000000",acc},{}),ContractAddress={...baseContractAddresses,[import_helpers4.Chain.Optimism]:"0x4200000000000000000000000000000000000042",[import_helpers4.Chain.Polygon]:"0x0000000000000000000000000000000000001010"},ethGasChains=[import_helpers4.Chain.Arbitrum,import_helpers4.Chain.Aurora,import_helpers4.Chain.Base,import_helpers4.Chain.Optimism]});function ETHToolbox(params){let evmToolbox=createEvmToolbox(import_helpers6.Chain.Ethereum)(params);async function multicall(callTuples,multicallAddress="0x5ba1e12693dc8f9c48aad8770482f4739beed696",funcName="aggregate",feeOptionKey=import_helpers6.FeeOption.Fast){let txObject=await evmToolbox.createContractTxObject({abi:multicallAbi,contractAddress:multicallAddress,funcName,funcParams:[callTuples]});return evmToolbox.sendTransaction({...txObject,feeOptionKey})}return{...evmToolbox,multicall}}function createEvmToolbox(chain){return function({provider,...toolboxParams}){let isEIP1559Compatible=getIsEIP1559Compatible(chain),signer=import_ts_pattern4.match(toolboxParams).with({phrase:import_ts_pattern4.P.string},({phrase})=>import_ethers3.HDNodeWallet.fromPhrase(phrase).connect(provider)).with({signer:import_ts_pattern4.P.any},({signer:signer2})=>signer2).otherwise(()=>{return});return BaseEVMToolbox({chain,isEIP1559Compatible,provider,signer})}}var import_helpers6,import_ethers3,import_ts_pattern4,ADIToolbox,ARBToolbox,AURORAToolbox,AVAXToolbox,BASEToolbox,BERAToolbox,BSCToolbox,BotanixToolbox,COREToolbox,CORNToolbox,CROToolbox,GNOToolbox,HYPEREVMToolbox,MATICToolbox,SONICToolbox,UNIToolbox,XLayerToolbox,MONADToolbox,MEGAETHToolbox;var init_evm=__esm(()=>{init_multicall();init_helpers();init_baseEVMToolbox();import_helpers6=require("@swapkit/helpers"),import_ethers3=require("ethers"),import_ts_pattern4=require("ts-pattern");ADIToolbox=createEvmToolbox(import_helpers6.Chain.Adi),ARBToolbox=createEvmToolbox(import_helpers6.Chain.Arbitrum),AURORAToolbox=createEvmToolbox(import_helpers6.Chain.Aurora),AVAXToolbox=createEvmToolbox(import_helpers6.Chain.Avalanche),BASEToolbox=createEvmToolbox(import_helpers6.Chain.Base),BERAToolbox=createEvmToolbox(import_helpers6.Chain.Berachain),BSCToolbox=createEvmToolbox(import_helpers6.Chain.BinanceSmartChain),BotanixToolbox=createEvmToolbox(import_helpers6.Chain.Botanix),COREToolbox=createEvmToolbox(import_helpers6.Chain.Core),CORNToolbox=createEvmToolbox(import_helpers6.Chain.Corn),CROToolbox=createEvmToolbox(import_helpers6.Chain.Cronos),GNOToolbox=createEvmToolbox(import_helpers6.Chain.Gnosis),HYPEREVMToolbox=createEvmToolbox(import_helpers6.Chain.Hyperevm),MATICToolbox=createEvmToolbox(import_helpers6.Chain.Polygon),SONICToolbox=createEvmToolbox(import_helpers6.Chain.Sonic),UNIToolbox=createEvmToolbox(import_helpers6.Chain.Unichain),XLayerToolbox=createEvmToolbox(import_helpers6.Chain.XLayer),MONADToolbox=createEvmToolbox(import_helpers6.Chain.Monad),MEGAETHToolbox=createEvmToolbox(import_helpers6.Chain.MegaETH)});var gasOracleAbi;var init_gasOracle=__esm(()=>{gasOracleAbi=[{inputs:[{internalType:"address",name:"_owner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"DecimalsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"GasPriceUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"L1BaseFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"OverheadUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"",type:"uint256"}],name:"ScalarUpdated",type:"event"},{inputs:[],name:"decimals",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"gasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1Fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"_data",type:"bytes"}],name:"getL1GasUsed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"l1BaseFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"overhead",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"scalar",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_decimals",type:"uint256"}],name:"setDecimals",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_gasPrice",type:"uint256"}],name:"setGasPrice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_baseFee",type:"uint256"}],name:"setL1BaseFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_overhead",type:"uint256"}],name:"setOverhead",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_scalar",type:"uint256"}],name:"setScalar",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"}]});function connectGasPriceOracle(provider){return new import_ethers4.Contract(GAS_PRICE_ORACLE_ADDRESS,gasOracleAbi,provider)}function getL1GasPriceFetcher(provider){return async function(){let gasPriceOracle=connectGasPriceOracle(provider);if(gasPriceOracle&&"l1BaseFee"in gasPriceOracle)return await gasPriceOracle?.l1BaseFee();return}}function serializeTx(provider){return async function({from,to,nonce,...tx}){let{Transaction}=await import("ethers");if(!to)throw new import_helpers8.SwapKitError("toolbox_evm_invalid_transaction",{error:"Missing to address"});return Transaction.from({...tx,authorizationList:tx.authorizationList,nonce:nonce?nonce:from?await provider.getTransactionCount(from):0,to}).serialized}}function estimateL1GasCost(provider){return async function(tx){let gasPriceOracle=connectGasPriceOracle(provider),serializedTx=await serializeTx(provider)(tx);if(gasPriceOracle&&"getL1Fee"in gasPriceOracle)return gasPriceOracle.getL1Fee(serializedTx)}}function estimateL2GasCost(provider){return async function(tx){let l2GasPrice=(await provider.getFeeData()).gasPrice??0n,l2GasCost=await provider.estimateGas(tx);return l2GasPrice*l2GasCost}}function estimateTotalGasCost(provider){return async function(tx){let l1GasCost=await estimateL1GasCost(provider)(tx)??0n,l2GasCost=await estimateL2GasCost(provider)(tx);return l1GasCost+l2GasCost}}function estimateL1Gas(provider){return async function(tx){let gasPriceOracle=connectGasPriceOracle(provider),serializedTx=await serializeTx(provider)(tx);if(gasPriceOracle&&"getL1GasUsed"in gasPriceOracle)return gasPriceOracle.getL1GasUsed(serializedTx)}}function estimateGasPrices(provider){return async function(){try{let{maxFeePerGas,maxPriorityFeePerGas,gasPrice}=await provider.getFeeData(),l1GasPrice=await getL1GasPriceFetcher(provider)(),price=gasPrice;if(!(maxFeePerGas&&maxPriorityFeePerGas))throw new import_helpers8.SwapKitError("toolbox_evm_no_fee_data");return{[import_helpers8.FeeOption.Average]:{gasPrice:price,l1GasPrice,maxFeePerGas,maxPriorityFeePerGas},[import_helpers8.FeeOption.Fast]:{gasPrice:import_helpers8.applyFeeMultiplierToBigInt(price,import_helpers8.FeeOption.Fast),l1GasPrice:import_helpers8.applyFeeMultiplierToBigInt(l1GasPrice||0n,import_helpers8.FeeOption.Fast),maxFeePerGas,maxPriorityFeePerGas:import_helpers8.applyFeeMultiplierToBigInt(maxPriorityFeePerGas,import_helpers8.FeeOption.Fast)},[import_helpers8.FeeOption.Fastest]:{gasPrice:import_helpers8.applyFeeMultiplierToBigInt(price,import_helpers8.FeeOption.Fastest),l1GasPrice:import_helpers8.applyFeeMultiplierToBigInt(l1GasPrice||0n,import_helpers8.FeeOption.Fastest),maxFeePerGas,maxPriorityFeePerGas:import_helpers8.applyFeeMultiplierToBigInt(maxPriorityFeePerGas,import_helpers8.FeeOption.Fastest)}}}catch(error){throw new import_helpers8.SwapKitError("toolbox_evm_gas_estimation_error",{error:error.msg??error.toString()})}}}function OPToolbox({provider,...toolboxSignerParams}){let signer=import_ts_pattern5.match(toolboxSignerParams).with({phrase:import_ts_pattern5.P.string},({phrase})=>import_ethers4.HDNodeWallet.fromPhrase(phrase).connect(provider)).with({signer:import_ts_pattern5.P.any},({signer:signer2})=>signer2).otherwise(()=>{return}),evmToolbox=BaseEVMToolbox({provider,signer}),getL1GasPrice=getL1GasPriceFetcher(provider);return{...evmToolbox,estimateGasPrices:estimateGasPrices(provider),estimateL1Gas:estimateL1Gas(provider),estimateL1GasCost:estimateL1GasCost(provider),estimateL2GasCost:estimateL2GasCost(provider),estimateTotalGasCost:estimateTotalGasCost(provider),getBalance:getEvmApi(import_helpers8.Chain.Optimism).getBalance,getL1GasPrice}}var import_helpers8,import_ethers4,import_ts_pattern5,GAS_PRICE_ORACLE_ADDRESS="0x420000000000000000000000000000000000000f";var init_op=__esm(()=>{init_api();init_gasOracle();init_baseEVMToolbox();import_helpers8=require("@swapkit/helpers"),import_ethers4=require("ethers"),import_ts_pattern5=require("ts-pattern")});var exports_toolbox={};__export(exports_toolbox,{validateEVMAddress:()=>validateEVMAddress,toChecksumAddress:()=>toChecksumAddress,isStateChangingCall:()=>isStateChangingCall,isEIP7702Transaction:()=>isEIP7702Transaction,isEIP1559Transaction:()=>isEIP1559Transaction,isBrowserProvider:()=>isBrowserProvider,getTokenAddress:()=>getTokenAddress,getEvmToolboxAsync:()=>getEvmToolboxAsync,getEvmToolbox:()=>getEvmToolbox,getEstimateGasPrices:()=>getEstimateGasPrices,getEVMTxType:()=>getEVMTxType,getEIP1193SendTransaction:()=>getEIP1193SendTransaction,getCreateContractTxObject:()=>getCreateContractTxObject,getCreateContract:()=>getCreateContract,getChecksumAddressFromAsset:()=>getChecksumAddressFromAsset,createContract:()=>createContract,XLayerToolbox:()=>XLayerToolbox,UNIToolbox:()=>UNIToolbox,SONICToolbox:()=>SONICToolbox,OPToolbox:()=>OPToolbox,MONADToolbox:()=>MONADToolbox,MEGAETHToolbox:()=>MEGAETHToolbox,MAX_APPROVAL:()=>MAX_APPROVAL,MATICToolbox:()=>MATICToolbox,HYPEREVMToolbox:()=>HYPEREVMToolbox,GNOToolbox:()=>GNOToolbox,ETHToolbox:()=>ETHToolbox,ContractAddress:()=>ContractAddress,CROToolbox:()=>CROToolbox,CORNToolbox:()=>CORNToolbox,COREToolbox:()=>COREToolbox,BotanixToolbox:()=>BotanixToolbox,BaseEVMToolbox:()=>BaseEVMToolbox,BSCToolbox:()=>BSCToolbox,BERAToolbox:()=>BERAToolbox,BASEToolbox:()=>BASEToolbox,AVAXToolbox:()=>AVAXToolbox,AURORAToolbox:()=>AURORAToolbox,ARBToolbox:()=>ARBToolbox,ADIToolbox:()=>ADIToolbox});function getEvmToolbox(chain,params){return import_ts_pattern6.match(chain).with(import_helpers9.Chain.Adi,()=>ADIToolbox(params)).with(import_helpers9.Chain.Arbitrum,()=>ARBToolbox(params)).with(import_helpers9.Chain.Aurora,()=>AURORAToolbox(params)).with(import_helpers9.Chain.Avalanche,()=>AVAXToolbox(params)).with(import_helpers9.Chain.Base,()=>BASEToolbox(params)).with(import_helpers9.Chain.Berachain,()=>BERAToolbox(params)).with(import_helpers9.Chain.BinanceSmartChain,()=>BSCToolbox(params)).with(import_helpers9.Chain.Botanix,()=>SONICToolbox(params)).with(import_helpers9.Chain.Core,()=>COREToolbox(params)).with(import_helpers9.Chain.Corn,()=>CORNToolbox(params)).with(import_helpers9.Chain.Cronos,()=>CROToolbox(params)).with(import_helpers9.Chain.Ethereum,()=>ETHToolbox(params)).with(import_helpers9.Chain.Gnosis,()=>GNOToolbox(params)).with(import_helpers9.Chain.Hyperevm,()=>HYPEREVMToolbox(params)).with(import_helpers9.Chain.Optimism,()=>OPToolbox(params)).with(import_helpers9.Chain.Polygon,()=>MATICToolbox(params)).with(import_helpers9.Chain.Sonic,()=>SONICToolbox(params)).with(import_helpers9.Chain.Unichain,()=>UNIToolbox(params)).with(import_helpers9.Chain.XLayer,()=>XLayerToolbox(params)).with(import_helpers9.Chain.Monad,()=>MONADToolbox(params)).with(import_helpers9.Chain.MegaETH,()=>MEGAETHToolbox(params)).exhaustive()}async function getEvmToolboxAsync(chain,params){let toolboxParams={...params,provider:params?.provider||await getProvider(chain)};return getEvmToolbox(chain,toolboxParams)}var import_helpers9,import_ts_pattern6;var init_toolbox2=__esm(()=>{init_helpers();init_evm();init_op();import_helpers9=require("@swapkit/helpers"),import_ts_pattern6=require("ts-pattern");init_baseEVMToolbox();init_evm();init_op()});var EthNetwork;var init_types=__esm(()=>{((EthNetwork2)=>{EthNetwork2.Test="goerli";EthNetwork2.Main="homestead"})(EthNetwork||={})});var exports_evm2={};__export(exports_evm2,{validateEVMAddress:()=>validateEVMAddress,validateAuthorizations:()=>validateAuthorizations,validateAuthorization:()=>validateAuthorization,toHexString:()=>toHexString,toChecksumAddress:()=>toChecksumAddress,signAuthorization:()=>signAuthorization,parseEIP712FromEVMTx:()=>parseEIP712FromEVMTx,isStateChangingCall:()=>isStateChangingCall,isEIP7702Transaction:()=>isEIP7702Transaction,isEIP1559Transaction:()=>isEIP1559Transaction,isBrowserProvider:()=>isBrowserProvider,getTokenAddress:()=>getTokenAddress,getProviderSync:()=>getProviderSync,getProvider:()=>getProvider,getNetworkParams:()=>getNetworkParams,getIsEIP1559Compatible:()=>getIsEIP1559Compatible,getEvmToolboxAsync:()=>getEvmToolboxAsync,getEvmToolbox:()=>getEvmToolbox,getEvmApi:()=>getEvmApi,getEstimateGasPrices:()=>getEstimateGasPrices,getEVMTxType:()=>getEVMTxType,getEIP1193SendTransaction:()=>getEIP1193SendTransaction,getCreateContractTxObject:()=>getCreateContractTxObject,getCreateContract:()=>getCreateContract,getChecksumAddressFromAsset:()=>getChecksumAddressFromAsset,createCustomEvmApi:()=>createCustomEvmApi,createContract:()=>createContract,buildEIP712DomainType:()=>buildEIP712DomainType,XLayerToolbox:()=>XLayerToolbox,UNIToolbox:()=>UNIToolbox,SONICToolbox:()=>SONICToolbox,OPToolbox:()=>OPToolbox,MONADToolbox:()=>MONADToolbox,MEGAETHToolbox:()=>MEGAETHToolbox,MAX_APPROVAL:()=>MAX_APPROVAL,MATICToolbox:()=>MATICToolbox,HYPEREVMToolbox:()=>HYPEREVMToolbox,GNOToolbox:()=>GNOToolbox,EthNetwork:()=>EthNetwork,ETHToolbox:()=>ETHToolbox,ContractAddress:()=>ContractAddress,CROToolbox:()=>CROToolbox,CORNToolbox:()=>CORNToolbox,COREToolbox:()=>COREToolbox,BotanixToolbox:()=>BotanixToolbox,BaseEVMToolbox:()=>BaseEVMToolbox,BSCToolbox:()=>BSCToolbox,BERAToolbox:()=>BERAToolbox,BASEToolbox:()=>BASEToolbox,AVAXToolbox:()=>AVAXToolbox,AURORAToolbox:()=>AURORAToolbox,ARBToolbox:()=>ARBToolbox,ADIToolbox:()=>ADIToolbox});module.exports=__toCommonJS(exports_evm2);var init_evm2=__esm(()=>{init_api();init_helpers();init_toolbox2();init_types()});async function fetchBlockfrost(endpoint,options){let response=await fetch(`${BLOCKFROST_URL}${endpoint}`,{...options,headers:{project_id:BLOCKFROST_API_KEY,...options?.headers}});if(!response.ok)throw Error(`Blockfrost API error: ${response.status} ${response.statusText}`);return response.json()}async function fetchUtxos(address){try{return await fetchBlockfrost(`/addresses/${address}/utxos`)}catch{return[]}}async function fetchLatestSlot(){return(await fetchBlockfrost("/blocks/latest")).slot}async function fetchProtocolParameters(){let params=await fetchBlockfrost("/epochs/latest/parameters"),languageView={PlutusScriptV1:params.cost_models.PlutusV1?Object.values(params.cost_models.PlutusV1):[],PlutusScriptV2:params.cost_models.PlutusV2?Object.values(params.cost_models.PlutusV2):[],PlutusScriptV3:params.cost_models.PlutusV3?Object.values(params.cost_models.PlutusV3):[]};return{collateralPercent:new import_bignumber.default(params.collateral_percent),languageView,lovelacePerUtxoWord:new import_bignumber.default(0),maxValueSize:Number.parseInt(params.max_val_size,10),minFeeA:new import_bignumber.default(params.min_fee_a),minFeeB:new import_bignumber.default(params.min_fee_b),minFeeRefScriptCostPerByte:new import_bignumber.default(15),priceMem:new import_bignumber.default(params.price_mem),priceSteps:new import_bignumber.default(params.price_step),stakeKeyDeposit:new import_bignumber.default(2000000),utxoCostPerByte:new import_bignumber.default(params.coins_per_utxo_size)}}async function submitTransaction(txCbor){let response=await fetch(`${BLOCKFROST_URL}/tx/submit`,{body:Buffer.from(txCbor,"hex"),headers:{"Content-Type":"application/cbor",project_id:BLOCKFROST_API_KEY},method:"POST"});if(!response.ok){let error=await response.text();throw Error(`Transaction submission failed: ${error}`)}return response.json()}function blockfrostToTyphonInputs(utxos,ownerAddress){return utxos.map((utxo)=>{let lovelaceEntry=utxo.amount.find((a)=>a.unit==="lovelace"),lovelaceAmount=lovelaceEntry?new import_bignumber.default(lovelaceEntry.quantity):new import_bignumber.default(0),tokens=utxo.amount.filter((a)=>a.unit!=="lovelace").map((a)=>({amount:new import_bignumber.default(a.quantity),assetName:a.unit.slice(56),policyId:a.unit.slice(0,56)}));return{address:ownerAddress,amount:lovelaceAmount,index:utxo.output_index,tokens,txId:utxo.tx_hash}})}async function getCardanoBalance(address){try{let utxos=await fetchUtxos(address),totalLovelace=0n,assetBalances=new Map;for(let utxo of utxos){if(!utxo.amount||!Array.isArray(utxo.amount))continue;for(let amountEntry of utxo.amount){let{unit,quantity}=amountEntry;if(unit==="lovelace")totalLovelace+=BigInt(quantity);else{let current=assetBalances.get(unit)||0n;assetBalances.set(unit,current+BigInt(quantity))}}}let balances=[],{baseDecimal}=import_helpers11.getChainConfig(import_helpers11.Chain.Cardano);if(totalLovelace>0n)balances.push(import_helpers11.AssetValue.from({chain:import_helpers11.Chain.Cardano,fromBaseDecimal:baseDecimal,value:totalLovelace.toString()}));for(let[assetId,amount]of assetBalances)balances.push(import_helpers11.AssetValue.from({asset:`${import_helpers11.Chain.Cardano}.${assetId}`,value:amount.toString()}));if(balances.length===0)return[import_helpers11.AssetValue.from({chain:import_helpers11.Chain.Cardano})];return balances}catch(error){let errorMessage=error instanceof Error?error.message:String(error);return console.error(`Cardano balance fetch error: ${errorMessage}`),[import_helpers11.AssetValue.from({chain:import_helpers11.Chain.Cardano})]}}function validateCardanoAddress(address){if(!address||typeof address!=="string")return!1;try{let decoded=import_base.bech32.decode(address,120);return decoded.prefix==="addr"||decoded.prefix==="addr_test"}catch{return!1}}async function createSignerFromMnemonic(phrase,accountIndex=0,addressIndex=0){let seed=await import_bip39.mnemonicToSeed(phrase,""),accountKey=(await import_bip32ed25519.Bip32PrivateKey.fromEntropy(Buffer.from(seed.slice(0,64)))).derive(HARDENED+1852).derive(HARDENED+1815).derive(HARDENED+accountIndex),paymentKey=accountKey.derive(0).derive(addressIndex),paymentPublicKey=paymentKey.toBip32PublicKey().toPublicKey().toBytes(),paymentKeyHash=import_typhonjs.crypto.hash28(paymentPublicKey),stakingPublicKey=accountKey.derive(2).derive(0).toBip32PublicKey().toPublicKey().toBytes(),stakingKeyHash=import_typhonjs.crypto.hash28(stakingPublicKey),paymentCredential={hash:paymentKeyHash,type:import_typhonjs.types.HashType.ADDRESS},stakingCredential={hash:stakingKeyHash,type:import_typhonjs.types.HashType.ADDRESS},address=new import_typhonjs.address.BaseAddress(NETWORK_ID,paymentCredential,stakingCredential).getBech32(),paymentPrivateKey=paymentKey.toPrivateKey();return{getAddress:()=>address,publicKey:paymentPublicKey,publicKeyHash:paymentKeyHash,signTransaction:async(tx)=>{try{let cbors=await import("@stricahq/cbors"),txBytes=Buffer.from(tx,"hex"),decoded=cbors.Decoder.decode(txBytes),[body,witnesses,isValid,auxiliaryData]=decoded.value,bodyEncoded=cbors.Encoder.encode(body),txHash=import_typhonjs.crypto.hash32(bodyEncoded),signature=paymentPrivateKey.sign(txHash),witnessMap=witnesses instanceof Map?witnesses:new Map,existingVkeyWitnesses=witnessMap.get(VKEY_WITNESS_TYPE)||[];existingVkeyWitnesses.push([paymentPublicKey,signature]),witnessMap.set(VKEY_WITNESS_TYPE,existingVkeyWitnesses);let signedTx=[body,witnessMap,isValid,auxiliaryData];return cbors.Encoder.encode(signedTx).toString("hex")}catch(error){throw new import_helpers11.SwapKitError("toolbox_cardano_sign_transaction_failed",{message:String(error)})}}}}function getCardanoToolbox(toolboxParams){let cachedSigner,cachedAddress,cachedProtocolParams;async function getProtocolParams(){if(!cachedProtocolParams)cachedProtocolParams=await fetchProtocolParameters();return cachedProtocolParams}async function getSigner(){if(cachedSigner!==void 0)return cachedSigner;if(toolboxParams&&"phrase"in toolboxParams&&toolboxParams.phrase){let index=toolboxParams.index??0;return cachedSigner=await createSignerFromMnemonic(toolboxParams.phrase,0,index),cachedSigner}if(toolboxParams&&"signer"in toolboxParams&&toolboxParams.signer)return cachedSigner=toolboxParams.signer,cachedSigner;return}async function getAddress3(){if(cachedAddress)return cachedAddress;let signer=await getSigner();if(!signer)return"";if("getAddress"in signer)return cachedAddress=await signer.getAddress(),cachedAddress;return""}async function getBalance2(addressParam){let address=addressParam||await getAddress3();if(!address)throw new import_helpers11.SwapKitError("core_wallet_connection_not_found");return getCardanoBalance(address)}async function estimateTransactionFee(params){if(params)try{let{tx}=await createTransaction(params),fee=tx.getFee();return import_helpers11.AssetValue.from({chain:import_helpers11.Chain.Cardano,fromBaseDecimal:6,value:fee.toString()})}catch{}let protocolParams=await getProtocolParams(),estimatedSizeBytes=400,feeLovelace=protocolParams.minFeeB.plus(protocolParams.minFeeA.times(estimatedSizeBytes));return import_helpers11.AssetValue.from({chain:import_helpers11.Chain.Cardano,fromBaseDecimal:6,value:feeLovelace.toString()})}async function createTransaction({sender="",recipient,assetValue,memo,pureLovelaceOnly=!1}){let senderAddress=sender||await getAddress3();if(!senderAddress)throw new import_helpers11.SwapKitError("core_wallet_connection_not_found");let[utxos,currentSlot,protocolParams]=await Promise.all([fetchUtxos(senderAddress),fetchLatestSlot(),getProtocolParams()]),sortedUtxos=utxos.filter((utxo)=>pureLovelaceOnly?utxo.amount.every((a)=>a.unit==="lovelace"):utxo.amount.some((a)=>a.unit==="lovelace")).sort((a,b)=>{let aHasTokens=a.amount.some((entry)=>entry.unit!=="lovelace"),bHasTokens=b.amount.some((entry)=>entry.unit!=="lovelace");if(aHasTokens===bHasTokens)return 0;return aHasTokens?1:-1}),senderAddr=import_typhonjs.utils.getAddressFromString(senderAddress),recipientAddr=import_typhonjs.utils.getAddressFromString(recipient),inputs=blockfrostToTyphonInputs(sortedUtxos,senderAddr),lovelaceAmount=new import_bignumber.default(assetValue.getBaseValue("string")),outputs=[{address:recipientAddr,amount:lovelaceAmount,tokens:[]}],auxiliaryData;if(memo){let msgMap=new Map;msgMap.set("msg",[memo]),auxiliaryData={metadata:[{data:msgMap,label:674}]}}let bufferedParams={...protocolParams,minFeeB:protocolParams.minFeeB.plus(protocolParams.minFeeA.times(4))},preparedTx=new import_typhonjs.Transaction({protocolParams:bufferedParams}).paymentTransaction({auxiliaryData,changeAddress:senderAddr,inputs,outputs,ttl:currentSlot+3600}),{payload}=preparedTx.buildTransaction();return{tx:preparedTx,unsignedTx:payload}}async function signTransaction(tx){let signer=await getSigner();if(!signer||!("signTransaction"in signer))throw new import_helpers11.SwapKitError("core_wallet_connection_not_found");return signer.signTransaction(tx)}async function transfer({recipient,assetValue,memo}){let signer=await getSigner();if(!signer||!("signTransaction"in signer))throw new import_helpers11.SwapKitError("core_wallet_connection_not_found");let{unsignedTx}=await createTransaction({assetValue,memo,recipient,sender:await getAddress3()}),signedTxCbor=await signTransaction(unsignedTx);return await submitTransaction(signedTxCbor)}async function signAndBroadcastTransaction(txInput){let signedTxCbor=await signTransaction(txInput);return await submitTransaction(signedTxCbor)}return{createTransaction,estimateTransactionFee,getAddress:getAddress3,getBalance:getBalance2,signAndBroadcastTransaction,signTransaction,transfer,validateAddress:validateCardanoAddress}}var import_base,import_bip39,import_bip32ed25519,import_typhonjs,import_helpers11,import_bignumber,BLOCKFROST_API_KEY="mainnet3YT7XK6NidLPlkHxxyBB5V0WzXUOTIJS",BLOCKFROST_URL="https://cardano-mainnet.blockfrost.io/api/v0",NETWORK_ID,HARDENED=2147483648,VKEY_WITNESS_TYPE=0;var init_toolbox3=__esm(()=>{import_base=require("@scure/base"),import_bip39=require("@scure/bip39"),import_bip32ed25519=require("@stricahq/bip32ed25519"),import_typhonjs=require("@stricahq/typhonjs"),import_helpers11=require("@swapkit/helpers"),import_bignumber=__toESM(require("bignumber.js")),NETWORK_ID=import_typhonjs.types.NetworkId.MAINNET});var exports_cardano={};__export(exports_cardano,{validateCardanoAddress:()=>validateCardanoAddress,getCardanoToolbox:()=>getCardanoToolbox});module.exports=__toCommonJS(exports_cardano);var init_cardano=__esm(()=>{init_toolbox3()});function bech32ToBase64(address){return import_base2.base64.encode(Uint8Array.from(import_base2.bech32.fromWords(import_base2.bech32.decode(address).words)))}function base64ToBech32(address,prefix="thor"){return import_base2.bech32.encode(prefix,import_base2.bech32.toWords(import_base2.base64.decode(address)))}function toBase64(data){return import_base2.base64.encode(data)}function fromBase64(base64String){if(!base64String.match(/^[a-zA-Z0-9+/]*={0,2}$/))throw new import_helpers12.SwapKitError("toolbox_cosmos_invalid_params",{error:"Invalid base64 string format"});return import_base2.base64.decode(base64String)}var import_base2,import_helpers12;var init_addressFormat=__esm(()=>{import_base2=require("@scure/base"),import_helpers12=require("@swapkit/helpers")});function getDefaultChainFee(chain){switch(chain){case import_helpers13.Chain.Maya:return{amount:[],gas:"10000000000"};case import_helpers13.Chain.THORChain:return{amount:[],gas:"500000000"};case import_helpers13.Chain.Kujira:return DEFAULT_KUJI_FEE_MAINNET;case import_helpers13.Chain.Noble:return DEFAULT_NOBLE_FEE_MAINNET;default:return DEFAULT_COSMOS_FEE_MAINNET}}async function createStargateClient(url){let imported=await import("@cosmjs/stargate"),StargateClient=imported.StargateClient??imported.default?.StargateClient,defaultRequestHeaders=typeof window<"u"?{}:{referer:"https://sdk.swapkit.dev",referrer:"https://sdk.swapkit.dev"};return StargateClient.connect({headers:defaultRequestHeaders,url})}async function createSigningStargateClient(url,signer,optionsOrBaseGas={}){let imported=await import("@cosmjs/stargate"),SigningStargateClient=imported.SigningStargateClient??imported.default?.SigningStargateClient,GasPrice=imported.GasPrice??imported.default?.GasPrice,gasPrice=typeof optionsOrBaseGas==="string"?optionsOrBaseGas:"0.0003uatom",options=typeof optionsOrBaseGas==="string"?{}:optionsOrBaseGas;return SigningStargateClient.connectWithSigner(url,signer,{gasPrice:GasPrice.fromString(gasPrice),...options})}async function createOfflineStargateClient(wallet,registry){let imported=await import("@cosmjs/stargate");return(imported.SigningStargateClient??imported.default?.SigningStargateClient).offline(wallet,registry)}async function cosmosCreateTransaction({sender,recipient,assetValue,memo="",feeRate,sequence,accountNumber}){let{chain,chainId}=assetValue,rpcUrl=await import_helpers13.getRPCUrl(chain),accountOnChain=await(await createStargateClient(rpcUrl)).getAccount(sender);if(!accountOnChain)throw new import_helpers13.SwapKitError("toolbox_cosmos_account_not_found",{sender});let gasAsset=import_helpers13.AssetValue.from({chain}),feeAsset=getMsgSendDenom(gasAsset.symbol),defaultFee=getDefaultChainFee(chain),txFee=feeAsset&&feeRate?{amount:[{amount:feeRate.toString(),denom:feeAsset}],gas:defaultFee.gas}:defaultFee,msgSend={amount:[{amount:assetValue.getBaseValue("string"),denom:getMsgSendDenom(assetValue.symbol)}],fromAddress:sender,toAddress:recipient};return{accountNumber:accountNumber??accountOnChain.accountNumber,chainId,fee:txFee,memo,msgs:[{typeUrl:getTransferMsgTypeByChain(chain),value:msgSend}],sequence:sequence??accountOnChain.sequence}}var import_helpers13,USK_KUJIRA_FACTORY_DENOM="FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK",YUM_KUJIRA_FACTORY_DENOM="FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM",DEFAULT_COSMOS_FEE_MAINNET,DEFAULT_KUJI_FEE_MAINNET,DEFAULT_NOBLE_FEE_MAINNET,getMsgSendDenom=(symbol,isThorchain=!1)=>{if(isThorchain)return symbol.toLowerCase();switch(symbol){case"uUSK":case"USK":return USK_KUJIRA_FACTORY_DENOM;case"uYUM":case"YUM":return YUM_KUJIRA_FACTORY_DENOM;case"uKUJI":case"KUJI":return"ukuji";case"ATOM":case"uATOM":return"uatom";case"uUSDC":case"USDC":return"uusdc";default:return symbol}},getDenomWithChain=({symbol,chain})=>{if(chain===import_helpers13.Chain.Maya)return(symbol.toUpperCase()!=="CACAO"?symbol:`${import_helpers13.Chain.Maya}.${symbol}`).toUpperCase();if(chain===import_helpers13.Chain.THORChain)return(["RUNE","TCY","RUJI"].includes(symbol.toUpperCase())?`${import_helpers13.Chain.THORChain}.${symbol}`:symbol).toUpperCase();return getMsgSendDenom(symbol,!1)},getTransferMsgTypeByChain=(chain)=>{switch(chain){case import_helpers13.Chain.Maya:case import_helpers13.Chain.THORChain:return"/types.MsgSend";case import_helpers13.Chain.Cosmos:case import_helpers13.Chain.Kujira:case import_helpers13.Chain.Noble:return"/cosmos.bank.v1beta1.MsgSend";default:throw new import_helpers13.SwapKitError("toolbox_cosmos_not_supported",{chain})}},DENOM_MAP,getAssetFromDenom=(denom,amount)=>{let config=DENOM_MAP[denom.toLowerCase()];if(!config)return import_helpers13.AssetValue.from({asset:denom,fromBaseDecimal:8,value:amount});let{chain,asset,decimals}=config,assetOrChain=chain?{chain}:{asset};return import_helpers13.AssetValue.from({...assetOrChain,fromBaseDecimal:decimals,value:amount})};var init_util=__esm(()=>{import_helpers13=require("@swapkit/helpers"),DEFAULT_COSMOS_FEE_MAINNET={amount:[{amount:"500",denom:"uatom"}],gas:"200000"},DEFAULT_KUJI_FEE_MAINNET={amount:[{amount:"1000",denom:"ukuji"}],gas:"200000"},DEFAULT_NOBLE_FEE_MAINNET={amount:[{amount:"1000",denom:"uusdc"}],gas:"200000"};DENOM_MAP={atom:{chain:import_helpers13.Chain.Cosmos,decimals:import_helpers13.getChainConfig(import_helpers13.Chain.Cosmos).baseDecimal},cacao:{chain:import_helpers13.Chain.Maya,decimals:10},kuji:{chain:import_helpers13.Chain.Kujira,decimals:import_helpers13.getChainConfig(import_helpers13.Chain.Kujira).baseDecimal},maya:{asset:`${import_helpers13.Chain.Maya}.${import_helpers13.Chain.Maya}`,decimals:4},rune:{chain:import_helpers13.Chain.THORChain,decimals:import_helpers13.getChainConfig(import_helpers13.Chain.THORChain).baseDecimal},tcy:{asset:"THOR.TCY",decimals:import_helpers13.getChainConfig(import_helpers13.Chain.THORChain).baseDecimal},uatom:{chain:import_helpers13.Chain.Cosmos,decimals:import_helpers13.getChainConfig(import_helpers13.Chain.Cosmos).baseDecimal},ukuji:{chain:import_helpers13.Chain.Kujira,decimals:import_helpers13.getChainConfig(import_helpers13.Chain.Kujira).baseDecimal},usdc:{chain:import_helpers13.Chain.Noble,decimals:import_helpers13.getChainConfig(import_helpers13.Chain.Noble).baseDecimal},uusdc:{chain:import_helpers13.Chain.Noble,decimals:import_helpers13.getChainConfig(import_helpers13.Chain.Noble).baseDecimal},"x/kuji":{asset:"THOR.KUJI",decimals:import_helpers13.getChainConfig(import_helpers13.Chain.THORChain).baseDecimal},[USK_KUJIRA_FACTORY_DENOM.toLowerCase()]:{asset:`${import_helpers13.Chain.Kujira}.USK`,decimals:import_helpers13.getChainConfig(import_helpers13.Chain.Kujira).baseDecimal}}});var exports_MsgCompiled={};__export(exports_MsgCompiled,{$root:()=>$root});var import_minimal,$Reader,$Writer,$util,$root;var init_MsgCompiled=__esm(()=>{import_minimal=__toESM(require("protobufjs/minimal.js")),$Reader=import_minimal.default.Reader,$Writer=import_minimal.default.Writer,$util=import_minimal.default.util,$root=import_minimal.default.roots.default||(import_minimal.default.roots.default={});$root.common=(()=>{let common={};return common.Asset=(()=>{function Asset(properties){if(properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return Asset.prototype.chain="",Asset.prototype.symbol="",Asset.prototype.ticker="",Asset.prototype.synth=!1,Asset.create=function(properties){return new Asset(properties)},Asset.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.chain!=null&&Object.hasOwnProperty.call(message,"chain"))writer.uint32(10).string(message.chain);if(message.symbol!=null&&Object.hasOwnProperty.call(message,"symbol"))writer.uint32(18).string(message.symbol);if(message.ticker!=null&&Object.hasOwnProperty.call(message,"ticker"))writer.uint32(26).string(message.ticker);if(message.synth!=null&&Object.hasOwnProperty.call(message,"synth"))writer.uint32(32).bool(message.synth);return writer},Asset.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},Asset.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.common.Asset;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.chain=reader.string();break;case 2:message.symbol=reader.string();break;case 3:message.ticker=reader.string();break;case 4:message.synth=reader.bool();break;default:reader.skipType(tag&7);break}}return message},Asset.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},Asset.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.chain!=null&&message.hasOwnProperty("chain")){if(!$util.isString(message.chain))return"chain: string expected"}if(message.symbol!=null&&message.hasOwnProperty("symbol")){if(!$util.isString(message.symbol))return"symbol: string expected"}if(message.ticker!=null&&message.hasOwnProperty("ticker")){if(!$util.isString(message.ticker))return"ticker: string expected"}if(message.synth!=null&&message.hasOwnProperty("synth")){if(typeof message.synth!=="boolean")return"synth: boolean expected"}return null},Asset.fromObject=function(object){if(object instanceof $root.common.Asset)return object;let message=new $root.common.Asset;if(object.chain!=null)message.chain=String(object.chain);if(object.symbol!=null)message.symbol=String(object.symbol);if(object.ticker!=null)message.ticker=String(object.ticker);if(object.synth!=null)message.synth=Boolean(object.synth);return message},Asset.toObject=function(message,options){if(!options)options={};let object={};if(options.defaults)object.chain="",object.symbol="",object.ticker="",object.synth=!1;if(message.chain!=null&&message.hasOwnProperty("chain"))object.chain=message.chain;if(message.symbol!=null&&message.hasOwnProperty("symbol"))object.symbol=message.symbol;if(message.ticker!=null&&message.hasOwnProperty("ticker"))object.ticker=message.ticker;if(message.synth!=null&&message.hasOwnProperty("synth"))object.synth=message.synth;return object},Asset.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},Asset})(),common.Coin=(()=>{function Coin(properties){if(properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return Coin.prototype.asset=null,Coin.prototype.amount="",Coin.prototype.decimals=$util.Long?$util.Long.fromBits(0,0,!1):0,Coin.create=function(properties){return new Coin(properties)},Coin.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.asset!=null&&Object.hasOwnProperty.call(message,"asset"))$root.common.Asset.encode(message.asset,writer.uint32(10).fork()).ldelim();if(message.amount!=null&&Object.hasOwnProperty.call(message,"amount"))writer.uint32(18).string(message.amount);if(message.decimals!=null&&Object.hasOwnProperty.call(message,"decimals"))writer.uint32(24).int64(message.decimals);return writer},Coin.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},Coin.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.common.Coin;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.asset=$root.common.Asset.decode(reader,reader.uint32());break;case 2:message.amount=reader.string();break;case 3:message.decimals=reader.int64();break;default:reader.skipType(tag&7);break}}return message},Coin.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},Coin.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.asset!=null&&message.hasOwnProperty("asset")){let error=$root.common.Asset.verify(message.asset);if(error)return"asset."+error}if(message.amount!=null&&message.hasOwnProperty("amount")){if(!$util.isString(message.amount))return"amount: string expected"}if(message.decimals!=null&&message.hasOwnProperty("decimals")){if(!$util.isInteger(message.decimals)&&!(message.decimals&&$util.isInteger(message.decimals.low)&&$util.isInteger(message.decimals.high)))return"decimals: integer|Long expected"}return null},Coin.fromObject=function(object){if(object instanceof $root.common.Coin)return object;let message=new $root.common.Coin;if(object.asset!=null){if(typeof object.asset!=="object")throw TypeError(".common.Coin.asset: object expected");message.asset=$root.common.Asset.fromObject(object.asset)}if(object.amount!=null)message.amount=String(object.amount);if(object.decimals!=null){if($util.Long)(message.decimals=$util.Long.fromValue(object.decimals)).unsigned=!1;else if(typeof object.decimals==="string")message.decimals=Number.parseInt(object.decimals,10);else if(typeof object.decimals==="number")message.decimals=object.decimals;else if(typeof object.decimals==="object")message.decimals=new $util.LongBits(object.decimals.low>>>0,object.decimals.high>>>0).toNumber()}return message},Coin.toObject=function(message,options){if(!options)options={};let object={};if(options.defaults)if(object.asset=null,object.amount="",$util.Long){let long=new $util.Long(0,0,!1);object.decimals=options.longs===String?long.toString():options.longs===Number?long.toNumber():long}else object.decimals=options.longs===String?"0":0;if(message.asset!=null&&message.hasOwnProperty("asset"))object.asset=$root.common.Asset.toObject(message.asset,options);if(message.amount!=null&&message.hasOwnProperty("amount"))object.amount=message.amount;if(message.decimals!=null&&message.hasOwnProperty("decimals"))if(typeof message.decimals==="number")object.decimals=options.longs===String?String(message.decimals):message.decimals;else object.decimals=options.longs===String?$util.Long.prototype.toString.call(message.decimals):options.longs===Number?new $util.LongBits(message.decimals.low>>>0,message.decimals.high>>>0).toNumber():message.decimals;return object},Coin.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},Coin})(),common.PubKeySet=(()=>{function PubKeySet(properties){if(properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return PubKeySet.prototype.secp256k1="",PubKeySet.prototype.ed25519="",PubKeySet.create=function(properties){return new PubKeySet(properties)},PubKeySet.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.secp256k1!=null&&Object.hasOwnProperty.call(message,"secp256k1"))writer.uint32(10).string(message.secp256k1);if(message.ed25519!=null&&Object.hasOwnProperty.call(message,"ed25519"))writer.uint32(18).string(message.ed25519);return writer},PubKeySet.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},PubKeySet.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.common.PubKeySet;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.secp256k1=reader.string();break;case 2:message.ed25519=reader.string();break;default:reader.skipType(tag&7);break}}return message},PubKeySet.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},PubKeySet.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.secp256k1!=null&&message.hasOwnProperty("secp256k1")){if(!$util.isString(message.secp256k1))return"secp256k1: string expected"}if(message.ed25519!=null&&message.hasOwnProperty("ed25519")){if(!$util.isString(message.ed25519))return"ed25519: string expected"}return null},PubKeySet.fromObject=function(object){if(object instanceof $root.common.PubKeySet)return object;let message=new $root.common.PubKeySet;if(object.secp256k1!=null)message.secp256k1=String(object.secp256k1);if(object.ed25519!=null)message.ed25519=String(object.ed25519);return message},PubKeySet.toObject=function(message,options){if(!options)options={};let object={};if(options.defaults)object.secp256k1="",object.ed25519="";if(message.secp256k1!=null&&message.hasOwnProperty("secp256k1"))object.secp256k1=message.secp256k1;if(message.ed25519!=null&&message.hasOwnProperty("ed25519"))object.ed25519=message.ed25519;return object},PubKeySet.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},PubKeySet})(),common.Tx=(()=>{function Tx(properties){if(this.coins=[],this.gas=[],properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return Tx.prototype.id="",Tx.prototype.chain="",Tx.prototype.fromAddress="",Tx.prototype.toAddress="",Tx.prototype.coins=$util.emptyArray,Tx.prototype.gas=$util.emptyArray,Tx.prototype.memo="",Tx.create=function(properties){return new Tx(properties)},Tx.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.id!=null&&Object.hasOwnProperty.call(message,"id"))writer.uint32(10).string(message.id);if(message.chain!=null&&Object.hasOwnProperty.call(message,"chain"))writer.uint32(18).string(message.chain);if(message.fromAddress!=null&&Object.hasOwnProperty.call(message,"fromAddress"))writer.uint32(26).string(message.fromAddress);if(message.toAddress!=null&&Object.hasOwnProperty.call(message,"toAddress"))writer.uint32(34).string(message.toAddress);if(message.coins?.length)for(let i=0;i<message.coins.length;++i)$root.common.Coin.encode(message.coins[i],writer.uint32(42).fork()).ldelim();if(message.gas?.length)for(let j=0;j<message.gas.length;++j)$root.common.Coin.encode(message.gas[j],writer.uint32(50).fork()).ldelim();if(message.memo!=null&&Object.hasOwnProperty.call(message,"memo"))writer.uint32(58).string(message.memo);return writer},Tx.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},Tx.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.common.Tx;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.id=reader.string();break;case 2:message.chain=reader.string();break;case 3:message.fromAddress=reader.string();break;case 4:message.toAddress=reader.string();break;case 5:if(!message.coins?.length)message.coins=[];message.coins.push($root.common.Coin.decode(reader,reader.uint32()));break;case 6:if(!message.gas?.length)message.gas=[];message.gas.push($root.common.Coin.decode(reader,reader.uint32()));break;case 7:message.memo=reader.string();break;default:reader.skipType(tag&7);break}}return message},Tx.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},Tx.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.id!=null&&message.hasOwnProperty("id")){if(!$util.isString(message.id))return"id: string expected"}if(message.chain!=null&&message.hasOwnProperty("chain")){if(!$util.isString(message.chain))return"chain: string expected"}if(message.fromAddress!=null&&message.hasOwnProperty("fromAddress")){if(!$util.isString(message.fromAddress))return"fromAddress: string expected"}if(message.toAddress!=null&&message.hasOwnProperty("toAddress")){if(!$util.isString(message.toAddress))return"toAddress: string expected"}if(message.coins!=null&&message.hasOwnProperty("coins")){if(!Array.isArray(message.coins))return"coins: array expected";for(let i=0;i<message.coins.length;++i){let error=$root.common.Coin.verify(message.coins[i]);if(error)return"coins."+error}}if(message.gas!=null&&message.hasOwnProperty("gas")){if(!Array.isArray(message.gas))return"gas: array expected";for(let j=0;j<message.gas.length;++j){let error=$root.common.Coin.verify(message.gas[j]);if(error)return"gas."+error}}if(message.memo!=null&&message.hasOwnProperty("memo")){if(!$util.isString(message.memo))return"memo: string expected"}return null},Tx.fromObject=function(object){if(object instanceof $root.common.Tx)return object;let message=new $root.common.Tx;if(object.id!=null)message.id=String(object.id);if(object.chain!=null)message.chain=String(object.chain);if(object.fromAddress!=null)message.fromAddress=String(object.fromAddress);if(object.toAddress!=null)message.toAddress=String(object.toAddress);if(object.coins){if(!Array.isArray(object.coins))throw TypeError(".common.Tx.coins: array expected");message.coins=[];for(let i=0;i<object.coins.length;++i){if(typeof object.coins[i]!=="object")throw TypeError(".common.Tx.coins: object expected");message.coins[i]=$root.common.Coin.fromObject(object.coins[i])}}if(object.gas){if(!Array.isArray(object.gas))throw TypeError(".common.Tx.gas: array expected");message.gas=[];for(let i=0;i<object.gas.length;++i){if(typeof object.gas[i]!=="object")throw TypeError(".common.Tx.gas: object expected");message.gas[i]=$root.common.Coin.fromObject(object.gas[i])}}if(object.memo!=null)message.memo=String(object.memo);return message},Tx.toObject=function(message,options){if(!options)options={};let object={};if(options.arrays||options.defaults)object.coins=[],object.gas=[];if(options.defaults)object.id="",object.chain="",object.fromAddress="",object.toAddress="",object.memo="";if(message.id!=null&&message.hasOwnProperty("id"))object.id=message.id;if(message.chain!=null&&message.hasOwnProperty("chain"))object.chain=message.chain;if(message.fromAddress!=null&&message.hasOwnProperty("fromAddress"))object.fromAddress=message.fromAddress;if(message.toAddress!=null&&message.hasOwnProperty("toAddress"))object.toAddress=message.toAddress;if(message.coins?.length){object.coins=[];for(let j=0;j<message.coins.length;++j)object.coins[j]=$root.common.Coin.toObject(message.coins[j],options)}if(message.gas?.length){object.gas=[];for(let j=0;j<message.gas.length;++j)object.gas[j]=$root.common.Coin.toObject(message.gas[j],options)}if(message.memo!=null&&message.hasOwnProperty("memo"))object.memo=message.memo;return object},Tx.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},Tx})(),common.Fee=(()=>{function Fee(properties){if(this.coins=[],properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return Fee.prototype.coins=$util.emptyArray,Fee.prototype.poolDeduct="",Fee.create=function(properties){return new Fee(properties)},Fee.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.coins?.length)for(let i=0;i<message.coins.length;++i)$root.common.Coin.encode(message.coins[i],writer.uint32(10).fork()).ldelim();if(message.poolDeduct!=null&&Object.hasOwnProperty.call(message,"poolDeduct"))writer.uint32(18).string(message.poolDeduct);return writer},Fee.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},Fee.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.common.Fee;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:if(!message.coins?.length)message.coins=[];message.coins.push($root.common.Coin.decode(reader,reader.uint32()));break;case 2:message.poolDeduct=reader.string();break;default:reader.skipType(tag&7);break}}return message},Fee.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},Fee.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.coins!=null&&message.hasOwnProperty("coins")){if(!Array.isArray(message.coins))return"coins: array expected";for(let i=0;i<message.coins.length;++i){let error=$root.common.Coin.verify(message.coins[i]);if(error)return"coins."+error}}if(message.poolDeduct!=null&&message.hasOwnProperty("poolDeduct")){if(!$util.isString(message.poolDeduct))return"poolDeduct: string expected"}return null},Fee.fromObject=function(object){if(object instanceof $root.common.Fee)return object;let message=new $root.common.Fee;if(object.coins){if(!Array.isArray(object.coins))throw TypeError(".common.Fee.coins: array expected");message.coins=[];for(let i=0;i<object.coins.length;++i){if(typeof object.coins[i]!=="object")throw TypeError(".common.Fee.coins: object expected");message.coins[i]=$root.common.Coin.fromObject(object.coins[i])}}if(object.poolDeduct!=null)message.poolDeduct=String(object.poolDeduct);return message},Fee.toObject=function(message,options){if(!options)options={};let object={};if(options.arrays||options.defaults)object.coins=[];if(options.defaults)object.poolDeduct="";if(message.coins?.length){object.coins=[];for(let j=0;j<message.coins.length;++j)object.coins[j]=$root.common.Coin.toObject(message.coins[j],options)}if(message.poolDeduct!=null&&message.hasOwnProperty("poolDeduct"))object.poolDeduct=message.poolDeduct;return object},Fee.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},Fee})(),common.ProtoUint=(()=>{function ProtoUint(properties){if(properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return ProtoUint.prototype.value="",ProtoUint.create=function(properties){return new ProtoUint(properties)},ProtoUint.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.value!=null&&Object.hasOwnProperty.call(message,"value"))writer.uint32(10).string(message.value);return writer},ProtoUint.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},ProtoUint.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.common.ProtoUint;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.value=reader.string();break;default:reader.skipType(tag&7);break}}return message},ProtoUint.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},ProtoUint.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.value!=null&&message.hasOwnProperty("value")){if(!$util.isString(message.value))return"value: string expected"}return null},ProtoUint.fromObject=function(object){if(object instanceof $root.common.ProtoUint)return object;let message=new $root.common.ProtoUint;if(object.value!=null)message.value=String(object.value);return message},ProtoUint.toObject=function(message,options){if(!options)options={};let object={};if(options.defaults)object.value="";if(message.value!=null&&message.hasOwnProperty("value"))object.value=message.value;return object},ProtoUint.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},ProtoUint})(),common})();$root.types=(()=>{let types4={};return types4.MsgDeposit=(()=>{function MsgDeposit(properties){if(this.coins=[],properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return MsgDeposit.prototype.coins=$util.emptyArray,MsgDeposit.prototype.memo="",MsgDeposit.prototype.signer=$util.newBuffer([]),MsgDeposit.create=function(properties){return new MsgDeposit(properties)},MsgDeposit.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.coins?.length)for(let i=0;i<message.coins.length;++i)$root.common.Coin.encode(message.coins[i],writer.uint32(10).fork()).ldelim();if(message.memo!=null&&Object.hasOwnProperty.call(message,"memo"))writer.uint32(18).string(message.memo);if(message.signer!=null&&Object.hasOwnProperty.call(message,"signer"))writer.uint32(26).bytes(message.signer);return writer},MsgDeposit.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},MsgDeposit.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.types.MsgDeposit;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:if(!message.coins?.length)message.coins=[];message.coins.push($root.common.Coin.decode(reader,reader.uint32()));break;case 2:message.memo=reader.string();break;case 3:message.signer=reader.bytes();break;default:reader.skipType(tag&7);break}}return message},MsgDeposit.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},MsgDeposit.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.coins!=null&&message.hasOwnProperty("coins")){if(!Array.isArray(message.coins))return"coins: array expected";for(let i=0;i<message.coins.length;++i){let error=$root.common.Coin.verify(message.coins[i]);if(error)return"coins."+error}}if(message.memo!=null&&message.hasOwnProperty("memo")){if(!$util.isString(message.memo))return"memo: string expected"}if(message.signer!=null&&message.hasOwnProperty("signer")){if(!(message.signer&&typeof message.signer.length==="number"||$util.isString(message.signer)))return"signer: buffer expected"}return null},MsgDeposit.fromObject=function(object){if(object instanceof $root.types.MsgDeposit)return object;let message=new $root.types.MsgDeposit;if(object.coins){if(!Array.isArray(object.coins))throw TypeError(".types.MsgDeposit.coins: array expected");message.coins=[];for(let i=0;i<object.coins.length;++i){if(typeof object.coins[i]!=="object")throw TypeError(".types.MsgDeposit.coins: object expected");message.coins[i]=$root.common.Coin.fromObject(object.coins[i])}}if(object.memo!=null)message.memo=String(object.memo);if(object.signer!=null){if(typeof object.signer==="string")$util.base64.decode(object.signer,message.signer=$util.newBuffer($util.base64.length(object.signer)),0);else if(object.signer.length)message.signer=object.signer}return message},MsgDeposit.toObject=function(message,options){if(!options)options={};let object={};if(options.arrays||options.defaults)object.coins=[];if(options.defaults){if(object.memo="",options.bytes===String)object.signer="";else if(object.signer=[],options.bytes!==Array)object.signer=$util.newBuffer(object.signer)}if(message.coins?.length){object.coins=[];for(let j=0;j<message.coins.length;++j)object.coins[j]=$root.common.Coin.toObject(message.coins[j],options)}if(message.memo!=null&&message.hasOwnProperty("memo"))object.memo=message.memo;if(message.signer!=null&&message.hasOwnProperty("signer"))object.signer=options.bytes===String?$util.base64.encode(message.signer,0,message.signer.length):options.bytes===Array?Array.prototype.slice.call(message.signer):message.signer;return object},MsgDeposit.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},MsgDeposit})(),types4.MsgSend=(()=>{function MsgSend(properties){if(this.amount=[],properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return MsgSend.prototype.fromAddress=$util.newBuffer([]),MsgSend.prototype.toAddress=$util.newBuffer([]),MsgSend.prototype.amount=$util.emptyArray,MsgSend.create=function(properties){return new MsgSend(properties)},MsgSend.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.fromAddress!=null&&Object.hasOwnProperty.call(message,"fromAddress"))writer.uint32(10).bytes(message.fromAddress);if(message.toAddress!=null&&Object.hasOwnProperty.call(message,"toAddress"))writer.uint32(18).bytes(message.toAddress);if(message.amount?.length)for(let i=0;i<message.amount.length;++i)$root.cosmos.base.v1beta1.Coin.encode(message.amount[i],writer.uint32(26).fork()).ldelim();return writer},MsgSend.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},MsgSend.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.types.MsgSend;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.fromAddress=reader.bytes();break;case 2:message.toAddress=reader.bytes();break;case 3:if(!message.amount?.length)message.amount=[];message.amount.push($root.cosmos.base.v1beta1.Coin.decode(reader,reader.uint32()));break;default:reader.skipType(tag&7);break}}return message},MsgSend.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},MsgSend.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.fromAddress!=null&&message.hasOwnProperty("fromAddress")){if(!(message.fromAddress&&typeof message.fromAddress.length==="number"||$util.isString(message.fromAddress)))return"fromAddress: buffer expected"}if(message.toAddress!=null&&message.hasOwnProperty("toAddress")){if(!(message.toAddress&&typeof message.toAddress.length==="number"||$util.isString(message.toAddress)))return"toAddress: buffer expected"}if(message.amount!=null&&message.hasOwnProperty("amount")){if(!Array.isArray(message.amount))return"amount: array expected";for(let i=0;i<message.amount.length;++i){let error=$root.cosmos.base.v1beta1.Coin.verify(message.amount[i]);if(error)return"amount."+error}}return null},MsgSend.fromObject=function(object){if(object instanceof $root.types.MsgSend)return object;let message=new $root.types.MsgSend;if(object.fromAddress!=null){if(typeof object.fromAddress==="string")$util.base64.decode(object.fromAddress,message.fromAddress=$util.newBuffer($util.base64.length(object.fromAddress)),0);else if(object.fromAddress.length)message.fromAddress=object.fromAddress}if(object.toAddress!=null){if(typeof object.toAddress==="string")$util.base64.decode(object.toAddress,message.toAddress=$util.newBuffer($util.base64.length(object.toAddress)),0);else if(object.toAddress.length)message.toAddress=object.toAddress}if(object.amount){if(!Array.isArray(object.amount))throw TypeError(".types.MsgSend.amount: array expected");message.amount=[];for(let i=0;i<object.amount.length;++i){if(typeof object.amount[i]!=="object")throw TypeError(".types.MsgSend.amount: object expected");message.amount[i]=$root.cosmos.base.v1beta1.Coin.fromObject(object.amount[i])}}return message},MsgSend.toObject=function(message,options){if(!options)options={};let object={};if(options.arrays||options.defaults)object.amount=[];if(options.defaults){if(options.bytes===String)object.fromAddress="";else if(object.fromAddress=[],options.bytes!==Array)object.fromAddress=$util.newBuffer(object.fromAddress);if(options.bytes===String)object.toAddress="";else if(object.toAddress=[],options.bytes!==Array)object.toAddress=$util.newBuffer(object.toAddress)}if(message.fromAddress!=null&&message.hasOwnProperty("fromAddress"))object.fromAddress=options.bytes===String?$util.base64.encode(message.fromAddress,0,message.fromAddress.length):options.bytes===Array?Array.prototype.slice.call(message.fromAddress):message.fromAddress;if(message.toAddress!=null&&message.hasOwnProperty("toAddress"))object.toAddress=options.bytes===String?$util.base64.encode(message.toAddress,0,message.toAddress.length):options.bytes===Array?Array.prototype.slice.call(message.toAddress):message.toAddress;if(message.amount?.length){object.amount=[];for(let j=0;j<message.amount.length;++j)object.amount[j]=$root.cosmos.base.v1beta1.Coin.toObject(message.amount[j],options)}return object},MsgSend.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},MsgSend})(),types4})();$root.cosmos=(()=>{let cosmos={};return cosmos.base=(()=>{let base={};return base.v1beta1=(()=>{let v1beta1={};return v1beta1.Coin=(()=>{function Coin(properties){if(properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return Coin.prototype.denom="",Coin.prototype.amount="",Coin.create=function(properties){return new Coin(properties)},Coin.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.denom!=null&&Object.hasOwnProperty.call(message,"denom"))writer.uint32(10).string(message.denom);if(message.amount!=null&&Object.hasOwnProperty.call(message,"amount"))writer.uint32(18).string(message.amount);return writer},Coin.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},Coin.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.cosmos.base.v1beta1.Coin;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.denom=reader.string();break;case 2:message.amount=reader.string();break;default:reader.skipType(tag&7);break}}return message},Coin.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},Coin.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.denom!=null&&message.hasOwnProperty("denom")){if(!$util.isString(message.denom))return"denom: string expected"}if(message.amount!=null&&message.hasOwnProperty("amount")){if(!$util.isString(message.amount))return"amount: string expected"}return null},Coin.fromObject=function(object){if(object instanceof $root.cosmos.base.v1beta1.Coin)return object;let message=new $root.cosmos.base.v1beta1.Coin;if(object.denom!=null)message.denom=String(object.denom);if(object.amount!=null)message.amount=String(object.amount);return message},Coin.toObject=function(message,options){if(!options)options={};let object={};if(options.defaults)object.denom="",object.amount="";if(message.denom!=null&&message.hasOwnProperty("denom"))object.denom=message.denom;if(message.amount!=null&&message.hasOwnProperty("amount"))object.amount=message.amount;return object},Coin.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},Coin})(),v1beta1.DecCoin=(()=>{function DecCoin(properties){if(properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return DecCoin.prototype.denom="",DecCoin.prototype.amount="",DecCoin.create=function(properties){return new DecCoin(properties)},DecCoin.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.denom!=null&&Object.hasOwnProperty.call(message,"denom"))writer.uint32(10).string(message.denom);if(message.amount!=null&&Object.hasOwnProperty.call(message,"amount"))writer.uint32(18).string(message.amount);return writer},DecCoin.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},DecCoin.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.cosmos.base.v1beta1.DecCoin;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.denom=reader.string();break;case 2:message.amount=reader.string();break;default:reader.skipType(tag&7);break}}return message},DecCoin.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},DecCoin.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.denom!=null&&message.hasOwnProperty("denom")){if(!$util.isString(message.denom))return"denom: string expected"}if(message.amount!=null&&message.hasOwnProperty("amount")){if(!$util.isString(message.amount))return"amount: string expected"}return null},DecCoin.fromObject=function(object){if(object instanceof $root.cosmos.base.v1beta1.DecCoin)return object;let message=new $root.cosmos.base.v1beta1.DecCoin;if(object.denom!=null)message.denom=String(object.denom);if(object.amount!=null)message.amount=String(object.amount);return message},DecCoin.toObject=function(message,options){if(!options)options={};let object={};if(options.defaults)object.denom="",object.amount="";if(message.denom!=null&&message.hasOwnProperty("denom"))object.denom=message.denom;if(message.amount!=null&&message.hasOwnProperty("amount"))object.amount=message.amount;return object},DecCoin.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},DecCoin})(),v1beta1.IntProto=(()=>{function IntProto(properties){if(properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return IntProto.prototype.int="",IntProto.create=function(properties){return new IntProto(properties)},IntProto.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.int!=null&&Object.hasOwnProperty.call(message,"int"))writer.uint32(10).string(message.int);return writer},IntProto.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},IntProto.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.cosmos.base.v1beta1.IntProto;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.int=reader.string();break;default:reader.skipType(tag&7);break}}return message},IntProto.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},IntProto.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.int!=null&&message.hasOwnProperty("int")){if(!$util.isString(message.int))return"int: string expected"}return null},IntProto.fromObject=function(object){if(object instanceof $root.cosmos.base.v1beta1.IntProto)return object;let message=new $root.cosmos.base.v1beta1.IntProto;if(object.int!=null)message.int=String(object.int);return message},IntProto.toObject=function(message,options){if(!options)options={};let object={};if(options.defaults)object.int="";if(message.int!=null&&message.hasOwnProperty("int"))object.int=message.int;return object},IntProto.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},IntProto})(),v1beta1.DecProto=(()=>{function DecProto(properties){if(properties){for(let keys=Object.keys(properties),i=0;i<keys.length;++i)if(properties[keys[i]]!=null)this[keys[i]]=properties[keys[i]]}}return DecProto.prototype.dec="",DecProto.create=function(properties){return new DecProto(properties)},DecProto.encode=function(message,writer){if(!writer)writer=$Writer.create();if(message.dec!=null&&Object.hasOwnProperty.call(message,"dec"))writer.uint32(10).string(message.dec);return writer},DecProto.encodeDelimited=function(message,writer){return this.encode(message,writer).ldelim()},DecProto.decode=function(reader,length){if(!(reader instanceof $Reader))reader=$Reader.create(reader);let end=length===void 0?reader.len:reader.pos+length,message=new $root.cosmos.base.v1beta1.DecProto;while(reader.pos<end){let tag=reader.uint32();switch(tag>>>3){case 1:message.dec=reader.string();break;default:reader.skipType(tag&7);break}}return message},DecProto.decodeDelimited=function(reader){if(!(reader instanceof $Reader))reader=new $Reader(reader);return this.decode(reader,reader.uint32())},DecProto.verify=function(message){if(typeof message!=="object"||message===null)return"object expected";if(message.dec!=null&&message.hasOwnProperty("dec")){if(!$util.isString(message.dec))return"dec: string expected"}return null},DecProto.fromObject=function(object){if(object instanceof $root.cosmos.base.v1beta1.DecProto)return object;let message=new $root.cosmos.base.v1beta1.DecProto;if(object.dec!=null)message.dec=String(object.dec);return message},DecProto.toObject=function(message,options){if(!options)options={};let object={};if(options.defaults)object.dec="";if(message.dec!=null&&message.hasOwnProperty("dec"))object.dec=message.dec;return object},DecProto.prototype.toJSON=function(){return this.constructor.toObject(this,import_minimal.default.util.toJSONOptions)},DecProto})(),v1beta1})(),base})(),cosmos})()});async function createDefaultRegistry(){let{$root:$root2}=await Promise.resolve().then(() => (init_MsgCompiled(),exports_MsgCompiled)),importedProtoSigning=await import("@cosmjs/proto-signing"),Registry=importedProtoSigning.Registry??importedProtoSigning.default?.Registry,importedStargate=await import("@cosmjs/stargate"),defaultRegistryTypes=importedStargate.defaultRegistryTypes??importedStargate.default?.defaultRegistryTypes;return new Registry([...defaultRegistryTypes,["/types.MsgSend",$root2.types.MsgSend],["/types.MsgDeposit",$root2.types.MsgDeposit]])}async function createDefaultAminoTypes(chain){let imported=await import("@cosmjs/stargate"),AminoTypes=imported.AminoTypes??imported.default?.AminoTypes,aminoTypePrefix=chain===import_helpers14.Chain.THORChain?"thorchain":"mayachain";return new AminoTypes({"/types.MsgDeposit":{aminoType:`${aminoTypePrefix}/MsgDeposit`,fromAmino:({signer,...rest})=>({...rest,signer:bech32ToBase64(signer)}),toAmino:({signer,...rest})=>({...rest,signer:base64ToBech32(signer)})},"/types.MsgSend":{aminoType:`${aminoTypePrefix}/MsgSend`,fromAmino:({from_address,to_address,...rest})=>({...rest,fromAddress:bech32ToBase64(from_address),toAddress:bech32ToBase64(to_address)}),toAmino:({fromAddress,toAddress,...rest})=>({...rest,from_address:base64ToBech32(fromAddress),to_address:base64ToBech32(toAddress)})}})}var import_helpers14;var init_registry=__esm(()=>{init_addressFormat();import_helpers14=require("@swapkit/helpers")});function createTransaction(params){let{assetValue,recipient,memo,sender,asSignable,asAminoMessage}=params;if(recipient)return buildTransferTx({asAminoMessage,asSignable,assetValue,memo,recipient,sender});return buildDepositTx({asAminoMessage,asSignable,assetValue,memo,sender})}async function buildTransferTx({sender,recipient,assetValue,memo="",asSignable=!0,asAminoMessage=!1,sequence,accountNumber}){let chain=assetValue.chain,rpcUrl=await import_helpers15.getRPCUrl(chain),account=await getAccount({rpcUrl,sender}),{chainId}=import_helpers15.getChainConfig(chain),transferMsg=transferMsgAmino({assetValue,recipient,sender}),msg=asSignable?await convertToSignable(asAminoMessage?transferMsg:parseAminoMessageForDirectSigning(transferMsg),chain):transferMsg;return{accountNumber:accountNumber||account.accountNumber,chainId,fee:getDefaultChainFee(chain),memo,msgs:[msg],sequence:sequence||account.sequence}}async function buildDepositTx({sender,assetValue,memo="",asSignable=!0,asAminoMessage=!1,sequence,accountNumber}){let chain=assetValue.chain,rpcUrl=await import_helpers15.getRPCUrl(chain),account=await getAccount({rpcUrl,sender}),{chainId}=import_helpers15.getChainConfig(chain),depositMsg=depositMsgAmino({assetValue,memo,sender}),msg=asSignable?await convertToSignable(asAminoMessage?depositMsg:parseAminoMessageForDirectSigning(depositMsg),chain):depositMsg;return{accountNumber:accountNumber||account.accountNumber,chainId,fee:getDefaultChainFee(chain),memo,msgs:[msg],sequence:sequence||account.sequence}}function parseAminoMessageForDirectSigning(msg){if(msg.type==="thorchain/MsgSend"||msg.type==="mayachain/MsgSend")return msg;return{...msg,value:{...msg.value,coins:msg.value.coins.map((coin)=>{let assetValue=import_helpers15.AssetValue.from({asset:coin.asset}),symbol=(assetValue.isSynthetic?assetValue.symbol.split("/")?.[1]:assetValue.symbol)?.toUpperCase(),chain=(assetValue.isSynthetic?assetValue.symbol.split("/")?.[0]:assetValue.chain)?.toUpperCase();return{...coin,asset:{chain,symbol,synth:assetValue.isSynthetic,ticker:assetValue.ticker}}})}}}async function buildEncodedTxBody({chain,memo,msgs}){let registry=await createDefaultRegistry(),aminoTypes=await createDefaultAminoTypes(chain),signedTxBody={typeUrl:"/cosmos.tx.v1beta1.TxBody",value:{memo,messages:msgs.map((msg)=>aminoTypes.fromAmino(msg))}};return registry.encode(signedTxBody)}var import_helpers15,THORCHAIN_GAS_VALUE,MAYA_GAS_VALUE,transferMsgAmino=({sender,recipient,assetValue})=>{return{type:`${assetValue.chain===import_helpers15.Chain.Maya?"mayachain":"thorchain"}/MsgSend`,value:{amount:[{amount:assetValue.getBaseValue("string"),denom:getMsgSendDenom(assetValue.symbol,!0)}],from_address:sender,to_address:recipient}}},depositMsgAmino=({sender,assetValue,memo=""})=>{return{type:`${assetValue.chain===import_helpers15.Chain.Maya?"mayachain":"thorchain"}/MsgDeposit`,value:{coins:[{amount:assetValue.getBaseValue("string"),asset:getDenomWithChain(assetValue)}],memo,signer:sender}}},buildAminoMsg=({sender,recipient,assetValue,memo})=>{return!recipient?depositMsgAmino({assetValue,memo,sender}):transferMsgAmino({assetValue,recipient,sender})},convertToSignable=async(msg,chain)=>{return(await createDefaultAminoTypes(chain)).fromAmino(msg)},getAccount=async({rpcUrl,sender})=>{let account=await(await createStargateClient(rpcUrl)).getAccount(sender);if(!account)throw new import_helpers15.SwapKitError("toolbox_cosmos_account_not_found",{sender});return account};var init_messages=__esm(()=>{init_util();init_registry();import_helpers15=require("@swapkit/helpers"),THORCHAIN_GAS_VALUE=getDefaultChainFee(import_helpers15.Chain.THORChain).gas,MAYA_GAS_VALUE=getDefaultChainFee(import_helpers15.Chain.Maya).gas});var init_client_types=()=>{};var init_types2=__esm(()=>{init_client_types()});var init_thorchainUtils=__esm(()=>{init_addressFormat();init_messages();init_registry();init_types2()});async function fetchFeeRateFromSwapKit(chainId,safeDefault){try{let responseGasRate=(await import_api4.SwapKitApi.getGasRate()).find((gas)=>gas.chainId===chainId)?.value;return responseGasRate?Number.parseFloat(responseGasRate):safeDefault}catch{return safeDefault}}async function getSignerFromPhrase({phrase,prefix,...derivationParams}){let derivationPath="derivationPath"in derivationParams?derivationParams.derivationPath:`${import_helpers16.DerivationPath[derivationParams.chain]}/${derivationParams.index}`;return await import_proto_signing.DirectSecp256k1HdWallet.fromMnemonic(phrase,{hdPaths:[import_crypto.stringToPath(derivationPath)],prefix})}async function getSignerFromPrivateKey({privateKey,prefix}){let importedProtoSigning=await import("@cosmjs/proto-signing");return(importedProtoSigning.DirectSecp256k1Wallet??importedProtoSigning.default?.DirectSecp256k1Wallet).fromKey(privateKey,prefix)}function verifySignature(getAccount2){return async function({signature,message,address}){let account=await getAccount2(address);if(!account?.pubkey)throw new import_helpers16.SwapKitError("toolbox_cosmos_verify_signature_no_pubkey");let importedCrypto=await import("@cosmjs/crypto"),Secp256k1Signature=importedCrypto.Secp256k1Signature??importedCrypto.default?.Secp256k1Signature,Secp256k1=importedCrypto.Secp256k1??importedCrypto.default?.Secp256k1,secpSignature=Secp256k1Signature.fromFixedLength(import_base3.base64.decode(signature));return Secp256k1.verifySignature(secpSignature,import_base3.base64.decode(message),account.pubkey.value)}}function createCosmosToolbox({chain,...toolboxParams}){let chainPrefix=import_helpers16.CosmosChainPrefixes[chain],index="index"in toolboxParams?toolboxParams.index||0:0,derivationPath=import_helpers16.derivationPathToString("derivationPath"in toolboxParams&&toolboxParams.derivationPath?toolboxParams.derivationPath:import_helpers16.updateDerivationPath(import_helpers16.NetworkDerivationPath[chain],{index})),cachedSigner;async function getSigner(){if(cachedSigner)return cachedSigner;return cachedSigner=await import_ts_pattern7.match(toolboxParams).with({phrase:import_ts_pattern7.P.string},({phrase})=>getSignerFromPhrase({derivationPath,phrase,prefix:chainPrefix})).with({signer:import_ts_pattern7.P.any},({signer})=>signer).otherwise(()=>{return}),cachedSigner}async function getAccount2(address){let rpcUrl=await import_helpers16.getRPCUrl(chain);return(await createStargateClient(rpcUrl)).getAccount(address)}async function getAddress3(){let signer=await getSigner(),[account]=await signer?.getAccounts()||[];return account?.address}async function getPubKey(){let signer=await getSigner(),[account]=await signer?.getAccounts()||[];if(!account?.pubkey)throw new import_helpers16.SwapKitError("toolbox_cosmos_signer_not_defined");return import_base3.base64.encode(account?.pubkey)}async function signTransaction(transaction){let signer=await getSigner(),from=await getAddress3(),rpcUrl=await import_helpers16.getRPCUrl(chain);if(!(signer&&from))throw new import_helpers16.SwapKitError("toolbox_cosmos_signer_not_defined");return await(await createSigningStargateClient(rpcUrl,signer)).sign(from,transaction.msgs,transaction.fee,transaction.memo,{accountNumber:transaction.accountNumber,chainId:transaction.chainId,sequence:transaction.sequence})}async function signAndBroadcastTransaction(transaction){let signer=await getSigner(),from=await getAddress3(),rpcUrl=await import_helpers16.getRPCUrl(chain);if(!(signer&&from))throw new import_helpers16.SwapKitError("toolbox_cosmos_signer_not_defined");let result=await(await createSigningStargateClient(rpcUrl,signer)).signAndBroadcast(from,transaction.msgs,transaction.fee,transaction.memo);if(result.code!==0)throw new import_helpers16.SwapKitError("core_swap_transaction_error",{code:result.code,message:result.rawLog});return result.transactionHash}async function transfer({recipient,assetValue,memo="",feeRate,feeOptionKey=import_helpers16.FeeOption.Fast}){let signer=await getSigner(),from=await getAddress3();if(!(signer&&from))throw new import_helpers16.SwapKitError("toolbox_cosmos_signer_not_defined");let rpcUrl=await import_helpers16.getRPCUrl(chain),feeAssetValue=import_helpers16.AssetValue.from({chain}),assetDenom=getDenomWithChain(feeAssetValue),txFee=feeRate||feeToStdFee((await getFees(chain,SafeDefaultFeeValues[chain]))[feeOptionKey],assetDenom),signingClient=await createSigningStargateClient(rpcUrl,signer),denom=getMsgSendDenom(assetValue.symbol),message=[{amount:assetValue.getBaseValue("string"),denom}],{transactionHash}=await signingClient.sendTokens(from,recipient,message,txFee,memo);return transactionHash}return{createPrivateKeyFromPhrase:createPrivateKeyFromPhrase(derivationPath),createTransaction:cosmosCreateTransaction,fetchFeeRateFromSwapKit,getAccount:getAccount2,getAddress:getAddress3,getBalance:async(address,_potentialScamFilter)=>{let denomBalances=await cosmosBalanceDenomsGetter(chain)(address),balances=await Promise.all(denomBalances.filter(({denom})=>denom&&!denom.includes("IBC/")&&!([import_helpers16.Chain.THORChain,import_helpers16.Chain.Maya].includes(chain)&&denom.split("-").length>2)).map(({denom,amount})=>{let fullDenom=[import_helpers16.Chain.THORChain,import_helpers16.Chain.Maya].includes(chain)&&(denom.includes("/")||denom.includes("˜"))?`${chain}.${denom}`:denom;return getAssetFromDenom(fullDenom,amount)}));if(balances.length===0)return[import_helpers16.AssetValue.from({chain})];return balances},getBalanceAsDenoms:cosmosBalanceDenomsGetter(chain),getFees:()=>getFees(chain,SafeDefaultFeeValues[chain]),getPubKey,getSignerFromPhrase:({phrase,derivationPath:derivationPath2})=>getSignerFromPhrase({derivationPath:import_helpers16.derivationPathToString(derivationPath2),index,phrase,prefix:chainPrefix}),getSignerFromPrivateKey:async(privateKey)=>{let importedSigning=await import("@cosmjs/proto-signing");return(importedSigning.DirectSecp256k1Wallet??importedSigning.default?.DirectSecp256k1Wallet).fromKey(privateKey,chainPrefix)},signAndBroadcastTransaction,signTransaction,transfer,validateAddress:getCosmosAddressValidator(chain),verifySignature:verifySignature(getAccount2)}}async function getFeeRateFromSwapKit(chainId,safeDefault){try{let responseGasRate=(await import_api4.SwapKitApi.getGasRate()).find((gas)=>gas.chainId===chainId)?.value;return responseGasRate?Number.parseFloat(responseGasRate):safeDefault}catch{return safeDefault}}function estimateTransactionFee({assetValue:{chain}}){return import_helpers16.AssetValue.from({chain,value:getMinTransactionFee(chain)})}async function getFees(chain,safeDefault){let{chainId,baseDecimal}=import_helpers16.getChainConfig(chain),baseFee=await fetchFeeRateFromSwapKit(chainId,safeDefault);return{average:import_helpers16.SwapKitNumber.fromBigInt(BigInt(baseFee),baseDecimal),fast:import_helpers16.SwapKitNumber.fromBigInt(BigInt(import_helpers16.applyFeeMultiplier(baseFee,import_helpers16.FeeOption.Fast,!0)),baseDecimal),fastest:import_helpers16.SwapKitNumber.fromBigInt(BigInt(import_helpers16.applyFeeMultiplier(baseFee,import_helpers16.FeeOption.Fastest,!0)),baseDecimal)}}function feeToStdFee(fee,denom){return{amount:[{amount:fee.getBaseValue("string"),denom}],gas:"200000"}}function getMinTransactionFee(chain){return{[import_helpers16.Chain.Cosmos]:0.007,[import_helpers16.Chain.Kujira]:0.02,[import_helpers16.Chain.Noble]:0.01,[import_helpers16.Chain.THORChain]:0.02,[import_helpers16.Chain.Maya]:0.02,[import_helpers16.Chain.Harbor]:0.02}[chain]||0}function getCosmosAddressValidator(chain){let chainPrefix=import_helpers16.CosmosChainPrefixes[chain];return function(address){if(!address.startsWith(chainPrefix))return!1;try{let{prefix,words}=import_base3.bech32.decode(address);return import_base3.bech32.encode(prefix,words)===address.toLocaleLowerCase()}catch{return!1}}}function cosmosBalanceDenomsGetter(chain){return async function(address){let rpcUrl=await import_helpers16.getRPCUrl(chain);return(await(await createStargateClient(rpcUrl)).getAllBalances(address)).map((balance)=>({...balance,denom:balance.denom.includes("/")?balance.denom.toUpperCase():balance.denom}))}}function createPrivateKeyFromPhrase(derivationPath){return async function(phrase){let importedCrypto=await import("@cosmjs/crypto"),stringToPath2=importedCrypto.stringToPath??importedCrypto.default?.stringToPath,Slip10Curve=importedCrypto.Slip10Curve??importedCrypto.default?.Slip10Curve,Slip10=importedCrypto.Slip10??importedCrypto.default?.Slip10,EnglishMnemonic=importedCrypto.EnglishMnemonic??importedCrypto.default?.EnglishMnemonic,Bip39=importedCrypto.Bip39??importedCrypto.default?.Bip39,mnemonicChecked=new EnglishMnemonic(phrase),seed=await Bip39.mnemonicToSeed(mnemonicChecked),{privkey}=Slip10.derivePath(Slip10Curve.Secp256k1,seed,stringToPath2(derivationPath));return privkey}}var import_crypto,import_proto_signing,import_base3,import_helpers16,import_api4,import_ts_pattern7,SafeDefaultFeeValues;var init_cosmos=__esm(()=>{init_util();import_crypto=require("@cosmjs/crypto"),import_proto_signing=require("@cosmjs/proto-signing"),import_base3=require("@scure/base"),import_helpers16=require("@swapkit/helpers"),import_api4=require("@swapkit/helpers/api"),import_ts_pattern7=require("ts-pattern");SafeDefaultFeeValues={[import_helpers16.Chain.Cosmos]:1000,[import_helpers16.Chain.Kujira]:1000,[import_helpers16.Chain.Noble]:1000,[import_helpers16.Chain.THORChain]:5000000,[import_helpers16.Chain.Maya]:5000000,[import_helpers16.Chain.Harbor]:5000000}});function secp256k1HdWalletFromMnemonic({prefix,derivationPath}){return async function(mnemonic,index=0){let importedAmino=await import("@cosmjs/amino"),Secp256k1HdWallet=importedAmino.Secp256k1HdWallet??importedAmino.default?.Secp256k1HdWallet,importedCrypto=await import("@cosmjs/crypto"),stringToPath2=importedCrypto.stringToPath??importedCrypto.default?.stringToPath;return Secp256k1HdWallet.fromMnemonic(mnemonic,{hdPaths:[stringToPath2(`${derivationPath}/${index}`)],prefix})}}function exportSignature(signature){return import_base4.base64.encode(signature)}function signMultisigTx(chain){return async function({wallet,tx}){let{msgs,accountNumber,sequence,chainId,fee,memo}=typeof tx==="string"?JSON.parse(tx):tx,address=(await wallet.getAccounts())?.[0]?.address||"",aminoTypes=await createDefaultAminoTypes(chain),registry2=await createDefaultRegistry(),signingClient=await createOfflineStargateClient(wallet,{aminoTypes,registry:registry2}),msgForSigning=[];for(let msg of msgs){let signMsg=await convertToSignable(msg,chain);msgForSigning.push(signMsg)}let{signatures:[signature]}=await signingClient.sign(address,msgForSigning,fee,memo,{accountNumber,chainId,sequence});return{bodyBytes:await buildEncodedTxBody({chain,memo,msgs:msgs.map(parseAminoMessageForDirectSigning)}),signature:exportSignature(signature)}}}function broadcastMultisigTx({prefix,chain}){return async function(tx,signers,membersPubKeys,threshold,bodyBytes){let rpcUrl=await import_helpers17.getRPCUrl(chain),{encodeSecp256k1Pubkey,pubkeyToAddress}=(await import("@cosmjs/amino")).default,{makeMultisignedTxBytes}=(await import("@cosmjs/stargate")).default,{sequence,fee}=JSON.parse(tx),multisigPubkey=await createMultisig(membersPubKeys,threshold),addressesAndSignatures=signers.map((signer)=>[pubkeyToAddress(encodeSecp256k1Pubkey(import_base4.base64.decode(signer.pubKey)),prefix),import_base4.base64.decode(signer.signature)]),broadcaster=await createStargateClient(rpcUrl),{transactionHash}=await broadcaster.broadcastTx(makeMultisignedTxBytes(multisigPubkey,sequence,fee,bodyBytes,new Map(addressesAndSignatures)));return transactionHash}}async function createMultisig(pubKeys,threshold,noSortPubKeys=!0){let{createMultisigThresholdPubkey,encodeSecp256k1Pubkey}=(await import("@cosmjs/amino")).default;return createMultisigThresholdPubkey(pubKeys.map((pubKey)=>encodeSecp256k1Pubkey(import_base4.base64.decode(pubKey))),threshold,noSortPubKeys)}function importSignature(signature){return import_base4.base64.decode(signature)}async function signWithPrivateKey({privateKey,message}){let{Secp256k1}=(await import("@cosmjs/crypto")).default,signature=await Secp256k1.createSignature(import_base4.base64.decode(message),privateKey);return import_base4.base64.encode(Buffer.concat([signature.r(32),signature.s(32)]))}function createThorchainToolbox({chain,...toolboxParams}){let{isStagenet}=import_helpers17.SKConfig.get("envs"),thornodeUrls=import_helpers17.SKConfig.get("thornodeUrls"),isMayachain=chain===import_helpers17.Chain.Maya,nodeUrl=import_ts_pattern8.match({isMayachain,isStagenet}).with({isMayachain:!0},({isStagenet:isStagenet2})=>isStagenet2?thornodeUrls.MAYA_STAGENET:thornodeUrls.MAYA).otherwise(({isStagenet:isStagenet2})=>isStagenet2?thornodeUrls.THOR_STAGENET:thornodeUrls.THOR),chainPrefix=`${isStagenet?"s":""}${import_helpers17.CosmosChainPrefixes[chain]}`,index="index"in toolboxParams?toolboxParams.index||0:0,derivationPath="derivationPath"in toolboxParams&&toolboxParams.derivationPath?toolboxParams.derivationPath:import_helpers17.updateDerivationPath(import_helpers17.NetworkDerivationPath[chain],{index}),cosmosToolbox=createCosmosToolbox({chain,...toolboxParams}),defaultFee=getDefaultChainFee(chain);async function getFees2(){let fee,constantsUrl=`${nodeUrl}/${isMayachain?"mayachain":"thorchain"}/constants`;try{let{int_64_values:{NativeTransactionFee:nativeFee}}=await import_helpers17.RequestClient.get(constantsUrl);if(!nativeFee||Number.isNaN(nativeFee)||nativeFee<0)throw new import_helpers17.SwapKitError("toolbox_cosmos_invalid_fee",{nativeFee:nativeFee.toString()});fee=new import_helpers17.SwapKitNumber(nativeFee)}catch{fee=new import_helpers17.SwapKitNumber({decimal:import_helpers17.getChainConfig(chain).baseDecimal,value:isMayachain?1:0.02})}return{[import_helpers17.FeeOption.Average]:fee,[import_helpers17.FeeOption.Fast]:fee,[import_helpers17.FeeOption.Fastest]:fee}}async function transfer({assetValue,memo="",recipient}){let rpcUrl=await import_helpers17.getRPCUrl(chain),signer=await import_ts_pattern8.match(toolboxParams).with({phrase:import_ts_pattern8.P.string},({phrase})=>cosmosToolbox.getSignerFromPhrase({derivationPath,phrase})).with({signer:import_ts_pattern8.P.any},({signer:signer2})=>signer2).otherwise(()=>{return}),{TxRaw}=await import("cosmjs-types/cosmos/tx/v1beta1/tx"),sender=(await signer?.getAccounts())?.[0]?.address;if(!(sender&&signer))throw new import_helpers17.SwapKitError("toolbox_cosmos_no_signer");let isAminoSigner="signAmino"in signer,registry2=await createDefaultRegistry(),aminoTypes=await createDefaultAminoTypes(chain),signingClient=await createSigningStargateClient(rpcUrl,signer,{aminoTypes,registry:registry2}),aminoMessage=buildAminoMsg({assetValue,memo,recipient,sender});if(isAminoSigner){let msgSign2=await convertToSignable(aminoMessage,chain),{signatures,authInfoBytes}=await signingClient.sign(sender,[msgSign2],defaultFee,memo),tx=TxRaw.encode({authInfoBytes,bodyBytes:await buildEncodedTxBody({chain,memo,msgs:[aminoMessage].map(parseAminoMessageForDirectSigning)}),signatures}).finish();return(await signingClient.broadcastTx(tx)).transactionHash}let preparedMessage=parseAminoMessageForDirectSigning(aminoMessage),msgSign=await convertToSignable(preparedMessage,chain);return(await signingClient.signAndBroadcast(sender,[msgSign],defaultFee,memo)).transactionHash}return{...cosmosToolbox,broadcastMultisigTx:broadcastMultisigTx({chain,prefix:chainPrefix}),buildAminoMsg,buildEncodedTxBody,convertToSignable,createDefaultAminoTypes:()=>createDefaultAminoTypes(chain),createDefaultRegistry,createMultisig,createTransaction,deposit:transfer,getFees:getFees2,importSignature,parseAminoMessageForDirectSigning,pubkeyToAddress:async(pubkey)=>{let{pubkeyToAddress}=(await import("@cosmjs/amino")).default;return pubkeyToAddress(pubkey,chainPrefix)},secp256k1HdWalletFromMnemonic:secp256k1HdWalletFromMnemonic({derivationPath:import_helpers17.derivationPathToString(derivationPath),prefix:chainPrefix}),signMultisigTx:signMultisigTx(chain),signWithPrivateKey,transfer}}var import_base4,import_helpers17,import_ts_pattern8;var init_thorchain=__esm(()=>{init_thorchainUtils();init_util();init_cosmos();import_base4=require("@scure/base"),import_helpers17=require("@swapkit/helpers"),import_ts_pattern8=require("ts-pattern")});var import_helpers18,getCosmosToolbox=(chain,params)=>{switch(chain){case import_helpers18.Chain.Cosmos:case import_helpers18.Chain.Kujira:case import_helpers18.Chain.Noble:return createCosmosToolbox({chain,...params});case import_helpers18.Chain.Maya:case import_helpers18.Chain.THORChain:return createThorchainToolbox({chain,...params});default:throw new import_helpers18.SwapKitError("toolbox_cosmos_not_supported",{chain})}};var init_toolbox4=__esm(()=>{init_cosmos();init_thorchain();import_helpers18=require("@swapkit/helpers");init_cosmos();init_thorchain()});var exports_cosmos={};__export(exports_cosmos,{verifySignature:()=>verifySignature,transferMsgAmino:()=>transferMsgAmino,toBase64:()=>toBase64,parseAminoMessageForDirectSigning:()=>parseAminoMessageForDirectSigning,getSignerFromPrivateKey:()=>getSignerFromPrivateKey,getSignerFromPhrase:()=>getSignerFromPhrase,getMsgSendDenom:()=>getMsgSendDenom,getFeeRateFromSwapKit:()=>getFeeRateFromSwapKit,getDenomWithChain:()=>getDenomWithChain,getDefaultChainFee:()=>getDefaultChainFee,getCosmosToolbox:()=>getCosmosToolbox,getCosmosAddressValidator:()=>getCosmosAddressValidator,getAssetFromDenom:()=>getAssetFromDenom,fromBase64:()=>fromBase64,fetchFeeRateFromSwapKit:()=>fetchFeeRateFromSwapKit,estimateTransactionFee:()=>estimateTransactionFee,depositMsgAmino:()=>depositMsgAmino,createTransaction:()=>createTransaction,createThorchainToolbox:()=>createThorchainToolbox,createStargateClient:()=>createStargateClient,createSigningStargateClient:()=>createSigningStargateClient,createOfflineStargateClient:()=>createOfflineStargateClient,createDefaultRegistry:()=>createDefaultRegistry,createDefaultAminoTypes:()=>createDefaultAminoTypes,createCosmosToolbox:()=>createCosmosToolbox,cosmosCreateTransaction:()=>cosmosCreateTransaction,convertToSignable:()=>convertToSignable,buildTransferTx:()=>buildTransferTx,buildEncodedTxBody:()=>buildEncodedTxBody,buildDepositTx:()=>buildDepositTx,buildAminoMsg:()=>buildAminoMsg,bech32ToBase64:()=>bech32ToBase64,base64ToBech32:()=>base64ToBech32,YUM_KUJIRA_FACTORY_DENOM:()=>YUM_KUJIRA_FACTORY_DENOM,USK_KUJIRA_FACTORY_DENOM:()=>USK_KUJIRA_FACTORY_DENOM,THORCHAIN_GAS_VALUE:()=>THORCHAIN_GAS_VALUE,MAYA_GAS_VALUE:()=>MAYA_GAS_VALUE,DEFAULT_NOBLE_FEE_MAINNET:()=>DEFAULT_NOBLE_FEE_MAINNET,DEFAULT_KUJI_FEE_MAINNET:()=>DEFAULT_KUJI_FEE_MAINNET,DEFAULT_COSMOS_FEE_MAINNET:()=>DEFAULT_COSMOS_FEE_MAINNET});module.exports=__toCommonJS(exports_cosmos);var init_cosmos2=__esm(()=>{init_thorchainUtils();init_toolbox4();init_util()});function buildOrderAction({builder,grouping="na",orders}){return{builder,grouping,orders,type:"order"}}function buildCancelAction({cancels}){return{cancels,type:"cancel"}}function buildCancelByCloidAction({cancels}){return{cancels,type:"cancelByCloid"}}function buildModifyAction({oid,order}){return{oid,order,type:"modify"}}function buildBatchModifyAction({modifies}){return{modifies,type:"batchModify"}}function buildUpdateLeverageAction({asset,isCross,leverage}){return{asset,isCross,leverage,type:"updateLeverage"}}function buildUpdateIsolatedMarginAction({asset,isBuy,ntli}){return{asset,isBuy,ntli,type:"updateIsolatedMargin"}}function buildTopUpIsolatedOnlyMarginAction({asset,leverage}){return{asset,leverage,type:"topUpIsolatedOnlyMargin"}}function buildScheduleCancelAction({time}){return{time,type:"scheduleCancel"}}function buildUsdClassTransferAction({amount,hyperliquidChain,nonce,signatureChainId,toPerp}){return{amount,hyperliquidChain,nonce,signatureChainId,toPerp,type:"usdClassTransfer"}}function buildSendAssetAction({amount,destination,destinationDex,fromSubAccount,hyperliquidChain,nonce,signatureChainId,sourceDex,token}){return{amount,destination,destinationDex,fromSubAccount,hyperliquidChain,nonce,signatureChainId,sourceDex,token,type:"sendAsset"}}function buildApproveAgentAction({agentAddress,agentName,hyperliquidChain,nonce,signatureChainId}){return{agentAddress,agentName,hyperliquidChain,nonce,signatureChainId,type:"approveAgent"}}function buildApproveBuilderFeeAction({builder,hyperliquidChain,maxFeeRate,nonce,signatureChainId}){return{builder,hyperliquidChain,maxFeeRate,nonce,signatureChainId,type:"approveBuilderFee"}}function buildTokenDelegateAction({hyperliquidChain,isUndelegate,nonce,signatureChainId,validator,wei}){return{hyperliquidChain,isUndelegate,nonce,signatureChainId,type:"tokenDelegate",validator,wei}}function concatBytes(...chunks){let totalLength=chunks.reduce((sum,chunk)=>sum+chunk.length,0),merged=new Uint8Array(totalLength),offset=0;for(let chunk of chunks)merged.set(chunk,offset),offset+=chunk.length;return merged}function encodeLength(prefixBase,shortLimit,valueLength){if(valueLength<shortLimit)return new Uint8Array([prefixBase+valueLength]);if(valueLength<=255)return new Uint8Array([prefixBase+shortLimit,valueLength]);if(valueLength<=65535)return new Uint8Array([prefixBase+shortLimit+1,valueLength>>8,valueLength&255]);return new Uint8Array([prefixBase+shortLimit+2,valueLength>>>24&255,valueLength>>>16&255,valueLength>>>8&255,valueLength&255])}function encodeUintBytes(value,byteLength){let bytes=new Uint8Array(byteLength),remaining=value;for(let index=byteLength-1;index>=0;index-=1)bytes[index]=Number(remaining&0xffn),remaining>>=8n;return bytes}function encodeInteger(value){if(value>=0n){if(value<=0x7fn)return new Uint8Array([Number(value)]);if(value<=0xffn)return new Uint8Array([204,Number(value)]);if(value<=0xffffn)return concatBytes(new Uint8Array([205]),encodeUintBytes(value,2));if(value<=0xffffffffn)return concatBytes(new Uint8Array([206]),encodeUintBytes(value,4));return concatBytes(new Uint8Array([207]),encodeUintBytes(value,8))}if(value>=-32n)return new Uint8Array([256+Number(value)]);if(value>=-128n)return new Uint8Array([208,256+Number(value)]);if(value>=-32768n)return concatBytes(new Uint8Array([209]),encodeUintBytes(BigInt.asUintN(16,value),2));if(value>=-2147483648n)return concatBytes(new Uint8Array([210]),encodeUintBytes(BigInt.asUintN(32,value),4));return concatBytes(new Uint8Array([211]),encodeUintBytes(BigInt.asUintN(64,value),8))}function encodeString(value){let encoded=textEncoder.encode(value);if(encoded.length<32)return concatBytes(new Uint8Array([160+encoded.length]),encoded);return concatBytes(encodeLength(217,0,encoded.length),encoded)}function encodeArray(values){let encodedValues=values.map((value)=>encodeMsgPack(value)),header=values.length<16?new Uint8Array([144+values.length]):values.length<=65535?new Uint8Array([220,values.length>>8,values.length&255]):new Uint8Array([221,values.length>>>24&255,values.length>>>16&255,values.length>>>8&255,values.length&255]);return concatBytes(header,...encodedValues)}function encodeMap(value){let entries=Object.entries(value).filter(([,entryValue])=>typeof entryValue<"u"),header=entries.length<16?new Uint8Array([128+entries.length]):entries.length<=65535?new Uint8Array([222,entries.length>>8,entries.length&255]):new Uint8Array([223,entries.length>>>24&255,entries.length>>>16&255,entries.length>>>8&255,entries.length&255]);return concatBytes(header,...entries.flatMap(([key,entryValue])=>[encodeString(key),encodeMsgPack(entryValue)]))}function encodeMsgPack(value){if(value===null)return new Uint8Array([192]);if(typeof value==="boolean")return new Uint8Array([value?195:194]);if(typeof value==="string")return encodeString(value);if(typeof value==="number"){if(!Number.isFinite(value)||!Number.isInteger(value))throw new import_helpers19.SwapKitError("helpers_invalid_params",{message:"Hyperliquid msgpack only supports integers"});return encodeInteger(BigInt(value))}if(typeof value==="bigint")return encodeInteger(value);if(value instanceof Uint8Array){let header=value.length<=255?new Uint8Array([196,value.length]):value.length<=65535?new Uint8Array([197,value.length>>8,value.length&255]):new Uint8Array([198,value.length>>>24&255,value.length>>>16&255,value.length>>>8&255,value.length&255]);return concatBytes(header,value)}if(Array.isArray(value))return encodeArray(value);if(typeof value==="object")return encodeMap(value);throw new import_helpers19.SwapKitError("helpers_invalid_params",{message:`Unsupported Hyperliquid msgpack value: ${String(value)}`})}function hexToBytes(hexValue){let normalized=hexValue.startsWith("0x")?hexValue.slice(2):hexValue;if(normalized.length%2!==0||/[^a-fA-F0-9]/u.test(normalized))throw new import_helpers19.SwapKitError("helpers_invalid_params",{hexValue});let bytes=new Uint8Array(normalized.length/2);for(let index=0;index<normalized.length;index+=2)bytes[index/2]=Number.parseInt(normalized.slice(index,index+2),16);return bytes}function getL1TypedData(connectionId){return{domain:l1Domain,message:{connectionId,source:"a"},primaryType:"Agent",types:{Agent:[...l1Types.Agent]}}}function getUserSignedTypedData(action){let primaryType=primaryTypes[action.type],payloadTypes=userSignedActionTypes[action.type],{type,...message}=action;return{domain:{chainId:Number.parseInt(message.signatureChainId||"0xa4b1",16),name:"HyperliquidSignTransaction",verifyingContract:zeroAddress,version:"1"},message:{...message,hyperliquidChain:message.hyperliquidChain||mainnet},primaryType,types:{[primaryType]:payloadTypes}}}function getSignatureValues(signatureHex){let signature=import_ethers5.Signature.from(signatureHex);return{r:signature.r,s:signature.s,v:signature.v}}function getActionHash(action,nonce,{expiresAfter,vaultAddress}={}){let actionBytes=encodeMsgPack(action),nonceBytes=encodeUintBytes(BigInt(nonce),8),vaultBytes=vaultAddress?concatBytes(new Uint8Array([1]),hexToBytes(vaultAddress.toLowerCase())):new Uint8Array([0]),expiresAfterBytes=typeof expiresAfter==="number"?concatBytes(new Uint8Array([0]),encodeUintBytes(BigInt(expiresAfter),8)):new Uint8Array;return import_ethers5.keccak256(concatBytes(actionBytes,nonceBytes,vaultBytes,expiresAfterBytes))}function normalizeUserSignedAction(action){let hyperliquidChain=action.hyperliquidChain||mainnet;switch(action.type){case"approveAgent":return{...action,agentAddress:action.agentAddress.toLowerCase(),hyperliquidChain};case"approveBuilderFee":return{...action,builder:action.builder.toLowerCase(),hyperliquidChain};case"sendAsset":return{...action,destination:action.destination.toLowerCase(),fromSubAccount:action.fromSubAccount.toLowerCase(),hyperliquidChain};case"tokenDelegate":return{...action,hyperliquidChain,validator:action.validator.toLowerCase()};case"usdClassTransfer":return{...action,hyperliquidChain};default:return action}}var import_helpers19,import_ethers5,zeroAddress="0x0000000000000000000000000000000000000000",l1Domain,l1Types,mainnet="Mainnet",userSignedActionTypes,primaryTypes,textEncoder;var init_signing=__esm(()=>{import_helpers19=require("@swapkit/helpers"),import_ethers5=require("ethers"),l1Domain={chainId:1337,name:"Exchange",verifyingContract:zeroAddress,version:"1"},l1Types={Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]},userSignedActionTypes={approveAgent:[{name:"hyperliquidChain",type:"string"},{name:"agentAddress",type:"address"},{name:"agentName",type:"string"},{name:"nonce",type:"uint64"}],approveBuilderFee:[{name:"hyperliquidChain",type:"string"},{name:"maxFeeRate",type:"string"},{name:"builder",type:"address"},{name:"nonce",type:"uint64"}],sendAsset:[{name:"hyperliquidChain",type:"string"},{name:"destination",type:"string"},{name:"sourceDex",type:"string"},{name:"destinationDex",type:"string"},{name:"token",type:"string"},{name:"amount",type:"string"},{name:"fromSubAccount",type:"string"},{name:"nonce",type:"uint64"}],tokenDelegate:[{name:"hyperliquidChain",type:"string"},{name:"validator",type:"address"},{name:"wei",type:"uint64"},{name:"isUndelegate",type:"bool"},{name:"nonce",type:"uint64"}],usdClassTransfer:[{name:"hyperliquidChain",type:"string"},{name:"amount",type:"string"},{name:"toPerp",type:"bool"},{name:"nonce",type:"uint64"}]},primaryTypes={approveAgent:"HyperliquidTransaction:ApproveAgent",approveBuilderFee:"HyperliquidTransaction:ApproveBuilderFee",sendAsset:"HyperliquidTransaction:SendAsset",tokenDelegate:"HyperliquidTransaction:TokenDelegate",usdClassTransfer:"HyperliquidTransaction:UsdClassTransfer"},textEncoder=new TextEncoder});function normalizeAddress(address,errorKey){if(!validateHyperCoreAddress(address))throw new import_helpers20.SwapKitError(errorKey,{address});return address.toLowerCase()}async function postInfo(payload){let apiBaseUrl=await getApiBaseUrl();return import_helpers20.RequestClient.post(`${apiBaseUrl}/info`,{json:payload})}function getClearinghouseState({dex,user}){return postInfo({...dex?{dex}:{},type:"clearinghouseState",user:normalizeAddress(user,"helpers_invalid_params")})}function getSpotClearinghouseState({user}){return postInfo({type:"spotClearinghouseState",user:normalizeAddress(user,"helpers_invalid_params")})}function getOpenOrders({dex,user}){return postInfo({...dex?{dex}:{},type:"openOrders",user:normalizeAddress(user,"helpers_invalid_params")})}function getFrontendOpenOrders({dex,user}){return postInfo({...dex?{dex}:{},type:"frontendOpenOrders",user:normalizeAddress(user,"helpers_invalid_params")})}function getOrderStatus({oidOrCloid,user}){return postInfo({oid:oidOrCloid,type:"orderStatus",user:normalizeAddress(user,"helpers_invalid_params")})}function getUserFills({aggregateByTime,user}){return postInfo({...typeof aggregateByTime==="boolean"?{aggregateByTime}:{},type:"userFills",user:normalizeAddress(user,"helpers_invalid_params")})}function getUserFillsByTime({aggregateByTime,endTime,startTime,user}){return postInfo({...typeof aggregateByTime==="boolean"?{aggregateByTime}:{},...typeof endTime==="number"?{endTime}:{},startTime,type:"userFillsByTime",user:normalizeAddress(user,"helpers_invalid_params")})}function getHyperCoreAssetValue({coin,token,value,spotMeta}){if(!value||Number(value)<=0)return null;let ticker=coin?.toUpperCase()||`TOKEN-${token||"UNKNOWN"}`,decimal=fallbackDecimals[ticker]||baseDecimal,meta=spotMeta?.tokens?.find((t)=>t.name===coin||token!==void 0&&t.index===Number(token)),identifier=meta?`${HyperCoreChain}.${ticker}-${meta.name}:${meta.tokenId}`:`${HyperCoreChain}.${ticker}`;return new import_helpers20.AssetValue({decimal,identifier,value})}function mergeBalances(balances){let mergedBalances=new Map;for(let balance of balances){let key=balance.toString({includeSynthProtocol:!0}),currentBalance=mergedBalances.get(key);mergedBalances.set(key,currentBalance?currentBalance.add(balance):balance)}if(![...mergedBalances.values()].some((asset)=>asset.isGasAsset||asset.ticker==="HYPE")){let nativeAsset=import_helpers20.AssetValue.from({chain:HyperCoreChain,value:0});mergedBalances.set(nativeAsset.toString({includeSynthProtocol:!0}),nativeAsset)}return[...mergedBalances.values()]}async function getApiBaseUrl(){try{return await import_helpers20.getRPCUrl(HyperCoreChain)}catch{let[rpcUrl]=import_helpers20.getChainConfig(HyperCoreChain).rpcUrls;if(!rpcUrl)throw new import_helpers20.SwapKitError("helpers_chain_no_public_or_set_rpc_url",{chain:HyperCoreChain});return rpcUrl}}async function getExchangeEndpoint(){return`${await getApiBaseUrl()}/exchange`}function getTypedData(action){let primaryType=primaryTypes2[action.type],{type,...message}=action,payloadTypes=userSignedActionTypes2[type];return{domain:{chainId:Number.parseInt(action.signatureChainId,16),name:"HyperliquidSignTransaction",verifyingContract:zeroAddress2,version:"1"},message,primaryType,types:{[primaryType]:payloadTypes}}}async function createL1ActionRequest({action,expiresAfter,nonce,vaultAddress}){let resolvedNonce=nonce||Date.now(),normalizedVaultAddress=vaultAddress?normalizeAddress(vaultAddress,"helpers_invalid_params"):void 0,endpoint=await getExchangeEndpoint(),connectionId=getActionHash(action,resolvedNonce,{expiresAfter,vaultAddress:normalizedVaultAddress});return{action,endpoint,expiresAfter,nonce:resolvedNonce,typedData:getL1TypedData(connectionId),vaultAddress:normalizedVaultAddress}}async function createUserSignedActionRequest({action,nonce,signatureChainId:signatureChainId2}){let resolvedNonce=nonce||action.nonce||Date.now(),resolvedSignatureChainId=signatureChainId2||action.signatureChainId||"0xa4b1",normalizedAction=normalizeUserSignedAction({...action,nonce:resolvedNonce,signatureChainId:resolvedSignatureChainId});return{action:normalizedAction,endpoint:await getExchangeEndpoint(),nonce:resolvedNonce,typedData:getUserSignedTypedData(normalizedAction)}}async function createTransaction2({assetValue,recipient,sender,signatureChainId:customSignatureChainId,time}){let destination=normalizeAddress(recipient,"core_transaction_invalid_recipient_address"),from=normalizeAddress(sender,"core_transaction_invalid_sender_address"),endpoint=await getExchangeEndpoint(),amount=assetValue.getValue("string"),nonce=time||Date.now(),token=assetValue.address;if(!token)throw new import_helpers20.SwapKitError("helpers_invalid_params",{asset:assetValue.toString(),from});let action={amount,destination,hyperliquidChain:hyperliquidMainnet,signatureChainId:customSignatureChainId||signatureChainId,time:nonce,token,type:"spotSend"};return{action,endpoint,nonce,typedData:getTypedData(action)}}async function broadcastTransaction(signed){let response=await import_helpers20.RequestClient.post(signed.endpoint,{json:{action:signed.action,...typeof signed.expiresAfter==="number"?{expiresAfter:signed.expiresAfter}:{},nonce:signed.nonce,signature:signed.signature,...signed.vaultAddress?{vaultAddress:signed.vaultAddress}:{}}});if(response.status!=="ok")throw new import_helpers20.SwapKitError("core_transaction_failed",{response});return response}async function getTransferHash(user,nonce){let apiBaseUrl=await getApiBaseUrl(),startTime=nonce-5000;for(let attempt=0;attempt<5;attempt++){if(attempt>0)await new Promise((r)=>setTimeout(r,1000));try{let updates=await import_helpers20.RequestClient.post(`${apiBaseUrl}/info`,{json:{startTime,type:"userNonFundingLedgerUpdates",user}}),match10=Array.isArray(updates)?updates.find((u)=>u.time&&u.time>=nonce&&(u.delta?.type==="spotTransfer"||u.delta?.type==="internalTransfer")):void 0;if(match10?.hash)return match10.hash}catch{}}return""}function validateHyperCoreAddress(address){return address.startsWith("0x")&&validateEVMAddress(address)}function getHyperCoreToolbox(toolboxParams){let getFallbackBalance=getBalance(HyperCoreChain),index=toolboxParams&&"index"in toolboxParams?toolboxParams.index||0:0,derivationPath=import_helpers20.derivationPathToString(toolboxParams&&"derivationPath"in toolboxParams&&toolboxParams.derivationPath?toolboxParams.derivationPath:import_helpers20.updateDerivationPath(import_helpers20.NetworkDerivationPath[HyperCoreChain],{index})),cachedSigner,signerResolved=!1;function getSigner(){if(signerResolved)return cachedSigner;return cachedSigner=import_ts_pattern9.match(toolboxParams).with({phrase:import_ts_pattern9.P.string},({phrase})=>{return import_ethers6.HDNodeWallet.fromPhrase(phrase,void 0,derivationPath)}).with({signer:import_ts_pattern9.P.not(import_ts_pattern9.P.nullish)},({signer})=>signer).otherwise(()=>{return}),signerResolved=!0,cachedSigner}async function getAddress3(){let signer=getSigner();return signer?await signer.getAddress():""}async function signTransaction(request){let signer=getSigner();if(!signer)throw new import_helpers20.SwapKitError("toolbox_hypercore_no_signer");let signatureHex=await signer.signTypedData(request.typedData.domain,request.typedData.types,request.typedData.message);return{action:request.action,endpoint:request.endpoint,nonce:request.nonce,signature:getSignatureValues(signatureHex),..."expiresAfter"in request?{expiresAfter:request.expiresAfter}:{},..."vaultAddress"in request?{vaultAddress:request.vaultAddress}:{}}}async function getBalance2(address){let normalizedAddress=normalizeAddress(address,"helpers_invalid_params");try{let apiBaseUrl=await getApiBaseUrl(),[spotState,perpState,spotMeta]=await Promise.all([import_helpers20.RequestClient.post(`${apiBaseUrl}/info`,{json:{type:"spotClearinghouseState",user:normalizedAddress}}),import_helpers20.RequestClient.post(`${apiBaseUrl}/info`,{json:{type:"clearinghouseState",user:normalizedAddress}}),import_helpers20.RequestClient.post(`${apiBaseUrl}/info`,{json:{type:"spotMeta"}})]),spotBalances=(spotState.spotState?.balances||spotState.balances||[]).map(({coin,token,total})=>getHyperCoreAssetValue({coin,spotMeta,token,value:total})).filter((asset)=>!!asset),perpBalance=getHyperCoreAssetValue({coin:"USDC",spotMeta,value:perpState.withdrawable||perpState.marginSummary?.accountValue||perpState.marginSummary?.totalRawUsd});return mergeBalances(perpBalance?[...spotBalances,perpBalance]:spotBalances)}catch{return getFallbackBalance(normalizedAddress)}}async function transfer(params){let signer=getSigner();if(!signer)throw new import_helpers20.SwapKitError("toolbox_hypercore_no_signer");let sender=params.sender||await signer.getAddress(),transaction=await createTransaction2({...params,feeRate:0,sender}),signed=await signTransaction(transaction);return await broadcastTransaction(signed),getTransferHash(sender,transaction.nonce)}function estimateTransactionFee2(){return import_helpers20.AssetValue.from({chain:HyperCoreChain,value:0})}return{broadcastTransaction,createL1ActionRequest,createTransaction:createTransaction2,createUserSignedActionRequest,estimateTransactionFee:estimateTransactionFee2,getAddress:getAddress3,getBalance:getBalance2,getState:{clearinghouse:getClearinghouseState,frontendOpenOrders:getFrontendOpenOrders,openOrders:getOpenOrders,orderStatus:getOrderStatus,spotClearinghouse:getSpotClearinghouseState,userFills:getUserFills,userFillsByTime:getUserFillsByTime},signTransaction,transfer,validateAddress:validateHyperCoreAddress}}var import_helpers20,import_ethers6,import_ts_pattern9,HyperCoreChain,baseDecimal,fallbackDecimals,hyperliquidMainnet="Mainnet",signatureChainId="0xa4b1",zeroAddress2="0x0000000000000000000000000000000000000000",userSignedActionTypes2,primaryTypes2;var init_toolbox5=__esm(()=>{init_evm2();init_utils();init_signing();import_helpers20=require("@swapkit/helpers"),import_ethers6=require("ethers"),import_ts_pattern9=require("ts-pattern"),HyperCoreChain=import_helpers20.Chain.HyperCore,{baseDecimal}=import_helpers20.getChainConfig(HyperCoreChain),fallbackDecimals={HYPE:baseDecimal,USDC:6,USDT:6},userSignedActionTypes2={spotSend:[{name:"hyperliquidChain",type:"string"},{name:"destination",type:"string"},{name:"token",type:"string"},{name:"amount",type:"string"},{name:"time",type:"uint64"}]},primaryTypes2={spotSend:"HyperliquidTransaction:SpotSend"}});var exports_hypercore={};__export(exports_hypercore,{validateHyperCoreAddress:()=>validateHyperCoreAddress,getHyperCoreToolbox:()=>getHyperCoreToolbox,createUserSignedActionRequest:()=>createUserSignedActionRequest,createTransaction:()=>createTransaction2,createL1ActionRequest:()=>createL1ActionRequest,buildUsdClassTransferAction:()=>buildUsdClassTransferAction,buildUpdateLeverageAction:()=>buildUpdateLeverageAction,buildUpdateIsolatedMarginAction:()=>buildUpdateIsolatedMarginAction,buildTopUpIsolatedOnlyMarginAction:()=>buildTopUpIsolatedOnlyMarginAction,buildTokenDelegateAction:()=>buildTokenDelegateAction,buildSendAssetAction:()=>buildSendAssetAction,buildScheduleCancelAction:()=>buildScheduleCancelAction,buildOrderAction:()=>buildOrderAction,buildModifyAction:()=>buildModifyAction,buildCancelByCloidAction:()=>buildCancelByCloidAction,buildCancelAction:()=>buildCancelAction,buildBatchModifyAction:()=>buildBatchModifyAction,buildApproveBuilderFeeAction:()=>buildApproveBuilderFeeAction,buildApproveAgentAction:()=>buildApproveAgentAction});module.exports=__toCommonJS(exports_hypercore);var init_hypercore=__esm(()=>{init_toolbox5()});async function fetchTokenMetaData(mintAddress){let assetValue=import_helpers21.AssetValue.from({address:mintAddress,chain:import_helpers21.Chain.Solana});if(assetValue.symbol!=="UNKNOWN")return{decimals:assetValue.decimal||0,id:mintAddress,logoURI:assetValue.getIconUrl(),name:assetValue.symbol,symbol:assetValue.ticker};let url=`https://lite-api.jup.ag/tokens/v2/search?query=${encodeURIComponent(mintAddress)}`;try{let res=await fetch(url);if(!res.ok)return null;let arr=await res.json();if(!Array.isArray(arr)||arr.length===0)return null;return arr.find((t)=>t.id===mintAddress)||null}catch{return null}}async function getSolanaBalance(address){let connection=await getConnection(),{PublicKey:PublicKey2}=await import("@solana/web3.js"),{TOKEN_PROGRAM_ID}=await import("@solana/spl-token"),publicKey=new PublicKey2(address),{baseDecimal:baseDecimal2}=import_helpers21.getChainConfig(import_helpers21.Chain.Solana),solBalance=await connection.getBalance(publicKey),balances=[import_helpers21.AssetValue.from({chain:import_helpers21.Chain.Solana,fromBaseDecimal:baseDecimal2,value:solBalance||0})],tokenAccounts=await connection.getParsedTokenAccountsByOwner(publicKey,{programId:TOKEN_PROGRAM_ID});for(let{account}of tokenAccounts.value){let tokenInfo=account.data.parsed.info,mintAddress=tokenInfo.mint,amount=tokenInfo.tokenAmount.amount;if(Number(amount)===0)continue;let metadata=await fetchTokenMetaData(mintAddress),ticker=metadata?.symbol||"UNKNOWN",decimals=metadata?.decimals||tokenInfo.tokenAmount.decimals;balances.push(import_helpers21.AssetValue.from({asset:`${import_helpers21.Chain.Solana}.${ticker}-${mintAddress}`,fromBaseDecimal:decimals,value:amount}))}return balances}function validateSolanaAddress(address){try{let pubkey=new import_web3.PublicKey(address);return import_web3.PublicKey.isOnCurve(pubkey.toBytes())}catch{return!1}}function getSolanaToolbox(toolboxParams){let index=toolboxParams&&"index"in toolboxParams?toolboxParams.index||0:0,derivationPath=import_helpers21.derivationPathToString(toolboxParams&&"derivationPath"in toolboxParams&&toolboxParams.derivationPath?toolboxParams.derivationPath:import_helpers21.updateDerivationPath(import_helpers21.NetworkDerivationPath[import_helpers21.Chain.Solana],{index})),cachedSigner;async function getSigner(){if(cachedSigner)return cachedSigner;return cachedSigner=await import_ts_pattern10.match(toolboxParams).with({phrase:import_ts_pattern10.P.string},({phrase})=>createKeysForPath({derivationPath,phrase})).with({signer:import_ts_pattern10.P.any},({signer})=>signer).otherwise(()=>{return}),cachedSigner}async function getAddress3(){let signer=await getSigner();return signer?.publicKey?getAddressFromPubKey(signer.publicKey):""}return{broadcastTransaction:broadcastTransaction2(getConnection),createKeysForPath,createTransaction:createTransaction3(getConnection),createTransactionFromInstructions,estimateTransactionFee:estimateTransactionFee2(getConnection),getAddress:getAddress3,getAddressFromPubKey,getBalance:getBalance(import_helpers21.Chain.Solana),getBalanceFromRPC:getSolanaBalance,getConnection,getPubkeyFromAddress:(address)=>new import_web3.PublicKey(address),signAndBroadcastTransaction:async(transaction)=>{let signedTx=await signTransaction(getConnection,getSigner)(transaction);return broadcastTransaction2(getConnection)(signedTx)},signTransaction:signTransaction(getConnection,getSigner),transfer:transfer(getConnection,getSigner),validateAddress:validateSolanaAddress}}function estimateTransactionFee2(getConnection){return async({recipient,assetValue,memo,isProgramDerivedAddress,sender})=>{let connection=await getConnection(),message=(await createTransaction3(getConnection)({assetValue,isProgramDerivedAddress,memo,recipient,sender})).compileMessage(),feeInLamports=await connection.getFeeForMessage(message);if(feeInLamports.value===null)throw new import_helpers21.SwapKitError("toolbox_fee_estimation_failed","Could not estimate Solana fee.");let{baseDecimal:baseDecimal2}=import_helpers21.getChainConfig(import_helpers21.Chain.Solana);return import_helpers21.AssetValue.from({chain:import_helpers21.Chain.Solana,fromBaseDecimal:baseDecimal2,value:feeInLamports.value})}}async function getConnection(){let{Connection}=await import("@solana/web3.js"),rpcUrl=await import_helpers21.getRPCUrl(import_helpers21.Chain.Solana);return new Connection(rpcUrl,{commitment:"confirmed",fetchMiddleware:(info,init,callback)=>{let headers={};for(let[key,value]of Object.entries(init?.headers??{})){let lower=key.toLowerCase();if(lower!=="pragma"&&lower!=="solana-client")headers[key]=value}callback(info,{...init,headers})}})}function createAssetTransaction(getConnection2){return async({assetValue,recipient,sender,isProgramDerivedAddress})=>{let connection=await getConnection2(),fromPubkey=new import_web3.PublicKey(sender);if(assetValue.isGasAsset){let{Transaction:Transaction2,SystemProgram}=await import("@solana/web3.js");return new Transaction2().add(SystemProgram.transfer({fromPubkey,lamports:assetValue.getBaseValue("number"),toPubkey:new import_web3.PublicKey(recipient)}))}if(assetValue.address)return createSolanaTokenTransaction({amount:assetValue.getBaseValue("number"),connection,decimals:assetValue.decimal,from:fromPubkey,isProgramDerivedAddress,recipient,tokenAddress:assetValue.address});return}}async function createSolanaTokenTransaction({tokenAddress,recipient,from,connection,amount,decimals,isProgramDerivedAddress}){let{getAssociatedTokenAddress,getAccount:getAccount2,createAssociatedTokenAccountInstruction,createTransferCheckedInstruction}=await import("@solana/spl-token"),{Transaction:Transaction2}=await import("@solana/web3.js"),transaction=new Transaction2,tokenPublicKey=new import_web3.PublicKey(tokenAddress),fromSPLAddress=await getAssociatedTokenAddress(tokenPublicKey,from),recipientPublicKey=new import_web3.PublicKey(recipient),recipientSPLAddress=await getAssociatedTokenAddress(tokenPublicKey,recipientPublicKey,isProgramDerivedAddress),recipientAccountExists=!1;try{await getAccount2(connection,recipientSPLAddress),recipientAccountExists=!0}catch{}if(!recipientAccountExists)transaction.add(createAssociatedTokenAccountInstruction(from,recipientSPLAddress,recipientPublicKey,tokenPublicKey));return transaction.add(createTransferCheckedInstruction(fromSPLAddress,tokenPublicKey,recipientSPLAddress,from,amount,decimals)),transaction}function createTransaction3(getConnection2){return async({recipient,assetValue,memo,isProgramDerivedAddress,sender})=>{let{createMemoInstruction}=await import("@solana/spl-memo"),fromPubkey=new import_web3.PublicKey(sender);if(!(isProgramDerivedAddress||validateSolanaAddress(recipient)))throw new import_helpers21.SwapKitError("core_transaction_invalid_recipient_address");let connection=await getConnection2(),transaction=await createAssetTransaction(getConnection2)({assetValue,isProgramDerivedAddress,recipient,sender});if(!transaction)throw new import_helpers21.SwapKitError("core_transaction_invalid_sender_address");if(memo)transaction.add(createMemoInstruction(memo));let blockHash=await connection.getLatestBlockhash();return transaction.recentBlockhash=blockHash.blockhash,transaction.feePayer=fromPubkey,transaction}}async function createTransactionFromInstructions({instructions}){let{Transaction:Transaction2}=await import("@solana/web3.js"),transaction=new Transaction2().add(...instructions);if(!transaction)throw new import_helpers21.SwapKitError("core_transaction_invalid_sender_address");return transaction}function transfer(getConnection2,getSigner){return async({recipient,assetValue,memo,isProgramDerivedAddress})=>{let signer=await getSigner();if(!signer)throw new import_helpers21.SwapKitError("core_transaction_invalid_sender_address");let sender=signer.publicKey?.toString()??(await signer.connect()).publicKey.toString(),transaction=await createTransaction3(getConnection2)({assetValue,isProgramDerivedAddress,memo,recipient,sender});if("signTransaction"in signer){let signedTransaction=await signer.signTransaction(transaction);return broadcastTransaction2(getConnection2)(signedTransaction)}return transaction.sign(signer),broadcastTransaction2(getConnection2)(transaction)}}function broadcastTransaction2(getConnection2){return async(transaction)=>{return(await getConnection2()).sendRawTransaction(transaction.serialize())}}function signTransaction(getConnection2,getSigner){return async(transaction)=>{let signer=await getSigner();if(!signer)throw new import_helpers21.SwapKitError("toolbox_solana_no_signer");let{VersionedTransaction}=await import("@solana/web3.js");if(!(transaction instanceof VersionedTransaction)){let blockHash=await(await getConnection2()).getLatestBlockhash();transaction.recentBlockhash=blockHash.blockhash,transaction.feePayer=signer.publicKey||void 0}if("connect"in signer)return await signer.signTransaction(transaction);return transaction.sign([signer]),transaction}}async function createKeysForPath({phrase,derivationPath=import_helpers21.DerivationPath.SOL}){let{HDKey}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync}=await import("@scure/bip39"),{Keypair}=await import("@solana/web3.js"),seed=mnemonicToSeedSync(phrase),hdKey=HDKey.fromMasterSeed(seed);return Keypair.fromSeed(hdKey.derive(derivationPath,!0).privateKey)}function getAddressFromPubKey(publicKey){return publicKey.toString()}var import_web3,import_helpers21,import_ts_pattern10;var init_toolbox6=__esm(()=>{init_utils();import_web3=require("@solana/web3.js"),import_helpers21=require("@swapkit/helpers"),import_ts_pattern10=require("ts-pattern")});var exports_solana={};__export(exports_solana,{validateSolanaAddress:()=>validateSolanaAddress,getSolanaToolbox:()=>getSolanaToolbox,fetchTokenMetaData:()=>fetchTokenMetaData,createKeysForPath:()=>createKeysForPath});module.exports=__toCommonJS(exports_solana);var init_solana=__esm(()=>{init_toolbox6()});function validateStarknetAddress(address){if(!address)return!1;return/^0x[0-9a-fA-F]{1,64}$/.test(address)}async function deriveStarknetKeys({phrase,derivationPath=import_helpers22.DerivationPath.STRK}){let{HDKey}=await import("@scure/bip32"),{mnemonicToSeedSync}=await import("@scure/bip39"),{ec,hash,encode,CallData}=await import("starknet"),seed=mnemonicToSeedSync(phrase),derived=HDKey.fromMasterSeed(seed).derive(derivationPath);if(!derived.privateKey)throw new import_helpers22.SwapKitError("toolbox_starknet_no_signer");let rawKey=encode.addHexPrefix(Buffer.from(derived.privateKey).toString("hex")),groundKey=ec.starkCurve.grindKey(rawKey),privateKey=encode.addHexPrefix(groundKey),publicKey=ec.starkCurve.getStarkKey(privateKey),constructorCallData=CallData.compile([publicKey,0]);return{address:hash.calculateContractAddressFromHash(publicKey,OZ_ACCOUNT_CLASS_HASH,constructorCallData,0),privateKey,publicKey}}async function createKeysForPath2({phrase,derivationPath=import_helpers22.DerivationPath.STRK}){let{Account,RpcProvider}=await import("starknet"),{privateKey,address}=await deriveStarknetKeys({derivationPath,phrase}),rpcUrl=await import_helpers22.getRPCUrl(import_helpers22.Chain.Starknet),provider=new RpcProvider({nodeUrl:rpcUrl});return new Account({address,provider,signer:privateKey})}function getStarknetToolbox(toolboxParams){let chain=import_helpers22.Chain.Starknet,index=toolboxParams&&"index"in toolboxParams?toolboxParams.index||0:0,derivationPath=import_helpers22.derivationPathToString(toolboxParams&&"derivationPath"in toolboxParams&&toolboxParams.derivationPath?toolboxParams.derivationPath:import_helpers22.updateDerivationPath(import_helpers22.NetworkDerivationPath[chain],{index})),cachedSigner,cachedProvider,cachedPublicKey;async function getProvider2(){if(cachedProvider)return cachedProvider;let{RpcProvider}=await import("starknet"),rpcUrl=await import_helpers22.getRPCUrl(chain);return cachedProvider=new RpcProvider({nodeUrl:rpcUrl}),cachedProvider}async function isAccountDeployed(address){let provider=await getProvider2(),targetAddress=address||await getAddress3();if(!targetAddress)return!1;try{return await provider.getClassHashAt(targetAddress),!0}catch(error){if(error instanceof Error&&error.message.includes("Contract not found"))return!1;let errorObj=error;if(errorObj?.code===20||errorObj?.code===19)return!1;throw error}}async function deployAccount(){let{CallData,hash}=await import("starknet"),provider=await getProvider2(),signer=await getSigner();if(!signer)throw new import_helpers22.SwapKitError("toolbox_starknet_no_signer");if(!cachedPublicKey)throw new import_helpers22.SwapKitError({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Cannot deploy account: public key not available. Use phrase-based wallet initialization."}});if(await isAccountDeployed())return signer.address;let constructorCallData=CallData.compile([cachedPublicKey,0]);if(hash.calculateContractAddressFromHash(cachedPublicKey,OZ_ACCOUNT_CLASS_HASH,constructorCallData,0).toLowerCase()!==signer.address.toLowerCase())throw new import_helpers22.SwapKitError({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Address mismatch during deployment verification"}});let deployPayload={addressSalt:cachedPublicKey,classHash:OZ_ACCOUNT_CLASS_HASH,constructorCalldata:constructorCallData},{transaction_hash}=await signer.deployAccount(deployPayload);return await provider.waitForTransaction(transaction_hash),transaction_hash}async function ensureAccountDeployed(){if(!await isAccountDeployed()){if(!cachedPublicKey)throw new import_helpers22.SwapKitError({errorKey:"toolbox_starknet_account_not_deployed",info:{message:"Starknet account is not deployed and cannot be auto-deployed without public key. Use phrase-based wallet initialization."}});await deployAccount()}}async function getSigner(){if(cachedSigner)return cachedSigner;return cachedSigner=await import_ts_pattern11.match(toolboxParams).with({phrase:import_ts_pattern11.P.string},async({phrase})=>{let{Account,RpcProvider}=await import("starknet"),{privateKey,address,publicKey}=await deriveStarknetKeys({derivationPath,phrase});cachedPublicKey=publicKey;let rpcUrl=await import_helpers22.getRPCUrl(import_helpers22.Chain.Starknet),provider=new RpcProvider({nodeUrl:rpcUrl});return new Account({address,provider,signer:privateKey})}).with({address:import_ts_pattern11.P.string,privateKey:import_ts_pattern11.P.string},async({privateKey,address})=>{let{Account}=await import("starknet"),provider=await getProvider2();return new Account({address,provider,signer:privateKey})}).with({signer:import_ts_pattern11.P.instanceOf(Object)},({signer})=>signer).otherwise(()=>{return}),cachedSigner}async function getAddress3(){return(await getSigner())?.address??""}async function getBalanceFromRpc(address){let provider=await getProvider2(),{uint256,CallData}=await import("starknet"),balances=[],balanceContracts=[STRK_CONTRACT_ADDRESS,ETH_CONTRACT_ADDRESS];for(let contractAddress of balanceContracts)try{let[high="0",low="0"]=await provider.callContract({calldata:CallData.compile({account:address}),contractAddress,entrypoint:"balanceOf"}),rawBalance=uint256.uint256ToBN({high,low});import_ts_pattern11.match(contractAddress).with(STRK_CONTRACT_ADDRESS,()=>{balances.push(import_helpers22.AssetValue.from({chain,value:rawBalance}))}).with(ETH_CONTRACT_ADDRESS,()=>{if(rawBalance>0n)balances.push(import_helpers22.AssetValue.from({asset:`${chain}.ETH-${contractAddress}`,value:rawBalance}))}).otherwise(()=>{})}catch{}return balances}async function createTransaction4({recipient,assetValue}){let{CallData,uint256}=await import("starknet");if(!validateStarknetAddress(recipient))throw new import_helpers22.SwapKitError("core_transaction_invalid_recipient_address",{address:recipient});let contractAddress=assetValue.isGasAsset?STRK_CONTRACT_ADDRESS:assetValue.address;if(!contractAddress)throw new import_helpers22.SwapKitError("toolbox_starknet_invalid_address",{address:contractAddress,assetValue});let amount=uint256.bnToUint256(assetValue.getBaseValue("bigint"));return[{calldata:CallData.compile([recipient,amount]),contractAddress,entrypoint:"transfer"}]}async function estimateTransactionFee3({recipient,assetValue,sender}){let{baseDecimal:baseDecimal2}=import_helpers22.getChainConfig(import_helpers22.Chain.Starknet),signer=await getSigner(),account=await import_ts_pattern11.match({sender,signer}).with({sender:import_ts_pattern11.P.string},async({sender:sender2})=>{let{Account}=await import("starknet"),provider=await getProvider2();return new Account({address:sender2,provider,signer:"0x0"})}).with({signer:import_ts_pattern11.P.nonNullable},({signer:signer2})=>signer2).otherwise((params)=>{throw new import_helpers22.SwapKitError({errorKey:"toolbox_starknet_fee_estimation_failed",info:{message:"Estimating fee needs a valid sender address or signer",params}})});try{let calls=await createTransaction4({assetValue,recipient}),estimateFeeResponse=await account.estimateInvokeFee(calls);if(estimateFeeResponse?.overall_fee)return import_helpers22.AssetValue.from({chain,fromBaseDecimal:baseDecimal2,value:estimateFeeResponse.overall_fee})}catch(error){throw new import_helpers22.SwapKitError("toolbox_starknet_fee_estimation_failed",error)}return import_helpers22.AssetValue.from({chain,value:"0.00001"})}async function transfer2({recipient,assetValue,memo}){let signer=await getSigner();if(!signer)throw new import_helpers22.SwapKitError("toolbox_starknet_no_signer");await ensureAccountDeployed();let calls=await createTransaction4({assetValue,memo,recipient});return(await signer.execute(calls)).transaction_hash}async function signMessage(typedData){let signer=await getSigner();if(!signer)throw new import_helpers22.SwapKitError("toolbox_starknet_no_signer");let signature=await signer.signMessage(typedData);return Array.isArray(signature)?signature:[signature.r.toString(),signature.s.toString()]}async function broadcastTransaction3(calls){let signer=await getSigner();if(!signer)throw new import_helpers22.SwapKitError("toolbox_starknet_no_signer");return await ensureAccountDeployed(),(await signer.execute(calls)).transaction_hash}function signAndBroadcastTransaction(calls){return broadcastTransaction3(calls)}function getBalanceWithFallback(address,scamFilter=!0){try{return getBalance(chain)(address,scamFilter)}catch{return getBalanceFromRpc(address)}}return{broadcastTransaction:broadcastTransaction3,createKeysForPath:createKeysForPath2,createTransaction:createTransaction4,deployAccount,estimateTransactionFee:estimateTransactionFee3,getAddress:getAddress3,getBalance:getBalanceWithFallback,getProvider:getProvider2,isAccountDeployed,signAndBroadcastTransaction,signMessage,transfer:transfer2,validateAddress:validateStarknetAddress}}var import_helpers22,import_ts_pattern11,STRK_CONTRACT_ADDRESS="0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",ETH_CONTRACT_ADDRESS="0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",OZ_ACCOUNT_CLASS_HASH="0x01a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003";var init_toolbox7=__esm(()=>{init_utils();import_helpers22=require("@swapkit/helpers"),import_ts_pattern11=require("ts-pattern")});var exports_starknet={};__export(exports_starknet,{validateStarknetAddress:()=>validateStarknetAddress,starknetCreateKeysForPath:()=>createKeysForPath2,getStarknetToolbox:()=>getStarknetToolbox,deriveStarknetKeys:()=>deriveStarknetKeys});module.exports=__toCommonJS(exports_starknet);var init_starknet=__esm(()=>{init_toolbox7()});async function fetchAllCoins(suiClient,owner,coinType,coins=[],cursor){let response=await suiClient.getCoins({coinType,cursor,owner}),allCoins=[...coins,...response.data];return response.hasNextPage?fetchAllCoins(suiClient,owner,coinType,allCoins,response.nextCursor):allCoins}function prepareCoinForTransfer(tx,coins,amountToSend){let totalBalance=coins.reduce((sum,coin)=>sum+BigInt(coin.balance),0n);if(totalBalance<amountToSend)throw new import_helpers23.SwapKitError("toolbox_sui_insufficient_balance",{available:totalBalance.toString(),required:amountToSend.toString()});let{ids}=coins.reduce((acc,coin)=>{if(acc.total>=amountToSend)return acc;return{ids:[...acc.ids,coin.coinObjectId],total:acc.total+BigInt(coin.balance)}},{ids:[],total:0n}),primaryCoinId=ids[0],otherCoinIds=ids.slice(1);if(otherCoinIds.length>0)tx.mergeCoins(primaryCoinId,otherCoinIds);let[coinToTransfer]=tx.splitCoins(primaryCoinId,[amountToSend]);return coinToTransfer}function validateSuiAddress(address){try{return import_utils5.isValidSuiAddress(address)}catch{return!1}}function isKeypairSigner(signer){return"signWithIntent"in signer}function getSuiToolbox({provider:providerParam,...signerParams}={}){let cachedSigner;async function getSigner(){if(cachedSigner)return cachedSigner;return cachedSigner=await import_ts_pattern12.match(signerParams).with({phrase:import_ts_pattern12.P.string},async({phrase})=>{let{Ed25519Keypair}=await import("@mysten/sui/keypairs/ed25519");return Ed25519Keypair.deriveKeypair(phrase)}).with({signer:import_ts_pattern12.P.any},({signer})=>signer).otherwise(()=>{return}),cachedSigner}async function getSuiClient(url=providerParam){let{SuiClient,getFullnodeUrl}=await import("@mysten/sui/client");return new SuiClient({url:url||getFullnodeUrl("mainnet")})}async function getAddress3(){return(await getSigner())?.toSuiAddress()||""}function getTokenInfo(coinType){try{let assetValue=import_helpers23.AssetValue.from({address:coinType,chain:import_helpers23.Chain.Sui});return{asset:assetValue.toString(),decimals:assetValue.decimal}}catch{}return null}async function getBalance2(targetAddress){let addressToQuery=targetAddress||await getAddress3();if(!addressToQuery)throw new import_helpers23.SwapKitError("toolbox_sui_address_required");let{baseDecimal:fromBaseDecimal,chain}=import_helpers23.getChainConfig(import_helpers23.Chain.Sui);try{let suiClient=await getSuiClient(),{totalBalance}=await suiClient.getBalance({owner:addressToQuery}),suiBalances=[import_helpers23.AssetValue.from({chain,fromBaseDecimal,value:totalBalance})],coinBalances=await suiClient.getAllBalances({owner:addressToQuery});for(let{coinType,totalBalance:totalBalance2}of coinBalances){if(coinType==="0x2::sui::SUI"||Number(totalBalance2)<=0)continue;let tokenInfo=getTokenInfo(coinType);if(tokenInfo)suiBalances.push(import_helpers23.AssetValue.from({asset:tokenInfo.asset,fromBaseDecimal:tokenInfo.decimals,value:totalBalance2}))}return suiBalances}catch{return[import_helpers23.AssetValue.from({chain})]}}async function estimateTransactionFee3(params){let defaultFee=import_helpers23.AssetValue.from({chain:import_helpers23.Chain.Sui,value:"0.01"});if(!params)return defaultFee;try{let suiClient=await getSuiClient(),{txBytes}=await createTransaction4(params),{effects:{status,gasUsed}}=await suiClient.dryRunTransactionBlock({transactionBlock:txBytes});if(status.status!=="success")return defaultFee;let totalGas=Number(gasUsed.computationCost)+Number(gasUsed.storageCost)-Number(gasUsed.storageRebate);return import_helpers23.AssetValue.from({chain:import_helpers23.Chain.Sui,value:totalGas.toString()})}catch{return defaultFee}}async function createTransaction4({recipient,assetValue,gasBudget,sender}){let{Transaction:Transaction2}=await import("@mysten/sui/transactions"),senderAddress=sender||await getAddress3();if(!senderAddress)throw new import_helpers23.SwapKitError("toolbox_sui_no_sender");try{let tx=new Transaction2;if(tx.setSender(senderAddress),assetValue.isGasAsset||assetValue.symbol==="SUI"){let[suiCoin]=tx.splitCoins(tx.gas,[assetValue.getBaseValue("string")]);tx.transferObjects([suiCoin],recipient)}else{let coinType=assetValue.address;if(!coinType)throw new import_helpers23.SwapKitError("toolbox_sui_missing_coin_type");let suiClient2=await getSuiClient(),amountToSend=assetValue.getBaseValue("bigint"),coins=await fetchAllCoins(suiClient2,senderAddress,coinType);if(!coins.length)throw new import_helpers23.SwapKitError("toolbox_sui_no_coins_found",{coinType});let coinToSend=prepareCoinForTransfer(tx,coins,amountToSend);tx.transferObjects([coinToSend],recipient)}if(gasBudget)tx.setGasBudget(gasBudget);let suiClient=await getSuiClient(),txBytes=await tx.build({client:suiClient});return{tx,txBytes}}catch(error){if(error instanceof import_helpers23.SwapKitError)throw error;throw new import_helpers23.SwapKitError("toolbox_sui_transaction_creation_error",{error})}}async function signTransaction2(params){let signer=await getSigner();if(!signer)throw new import_helpers23.SwapKitError("toolbox_sui_no_signer");if(params instanceof Uint8Array)return signer.signTransaction(params);let{txBytes}="tx"in params?params:await createTransaction4(params);return signer.signTransaction(txBytes)}async function transfer2({assetValue,gasBudget,recipient}){let signer=await getSigner();if(!signer)throw new import_helpers23.SwapKitError("toolbox_sui_no_signer");let sender=signer.toSuiAddress()||await getAddress3();if(!sender)throw new import_helpers23.SwapKitError("toolbox_sui_no_sender");let{txBytes}=await createTransaction4({assetValue,gasBudget,recipient,sender}),suiClient=await getSuiClient();if(!isKeypairSigner(signer)){let signed=await signer.signTransaction(txBytes),{digest:txHash2}=await suiClient.executeTransactionBlock({signature:signed.signature,transactionBlock:signed.bytes});return txHash2}let{digest:txHash}=await suiClient.signAndExecuteTransaction({signer,transaction:txBytes});return txHash}async function broadcastTransaction3(signedTransaction){let suiClient=await getSuiClient(),{digest:txHash}=await suiClient.executeTransactionBlock({signature:signedTransaction.signature,transactionBlock:signedTransaction.bytes});return txHash}async function signAndBroadcastTransaction(transaction){let signer=await getSigner();if(!signer)throw new import_helpers23.SwapKitError("toolbox_sui_no_signer");let suiClient=await getSuiClient(),txBytes;if(typeof transaction==="string")txBytes=Uint8Array.from(Buffer.from(transaction,"base64"));else if(transaction instanceof Uint8Array)txBytes=transaction;else txBytes=await transaction.build({client:suiClient});if(!isKeypairSigner(signer)){let signed=await signer.signTransaction(txBytes),{digest:txHash2}=await suiClient.executeTransactionBlock({signature:signed.signature,transactionBlock:signed.bytes});return txHash2}let{digest:txHash}=await suiClient.signAndExecuteTransaction({signer,transaction:txBytes});return txHash}return{broadcastTransaction:broadcastTransaction3,createTransaction:createTransaction4,estimateTransactionFee:estimateTransactionFee3,getAddress:getAddress3,getBalance:getBalance2,signAndBroadcastTransaction,signTransaction:signTransaction2,transfer:transfer2,validateAddress:validateSuiAddress}}var import_utils5,import_helpers23,import_ts_pattern12;var init_toolbox8=__esm(()=>{import_utils5=require("@mysten/sui/utils"),import_helpers23=require("@swapkit/helpers"),import_ts_pattern12=require("ts-pattern")});var exports_sui={};__export(exports_sui,{validateSuiAddress:()=>validateSuiAddress,getSuiToolbox:()=>getSuiToolbox});module.exports=__toCommonJS(exports_sui);var init_sui=__esm(()=>{init_toolbox8()});async function getOrbsEndpoint(){let now=Date.now();if(orbsEndpoint&&now-orbsFetchedAt<ORBS_TTL_MS)return orbsEndpoint;try{return orbsEndpoint=await import_ton_access.getHttpEndpoint(),orbsFetchedAt=now,orbsEndpoint}catch{return import_helpers24.getRPCUrl(import_helpers24.Chain.Ton)}}function getTONToolbox(toolboxParams={}){let client,wallet,cachedSigner;async function getClient(){if(!client){let endpoint=toolboxParams.provider??await getOrbsEndpoint();client=new import_ton.TonClient({endpoint})}return client}async function getAddress3(){return(await getWallet()).address.toString()}async function getSigner(){if(cachedSigner)return cachedSigner;return cachedSigner=await import_ts_pattern13.match(toolboxParams).with({phrase:import_ts_pattern13.P.string},async({phrase})=>import_crypto2.mnemonicToWalletKey(phrase.split(" "))).with({signer:import_ts_pattern13.P.any},({signer})=>signer).otherwise(()=>{return}),cachedSigner}async function getWallet(paramSigner){if(!wallet||paramSigner){let signer=await getSigner(),tonClient=await getClient(),walletSigner=paramSigner||signer;if(!walletSigner)throw new import_helpers24.SwapKitError("core_wallet_connection_not_found");let walletContract=import_ton.WalletContractV4.create({publicKey:walletSigner.publicKey,workchain:0});wallet=tonClient.open(walletContract)}return wallet}let getApiBalance=getBalance(import_helpers24.Chain.Ton);async function buildTransferMessages({assetValue,recipient,memo,sender}){if(assetValue.isGasAsset){let payload=memo?createCommentPayload(memo).toBoc().toString("base64"):void 0;return[{address:recipient,amount:assetValue.getBaseValue("string"),payload}]}let jettonMasterAddress=assetValue.address;if(!jettonMasterAddress)throw new import_helpers24.SwapKitError({errorKey:"core_swap_contract_not_found",info:{asset:assetValue.toString()}});let ownerAddress=sender??await getAddress3(),jettonWalletAddress=await getJettonWalletAddress({jettonMasterAddress,ownerAddress}),destinationAddress=import_ton.Address.parse(recipient),responseAddress=import_ton.Address.parse(ownerAddress),jettonAmount=assetValue.getBaseValue("bigint"),forwardPayload=memo?createCommentPayload(memo):void 0,jettonTransferBody=createJettonTransferBody({destinationAddress,forwardPayload,jettonAmount,responseAddress});return[{address:jettonWalletAddress.toString(),amount:DEFAULT_JETTON_GAS.toString(),payload:jettonTransferBody.toBoc().toString("base64")}]}function createTransaction4({sender,...params}){return buildTransferMessages({...params,sender})}function toInternalMessages(messages2){return messages2.map((msg)=>{let body=msg.payload?import_ton.Cell.fromBase64(msg.payload):void 0,init=msg.stateInit?import_ton.loadStateInit(import_ton.Cell.fromBase64(msg.stateInit).asSlice()):void 0,to=import_ton.Address.parse(msg.address),bounce=import_ton.Address.isFriendly(msg.address)?import_ton.Address.parseFriendly(msg.address).isBounceable:!0;return import_ton.internal({body,bounce,init,to,value:BigInt(msg.amount)})})}async function sign(messages2){let signer=await getSigner(),tonWallet=await getWallet();if(!tonWallet||!signer)throw new import_helpers24.SwapKitError("core_wallet_connection_not_found");let tonClient=await getClient(),{state}=await tonClient.getContractState(tonWallet.address),isDeployed=state==="active",seqno=isDeployed?await tonWallet.getSeqno():0,transfer3=tonWallet.createTransfer({messages:toInternalMessages(messages2),secretKey:signer.secretKey,sendMode:DEFAULT_SEND_MODE,seqno}),ext=import_ton.external({body:transfer3,init:isDeployed?void 0:tonWallet.init,to:tonWallet.address});return import_ton.beginCell().store(import_ton.storeMessage(ext)).endCell()}async function broadcastTransaction3(transferCell){return await(await getClient()).sendFile(transferCell.toBoc()),transferCell.hash().toString("hex")}async function signAndBroadcastTransaction(messages2){let transferCell=await sign(messages2);return broadcastTransaction3(transferCell)}async function transfer2({assetValue,recipient,memo}){let messages2=await createTransaction4({assetValue,memo,recipient});return signAndBroadcastTransaction(messages2)}async function estimateTransactionFee3({sender,...params}){let{baseDecimal:baseDecimal2}=import_helpers24.getChainConfig(import_helpers24.Chain.Ton),senderAddress=await import_ts_pattern13.match(sender).with(import_ts_pattern13.P.string,(address)=>{return import_ton.Address.parseFriendly(address).address}).otherwise(async()=>{return(await getWallet()).address});if(!senderAddress)throw new import_helpers24.SwapKitError("toolbox_fee_estimation_failed",{chain:import_helpers24.Chain.Ton});let fee=import_helpers24.AssetValue.from({chain:import_helpers24.Chain.Ton,value:"0.01"}),tonClient=await getClient();try{let messages2=await createTransaction4({sender,...params}),signer=await getSigner(),tonWallet=await getWallet();if(!tonWallet||!signer)return fee;let seqno=await tonWallet.getSeqno(),transferCell=tonWallet.createTransfer({messages:toInternalMessages(messages2),secretKey:signer.secretKey,sendMode:DEFAULT_SEND_MODE,seqno}),{source_fees}=await tonClient.estimateExternalMessageFee(senderAddress,{body:transferCell,ignoreSignature:!0,initCode:null,initData:null}),baseTotalFee=source_fees.in_fwd_fee+source_fees.storage_fee+source_fees.gas_fee+source_fees.fwd_fee;return fee.set(import_helpers24.SwapKitNumber.fromBigInt(BigInt(baseTotalFee),baseDecimal2))}catch{return fee}}async function getJettonWalletAddress({jettonMasterAddress,ownerAddress}){try{let tonClient=await getClient(),masterAddress=import_ton.Address.parse(jettonMasterAddress),owner=import_ton.Address.parse(ownerAddress);return await tonClient.open(import_ton.JettonMaster.create(masterAddress)).getWalletAddress(owner)}catch{throw new import_helpers24.SwapKitError({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress,ownerAddress}})}}function createJettonTransferBody({jettonAmount,destinationAddress,responseAddress,forwardAmount=DEFAULT_FORWARD_AMOUNT,forwardPayload}){let body=import_ton.beginCell().storeUint(JETTON_TRANSFER_OP,32).storeUint(0,64).storeCoins(jettonAmount).storeAddress(destinationAddress).storeAddress(responseAddress).storeBit(0).storeCoins(forwardAmount);if(forwardPayload)body.storeBit(1).storeRef(forwardPayload);else body.storeBit(0);return body.endCell()}function createCommentPayload(comment){return import_ton.beginCell().storeUint(0,32).storeStringTail(comment).endCell()}return{broadcastTransaction:broadcastTransaction3,createTransaction:createTransaction4,estimateTransactionFee:estimateTransactionFee3,getAddress:getAddress3,getBalance:getApiBalance,getJettonWalletAddress,sign,signAndBroadcastTransaction,transfer:transfer2,validateAddress:validateTonAddress}}function validateTonAddress(address){try{return import_ton.Address.parse(address),!0}catch{return!1}}var import_ton_access,import_helpers24,import_crypto2,import_ton,import_ts_pattern13,JETTON_TRANSFER_OP=260734629,DEFAULT_FORWARD_AMOUNT,DEFAULT_JETTON_GAS,DEFAULT_SEND_MODE,ORBS_TTL_MS=60000,orbsEndpoint,orbsFetchedAt=0;var init_toolbox9=__esm(()=>{init_utils();import_ton_access=require("@orbs-network/ton-access"),import_helpers24=require("@swapkit/helpers"),import_crypto2=require("@ton/crypto"),import_ton=require("@ton/ton"),import_ts_pattern13=require("ts-pattern"),DEFAULT_FORWARD_AMOUNT=import_ton.toNano("0.01"),DEFAULT_JETTON_GAS=import_ton.toNano("0.05"),DEFAULT_SEND_MODE=import_ton.SendMode.PAY_GAS_SEPARATELY+import_ton.SendMode.IGNORE_ERRORS});var exports_ton={};__export(exports_ton,{validateTonAddress:()=>validateTonAddress,getTONToolbox:()=>getTONToolbox});module.exports=__toCommonJS(exports_ton);var init_ton=__esm(()=>{init_toolbox9()});function assertDerivationIndex(name,value){if(!Number.isInteger(value)||value<0)throw RangeError(`${name} must be a non-negative integer, got: ${value}`)}function getUTXOAccountPath({accountIndex,chain,derivationPath}){if(accountIndex!==void 0)assertDerivationIndex("accountIndex",accountIndex);let accountPath=[...derivationPath?.slice(0,3)??import_helpers25.NetworkDerivationPath[chain].slice(0,3)];if(accountIndex!==void 0)accountPath[2]=accountIndex;return accountPath}function getUTXOAddressPath({accountIndex,change=!1,chain,derivationPath,index}){return assertDerivationIndex("index",index),[...getUTXOAccountPath({accountIndex,chain,derivationPath}),Number(change),index]}function getUTXOAccountIndexFromPath(path){return path[2]??0}function createHDWalletHelpers({deriveAddress,getBalance:getBalance2,getUtxos}){async function deriveAddresses(params){let{accountIndex,count,startIndex=0,change=!1}=params;if(assertDerivationIndex("count",count),count<1)throw RangeError("count must be at least 1");assertDerivationIndex("startIndex",startIndex);let addresses=[];for(let i=0;i<count;i++){let derived=await deriveAddress({accountIndex,change,index:startIndex+i});if(derived)addresses.push(derived)}return addresses}async function scanForAddresses(params){let{gapLimit=20,change=!1}=params??{},usedAddresses=[],consecutiveUnused=0,index=0;while(consecutiveUnused<gapLimit){let derived=await deriveAddress({change,index});if(!derived)break;if((await getBalance2(derived.address)).some((b)=>b.getValue("number")>0))usedAddresses.push(derived),consecutiveUnused=0;else consecutiveUnused++;index++}return usedAddresses}async function getAggregatedBalance(gapLimit=20){let[receiveAddresses,changeAddresses]=await Promise.all([scanForAddresses({change:!1,gapLimit}),scanForAddresses({change:!0,gapLimit})]),allAddresses=[...receiveAddresses,...changeAddresses],addressBalances=await Promise.all(allAddresses.map(async(addr)=>{let balance=(await getBalance2(addr.address)).reduce((sum,b)=>sum+b.getValue("number"),0);return{...addr,balance}})),total=addressBalances.reduce((sum,addr)=>sum+addr.balance,0);return{addresses:addressBalances,total}}async function getAggregatedUtxos(gapLimit=20){let[receiveAddresses,changeAddresses]=await Promise.all([scanForAddresses({change:!1,gapLimit}),scanForAddresses({change:!0,gapLimit})]),allAddresses=[...receiveAddresses,...changeAddresses];return(await Promise.all(allAddresses.map(async(addr)=>{return(await getUtxos(addr.address)).map((utxo)=>({...utxo,address:addr.address,derivationIndex:addr.index,isChange:addr.change}))}))).flat()}return{deriveAddresses,getAggregatedBalance,getAggregatedUtxos,scanForAddresses}}var import_helpers25;var init_hdWallet=__esm(()=>{import_helpers25=require("@swapkit/helpers")});async function broadcastUTXOTx({chain,txHash}){let url=`${baseUrl(chain)}/push/transaction`,body=JSON.stringify({data:txHash});try{let response=await import_helpers26.RequestClient.post(url,{body,headers:{"Content-Type":"application/json"}});if(response.context.code!==200)throw new import_helpers26.SwapKitError("toolbox_utxo_broadcast_failed",{error:response.context.error||"Transaction broadcast failed"});return response.data?.transaction_hash||txHash}catch(error){let rpcUrl=await import_helpers26.getRPCUrl(chain);if(rpcUrl){let rpcBody=JSON.stringify({id:uniqid(),jsonrpc:"2.0",method:"sendrawtransaction",params:[txHash]}),rpcResponse=await import_helpers26.RequestClient.post(rpcUrl,{body:rpcBody,headers:{"Content-Type":"application/json"}});if(rpcResponse.error)throw new import_helpers26.SwapKitError("toolbox_utxo_broadcast_failed",{error:rpcResponse.error?.message});if(rpcResponse.result.includes('"code":-26'))throw new import_helpers26.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return rpcResponse.result}throw error}}function baseUrl(chain){return`https://api.blockchair.com/${mapChainToBlockchairChain(chain)}`}function getDefaultTxFeeByChain(chain){switch(chain){case import_helpers26.Chain.Bitcoin:return 5;case import_helpers26.Chain.Dogecoin:return 1e4;case import_helpers26.Chain.Litecoin:return 1;case import_helpers26.Chain.Zcash:return 1;default:return 2}}function mapChainToBlockchairChain(chain){switch(chain){case import_helpers26.Chain.BitcoinCash:return"bitcoin-cash";case import_helpers26.Chain.Litecoin:return"litecoin";case import_helpers26.Chain.Dash:return"dash";case import_helpers26.Chain.Dogecoin:return"dogecoin";case import_helpers26.Chain.Zcash:return"zcash";case import_helpers26.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function getSuggestedTxFee(chain){try{let{feePerKb}=await import_helpers26.RequestClient.get(`https://app.bitgo.com/api/v2/${chain.toLowerCase()}/tx/fee`),suggestedFee=feePerKb/1000;return Math.max(suggestedFee,getDefaultTxFeeByChain(chain))}catch{return getDefaultTxFeeByChain(chain)}}async function blockchairRequest(url,apiKey){let response=await import_helpers26.RequestClient.get(`${url}${apiKey?`${url.includes("?")?"&":"?"}key=${apiKey}`:""}`);if(!response||response.context.code!==200)throw new import_helpers26.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${url}`});return response.data}async function getAddressData({address,chain,apiKey}){if(!address)throw new import_helpers26.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await blockchairRequest(`${baseUrl(chain)}/dashboards/address/${address}?transaction_details=true`,apiKey))[address]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function getUnconfirmedBalance({address,chain,apiKey}){return(await getAddressData({address,apiKey,chain}))?.address.balance||0}async function getRawTx({chain,apiKey,txHash}){if(!txHash)throw new import_helpers26.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await blockchairRequest(`${baseUrl(chain)}/raw/transaction/${txHash}`,apiKey))?.[txHash]?.raw_transaction||""}catch(error){let errorMessage=error instanceof Error?error.message:String(error);return console.error(`Failed to fetch raw transaction: ${errorMessage}`),""}}async function getTransactionDetails({chain,apiKey,txHash}){if(!txHash)throw new import_helpers26.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});let txData=(await blockchairRequest(`${baseUrl(chain)}/dashboards/transaction/${txHash}`,apiKey))?.[txHash];if(!txData)throw new import_helpers26.SwapKitError("toolbox_utxo_tx_not_found",{txHash});let{transaction,inputs,outputs}=txData,sequences=inputs.map((input)=>input.spending_sequence),isRBF=transaction.is_rbf===!0||sequences.some((seq)=>seq<RBF_MAX_SEQUENCE);return{blockId:transaction.block_id,confirmed:transaction.block_id!==-1,fee:transaction.fee,inputs,isRBF,outputs,sequences,size:transaction.size,txid:transaction.hash,weight:transaction.weight}}async function fetchUtxosBatch({chain,address,apiKey,offset=0,limit=30}){return(await blockchairRequest(`${baseUrl(chain)}/outputs?q=recipient(${address}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${limit}&offset=${offset}`,apiKey)).map(({is_spent,script_hex,block_id,transaction_hash,index,value,spending_signature_hex})=>({hash:transaction_hash,index,is_confirmed:block_id!==-1,is_spent,script_hex,txHex:spending_signature_hex,value}))}function getTxsValue(txs){return txs.reduce((total,tx)=>total+tx.value,0)}function pickMostValuableTxs(txs,targetValue){let sortedTxs=[...txs].sort((a,b)=>b.value-a.value);if(targetValue){let result=[],accumulated=0;for(let utxo of sortedTxs)if(result.push(utxo),accumulated+=utxo.value,accumulated>=targetValue)break;return result}return sortedTxs}async function getUnspentUtxos({chain,address,apiKey,targetValue,accumulativeValue=0,offset=0,limit=30}){if(!address)throw new import_helpers26.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let utxos=await fetchUtxosBatch({address,apiKey,chain,limit,offset,targetValue}),isComplete=utxos.length<limit,unspentUtxos=utxos.filter(({is_spent})=>!is_spent),unspentUtxosValue=getTxsValue(unspentUtxos),totalCurrentValue=accumulativeValue+unspentUtxosValue,limitReached=targetValue&&totalCurrentValue>=targetValue;if(isComplete||limitReached)return pickMostValuableTxs(unspentUtxos,targetValue);let nextBatch=await getUnspentUtxos({accumulativeValue:totalCurrentValue,address,apiKey,chain,limit,offset:offset+limit,targetValue}),allUtxos=[...unspentUtxos,...nextBatch];return pickMostValuableTxs(allUtxos,targetValue)}catch(error){let errorMessage=error instanceof Error?error.message:String(error);return console.error(`Failed to fetch unspent UTXOs: ${errorMessage}`),[]}}async function getUtxos({address,chain,apiKey,fetchTxHex=!0,targetValue}){let utxos=await getUnspentUtxos({address,apiKey,chain,targetValue}),results=[];for(let{hash,index,script_hex,value}of utxos){let txHex;if(fetchTxHex)txHex=await getRawTx({apiKey,chain,txHash:hash});results.push({address,hash,index,txHex,value,witnessUtxo:{script:Buffer.from(script_hex,"hex"),value}})}return results}function getUtxoApi(chain){let apiKey=import_helpers26.SKConfig.get("apiKeys").blockchair||"";return import_helpers26.warnOnce({condition:!apiKey,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(txHash)=>broadcastUTXOTx({chain,txHash}),getAddressData:(address)=>getAddressData({address,apiKey,chain}),getBalance:(address)=>getUnconfirmedBalance({address,apiKey,chain}),getRawTx:(txHash)=>getRawTx({apiKey,chain,txHash}),getSuggestedTxFee:()=>getSuggestedTxFee(chain),getTransactionDetails:(txHash)=>getTransactionDetails({apiKey,chain,txHash}),getUtxos:(params)=>getUtxos({...params,apiKey,chain})}}function createCustomUtxoApi(methods){return methods}function getUtxoNetwork(){return function(chain){switch(chain){case import_helpers26.Chain.Bitcoin:return import_utxo_signer.NETWORKS.bitcoin;case import_helpers26.Chain.BitcoinCash:return import_utxo_signer.NETWORKS.bitcoinCash;case import_helpers26.Chain.Dash:return import_utxo_signer.NETWORKS.dash;case import_helpers26.Chain.Litecoin:return import_utxo_signer.NETWORKS.litecoin;case import_helpers26.Chain.Dogecoin:return import_utxo_signer.NETWORKS.dogecoin;case import_helpers26.Chain.Zcash:return import_utxo_signer.NETWORKS.zcash;default:throw new import_helpers26.SwapKitError("toolbox_utxo_not_supported",{chain})}}}var import_helpers26,import_utxo_signer,RBF_MAX_SEQUENCE=4294967294;var init_api2=__esm(()=>{init_utils();import_helpers26=require("@swapkit/helpers"),import_utxo_signer=require("@swapkit/utxo-signer")});function encode(prefix,type,hash){return import_utxo_signer2.encodeCashAddr({hash,prefix,type:typeToNum[type]})}function decode(address){let result=import_utxo_signer2.decodeCashAddr(address),type=numToType[result.type];if(!type)throw Error(`Unknown CashAddr type: ${result.type}`);return{hash:result.hash,prefix:result.prefix,type}}var import_utxo_signer2,typeToNum,numToType,cashaddr;var init_cashaddr=__esm(()=>{import_utxo_signer2=require("@swapkit/utxo-signer"),typeToNum={P2PKH:import_utxo_signer2.CashAddrType.P2PKH,P2SH:import_utxo_signer2.CashAddrType.P2SH},numToType={[import_utxo_signer2.CashAddrType.P2PKH]:"P2PKH",[import_utxo_signer2.CashAddrType.P2SH]:"P2SH"};cashaddr={decode,encode}});function isValidAddress2(input){try{return decodeAddress(input),!0}catch{return!1}}function detectAddressNetwork(address){return decodeAddress(address)?.network}function toLegacyAddress(address){let decoded=decodeAddress(address);if(decoded?.format==="legacy")return address;return encodeAsLegacy(decoded)}function toCashAddress(address){let decoded=decodeAddress(address);return encodeAsCashaddr(decoded)}function decodeAddress(address){try{let decoded=decodeBase58Address(address);if(decoded)return decoded}catch{}try{let decoded=decodeCashAddress(address);if(decoded)return decoded}catch{}throw new import_helpers27.SwapKitError("toolbox_utxo_invalid_address",{address})}function decodeBase58Address(address){try{let payload=base58check.decode(address);if(payload.length!==21)throw new import_helpers27.SwapKitError("toolbox_utxo_invalid_address",{address});let versionByte=payload[0],hash=Array.prototype.slice.call(payload,1);switch(versionByte){case VERSION_BYTE.legacy.mainnet.p2pkh:return{format:"legacy",hash,network:"mainnet",type:"p2pkh"};case VERSION_BYTE.legacy.mainnet.p2sh:return{format:"legacy",hash,network:"mainnet",type:"p2sh"};case VERSION_BYTE.legacy.testnet.p2pkh:return{format:"legacy",hash,network:"testnet",type:"p2pkh"};case VERSION_BYTE.legacy.testnet.p2sh:return{format:"legacy",hash,network:"testnet",type:"p2sh"};case VERSION_BYTE.bitpay.mainnet.p2pkh:return{format:"bitpay",hash,network:"mainnet",type:"p2pkh"};case VERSION_BYTE.bitpay.mainnet.p2sh:return{format:"bitpay",hash,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function decodeCashAddress(address){if(address.indexOf(":")!==-1)try{return decodeCashAddressWithPrefix(address)}catch{}else{let prefixes=["bitcoincash","bchtest","bchreg"];for(let prefix of prefixes)try{return decodeCashAddressWithPrefix(`${prefix}:${address}`)}catch{}}return}function decodeCashAddressWithPrefix(address){try{let{hash,prefix,type}=cashaddr.decode(address);return{format:"cashaddr",hash:Array.prototype.slice.call(hash,0),network:prefix==="bitcoincash"?"mainnet":"testnet",type:type==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function encodeAsLegacy(decoded){let versionByte=VERSION_BYTE.legacy[decoded.network][decoded.type],buffer=Buffer.alloc(1+decoded.hash.length);return buffer[0]=versionByte,buffer.set(decoded.hash,1),base58check.encode(buffer)}function encodeAsCashaddr(decoded){let prefix=decoded.network==="mainnet"?"bitcoincash":"bchtest",type=decoded.type==="p2pkh"?"P2PKH":"P2SH",hash=new Uint8Array(decoded.hash);return cashaddr.encode(prefix,type,hash)}var import_sha2,import_base5,import_helpers27,base58check,UtxoNetwork,VERSION_BYTE;var init_bchaddrjs=__esm(()=>{init_cashaddr();import_sha2=require("@noble/hashes/sha2.js"),import_base5=require("@scure/base"),import_helpers27=require("@swapkit/helpers"),base58check=import_base5.createBase58check(import_sha2.sha256);((UtxoNetwork2)=>{UtxoNetwork2.Mainnet="mainnet";UtxoNetwork2.Testnet="testnet"})(UtxoNetwork||={});VERSION_BYTE={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function compileMemo(memo){let data=new Uint8Array(Buffer.from(memo,"utf8"));return import_utxo_signer3.Script.encode(["RETURN",data])}var import_helpers28,import_utxo_signer3,MIN_TX_FEE=1000,TX_OVERHEAD=10,SEGWIT_MARKER_FLAG_WEIGHT=2,OP_RETURN_OVERHEAD=10,TX_INPUT_BASE=41,TX_INPUT_PUBKEYHASH=107,UTXOScriptType,InputSizes,OutputSizes,getScriptTypeForAddress=(address)=>{if(address.startsWith("bc1")||address.startsWith("tb1")||address.startsWith("ltc1")||address.startsWith("tltc1"))return"P2WPKH";if(address.startsWith("1")||address.startsWith("m")||address.startsWith("n")||address.startsWith("bitcoincash:q")||address.startsWith("bitcoincash:p")||address.startsWith("q")||address.startsWith("p")||address.startsWith("L")||address.startsWith("M")||address.startsWith("3")||address.startsWith("D")||address.startsWith("A")||address.startsWith("9")||address.startsWith("X")||address.startsWith("7")||address.startsWith("y")||address.startsWith("t1")||address.startsWith("t3")||address.startsWith("tm"))return"P2PKH";throw new import_helpers28.SwapKitError("toolbox_utxo_invalid_address",{address})},calculateTxSize=({inputs,outputs,feeRate})=>{let inputType=inputs[0]&&"address"in inputs[0]&&inputs[0].address?getScriptTypeForAddress(inputs[0].address):"P2PKH",inputSize=(feeRate?inputs.filter((utxo)=>utxo.value>=InputSizes["type"in utxo&&utxo.type?utxo.type:"P2PKH"]*Math.ceil(feeRate)):inputs).reduce((total,utxo)=>total+getInputSize(utxo),0),outputSize=outputs?.reduce((total,output)=>total+getOutputSize(output),0)||OutputSizes[inputType],baseSize=TX_OVERHEAD+inputSize+outputSize;return inputType==="P2WPKH"?Math.ceil(baseSize+SEGWIT_MARKER_FLAG_WEIGHT/4):baseSize},getInputSize=(input)=>{if("type"in input&&input.type)return InputSizes[input.type];if("address"in input&&input.address)return InputSizes[getScriptTypeForAddress(input.address)];return TX_INPUT_BASE+TX_INPUT_PUBKEYHASH},getOutputSize=(output,scriptType)=>{if(output?.script)return OP_RETURN_OVERHEAD+output.script.length+(output.script.length>=74?2:1);if(scriptType)return OutputSizes[scriptType];if("address"in output&&output.address)return OutputSizes[getScriptTypeForAddress(output.address)];return OutputSizes.P2PKH};var init_txSize=__esm(()=>{import_helpers28=require("@swapkit/helpers"),import_utxo_signer3=require("@swapkit/utxo-signer");((UTXOScriptType2)=>{UTXOScriptType2.P2PKH="P2PKH";UTXOScriptType2.P2WPKH="P2WPKH"})(UTXOScriptType||={});InputSizes={["P2PKH"]:148,["P2WPKH"]:68},OutputSizes={["P2PKH"]:34,["P2WPKH"]:31}});function getDustThreshold(chain){switch(chain){case import_helpers29.Chain.Bitcoin:case import_helpers29.Chain.BitcoinCash:return 550;case import_helpers29.Chain.Dash:case import_helpers29.Chain.Litecoin:return 5500;case import_helpers29.Chain.Dogecoin:return 1e5;case import_helpers29.Chain.Zcash:return 546;default:throw new import_helpers29.SwapKitError("toolbox_utxo_not_supported",{chain})}}function accumulative({inputs,outputs,feeRate=1,chain=import_helpers29.Chain.Bitcoin,changeAddress=""}){let inputTxType=inputs[0]&&"address"in inputs[0]&&inputs[0].address?getScriptTypeForAddress(inputs[0].address):"P2PKH",filteredInputs=inputs.filter((input)=>getInputSize(input)*feeRate<=input.value),segwitOverhead=inputTxType==="P2WPKH"?Math.ceil(SEGWIT_MARKER_FLAG_WEIGHT/4):0,txSizeWithoutInputs=TX_OVERHEAD+segwitOverhead+outputs.reduce((total,output)=>total+getOutputSize(output),0),amountToSend=outputs.reduce((total,output)=>total+output.value,0),fees=txSizeWithoutInputs*feeRate,inputsValue=0,inputsToUse=[];for(let input of filteredInputs){let inputSize=getInputSize(input),inputFee=feeRate*inputSize;fees+=inputFee,inputsValue+=input.value,inputsToUse.push(input);let totalCost=fees+amountToSend;if(inputsValue<totalCost)continue;let remainder=inputsValue-totalCost,feeForExtraOutput=feeRate*getOutputSize({address:changeAddress,value:0});if(remainder>feeForExtraOutput){let feeAfterExtraOutput=feeForExtraOutput+fees,remainderAfterExtraOutput=inputsValue-(amountToSend+Math.ceil(feeAfterExtraOutput));if(remainderAfterExtraOutput>Math.max(getInputSize({value:0})*feeRate,getDustThreshold(chain)))return{fee:Math.ceil(feeAfterExtraOutput),inputs:inputsToUse,outputs:outputs.concat({address:changeAddress,value:remainderAfterExtraOutput})}}return{fee:Math.ceil(fees),inputs:inputsToUse,outputs}}return{fee:Math.ceil(feeRate*calculateTxSize({inputs,outputs}))}}var import_helpers29;var init_coinselect=__esm(()=>{init_txSize();import_helpers29=require("@swapkit/helpers")});var init_helpers2=__esm(()=>{init_api2();init_bchaddrjs();init_coinselect();init_txSize()});function stripPrefix(address){return address.replace(/(bchtest:|bitcoincash:)/,"")}function validateBchAddress(address){let strippedAddress=stripPrefix(address);return isValidAddress2(strippedAddress)&&detectAddressNetwork(strippedAddress)==="mainnet"}function validateZcashAddress(address){try{if(address.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let decoded=import_utxo_signer4.Address(import_utxo_signer4.ZCASH_NETWORK).decode(address);return decoded.type==="pkh"||decoded.type==="sh"}catch{return!1}}var import_utxo_signer4;var init_validators=__esm(()=>{init_helpers2();import_utxo_signer4=require("@swapkit/utxo-signer")});function validateUtxoAddress({address,chain}){return import_ts_pattern14.match(chain).with(import_helpers31.Chain.BitcoinCash,()=>validateBchAddress(address)).with(import_helpers31.Chain.Zcash,()=>validateZcashAddress(address)).otherwise(()=>{try{return import_utxo_signer5.Address(getNetworkForChain(chain)).decode(address),!0}catch{return!1}})}function getNetworkForChain(chain){return import_ts_pattern14.match(chain).with(import_helpers31.Chain.Bitcoin,()=>import_utxo_signer5.NETWORKS.bitcoin).with(import_helpers31.Chain.BitcoinCash,()=>import_utxo_signer5.NETWORKS.bitcoinCash).with(import_helpers31.Chain.Dash,()=>import_utxo_signer5.NETWORKS.dash).with(import_helpers31.Chain.Dogecoin,()=>import_utxo_signer5.NETWORKS.dogecoin).with(import_helpers31.Chain.Litecoin,()=>import_utxo_signer5.NETWORKS.litecoin).with(import_helpers31.Chain.Zcash,()=>import_utxo_signer5.NETWORKS.zcash).exhaustive()}function derivePrivateKey({phrase,derivationPath,network,seed:providedSeed}){let seed=providedSeed??import_bip392.mnemonicToSeedSync(phrase),derived=import_bip32.HDKey.fromMasterSeed(seed,network.bip32).derive(derivationPath);if(!derived.privateKey)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return derived.privateKey}function getPublicKey(privateKey){return import_secp256k1.secp256k1.getPublicKey(privateKey,!0)}function getAddressFromPublicKey({publicKey,chain,network}){if(chain===import_helpers31.Chain.BitcoinCash){let p2pkhPayment=import_utxo_signer5.p2pkh(publicKey,network);if(!p2pkhPayment.hash)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return import_utxo_signer5.encodeCashAddr({hash:p2pkhPayment.hash,prefix:import_utxo_signer5.CashAddrPrefix.MAINNET,type:import_utxo_signer5.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}let payment=!nonSegwitChains.includes(chain)?import_utxo_signer5.p2wpkh(publicKey,network):import_utxo_signer5.p2pkh(publicKey,network);if(!payment.address)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive address"});return payment.address}function createKeysForPath3({phrase,derivationPath,chain,wif,seed}){let network=getNetworkForChain(chain);if(wif){let privateKey2=import_utxo_signer5.WIF(network).decode(wif),publicKey2=getPublicKey(privateKey2);return{privateKey:privateKey2,publicKey:publicKey2}}if(!phrase)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let path=derivationPath||import_helpers31.derivationPathToString(import_helpers31.NetworkDerivationPath[chain]),privateKey=derivePrivateKey({derivationPath:path,network,phrase,seed}),publicKey=getPublicKey(privateKey);return{privateKey,publicKey}}function getWIF(privateKey,chain){return import_utxo_signer5.WIF(getNetworkForChain(chain)).encode(privateKey)}function getAccountHDKey({phrase,derivationPath,chain,seed:providedSeed}){let pathParts=derivationPath.split("/");if(pathParts.length<4)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${pathParts.length}): ${derivationPath}`});let network=getNetworkForChain(chain),seed=providedSeed??import_bip392.mnemonicToSeedSync(phrase),master=import_bip32.HDKey.fromMasterSeed(seed,network.bip32),accountPath=pathParts.slice(0,4).join("/");return master.derive(accountPath)}function addInputsAndOutputs({inputs,outputs,chain,tx,sender,compiledMemo,enableRBF=!1}){let network=getNetworkForChain(chain),useWitness=!nonSegwitChains.includes(chain),sequence=enableRBF?import_utxo_signer5.RBF_SEQUENCE:void 0,seen=new Set;for(let utxo of inputs){let outpoint=`${utxo.hash}:${utxo.index}`;if(seen.has(outpoint))throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});seen.add(outpoint);let txid=typeof utxo.hash==="string"?import_base6.hex.decode(utxo.hash):utxo.hash;if(useWitness&&utxo.witnessUtxo)tx.addInput({index:utxo.index,sequence,txid,witnessUtxo:{amount:BigInt(utxo.witnessUtxo.value),script:utxo.witnessUtxo.script}});else if(utxo.txHex)tx.addInput({index:utxo.index,nonWitnessUtxo:import_base6.hex.decode(utxo.txHex),sequence,txid,...chain===import_helpers31.Chain.BitcoinCash?{sighashType:import_utxo_signer5.BCHSigHash.ALL}:{}});else throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let output of outputs){let address="address"in output&&output.address?output.address:sender;if(chain===import_helpers31.Chain.BitcoinCash)address=toLegacyAddress(address);if(output.script){if(compiledMemo)tx.addOutput({amount:0n,script:compiledMemo})}else tx.addOutputAddress(address,BigInt(output.value),network)}return{inputs,tx}}async function getFeeRates(chain){let suggestedFeeRate=await getUtxoApi(chain).getSuggestedTxFee();return{[import_helpers31.FeeOption.Average]:suggestedFeeRate,[import_helpers31.FeeOption.Fast]:import_helpers31.applyFeeMultiplier(suggestedFeeRate,import_helpers31.FeeOption.Fast),[import_helpers31.FeeOption.Fastest]:import_helpers31.applyFeeMultiplier(suggestedFeeRate,import_helpers31.FeeOption.Fastest)}}async function getInputsAndTargetOutputs({assetValue,recipient,memo,sender,fetchTxHex:fetchTxOverwrite=!1}){let chain=assetValue.chain,feeRate=(await getFeeRates(chain))[import_helpers31.FeeOption.Fastest],fetchTxHex=fetchTxOverwrite||nonSegwitChains.includes(chain),amountToSend=assetValue.getBaseValue("number"),targetValue=Math.ceil(amountToSend+feeRate*5000);return{inputs:await getUtxoApi(chain).getUtxos({address:sender,fetchTxHex,targetValue}),outputs:[{address:recipient,value:amountToSend},...memo?[{address:"",script:compileMemo(memo),value:0}]:[]]}}async function createTransaction4({assetValue,recipient,memo,feeRate,sender,fetchTxHex=!1,enableRBF=!1}){let chain=assetValue.chain,compiledMemo=memo?compileMemo(memo):null,inputsAndOutputs=await getInputsAndTargetOutputs({assetValue,fetchTxHex,memo,recipient,sender}),{inputs,outputs}=accumulative({...inputsAndOutputs,chain,feeRate});if(!(inputs&&outputs))throw new import_helpers31.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue,sender});let tx=new import_utxo_signer5.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!compiledMemo,version:1}),{inputs:mappedInputs,tx:mappedTx}=addInputsAndOutputs({chain,compiledMemo,enableRBF,inputs,outputs,sender,tx});return{inputs:mappedInputs,tx:mappedTx,utxos:inputsAndOutputs.inputs}}async function getInputsOutputsFee({assetValue,feeOptionKey=import_helpers31.FeeOption.Fast,feeRate,memo,sender,recipient}){let chain=assetValue.chain,inputsAndOutputs=await getInputsAndTargetOutputs({assetValue,memo,recipient,sender}),feeRateWhole=feeRate?Math.floor(feeRate):(await getFeeRates(chain))[feeOptionKey];return accumulative({...inputsAndOutputs,chain,feeRate:feeRateWhole})}function estimateMaxSendableAmount(chain){return async function({from,memo,feeRate,feeOptionKey=import_helpers31.FeeOption.Fast,recipients=1}){let addressData=await getUtxoApi(chain).getAddressData(from),feeRateWhole=feeRate?Math.ceil(feeRate):(await getFeeRates(chain))[feeOptionKey],inputs=addressData?.utxo.map((utxo)=>({...utxo,hash:"",type:"P2PKH"})).filter((utxo)=>utxo.value>Math.max(getDustThreshold(chain),getInputSize(utxo)*feeRateWhole));if(!inputs?.length)return import_helpers31.AssetValue.from({chain});let balanceValue=BigInt(inputs.reduce((sum,utxo)=>sum+utxo.value,0)),balance=import_helpers31.AssetValue.from({chain,value:balanceValue}),outputs=typeof recipients==="number"?Array.from({length:recipients},()=>({address:from,value:0})):recipients;if(memo)outputs.push({address:from,script:compileMemo(memo),value:0});let txSize2=calculateTxSize({inputs,outputs}),fee=import_helpers31.AssetValue.from({chain,value:BigInt(txSize2*feeRateWhole)});return balance.sub(fee)}}function estimateTransactionFee3(chain){return async function(params){let{fee}=await getInputsOutputsFee(params);return import_helpers31.AssetValue.from({chain,value:import_helpers31.SwapKitNumber.fromBigInt(BigInt(fee),8).getValue("string")})}}function createSignerWithKeys({chain,phrase,derivationPath,seed}){let network=getNetworkForChain(chain),{privateKey,publicKey}=createKeysForPath3({chain,derivationPath,phrase,seed}),allowedSighash=chain===import_helpers31.Chain.BitcoinCash?[import_utxo_signer5.BCHSigHash.ALL]:[import_utxo_signer5.SigHash.ALL];return{getAddress:()=>getAddressFromPublicKey({chain,network,publicKey}),privateKey,publicKey,signTransaction:(tx)=>{return tx.sign(privateKey,allowedSighash),tx}}}function transfer2(chain,signer){return async function({memo,recipient,feeOptionKey,feeRate,assetValue,enableRBF=!1}){let from=signer?.getAddress();if(!(signer&&from))throw new import_helpers31.SwapKitError("toolbox_utxo_no_signer");if(!recipient)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});import_helpers31.warnOnce({condition:enableRBF&&!rbfSupportedChains.includes(chain),id:`rbf_not_supported_${chain}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${chain}. Transaction will be created without RBF signaling.`});let isRBFEnabled=enableRBF&&rbfSupportedChains.includes(chain),txFeeRate=feeRate||(await getFeeRates(chain))[feeOptionKey||import_helpers31.FeeOption.Fast],{tx}=await createTransaction4({assetValue,enableRBF:isRBFEnabled,feeRate:txFeeRate,memo,recipient,sender:from});return signer.signTransaction(tx),tx.finalize(),getUtxoApi(chain).broadcastTx(import_base6.hex.encode(tx.extract()))}}function getUTXOAddressValidator(chain){return(address)=>validateUtxoAddress({address,chain})}function addressFromKeysGetter(chain){let network=getNetworkForChain(chain);return function(keys){if(!keys)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return getAddressFromPublicKey({chain,network,publicKey:keys.publicKey})}}function createUTXOToolbox({chain,...toolboxParams}){let phrase="phrase"in toolboxParams?toolboxParams.phrase:void 0,index="index"in toolboxParams?toolboxParams.index||0:0,seed=phrase?import_bip392.mnemonicToSeedSync(phrase):void 0,baseDerivationPath="derivationPath"in toolboxParams&&toolboxParams.derivationPath?toolboxParams.derivationPath:import_helpers31.updateDerivationPath(import_helpers31.NetworkDerivationPath[chain],{index}),derivationPath=import_helpers31.derivationPathToString(baseDerivationPath),internalSigner=phrase?createSignerWithKeys({chain,derivationPath,phrase,seed}):void 0,externalSigner="signer"in toolboxParams?toolboxParams.signer:void 0,keys=phrase?createKeysForPath3({chain,derivationPath,phrase,seed}):void 0;function getAddress3(){if(internalSigner)return Promise.resolve(internalSigner.getAddress());if(externalSigner)return externalSigner.getAddress();return Promise.resolve(void 0)}function getAccountHDKeyForIndex(accountIndex){if(!phrase)return;let accountPath=getUTXOAccountPath({accountIndex,chain,derivationPath:baseDerivationPath});return getAccountHDKey({chain,derivationPath:import_helpers31.derivationPathToString(accountPath),phrase,seed})}let accountHDKey=getAccountHDKeyForIndex();function getExtendedPublicKey(){if(!accountHDKey)return;return accountHDKey.publicExtendedKey}function getExtendedPublicKeyInfo({accountIndex}={}){let hdKey=accountIndex===void 0?accountHDKey:getAccountHDKeyForIndex(accountIndex);if(!hdKey)return;let accountPath=getUTXOAccountPath({accountIndex,chain,derivationPath:baseDerivationPath});return{accountIndex:getUTXOAccountIndexFromPath(accountPath),path:import_helpers31.derivationPathToString(accountPath),xpub:hdKey.publicExtendedKey}}function deriveAddressAtIndex({accountIndex,index:index2,change=!1}){let hdKey=accountIndex===void 0?accountHDKey:getAccountHDKeyForIndex(accountIndex);if(!hdKey)return;let addressPath=getUTXOAddressPath({accountIndex,chain,change,derivationPath:baseDerivationPath,index:index2}),network=getNetworkForChain(chain),childKey=hdKey.deriveChild(Number(change)).deriveChild(index2);if(!childKey.publicKey)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let address=getAddressFromPublicKey({chain,network,publicKey:childKey.publicKey}),pubkey=import_base6.hex.encode(childKey.publicKey);return{accountIndex:getUTXOAccountIndexFromPath(addressPath),address,change,index:index2,path:import_helpers31.derivationPathToString(addressPath),pubkey}}async function isRBFEnabled(txid){if(!rbfSupportedChains.includes(chain))return{reason:`RBF is not supported on ${chain}`,supported:!1};let txDetails=await getUtxoApi(chain).getTransactionDetails(txid);return{canReplace:txDetails.isRBF&&!txDetails.confirmed,confirmed:txDetails.confirmed,enabled:txDetails.isRBF,fee:txDetails.fee,sequences:txDetails.sequences,supported:!0}}async function createReplacementTransaction({txid,newFeeRate,recipient,memo}){if(!rbfSupportedChains.includes(chain))throw new import_helpers31.SwapKitError("toolbox_utxo_rbf_not_supported",{chain});let txDetails=await getUtxoApi(chain).getTransactionDetails(txid);if(!txDetails.isRBF)throw new import_helpers31.SwapKitError("toolbox_utxo_tx_not_replaceable",{txid});if(txDetails.confirmed)throw new import_helpers31.SwapKitError("toolbox_utxo_tx_already_confirmed",{blockId:txDetails.blockId,txid});let totalInputValue=txDetails.inputs.reduce((sum,input)=>sum+input.value,0),sendAmount=txDetails.outputs.find((out)=>out.recipient===recipient)?.value||0;if(sendAmount===0)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let inputs=await Promise.all(txDetails.inputs.map(async(input)=>{let rawTx=await getUtxoApi(chain).getRawTx(input.transaction_hash);return{hash:input.transaction_hash,index:input.index,txHex:rawTx,value:input.value,witnessUtxo:void 0}})),compiledMemo=memo?compileMemo(memo):null,estimatedSize=calculateTxSize({feeRate:newFeeRate,inputs:inputs.map((i)=>({...i,type:"P2WPKH"})),outputs:[{address:recipient,value:sendAmount}]}),newFee=Math.ceil(estimatedSize*newFeeRate);if(newFee<=txDetails.fee)throw new import_helpers31.SwapKitError("toolbox_utxo_rbf_fee_too_low",{newFee,originalFee:txDetails.fee});let feeDelta=newFee-txDetails.fee,newSendAmount=sendAmount-feeDelta;if(newSendAmount<=0)throw new import_helpers31.SwapKitError("toolbox_utxo_rbf_insufficient_change");let tx=new import_utxo_signer5.Transaction({allowLegacyWitnessUtxo:!0,version:1}),outputs=[{address:recipient,value:newSendAmount},...memo?[{address:"",script:compileMemo(memo),value:0}]:[]],changeValue=totalInputValue-newSendAmount-newFee,senderAddress=await getAddress3();if(changeValue>getDustThreshold(chain)&&senderAddress)outputs.push({address:senderAddress,value:changeValue});return addInputsAndOutputs({chain,compiledMemo,inputs,outputs,sender:senderAddress||recipient,tx}),{feeDelta,newFee,originalFee:txDetails.fee,tx}}async function bumpFee({txid,newFeeRate,recipient,memo}){if(!internalSigner)throw new import_helpers31.SwapKitError("toolbox_utxo_no_signer");let{tx,originalFee,newFee}=await createReplacementTransaction({memo,newFeeRate,recipient,txid});internalSigner.signTransaction(tx),tx.finalize();let newTxid=await getUtxoApi(chain).broadcastTx(import_base6.hex.encode(tx.extract()));return{newFee,originalFee,txid:newTxid}}function derivePrivateKeyAtIndex({accountIndex,index:index2,change=!1}){assertDerivationIndex("index",index2);let hdKey=accountIndex===void 0?accountHDKey:getAccountHDKeyForIndex(accountIndex);if(!hdKey)return;return hdKey.deriveChild(Number(change)).deriveChild(index2).privateKey||void 0}function signTransactionWithMultipleKeys({tx,inputDerivations}){if(!accountHDKey)throw new import_helpers31.SwapKitError("toolbox_utxo_no_signer");let allowedSighash=chain===import_helpers31.Chain.BitcoinCash?[import_utxo_signer5.BCHSigHash.ALL]:[import_utxo_signer5.SigHash.ALL];for(let i=0;i<inputDerivations.length;i++){let derivation=inputDerivations[i];if(!derivation)continue;let{derivationIndex,isChange}=derivation,privateKey=derivePrivateKeyAtIndex({change:isChange,index:derivationIndex});if(!privateKey)throw new import_helpers31.SwapKitError("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${i} at index ${derivationIndex}`});tx.signIdx(privateKey,i,allowedSighash)}return tx}async function transferFromMultipleAddresses({utxos,recipient,assetValue,memo,feeRate,feeOptionKey,changeAddress}){if(!accountHDKey)throw new import_helpers31.SwapKitError("toolbox_utxo_no_signer");let txFeeRate=feeRate||(await getFeeRates(chain))[feeOptionKey||import_helpers31.FeeOption.Fast],compiledMemo=memo?compileMemo(memo):null,targetOutputs=[{address:recipient,value:assetValue.getBaseValue("number")}];if(compiledMemo)targetOutputs.push({address:"",script:compiledMemo,value:0});let basicUtxos=utxos.map(({hash,index:index2,value,txHex,witnessUtxo})=>({hash,index:index2,txHex,value,witnessUtxo:witnessUtxo?{script:witnessUtxo.script,value:witnessUtxo.value}:void 0})),{inputs:selectedInputs,outputs}=accumulative({chain,feeRate:txFeeRate,inputs:basicUtxos,outputs:targetOutputs});if(!(selectedInputs&&outputs))throw new import_helpers31.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue,sender:"multiple addresses"});let tx=new import_utxo_signer5.Transaction({allowLegacyWitnessUtxo:!0,version:1}),firstUtxoAddress=utxos[0]?.address,senderAddress=changeAddress||await getAddress3()||firstUtxoAddress||recipient;addInputsAndOutputs({chain,compiledMemo,inputs:selectedInputs,outputs,sender:senderAddress,tx});let inputDerivations=selectedInputs.map((input)=>{let utxoInfo=utxos.find((u)=>u.hash===input.hash&&u.index===input.index);return utxoInfo?{derivationIndex:utxoInfo.derivationIndex,isChange:utxoInfo.isChange}:{derivationIndex:0,isChange:!1}});return signTransactionWithMultipleKeys({inputDerivations,tx}),tx.finalize(),getUtxoApi(chain).broadcastTx(import_base6.hex.encode(tx.extract()))}function resolveDerivationIndex({address,gapLimit=20}){if(!accountHDKey)return;for(let i=0;i<gapLimit;i++){let derived=deriveAddressAtIndex({change:!1,index:i}),derivedChange=deriveAddressAtIndex({change:!0,index:i}),change=derived?.address===address?!1:derivedChange?.address===address;if(derived?.address===address||derivedChange?.address===address)return{change,index:i}}return}return{accumulative,broadcastTx:(txHash)=>getUtxoApi(chain).broadcastTx(txHash),bumpFee,calculateTxSize,createKeysForPath:(params)=>createKeysForPath3({...params,chain}),createReplacementTransaction,createTransaction:createTransaction4,deriveAddressAtIndex,derivePrivateKeyAtIndex,estimateMaxSendableAmount:estimateMaxSendableAmount(chain),estimateTransactionFee:estimateTransactionFee3(chain),getAddress:getAddress3,getAddressFromKeys:addressFromKeysGetter(chain),getBalance:getBalance(chain),getExtendedPublicKey,getExtendedPublicKeyInfo,getFeeRates:()=>getFeeRates(chain),getInputsOutputsFee,getNetworkForChain:()=>getNetworkForChain(chain),getPrivateKeyFromMnemonic:(params)=>getWIF(createKeysForPath3({...params,chain}).privateKey,chain),isRBFEnabled,keys,resolveDerivationIndex,signAndBroadcastTransaction:async(tx)=>{if(!internalSigner)throw new import_helpers31.SwapKitError("toolbox_utxo_no_signer");return internalSigner.signTransaction(tx),tx.finalize(),await getUtxoApi(chain).broadcastTx(import_base6.hex.encode(tx.extract()))},signTransactionWithMultipleKeys,transfer:transfer2(chain,internalSigner),transferFromMultipleAddresses,validateAddress:getUTXOAddressValidator(chain)}}var import_secp256k1,import_base6,import_bip32,import_bip392,import_helpers31,import_utxo_signer5,import_ts_pattern14,nonSegwitChains,rbfSupportedChains;var init_utxo=__esm(()=>{init_utils();init_hdWallet();init_helpers2();init_validators();import_secp256k1=require("@noble/curves/secp256k1.js"),import_base6=require("@scure/base"),import_bip32=require("@scure/bip32"),import_bip392=require("@scure/bip39"),import_helpers31=require("@swapkit/helpers"),import_utxo_signer5=require("@swapkit/utxo-signer"),import_ts_pattern14=require("ts-pattern"),nonSegwitChains=[import_helpers31.Chain.Dash,import_helpers31.Chain.Dogecoin,import_helpers31.Chain.Zcash,import_helpers31.Chain.BitcoinCash],rbfSupportedChains=[import_helpers31.Chain.Bitcoin]});function stripToCashAddress(address){return stripPrefix(toCashAddress(address))}function createSignerWithKeys2(keys){let network=getNetworkForChain(chain);function signTransaction2(tx){return tx.sign(keys.privateKey,[import_utxo_signer6.BCHSigHash.ALL]),tx}function getAddress3(){let p2pkhPayment=import_utxo_signer6.p2pkh(keys.publicKey,network);if(!p2pkhPayment.hash)throw new import_helpers33.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let fullCashAddr=import_utxo_signer6.encodeCashAddr({hash:p2pkhPayment.hash,prefix:import_utxo_signer6.CashAddrPrefix.MAINNET,type:import_utxo_signer6.CashAddrType.P2PKH});return Promise.resolve(fullCashAddr.replace(/^bitcoincash:/,""))}return{getAddress:getAddress3,signTransaction:signTransaction2}}function createBCHToolbox(toolboxParams){let phrase="phrase"in toolboxParams?toolboxParams.phrase:void 0,index="index"in toolboxParams?toolboxParams.index||0:0,derivationPath=import_helpers33.derivationPathToString("derivationPath"in toolboxParams&&toolboxParams.derivationPath?toolboxParams.derivationPath:import_helpers33.updateDerivationPath(import_helpers33.NetworkDerivationPath[chain],{index})),keys=phrase?createKeysForPath3({chain,derivationPath,phrase}):void 0,signer=keys?createSignerWithKeys2(keys):("signer"in toolboxParams)?toolboxParams.signer:void 0;function getAddress3(){return Promise.resolve(signer?.getAddress())}let{getBalance:getBalance2,getFeeRates:getFeeRates2,broadcastTx,...toolbox8}=createUTXOToolbox({chain});function handleGetBalance(address,_scamFilter=!0){return getBalance2(stripPrefix(toCashAddress(address)))}return{...toolbox8,broadcastTx,buildTx,createTransaction:createTransaction5,getAddress:getAddress3,getAddressFromKeys,getBalance:handleGetBalance,getFeeRates:getFeeRates2,stripPrefix,stripToCashAddress,transfer:transfer3({broadcastTx,getFeeRates:getFeeRates2,signer}),validateAddress:validateBchAddress}}async function createTransaction5({assetValue,recipient,memo,feeRate,sender}){if(!validateBchAddress(recipient))throw new import_helpers33.SwapKitError("toolbox_utxo_invalid_address",{address:recipient});let targetValue=Math.ceil(assetValue.getBaseValue("number")+feeRate*7500),utxos=await getUtxoApi(chain).getUtxos({address:stripToCashAddress(sender),fetchTxHex:!0,targetValue}),compiledMemo=memo?compileMemo(memo):null,targetOutputs=[],legacyRecipient=toLegacyAddress(recipient);if(targetOutputs.push({address:legacyRecipient,value:assetValue.getBaseValue("number")}),compiledMemo)targetOutputs.push({script:compiledMemo,value:0});let{inputs,outputs}=accumulative({chain,feeRate,inputs:utxos,outputs:targetOutputs});if(!(inputs&&outputs))throw new import_helpers33.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue,sender});let tx=new import_utxo_signer6.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!compiledMemo,version:1}),legacySender=toLegacyAddress(sender),{inputs:mappedInputs,tx:mappedTx}=addInputsAndOutputs({chain,compiledMemo,inputs,outputs:outputs.map((o)=>("address"in o)&&o.address?{...o,address:toLegacyAddress(o.address)}:o),sender:legacySender,tx});return{inputs:mappedInputs,tx:mappedTx,utxos:inputs}}function transfer3({broadcastTx,getFeeRates:getFeeRates2,signer}){return async function({recipient,assetValue,feeOptionKey=import_helpers33.FeeOption.Fast,...rest}){let from=await signer?.getAddress();if(!(signer&&from))throw new import_helpers33.SwapKitError("toolbox_utxo_no_signer");if(!recipient)throw new import_helpers33.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let feeRate=rest.feeRate||(await getFeeRates2())[feeOptionKey],{tx}=await createTransaction5({...rest,assetValue,feeRate,recipient,sender:from}),signedTx=await signer.signTransaction(tx);return signedTx.finalize(),broadcastTx(import_base7.hex.encode(signedTx.extract()))}}async function buildTx({assetValue,recipient,memo,feeRate,sender}){let recipientCashAddress=toCashAddress(recipient);if(!validateBchAddress(recipientCashAddress))throw new import_helpers33.SwapKitError("toolbox_utxo_invalid_address",{address:recipientCashAddress});let targetValue=Math.ceil(assetValue.getBaseValue("number")+feeRate*7500),utxos=await getUtxoApi(chain).getUtxos({address:stripToCashAddress(sender),fetchTxHex:!0,targetValue}),feeRateWhole=Number(feeRate.toFixed(0)),compiledMemo=memo?compileMemo(memo):null,targetOutputs=[];if(targetOutputs.push({address:toLegacyAddress(recipient),value:assetValue.getBaseValue("number")}),compiledMemo)targetOutputs.push({script:compiledMemo,value:0});let{inputs,outputs}=accumulative({chain,feeRate:feeRateWhole,inputs:utxos,outputs:targetOutputs});if(!(inputs&&outputs))throw new import_helpers33.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue,sender});let tx=new import_utxo_signer6.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!compiledMemo,version:1}),{inputs:mappedInputs,tx:mappedTx}=addInputsAndOutputs({chain,compiledMemo,inputs,outputs,sender:toLegacyAddress(sender),tx});return{inputs:mappedInputs,tx:mappedTx,utxos}}function getAddressFromKeys(keys){let network=import_utxo_signer6.NETWORKS.bitcoinCash,p2pkhPayment=import_utxo_signer6.p2pkh(keys.publicKey,network);if(!p2pkhPayment.hash)throw new import_helpers33.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return import_utxo_signer6.encodeCashAddr({hash:p2pkhPayment.hash,prefix:import_utxo_signer6.CashAddrPrefix.MAINNET,type:import_utxo_signer6.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}var import_base7,import_helpers33,import_utxo_signer6,chain;var init_bitcoinCash=__esm(()=>{init_helpers2();init_utxo();init_validators();import_base7=require("@scure/base"),import_helpers33=require("@swapkit/helpers"),import_utxo_signer6=require("@swapkit/utxo-signer"),chain=import_helpers33.Chain.BitcoinCash});function getZcashNetwork(){let{isStagenet}=import_helpers35.SKConfig.get("envs");return isStagenet?import_utxo_signer7.ZCASH_TEST_NETWORK:import_utxo_signer7.ZCASH_NETWORK}function base58checkEncode(payload){return base58check2.encode(payload)}function createZcashSignerFromPhrase({phrase,derivationPath}){let seed=import_bip393.mnemonicToSeedSync(phrase),node=import_bip322.HDKey.fromMasterSeed(seed).derive(derivationPath);if(!node.privateKey||!node.publicKey)throw new import_helpers35.SwapKitError("toolbox_utxo_invalid_params");let{privateKey,publicKey}=node,pubKeyHash=import_utxo_signer7.utils.hash160(publicKey),{isStagenet}=import_helpers35.SKConfig.get("envs"),prefix=isStagenet?new Uint8Array([29,37]):new Uint8Array([28,184]),payload=new Uint8Array(prefix.length+pubKeyHash.length);payload.set(prefix,0),payload.set(pubKeyHash,prefix.length);let address=base58checkEncode(payload);return{getAddress:()=>Promise.resolve(address),signTransaction:(tx)=>{if(tx instanceof import_utxo_signer7.PCZT)return tx.signAllInputs(privateKey,publicKey,import_utxo_signer7.ZcashSigHash.ALL),tx.finalizeAllInputs(),Promise.resolve(tx.extract());return tx.signAllInputs(privateKey,publicKey,import_utxo_signer7.ZcashSigHash.ALL),Promise.resolve(tx)}}}function addInputsAndOutputs2({inputs,outputs,tx,sender,compiledMemo}){let network=getZcashNetwork();for(let utxo of inputs){let senderDecoded=import_utxo_signer7.Address(network).decode(sender),prevScript=import_utxo_signer7.OutScript.encode(senderDecoded);tx.addInput({index:utxo.index,script:prevScript,sequence:4294967295,txid:import_base8.hex.decode(utxo.hash),value:BigInt(utxo.value)})}for(let output of outputs){let address="address"in output&&output.address?output.address:sender,hasOutputScript=output.script;if(hasOutputScript&&!compiledMemo)continue;if(hasOutputScript&&compiledMemo)tx.addOutput({amount:0n,script:compiledMemo});else tx.addOutputAddress(address,BigInt(output.value),network)}return{inputs,tx}}async function createTransaction6(buildTxParams){let{assetValue,recipient,memo,feeRate,sender,fetchTxHex}=buildTxParams,compiledMemo=memo?compileMemo(memo):null,utxos=await getUtxoApi(import_helpers35.Chain.Zcash).getUtxos({address:sender,fetchTxHex:fetchTxHex!==!1}),targetOutputs=[{address:recipient,value:Number(assetValue.getBaseValue("string"))},...compiledMemo?[{script:compiledMemo,value:0}]:[]],{inputs,outputs}=accumulative({chain:import_helpers35.Chain.Zcash,changeAddress:sender,feeRate,inputs:utxos,outputs:targetOutputs});if(!(inputs&&outputs))throw new import_helpers35.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue,sender});let tx=import_utxo_signer7.createZcashTransaction({consensusBranchId:import_utxo_signer7.ZcashConsensusBranchId.NU6_1,expiryHeight:0,lockTime:0,version:4,versionGroupId:import_utxo_signer7.ZcashVersionGroupId.SAPLING}),{tx:mappedTx,inputs:mappedInputs}=addInputsAndOutputs2({compiledMemo,inputs,outputs,sender,tx});return{inputs:mappedInputs,outputs,tx:mappedTx}}function createZcashToolbox(toolboxParams){let signer=import_ts_pattern15.match(toolboxParams).with({signer:import_ts_pattern15.P.not(import_ts_pattern15.P.nullish)},({signer:signer2})=>signer2).with({phrase:import_ts_pattern15.P.string},({phrase,derivationPath,index=0})=>{let baseDerivationPath=derivationPath||import_helpers35.NetworkDerivationPath[import_helpers35.Chain.Zcash]||[44,133,0,0,0],updatedPath=import_helpers35.updateDerivationPath(baseDerivationPath,{index}),pathString=import_helpers35.derivationPathToString(updatedPath);return createZcashSignerFromPhrase({derivationPath:pathString,phrase})}).otherwise(()=>{return}),baseToolbox=createUTXOToolbox({chain:import_helpers35.Chain.Zcash,signer});async function transfer4({recipient,assetValue,feeOptionKey=import_helpers35.FeeOption.Fast,...rest}){let from=await signer?.getAddress();if(!(signer&&from))throw new import_helpers35.SwapKitError("toolbox_utxo_no_signer");let feeRate=rest.feeRate||(await baseToolbox.getFeeRates())[feeOptionKey],{tx}=await createTransaction6({...rest,assetValue,feeRate,recipient,sender:from}),txHex=(await signer.signTransaction(tx)).toHex();return baseToolbox.broadcastTx(txHex)}function createKeysForPath4({phrase,derivationPath="m/44'/133'/0'/0/0"}){let seed=import_bip393.mnemonicToSeedSync(phrase),node=import_bip322.HDKey.fromMasterSeed(seed).derive(derivationPath);if(!node.privateKey||!node.publicKey)throw new import_helpers35.SwapKitError("toolbox_utxo_invalid_params");return{privateKey:node.privateKey,publicKey:node.publicKey}}function getPrivateKeyFromMnemonic({phrase,derivationPath="m/44'/133'/0'/0/0"}){let keys=createKeysForPath4({derivationPath,phrase}),network=getZcashNetwork();return import_utxo_signer7.WIF(network).encode(keys.privateKey)}function getSignTransaction(signer2){return async function(tx){if(!signer2)throw new import_helpers35.SwapKitError("toolbox_utxo_no_signer");return await signer2.signTransaction(tx)}}function getSignAndBroadcastTransaction(signer2){return async function(tx){if(!signer2)throw new import_helpers35.SwapKitError("toolbox_utxo_no_signer");let signedTx=await signer2.signTransaction(tx);return baseToolbox.broadcastTx(signedTx.toHex())}}return{...baseToolbox,createKeysForPath:createKeysForPath4,createTransaction:createTransaction6,getPrivateKeyFromMnemonic,signAndBroadcastTransaction:getSignAndBroadcastTransaction(signer),signTransaction:getSignTransaction(signer),transfer:transfer4,validateAddress:validateZcashAddress}}var import_base8,import_bip322,import_bip393,import_helpers35,import_utxo_signer7,import_ts_pattern15,base58check2;var init_zcash=__esm(()=>{init_helpers2();init_utxo();init_validators();import_base8=require("@scure/base"),import_bip322=require("@scure/bip32"),import_bip393=require("@scure/bip39"),import_helpers35=require("@swapkit/helpers"),import_utxo_signer7=require("@swapkit/utxo-signer"),import_ts_pattern15=require("ts-pattern");base58check2=import_base8.createBase58check(import_utxo_signer7.utils.sha256)});function deriveAddressesFromXpub({xpub,chain:chain2,count,startIndex=0,accountIndex}){if(assertDerivationIndex("count",count),count<1)throw RangeError("count must be at least 1");assertDerivationIndex("startIndex",startIndex);let network=getNetworkForChain(chain2),accountKey=import_bip323.HDKey.fromExtendedKey(xpub,network.bip32),accountPath=getUTXOAccountPath({accountIndex,chain:chain2}),resolvedAccountIndex=getUTXOAccountIndexFromPath(accountPath),addresses=[];for(let change of[!1,!0]){let changeKey=accountKey.deriveChild(Number(change));for(let i=0;i<count;i++){let index=startIndex+i,childKey=changeKey.deriveChild(index);if(!childKey.publicKey)continue;let addressPath=getUTXOAddressPath({accountIndex,chain:chain2,change,index});addresses.push({accountIndex:resolvedAccountIndex,address:getAddressFromPublicKey({chain:chain2,network,publicKey:childKey.publicKey}),change,index,path:import_helpers37.derivationPathToString(addressPath),pubkey:import_base9.hex.encode(childKey.publicKey)})}}return addresses}var import_base9,import_bip323,import_helpers37;var init_xpubDerivation=__esm(()=>{init_hdWallet();init_utxo();import_base9=require("@scure/base"),import_bip323=require("@scure/bip32"),import_helpers37=require("@swapkit/helpers")});function getUtxoToolbox(chain2,params2){switch(chain2){case import_helpers38.Chain.BitcoinCash:return createBCHToolbox(params2||{});case import_helpers38.Chain.Zcash:return createZcashToolbox(params2);case import_helpers38.Chain.Bitcoin:case import_helpers38.Chain.Dogecoin:case import_helpers38.Chain.Litecoin:case import_helpers38.Chain.Dash:return createUTXOToolbox({chain:chain2,...params2});default:throw new import_helpers38.SwapKitError("toolbox_utxo_not_supported",{chain:chain2})}}var import_helpers38;var init_toolbox10=__esm(()=>{init_bitcoinCash();init_utxo();init_zcash();init_hdWallet();init_xpubDerivation();init_bitcoinCash();init_validators();import_helpers38=require("@swapkit/helpers")});var exports_utxo={};__export(exports_utxo,{validateZcashAddress:()=>validateZcashAddress,validateUtxoAddress:()=>validateUtxoAddress,validateBchAddress:()=>validateBchAddress,toLegacyAddress:()=>toLegacyAddress,toCashAddress:()=>toCashAddress,stripToCashAddress:()=>stripToCashAddress,stripPrefix:()=>stripPrefix,nonSegwitChains:()=>nonSegwitChains,isValidAddress:()=>isValidAddress2,getUtxoToolbox:()=>getUtxoToolbox,getUtxoNetwork:()=>getUtxoNetwork,getUtxoApi:()=>getUtxoApi,getUTXOAddressValidator:()=>getUTXOAddressValidator,getUTXOAddressPath:()=>getUTXOAddressPath,getUTXOAccountPath:()=>getUTXOAccountPath,getUTXOAccountIndexFromPath:()=>getUTXOAccountIndexFromPath,getScriptTypeForAddress:()=>getScriptTypeForAddress,getOutputSize:()=>getOutputSize,getNetworkForChain:()=>getNetworkForChain,getInputSize:()=>getInputSize,getDustThreshold:()=>getDustThreshold,detectAddressNetwork:()=>detectAddressNetwork,deriveAddressesFromXpub:()=>deriveAddressesFromXpub,createZcashToolbox:()=>createZcashToolbox,createUTXOToolbox:()=>createUTXOToolbox,createHDWalletHelpers:()=>createHDWalletHelpers,createCustomUtxoApi:()=>createCustomUtxoApi,createBCHToolbox:()=>createBCHToolbox,compileMemo:()=>compileMemo,calculateTxSize:()=>calculateTxSize,assertDerivationIndex:()=>assertDerivationIndex,addressFromKeysGetter:()=>addressFromKeysGetter,addInputsAndOutputs:()=>addInputsAndOutputs,accumulative:()=>accumulative,UtxoNetwork:()=>UtxoNetwork,UTXOScriptType:()=>UTXOScriptType,TX_OVERHEAD:()=>TX_OVERHEAD,SEGWIT_MARKER_FLAG_WEIGHT:()=>SEGWIT_MARKER_FLAG_WEIGHT,OutputSizes:()=>OutputSizes,OP_RETURN_OVERHEAD:()=>OP_RETURN_OVERHEAD,MIN_TX_FEE:()=>MIN_TX_FEE,InputSizes:()=>InputSizes});module.exports=__toCommonJS(exports_utxo);var init_utxo2=__esm(()=>{init_utxo();init_hdWallet();init_helpers2();init_toolbox10();init_bitcoinCash();init_zcash()});function validateNearAddress(address){return address.length>=2&&address.length<=64&&/^(([a-z\d]+[-_])*[a-z\d]+\.)*([a-z\d]+[-_])*[a-z\d]+$/.test(address)}async function getNearSignerFromPhrase(params2){let{parseSeedPhrase}=await import("near-seed-phrase"),{KeyPair}=await import("@near-js/crypto"),index=params2.index||0,derivationPath=params2.derivationPath?import_helpers39.derivationPathToString(params2.derivationPath.slice(0,3)):`m/44'/397'/${index}'`,{secretKey}=parseSeedPhrase(params2.phrase,derivationPath),keyPair=KeyPair.fromString(secretKey);return createNearSignerFromKeyPair(keyPair)}async function getNearSignerFromPrivateKey(privateKey){let{KeyPair}=await import("@near-js/crypto"),keyPair=KeyPair.fromString(privateKey);return createNearSignerFromKeyPair(keyPair)}function createNearSignerFromKeyPair(keyPair){return new SKKeyPairSigner(keyPair)}async function getFullAccessPublicKey(provider,accountId){let fullAccessKey=(await provider.query({account_id:accountId,finality:"final",request_type:"view_access_key_list"})).keys.find((key)=>key.access_key.permission==="FullAccess");if(!fullAccessKey)throw new import_helpers39.SwapKitError("toolbox_near_no_public_key_found");let{PublicKey:PublicKey2}=await import("@near-js/crypto"),publicKey=PublicKey2.fromString(fullAccessKey.public_key);return{nonce:fullAccessKey.access_key.nonce||0,publicKey}}var import_signers,import_helpers39,SKKeyPairSigner;var init_core=__esm(()=>{import_signers=require("@near-js/signers"),import_helpers39=require("@swapkit/helpers");SKKeyPairSigner=class SKKeyPairSigner extends import_signers.KeyPairSigner{#keyPair;constructor(keyPair){super(keyPair);this.#keyPair=keyPair}getAddress(){let publicKey=this.#keyPair.getPublicKey(),hexAddress=Buffer.from(publicKey.data).toString("hex");return Promise.resolve(hexAddress)}}});function isSimpleTransfer(params2){return"recipient"in params2&&"amount"in params2&&!("contractId"in params2)}function isContractCall(params2){return"contractId"in params2&&"methodName"in params2}function isBatchTransaction(params2){return"actions"in params2}function isAccountCreation(params2){return"newAccountId"in params2}function isContractDeployment(params2){return"contractCode"in params2}function isCustomEstimator(params2){return"customEstimator"in params2}function estimateBatchGas(actions){let totalGas=0;for(let action of actions)switch(action.enum){case"transfer":totalGas+=Number(GAS_COSTS.SIMPLE_TRANSFER);break;case"functionCall":totalGas+=Number(GAS_COSTS.CONTRACT_CALL);break;case"createAccount":totalGas+=Number(GAS_COSTS.ACCOUNT_CREATION);break;case"deployContract":totalGas+=Number(GAS_COSTS.CONTRACT_DEPLOYMENT);break;case"addKey":totalGas+=Number(GAS_COSTS.ACCESS_KEY_ADDITION);break;case"deleteKey":totalGas+=Number(GAS_COSTS.ACCESS_KEY_DELETION);break;case"stake":totalGas+=Number(GAS_COSTS.STAKE);break;default:totalGas+=Number(GAS_COSTS.CONTRACT_CALL)}return totalGas.toString()}function getContractMethodGas(methodName){if(methodName==="ft_transfer"||methodName==="ft_transfer_call")return GAS_COSTS.TOKEN_TRANSFER;if(methodName==="storage_deposit")return GAS_COSTS.STORAGE_DEPOSIT;return GAS_COSTS.CONTRACT_CALL}function tgasToGas(tgas){return(BigInt(tgas)*BigInt(1000000000000)).toString()}function gasToTGas(gas){return(BigInt(gas)/BigInt(1000000000000)).toString()}var GAS_COSTS;var init_gasEstimation=__esm(()=>{GAS_COSTS={ACCESS_KEY_ADDITION:"5",ACCESS_KEY_DELETION:"5",ACCOUNT_CREATION:"30",CONTRACT_CALL:"150",CONTRACT_DEPLOYMENT:"200",SIMPLE_TRANSFER:"1",STAKE:"10",STORAGE_DEPOSIT:"150",TOKEN_TRANSFER:"150"}});async function createNearContract({account,contractId,viewMethods,changeMethods}){let{Contract:Contract3}=await import("@near-js/accounts");return new Contract3(account,contractId,{changeMethods,useLocalViewExecution:!0,viewMethods})}function getNearToolbox(toolboxParams){let cachedSigner;async function getSigner(){if(cachedSigner)return cachedSigner;return cachedSigner=await import_ts_pattern16.match(toolboxParams).with({phrase:import_ts_pattern16.P.string},async(params2)=>{return await getNearSignerFromPhrase(params2)}).with({signer:import_ts_pattern16.P.any},({signer})=>signer).otherwise(()=>{return}),cachedSigner}async function getNearProvider(){let url=await import_helpers40.getRPCUrl(import_helpers40.Chain.Near);return new import_providers.JsonRpcProvider({url})}async function getAccount2(address){let{Account}=await import("@near-js/accounts"),provider=await getNearProvider(),signer=await getSigner(),accountAddress=address||await getAddress3();return new Account(accountAddress,provider,signer)}async function getAddress3(){let signer=await getSigner();if(!signer)throw new import_helpers40.SwapKitError("toolbox_near_no_signer");return await signer.getAddress()}async function checkStorageBalance(params2){return(await createContract2({changeMethods:[],contractId:params2.contractId,viewMethods:["storage_balance_of"]})).storage_balance_of({account_id:params2.accountId})}async function transferTokenWithStorageDeposit(params2){let actions=[await createAction({args:{account_id:params2.recipient},attachedDeposit:"1250000000000000000000",gas:"150000000000000",methodName:"storage_deposit"}),await createAction({args:{amount:params2.assetValue.getBaseValue("string"),memo:params2.memo||null,receiver_id:params2.recipient},attachedDeposit:"1",gas:"150000000000000",methodName:"ft_transfer"})];return executeBatchTransaction({actions,receiverId:params2.contractId})}async function transfer4(params2){if(!await getSigner())throw new import_helpers40.SwapKitError("toolbox_near_no_signer");let{assetValue,recipient,memo}=params2,sender=await getAddress3();if(!assetValue.isGasAsset&&assetValue.address){if(!await checkStorageBalance({accountId:recipient,contractId:assetValue.address}))return transferTokenWithStorageDeposit({assetValue,contractId:assetValue.address,memo,recipient})}let transaction=await createTransaction7({...params2,sender});return signAndBroadcastTransaction(transaction)}async function createTransaction7({recipient,assetValue,memo,attachedDeposit,sender,functionCall}){let provider=await getNearProvider();if(!validateNearAddress(recipient))throw new import_helpers40.SwapKitError("toolbox_near_invalid_address",{recipient});if(!validateNearAddress(sender))throw new import_helpers40.SwapKitError("toolbox_near_invalid_address",{sender});if(functionCall)return createContractFunctionCall({...functionCall,sender});if(!assetValue.isGasAsset){let contractId=assetValue.address;if(!contractId)throw new import_helpers40.SwapKitError("toolbox_near_missing_contract_address");return createContractFunctionCall({args:{amount:assetValue.getBaseValue("string"),memo:memo||null,receiver_id:recipient},attachedDeposit:attachedDeposit||"1",contractId,gas:"250000000000000",methodName:"ft_transfer",sender})}let{publicKey,nonce}=await getFullAccessPublicKey(provider,sender),baseAmount=assetValue.getBaseValue("bigint"),{actionCreators,createTransaction:createTransaction8}=await import("@near-js/transactions"),{baseDecode}=await import("@near-js/utils"),txActions=[actionCreators.transfer(baseAmount)];if(memo&&attachedDeposit)txActions.push(actionCreators.functionCall("memo",{memo},BigInt("250000000000000"),BigInt(attachedDeposit)));let block=await provider.block({finality:"final"}),blockHash=baseDecode(block.header.hash);return createTransaction8(sender,publicKey,recipient,nonce+1,txActions,blockHash)}function serializeTransaction(transaction){let serializedTx=transaction.encode();return Buffer.from(serializedTx).toString("base64")}async function createContractFunctionCall({args,attachedDeposit,contractId,gas,methodName,sender:accountId}){let provider=await getNearProvider(),{publicKey,nonce}=await getFullAccessPublicKey(provider,accountId),{createTransaction:createTransaction8,actionCreators}=await import("@near-js/transactions"),{baseDecode}=await import("@near-js/utils"),block=await provider.block({finality:"final"}),blockHash=baseDecode(block.header.hash),actions=[actionCreators.functionCall(methodName,Buffer.from(JSON.stringify(args)),BigInt(gas),BigInt(attachedDeposit))];return createTransaction8(accountId,publicKey,contractId,nonce+1,actions,blockHash)}async function createAction(params2){let{actionCreators}=await import("@near-js/transactions");return actionCreators.functionCall(params2.methodName,Buffer.from(JSON.stringify(params2.args)),BigInt(params2.gas),BigInt(params2.attachedDeposit))}async function signTransaction2(transaction){let signer=await getSigner();if(!signer)throw new import_helpers40.SwapKitError("toolbox_near_no_signer");let[_hash,signedTx]=await signer.signTransaction(transaction);return signedTx}async function broadcastTransaction3(signedTransaction){return(await(await getNearProvider()).sendTransaction(signedTransaction)).transaction.hash}async function signAndBroadcastTransaction(transaction){let signer=await getSigner();if(!signer)throw new import_helpers40.SwapKitError("toolbox_near_no_signer");try{let signedTx=await signTransaction2(transaction);return await broadcastTransaction3(signedTx)}catch{return signer.signAndSendTransactions?.({transactions:[transaction]})}}async function estimateTransactionFee4(params2){let signer=await getSigner();if("assetValue"in params2){let gasPrice=await getCurrentGasPrice();try{let rpcUrl=await import_helpers40.getRPCUrl(import_helpers40.Chain.Near),response=await fetch(rpcUrl,{body:JSON.stringify({id:"dontcare",jsonrpc:"2.0",method:"EXPERIMENTAL_protocol_config",params:{finality:"final"}}),headers:{"Content-Type":"application/json"},method:"POST"}),{result:{runtime_config}}=await response.json(),{execution:receiptExecution,send_sir:receiptSendSir}=runtime_config.transaction_costs.action_receipt_creation_config,{execution:creationExecution,send_sir:creationSendSir}=runtime_config.transaction_costs.action_creation_config.transfer_cost,transferGas=BigInt(creationSendSir)+BigInt(creationExecution),receiptGas=BigInt(receiptSendSir)+BigInt(receiptExecution),totalCost=(transferGas+receiptGas)*BigInt(gasPrice.toString());return import_helpers40.AssetValue.from({chain:import_helpers40.Chain.Near,value:totalCost})}catch(error){console.debug("NEAR fee estimation (protocol config) failed, using fallback:",error);let fallbackTransferGas=BigInt("115123062500"),fallbackReceiptGas=BigInt("108059500000"),totalCost=(fallbackTransferGas+fallbackReceiptGas)*BigInt(gasPrice.toString());return import_helpers40.AssetValue.from({chain:import_helpers40.Chain.Near,value:totalCost})}}let account=signer?await getAccount2():void 0;return estimateGasLimit(params2,account)}async function getCurrentGasPrice(){let provider=await getNearProvider();try{return await provider.query({account_id:"system",args_base64:"",finality:"final",method_name:"gas_price",request_type:"call_function"})}catch{return"100000000"}}async function createSubAccount(subAccountId,publicKey,initialBalance){if(!await getSigner())throw new import_helpers40.SwapKitError("toolbox_near_no_signer");let account=await getAccount2(),{formatNearAmount}=await import("@near-js/utils"),{PublicKey:PublicKey2}=await import("@near-js/crypto"),balanceInYocto=formatNearAmount(initialBalance)||"0";return(await account.createAccount(subAccountId,PublicKey2.fromString(publicKey),BigInt(balanceInYocto))).transaction.hash}async function callFunction(params2){let signer=await getSigner();try{if(!signer)throw new import_helpers40.SwapKitError("toolbox_near_no_signer");let{actionCreators}=await import("@near-js/transactions"),{contractId,methodName,args,deposit}=params2,account=await getAccount2(),estimatedGas=await estimateGasLimit({args:args||{},contractId,methodName}),functionAction=actionCreators.functionCall(methodName,args||{},estimatedGas.getBaseValue("bigint"),BigInt(deposit||"1"));return(await account.signAndSendTransaction({actions:[functionAction],receiverId:contractId})).transaction_outcome.id}catch(error){throw new import_helpers40.SwapKitError("toolbox_near_transfer_failed",{error})}}async function createContract2(contractInterface){let account=await getAccount2();return createNearContract({account,changeMethods:contractInterface.changeMethods,contractId:contractInterface.contractId,viewMethods:contractInterface.viewMethods})}async function executeBatchTransaction(batch){if(!await getSigner())throw new import_helpers40.SwapKitError("toolbox_near_no_signer");if(batch.actions.length===0)throw new import_helpers40.SwapKitError("toolbox_near_empty_batch");return(await(await getAccount2()).signAndSendTransaction({actions:batch.actions,receiverId:batch.receiverId})).transaction.hash}async function estimateGasLimit(params2,account){let gasInTGas=await import_ts_pattern16.match(params2).when(isSimpleTransfer,()=>GAS_COSTS.SIMPLE_TRANSFER).when(isContractCall,(p)=>getContractMethodGas(p.methodName)).when(isBatchTransaction,(p)=>estimateBatchGas(p.actions)).when(isAccountCreation,()=>GAS_COSTS.ACCOUNT_CREATION).when(isContractDeployment,()=>GAS_COSTS.CONTRACT_DEPLOYMENT).when(isCustomEstimator,(p)=>{if(!account)throw new import_helpers40.SwapKitError("toolbox_near_no_account");return p.customEstimator(account)}).otherwise(()=>{throw new import_helpers40.SwapKitError("toolbox_near_invalid_gas_params")}),gasInUnits=BigInt(gasInTGas)*BigInt(1000000000000);return import_helpers40.AssetValue.from({chain:import_helpers40.Chain.Near,value:gasInUnits})}function estimateGas(params2,account){return console.warn("NEAR toolbox: estimateGas is deprecated, use estimateGasLimit instead"),estimateGasLimit(params2,account)}async function getGasPrice(){let provider=await getNearProvider();try{return(await provider.gasPrice(null)).gas_price||"100000000"}catch{return"100000000"}}async function getPublicKey2(){let signer=await getSigner();return signer?(await signer.getPublicKey()).toString():""}return{broadcastTransaction:broadcastTransaction3,callFunction,createAction,createContract:createContract2,createContractFunctionCall,createSubAccount,createTransaction:createTransaction7,estimateGas,estimateGasLimit,estimateTransactionFee:estimateTransactionFee4,executeBatchTransaction,getAddress:getAddress3,getBalance:getBalance(import_helpers40.Chain.Near),getGasPrice,getNearProvider,getPublicKey:getPublicKey2,getSignerFromPhrase:getNearSignerFromPhrase,getSignerFromPrivateKey:getNearSignerFromPrivateKey,serializeTransaction,signAndBroadcastTransaction,signTransaction:signTransaction2,transfer:transfer4,validateAddress:validateNearAddress}}var import_providers,import_helpers40,import_ts_pattern16;var init_toolbox11=__esm(()=>{init_utils();init_core();init_gasEstimation();import_providers=require("@near-js/providers"),import_helpers40=require("@swapkit/helpers"),import_ts_pattern16=require("ts-pattern")});var init_types3=__esm(()=>{init_toolbox11()});var exports_near={};__export(exports_near,{validateNearAddress:()=>validateNearAddress,tgasToGas:()=>tgasToGas,isSimpleTransfer:()=>isSimpleTransfer,isCustomEstimator:()=>isCustomEstimator,isContractDeployment:()=>isContractDeployment,isContractCall:()=>isContractCall,isBatchTransaction:()=>isBatchTransaction,isAccountCreation:()=>isAccountCreation,getNearToolbox:()=>getNearToolbox,getNearSignerFromPrivateKey:()=>getNearSignerFromPrivateKey,getNearSignerFromPhrase:()=>getNearSignerFromPhrase,getFullAccessPublicKey:()=>getFullAccessPublicKey,getContractMethodGas:()=>getContractMethodGas,gasToTGas:()=>gasToTGas,estimateBatchGas:()=>estimateBatchGas,createNearContract:()=>createNearContract,GAS_COSTS:()=>GAS_COSTS});module.exports=__toCommonJS(exports_near);var init_near=__esm(()=>{init_core();init_gasEstimation();init_toolbox11();init_types3()});var exports_radix={};__export(exports_radix,{validateRadixAddress:()=>validateRadixAddress,getRadixToolbox:()=>getRadixToolbox});module.exports=__toCommonJS(exports_radix);function validateRadixAddress(address){return address.startsWith("account_rdx1")&&address.length===66}function getBalance2({networkApi}){return async function(address){let fungibleResources=await fetchFungibleResources({address,networkApi}),fungibleBalances=await convertResourcesToBalances({networkApi,resources:fungibleResources});if(!fungibleBalances.some((asset)=>asset.isGasAsset))return[import_helpers41.AssetValue.from({chain:import_helpers41.Chain.Radix}),...fungibleBalances];return fungibleBalances}}async function fetchFungibleResources({address,networkApi}){let hasNextPage=!0,nextCursor,fungibleResources=[],stateVersion=await currentStateVersion(networkApi);while(hasNextPage){let stateEntityFungiblesPageRequest={address,at_ledger_state:{state_version:stateVersion},cursor:nextCursor,limit_per_page:100},stateEntityFungiblesPageResponse=await networkApi.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest});if(fungibleResources=fungibleResources.concat(stateEntityFungiblesPageResponse.items),stateEntityFungiblesPageResponse.next_cursor)nextCursor=stateEntityFungiblesPageResponse.next_cursor;else hasNextPage=!1}return fungibleResources}async function convertResourcesToBalances({resources,networkApi}){let balances=[],BATCH_SIZE=50,resourceBatches=[];for(let i=0;i<resources.length;i+=50)resourceBatches.push(resources.slice(i,i+50));for(let batch of resourceBatches){let addresses=batch.map((item)=>item.resource_address),response=await networkApi.state.getEntityDetailsVaultAggregated(addresses),divisibilities=new Map;for(let result of response)if(result.details!==void 0){let metaDataSymbol=result.metadata?.items.find((item)=>item.key==="symbol"),symbol=metaDataSymbol?.value.typed.type==="String"?metaDataSymbol.value.typed.value:"?";if(result.details.type==="FungibleResource")divisibilities.set(result.address,{decimals:result.details.divisibility,symbol})}for(let item of batch)if(item.aggregation_level==="Global"){let assetInfo=divisibilities.get(item.resource_address)||{decimals:0,symbol:"?"},balance=import_helpers41.AssetValue.from({asset:assetInfo.symbol!==import_helpers41.Chain.Radix?`${import_helpers41.Chain.Radix}.${assetInfo.symbol}-${item.resource_address}`:"XRD.XRD",value:item.amount});balances.push(balance)}}return balances}async function currentStateVersion(networkApi){return(await networkApi.status.getCurrent()).ledger_state.state_version}function getRadixToolbox({dappConfig}={}){let config=dappConfig||import_helpers41.SKConfig.get("integrations").radix,radixToolkit=import_radix_dapp_toolkit.RadixDappToolkit({...config,networkId:config.network?.networkId||1}),networkApi=import_babylon_gateway_api_sdk.GatewayApiClient.initialize(radixToolkit.gatewayApi.clientConfig);return{getAddress:()=>"",getBalance:getBalance2({networkApi}),networkApi,signAndBroadcast:()=>{throw new import_helpers41.SwapKitError("toolbox_radix_method_not_supported",{method:"signAndBroadcast"})},validateAddress:validateRadixAddress}}var import_babylon_gateway_api_sdk,import_radix_dapp_toolkit,import_helpers41;var init_radix=__esm(()=>{import_babylon_gateway_api_sdk=require("@radixdlt/babylon-gateway-api-sdk"),import_radix_dapp_toolkit=require("@radixdlt/radix-dapp-toolkit"),import_helpers41=require("@swapkit/helpers")});function isHexCurrency(code){return/^[0-9A-Fa-f]{40}$/.test(code)}function currencyToHex(currency){if(isHexCurrency(currency))return currency.toUpperCase();if(currency.length<=3){let asciiHex=Buffer.from(currency.padEnd(3,"\x00")).toString("hex");return`00${"0".repeat(22)}${asciiHex}${"0".repeat(10)}`.toUpperCase()}let hex5=Buffer.from(currency).toString("hex").toUpperCase();if(hex5.length>40)throw new import_helpers42.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:currency,reason:"Currency exceeds maximum length (20 bytes)"}});return hex5.padEnd(40,"0")}function hexToCurrency(hex5){if(!isHexCurrency(hex5))return hex5;if(hex5.toUpperCase().startsWith("00")){let asciiHex=hex5.slice(24,30);try{let decoded=Buffer.from(asciiHex,"hex").toString("ascii").replace(/\0/g,"");if(/^[A-Za-z0-9?!@#$%^&*<>(){}[\]|]+$/.test(decoded)&&decoded.length>0)return decoded}catch{}return hex5.toUpperCase()}try{let trimmedHex=hex5.replace(/0+$/,""),evenHex=trimmedHex.length%2===0?trimmedHex:`${trimmedHex}0`,decoded=Buffer.from(evenHex,"hex").toString("utf8");if(/^[\x20-\x7E]+$/.test(decoded))return decoded}catch{}return hex5.toUpperCase()}function normalizeCurrency(code){if(isHexCurrency(code))return code.toUpperCase();if(code.length<=3)return code;return currencyToHex(code)}var import_helpers42;var init_currency=__esm(()=>{import_helpers42=require("@swapkit/helpers")});async function getXrplTokenInfo(currency,issuer){let normalized=normalizeCurrency(currency),knownToken=XRPL_KNOWN_TOKENS.find((t)=>normalizeCurrency(t.currency)===normalized&&t.issuer===issuer);if(knownToken)return knownToken;try{let response=await import_helpers43.RequestClient.get(`https://api.xrplmeta.org/token/${currency}:${issuer}`);if(response)return{currency,decimals:15,description:response.desc,domain:response.domain,icon:response.icon,issuer,name:response.name,verified:response.self_assessment?.is_regulated||response.self_assessment?.is_licensed}}catch(error){import_helpers43.warnOnce({condition:!0,id:`xrpl_token_lookup_${currency}_${issuer}`,warning:`Failed to fetch XRPL token info for ${currency}:${issuer}: ${error}`})}return{currency,decimals:15,issuer,verified:!1}}function getKnownTokensByIssuer(issuer){return XRPL_KNOWN_TOKENS.filter((t)=>t.issuer===issuer)}function isKnownToken(currency,issuer){let normalized=normalizeCurrency(currency);return XRPL_KNOWN_TOKENS.some((t)=>normalizeCurrency(t.currency)===normalized&&t.issuer===issuer)}var import_helpers43,XRPL_KNOWN_TOKENS;var init_tokens=__esm(()=>{init_currency();import_helpers43=require("@swapkit/helpers"),XRPL_KNOWN_TOKENS=[{currency:"USD",decimals:15,domain:"circle.com",issuer:"rcEGREd8NmkKRE8GE424sksyt1tJVFZwu",name:"Circle USDC",verified:!0},{currency:"RLUSD",decimals:15,domain:"ripple.com",issuer:"rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De",name:"Ripple USD",verified:!0},{currency:"USD",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp USD",verified:!0},{currency:"BTC",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp BTC",verified:!0},{currency:"EUR",decimals:15,domain:"bitstamp.net",issuer:"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",name:"Bitstamp EUR",verified:!0},{currency:"USD",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub USD",verified:!0},{currency:"EUR",decimals:15,domain:"gatehub.net",issuer:"rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",name:"GateHub EUR",verified:!0},{currency:"BTC",decimals:15,domain:"gatehub.net",issuer:"rchGBxcD1A1C2tdxF6papQYZ8kjRKMYcL",name:"GateHub BTC",verified:!0},{currency:"ETH",decimals:15,domain:"gatehub.net",issuer:"rcA8X3TVMST1n3CJeAdGk1RdRCHii7N2h",name:"GateHub ETH",verified:!0},{currency:"SOLO",decimals:15,domain:"sologenic.com",issuer:"rsoLo2S1kiGeCcn6hCUXVrCpGMWLrRrLZz",name:"Sologenic",verified:!0}]});var exports_ripple={};__export(exports_ripple,{validateRippleAddress:()=>validateRippleAddress,parseXrplTokenIdentifier:()=>parseXrplTokenIdentifier,normalizeCurrency:()=>normalizeCurrency,isKnownToken:()=>isKnownToken,isHexCurrency:()=>isHexCurrency,hexToCurrency:()=>hexToCurrency,hashes:()=>import_xrpl2.hashes,getXrplTokenInfo:()=>getXrplTokenInfo,getRippleToolbox:()=>getRippleToolbox,getKnownTokensByIssuer:()=>getKnownTokensByIssuer,formatXrplTokenIdentifier:()=>formatXrplTokenIdentifier,currencyToHex:()=>currencyToHex,XRPL_TOKEN_ERROR_CODES:()=>XRPL_TOKEN_ERROR_CODES,XRPL_KNOWN_TOKENS:()=>XRPL_KNOWN_TOKENS});module.exports=__toCommonJS(exports_ripple);function parseXrplTokenIdentifier(identifier){let result=identifier.match(/^XRP\.([A-Fa-f0-9]{40}|[\x20-\x7E]{1,20})-([a-zA-Z0-9]{25,34})$/);if(!result?.[1]||!result?.[2])return null;if(!import_xrpl.isValidAddress(result[2]))return null;return{currency:result[1],issuer:result[2]}}function formatXrplTokenIdentifier(currency2,issuer){return`${import_helpers44.Chain.Ripple}.${currency2}-${issuer}`}function buildTransactionAmount(assetValue){if(assetValue.isGasAsset)return import_xrpl.xrpToDrops(assetValue.getValue("string"));let tokenInfo=parseXrplTokenIdentifier(assetValue.toString());if(!tokenInfo)throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:assetValue.toString()}});return{currency:tokenInfo.currency,issuer:tokenInfo.issuer,value:assetValue.getValue("string")}}function createSigner(phrase){let wallet=import_xrpl.Wallet.fromMnemonic(phrase);return{getAddress:()=>Promise.resolve(wallet.address),signTransaction:(tx)=>Promise.resolve(wallet.sign(tx))}}function validateRippleAddress(address){return import_xrpl.isValidAddress(address)}function getRippleToolbox(params2={}){let signer=import_ts_pattern17.match(params2).with({phrase:import_ts_pattern17.P.string},({phrase})=>createSigner(phrase)).with({signer:import_ts_pattern17.P.any},({signer:signer2})=>signer2).otherwise(()=>{return}),client;async function createRippleClient(){let rpcUrl=await import_helpers44.getRPCUrl(import_helpers44.Chain.Ripple);if(!rpcUrl)throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_rpc_not_configured",info:{chain:import_helpers44.Chain.Ripple}});let client2=new import_xrpl.Client(rpcUrl);return await client2.connect(),client2}async function getClient(){if(client){let clientPromise=await client.catch(()=>null);if(clientPromise?.isConnected())return clientPromise}return client=createRippleClient(),client}let getAddress3=()=>{if(!signer)throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return signer.getAddress()},getBalance3=async(checkAddress)=>{let address=checkAddress||await getAddress3(),{baseDecimal:baseDecimal2}=import_helpers44.getChainConfig(import_helpers44.Chain.Ripple),client2=await getClient();try{let[accountInfo,accountLines]=await Promise.all([client2.request({account:address,command:"account_info"}),client2.request({account:address,command:"account_lines"})]),xrpBalance=accountInfo.result.account_data.Balance,balances=[import_helpers44.AssetValue.from({chain:import_helpers44.Chain.Ripple,fromBaseDecimal:baseDecimal2,value:xrpBalance})];for(let line of accountLines.result.lines){let tokenIdentifier=formatXrplTokenIdentifier(line.currency,line.account);if(Number.parseFloat(line.balance)!==0)balances.push(import_helpers44.AssetValue.from({asset:tokenIdentifier,asyncTokenLookup:!1,value:line.balance}))}return balances}catch(error){if(error.data?.error_code===RIPPLE_ERROR_CODES.ACCOUNT_NOT_FOUND)return[import_helpers44.AssetValue.from({chain:import_helpers44.Chain.Ripple,value:0})];throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_get_balance_error",info:{address,error}})}},estimateTransactionFee4=async()=>{let{baseDecimal:baseDecimal2}=import_helpers44.getChainConfig(import_helpers44.Chain.Ripple),feeDrops=(await(await getClient()).request({command:"fee"})).result.drops.open_ledger_fee;return import_helpers44.AssetValue.from({chain:import_helpers44.Chain.Ripple,fromBaseDecimal:baseDecimal2,value:feeDrops})};async function getTrustLines(address){let targetAddress=address||await getAddress3(),client2=await getClient();try{return(await client2.request({account:targetAddress,command:"account_lines"})).result.lines.map((line)=>({account:line.account,authorized:line.authorized??!1,balance:line.balance,currency:line.currency,freeze:line.freeze??!1,freezePeer:line.freeze_peer??!1,limit:line.limit,limitPeer:line.limit_peer,noRipple:line.no_ripple??!1,noRipplePeer:line.no_ripple_peer??!1,peerAuthorized:line.peer_authorized??!1,qualityIn:line.quality_in??0,qualityOut:line.quality_out??0}))}catch(error){if(error.data?.error_code===RIPPLE_ERROR_CODES.ACCOUNT_NOT_FOUND)return[];throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_get_trust_lines_error",info:{address:targetAddress,error}})}}async function hasTrustLine({address,currency:currency2,issuer}){let trustLines=await getTrustLines(address),normalizedInput=currencyToHex(currency2);return trustLines.some((line)=>{return currencyToHex(line.currency)===normalizedInput&&line.account===issuer})}async function setTrustLine({currency:currency2,issuer,limit,sender}){let senderAddress=sender||await getAddress3();if(!validateRippleAddress(issuer))throw new import_helpers44.SwapKitError({errorKey:"core_transaction_invalid_recipient_address",info:{address:issuer}});let limitValue=Number.parseFloat(limit);if(Number.isNaN(limitValue)||limitValue<0)throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_invalid_trust_line_limit",info:{limit}});let client2=await getClient(),trustSetTx={Account:senderAddress,LimitAmount:{currency:currency2,issuer,value:limit},TransactionType:"TrustSet"};return client2.autofill(trustSetTx)}async function createTransaction7({assetValue,recipient,memo,sender,destinationTag,extendBySeconds=150}){if(!validateRippleAddress(recipient))throw new import_helpers44.SwapKitError({errorKey:"core_transaction_invalid_recipient_address"});let senderAddress=sender||await getAddress3();if(assetValue.chain!==import_helpers44.Chain.Ripple)throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_asset_not_supported",info:{asset:assetValue.toString()}});let amount=buildTransactionAmount(assetValue),transaction={Account:senderAddress,Amount:amount,Destination:recipient,TransactionType:"Payment",...destinationTag!==void 0&&{DestinationTag:destinationTag}};if(memo)transaction.Memos=[{Memo:{MemoData:Buffer.from(memo).toString("hex")}}];let preparedTx=await(await getClient()).autofill(transaction);if(preparedTx.LastLedgerSequence&&extendBySeconds>0)preparedTx.LastLedgerSequence+=Math.ceil(extendBySeconds/4);return preparedTx}function signTransaction2(tx){if(!signer)throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});return signer.signTransaction(tx)}async function broadcastTransaction3(signedTxHex){let submitResult=await(await getClient()).submitAndWait(signedTxHex),{result}=submitResult;if(result.validated)return result.hash;let txResult=result.meta?.TransactionResult,reason=import_ts_pattern17.match(txResult).with(XRPL_TOKEN_ERROR_CODES.tecNO_LINE,()=>"No trust line exists for this token").with(XRPL_TOKEN_ERROR_CODES.tecPATH_DRY,()=>"Payment path could not deliver funds").with(XRPL_TOKEN_ERROR_CODES.tecFROZEN,()=>"Token is frozen").otherwise(()=>{return});throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:import_helpers44.Chain.Ripple,...reason?{reason}:{txResult}}})}let signAndBroadcastTransaction=async(tx)=>{try{let signedTx=await signTransaction2(tx);return broadcastTransaction3(signedTx.tx_blob)}catch(error){if(error instanceof import_helpers44.SwapKitError)throw error;throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_broadcast_error",info:{chain:import_helpers44.Chain.Ripple,error}})}};async function transfer4(params3){if(!signer)throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let sender=await signer.getAddress(),tx=await createTransaction7({...params3,sender}),signedTx=await signTransaction2(tx);return broadcastTransaction3(signedTx.tx_blob)}async function setTrustLineAndBroadcast(params3){if(!signer)throw new import_helpers44.SwapKitError({errorKey:"toolbox_ripple_signer_not_found"});let sender=await signer.getAddress(),tx=await setTrustLine({...params3,sender}),signedTx=await signTransaction2(tx);return broadcastTransaction3(signedTx.tx_blob)}function disconnect(){let pendingClient=client;if(client=null,pendingClient)pendingClient.then((client2)=>{if(client2?.isConnected())return client2.disconnect();return}).catch((e)=>{console.warn("XRPL Cleanup failed silently:",e)})}return{broadcastTransaction:broadcastTransaction3,createSigner,createTransaction:createTransaction7,disconnect,estimateTransactionFee:estimateTransactionFee4,getAddress:getAddress3,getBalance:getBalance3,getTrustLines,hasTrustLine,setTrustLine,setTrustLineAndBroadcast,signAndBroadcastTransaction,signTransaction:signTransaction2,transfer:transfer4,validateAddress:validateRippleAddress}}var import_helpers44,import_ts_pattern17,import_xrpl,import_xrpl2,RIPPLE_ERROR_CODES,XRPL_TOKEN_ERROR_CODES;var init_ripple=__esm(()=>{init_currency();import_helpers44=require("@swapkit/helpers"),import_ts_pattern17=require("ts-pattern"),import_xrpl=require("xrpl");init_currency();init_tokens();import_xrpl2=require("xrpl"),RIPPLE_ERROR_CODES={ACCOUNT_NOT_FOUND:19},XRPL_TOKEN_ERROR_CODES={tecFROZEN:"tecFROZEN",tecNO_AUTH:"tecNO_AUTH",tecNO_DST:"tecNO_DST",tecNO_LINE:"tecNO_LINE",tecPATH_DRY:"tecPATH_DRY",tecUNFUNDED_OFFER:"tecUNFUNDED_OFFER"}});function decodeVarint(bytes,offset){let result=0n,shift=0n,pos=offset;while(pos<bytes.length&&pos-offset<10){let byte=bytes[pos++];if(byte===void 0)break;if(result|=BigInt(byte&127)<<shift,shift+=7n,(byte&128)===0)return[result,pos]}throw new import_helpers45.SwapKitError("toolbox_tron_transaction_creation_failed")}function encodeVarint(value){let bytes=[],v=value<0n?value+2n**64n:value;while(v>=128n)bytes.push(Number(v&0x7fn)|128),v>>=7n;return bytes.push(Number(v)),bytes}function addField(fields,fieldNumber,value){let existing=fields.get(fieldNumber);if(existing)existing.push(value);else fields.set(fieldNumber,[value])}function parseProtoFields(bytes){let fields=new Map,pos=0;while(pos<bytes.length){let[keyLong,newPos]=decodeVarint(bytes,pos);pos=newPos;let fieldNumber=Number(keyLong>>3n),wireType=Number(keyLong&7n);if(wireType===WIRE_VARINT){let[value,p]=decodeVarint(bytes,pos);pos=p,addField(fields,fieldNumber,{data:new Uint8Array(encodeVarint(value)),wireType:WIRE_VARINT})}else if(wireType===WIRE_LENGTH_DELIMITED){let[len,p]=decodeVarint(bytes,pos);pos=p;let numLen=Number(len);if(numLen<0||pos+numLen>bytes.length)throw new import_helpers45.SwapKitError("toolbox_tron_transaction_creation_failed");let data=bytes.slice(pos,pos+numLen);pos+=numLen,addField(fields,fieldNumber,{data,wireType:WIRE_LENGTH_DELIMITED})}else if(wireType===WIRE_64BIT){if(pos+8>bytes.length)throw new import_helpers45.SwapKitError("toolbox_tron_transaction_creation_failed");let data=bytes.slice(pos,pos+8);pos+=8,addField(fields,fieldNumber,{data,wireType:WIRE_64BIT})}else if(wireType===WIRE_32BIT){if(pos+4>bytes.length)throw new import_helpers45.SwapKitError("toolbox_tron_transaction_creation_failed");let data=bytes.slice(pos,pos+4);pos+=4,addField(fields,fieldNumber,{data,wireType:WIRE_32BIT})}else throw new import_helpers45.SwapKitError("toolbox_tron_transaction_creation_failed")}return fields}function encodeProtoFields(fields){let chunks=[];for(let[fieldNumber,values]of[...fields.entries()].sort(([a],[b])=>a-b))for(let{wireType,data}of values){let key=BigInt(fieldNumber<<3|wireType);if(chunks.push(new Uint8Array(encodeVarint(key))),wireType===WIRE_LENGTH_DELIMITED)chunks.push(new Uint8Array(encodeVarint(BigInt(data.length))));chunks.push(data)}let totalLength=chunks.reduce((sum,c)=>sum+c.length,0),result=new Uint8Array(totalLength),offset=0;for(let chunk of chunks)result.set(chunk,offset),offset+=chunk.length;return result}function patchTransactionRawData(rawDataHex,patches){if(!rawDataHex||rawDataHex.length%2!==0)throw new import_helpers45.SwapKitError("toolbox_tron_transaction_creation_failed");let bytes=import_utils10.hexToBytes(rawDataHex),fields=parseProtoFields(bytes);if(patches.expiration!==void 0)fields.set(FIELD_EXPIRATION,[{data:new Uint8Array(encodeVarint(BigInt(patches.expiration))),wireType:WIRE_VARINT}]);if(patches.data!==void 0)fields.set(FIELD_DATA,[{data:import_utils10.hexToBytes(patches.data),wireType:WIRE_LENGTH_DELIMITED}]);if(patches.fee_limit!==void 0)fields.set(FIELD_FEE_LIMIT,[{data:new Uint8Array(encodeVarint(BigInt(patches.fee_limit))),wireType:WIRE_VARINT}]);let newBytes=encodeProtoFields(fields),newHex=import_utils10.bytesToHex(newBytes),txID=import_utils10.bytesToHex(import_sha22.sha256(newBytes));return{raw_data_hex:newHex,txID}}var import_sha22,import_utils10,import_helpers45,WIRE_VARINT=0,WIRE_64BIT=1,WIRE_LENGTH_DELIMITED=2,WIRE_32BIT=5,FIELD_EXPIRATION=8,FIELD_DATA=10,FIELD_FEE_LIMIT=18;var init_proto=__esm(()=>{import_sha22=require("@noble/hashes/sha2.js"),import_utils10=require("@noble/hashes/utils.js"),import_helpers45=require("@swapkit/helpers")});function isValidTronAddress(address){if(typeof address!=="string")return!1;try{let decoded=TRON_BASE58.decode(address);return decoded.length===21&&decoded[0]===TRON_ADDRESS_PREFIX}catch{return!1}}function tronAddressToHex(address){return import_utils11.bytesToHex(TRON_BASE58.decode(address))}function tronAddressToRaw20(address){return TRON_BASE58.decode(address).slice(1)}function privateKeyToTronAddress(privateKeyHex){let pubKey=import_secp256k12.secp256k1.getPublicKey(import_utils11.hexToBytes(privateKeyHex),!1),ethAddress=import_sha3.keccak_256(pubKey.slice(1)).slice(-20),tronBytes=new Uint8Array(21);return tronBytes[0]=TRON_ADDRESS_PREFIX,tronBytes.set(ethAddress,1),TRON_BASE58.encode(tronBytes)}function signTronTransaction({txID,privateKey}){let sig=import_secp256k12.secp256k1.sign(import_utils11.hexToBytes(txID),import_utils11.hexToBytes(privateKey),{format:"recovered",prehash:!1}),recovery=sig[0]??0,r=import_utils11.bytesToHex(sig.slice(1,33)),s=import_utils11.bytesToHex(sig.slice(33,65)),v=(recovery+27).toString(16).padStart(2,"0");return r+s+v}function validateTransactionIntegrity({txID,raw_data_hex}){let expected=import_utils11.bytesToHex(import_sha23.sha256(import_utils11.hexToBytes(raw_data_hex)));if(txID!==expected)throw new import_helpers46.SwapKitError("toolbox_tron_invalid_transaction_integrity",{expected,txID})}function encodeABIAddress(tronAddress){return`000000000000000000000000${import_utils11.bytesToHex(tronAddressToRaw20(tronAddress))}`}function encodeABIUint256(value){let bigVal=typeof value==="bigint"?value:BigInt(value);if(bigVal<0n||bigVal>=UINT256_MAX)throw new import_helpers46.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:bigVal.toString()});return bigVal.toString(16).padStart(64,"0")}function buildTRC20Parameter(params2){return params2.map(({type,value})=>type==="address"?encodeABIAddress(value):encodeABIUint256(BigInt(value))).join("")}function memoToHex(memo){return import_utils11.bytesToHex(new TextEncoder().encode(memo))}var import_secp256k12,import_sha23,import_sha3,import_utils11,import_base10,import_helpers46,TRON_BASE58,TRON_ADDRESS_PREFIX=65,UINT256_MAX;var init_utils2=__esm(()=>{import_secp256k12=require("@noble/curves/secp256k1.js"),import_sha23=require("@noble/hashes/sha2.js"),import_sha3=require("@noble/hashes/sha3.js"),import_utils11=require("@noble/hashes/utils.js"),import_base10=require("@scure/base"),import_helpers46=require("@swapkit/helpers"),TRON_BASE58=import_base10.createBase58check(import_sha23.sha256),UINT256_MAX=2n**256n});function getApiBase(){try{return import_helpers47.getRPCUrlSync(import_helpers47.Chain.Tron)}catch{return TRONGRID_FALLBACK}}function createAbortSignal(){let controller=new AbortController,timeout=setTimeout(()=>controller.abort(),FETCH_TIMEOUT_MS);return{cleanup:()=>clearTimeout(timeout),signal:controller.signal}}async function tronPost(path,body){let{signal,cleanup}=createAbortSignal();try{let response=await fetch(`${getApiBase()}${path}`,{body:JSON.stringify(body),headers:{"Content-Type":"application/json"},method:"POST",signal});if(!response.ok)throw new import_helpers47.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${response.status} ${response.statusText} on ${path}`});return await response.json()}finally{cleanup()}}async function tronGet(path,baseUrl2){let{signal,cleanup}=createAbortSignal();try{let response=await fetch(`${baseUrl2??getApiBase()}${path}`,{headers:{"Content-Type":"application/json"},signal});if(!response.ok)throw new import_helpers47.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${response.status} ${response.statusText} on ${path}`});return await response.json()}finally{cleanup()}}async function fetchAccountFromTronGrid(address){if(!isValidTronAddress(address))throw new import_helpers47.SwapKitError("toolbox_tron_trongrid_api_error",{address,message:"Invalid address"});try{let data=await tronGet(`/v1/accounts/${address}`,TRONGRID_FALLBACK);if(!(data.success&&data.data)||data.data.length===0)return;let searchAddressHex;try{searchAddressHex=tronAddressToHex(address).toLowerCase()}catch{searchAddressHex=address.toLowerCase()}let account=data.data.find((acc)=>acc.address.toLowerCase()===searchAddressHex);if(!account)return;return{balance:account.balance,trc20:account.trc20||[]}}catch(error){if(error instanceof import_helpers47.SwapKitError)throw error;throw new import_helpers47.SwapKitError("toolbox_tron_trongrid_api_error",{address,message:error instanceof Error?error.message:"Unknown error"})}}async function buildTrxTransaction({from,to,amount}){let result=await tronPost("/wallet/createtransaction",{amount,owner_address:from,to_address:to,visible:!0});if(!result.txID||!result.raw_data_hex||!result.raw_data)throw new import_helpers47.SwapKitError("toolbox_tron_transaction_creation_failed");let params2=result.raw_data?.contract?.[0]?.parameter?.value;if(params2?.to_address!==to||params2?.owner_address!==from||params2?.amount!==amount)throw new import_helpers47.SwapKitError("toolbox_tron_transaction_creation_failed");return validateTransactionIntegrity(result),result}async function buildContractTransaction({ownerAddress,contractAddress,functionSelector,parameter,feeLimit,callValue=0}){let result=await tronPost("/wallet/triggersmartcontract",{call_value:callValue,contract_address:contractAddress,fee_limit:feeLimit,function_selector:functionSelector,owner_address:ownerAddress,parameter,visible:!0});if(!result.result.result||!result.transaction?.txID||!result.transaction?.raw_data_hex)throw new import_helpers47.SwapKitError("toolbox_tron_transaction_creation_failed");let params2=result.transaction.raw_data?.contract?.[0]?.parameter?.value;if(params2?.contract_address!==contractAddress||params2?.owner_address!==ownerAddress)throw new import_helpers47.SwapKitError("toolbox_tron_transaction_creation_failed");return validateTransactionIntegrity(result.transaction),result.transaction}function simulateContractCall({ownerAddress,contractAddress,functionSelector,parameter}){return tronPost("/wallet/triggerconstantcontract",{contract_address:contractAddress,function_selector:functionSelector,owner_address:ownerAddress,parameter,visible:!0})}async function broadcastTronTransaction(signedTx){try{let{result,txid}=await tronPost("/wallet/broadcasttransaction",{raw_data:signedTx.raw_data,raw_data_hex:signedTx.raw_data_hex,signature:signedTx.signature,txID:signedTx.txID,visible:signedTx.visible});if(!result||!txid)throw new import_helpers47.SwapKitError("toolbox_tron_token_transfer_failed");return txid}catch(error){throw new import_helpers47.SwapKitError("toolbox_tron_broadcast_failed",{error})}}async function getTronChainParameters(){let paramMap={};try{let{chainParameter}=await tronGet("/wallet/getchainparameters");for(let param of chainParameter)paramMap[param.key]=param.value}catch(error){import_helpers47.warnOnce({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${error instanceof Error?error.message:error}`})}return{bandwidthFee:paramMap.getTransactionFee??DEFAULT_BANDWIDTH_FEE,createAccountFee:paramMap.getCreateAccountFee??DEFAULT_CREATE_ACCOUNT_FEE,energyFee:paramMap.getEnergyFee??DEFAULT_ENERGY_FEE}}async function getTronAccountResources(address){try{let result=await tronPost("/wallet/getaccountresource",{address,visible:!0});return{bandwidth:{free:(result.freeNetLimit??600)-(result.freeNetUsed??0),total:result.NetLimit??0,used:result.NetUsed??0},energy:{total:result.EnergyLimit??0,used:result.EnergyUsed??0}}}catch(error){return import_helpers47.warnOnce({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${error instanceof Error?error.message:error}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function checkTronAccountExists(address){try{let result=await tronPost("/wallet/getaccount",{address,visible:!0});return result&&Object.keys(result).length>0}catch{return!1}}async function estimateContractEnergy(params2){try{let{energy_used}=await simulateContractCall({...params2,ownerAddress:params2.sender});return energy_used}catch(error){return import_helpers47.warnOnce({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy, using default: ${error instanceof Error?error.message:error}`}),65000}}async function getTrc20Allowance({assetAddress,owner,spender}){let parameter=buildTRC20Parameter([{type:"address",value:owner},{type:"address",value:spender}]),hexResult=(await simulateContractCall({contractAddress:assetAddress,functionSelector:"allowance(address,address)",ownerAddress:spender,parameter})).constant_result?.[0];if(!hexResult)return 0n;try{return BigInt(`0x${hexResult}`)}catch{return 0n}}var import_helpers47,TRONGRID_FALLBACK="https://api.trongrid.io",DEFAULT_BANDWIDTH_FEE=1000,DEFAULT_CREATE_ACCOUNT_FEE=1e5,DEFAULT_ENERGY_FEE=420,FETCH_TIMEOUT_MS=30000;var init_trongrid=__esm(()=>{init_utils2();import_helpers47=require("@swapkit/helpers")});function derivePrivateKey2({phrase,derivationPath}){let derived=import_bip324.HDKey.fromMasterSeed(import_bip394.mnemonicToSeedSync(phrase)).derive(derivationPath);if(!derived.privateKey)throw new import_helpers48.SwapKitError("toolbox_tron_no_signer");return import_utils13.bytesToHex(derived.privateKey)}function getTronPrivateKeyFromMnemonic({phrase,derivationPath:customPath,index}){let derivationPath=customPath||import_helpers48.derivationPathToString(import_helpers48.updateDerivationPath(import_helpers48.NetworkDerivationPath[import_helpers48.Chain.Tron],{index:index||0}));return derivePrivateKey2({derivationPath,phrase})}function createKeysForPath4({phrase,derivationPath}){let privateKey=derivePrivateKey2({derivationPath,phrase}),address=privateKeyToTronAddress(privateKey);return{getAddress:()=>Promise.resolve(address),signTransaction:(transaction)=>{validateTransactionIntegrity(transaction);let signature=signTronTransaction({privateKey,txID:transaction.txID});return Promise.resolve({...transaction,signature:[signature]})}}}function prepareTx({transaction,memo,expiration,feeLimit}){let patches={},rawDataUpdates={};if(feeLimit!==void 0&&transaction.raw_data)patches.fee_limit=feeLimit,rawDataUpdates.fee_limit=feeLimit;if(memo){let memoHex=memoToHex(memo);patches.data=memoHex,rawDataUpdates.data=memoHex}if(expiration){let newExpiration=transaction.raw_data.expiration+expiration*1000;patches.expiration=newExpiration,rawDataUpdates.expiration=newExpiration}if(Object.keys(patches).length===0)return transaction;let{raw_data_hex,txID}=patchTransactionRawData(transaction.raw_data_hex,patches);return{...transaction,raw_data:{...transaction.raw_data,...rawDataUpdates},raw_data_hex,txID}}function getTronToolbox(options={}){let index="index"in options?options.index||0:0,derivationPath=import_helpers48.derivationPathToString("derivationPath"in options&&options.derivationPath?options.derivationPath:import_helpers48.updateDerivationPath(import_helpers48.NetworkDerivationPath[import_helpers48.Chain.Tron],{index})),cachedSigner,signerResolved=!1;function getSigner(){if(signerResolved)return Promise.resolve(cachedSigner);return cachedSigner=import_ts_pattern18.match(options).with({phrase:import_ts_pattern18.P.string},({phrase})=>createKeysForPath4({derivationPath,phrase})).with({signer:import_ts_pattern18.P.not(import_ts_pattern18.P.nullish)},({signer})=>signer).otherwise(()=>{return}),signerResolved=!0,Promise.resolve(cachedSigner)}async function getAddress3(){let signer=await getSigner();if(!signer)throw new import_helpers48.SwapKitError("toolbox_tron_no_signer");return signer.getAddress()}async function calculateFeeLimitFromEnergy(energyUsed){let energy=energyUsed||DEFAULT_TRC20_TRANSFER_ENERGY,chainParams=await getTronChainParameters(),estimatedFee=energy*chainParams.energyFee,feeWithBuffer=Math.ceil(estimatedFee*1.5);return Math.min(Math.max(feeWithBuffer,1e7),150000000)}async function buildContractTx({contractAddress,functionSelector,parameter,sender,memo,expiration}){let estimatedEnergy=await estimateContractEnergy({contractAddress,functionSelector,parameter,sender}),feeLimit=await calculateFeeLimitFromEnergy(estimatedEnergy),transaction=await buildContractTransaction({contractAddress,feeLimit,functionSelector,ownerAddress:sender,parameter});return prepareTx({expiration,feeLimit,memo,transaction})}async function getBalance3(address){if(!isValidTronAddress(address))return[import_helpers48.AssetValue.from({chain:import_helpers48.Chain.Tron})];try{let accountData=await fetchAccountFromTronGrid(address);if(!accountData)return[import_helpers48.AssetValue.from({chain:import_helpers48.Chain.Tron})];let balances=[import_helpers48.AssetValue.from({chain:import_helpers48.Chain.Tron,fromBaseDecimal:6,value:String(accountData.balance)})],usdtEntry=accountData.trc20?.find((token)=>(TRON_USDT_CONTRACT in token));if(usdtEntry){let usdtBalance=usdtEntry[TRON_USDT_CONTRACT];balances.push(import_helpers48.AssetValue.from({asset:`TRON.USDT-${TRON_USDT_CONTRACT}`,fromBaseDecimal:6,value:usdtBalance}))}return balances}catch(error){return import_helpers48.warnOnce({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${error instanceof Error?error.message:error}`}),[import_helpers48.AssetValue.from({chain:import_helpers48.Chain.Tron})]}}async function transfer4({recipient,assetValue,memo,expiration}){if(!isValidTronAddress(recipient))throw new import_helpers48.SwapKitError("toolbox_tron_token_transfer_failed",{message:"invalid address"});let signer=await getSigner();if(!signer)throw new import_helpers48.SwapKitError("toolbox_tron_no_signer");try{let from=await getAddress3(),transaction=await createTransaction7({assetValue,expiration,memo,recipient,sender:from}),signedTx=await signer.signTransaction(transaction),txid=await broadcastTronTransaction(signedTx);if(!txid)throw new import_helpers48.SwapKitError("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return txid}catch(error){throw new import_helpers48.SwapKitError("toolbox_tron_token_transfer_failed",{message:error instanceof Error?error.message:String(error)})}}function calculateBandwidthFee({requiredBandwidth,resources,feePerUnit}){let availableBandwidth=Math.max(0,resources.free+resources.total-resources.used);return requiredBandwidth>availableBandwidth?(requiredBandwidth-availableBandwidth)*feePerUnit:0}async function estimateNativeFee({recipient,senderAddress}){let[chainParams,recipientExists,resources]=await Promise.all([getTronChainParameters(),checkTronAccountExists(recipient),getTronAccountResources(senderAddress)]),activationFee=recipientExists?0:chainParams.createAccountFee,bandwidthFee=calculateBandwidthFee({feePerUnit:chainParams.bandwidthFee,requiredBandwidth:TRX_TRANSFER_BANDWIDTH,resources:resources.bandwidth});return import_helpers48.AssetValue.from({chain:import_helpers48.Chain.Tron,fromBaseDecimal:import_helpers48.BaseDecimal.TRON,value:activationFee+bandwidthFee})}async function estimateTrc20Fee({assetValue,recipient,senderAddress}){let contractAddress=assetValue.address;if(!contractAddress)throw new import_helpers48.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:assetValue.toString()});let[chainParams,recipientExists,resources,energyNeeded]=await Promise.all([getTronChainParameters(),checkTronAccountExists(recipient),getTronAccountResources(senderAddress),estimateContractEnergy({contractAddress,functionSelector:"transfer(address,uint256)",parameter:buildTRC20Parameter([{type:"address",value:recipient},{type:"uint256",value:assetValue.getBaseValue("string")}]),sender:senderAddress})]),activationFee=recipientExists?0:chainParams.createAccountFee,bandwidthFee=calculateBandwidthFee({feePerUnit:chainParams.bandwidthFee,requiredBandwidth:TRC20_TRANSFER_BANDWIDTH,resources:resources.bandwidth}),availableEnergy=Math.max(0,resources.energy.total-resources.energy.used),energyFee=energyNeeded>availableEnergy?(energyNeeded-availableEnergy)*chainParams.energyFee:0;return import_helpers48.AssetValue.from({chain:import_helpers48.Chain.Tron,fromBaseDecimal:import_helpers48.BaseDecimal.TRON,value:activationFee+bandwidthFee+energyFee})}async function estimateTransactionFee4({assetValue,recipient,sender}){let signer=await getSigner();try{let senderAddress=sender?sender:signer?await getAddress3():void 0;if(!senderAddress)return assetValue.isGasAsset?import_helpers48.AssetValue.from({chain:import_helpers48.Chain.Tron,value:0.1}):import_helpers48.AssetValue.from({chain:import_helpers48.Chain.Tron,value:15});return assetValue.isGasAsset?estimateNativeFee({recipient,senderAddress}):estimateTrc20Fee({assetValue,recipient,senderAddress})}catch(error){throw import_helpers48.warnOnce({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${error instanceof Error?error.message:error}`}),new import_helpers48.SwapKitError("toolbox_fee_estimation_failed",{chain:import_helpers48.Chain.Tron,error})}}async function createTransaction7({recipient,assetValue,memo,sender,expiration}){if(!isValidTronAddress(recipient)||!isValidTronAddress(sender))throw new import_helpers48.SwapKitError("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(assetValue.isGasAsset){let transaction=await buildTrxTransaction({amount:assetValue.getBaseValue("number"),from:sender,to:recipient});return prepareTx({expiration,memo,transaction})}let contractAddress=assetValue.address;if(!contractAddress)throw new import_helpers48.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:assetValue.toString()});return buildContractTx({contractAddress,expiration,functionSelector:"transfer(address,uint256)",memo,parameter:buildTRC20Parameter([{type:"address",value:recipient},{type:"uint256",value:assetValue.getBaseValue("string")}]),sender})}async function signTransaction2(transaction){validateTransactionIntegrity(transaction);let signer=await getSigner();if(!signer)throw new import_helpers48.SwapKitError("toolbox_tron_no_signer");return signer.signTransaction(transaction)}async function signAndBroadcastTransaction(transaction){let signedTx=await signTransaction2(transaction);return broadcastTronTransaction(signedTx)}function getApprovedAmount2({assetAddress,spenderAddress,from}){return getTrc20Allowance({assetAddress,owner:from,spender:spenderAddress})}async function isApproved({assetAddress,spenderAddress,from,amount}){let allowance=await getApprovedAmount2({assetAddress,from,spenderAddress});if(!amount)return allowance>0n;return allowance>=BigInt(amount)}async function approve({assetAddress,spenderAddress,amount,from}){if(!isValidTronAddress(assetAddress)||!isValidTronAddress(spenderAddress))throw new import_helpers48.SwapKitError("toolbox_tron_approve_failed");let signer=await getSigner();if(!signer)throw new import_helpers48.SwapKitError("toolbox_tron_no_signer");let fromAddress=from||await getAddress3(),approvalAmount=amount!==void 0?BigInt(amount).toString():MAX_APPROVAL2;try{let transaction=await buildContractTx({contractAddress:assetAddress,functionSelector:"approve(address,uint256)",parameter:buildTRC20Parameter([{type:"address",value:spenderAddress},{type:"uint256",value:approvalAmount}]),sender:fromAddress}),signedTx=await signer.signTransaction(transaction),txid=await broadcastTronTransaction(signedTx);if(!txid)throw new import_helpers48.SwapKitError("toolbox_tron_approve_failed");return txid}catch(error){if(error instanceof import_helpers48.SwapKitError)throw error;throw new import_helpers48.SwapKitError("toolbox_tron_approve_failed",{error})}}return{approve,broadcastTransaction:broadcastTronTransaction,createTransaction:createTransaction7,estimateTransactionFee:estimateTransactionFee4,getAddress:getAddress3,getApprovedAmount:getApprovedAmount2,getBalance:getBalance3,getRpcUrl:()=>import_helpers48.getRPCUrl(import_helpers48.Chain.Tron),isApproved,signAndBroadcastTransaction,signTransaction:signTransaction2,transfer:transfer4,validateAddress:isValidTronAddress}}var import_utils13,import_bip324,import_bip394,import_helpers48,import_ts_pattern18,validateTronAddress,TRX_TRANSFER_BANDWIDTH=268,DEFAULT_TRC20_TRANSFER_ENERGY=65000,TRC20_TRANSFER_BANDWIDTH=345,TRON_USDT_CONTRACT="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",MAX_APPROVAL2="115792089237316195423570985008687907853269984665640564039457584007913129639935";var init_toolbox12=__esm(()=>{init_proto();init_trongrid();init_utils2();import_utils13=require("@noble/hashes/utils.js"),import_bip324=require("@scure/bip32"),import_bip394=require("@scure/bip39"),import_helpers48=require("@swapkit/helpers"),import_ts_pattern18=require("ts-pattern"),validateTronAddress=isValidTronAddress});var exports_tron={};__export(exports_tron,{validateTronAddress:()=>validateTronAddress,getTronToolbox:()=>getTronToolbox,getTronPrivateKeyFromMnemonic:()=>getTronPrivateKeyFromMnemonic});module.exports=__toCommonJS(exports_tron);var init_tron=__esm(()=>{init_toolbox12()});function validateStellarAddress(address){if(!address||typeof address!=="string"||!address.startsWith("G")||address.length!==56)return!1;return stellarAddressRegex.test(address)}async function validateStellarAddressWithChecksum(address){if(!validateStellarAddress(address))return!1;try{let{StrKey}=await import("@stellar/stellar-sdk");return StrKey.isValidEd25519PublicKey(address)}catch{return!1}}function getStellarToolbox(params2={}){let keypairCache,basePath=params2.derivationPath||import_helpers49.NetworkDerivationPath[import_helpers49.Chain.Stellar],derivePath=import_helpers49.derivationPathToString(basePath.slice(0,3));async function deriveKeypair({phrase,path}){let{HDKey:HDKey5}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:mnemonicToSeedSync4}=await import("@scure/bip39"),{Keypair}=await import("@stellar/stellar-sdk"),seed=mnemonicToSeedSync4(phrase),derived=HDKey5.fromMasterSeed(seed).derive(path,!0);return Keypair.fromRawEd25519Seed(Buffer.from(derived.privateKey))}async function getKeypair(){if(keypairCache)return keypairCache;let phrase=import_ts_pattern19.match(params2).with({phrase:import_ts_pattern19.P.string},({phrase:phrase2})=>phrase2).otherwise(()=>{return});if(!phrase)throw new import_helpers49.SwapKitError("toolbox_stellar_no_signer");return keypairCache=await deriveKeypair({path:derivePath,phrase}),keypairCache}async function getHorizonServer(){let{Horizon}=await import("@stellar/stellar-sdk"),rpcUrl=await import_helpers49.getRPCUrl(import_helpers49.Chain.Stellar);return new Horizon.Server(rpcUrl)}async function getAddress3(){try{return(await getKeypair()).publicKey()}catch{return""}}async function getBalance3(checkAddress){let address=checkAddress||await getAddress3();if(!address)throw new import_helpers49.SwapKitError("toolbox_stellar_account_not_found");try{return(await(await getHorizonServer()).loadAccount(address)).balances.map((balance)=>{if(balance.asset_type==="native")return import_helpers49.AssetValue.from({chain:import_helpers49.Chain.Stellar,value:balance.balance});let assetCode="asset_code"in balance?balance.asset_code:"",assetIssuer="asset_issuer"in balance?balance.asset_issuer:"";return import_helpers49.AssetValue.from({asset:`${import_helpers49.Chain.Stellar}.${assetCode}-${assetIssuer}`,asyncTokenLookup:!1,value:balance.balance})})}catch{return[import_helpers49.AssetValue.from({chain:import_helpers49.Chain.Stellar,value:0})]}}async function createTransaction7({recipient,assetValue,memo,sender}){if(memo){if(new TextEncoder().encode(memo).length>28)throw new import_helpers49.SwapKitError("helpers_invalid_memo_type")}if(!await validateStellarAddressWithChecksum(recipient))throw new import_helpers49.SwapKitError("core_transaction_invalid_recipient_address");let senderAddress=sender||await getAddress3();if(!senderAddress)throw new import_helpers49.SwapKitError("toolbox_stellar_no_signer");let{Asset,Memo,Networks,Operation,TransactionBuilder}=await import("@stellar/stellar-sdk"),server=await getHorizonServer(),fee=await server.fetchBaseFee(),account=await server.loadAccount(senderAddress),builder=new TransactionBuilder(account,{fee:String(fee),networkPassphrase:Networks.PUBLIC});if(assetValue.isGasAsset)try{await server.loadAccount(recipient),builder.addOperation(Operation.payment({amount:assetValue.getValue("string"),asset:Asset.native(),destination:recipient}))}catch{builder.addOperation(Operation.createAccount({destination:recipient,startingBalance:assetValue.getValue("string")}))}else builder.addOperation(Operation.payment({amount:assetValue.getValue("string"),asset:new Asset(assetValue.symbol,assetValue.address),destination:recipient}));if(memo)builder.addMemo(Memo.text(memo));return builder.setTimeout(30).build()}async function signTransaction2(transaction){let{TransactionBuilder,Networks}=await import("@stellar/stellar-sdk"),keypair=await getKeypair(),tx=TransactionBuilder.fromXDR(transaction.toXDR(),Networks.PUBLIC);return tx.sign(keypair),tx}async function broadcastTransaction3(signedTransaction){try{let server=await getHorizonServer(),{hash}=await server.submitTransaction(signedTransaction);return hash}catch(error){throw new import_helpers49.SwapKitError("toolbox_stellar_broadcast_error",error)}}async function transfer4({recipient,assetValue,memo}){let keypair=await getKeypair(),sender=keypair.publicKey(),transaction=await createTransaction7({assetValue,memo,recipient,sender});transaction.sign(keypair);try{return(await(await getHorizonServer()).submitTransaction(transaction)).hash}catch(error){if(error instanceof import_helpers49.SwapKitError)throw error;throw new import_helpers49.SwapKitError("toolbox_stellar_transaction_failed",error)}}async function signAndBroadcastTransaction(transaction){let signed=await signTransaction2(transaction);return broadcastTransaction3(signed)}async function estimateTransactionFee4(){let{baseDecimal:baseDecimal2}=import_helpers49.getChainConfig(import_helpers49.Chain.Stellar);try{let recommendedFee=(await(await getHorizonServer()).feeStats()).fee_charged.p50;return import_helpers49.AssetValue.from({chain:import_helpers49.Chain.Stellar,fromBaseDecimal:baseDecimal2,value:recommendedFee})}catch{return import_helpers49.AssetValue.from({chain:import_helpers49.Chain.Stellar,fromBaseDecimal:baseDecimal2,value:"100"})}}return{broadcastTransaction:broadcastTransaction3,createTransaction:createTransaction7,estimateTransactionFee:estimateTransactionFee4,getAddress:getAddress3,getBalance:getBalance3,signAndBroadcastTransaction,signTransaction:signTransaction2,transfer:transfer4,validateAddress:validateStellarAddress}}var import_helpers49,import_ts_pattern19,stellarAddressRegex;var init_toolbox13=__esm(()=>{import_helpers49=require("@swapkit/helpers"),import_ts_pattern19=require("ts-pattern"),stellarAddressRegex=/^G[A-Z2-7]{55}$/});var exports_stellar={};__export(exports_stellar,{validateStellarAddress:()=>validateStellarAddress,getStellarToolbox:()=>getStellarToolbox});module.exports=__toCommonJS(exports_stellar);var init_stellar=__esm(()=>{init_toolbox13()});var exports_src={};__export(exports_src,{getToolbox:()=>getToolbox,getFeeEstimator:()=>getFeeEstimator,getAddressValidator:()=>getAddressValidator});module.exports=__toCommonJS(exports_src);var import_helpers50=require("@swapkit/helpers");async function getAddressValidator(){let{match:match20}=await import("ts-pattern"),{validateAptosAddress:validateAptosAddress2}=await Promise.resolve().then(() => (init_aptos(),exports_aptos)),{validateEVMAddress:validateEVMAddress2}=await Promise.resolve().then(() => (init_evm2(),exports_evm2)),{validateCardanoAddress:validateCardanoAddress2}=await Promise.resolve().then(() => (init_cardano(),exports_cardano)),{getCosmosAddressValidator:getCosmosAddressValidator2}=await Promise.resolve().then(() => (init_cosmos2(),exports_cosmos)),{validateHyperCoreAddress:validateHyperCoreAddress2}=await Promise.resolve().then(() => (init_hypercore(),exports_hypercore)),{validateSolanaAddress:validateSolanaAddress2}=await Promise.resolve().then(() => (init_solana(),exports_solana)),{validateStarknetAddress:validateStarknetAddress2}=await Promise.resolve().then(() => (init_starknet(),exports_starknet)),{validateSuiAddress:validateSuiAddress2}=await Promise.resolve().then(() => (init_sui(),exports_sui)),{validateTonAddress:validateTonAddress2}=await Promise.resolve().then(() => (init_ton(),exports_ton)),{getUTXOAddressValidator:getUTXOAddressValidator2}=await Promise.resolve().then(() => (init_utxo2(),exports_utxo)),{validateNearAddress:validateNearAddress2}=await Promise.resolve().then(() => (init_near(),exports_near)),{validateRadixAddress:validateRadixAddress2}=await Promise.resolve().then(() => (init_radix(),exports_radix)),{validateRippleAddress:validateRippleAddress2}=await Promise.resolve().then(() => (init_ripple(),exports_ripple)),{validateTronAddress:validateTronAddress2}=await Promise.resolve().then(() => (init_tron(),exports_tron)),{validateStellarAddress:validateStellarAddress2}=await Promise.resolve().then(() => (init_stellar(),exports_stellar));return function({address,chain:chain2}){return match20(chain2).with(...import_helpers50.EVMChains,()=>validateEVMAddress2(address)).with(...import_helpers50.UTXOChains,(chain3)=>{return getUTXOAddressValidator2(chain3)(address)}).with(...import_helpers50.CosmosChains,(chain3)=>{return getCosmosAddressValidator2(chain3)(address)}).with(import_helpers50.Chain.Aptos,()=>validateAptosAddress2(address)).with(import_helpers50.Chain.Radix,()=>validateRadixAddress2(address)).with(import_helpers50.Chain.HyperCore,()=>validateHyperCoreAddress2(address)).with(import_helpers50.Chain.Near,()=>validateNearAddress2(address)).with(import_helpers50.Chain.Ripple,()=>validateRippleAddress2(address)).with(import_helpers50.Chain.Solana,()=>validateSolanaAddress2(address)).with(import_helpers50.Chain.Stellar,()=>validateStellarAddress2(address)).with(import_helpers50.Chain.Starknet,()=>validateStarknetAddress2(address)).with(import_helpers50.Chain.Sui,()=>validateSuiAddress2(address)).with(import_helpers50.Chain.Ton,()=>validateTonAddress2(address)).with(import_helpers50.Chain.Tron,()=>validateTronAddress2(address)).with(import_helpers50.Chain.Cardano,()=>validateCardanoAddress2(address)).otherwise(()=>!1)}}function getFeeEstimator(chain2){return async function(params2){let{match:match20}=await import("ts-pattern");return match20(chain2).returnType().with(...import_helpers50.EVMChains,async(chain3)=>{let toolbox12=await getToolbox(chain3),txObject=await toolbox12.createTransaction(params2),feeOption="feeOptionKey"in params2?params2.feeOptionKey:import_helpers50.FeeOption.Fast;return toolbox12.estimateTransactionFee({...txObject,feeOption})}).with(import_helpers50.Chain.Bitcoin,import_helpers50.Chain.BitcoinCash,import_helpers50.Chain.Dogecoin,import_helpers50.Chain.Dash,import_helpers50.Chain.Litecoin,import_helpers50.Chain.Solana,import_helpers50.Chain.Ripple,import_helpers50.Chain.Tron,import_helpers50.Chain.Near,import_helpers50.Chain.Cardano,import_helpers50.Chain.HyperCore,async(chain3)=>{return(await getToolbox(chain3)).estimateTransactionFee(params2)}).with(import_helpers50.Chain.Aptos,async()=>{let{getAptosToolbox:getAptosToolbox2}=await Promise.resolve().then(() => (init_aptos(),exports_aptos));return getAptosToolbox2().estimateTransactionFee(params2)}).with(import_helpers50.Chain.Starknet,async()=>{let{getStarknetToolbox:getStarknetToolbox2}=await Promise.resolve().then(() => (init_starknet(),exports_starknet));return(await getStarknetToolbox2()).estimateTransactionFee(params2)}).with(import_helpers50.Chain.Stellar,async()=>{let{getStellarToolbox:getStellarToolbox2}=await Promise.resolve().then(() => (init_stellar(),exports_stellar));return getStellarToolbox2().estimateTransactionFee()}).with(import_helpers50.Chain.Sui,async()=>{let{getSuiToolbox:getSuiToolbox2}=await Promise.resolve().then(() => (init_sui(),exports_sui));return getSuiToolbox2().estimateTransactionFee(params2)}).with(import_helpers50.Chain.Ton,async()=>{let{getTONToolbox:getTONToolbox2}=await Promise.resolve().then(() => (init_ton(),exports_ton));return getTONToolbox2().estimateTransactionFee(params2)}).with(...import_helpers50.CosmosChains,async()=>{let{estimateTransactionFee:estimateTransactionFee4}=await Promise.resolve().then(() => (init_cosmos2(),exports_cosmos));return estimateTransactionFee4(params2)}).otherwise(async()=>import_helpers50.AssetValue.from({chain:chain2}))}}async function getToolbox(chain2,params2){let{match:match20}=await import("ts-pattern");return match20(chain2).returnType().with(...import_helpers50.EVMChains,async()=>{let{getEvmToolboxAsync:getEvmToolboxAsync2}=await Promise.resolve().then(() => (init_toolbox2(),exports_toolbox));return await getEvmToolboxAsync2(chain2,params2)}).with(...import_helpers50.UTXOChains,async()=>{let{getUtxoToolbox:getUtxoToolbox2}=await Promise.resolve().then(() => (init_utxo2(),exports_utxo));return getUtxoToolbox2(chain2,params2)}).with(...import_helpers50.CosmosChains,async()=>{let{getCosmosToolbox:getCosmosToolbox2}=await Promise.resolve().then(() => (init_cosmos2(),exports_cosmos));return getCosmosToolbox2(chain2,params2)}).with(import_helpers50.Chain.Aptos,async()=>{let{getAptosToolbox:getAptosToolbox2}=await Promise.resolve().then(() => (init_aptos(),exports_aptos));return getAptosToolbox2(params2)}).with(import_helpers50.Chain.HyperCore,async()=>{let{getHyperCoreToolbox:getHyperCoreToolbox2}=await Promise.resolve().then(() => (init_hypercore(),exports_hypercore));return getHyperCoreToolbox2(params2)}).with(import_helpers50.Chain.Radix,async()=>{let{getRadixToolbox:getRadixToolbox2}=await Promise.resolve().then(() => (init_radix(),exports_radix));return getRadixToolbox2(params2)}).with(import_helpers50.Chain.Ripple,async()=>{let{getRippleToolbox:getRippleToolbox2}=await Promise.resolve().then(() => (init_ripple(),exports_ripple));return getRippleToolbox2(params2)}).with(import_helpers50.Chain.Solana,async()=>{let{getSolanaToolbox:getSolanaToolbox2}=await Promise.resolve().then(() => (init_solana(),exports_solana));return getSolanaToolbox2(params2)}).with(import_helpers50.Chain.Stellar,async()=>{let{getStellarToolbox:getStellarToolbox2}=await Promise.resolve().then(() => (init_stellar(),exports_stellar));return getStellarToolbox2(params2)}).with(import_helpers50.Chain.Starknet,async()=>{let{getStarknetToolbox:getStarknetToolbox2}=await Promise.resolve().then(() => (init_starknet(),exports_starknet));return getStarknetToolbox2(params2)}).with(import_helpers50.Chain.Sui,async()=>{let{getSuiToolbox:getSuiToolbox2}=await Promise.resolve().then(() => (init_sui(),exports_sui));return getSuiToolbox2(params2)}).with(import_helpers50.Chain.Tron,async()=>{let{getTronToolbox:getTronToolbox2}=await Promise.resolve().then(() => (init_tron(),exports_tron));return getTronToolbox2(params2)}).with(import_helpers50.Chain.Near,async()=>{let{getNearToolbox:getNearToolbox2}=await Promise.resolve().then(() => (init_near(),exports_near));return getNearToolbox2(params2)}).with(import_helpers50.Chain.Cardano,async()=>{let{getCardanoToolbox:getCardanoToolbox2}=await Promise.resolve().then(() => (init_cardano(),exports_cardano));return getCardanoToolbox2(params2)}).with(import_helpers50.Chain.Ton,async()=>{let{getTONToolbox:getTONToolbox2}=await Promise.resolve().then(() => (init_ton(),exports_ton));return getTONToolbox2(params2)}).otherwise(()=>{throw new import_helpers50.SwapKitError("toolbox_not_supported",{chain:chain2})})}
|