@swapkit/toolboxes 6.1.0 → 6.3.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @swapkit/toolboxes
2
2
 
3
+ ## 6.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#444](https://github.com/swapkit/sdk/pull/444) [`d9f486d`](https://github.com/swapkit/sdk/commit/d9f486d8197c13523934e6524bdcd9e3371fdebb) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - Export Cardano transaction helpers from `@swapkit/toolboxes/cardano` so hardware and browser wallets can reuse them, and sign keystore transactions over the body exactly as received instead of a re-encoded copy. `decodeCardanoWitnessSet` turns the signatures a CIP-30 wallet returns into the list `addCardanoVkeyWitnesses` accepts.
8
+ - [#439](https://github.com/swapkit/sdk/pull/439) [`92e68f2`](https://github.com/swapkit/sdk/commit/92e68f28a36915bf35fa3b9ddb4d249f035a522c) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - Allow the Stellar toolbox to use an external signer, so hardware wallets can sign Stellar transactions without exposing a seed phrase.
9
+ - [#440](https://github.com/swapkit/sdk/pull/440) [`ab0cc3d`](https://github.com/swapkit/sdk/commit/ab0cc3d80439fd1541616bfc0cdf8e8798c06590) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - Keep THORChain and Maya balances loading when the account holds a denom `AssetValue` cannot parse. Secured assets such as `btc-btc` threw inside `getBalance`, which rejected the whole call and left RUNE and every other balance of the chain empty. Those denoms are now skipped and the rest are returned.
10
+ - [#445](https://github.com/swapkit/sdk/pull/445) [`0e9f9ee`](https://github.com/swapkit/sdk/commit/0e9f9ee3e9c6769ded65394d5aef2e3704c7e7a7) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - TON now uses Toncenter (`https://toncenter.com/api/v2/jsonRPC`) as its default RPC and goes through the same health-checked `rpcUrls` fallback as other chains. Orbs node discovery is only used when every configured TON RPC fails, so an Orbs outage no longer breaks TON addresses, fees or transfers. The TON RPC health check now calls `getMasterchainInfo`; the previous `getAddressInformation` call with an empty address was rejected by every node.
11
+ - [#447](https://github.com/swapkit/sdk/pull/447) [`b827853`](https://github.com/swapkit/sdk/commit/b827853cd1bfa68a9bd733843b3740f10ecab359) Thanks [@github-actions](https://github.com/apps/github-actions)! - Update generated token lists. (via @swapkit/helpers@6.1.2)
12
+ - [#443](https://github.com/swapkit/sdk/pull/443) [`81b8303`](https://github.com/swapkit/sdk/commit/81b83032429f8e2bd496335d252563dd4a69a60f) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - Solana's default derivation path is now `m/44'/501'/0'/0'` (four hardened levels) instead of a five-level BIP44 shape. Keystore and passkey already derived this path by trimming the default, so their addresses do not change. `getSolanaToolbox({ phrase })` without an explicit `derivationPath` now derives the same address as the keystore, Phantom and Trezor Suite, which moves the address for anyone relying on that fallback. Hardware wallets that read `NetworkDerivationPath[Chain.Solana]` now receive a path the device firmware accepts. (via @swapkit/helpers@6.1.2)
13
+
14
+ ## 6.2.0
15
+
16
+ ### Minor Changes
17
+
18
+ - [#437](https://github.com/swapkit/sdk/pull/437) [`5baea45`](https://github.com/swapkit/sdk/commit/5baea45e1595c1582e1d1911fa99177f5e8150f0) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - Export `tronAddressToHex` from `@swapkit/toolboxes/tron` so hardware wallets can reuse the checksum-validated address conversion.
19
+ - [#436](https://github.com/swapkit/sdk/pull/436) [`b7890a5`](https://github.com/swapkit/sdk/commit/b7890a5413c888b7114c512f197bd944672c5256) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - Fee-bump replacements from nested segwit and taproot addresses can now be signed by external wallets
20
+ - [#419](https://github.com/swapkit/sdk/pull/419) [`b1b908b`](https://github.com/swapkit/sdk/commit/b1b908b64f5078d7bead574c5ff45f9ce4995ee8) Thanks [@ice-chillios](https://github.com/ice-chillios)! - Remove the CTRL (formerly XDEFI) and Leap wallet options, along with CTRL provider detection, its account-change listener and wallet-specific error codes. Update Cosmos signer documentation to refer to supported wallets. Integrations must remove CTRL and Leap from wallet configuration and use a supported wallet instead.
21
+ - [#433](https://github.com/swapkit/sdk/pull/433) [`c52f562`](https://github.com/swapkit/sdk/commit/c52f56237e2a9149ba12a89e0c8a47fb6138c66c) Thanks [@mfaizan1](https://github.com/mfaizan1)! - Accept PSBT inputs a wallet has already finalized. OKX Wallet finalizes inside `signPsbt` and drops `tapKeySig`, so `finalize()` threw `finalize/taproot: unknown input` and every OKX taproot send failed before broadcast. (via @swapkit/utxo-signer@3.1.1)
22
+ - [#434](https://github.com/swapkit/sdk/pull/434) [`151c624`](https://github.com/swapkit/sdk/commit/151c6247a0c84e75d365853a48630d20d746477e) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - Support Zcash swaps through THORChain: only transparent addresses are accepted and the ZEC minimum amount matches the THORChain dust threshold. (via @swapkit/helpers@6.1.1)
23
+ - [#435](https://github.com/swapkit/sdk/pull/435) [`94a2a79`](https://github.com/swapkit/sdk/commit/94a2a79867f89b5a12f34169a20e904469a010dc) Thanks [@hippocampusSK](https://github.com/hippocampusSK)! - Add `tonConnect` to the SKConfig integrations type so wallets can read the TON Connect manifest URL from `SKConfig.get("integrations").tonConnect?.manifestUrl`. (via @swapkit/helpers@6.1.1)
24
+ - [#430](https://github.com/swapkit/sdk/pull/430) [`9d44f87`](https://github.com/swapkit/sdk/commit/9d44f87ec8cd6ebef168a8ea64ec492f25d3d305) Thanks [@github-actions](https://github.com/apps/github-actions)! - Update generated token lists. (via @swapkit/helpers@6.1.1)
25
+
3
26
  ## 6.1.0
4
27
 
5
28
  ### Minor Changes
@@ -1 +1 @@
1
- import{ja as R}from"../../chunk-exyqap7m.js";import{bech32 as ne}from"@scure/base";import{mnemonicToEntropy as re}from"@scure/bip39";import{wordlist as oe}from"@scure/bip39/wordlists/english.js";import{AssetValue as S,Chain as w,getChainConfig as se,SwapKitError as h}from"@swapkit/helpers";import m from"bignumber.js";var X="mainnet3YT7XK6NidLPlkHxxyBB5V0WzXUOTIJS",J="https://cardano-mainnet.blockfrost.io/api/v0",U=2147483648,W=0;async function z(e,t){let o=await fetch(`${J}${e}`,{...t,headers:{project_id:X,...t?.headers}});if(!o.ok)throw Error(`Blockfrost API error: ${o.status} ${o.statusText}`);return o.json()}async function Q(e){try{return await z(`/addresses/${e}/utxos`)}catch{return[]}}async function ae(){return(await z("/blocks/latest")).slot}async function ie(){let e=await z("/epochs/latest/parameters"),t={PlutusScriptV1:e.cost_models.PlutusV1?Object.values(e.cost_models.PlutusV1):[],PlutusScriptV2:e.cost_models.PlutusV2?Object.values(e.cost_models.PlutusV2):[],PlutusScriptV3:e.cost_models.PlutusV3?Object.values(e.cost_models.PlutusV3):[]};return{collateralPercent:new m(e.collateral_percent),languageView:t,maxValueSize:Number.parseInt(e.max_val_size,10),minFeeA:new m(e.min_fee_a),minFeeB:new m(e.min_fee_b),minFeeRefScriptCostPerByte:new m(15),priceMem:new m(e.price_mem),priceSteps:new m(e.price_step),stakeKeyDeposit:new m(2000000),utxoCostPerByte:new m(e.coins_per_utxo_size)}}async function Y(e){let t=await fetch(`${J}/tx/submit`,{body:Buffer.from(e,"hex"),headers:{"Content-Type":"application/cbor",project_id:X},method:"POST"});if(!t.ok){let o=await t.text();throw Error(`Transaction submission failed: ${o}`)}return t.json()}function ce(e,t){return e.map((o)=>{let c=o.amount.find((r)=>r.unit==="lovelace"),a=c?new m(c.quantity):new m(0),u=o.amount.filter((r)=>r.unit!=="lovelace").map((r)=>({amount:new m(r.quantity),assetName:r.unit.slice(56),policyId:r.unit.slice(0,56)}));return{address:t,amount:a,index:o.output_index,tokens:u,txId:o.tx_hash}})}function ue({TransactionConstructor:e,auxiliaryData:t,bufferedParams:o,currentSlot:c,inputs:a,recipientAddress:u}){let r=a.reduce((n,s)=>n.plus(s.amount),new m(0));if(!r.isPositive())throw new h({errorKey:"toolbox_sweep_amount_too_low",info:{available:r.toString()}});let i=new e({protocolParams:o});for(let n of a)i.addInput(n);if(i.addOutput({address:u,amount:r,tokens:[]}),i.setTTL(c+3600),t)i.setAuxiliaryData(t);i.setFee(i.calculateFee());let y=i.getFee(),d=r.minus(y),p={address:u,amount:d,tokens:[]},P=i.calculateMinUtxoAmountBabbage(p);if(!d.isPositive()||d.lt(P))throw new h({errorKey:"toolbox_sweep_amount_too_low",info:{available:r.toString(),fee:y.toString(),minimumOutput:P.toString()}});return new e({protocolParams:o}).paymentTransaction({auxiliaryData:t,changeAddress:u,inputs:a,outputs:[p],ttl:c+3600})}async function de(e){try{let t=await Q(e),o=0n,c=new Map;for(let r of t){if(!r.amount||!Array.isArray(r.amount))continue;for(let i of r.amount){let{unit:y,quantity:d}=i;if(y==="lovelace")o+=BigInt(d);else{let p=c.get(y)||0n;c.set(y,p+BigInt(d))}}}let a=[],{baseDecimal:u}=se(w.Cardano);if(o>0n)a.push(S.from({chain:w.Cardano,fromBaseDecimal:u,value:o.toString()}));for(let[r,i]of c)a.push(S.from({asset:`${w.Cardano}.${r}`,value:i.toString()}));if(a.length===0)return[S.from({chain:w.Cardano})];return a}catch(t){let o=t instanceof Error?t.message:String(t);return console.error(`Cardano balance fetch error: ${o}`),[S.from({chain:w.Cardano})]}}function le(e){if(!e||typeof e!=="string")return!1;try{let t=ne.decode(e,120);return t.prefix==="addr"||t.prefix==="addr_test"}catch{return!1}}async function me(e,t=0,o=0){let{Bip32PrivateKey:c}=await import("@stricahq/bip32ed25519"),{types:a,address:u,crypto:r}=await import("@stricahq/typhonjs"),i=re(e,oe),d=(await c.fromEntropy(Buffer.from(Array.from(i)))).derive(U+1852).derive(U+1815).derive(U+t),p=d.derive(0).derive(o),P=p.toBip32PublicKey().toPublicKey().toBytes(),A=r.hash28(P),s=d.derive(2).derive(0).toBip32PublicKey().toPublicKey().toBytes(),l=r.hash28(s),_={hash:A,type:a.HashType.ADDRESS},T={hash:l,type:a.HashType.ADDRESS},C=new u.BaseAddress(a.NetworkId.MAINNET,_,T).getBech32(),B=p.toPrivateKey();return{getAddress:()=>C,publicKey:P,publicKeyHash:A,signTransaction:async(k)=>{try{let b=await import("@stricahq/cbors"),I=Buffer.from(k,"hex"),K=b.Decoder.decode(I),[D,O,L,V]=K.value,F=b.Encoder.encode(D),H=r.hash32(F),E=B.sign(H),v=O instanceof Map?O:new Map,M=v.get(W)||[];M.push([P,E]),v.set(W,M);let j=[D,v,L,V];return b.Encoder.encode(j).toString("hex")}catch(b){throw new h("toolbox_cardano_sign_transaction_failed",{message:String(b)})}}}}function we(e){let t,o,c;async function a(){if(!c)c=await ie();return c}async function u(){if(t!==void 0)return t;if(e&&"phrase"in e&&e.phrase){let{derivationPath:n}=e;if(n&&(n.length!==5||n[3]!==0||n[4]===void 0))throw new h("toolbox_derivation_slot_unsupported",{chain:w.Cardano,derivationPath:n});let s=n?.[2]??0,l=n?.[4]??e.index??0;return t=await me(e.phrase,s,l),t}if(e&&"signer"in e&&e.signer)return t=e.signer,t;return}async function r(){if(o)return o;let n=await u();if(!n)return"";if("getAddress"in n)return o=await n.getAddress(),o;return""}async function i(n){let s=n||await r();if(!s)throw new h("core_wallet_connection_not_found");return de(s)}async function y(n){if(n)try{let{tx:T}=await d(n),x=T.getFee();return S.from({chain:w.Cardano,fromBaseDecimal:6,value:x.toString()})}catch{}let s=await a(),l=400,_=s.minFeeB.plus(s.minFeeA.times(l));return S.from({chain:w.Cardano,fromBaseDecimal:6,value:_.toString()})}async function d({sender:n="",recipient:s,assetValue:l,memo:_,pureLovelaceOnly:T=!1,sweep:x=!1}){let{Transaction:C,utils:B}=await import("@stricahq/typhonjs"),k=n||await r();if(!k)throw new h("core_wallet_connection_not_found");let[b,I,K]=await Promise.all([Q(k),ae(),a()]);if(x&&!l.isGasAsset)throw new h({errorKey:"toolbox_not_supported",info:{asset:l.toString(),chain:w.Cardano,feature:"token_sweep"}});let D=x&&l.isGasAsset,O=T||D,L=b.filter((f)=>O?f.amount.some((g)=>g.unit==="lovelace")&&f.amount.every((g)=>g.unit==="lovelace"):f.amount.some((g)=>g.unit==="lovelace")).sort((f,g)=>{let G=f.amount.some((N)=>N.unit!=="lovelace"),te=g.amount.some((N)=>N.unit!=="lovelace");if(G===te)return 0;return G?1:-1}),V=B.getAddressFromString(k),F=B.getAddressFromString(s),H=ce(L,V),E;if(_){let f=new Map;f.set("msg",[_]),E={metadata:[{data:f,label:674}]}}let v={...K,minFeeB:K.minFeeB.plus(K.minFeeA.times(4))};if(D){let f=ue({auxiliaryData:E,bufferedParams:v,currentSlot:I,inputs:H,recipientAddress:F,TransactionConstructor:C}),{payload:g}=f.buildTransaction();return{tx:f,unsignedTx:g}}let M=new m(l.getBaseValue("string")),j=[{address:F,amount:M,tokens:[]}],q=new C({protocolParams:v}).paymentTransaction({auxiliaryData:E,changeAddress:V,inputs:H,outputs:j,ttl:I+3600}),{payload:ee}=q.buildTransaction();return{tx:q,unsignedTx:ee}}async function p(n){let s=await u();if(!s||!("signTransaction"in s))throw new h("core_wallet_connection_not_found");return s.signTransaction(n)}async function P({recipient:n,assetValue:s,memo:l,sweep:_}){let T=await u();if(!T||!("signTransaction"in T))throw new h("core_wallet_connection_not_found");let{unsignedTx:x}=await d({assetValue:s,memo:l,recipient:n,sender:await r(),sweep:_}),C=await p(x);return await Y(C)}async function A(n){let s=await p(n);return await Y(s)}return{createTransaction:d,estimateTransactionFee:y,getAddress:r,getBalance:i,signAndBroadcastTransaction:A,signTransaction:p,transfer:P,validateAddress:le}}export{we as getCardanoToolbox,le as validateCardanoAddress};
1
+ import{ja as C}from"../../chunk-exyqap7m.js";import{hex as W}from"@scure/base";import{SwapKitError as st}from"@swapkit/helpers";var V=0,it=258;function w(t){return new st("toolbox_cardano_sign_transaction_failed",{message:t})}async function q(t){let{Decoder:e}=await import("@stricahq/cbors"),n=Buffer.from(W.decode(t)),{value:s}=e.decode(n);if(!Array.isArray(s)||s.length!==4)throw w("Invalid Cardano transaction");let[a,i]=s;if(!(a instanceof Map)||!(i instanceof Map))throw w("Invalid Cardano transaction");return{body:a,bytes:n,witnessSet:i}}async function G(t){let{crypto:e}=await import("@stricahq/typhonjs"),{body:n,bytes:s}=await q(t),[a,i]=n.getByteSpan();return{body:n,bodyHash:e.hash32(s.subarray(a,i)).toString("hex")}}async function Y(t,e){let{Encoder:n}=await import("@stricahq/cbors"),{bytes:s,witnessSet:a}=await q(t),i=a.get(V)??[];if(!Array.isArray(i))throw w("Unsupported Cardano witness set");let r=e.map(({publicKey:l,signature:p})=>[Buffer.from(l),Buffer.from(p)]);a.set(V,[...i,...r]);let[c,d]=a.getByteSpan();return Buffer.concat([s.subarray(0,c),n.encode(a),s.subarray(d)]).toString("hex")}async function Pt(t){let{CborTag:e,Decoder:n}=await import("@stricahq/cbors"),{value:s}=n.decode(Buffer.from(W.decode(t)));if(!(s instanceof Map))throw w("Invalid Cardano witness set");if([...s.keys()].some((r)=>r!==V))throw w("Unsupported Cardano witness set");let a=s.get(V),i=a instanceof e&&a.tag===it?a.value:a;if(!Array.isArray(i)||i.length===0)throw w("Cardano witness set has no signatures");return i.map((r)=>{let[c,d]=Array.isArray(r)?r:[];if(!(c instanceof Uint8Array&&d instanceof Uint8Array))throw w("Invalid Cardano witness");if(c.length!==32||d.length!==64)throw w("Invalid Cardano witness");return{publicKey:Uint8Array.from(c),signature:Uint8Array.from(d)}})}async function Tt(t){let{utils:e}=await import("@stricahq/typhonjs");try{return e.getAddressFromHex(Buffer.from(t)).getBech32()}catch(n){throw w(`Invalid Cardano address: ${String(n)}`)}}async function xt(t){let{crypto:e}=await import("@stricahq/typhonjs");return e.hash28(Buffer.from(t))}import{bech32 as ct}from"@scure/base";import{mnemonicToEntropy as ut}from"@scure/bip39";import{wordlist as dt}from"@scure/bip39/wordlists/english.js";import{AssetValue as B,Chain as _,getChainConfig as lt,SwapKitError as g}from"@swapkit/helpers";import f from"bignumber.js";var J="mainnet3YT7XK6NidLPlkHxxyBB5V0WzXUOTIJS",Q="https://cardano-mainnet.blockfrost.io/api/v0",H=2147483648;async function O(t,e){let n=await fetch(`${Q}${t}`,{...e,headers:{project_id:J,...e?.headers}});if(!n.ok)throw Error(`Blockfrost API error: ${n.status} ${n.statusText}`);return n.json()}async function Z(t){try{return await O(`/addresses/${t}/utxos`)}catch{return[]}}async function pt(){return(await O("/blocks/latest")).slot}async function mt(){let t=await O("/epochs/latest/parameters"),e={PlutusScriptV1:t.cost_models.PlutusV1?Object.values(t.cost_models.PlutusV1):[],PlutusScriptV2:t.cost_models.PlutusV2?Object.values(t.cost_models.PlutusV2):[],PlutusScriptV3:t.cost_models.PlutusV3?Object.values(t.cost_models.PlutusV3):[]};return{collateralPercent:new f(t.collateral_percent),languageView:e,maxValueSize:Number.parseInt(t.max_val_size,10),minFeeA:new f(t.min_fee_a),minFeeB:new f(t.min_fee_b),minFeeRefScriptCostPerByte:new f(15),priceMem:new f(t.price_mem),priceSteps:new f(t.price_step),stakeKeyDeposit:new f(2000000),utxoCostPerByte:new f(t.coins_per_utxo_size)}}async function X(t){let e=await fetch(`${Q}/tx/submit`,{body:Buffer.from(t,"hex"),headers:{"Content-Type":"application/cbor",project_id:J},method:"POST"});if(!e.ok){let n=await e.text();throw Error(`Transaction submission failed: ${n}`)}return e.json()}function ft(t,e){return t.map((n)=>{let s=n.amount.find((r)=>r.unit==="lovelace"),a=s?new f(s.quantity):new f(0),i=n.amount.filter((r)=>r.unit!=="lovelace").map((r)=>({amount:new f(r.quantity),assetName:r.unit.slice(56),policyId:r.unit.slice(0,56)}));return{address:e,amount:a,index:n.output_index,tokens:i,txId:n.tx_hash}})}function yt({TransactionConstructor:t,auxiliaryData:e,bufferedParams:n,currentSlot:s,inputs:a,recipientAddress:i}){let r=a.reduce((o,u)=>o.plus(u.amount),new f(0));if(!r.isPositive())throw new g({errorKey:"toolbox_sweep_amount_too_low",info:{available:r.toString()}});let c=new t({protocolParams:n});for(let o of a)c.addInput(o);if(c.addOutput({address:i,amount:r,tokens:[]}),c.setTTL(s+3600),e)c.setAuxiliaryData(e);c.setFee(c.calculateFee());let d=c.getFee(),l=r.minus(d),p={address:i,amount:l,tokens:[]},b=c.calculateMinUtxoAmountBabbage(p);if(!l.isPositive()||l.lt(b))throw new g({errorKey:"toolbox_sweep_amount_too_low",info:{available:r.toString(),fee:d.toString(),minimumOutput:b.toString()}});return new t({protocolParams:n}).paymentTransaction({auxiliaryData:e,changeAddress:i,inputs:a,outputs:[p],ttl:s+3600})}async function gt(t){try{let e=await Z(t),n=0n,s=new Map;for(let r of e){if(!r.amount||!Array.isArray(r.amount))continue;for(let c of r.amount){let{unit:d,quantity:l}=c;if(d==="lovelace")n+=BigInt(l);else{let p=s.get(d)||0n;s.set(d,p+BigInt(l))}}}let a=[],{baseDecimal:i}=lt(_.Cardano);if(n>0n)a.push(B.from({chain:_.Cardano,fromBaseDecimal:i,value:n.toString()}));for(let[r,c]of s)a.push(B.from({asset:`${_.Cardano}.${r}`,value:c.toString()}));if(a.length===0)return[B.from({chain:_.Cardano})];return a}catch(e){let n=e instanceof Error?e.message:String(e);return console.error(`Cardano balance fetch error: ${n}`),[B.from({chain:_.Cardano})]}}function ht(t){if(!t||typeof t!=="string")return!1;try{let e=ct.decode(t,120);return e.prefix==="addr"||e.prefix==="addr_test"}catch{return!1}}async function wt(t,e=0,n=0){let{Bip32PrivateKey:s}=await import("@stricahq/bip32ed25519"),{types:a,address:i,crypto:r}=await import("@stricahq/typhonjs"),c=ut(t,dt),l=(await s.fromEntropy(Buffer.from(Array.from(c)))).derive(H+1852).derive(H+1815).derive(H+e),p=l.derive(0).derive(n),b=p.toBip32PublicKey().toPublicKey().toBytes(),k=r.hash28(b),u=l.derive(2).derive(0).toBip32PublicKey().toPublicKey().toBytes(),m=r.hash28(u),P={hash:k,type:a.HashType.ADDRESS},T={hash:m,type:a.HashType.ADDRESS},v=new i.BaseAddress(a.NetworkId.MAINNET,P,T).getBech32(),K=p.toPrivateKey();return{getAddress:()=>v,publicKey:b,publicKeyHash:k,signTransaction:async(S)=>{try{let{bodyHash:A}=await G(S),I=K.sign(Buffer.from(A,"hex"));return await Y(S,[{publicKey:b,signature:I}])}catch(A){if(A instanceof g)throw A;throw new g("toolbox_cardano_sign_transaction_failed",{message:String(A)})}}}}function Vt(t){let e,n,s;async function a(){if(!s)s=await mt();return s}async function i(){if(e!==void 0)return e;if(t&&"phrase"in t&&t.phrase){let{derivationPath:o}=t;if(o&&(o.length!==5||o[3]!==0||o[4]===void 0))throw new g("toolbox_derivation_slot_unsupported",{chain:_.Cardano,derivationPath:o});let u=o?.[2]??0,m=o?.[4]??t.index??0;return e=await wt(t.phrase,u,m),e}if(t&&"signer"in t&&t.signer)return e=t.signer,e;return}async function r(){if(n)return n;let o=await i();if(!o)return"";if("getAddress"in o)return n=await o.getAddress(),n;return""}async function c(o){let u=o||await r();if(!u)throw new g("core_wallet_connection_not_found");return gt(u)}async function d(o){if(o)try{let{tx:T}=await l(o),x=T.getFee();return B.from({chain:_.Cardano,fromBaseDecimal:6,value:x.toString()})}catch{}let u=await a(),m=400,P=u.minFeeB.plus(u.minFeeA.times(m));return B.from({chain:_.Cardano,fromBaseDecimal:6,value:P.toString()})}async function l({sender:o="",recipient:u,assetValue:m,memo:P,pureLovelaceOnly:T=!1,sweep:x=!1}){let{Transaction:v,utils:K}=await import("@stricahq/typhonjs"),S=o||await r();if(!S)throw new g("core_wallet_connection_not_found");let[A,I,D]=await Promise.all([Z(S),pt(),a()]);if(x&&!m.isGasAsset)throw new g({errorKey:"toolbox_not_supported",info:{asset:m.toString(),chain:_.Cardano,feature:"token_sweep"}});let U=x&&m.isGasAsset,tt=T||U,et=A.filter((y)=>tt?y.amount.some((h)=>h.unit==="lovelace")&&y.amount.every((h)=>h.unit==="lovelace"):y.amount.some((h)=>h.unit==="lovelace")).sort((y,h)=>{let z=y.amount.some((F)=>F.unit!=="lovelace"),ot=h.amount.some((F)=>F.unit!=="lovelace");if(z===ot)return 0;return z?1:-1}),M=K.getAddressFromString(S),R=K.getAddressFromString(u),L=ft(et,M),E;if(P){let y=new Map;y.set("msg",[P]),E={metadata:[{data:y,label:674}]}}let j={...D,minFeeB:D.minFeeB.plus(D.minFeeA.times(4))};if(U){let y=yt({auxiliaryData:E,bufferedParams:j,currentSlot:I,inputs:L,recipientAddress:R,TransactionConstructor:v}),{payload:h}=y.buildTransaction();return{tx:y,unsignedTx:h}}let nt=new f(m.getBaseValue("string")),rt=[{address:R,amount:nt,tokens:[]}],N=new v({protocolParams:j}).paymentTransaction({auxiliaryData:E,changeAddress:M,inputs:L,outputs:rt,ttl:I+3600}),{payload:at}=N.buildTransaction();return{tx:N,unsignedTx:at}}async function p(o){let u=await i();if(!u||!("signTransaction"in u))throw new g("core_wallet_connection_not_found");return u.signTransaction(o)}async function b({recipient:o,assetValue:u,memo:m,sweep:P}){let T=await i();if(!T||!("signTransaction"in T))throw new g("core_wallet_connection_not_found");let{unsignedTx:x}=await l({assetValue:u,memo:m,recipient:o,sender:await r(),sweep:P}),v=await p(x);return await X(v)}async function k(o){let u=await p(o);return await X(u)}return{createTransaction:l,estimateTransactionFee:d,getAddress:r,getBalance:c,signAndBroadcastTransaction:k,signTransaction:p,transfer:b,validateAddress:ht}}export{Y as addCardanoVkeyWitnesses,G as decodeCardanoTransaction,Pt as decodeCardanoWitnessSet,Tt as getCardanoAddressFromBytes,xt as getCardanoPublicKeyHash,Vt as getCardanoToolbox,ht as validateCardanoAddress};
@@ -1 +1 @@
1
- import"../../chunk-exyqap7m.js";import{base64 as z,bech32 as Y}from"@scure/base";import{SwapKitError as st}from"@swapkit/helpers";function X(i){return z.encode(Uint8Array.from(Y.fromWords(Y.decode(i).words)))}function Q(i,o="thor"){return Y.encode(o,Y.toWords(z.decode(i)))}function ve(i){return z.encode(i)}function De(i){if(!i.match(/^[a-zA-Z0-9+/]*={0,2}$/))throw new st("toolbox_cosmos_invalid_params",{error:"Invalid base64 string format"});return z.decode(i)}import{encodeMessage as Ft,encodeTxBody as It}from"@swapkit/cosmos-signer";import{AssetValue as Rt,Chain as en,getChainConfig as Kn,getRPCUrl as yn,SwapKitError as gn}from"@swapkit/helpers";import{base64 as ln}from"@scure/base";import{broadcastTx as Z,getAccount as Dn,getBalances as ct,createTendermintRpc as at,defaultEncoders as ut,encodeAuthInfo as Pn,encodeMessage as lt,encodePubkey as ft,encodeTxBody as dt,encodeTxRaw as vn,makeStdSignDoc as mt}from"@swapkit/cosmos-signer";import{AssetValue as fn,Chain as g,getChainConfig as D,getRPCUrl as pt,RequestClient as yt,SKConfig as gt,SwapKitError as P,SwapKitNumber as dn}from"@swapkit/helpers";var Mn="FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK",ht="FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM",bt={amount:[{amount:"500",denom:"uatom"}],gas:"200000"},wt={amount:[{amount:"1000",denom:"ukuji"}],gas:"200000"},At={amount:[{amount:"1000",denom:"uusdc"}],gas:"200000"};function M(i){switch(i){case g.Maya:return{amount:[],gas:"10000000000"};case g.THORChain:return{amount:[],gas:"500000000"};case g.Kujira:return wt;case g.Noble:return At;default:return bt}}async function nn(i){let o=gt.get("thornodeUrls"),r=i===g.Maya,t=`${o[i]}/${r?"mayachain":"thorchain"}/constants`,e=D(i).baseDecimal;try{let{int_64_values:{NativeTransactionFee:s}}=await yt.get(t);if(!Number.isInteger(s)||s<=0)throw new P("toolbox_cosmos_invalid_fee",{nativeFee:s.toString()});return dn.fromBigInt(BigInt(s),e)}catch{let s=r?10000000000n:2000000n;return dn.fromBigInt(s,e)}}var U=(i,o=!1)=>{if(o)return i.toLowerCase();switch(i){case"uUSK":case"USK":return Mn;case"uYUM":case"YUM":return ht;case"uKUJI":case"KUJI":return"ukuji";case"ATOM":case"uATOM":return"uatom";case"uUSDC":case"USDC":case"NOBLE":return"uusdc";default:return i}},tn=({symbol:i,chain:o})=>{if(o===g.Maya)return(i.toUpperCase()!=="CACAO"?i:`${g.Maya}.${i}`).toUpperCase();if(o===g.THORChain)return(["RUNE","TCY","RUJI"].includes(i.toUpperCase())?`${g.THORChain}.${i}`:i).toUpperCase();return U(i,!1)},St=()=>typeof window<"u"?{}:{referer:"https://sdk.swapkit.dev",referrer:"https://sdk.swapkit.dev"};function _n(i){return at(i,{headers:St()})}function Un(i){return{amount:i.amount,denom:i.denom}}function Ct(i,o){if(!i)return null;if("toAmino"in i&&typeof i.toAmino==="function")return null;let n=i[o];return n?{aminoType:n.aminoType,toAmino:n.toAmino}:null}async function _(i){let o=_n(i);return{async broadcastTx(r){let n=await Z(o,r,"sync");if(n.code!==0)throw new P("core_swap_transaction_error",{code:n.code,message:n.log});return{code:n.code,rawLog:n.log,transactionHash:n.hash}},async getAccount(r){let n=await Dn(o,r);if(!n)return null;return{accountNumber:Number(n.accountNumber),address:n.address,pubkey:n.pubKey?{type:n.pubKey.typeUrl,value:n.pubKey.key}:null,sequence:Number(n.sequence)}},async getAllBalances(r){return(await ct(o,r)).map((t)=>({amount:t.amount,denom:t.denom}))}}}function Nn(i,o={}){let r=Ot(i);async function n(t,e,s,c,a){let h=(await i.getAccounts()).find((b)=>b.address===t);if(!h)throw new P("toolbox_cosmos_signer_not_defined");let A=vt({memo:c,messages:e,registry:o.registry}),S=ft({type:"tendermint/PubKeySecp256k1",value:ln.encode(h.pubkey)});if(r){let b=e.map((E)=>Pt(E,o.aminoTypes)),w=mt({accountNumber:a.accountNumber,chainId:a.chainId,fee:Tt(s),memo:c,msgs:b,sequence:a.sequence}),C=await i.signAmino(t,w),T=Pn({fee:kt(C.signed.fee,s),signerInfos:[{mode:"amino",pubkey:S,sequence:BigInt(C.signed.sequence)}]}),k=ln.decode(C.signature.signature);return{authInfoBytes:T,bodyBytes:A,signatures:[k]}}let m=Pn({fee:xt(s),signerInfos:[{mode:"direct",pubkey:S,sequence:BigInt(a.sequence)}]}),l=await i.signDirect(t,{accountNumber:a.accountNumber,authInfoBytes:m,bodyBytes:A,chainId:a.chainId}),y=ln.decode(l.signature.signature);return{authInfoBytes:m,bodyBytes:A,signatures:[y]}}return{signWithRegistry:n}}function Ot(i){return typeof i.signAmino==="function"}function Tt(i){return{amount:i.amount.map((o)=>({amount:o.amount,denom:o.denom})),gas:i.gas,...i.granter?{granter:i.granter}:{},...i.payer?{payer:i.payer}:{}}}function xt(i){return{amount:i.amount.map(Un),gasLimit:BigInt(i.gas),...i.granter?{granter:i.granter}:{},...i.payer?{payer:i.payer}:{}}}function kt(i,o){return{amount:i.amount.map(Un),gasLimit:BigInt(i.gas),...i.granter??o.granter?{granter:i.granter??o.granter}:{},...i.payer??o.payer?{payer:i.payer??o.payer}:{}}}function Pt(i,o){if(o&&"toAmino"in o&&typeof o.toAmino==="function")return o.toAmino(i);let r=Ct(o,i.typeUrl);if(!r){if(i.typeUrl==="/cosmos.bank.v1beta1.MsgSend"){let n=i.value;return{type:"cosmos-sdk/MsgSend",value:{amount:n.amount,from_address:n.fromAddress,to_address:n.toAddress}}}throw new P("toolbox_cosmos_invalid_params",{error:`No amino converter for ${i.typeUrl}`})}return{type:r.aminoType,value:r.toAmino(i.value)}}function vt(i){let{memo:o,messages:r,registry:n}=i;if(n&&"encode"in n&&typeof n.encode==="function")return n.encode({typeUrl:"/cosmos.tx.v1beta1.TxBody",value:{memo:o,messages:r}});let t={...ut,...n??{}},e=r.map((s)=>lt(s,t));return dt({memo:o,messages:e})}async function L(i,o,r={}){let n=typeof r==="string"?{}:r,t=_n(i),e=Nn(o,n);async function s(c,a){let p=await Dn(t,c);if(!p)throw new P("toolbox_cosmos_account_not_found",{sender:c});let h=a?.chainId??(await t.status()).chainId;return{accountNumber:a?.accountNumber??p.accountNumber,chainId:h,sequence:a?.sequence??p.sequence}}return{async broadcastTx(c){let a=await Z(t,c,"sync");if(a.code!==0)throw new P("core_swap_transaction_error",{code:a.code,message:a.log});return{code:a.code,rawLog:a.log,transactionHash:a.hash}},async sendTokens(c,a,p,h,A=""){let S=[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:{amount:p.map((w)=>({amount:w.amount,denom:w.denom})),fromAddress:c,toAddress:a}}],m=await s(c),l=await e.signWithRegistry(c,S,h,A,m),y=vn({authInfoBytes:l.authInfoBytes,bodyBytes:l.bodyBytes,signatures:l.signatures}),b=await Z(t,y,"sync");if(b.code!==0)throw new P("core_swap_transaction_error",{code:b.code,message:b.log});return{code:b.code,rawLog:b.log,transactionHash:b.hash}},async sign(c,a,p,h,A){let S=A??await s(c);return e.signWithRegistry(c,a,p,h,S)},async signAndBroadcast(c,a,p,h=""){let A=await s(c),S=await e.signWithRegistry(c,a,p,h,A),m=vn({authInfoBytes:S.authInfoBytes,bodyBytes:S.bodyBytes,signatures:S.signatures}),l=await Z(t,m,"sync");return{code:l.code,rawLog:l.log,transactionHash:l.hash}}}}async function Bn(i,o){let r=Nn(i,o??{});return{sign(n,t,e,s,c){if(!c)throw new P("toolbox_cosmos_invalid_params",{error:"createOfflineStargateClient.sign requires signerData"});return r.signWithRegistry(n,t,e,s,c)}}}var Dt=(i)=>{switch(i){case g.Maya:case g.THORChain:return"/types.MsgSend";case g.Cosmos:case g.Kujira:case g.Noble:return"/cosmos.bank.v1beta1.MsgSend";default:throw new P("toolbox_cosmos_not_supported",{chain:i})}};async function Mt({client:i,sender:o}){let r=await i.getAccount(o);if(!r)throw new P("toolbox_cosmos_account_not_found",{sender:o});return r}async function Fn({sender:i,recipient:o,assetValue:r,memo:n="",feeRate:t,sequence:e,accountNumber:s,sweep:c}){let{chain:a,chainId:p}=r,h=s===void 0||e===void 0,A=c||h?await _(await pt(a)):void 0,S=h&&A?await Mt({client:A,sender:i}):void 0,m=fn.from({chain:a}),l=U(m.symbol),y=M(a),b=l&&t?{amount:[{amount:t.toString(),denom:l}],gas:y.gas}:y,w=U(r.symbol),C=r;if(c){if(!A)throw new P("toolbox_cosmos_account_not_found",{sender:i});C=W({assetValue:r,balances:await A.getAllBalances(i),denom:w,feeAmount:mn(b.amount,w)})}let T={amount:[{amount:C.getBaseValue("string"),denom:w}],fromAddress:i,toAddress:o};return{accountNumber:s??Number(S?.accountNumber),chainId:p,fee:b,memo:n,msgs:[{typeUrl:Dt(a),value:T}],sequence:e??Number(S?.sequence)}}function mn(i,o){let r=o.toLowerCase();return i.reduce((n,t)=>t.denom.toLowerCase()===r?n+BigInt(t.amount):n,0n)}function W({assetValue:i,balances:o,denom:r,feeAmount:n=0n}){let t=r.toLowerCase(),e=o.find(({denom:a})=>a.toLowerCase()===t),s=BigInt(e?.amount??"0"),c=s-n;if(c<=0n)throw new P("toolbox_sweep_amount_too_low",{asset:i.toString(),balance:s.toString(),fee:n.toString()});return i.set(dn.fromBigInt(c,i.decimal))}var _t={atom:{chain:g.Cosmos,decimals:D(g.Cosmos).baseDecimal},cacao:{chain:g.Maya,decimals:10},kuji:{chain:g.Kujira,decimals:D(g.Kujira).baseDecimal},maya:{asset:`${g.Maya}.${g.Maya}`,decimals:4},rune:{chain:g.THORChain,decimals:D(g.THORChain).baseDecimal},tcy:{asset:"THOR.TCY",decimals:D(g.THORChain).baseDecimal},uatom:{chain:g.Cosmos,decimals:D(g.Cosmos).baseDecimal},ukuji:{chain:g.Kujira,decimals:D(g.Kujira).baseDecimal},usdc:{chain:g.Noble,decimals:D(g.Noble).baseDecimal},uusdc:{chain:g.Noble,decimals:D(g.Noble).baseDecimal},"x/kuji":{asset:"THOR.KUJI",decimals:D(g.THORChain).baseDecimal},[Mn.toLowerCase()]:{asset:`${g.Kujira}.USK`,decimals:D(g.Kujira).baseDecimal}},In=(i,o)=>{let r=_t[i.toLowerCase()];if(!r)return fn.from({asset:i,fromBaseDecimal:8,value:o});let{chain:n,asset:t,decimals:e}=r,s=n?{chain:n}:{asset:t};return fn.from({...s,fromBaseDecimal:e,value:o})};import{defaultEncoders as Ut}from"@swapkit/cosmos-signer";import{Chain as Rn}from"@swapkit/helpers";import O from"protobufjs/minimal.js";var d=O.Reader,v=O.Writer,f=O.util,u=O.roots.default||(O.roots.default={});u.common=(()=>{let i={};return i.Asset=(()=>{function o(r){if(r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.chain="",o.prototype.symbol="",o.prototype.ticker="",o.prototype.synth=!1,o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.chain!=null&&Object.hasOwnProperty.call(n,"chain"))t.uint32(10).string(n.chain);if(n.symbol!=null&&Object.hasOwnProperty.call(n,"symbol"))t.uint32(18).string(n.symbol);if(n.ticker!=null&&Object.hasOwnProperty.call(n,"ticker"))t.uint32(26).string(n.ticker);if(n.synth!=null&&Object.hasOwnProperty.call(n,"synth"))t.uint32(32).bool(n.synth);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.Asset;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.chain=n.string();break;case 2:s.symbol=n.string();break;case 3:s.ticker=n.string();break;case 4:s.synth=n.bool();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.chain!=null&&n.hasOwnProperty("chain")){if(!f.isString(n.chain))return"chain: string expected"}if(n.symbol!=null&&n.hasOwnProperty("symbol")){if(!f.isString(n.symbol))return"symbol: string expected"}if(n.ticker!=null&&n.hasOwnProperty("ticker")){if(!f.isString(n.ticker))return"ticker: string expected"}if(n.synth!=null&&n.hasOwnProperty("synth")){if(typeof n.synth!=="boolean")return"synth: boolean expected"}return null},o.fromObject=function(n){if(n instanceof u.common.Asset)return n;let t=new u.common.Asset;if(n.chain!=null)t.chain=String(n.chain);if(n.symbol!=null)t.symbol=String(n.symbol);if(n.ticker!=null)t.ticker=String(n.ticker);if(n.synth!=null)t.synth=Boolean(n.synth);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.defaults)e.chain="",e.symbol="",e.ticker="",e.synth=!1;if(n.chain!=null&&n.hasOwnProperty("chain"))e.chain=n.chain;if(n.symbol!=null&&n.hasOwnProperty("symbol"))e.symbol=n.symbol;if(n.ticker!=null&&n.hasOwnProperty("ticker"))e.ticker=n.ticker;if(n.synth!=null&&n.hasOwnProperty("synth"))e.synth=n.synth;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.Coin=(()=>{function o(r){if(r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.asset=null,o.prototype.amount="",o.prototype.decimals=f.Long?f.Long.fromBits(0,0,!1):0,o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.asset!=null&&Object.hasOwnProperty.call(n,"asset"))u.common.Asset.encode(n.asset,t.uint32(10).fork()).ldelim();if(n.amount!=null&&Object.hasOwnProperty.call(n,"amount"))t.uint32(18).string(n.amount);if(n.decimals!=null&&Object.hasOwnProperty.call(n,"decimals"))t.uint32(24).int64(n.decimals);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.Coin;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.asset=u.common.Asset.decode(n,n.uint32());break;case 2:s.amount=n.string();break;case 3:s.decimals=n.int64();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.asset!=null&&n.hasOwnProperty("asset")){let t=u.common.Asset.verify(n.asset);if(t)return"asset."+t}if(n.amount!=null&&n.hasOwnProperty("amount")){if(!f.isString(n.amount))return"amount: string expected"}if(n.decimals!=null&&n.hasOwnProperty("decimals")){if(!f.isInteger(n.decimals)&&!(n.decimals&&f.isInteger(n.decimals.low)&&f.isInteger(n.decimals.high)))return"decimals: integer|Long expected"}return null},o.fromObject=function(n){if(n instanceof u.common.Coin)return n;let t=new u.common.Coin;if(n.asset!=null){if(typeof n.asset!=="object")throw TypeError(".common.Coin.asset: object expected");t.asset=u.common.Asset.fromObject(n.asset)}if(n.amount!=null)t.amount=String(n.amount);if(n.decimals!=null){if(f.Long)(t.decimals=f.Long.fromValue(n.decimals)).unsigned=!1;else if(typeof n.decimals==="string")t.decimals=Number.parseInt(n.decimals,10);else if(typeof n.decimals==="number")t.decimals=n.decimals;else if(typeof n.decimals==="object")t.decimals=new f.LongBits(n.decimals.low>>>0,n.decimals.high>>>0).toNumber()}return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.defaults)if(e.asset=null,e.amount="",f.Long){let s=new f.Long(0,0,!1);e.decimals=t.longs===String?s.toString():t.longs===Number?s.toNumber():s}else e.decimals=t.longs===String?"0":0;if(n.asset!=null&&n.hasOwnProperty("asset"))e.asset=u.common.Asset.toObject(n.asset,t);if(n.amount!=null&&n.hasOwnProperty("amount"))e.amount=n.amount;if(n.decimals!=null&&n.hasOwnProperty("decimals"))if(typeof n.decimals==="number")e.decimals=t.longs===String?String(n.decimals):n.decimals;else e.decimals=t.longs===String?f.Long.prototype.toString.call(n.decimals):t.longs===Number?new f.LongBits(n.decimals.low>>>0,n.decimals.high>>>0).toNumber():n.decimals;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.PubKeySet=(()=>{function o(r){if(r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.secp256k1="",o.prototype.ed25519="",o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.secp256k1!=null&&Object.hasOwnProperty.call(n,"secp256k1"))t.uint32(10).string(n.secp256k1);if(n.ed25519!=null&&Object.hasOwnProperty.call(n,"ed25519"))t.uint32(18).string(n.ed25519);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.PubKeySet;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.secp256k1=n.string();break;case 2:s.ed25519=n.string();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.secp256k1!=null&&n.hasOwnProperty("secp256k1")){if(!f.isString(n.secp256k1))return"secp256k1: string expected"}if(n.ed25519!=null&&n.hasOwnProperty("ed25519")){if(!f.isString(n.ed25519))return"ed25519: string expected"}return null},o.fromObject=function(n){if(n instanceof u.common.PubKeySet)return n;let t=new u.common.PubKeySet;if(n.secp256k1!=null)t.secp256k1=String(n.secp256k1);if(n.ed25519!=null)t.ed25519=String(n.ed25519);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.defaults)e.secp256k1="",e.ed25519="";if(n.secp256k1!=null&&n.hasOwnProperty("secp256k1"))e.secp256k1=n.secp256k1;if(n.ed25519!=null&&n.hasOwnProperty("ed25519"))e.ed25519=n.ed25519;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.Tx=(()=>{function o(r){if(this.coins=[],this.gas=[],r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.id="",o.prototype.chain="",o.prototype.fromAddress="",o.prototype.toAddress="",o.prototype.coins=f.emptyArray,o.prototype.gas=f.emptyArray,o.prototype.memo="",o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.id!=null&&Object.hasOwnProperty.call(n,"id"))t.uint32(10).string(n.id);if(n.chain!=null&&Object.hasOwnProperty.call(n,"chain"))t.uint32(18).string(n.chain);if(n.fromAddress!=null&&Object.hasOwnProperty.call(n,"fromAddress"))t.uint32(26).string(n.fromAddress);if(n.toAddress!=null&&Object.hasOwnProperty.call(n,"toAddress"))t.uint32(34).string(n.toAddress);if(n.coins?.length)for(let e=0;e<n.coins.length;++e)u.common.Coin.encode(n.coins[e],t.uint32(42).fork()).ldelim();if(n.gas?.length)for(let e=0;e<n.gas.length;++e)u.common.Coin.encode(n.gas[e],t.uint32(50).fork()).ldelim();if(n.memo!=null&&Object.hasOwnProperty.call(n,"memo"))t.uint32(58).string(n.memo);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.Tx;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.id=n.string();break;case 2:s.chain=n.string();break;case 3:s.fromAddress=n.string();break;case 4:s.toAddress=n.string();break;case 5:if(!s.coins?.length)s.coins=[];s.coins.push(u.common.Coin.decode(n,n.uint32()));break;case 6:if(!s.gas?.length)s.gas=[];s.gas.push(u.common.Coin.decode(n,n.uint32()));break;case 7:s.memo=n.string();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.id!=null&&n.hasOwnProperty("id")){if(!f.isString(n.id))return"id: string expected"}if(n.chain!=null&&n.hasOwnProperty("chain")){if(!f.isString(n.chain))return"chain: string expected"}if(n.fromAddress!=null&&n.hasOwnProperty("fromAddress")){if(!f.isString(n.fromAddress))return"fromAddress: string expected"}if(n.toAddress!=null&&n.hasOwnProperty("toAddress")){if(!f.isString(n.toAddress))return"toAddress: string expected"}if(n.coins!=null&&n.hasOwnProperty("coins")){if(!Array.isArray(n.coins))return"coins: array expected";for(let t=0;t<n.coins.length;++t){let e=u.common.Coin.verify(n.coins[t]);if(e)return"coins."+e}}if(n.gas!=null&&n.hasOwnProperty("gas")){if(!Array.isArray(n.gas))return"gas: array expected";for(let t=0;t<n.gas.length;++t){let e=u.common.Coin.verify(n.gas[t]);if(e)return"gas."+e}}if(n.memo!=null&&n.hasOwnProperty("memo")){if(!f.isString(n.memo))return"memo: string expected"}return null},o.fromObject=function(n){if(n instanceof u.common.Tx)return n;let t=new u.common.Tx;if(n.id!=null)t.id=String(n.id);if(n.chain!=null)t.chain=String(n.chain);if(n.fromAddress!=null)t.fromAddress=String(n.fromAddress);if(n.toAddress!=null)t.toAddress=String(n.toAddress);if(n.coins){if(!Array.isArray(n.coins))throw TypeError(".common.Tx.coins: array expected");t.coins=[];for(let e=0;e<n.coins.length;++e){if(typeof n.coins[e]!=="object")throw TypeError(".common.Tx.coins: object expected");t.coins[e]=u.common.Coin.fromObject(n.coins[e])}}if(n.gas){if(!Array.isArray(n.gas))throw TypeError(".common.Tx.gas: array expected");t.gas=[];for(let e=0;e<n.gas.length;++e){if(typeof n.gas[e]!=="object")throw TypeError(".common.Tx.gas: object expected");t.gas[e]=u.common.Coin.fromObject(n.gas[e])}}if(n.memo!=null)t.memo=String(n.memo);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.arrays||t.defaults)e.coins=[],e.gas=[];if(t.defaults)e.id="",e.chain="",e.fromAddress="",e.toAddress="",e.memo="";if(n.id!=null&&n.hasOwnProperty("id"))e.id=n.id;if(n.chain!=null&&n.hasOwnProperty("chain"))e.chain=n.chain;if(n.fromAddress!=null&&n.hasOwnProperty("fromAddress"))e.fromAddress=n.fromAddress;if(n.toAddress!=null&&n.hasOwnProperty("toAddress"))e.toAddress=n.toAddress;if(n.coins?.length){e.coins=[];for(let s=0;s<n.coins.length;++s)e.coins[s]=u.common.Coin.toObject(n.coins[s],t)}if(n.gas?.length){e.gas=[];for(let s=0;s<n.gas.length;++s)e.gas[s]=u.common.Coin.toObject(n.gas[s],t)}if(n.memo!=null&&n.hasOwnProperty("memo"))e.memo=n.memo;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.Fee=(()=>{function o(r){if(this.coins=[],r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.coins=f.emptyArray,o.prototype.poolDeduct="",o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.coins?.length)for(let e=0;e<n.coins.length;++e)u.common.Coin.encode(n.coins[e],t.uint32(10).fork()).ldelim();if(n.poolDeduct!=null&&Object.hasOwnProperty.call(n,"poolDeduct"))t.uint32(18).string(n.poolDeduct);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.Fee;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:if(!s.coins?.length)s.coins=[];s.coins.push(u.common.Coin.decode(n,n.uint32()));break;case 2:s.poolDeduct=n.string();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.coins!=null&&n.hasOwnProperty("coins")){if(!Array.isArray(n.coins))return"coins: array expected";for(let t=0;t<n.coins.length;++t){let e=u.common.Coin.verify(n.coins[t]);if(e)return"coins."+e}}if(n.poolDeduct!=null&&n.hasOwnProperty("poolDeduct")){if(!f.isString(n.poolDeduct))return"poolDeduct: string expected"}return null},o.fromObject=function(n){if(n instanceof u.common.Fee)return n;let t=new u.common.Fee;if(n.coins){if(!Array.isArray(n.coins))throw TypeError(".common.Fee.coins: array expected");t.coins=[];for(let e=0;e<n.coins.length;++e){if(typeof n.coins[e]!=="object")throw TypeError(".common.Fee.coins: object expected");t.coins[e]=u.common.Coin.fromObject(n.coins[e])}}if(n.poolDeduct!=null)t.poolDeduct=String(n.poolDeduct);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.arrays||t.defaults)e.coins=[];if(t.defaults)e.poolDeduct="";if(n.coins?.length){e.coins=[];for(let s=0;s<n.coins.length;++s)e.coins[s]=u.common.Coin.toObject(n.coins[s],t)}if(n.poolDeduct!=null&&n.hasOwnProperty("poolDeduct"))e.poolDeduct=n.poolDeduct;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.ProtoUint=(()=>{function o(r){if(r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.value="",o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.value!=null&&Object.hasOwnProperty.call(n,"value"))t.uint32(10).string(n.value);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.ProtoUint;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.value=n.string();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.value!=null&&n.hasOwnProperty("value")){if(!f.isString(n.value))return"value: string expected"}return null},o.fromObject=function(n){if(n instanceof u.common.ProtoUint)return n;let t=new u.common.ProtoUint;if(n.value!=null)t.value=String(n.value);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.defaults)e.value="";if(n.value!=null&&n.hasOwnProperty("value"))e.value=n.value;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i})();u.types=(()=>{let i={};return i.MsgDeposit=(()=>{function o(r){if(this.coins=[],r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.coins=f.emptyArray,o.prototype.memo="",o.prototype.signer=f.newBuffer([]),o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.coins?.length)for(let e=0;e<n.coins.length;++e)u.common.Coin.encode(n.coins[e],t.uint32(10).fork()).ldelim();if(n.memo!=null&&Object.hasOwnProperty.call(n,"memo"))t.uint32(18).string(n.memo);if(n.signer!=null&&Object.hasOwnProperty.call(n,"signer"))t.uint32(26).bytes(n.signer);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.types.MsgDeposit;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:if(!s.coins?.length)s.coins=[];s.coins.push(u.common.Coin.decode(n,n.uint32()));break;case 2:s.memo=n.string();break;case 3:s.signer=n.bytes();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.coins!=null&&n.hasOwnProperty("coins")){if(!Array.isArray(n.coins))return"coins: array expected";for(let t=0;t<n.coins.length;++t){let e=u.common.Coin.verify(n.coins[t]);if(e)return"coins."+e}}if(n.memo!=null&&n.hasOwnProperty("memo")){if(!f.isString(n.memo))return"memo: string expected"}if(n.signer!=null&&n.hasOwnProperty("signer")){if(!(n.signer&&typeof n.signer.length==="number"||f.isString(n.signer)))return"signer: buffer expected"}return null},o.fromObject=function(n){if(n instanceof u.types.MsgDeposit)return n;let t=new u.types.MsgDeposit;if(n.coins){if(!Array.isArray(n.coins))throw TypeError(".types.MsgDeposit.coins: array expected");t.coins=[];for(let e=0;e<n.coins.length;++e){if(typeof n.coins[e]!=="object")throw TypeError(".types.MsgDeposit.coins: object expected");t.coins[e]=u.common.Coin.fromObject(n.coins[e])}}if(n.memo!=null)t.memo=String(n.memo);if(n.signer!=null){if(typeof n.signer==="string")f.base64.decode(n.signer,t.signer=f.newBuffer(f.base64.length(n.signer)),0);else if(n.signer.length)t.signer=n.signer}return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.arrays||t.defaults)e.coins=[];if(t.defaults){if(e.memo="",t.bytes===String)e.signer="";else if(e.signer=[],t.bytes!==Array)e.signer=f.newBuffer(e.signer)}if(n.coins?.length){e.coins=[];for(let s=0;s<n.coins.length;++s)e.coins[s]=u.common.Coin.toObject(n.coins[s],t)}if(n.memo!=null&&n.hasOwnProperty("memo"))e.memo=n.memo;if(n.signer!=null&&n.hasOwnProperty("signer"))e.signer=t.bytes===String?f.base64.encode(n.signer,0,n.signer.length):t.bytes===Array?Array.prototype.slice.call(n.signer):n.signer;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.MsgSend=(()=>{function o(r){if(this.amount=[],r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.fromAddress=f.newBuffer([]),o.prototype.toAddress=f.newBuffer([]),o.prototype.amount=f.emptyArray,o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.fromAddress!=null&&Object.hasOwnProperty.call(n,"fromAddress"))t.uint32(10).bytes(n.fromAddress);if(n.toAddress!=null&&Object.hasOwnProperty.call(n,"toAddress"))t.uint32(18).bytes(n.toAddress);if(n.amount?.length)for(let e=0;e<n.amount.length;++e)u.cosmos.base.v1beta1.Coin.encode(n.amount[e],t.uint32(26).fork()).ldelim();return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.types.MsgSend;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.fromAddress=n.bytes();break;case 2:s.toAddress=n.bytes();break;case 3:if(!s.amount?.length)s.amount=[];s.amount.push(u.cosmos.base.v1beta1.Coin.decode(n,n.uint32()));break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.fromAddress!=null&&n.hasOwnProperty("fromAddress")){if(!(n.fromAddress&&typeof n.fromAddress.length==="number"||f.isString(n.fromAddress)))return"fromAddress: buffer expected"}if(n.toAddress!=null&&n.hasOwnProperty("toAddress")){if(!(n.toAddress&&typeof n.toAddress.length==="number"||f.isString(n.toAddress)))return"toAddress: buffer expected"}if(n.amount!=null&&n.hasOwnProperty("amount")){if(!Array.isArray(n.amount))return"amount: array expected";for(let t=0;t<n.amount.length;++t){let e=u.cosmos.base.v1beta1.Coin.verify(n.amount[t]);if(e)return"amount."+e}}return null},o.fromObject=function(n){if(n instanceof u.types.MsgSend)return n;let t=new u.types.MsgSend;if(n.fromAddress!=null){if(typeof n.fromAddress==="string")f.base64.decode(n.fromAddress,t.fromAddress=f.newBuffer(f.base64.length(n.fromAddress)),0);else if(n.fromAddress.length)t.fromAddress=n.fromAddress}if(n.toAddress!=null){if(typeof n.toAddress==="string")f.base64.decode(n.toAddress,t.toAddress=f.newBuffer(f.base64.length(n.toAddress)),0);else if(n.toAddress.length)t.toAddress=n.toAddress}if(n.amount){if(!Array.isArray(n.amount))throw TypeError(".types.MsgSend.amount: array expected");t.amount=[];for(let e=0;e<n.amount.length;++e){if(typeof n.amount[e]!=="object")throw TypeError(".types.MsgSend.amount: object expected");t.amount[e]=u.cosmos.base.v1beta1.Coin.fromObject(n.amount[e])}}return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.arrays||t.defaults)e.amount=[];if(t.defaults){if(t.bytes===String)e.fromAddress="";else if(e.fromAddress=[],t.bytes!==Array)e.fromAddress=f.newBuffer(e.fromAddress);if(t.bytes===String)e.toAddress="";else if(e.toAddress=[],t.bytes!==Array)e.toAddress=f.newBuffer(e.toAddress)}if(n.fromAddress!=null&&n.hasOwnProperty("fromAddress"))e.fromAddress=t.bytes===String?f.base64.encode(n.fromAddress,0,n.fromAddress.length):t.bytes===Array?Array.prototype.slice.call(n.fromAddress):n.fromAddress;if(n.toAddress!=null&&n.hasOwnProperty("toAddress"))e.toAddress=t.bytes===String?f.base64.encode(n.toAddress,0,n.toAddress.length):t.bytes===Array?Array.prototype.slice.call(n.toAddress):n.toAddress;if(n.amount?.length){e.amount=[];for(let s=0;s<n.amount.length;++s)e.amount[s]=u.cosmos.base.v1beta1.Coin.toObject(n.amount[s],t)}return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i})();u.cosmos=(()=>{let i={};return i.base=(()=>{let o={};return o.v1beta1=(()=>{let r={};return r.Coin=(()=>{function n(t){if(t){for(let e=Object.keys(t),s=0;s<e.length;++s)if(t[e[s]]!=null)this[e[s]]=t[e[s]]}}return n.prototype.denom="",n.prototype.amount="",n.create=function(e){return new n(e)},n.encode=function(e,s){if(!s)s=v.create();if(e.denom!=null&&Object.hasOwnProperty.call(e,"denom"))s.uint32(10).string(e.denom);if(e.amount!=null&&Object.hasOwnProperty.call(e,"amount"))s.uint32(18).string(e.amount);return s},n.encodeDelimited=function(e,s){return this.encode(e,s).ldelim()},n.decode=function(e,s){if(!(e instanceof d))e=d.create(e);let c=s===void 0?e.len:e.pos+s,a=new u.cosmos.base.v1beta1.Coin;while(e.pos<c){let p=e.uint32();switch(p>>>3){case 1:a.denom=e.string();break;case 2:a.amount=e.string();break;default:e.skipType(p&7);break}}return a},n.decodeDelimited=function(e){if(!(e instanceof d))e=new d(e);return this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!=="object"||e===null)return"object expected";if(e.denom!=null&&e.hasOwnProperty("denom")){if(!f.isString(e.denom))return"denom: string expected"}if(e.amount!=null&&e.hasOwnProperty("amount")){if(!f.isString(e.amount))return"amount: string expected"}return null},n.fromObject=function(e){if(e instanceof u.cosmos.base.v1beta1.Coin)return e;let s=new u.cosmos.base.v1beta1.Coin;if(e.denom!=null)s.denom=String(e.denom);if(e.amount!=null)s.amount=String(e.amount);return s},n.toObject=function(e,s){if(!s)s={};let c={};if(s.defaults)c.denom="",c.amount="";if(e.denom!=null&&e.hasOwnProperty("denom"))c.denom=e.denom;if(e.amount!=null&&e.hasOwnProperty("amount"))c.amount=e.amount;return c},n.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},n})(),r.DecCoin=(()=>{function n(t){if(t){for(let e=Object.keys(t),s=0;s<e.length;++s)if(t[e[s]]!=null)this[e[s]]=t[e[s]]}}return n.prototype.denom="",n.prototype.amount="",n.create=function(e){return new n(e)},n.encode=function(e,s){if(!s)s=v.create();if(e.denom!=null&&Object.hasOwnProperty.call(e,"denom"))s.uint32(10).string(e.denom);if(e.amount!=null&&Object.hasOwnProperty.call(e,"amount"))s.uint32(18).string(e.amount);return s},n.encodeDelimited=function(e,s){return this.encode(e,s).ldelim()},n.decode=function(e,s){if(!(e instanceof d))e=d.create(e);let c=s===void 0?e.len:e.pos+s,a=new u.cosmos.base.v1beta1.DecCoin;while(e.pos<c){let p=e.uint32();switch(p>>>3){case 1:a.denom=e.string();break;case 2:a.amount=e.string();break;default:e.skipType(p&7);break}}return a},n.decodeDelimited=function(e){if(!(e instanceof d))e=new d(e);return this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!=="object"||e===null)return"object expected";if(e.denom!=null&&e.hasOwnProperty("denom")){if(!f.isString(e.denom))return"denom: string expected"}if(e.amount!=null&&e.hasOwnProperty("amount")){if(!f.isString(e.amount))return"amount: string expected"}return null},n.fromObject=function(e){if(e instanceof u.cosmos.base.v1beta1.DecCoin)return e;let s=new u.cosmos.base.v1beta1.DecCoin;if(e.denom!=null)s.denom=String(e.denom);if(e.amount!=null)s.amount=String(e.amount);return s},n.toObject=function(e,s){if(!s)s={};let c={};if(s.defaults)c.denom="",c.amount="";if(e.denom!=null&&e.hasOwnProperty("denom"))c.denom=e.denom;if(e.amount!=null&&e.hasOwnProperty("amount"))c.amount=e.amount;return c},n.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},n})(),r.IntProto=(()=>{function n(t){if(t){for(let e=Object.keys(t),s=0;s<e.length;++s)if(t[e[s]]!=null)this[e[s]]=t[e[s]]}}return n.prototype.int="",n.create=function(e){return new n(e)},n.encode=function(e,s){if(!s)s=v.create();if(e.int!=null&&Object.hasOwnProperty.call(e,"int"))s.uint32(10).string(e.int);return s},n.encodeDelimited=function(e,s){return this.encode(e,s).ldelim()},n.decode=function(e,s){if(!(e instanceof d))e=d.create(e);let c=s===void 0?e.len:e.pos+s,a=new u.cosmos.base.v1beta1.IntProto;while(e.pos<c){let p=e.uint32();switch(p>>>3){case 1:a.int=e.string();break;default:e.skipType(p&7);break}}return a},n.decodeDelimited=function(e){if(!(e instanceof d))e=new d(e);return this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!=="object"||e===null)return"object expected";if(e.int!=null&&e.hasOwnProperty("int")){if(!f.isString(e.int))return"int: string expected"}return null},n.fromObject=function(e){if(e instanceof u.cosmos.base.v1beta1.IntProto)return e;let s=new u.cosmos.base.v1beta1.IntProto;if(e.int!=null)s.int=String(e.int);return s},n.toObject=function(e,s){if(!s)s={};let c={};if(s.defaults)c.int="";if(e.int!=null&&e.hasOwnProperty("int"))c.int=e.int;return c},n.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},n})(),r.DecProto=(()=>{function n(t){if(t){for(let e=Object.keys(t),s=0;s<e.length;++s)if(t[e[s]]!=null)this[e[s]]=t[e[s]]}}return n.prototype.dec="",n.create=function(e){return new n(e)},n.encode=function(e,s){if(!s)s=v.create();if(e.dec!=null&&Object.hasOwnProperty.call(e,"dec"))s.uint32(10).string(e.dec);return s},n.encodeDelimited=function(e,s){return this.encode(e,s).ldelim()},n.decode=function(e,s){if(!(e instanceof d))e=d.create(e);let c=s===void 0?e.len:e.pos+s,a=new u.cosmos.base.v1beta1.DecProto;while(e.pos<c){let p=e.uint32();switch(p>>>3){case 1:a.dec=e.string();break;default:e.skipType(p&7);break}}return a},n.decodeDelimited=function(e){if(!(e instanceof d))e=new d(e);return this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!=="object"||e===null)return"object expected";if(e.dec!=null&&e.hasOwnProperty("dec")){if(!f.isString(e.dec))return"dec: string expected"}return null},n.fromObject=function(e){if(e instanceof u.cosmos.base.v1beta1.DecProto)return e;let s=new u.cosmos.base.v1beta1.DecProto;if(e.dec!=null)s.dec=String(e.dec);return s},n.toObject=function(e,s){if(!s)s={};let c={};if(s.defaults)c.dec="";if(e.dec!=null&&e.hasOwnProperty("dec"))c.dec=e.dec;return c},n.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},n})(),r})(),o})(),i})();function pn(i){if(i instanceof Uint8Array)return i;if(typeof i==="string")return Uint8Array.from(globalThis.atob(i),(r)=>r.charCodeAt(0));throw TypeError("address must be Uint8Array or base64 string")}var Nt=(i)=>{let o=i;return u.types.MsgSend.encode({amount:o.amount,fromAddress:pn(o.fromAddress),toAddress:pn(o.toAddress)}).finish()},Bt=(i)=>{let o=i;return u.types.MsgDeposit.encode({coins:o.coins.map((r)=>({amount:r.amount,asset:r.asset})),memo:o.memo,signer:pn(o.signer)}).finish()};function j(){return{...Ut,"/types.MsgDeposit":Bt,"/types.MsgSend":Nt}}function F(i,o=i===Rn.THORChain?"thor":"maya"){let r=i===Rn.THORChain?"thorchain":"mayachain",n={"/types.MsgDeposit":{aminoType:`${r}/MsgDeposit`,fromAmino:({signer:t,...e})=>({...e,signer:X(t)}),toAmino:({signer:t,...e})=>({...e,signer:typeof t==="string"?Q(t,o):t})},"/types.MsgSend":{aminoType:`${r}/MsgSend`,fromAmino:({from_address:t,to_address:e,...s})=>({...s,fromAddress:X(t),toAddress:X(e)}),toAmino:({fromAddress:t,toAddress:e,...s})=>({...s,from_address:typeof t==="string"?Q(t,o):t,to_address:typeof e==="string"?Q(e,o):e})}};return Object.assign(n,{fromAmino(t){let e=Object.entries(n).find(([,a])=>a.aminoType===t.type);if(!e)throw TypeError(`No converter for amino type ${t.type}`);let[s,c]=e;return{typeUrl:s,value:c.fromAmino(t.value)}},toAmino(t){let e=n[t.typeUrl];if(!e)throw TypeError(`No converter for type URL ${t.typeUrl}`);return{type:e.aminoType,value:e.toAmino(t.value)}}})}var qe=M(en.THORChain).gas,Ve=M(en.Maya).gas,Ln=({sender:i,recipient:o,assetValue:r})=>({type:`${r.chain===en.Maya?"mayachain":"thorchain"}/MsgSend`,value:{amount:[{amount:r.getBaseValue("string"),denom:U(r.symbol,!0)}],from_address:i,to_address:o}}),jn=({sender:i,assetValue:o,memo:r=""})=>({type:`${o.chain===en.Maya?"mayachain":"thorchain"}/MsgDeposit`,value:{coins:[{amount:o.getBaseValue("string"),asset:tn(o)}],memo:r,signer:i}}),hn=({sender:i,recipient:o,assetValue:r,memo:n})=>!o?jn({assetValue:r,memo:n,sender:i}):Ln({assetValue:r,recipient:o,sender:i});function En(i,o){for(let r of["/types.MsgDeposit","/types.MsgSend"]){let n=i[r];if(n.aminoType===o)return{fromAmino:n.fromAmino,typeUrl:r}}return null}var I=(i,o)=>{let r=F(o),n=En(r,i.type);if(!n)throw new gn("toolbox_cosmos_invalid_params",{error:`No converter for amino type ${i.type}`});return{typeUrl:n.typeUrl,value:n.fromAmino(i.value)}},Hn=async({rpcUrl:i,sender:o})=>{let n=await(await _(i)).getAccount(o);if(!n)throw new gn("toolbox_cosmos_account_not_found",{sender:o});return n};async function Jn(i){let{assetValue:o,recipient:r,memo:n,sender:t,asSignable:e,asAminoMessage:s,sequence:c,accountNumber:a}=i,p=i.sweep?await bn({assetValue:o,sender:t}):o;if(r)return Kt({accountNumber:a,asAminoMessage:s,asSignable:e,assetValue:p,memo:n,recipient:r,sender:t,sequence:c});return Lt({accountNumber:a,asAminoMessage:s,asSignable:e,assetValue:p,memo:n,sender:t,sequence:c})}async function bn({assetValue:i,sender:o}){let r=i.chain,n=await yn(r),e=await(await _(n)).getAllBalances(o),s=i.isGasAsset?(await nn(r)).getBaseValue("bigint"):0n;return W({assetValue:i,balances:e,denom:U(i.symbol,!0),feeAmount:s})}async function Kt({sender:i,recipient:o,assetValue:r,memo:n="",asSignable:t=!0,asAminoMessage:e=!1,sequence:s,accountNumber:c}){let a=r.chain,p=c!==void 0&&s!==void 0?void 0:await Hn({rpcUrl:await yn(a),sender:i}),{chainId:h}=Kn(a),A=Ln({assetValue:r,recipient:o,sender:i}),S=t?I(e?A:R(A),a):A;return{accountNumber:c??Number(p?.accountNumber),chainId:h,fee:M(a),memo:n,msgs:[S],sequence:s??Number(p?.sequence)}}async function Lt({sender:i,assetValue:o,memo:r="",asSignable:n=!0,asAminoMessage:t=!1,sequence:e,accountNumber:s}){let c=o.chain,a=s!==void 0&&e!==void 0?void 0:await Hn({rpcUrl:await yn(c),sender:i}),{chainId:p}=Kn(c),h=jn({assetValue:o,memo:r,sender:i}),A=n?I(t?h:R(h),c):h;return{accountNumber:s??Number(a?.accountNumber),chainId:p,fee:M(c),memo:r,msgs:[A],sequence:e??Number(a?.sequence)}}function R(i){if(i.type==="thorchain/MsgSend"||i.type==="mayachain/MsgSend")return i;return{...i,value:{...i.value,coins:i.value.coins.map((o)=>{let r=Rt.from({asset:o.asset}),n=(r.isSynthetic?r.symbol.split("/")?.[1]:r.symbol)?.toUpperCase(),t=(r.isSynthetic?r.symbol.split("/")?.[0]:r.chain)?.toUpperCase();return{...o,asset:{chain:t,symbol:n,synth:r.isSynthetic,ticker:r.ticker}}})}}}function on({chain:i,memo:o,msgs:r}){let n=j(),t=F(i),s=r.map((c)=>{let a=En(t,c.type);if(!a)throw new gn("toolbox_cosmos_invalid_params",{error:`No converter for amino type ${c.type}`});return{typeUrl:a.typeUrl,value:a.fromAmino(c.value)}}).map((c)=>Ft(c,n));return It({memo:o,messages:s})}import{Chain as V,SwapKitError as Te}from"@swapkit/helpers";import{secp256k1 as jt}from"@noble/curves/secp256k1.js";import{base64 as Cn,bech32 as wn}from"@scure/base";import{HDKey as Et}from"@scure/bip32";import{verifySignature as Ht,createWalletFromMnemonic as Jt,createWalletFromPrivateKey as $t,mnemonicToSeed as Wt,signDirect as qt}from"@swapkit/cosmos-signer";import{AssetValue as On,applyFeeMultiplier as $n,Chain as x,CosmosChainPrefixes as zn,DerivationPath as Vt,derivationPathToString as Wn,FeeOption as Tn,getChainConfig as Gt,getRPCUrl as q,NetworkDerivationPath as Yt,SwapKitError as N,SwapKitNumber as An,updateDerivationPath as zt}from"@swapkit/helpers";import{SwapKitApi as Xn}from"@swapkit/helpers/api";import{PubKey as Xt}from"cosmjs-types/cosmos/crypto/secp256k1/keys";import{match as Qt,P as qn}from"ts-pattern";async function Qn(i,o){try{let n=(await Xn.getGasRate()).find((t)=>t.chainId===i)?.value;return n?Number.parseFloat(n):o}catch{return o}}function Zn(i){let o=[{address:i.address,algo:"secp256k1",pubkey:i.publicKey}];return{getAccounts:()=>Promise.resolve(o),async signDirect(r,n){if(r!==i.address)throw new N("toolbox_cosmos_signer_not_defined");let t=await qt(i.privateKey,i.publicKey,{accountNumber:n.accountNumber,authInfoBytes:n.authInfoBytes,bodyBytes:n.bodyBytes,chainId:n.chainId});return{signature:t.signature,signed:{accountNumber:t.signed.accountNumber,authInfoBytes:t.signed.authInfoBytes,bodyBytes:t.signed.bodyBytes,chainId:t.signed.chainId}}}}}async function Vn({phrase:i,prefix:o,...r}){let n="derivationPath"in r?r.derivationPath:`${Vt[r.chain]}/${r.index??0}`,t=await Jt({hdPath:n,mnemonic:i,prefix:o??""});return Zn(t)}async function Zt({privateKey:i,prefix:o}){let r=$t({prefix:o,privateKey:i});return Zn(r)}var Gn={[x.Cosmos]:1000,[x.Kujira]:1000,[x.Noble]:1000,[x.THORChain]:5000000,[x.Maya]:5000000,[x.Harbor]:5000000};function ne(i){return async function({signature:r,message:n,address:t}){let e=await i(t);if(!e?.pubkey)throw new N("toolbox_cosmos_verify_signature_no_pubkey");let s=e.pubkey.type==="/cosmos.crypto.secp256k1.PubKey"?Xt.decode(e.pubkey.value).key:e.pubkey.value;return Ht(Cn.decode(n),Cn.decode(r),s)}}function rn({chain:i,...o}){let r=zn[i],n="index"in o?o.index||0:0,t=Wn("derivationPath"in o&&o.derivationPath?o.derivationPath:zt(Yt[i],{index:n})),e;async function s(){if(e)return e;return e=await Qt(o).with({phrase:qn.string},({phrase:m})=>Vn({derivationPath:t,phrase:m,prefix:r})).with({signer:qn.any},({signer:m})=>m).otherwise(()=>{return}),e}async function c(m){let l=await q(i);return(await _(l)).getAccount(m)}async function a(){let m=await s(),[l]=await m?.getAccounts()||[];return l?.address}async function p(){let m=await s(),[l]=await m?.getAccounts()||[];if(!l?.pubkey)throw new N("toolbox_cosmos_signer_not_defined");return Cn.encode(l?.pubkey)}async function h(m){let l=await s(),y=await a(),b=await q(i);if(!(l&&y))throw new N("toolbox_cosmos_signer_not_defined");return(await L(b,l)).sign(y,m.msgs,m.fee,m.memo,{accountNumber:BigInt(m.accountNumber),chainId:m.chainId,sequence:m.sequence})}async function A(m){let l=await s(),y=await a(),b=await q(i);if(!(l&&y))throw new N("toolbox_cosmos_signer_not_defined");let C=await(await L(b,l)).signAndBroadcast(y,m.msgs,m.fee,m.memo);if(C.code!==0)throw new N("core_swap_transaction_error",{code:C.code,message:C.rawLog});return C.transactionHash}async function S({recipient:m,assetValue:l,memo:y="",feeRate:b,feeOptionKey:w=Tn.Fast,sweep:C}){let T=await s(),k=await a();if(!(T&&k))throw new N("toolbox_cosmos_signer_not_defined");let E=await q(i),sn=On.from({chain:i}),H=tn(sn),G=te(b||(await Yn(i,Gn[i]))[w],H,i),cn=await L(E,T),J=U(l.symbol),an=[{amount:(C?W({assetValue:l,balances:await Sn(i)(k),denom:J,feeAmount:mn(G.amount,J)}):l).getBaseValue("string"),denom:J}],{transactionHash:un}=await cn.sendTokens(k,m,an,G,y);return un}return{createPrivateKeyFromPhrase:ie(t),createTransaction:Fn,fetchFeeRateFromSwapKit:Qn,getAccount:c,getAddress:a,getBalance:async(m,l)=>{let y=await Sn(i)(m),b=await Promise.all(y.filter(({denom:w})=>w&&!w.includes("IBC/")&&!([x.THORChain,x.Maya].includes(i)&&w.split("-").length>2)).map(({denom:w,amount:C})=>{let T=[x.THORChain,x.Maya].includes(i)&&(w.includes("/")||w.includes("˜"))?`${i}.${w}`:w;return In(T,C)}));if(b.length===0)return[On.from({chain:i})];return b},getBalanceAsDenoms:Sn(i),getFees:()=>Yn(i,Gn[i]),getPubKey:p,getSignerFromPhrase:({phrase:m,derivationPath:l})=>Vn({derivationPath:Wn(l),index:n,phrase:m,prefix:r}),getSignerFromPrivateKey:(m)=>Zt({prefix:r,privateKey:m}),signAndBroadcastTransaction:A,signTransaction:h,transfer:S,validateAddress:oe(i),verifySignature:ne(c)}}async function lo(i,o){try{let n=(await Xn.getGasRate()).find((t)=>t.chainId===i)?.value;return n?Number.parseFloat(n):o}catch{return o}}function fo({assetValue:{chain:i}}){return On.from({chain:i,value:ee(i)})}async function Yn(i,o){let{chainId:r,baseDecimal:n}=Gt(i),t=await Qn(r,o);return{average:An.fromBigInt(BigInt(t),n),fast:An.fromBigInt(BigInt($n(t,Tn.Fast,!0)),n),fastest:An.fromBigInt(BigInt($n(t,Tn.Fastest,!0)),n)}}function te(i,o,r){return{amount:[{amount:typeof i==="number"?i.toString():i.getBaseValue("string"),denom:o}],gas:M(r).gas}}function ee(i){return{[x.Cosmos]:0.007,[x.Kujira]:0.02,[x.Noble]:0.01,[x.THORChain]:0.02,[x.Maya]:0.02,[x.Harbor]:0.02}[i]||0}function oe(i){let o=zn[i];return function(n){if(!n.startsWith(o))return!1;try{let{prefix:t,words:e}=wn.decode(n);return wn.encode(t,e)===n.toLocaleLowerCase()}catch{return!1}}}function Sn(i){return async function(r){let n=await q(i);return(await(await _(n)).getAllBalances(r)).map((c)=>({...c,denom:c.denom.includes("/")?c.denom.toUpperCase():c.denom}))}}function ie(i){return async function(r){let n=await Wt(r),e=Et.fromMasterSeed(n).derive(i);if(!e.privateKey)throw new N("toolbox_cosmos_invalid_params",{error:"HDKey derivation produced no private key"});return jt.getPublicKey(e.privateKey,!0),Uint8Array.from(e.privateKey)}}import{secp256k1 as re}from"@noble/curves/secp256k1.js";import{base64 as B}from"@scure/base";import{buildMultisignedTx as se,createMultisigThresholdPubkey as ce,signAmino as ae,createWalletFromMnemonic as ue,encodeTxRaw as le,multisigPubkeyToAddress as fe,singlePubkeyToAddress as tt}from"@swapkit/cosmos-signer";import{CosmosChainPrefixes as de,derivationPathToString as me,FeeOption as xn,getRPCUrl as et,NetworkDerivationPath as pe,SwapKitError as K,updateDerivationPath as ye}from"@swapkit/helpers";import{match as ge,P as nt}from"ts-pattern";function he(i){let o=[{address:i.address,algo:"secp256k1",pubkey:i.publicKey}];return{accounts:o,getAccounts:()=>Promise.resolve(o),async signAmino(r,n){if(r!==i.address)throw new K("toolbox_cosmos_signer_not_defined");let t=await ae(i.privateKey,i.publicKey,{signDoc:n});return{signature:t.signature,signed:t.signed}}}}function be({prefix:i,derivationPath:o}){return async function(n,t=0){let e=await ue({hdPath:`${o}/${t}`,mnemonic:n,prefix:i});return he(e)}}function we(i){return B.encode(i)}function Ae(i,o){return async function({wallet:n,tx:t}){let{msgs:e,accountNumber:s,sequence:c,chainId:a,fee:p,memo:h}=typeof t==="string"?JSON.parse(t):t,A=(await n.getAccounts())?.[0]?.address||"",S=F(i,o),m=j(),l=await Bn(n,{aminoTypes:S,registry:m}),y=[];for(let C of e){let T=I(C,i);y.push(T)}let{signatures:[b]}=await l.sign(A,y,p,h,{accountNumber:BigInt(s),chainId:a,sequence:c});return{bodyBytes:on({chain:i,memo:h,msgs:e.map(R)}),signature:we(b)}}}function ot(i){if(i.length!==33||i[0]!==2&&i[0]!==3)throw new K("toolbox_cosmos_invalid_params",{error:"Invalid compressed secp256k1 pubkey (must be 33 bytes starting with 0x02 or 0x03)"});return{type:"tendermint/PubKeySecp256k1",value:B.encode(i)}}function Se({prefix:i,chain:o}){return async function(n,t,e,s,c){let a=await et(o),{sequence:p,fee:h}=JSON.parse(n),A=it(e,s),S=t.map((y)=>[tt(ot(B.decode(y.pubKey)),i),B.decode(y.signature)]),m=await _(a),{transactionHash:l}=await m.broadcastTx(se({bodyBytes:c,fee:{amount:h.amount,gasLimit:BigInt(h.gas),...h.payer?{payer:h.payer}:{},...h.granter?{granter:h.granter}:{}},multisigPubkey:A,prefix:i,sequence:p,signatures:new Map(S)}));return l}}function it(i,o,r=!0){return ce(i.map((n)=>ot(B.decode(n))),o,r)}function Ce(i){return B.decode(i)}function Oe({privateKey:i,message:o}){let r=re.sign(B.decode(o),i,{lowS:!0,prehash:!1});return Promise.resolve(B.encode(r))}function rt({chain:i,...o}){let r=de[i],n="index"in o?o.index||0:0,t="derivationPath"in o&&o.derivationPath?o.derivationPath:ye(pe[i],{index:n}),e=rn({chain:i,...o}),s=M(i),c;function a(){return c??=ge(o).with({phrase:nt.string},({phrase:l})=>e.getSignerFromPhrase({derivationPath:t,phrase:l})).with({signer:nt.any},({signer:l})=>Promise.resolve(l)).otherwise(()=>Promise.resolve(void 0)),c}async function p(){let l=await et(i),y=await a();if(!y)throw new K("toolbox_cosmos_no_signer");let b=j(),w=F(i,r),C=await L(l,y,{aminoTypes:w,registry:b});return{signer:y,signingClient:C}}async function h({fee:l,memo:y,msgs:b}){let{signer:w,signingClient:C}=await p(),T=(await w.getAccounts())?.[0]?.address;if(!T)throw new K("toolbox_cosmos_signer_not_defined");let k=await C.signAndBroadcast(T,b,l,y);if(k.code!==0)throw new K("core_swap_transaction_error",{code:k.code,message:k.rawLog});return k.transactionHash}async function A(){let l=await nn(i);return{[xn.Average]:l,[xn.Fast]:l,[xn.Fastest]:l}}async function S({assetValue:l,memo:y="",recipient:b,sweep:w}){let{signer:C,signingClient:T}=await p(),k=(await C.getAccounts())?.[0]?.address;if(!k)throw new K("toolbox_cosmos_no_signer");let E="signAmino"in C,sn=w?await bn({assetValue:l,sender:k}):l,H=hn({assetValue:sn,memo:y,recipient:b,sender:k});if(E){let J=I(H,i),{signatures:kn,authInfoBytes:an}=await T.sign(k,[J],s,y),un=le({authInfoBytes:an,bodyBytes:on({chain:i,memo:y,msgs:[H].map(R)}),signatures:kn});return(await T.broadcastTx(un)).transactionHash}let G=R(H),cn=I(G,i);return h({fee:s,memo:y,msgs:[cn]})}async function m(l){let{signer:y,signingClient:b}=await p(),w=(await y.getAccounts())?.[0]?.address;if(!w)throw new K("toolbox_cosmos_signer_not_defined");return b.sign(w,l.msgs,l.fee,l.memo,{accountNumber:BigInt(l.accountNumber),chainId:l.chainId,sequence:l.sequence})}return{...e,broadcastMultisigTx:Se({chain:i,prefix:r}),buildAminoMsg:hn,buildEncodedTxBody:on,convertToSignable:I,createDefaultAminoTypes:()=>F(i,r),createDefaultRegistry:j,createMultisig:it,createTransaction:Jn,deposit:S,getFees:A,importSignature:Ce,parseAminoMessageForDirectSigning:R,pubkeyToAddress:(l)=>{if(l.type==="tendermint/PubKeyMultisigThreshold")return fe(l,r);return tt(l,r)},secp256k1HdWalletFromMnemonic:be({derivationPath:me(t),prefix:r}),signAndBroadcastTransaction:h,signMultisigTx:Ae(i,r),signTransaction:m,signWithPrivateKey:Oe,transfer:S}}var ko=(i,o)=>{switch(i){case V.Cosmos:case V.Kujira:case V.Noble:return rn({chain:i,...o});case V.Maya:case V.THORChain:return rt({chain:i,...o});default:throw new Te("toolbox_cosmos_not_supported",{chain:i})}};export{bt as DEFAULT_COSMOS_FEE_MAINNET,wt as DEFAULT_KUJI_FEE_MAINNET,At as DEFAULT_NOBLE_FEE_MAINNET,Ve as MAYA_GAS_VALUE,qe as THORCHAIN_GAS_VALUE,Mn as USK_KUJIRA_FACTORY_DENOM,ht as YUM_KUJIRA_FACTORY_DENOM,Q as base64ToBech32,X as bech32ToBase64,hn as buildAminoMsg,Lt as buildDepositTx,on as buildEncodedTxBody,Kt as buildTransferTx,I as convertToSignable,Fn as cosmosCreateTransaction,rn as createCosmosToolbox,F as createDefaultAminoTypes,j as createDefaultRegistry,Bn as createOfflineStargateClient,L as createSigningStargateClient,_ as createStargateClient,rt as createThorchainToolbox,Jn as createTransaction,jn as depositMsgAmino,fo as estimateTransactionFee,Qn as fetchFeeRateFromSwapKit,De as fromBase64,In as getAssetFromDenom,oe as getCosmosAddressValidator,ko as getCosmosToolbox,M as getDefaultChainFee,tn as getDenomWithChain,mn as getFeeAmountForDenom,lo as getFeeRateFromSwapKit,U as getMsgSendDenom,Vn as getSignerFromPhrase,Zt as getSignerFromPrivateKey,W as getSweepAssetValue,nn as getThorchainNativeFee,R as parseAminoMessageForDirectSigning,bn as resolveThorchainSweepAssetValue,ve as toBase64,Ln as transferMsgAmino,ne as verifySignature};
1
+ import"../../chunk-exyqap7m.js";import{base64 as z,bech32 as Y}from"@scure/base";import{SwapKitError as st}from"@swapkit/helpers";function X(i){return z.encode(Uint8Array.from(Y.fromWords(Y.decode(i).words)))}function Q(i,o="thor"){return Y.encode(o,Y.toWords(z.decode(i)))}function ve(i){return z.encode(i)}function De(i){if(!i.match(/^[a-zA-Z0-9+/]*={0,2}$/))throw new st("toolbox_cosmos_invalid_params",{error:"Invalid base64 string format"});return z.decode(i)}import{encodeMessage as Ft,encodeTxBody as It}from"@swapkit/cosmos-signer";import{AssetValue as Rt,Chain as en,getChainConfig as Kn,getRPCUrl as yn,SwapKitError as gn}from"@swapkit/helpers";import{base64 as ln}from"@scure/base";import{broadcastTx as Z,getAccount as Dn,getBalances as ct,createTendermintRpc as at,defaultEncoders as ut,encodeAuthInfo as Pn,encodeMessage as lt,encodePubkey as ft,encodeTxBody as dt,encodeTxRaw as vn,makeStdSignDoc as mt}from"@swapkit/cosmos-signer";import{AssetValue as fn,Chain as g,getChainConfig as D,getRPCUrl as pt,RequestClient as yt,SKConfig as gt,SwapKitError as P,SwapKitNumber as dn}from"@swapkit/helpers";var Mn="FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK",ht="FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM",bt={amount:[{amount:"500",denom:"uatom"}],gas:"200000"},At={amount:[{amount:"1000",denom:"ukuji"}],gas:"200000"},wt={amount:[{amount:"1000",denom:"uusdc"}],gas:"200000"};function M(i){switch(i){case g.Maya:return{amount:[],gas:"10000000000"};case g.THORChain:return{amount:[],gas:"500000000"};case g.Kujira:return At;case g.Noble:return wt;default:return bt}}async function nn(i){let o=gt.get("thornodeUrls"),r=i===g.Maya,t=`${o[i]}/${r?"mayachain":"thorchain"}/constants`,e=D(i).baseDecimal;try{let{int_64_values:{NativeTransactionFee:s}}=await yt.get(t);if(!Number.isInteger(s)||s<=0)throw new P("toolbox_cosmos_invalid_fee",{nativeFee:s.toString()});return dn.fromBigInt(BigInt(s),e)}catch{let s=r?10000000000n:2000000n;return dn.fromBigInt(s,e)}}var U=(i,o=!1)=>{if(o)return i.toLowerCase();switch(i){case"uUSK":case"USK":return Mn;case"uYUM":case"YUM":return ht;case"uKUJI":case"KUJI":return"ukuji";case"ATOM":case"uATOM":return"uatom";case"uUSDC":case"USDC":case"NOBLE":return"uusdc";default:return i}},tn=({symbol:i,chain:o})=>{if(o===g.Maya)return(i.toUpperCase()!=="CACAO"?i:`${g.Maya}.${i}`).toUpperCase();if(o===g.THORChain)return(["RUNE","TCY","RUJI"].includes(i.toUpperCase())?`${g.THORChain}.${i}`:i).toUpperCase();return U(i,!1)},St=()=>typeof window<"u"?{}:{referer:"https://sdk.swapkit.dev",referrer:"https://sdk.swapkit.dev"};function _n(i){return at(i,{headers:St()})}function Un(i){return{amount:i.amount,denom:i.denom}}function Ct(i,o){if(!i)return null;if("toAmino"in i&&typeof i.toAmino==="function")return null;let n=i[o];return n?{aminoType:n.aminoType,toAmino:n.toAmino}:null}async function _(i){let o=_n(i);return{async broadcastTx(r){let n=await Z(o,r,"sync");if(n.code!==0)throw new P("core_swap_transaction_error",{code:n.code,message:n.log});return{code:n.code,rawLog:n.log,transactionHash:n.hash}},async getAccount(r){let n=await Dn(o,r);if(!n)return null;return{accountNumber:Number(n.accountNumber),address:n.address,pubkey:n.pubKey?{type:n.pubKey.typeUrl,value:n.pubKey.key}:null,sequence:Number(n.sequence)}},async getAllBalances(r){return(await ct(o,r)).map((t)=>({amount:t.amount,denom:t.denom}))}}}function Nn(i,o={}){let r=Ot(i);async function n(t,e,s,c,a){let h=(await i.getAccounts()).find((b)=>b.address===t);if(!h)throw new P("toolbox_cosmos_signer_not_defined");let w=vt({memo:c,messages:e,registry:o.registry}),S=ft({type:"tendermint/PubKeySecp256k1",value:ln.encode(h.pubkey)});if(r){let b=e.map((E)=>Pt(E,o.aminoTypes)),A=mt({accountNumber:a.accountNumber,chainId:a.chainId,fee:Tt(s),memo:c,msgs:b,sequence:a.sequence}),C=await i.signAmino(t,A),T=Pn({fee:kt(C.signed.fee,s),signerInfos:[{mode:"amino",pubkey:S,sequence:BigInt(C.signed.sequence)}]}),k=ln.decode(C.signature.signature);return{authInfoBytes:T,bodyBytes:w,signatures:[k]}}let m=Pn({fee:xt(s),signerInfos:[{mode:"direct",pubkey:S,sequence:BigInt(a.sequence)}]}),l=await i.signDirect(t,{accountNumber:a.accountNumber,authInfoBytes:m,bodyBytes:w,chainId:a.chainId}),y=ln.decode(l.signature.signature);return{authInfoBytes:m,bodyBytes:w,signatures:[y]}}return{signWithRegistry:n}}function Ot(i){return typeof i.signAmino==="function"}function Tt(i){return{amount:i.amount.map((o)=>({amount:o.amount,denom:o.denom})),gas:i.gas,...i.granter?{granter:i.granter}:{},...i.payer?{payer:i.payer}:{}}}function xt(i){return{amount:i.amount.map(Un),gasLimit:BigInt(i.gas),...i.granter?{granter:i.granter}:{},...i.payer?{payer:i.payer}:{}}}function kt(i,o){return{amount:i.amount.map(Un),gasLimit:BigInt(i.gas),...i.granter??o.granter?{granter:i.granter??o.granter}:{},...i.payer??o.payer?{payer:i.payer??o.payer}:{}}}function Pt(i,o){if(o&&"toAmino"in o&&typeof o.toAmino==="function")return o.toAmino(i);let r=Ct(o,i.typeUrl);if(!r){if(i.typeUrl==="/cosmos.bank.v1beta1.MsgSend"){let n=i.value;return{type:"cosmos-sdk/MsgSend",value:{amount:n.amount,from_address:n.fromAddress,to_address:n.toAddress}}}throw new P("toolbox_cosmos_invalid_params",{error:`No amino converter for ${i.typeUrl}`})}return{type:r.aminoType,value:r.toAmino(i.value)}}function vt(i){let{memo:o,messages:r,registry:n}=i;if(n&&"encode"in n&&typeof n.encode==="function")return n.encode({typeUrl:"/cosmos.tx.v1beta1.TxBody",value:{memo:o,messages:r}});let t={...ut,...n??{}},e=r.map((s)=>lt(s,t));return dt({memo:o,messages:e})}async function L(i,o,r={}){let n=typeof r==="string"?{}:r,t=_n(i),e=Nn(o,n);async function s(c,a){let p=await Dn(t,c);if(!p)throw new P("toolbox_cosmos_account_not_found",{sender:c});let h=a?.chainId??(await t.status()).chainId;return{accountNumber:a?.accountNumber??p.accountNumber,chainId:h,sequence:a?.sequence??p.sequence}}return{async broadcastTx(c){let a=await Z(t,c,"sync");if(a.code!==0)throw new P("core_swap_transaction_error",{code:a.code,message:a.log});return{code:a.code,rawLog:a.log,transactionHash:a.hash}},async sendTokens(c,a,p,h,w=""){let S=[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:{amount:p.map((A)=>({amount:A.amount,denom:A.denom})),fromAddress:c,toAddress:a}}],m=await s(c),l=await e.signWithRegistry(c,S,h,w,m),y=vn({authInfoBytes:l.authInfoBytes,bodyBytes:l.bodyBytes,signatures:l.signatures}),b=await Z(t,y,"sync");if(b.code!==0)throw new P("core_swap_transaction_error",{code:b.code,message:b.log});return{code:b.code,rawLog:b.log,transactionHash:b.hash}},async sign(c,a,p,h,w){let S=w??await s(c);return e.signWithRegistry(c,a,p,h,S)},async signAndBroadcast(c,a,p,h=""){let w=await s(c),S=await e.signWithRegistry(c,a,p,h,w),m=vn({authInfoBytes:S.authInfoBytes,bodyBytes:S.bodyBytes,signatures:S.signatures}),l=await Z(t,m,"sync");return{code:l.code,rawLog:l.log,transactionHash:l.hash}}}}async function Bn(i,o){let r=Nn(i,o??{});return{sign(n,t,e,s,c){if(!c)throw new P("toolbox_cosmos_invalid_params",{error:"createOfflineStargateClient.sign requires signerData"});return r.signWithRegistry(n,t,e,s,c)}}}var Dt=(i)=>{switch(i){case g.Maya:case g.THORChain:return"/types.MsgSend";case g.Cosmos:case g.Kujira:case g.Noble:return"/cosmos.bank.v1beta1.MsgSend";default:throw new P("toolbox_cosmos_not_supported",{chain:i})}};async function Mt({client:i,sender:o}){let r=await i.getAccount(o);if(!r)throw new P("toolbox_cosmos_account_not_found",{sender:o});return r}async function Fn({sender:i,recipient:o,assetValue:r,memo:n="",feeRate:t,sequence:e,accountNumber:s,sweep:c}){let{chain:a,chainId:p}=r,h=s===void 0||e===void 0,w=c||h?await _(await pt(a)):void 0,S=h&&w?await Mt({client:w,sender:i}):void 0,m=fn.from({chain:a}),l=U(m.symbol),y=M(a),b=l&&t?{amount:[{amount:t.toString(),denom:l}],gas:y.gas}:y,A=U(r.symbol),C=r;if(c){if(!w)throw new P("toolbox_cosmos_account_not_found",{sender:i});C=W({assetValue:r,balances:await w.getAllBalances(i),denom:A,feeAmount:mn(b.amount,A)})}let T={amount:[{amount:C.getBaseValue("string"),denom:A}],fromAddress:i,toAddress:o};return{accountNumber:s??Number(S?.accountNumber),chainId:p,fee:b,memo:n,msgs:[{typeUrl:Dt(a),value:T}],sequence:e??Number(S?.sequence)}}function mn(i,o){let r=o.toLowerCase();return i.reduce((n,t)=>t.denom.toLowerCase()===r?n+BigInt(t.amount):n,0n)}function W({assetValue:i,balances:o,denom:r,feeAmount:n=0n}){let t=r.toLowerCase(),e=o.find(({denom:a})=>a.toLowerCase()===t),s=BigInt(e?.amount??"0"),c=s-n;if(c<=0n)throw new P("toolbox_sweep_amount_too_low",{asset:i.toString(),balance:s.toString(),fee:n.toString()});return i.set(dn.fromBigInt(c,i.decimal))}var _t={atom:{chain:g.Cosmos,decimals:D(g.Cosmos).baseDecimal},cacao:{chain:g.Maya,decimals:10},kuji:{chain:g.Kujira,decimals:D(g.Kujira).baseDecimal},maya:{asset:`${g.Maya}.${g.Maya}`,decimals:4},rune:{chain:g.THORChain,decimals:D(g.THORChain).baseDecimal},tcy:{asset:"THOR.TCY",decimals:D(g.THORChain).baseDecimal},uatom:{chain:g.Cosmos,decimals:D(g.Cosmos).baseDecimal},ukuji:{chain:g.Kujira,decimals:D(g.Kujira).baseDecimal},usdc:{chain:g.Noble,decimals:D(g.Noble).baseDecimal},uusdc:{chain:g.Noble,decimals:D(g.Noble).baseDecimal},"x/kuji":{asset:"THOR.KUJI",decimals:D(g.THORChain).baseDecimal},[Mn.toLowerCase()]:{asset:`${g.Kujira}.USK`,decimals:D(g.Kujira).baseDecimal}},In=(i,o)=>{let r=_t[i.toLowerCase()];if(!r)return fn.from({asset:i,fromBaseDecimal:8,value:o});let{chain:n,asset:t,decimals:e}=r,s=n?{chain:n}:{asset:t};return fn.from({...s,fromBaseDecimal:e,value:o})};import{defaultEncoders as Ut}from"@swapkit/cosmos-signer";import{Chain as Rn}from"@swapkit/helpers";import O from"protobufjs/minimal.js";var d=O.Reader,v=O.Writer,f=O.util,u=O.roots.default||(O.roots.default={});u.common=(()=>{let i={};return i.Asset=(()=>{function o(r){if(r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.chain="",o.prototype.symbol="",o.prototype.ticker="",o.prototype.synth=!1,o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.chain!=null&&Object.hasOwnProperty.call(n,"chain"))t.uint32(10).string(n.chain);if(n.symbol!=null&&Object.hasOwnProperty.call(n,"symbol"))t.uint32(18).string(n.symbol);if(n.ticker!=null&&Object.hasOwnProperty.call(n,"ticker"))t.uint32(26).string(n.ticker);if(n.synth!=null&&Object.hasOwnProperty.call(n,"synth"))t.uint32(32).bool(n.synth);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.Asset;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.chain=n.string();break;case 2:s.symbol=n.string();break;case 3:s.ticker=n.string();break;case 4:s.synth=n.bool();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.chain!=null&&n.hasOwnProperty("chain")){if(!f.isString(n.chain))return"chain: string expected"}if(n.symbol!=null&&n.hasOwnProperty("symbol")){if(!f.isString(n.symbol))return"symbol: string expected"}if(n.ticker!=null&&n.hasOwnProperty("ticker")){if(!f.isString(n.ticker))return"ticker: string expected"}if(n.synth!=null&&n.hasOwnProperty("synth")){if(typeof n.synth!=="boolean")return"synth: boolean expected"}return null},o.fromObject=function(n){if(n instanceof u.common.Asset)return n;let t=new u.common.Asset;if(n.chain!=null)t.chain=String(n.chain);if(n.symbol!=null)t.symbol=String(n.symbol);if(n.ticker!=null)t.ticker=String(n.ticker);if(n.synth!=null)t.synth=Boolean(n.synth);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.defaults)e.chain="",e.symbol="",e.ticker="",e.synth=!1;if(n.chain!=null&&n.hasOwnProperty("chain"))e.chain=n.chain;if(n.symbol!=null&&n.hasOwnProperty("symbol"))e.symbol=n.symbol;if(n.ticker!=null&&n.hasOwnProperty("ticker"))e.ticker=n.ticker;if(n.synth!=null&&n.hasOwnProperty("synth"))e.synth=n.synth;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.Coin=(()=>{function o(r){if(r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.asset=null,o.prototype.amount="",o.prototype.decimals=f.Long?f.Long.fromBits(0,0,!1):0,o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.asset!=null&&Object.hasOwnProperty.call(n,"asset"))u.common.Asset.encode(n.asset,t.uint32(10).fork()).ldelim();if(n.amount!=null&&Object.hasOwnProperty.call(n,"amount"))t.uint32(18).string(n.amount);if(n.decimals!=null&&Object.hasOwnProperty.call(n,"decimals"))t.uint32(24).int64(n.decimals);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.Coin;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.asset=u.common.Asset.decode(n,n.uint32());break;case 2:s.amount=n.string();break;case 3:s.decimals=n.int64();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.asset!=null&&n.hasOwnProperty("asset")){let t=u.common.Asset.verify(n.asset);if(t)return"asset."+t}if(n.amount!=null&&n.hasOwnProperty("amount")){if(!f.isString(n.amount))return"amount: string expected"}if(n.decimals!=null&&n.hasOwnProperty("decimals")){if(!f.isInteger(n.decimals)&&!(n.decimals&&f.isInteger(n.decimals.low)&&f.isInteger(n.decimals.high)))return"decimals: integer|Long expected"}return null},o.fromObject=function(n){if(n instanceof u.common.Coin)return n;let t=new u.common.Coin;if(n.asset!=null){if(typeof n.asset!=="object")throw TypeError(".common.Coin.asset: object expected");t.asset=u.common.Asset.fromObject(n.asset)}if(n.amount!=null)t.amount=String(n.amount);if(n.decimals!=null){if(f.Long)(t.decimals=f.Long.fromValue(n.decimals)).unsigned=!1;else if(typeof n.decimals==="string")t.decimals=Number.parseInt(n.decimals,10);else if(typeof n.decimals==="number")t.decimals=n.decimals;else if(typeof n.decimals==="object")t.decimals=new f.LongBits(n.decimals.low>>>0,n.decimals.high>>>0).toNumber()}return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.defaults)if(e.asset=null,e.amount="",f.Long){let s=new f.Long(0,0,!1);e.decimals=t.longs===String?s.toString():t.longs===Number?s.toNumber():s}else e.decimals=t.longs===String?"0":0;if(n.asset!=null&&n.hasOwnProperty("asset"))e.asset=u.common.Asset.toObject(n.asset,t);if(n.amount!=null&&n.hasOwnProperty("amount"))e.amount=n.amount;if(n.decimals!=null&&n.hasOwnProperty("decimals"))if(typeof n.decimals==="number")e.decimals=t.longs===String?String(n.decimals):n.decimals;else e.decimals=t.longs===String?f.Long.prototype.toString.call(n.decimals):t.longs===Number?new f.LongBits(n.decimals.low>>>0,n.decimals.high>>>0).toNumber():n.decimals;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.PubKeySet=(()=>{function o(r){if(r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.secp256k1="",o.prototype.ed25519="",o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.secp256k1!=null&&Object.hasOwnProperty.call(n,"secp256k1"))t.uint32(10).string(n.secp256k1);if(n.ed25519!=null&&Object.hasOwnProperty.call(n,"ed25519"))t.uint32(18).string(n.ed25519);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.PubKeySet;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.secp256k1=n.string();break;case 2:s.ed25519=n.string();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.secp256k1!=null&&n.hasOwnProperty("secp256k1")){if(!f.isString(n.secp256k1))return"secp256k1: string expected"}if(n.ed25519!=null&&n.hasOwnProperty("ed25519")){if(!f.isString(n.ed25519))return"ed25519: string expected"}return null},o.fromObject=function(n){if(n instanceof u.common.PubKeySet)return n;let t=new u.common.PubKeySet;if(n.secp256k1!=null)t.secp256k1=String(n.secp256k1);if(n.ed25519!=null)t.ed25519=String(n.ed25519);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.defaults)e.secp256k1="",e.ed25519="";if(n.secp256k1!=null&&n.hasOwnProperty("secp256k1"))e.secp256k1=n.secp256k1;if(n.ed25519!=null&&n.hasOwnProperty("ed25519"))e.ed25519=n.ed25519;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.Tx=(()=>{function o(r){if(this.coins=[],this.gas=[],r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.id="",o.prototype.chain="",o.prototype.fromAddress="",o.prototype.toAddress="",o.prototype.coins=f.emptyArray,o.prototype.gas=f.emptyArray,o.prototype.memo="",o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.id!=null&&Object.hasOwnProperty.call(n,"id"))t.uint32(10).string(n.id);if(n.chain!=null&&Object.hasOwnProperty.call(n,"chain"))t.uint32(18).string(n.chain);if(n.fromAddress!=null&&Object.hasOwnProperty.call(n,"fromAddress"))t.uint32(26).string(n.fromAddress);if(n.toAddress!=null&&Object.hasOwnProperty.call(n,"toAddress"))t.uint32(34).string(n.toAddress);if(n.coins?.length)for(let e=0;e<n.coins.length;++e)u.common.Coin.encode(n.coins[e],t.uint32(42).fork()).ldelim();if(n.gas?.length)for(let e=0;e<n.gas.length;++e)u.common.Coin.encode(n.gas[e],t.uint32(50).fork()).ldelim();if(n.memo!=null&&Object.hasOwnProperty.call(n,"memo"))t.uint32(58).string(n.memo);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.Tx;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.id=n.string();break;case 2:s.chain=n.string();break;case 3:s.fromAddress=n.string();break;case 4:s.toAddress=n.string();break;case 5:if(!s.coins?.length)s.coins=[];s.coins.push(u.common.Coin.decode(n,n.uint32()));break;case 6:if(!s.gas?.length)s.gas=[];s.gas.push(u.common.Coin.decode(n,n.uint32()));break;case 7:s.memo=n.string();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.id!=null&&n.hasOwnProperty("id")){if(!f.isString(n.id))return"id: string expected"}if(n.chain!=null&&n.hasOwnProperty("chain")){if(!f.isString(n.chain))return"chain: string expected"}if(n.fromAddress!=null&&n.hasOwnProperty("fromAddress")){if(!f.isString(n.fromAddress))return"fromAddress: string expected"}if(n.toAddress!=null&&n.hasOwnProperty("toAddress")){if(!f.isString(n.toAddress))return"toAddress: string expected"}if(n.coins!=null&&n.hasOwnProperty("coins")){if(!Array.isArray(n.coins))return"coins: array expected";for(let t=0;t<n.coins.length;++t){let e=u.common.Coin.verify(n.coins[t]);if(e)return"coins."+e}}if(n.gas!=null&&n.hasOwnProperty("gas")){if(!Array.isArray(n.gas))return"gas: array expected";for(let t=0;t<n.gas.length;++t){let e=u.common.Coin.verify(n.gas[t]);if(e)return"gas."+e}}if(n.memo!=null&&n.hasOwnProperty("memo")){if(!f.isString(n.memo))return"memo: string expected"}return null},o.fromObject=function(n){if(n instanceof u.common.Tx)return n;let t=new u.common.Tx;if(n.id!=null)t.id=String(n.id);if(n.chain!=null)t.chain=String(n.chain);if(n.fromAddress!=null)t.fromAddress=String(n.fromAddress);if(n.toAddress!=null)t.toAddress=String(n.toAddress);if(n.coins){if(!Array.isArray(n.coins))throw TypeError(".common.Tx.coins: array expected");t.coins=[];for(let e=0;e<n.coins.length;++e){if(typeof n.coins[e]!=="object")throw TypeError(".common.Tx.coins: object expected");t.coins[e]=u.common.Coin.fromObject(n.coins[e])}}if(n.gas){if(!Array.isArray(n.gas))throw TypeError(".common.Tx.gas: array expected");t.gas=[];for(let e=0;e<n.gas.length;++e){if(typeof n.gas[e]!=="object")throw TypeError(".common.Tx.gas: object expected");t.gas[e]=u.common.Coin.fromObject(n.gas[e])}}if(n.memo!=null)t.memo=String(n.memo);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.arrays||t.defaults)e.coins=[],e.gas=[];if(t.defaults)e.id="",e.chain="",e.fromAddress="",e.toAddress="",e.memo="";if(n.id!=null&&n.hasOwnProperty("id"))e.id=n.id;if(n.chain!=null&&n.hasOwnProperty("chain"))e.chain=n.chain;if(n.fromAddress!=null&&n.hasOwnProperty("fromAddress"))e.fromAddress=n.fromAddress;if(n.toAddress!=null&&n.hasOwnProperty("toAddress"))e.toAddress=n.toAddress;if(n.coins?.length){e.coins=[];for(let s=0;s<n.coins.length;++s)e.coins[s]=u.common.Coin.toObject(n.coins[s],t)}if(n.gas?.length){e.gas=[];for(let s=0;s<n.gas.length;++s)e.gas[s]=u.common.Coin.toObject(n.gas[s],t)}if(n.memo!=null&&n.hasOwnProperty("memo"))e.memo=n.memo;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.Fee=(()=>{function o(r){if(this.coins=[],r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.coins=f.emptyArray,o.prototype.poolDeduct="",o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.coins?.length)for(let e=0;e<n.coins.length;++e)u.common.Coin.encode(n.coins[e],t.uint32(10).fork()).ldelim();if(n.poolDeduct!=null&&Object.hasOwnProperty.call(n,"poolDeduct"))t.uint32(18).string(n.poolDeduct);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.Fee;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:if(!s.coins?.length)s.coins=[];s.coins.push(u.common.Coin.decode(n,n.uint32()));break;case 2:s.poolDeduct=n.string();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.coins!=null&&n.hasOwnProperty("coins")){if(!Array.isArray(n.coins))return"coins: array expected";for(let t=0;t<n.coins.length;++t){let e=u.common.Coin.verify(n.coins[t]);if(e)return"coins."+e}}if(n.poolDeduct!=null&&n.hasOwnProperty("poolDeduct")){if(!f.isString(n.poolDeduct))return"poolDeduct: string expected"}return null},o.fromObject=function(n){if(n instanceof u.common.Fee)return n;let t=new u.common.Fee;if(n.coins){if(!Array.isArray(n.coins))throw TypeError(".common.Fee.coins: array expected");t.coins=[];for(let e=0;e<n.coins.length;++e){if(typeof n.coins[e]!=="object")throw TypeError(".common.Fee.coins: object expected");t.coins[e]=u.common.Coin.fromObject(n.coins[e])}}if(n.poolDeduct!=null)t.poolDeduct=String(n.poolDeduct);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.arrays||t.defaults)e.coins=[];if(t.defaults)e.poolDeduct="";if(n.coins?.length){e.coins=[];for(let s=0;s<n.coins.length;++s)e.coins[s]=u.common.Coin.toObject(n.coins[s],t)}if(n.poolDeduct!=null&&n.hasOwnProperty("poolDeduct"))e.poolDeduct=n.poolDeduct;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.ProtoUint=(()=>{function o(r){if(r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.value="",o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.value!=null&&Object.hasOwnProperty.call(n,"value"))t.uint32(10).string(n.value);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.common.ProtoUint;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.value=n.string();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.value!=null&&n.hasOwnProperty("value")){if(!f.isString(n.value))return"value: string expected"}return null},o.fromObject=function(n){if(n instanceof u.common.ProtoUint)return n;let t=new u.common.ProtoUint;if(n.value!=null)t.value=String(n.value);return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.defaults)e.value="";if(n.value!=null&&n.hasOwnProperty("value"))e.value=n.value;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i})();u.types=(()=>{let i={};return i.MsgDeposit=(()=>{function o(r){if(this.coins=[],r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.coins=f.emptyArray,o.prototype.memo="",o.prototype.signer=f.newBuffer([]),o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.coins?.length)for(let e=0;e<n.coins.length;++e)u.common.Coin.encode(n.coins[e],t.uint32(10).fork()).ldelim();if(n.memo!=null&&Object.hasOwnProperty.call(n,"memo"))t.uint32(18).string(n.memo);if(n.signer!=null&&Object.hasOwnProperty.call(n,"signer"))t.uint32(26).bytes(n.signer);return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.types.MsgDeposit;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:if(!s.coins?.length)s.coins=[];s.coins.push(u.common.Coin.decode(n,n.uint32()));break;case 2:s.memo=n.string();break;case 3:s.signer=n.bytes();break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.coins!=null&&n.hasOwnProperty("coins")){if(!Array.isArray(n.coins))return"coins: array expected";for(let t=0;t<n.coins.length;++t){let e=u.common.Coin.verify(n.coins[t]);if(e)return"coins."+e}}if(n.memo!=null&&n.hasOwnProperty("memo")){if(!f.isString(n.memo))return"memo: string expected"}if(n.signer!=null&&n.hasOwnProperty("signer")){if(!(n.signer&&typeof n.signer.length==="number"||f.isString(n.signer)))return"signer: buffer expected"}return null},o.fromObject=function(n){if(n instanceof u.types.MsgDeposit)return n;let t=new u.types.MsgDeposit;if(n.coins){if(!Array.isArray(n.coins))throw TypeError(".types.MsgDeposit.coins: array expected");t.coins=[];for(let e=0;e<n.coins.length;++e){if(typeof n.coins[e]!=="object")throw TypeError(".types.MsgDeposit.coins: object expected");t.coins[e]=u.common.Coin.fromObject(n.coins[e])}}if(n.memo!=null)t.memo=String(n.memo);if(n.signer!=null){if(typeof n.signer==="string")f.base64.decode(n.signer,t.signer=f.newBuffer(f.base64.length(n.signer)),0);else if(n.signer.length)t.signer=n.signer}return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.arrays||t.defaults)e.coins=[];if(t.defaults){if(e.memo="",t.bytes===String)e.signer="";else if(e.signer=[],t.bytes!==Array)e.signer=f.newBuffer(e.signer)}if(n.coins?.length){e.coins=[];for(let s=0;s<n.coins.length;++s)e.coins[s]=u.common.Coin.toObject(n.coins[s],t)}if(n.memo!=null&&n.hasOwnProperty("memo"))e.memo=n.memo;if(n.signer!=null&&n.hasOwnProperty("signer"))e.signer=t.bytes===String?f.base64.encode(n.signer,0,n.signer.length):t.bytes===Array?Array.prototype.slice.call(n.signer):n.signer;return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i.MsgSend=(()=>{function o(r){if(this.amount=[],r){for(let n=Object.keys(r),t=0;t<n.length;++t)if(r[n[t]]!=null)this[n[t]]=r[n[t]]}}return o.prototype.fromAddress=f.newBuffer([]),o.prototype.toAddress=f.newBuffer([]),o.prototype.amount=f.emptyArray,o.create=function(n){return new o(n)},o.encode=function(n,t){if(!t)t=v.create();if(n.fromAddress!=null&&Object.hasOwnProperty.call(n,"fromAddress"))t.uint32(10).bytes(n.fromAddress);if(n.toAddress!=null&&Object.hasOwnProperty.call(n,"toAddress"))t.uint32(18).bytes(n.toAddress);if(n.amount?.length)for(let e=0;e<n.amount.length;++e)u.cosmos.base.v1beta1.Coin.encode(n.amount[e],t.uint32(26).fork()).ldelim();return t},o.encodeDelimited=function(n,t){return this.encode(n,t).ldelim()},o.decode=function(n,t){if(!(n instanceof d))n=d.create(n);let e=t===void 0?n.len:n.pos+t,s=new u.types.MsgSend;while(n.pos<e){let c=n.uint32();switch(c>>>3){case 1:s.fromAddress=n.bytes();break;case 2:s.toAddress=n.bytes();break;case 3:if(!s.amount?.length)s.amount=[];s.amount.push(u.cosmos.base.v1beta1.Coin.decode(n,n.uint32()));break;default:n.skipType(c&7);break}}return s},o.decodeDelimited=function(n){if(!(n instanceof d))n=new d(n);return this.decode(n,n.uint32())},o.verify=function(n){if(typeof n!=="object"||n===null)return"object expected";if(n.fromAddress!=null&&n.hasOwnProperty("fromAddress")){if(!(n.fromAddress&&typeof n.fromAddress.length==="number"||f.isString(n.fromAddress)))return"fromAddress: buffer expected"}if(n.toAddress!=null&&n.hasOwnProperty("toAddress")){if(!(n.toAddress&&typeof n.toAddress.length==="number"||f.isString(n.toAddress)))return"toAddress: buffer expected"}if(n.amount!=null&&n.hasOwnProperty("amount")){if(!Array.isArray(n.amount))return"amount: array expected";for(let t=0;t<n.amount.length;++t){let e=u.cosmos.base.v1beta1.Coin.verify(n.amount[t]);if(e)return"amount."+e}}return null},o.fromObject=function(n){if(n instanceof u.types.MsgSend)return n;let t=new u.types.MsgSend;if(n.fromAddress!=null){if(typeof n.fromAddress==="string")f.base64.decode(n.fromAddress,t.fromAddress=f.newBuffer(f.base64.length(n.fromAddress)),0);else if(n.fromAddress.length)t.fromAddress=n.fromAddress}if(n.toAddress!=null){if(typeof n.toAddress==="string")f.base64.decode(n.toAddress,t.toAddress=f.newBuffer(f.base64.length(n.toAddress)),0);else if(n.toAddress.length)t.toAddress=n.toAddress}if(n.amount){if(!Array.isArray(n.amount))throw TypeError(".types.MsgSend.amount: array expected");t.amount=[];for(let e=0;e<n.amount.length;++e){if(typeof n.amount[e]!=="object")throw TypeError(".types.MsgSend.amount: object expected");t.amount[e]=u.cosmos.base.v1beta1.Coin.fromObject(n.amount[e])}}return t},o.toObject=function(n,t){if(!t)t={};let e={};if(t.arrays||t.defaults)e.amount=[];if(t.defaults){if(t.bytes===String)e.fromAddress="";else if(e.fromAddress=[],t.bytes!==Array)e.fromAddress=f.newBuffer(e.fromAddress);if(t.bytes===String)e.toAddress="";else if(e.toAddress=[],t.bytes!==Array)e.toAddress=f.newBuffer(e.toAddress)}if(n.fromAddress!=null&&n.hasOwnProperty("fromAddress"))e.fromAddress=t.bytes===String?f.base64.encode(n.fromAddress,0,n.fromAddress.length):t.bytes===Array?Array.prototype.slice.call(n.fromAddress):n.fromAddress;if(n.toAddress!=null&&n.hasOwnProperty("toAddress"))e.toAddress=t.bytes===String?f.base64.encode(n.toAddress,0,n.toAddress.length):t.bytes===Array?Array.prototype.slice.call(n.toAddress):n.toAddress;if(n.amount?.length){e.amount=[];for(let s=0;s<n.amount.length;++s)e.amount[s]=u.cosmos.base.v1beta1.Coin.toObject(n.amount[s],t)}return e},o.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},o})(),i})();u.cosmos=(()=>{let i={};return i.base=(()=>{let o={};return o.v1beta1=(()=>{let r={};return r.Coin=(()=>{function n(t){if(t){for(let e=Object.keys(t),s=0;s<e.length;++s)if(t[e[s]]!=null)this[e[s]]=t[e[s]]}}return n.prototype.denom="",n.prototype.amount="",n.create=function(e){return new n(e)},n.encode=function(e,s){if(!s)s=v.create();if(e.denom!=null&&Object.hasOwnProperty.call(e,"denom"))s.uint32(10).string(e.denom);if(e.amount!=null&&Object.hasOwnProperty.call(e,"amount"))s.uint32(18).string(e.amount);return s},n.encodeDelimited=function(e,s){return this.encode(e,s).ldelim()},n.decode=function(e,s){if(!(e instanceof d))e=d.create(e);let c=s===void 0?e.len:e.pos+s,a=new u.cosmos.base.v1beta1.Coin;while(e.pos<c){let p=e.uint32();switch(p>>>3){case 1:a.denom=e.string();break;case 2:a.amount=e.string();break;default:e.skipType(p&7);break}}return a},n.decodeDelimited=function(e){if(!(e instanceof d))e=new d(e);return this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!=="object"||e===null)return"object expected";if(e.denom!=null&&e.hasOwnProperty("denom")){if(!f.isString(e.denom))return"denom: string expected"}if(e.amount!=null&&e.hasOwnProperty("amount")){if(!f.isString(e.amount))return"amount: string expected"}return null},n.fromObject=function(e){if(e instanceof u.cosmos.base.v1beta1.Coin)return e;let s=new u.cosmos.base.v1beta1.Coin;if(e.denom!=null)s.denom=String(e.denom);if(e.amount!=null)s.amount=String(e.amount);return s},n.toObject=function(e,s){if(!s)s={};let c={};if(s.defaults)c.denom="",c.amount="";if(e.denom!=null&&e.hasOwnProperty("denom"))c.denom=e.denom;if(e.amount!=null&&e.hasOwnProperty("amount"))c.amount=e.amount;return c},n.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},n})(),r.DecCoin=(()=>{function n(t){if(t){for(let e=Object.keys(t),s=0;s<e.length;++s)if(t[e[s]]!=null)this[e[s]]=t[e[s]]}}return n.prototype.denom="",n.prototype.amount="",n.create=function(e){return new n(e)},n.encode=function(e,s){if(!s)s=v.create();if(e.denom!=null&&Object.hasOwnProperty.call(e,"denom"))s.uint32(10).string(e.denom);if(e.amount!=null&&Object.hasOwnProperty.call(e,"amount"))s.uint32(18).string(e.amount);return s},n.encodeDelimited=function(e,s){return this.encode(e,s).ldelim()},n.decode=function(e,s){if(!(e instanceof d))e=d.create(e);let c=s===void 0?e.len:e.pos+s,a=new u.cosmos.base.v1beta1.DecCoin;while(e.pos<c){let p=e.uint32();switch(p>>>3){case 1:a.denom=e.string();break;case 2:a.amount=e.string();break;default:e.skipType(p&7);break}}return a},n.decodeDelimited=function(e){if(!(e instanceof d))e=new d(e);return this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!=="object"||e===null)return"object expected";if(e.denom!=null&&e.hasOwnProperty("denom")){if(!f.isString(e.denom))return"denom: string expected"}if(e.amount!=null&&e.hasOwnProperty("amount")){if(!f.isString(e.amount))return"amount: string expected"}return null},n.fromObject=function(e){if(e instanceof u.cosmos.base.v1beta1.DecCoin)return e;let s=new u.cosmos.base.v1beta1.DecCoin;if(e.denom!=null)s.denom=String(e.denom);if(e.amount!=null)s.amount=String(e.amount);return s},n.toObject=function(e,s){if(!s)s={};let c={};if(s.defaults)c.denom="",c.amount="";if(e.denom!=null&&e.hasOwnProperty("denom"))c.denom=e.denom;if(e.amount!=null&&e.hasOwnProperty("amount"))c.amount=e.amount;return c},n.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},n})(),r.IntProto=(()=>{function n(t){if(t){for(let e=Object.keys(t),s=0;s<e.length;++s)if(t[e[s]]!=null)this[e[s]]=t[e[s]]}}return n.prototype.int="",n.create=function(e){return new n(e)},n.encode=function(e,s){if(!s)s=v.create();if(e.int!=null&&Object.hasOwnProperty.call(e,"int"))s.uint32(10).string(e.int);return s},n.encodeDelimited=function(e,s){return this.encode(e,s).ldelim()},n.decode=function(e,s){if(!(e instanceof d))e=d.create(e);let c=s===void 0?e.len:e.pos+s,a=new u.cosmos.base.v1beta1.IntProto;while(e.pos<c){let p=e.uint32();switch(p>>>3){case 1:a.int=e.string();break;default:e.skipType(p&7);break}}return a},n.decodeDelimited=function(e){if(!(e instanceof d))e=new d(e);return this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!=="object"||e===null)return"object expected";if(e.int!=null&&e.hasOwnProperty("int")){if(!f.isString(e.int))return"int: string expected"}return null},n.fromObject=function(e){if(e instanceof u.cosmos.base.v1beta1.IntProto)return e;let s=new u.cosmos.base.v1beta1.IntProto;if(e.int!=null)s.int=String(e.int);return s},n.toObject=function(e,s){if(!s)s={};let c={};if(s.defaults)c.int="";if(e.int!=null&&e.hasOwnProperty("int"))c.int=e.int;return c},n.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},n})(),r.DecProto=(()=>{function n(t){if(t){for(let e=Object.keys(t),s=0;s<e.length;++s)if(t[e[s]]!=null)this[e[s]]=t[e[s]]}}return n.prototype.dec="",n.create=function(e){return new n(e)},n.encode=function(e,s){if(!s)s=v.create();if(e.dec!=null&&Object.hasOwnProperty.call(e,"dec"))s.uint32(10).string(e.dec);return s},n.encodeDelimited=function(e,s){return this.encode(e,s).ldelim()},n.decode=function(e,s){if(!(e instanceof d))e=d.create(e);let c=s===void 0?e.len:e.pos+s,a=new u.cosmos.base.v1beta1.DecProto;while(e.pos<c){let p=e.uint32();switch(p>>>3){case 1:a.dec=e.string();break;default:e.skipType(p&7);break}}return a},n.decodeDelimited=function(e){if(!(e instanceof d))e=new d(e);return this.decode(e,e.uint32())},n.verify=function(e){if(typeof e!=="object"||e===null)return"object expected";if(e.dec!=null&&e.hasOwnProperty("dec")){if(!f.isString(e.dec))return"dec: string expected"}return null},n.fromObject=function(e){if(e instanceof u.cosmos.base.v1beta1.DecProto)return e;let s=new u.cosmos.base.v1beta1.DecProto;if(e.dec!=null)s.dec=String(e.dec);return s},n.toObject=function(e,s){if(!s)s={};let c={};if(s.defaults)c.dec="";if(e.dec!=null&&e.hasOwnProperty("dec"))c.dec=e.dec;return c},n.prototype.toJSON=function(){return this.constructor.toObject(this,O.util.toJSONOptions)},n})(),r})(),o})(),i})();function pn(i){if(i instanceof Uint8Array)return i;if(typeof i==="string")return Uint8Array.from(globalThis.atob(i),(r)=>r.charCodeAt(0));throw TypeError("address must be Uint8Array or base64 string")}var Nt=(i)=>{let o=i;return u.types.MsgSend.encode({amount:o.amount,fromAddress:pn(o.fromAddress),toAddress:pn(o.toAddress)}).finish()},Bt=(i)=>{let o=i;return u.types.MsgDeposit.encode({coins:o.coins.map((r)=>({amount:r.amount,asset:r.asset})),memo:o.memo,signer:pn(o.signer)}).finish()};function j(){return{...Ut,"/types.MsgDeposit":Bt,"/types.MsgSend":Nt}}function F(i,o=i===Rn.THORChain?"thor":"maya"){let r=i===Rn.THORChain?"thorchain":"mayachain",n={"/types.MsgDeposit":{aminoType:`${r}/MsgDeposit`,fromAmino:({signer:t,...e})=>({...e,signer:X(t)}),toAmino:({signer:t,...e})=>({...e,signer:typeof t==="string"?Q(t,o):t})},"/types.MsgSend":{aminoType:`${r}/MsgSend`,fromAmino:({from_address:t,to_address:e,...s})=>({...s,fromAddress:X(t),toAddress:X(e)}),toAmino:({fromAddress:t,toAddress:e,...s})=>({...s,from_address:typeof t==="string"?Q(t,o):t,to_address:typeof e==="string"?Q(e,o):e})}};return Object.assign(n,{fromAmino(t){let e=Object.entries(n).find(([,a])=>a.aminoType===t.type);if(!e)throw TypeError(`No converter for amino type ${t.type}`);let[s,c]=e;return{typeUrl:s,value:c.fromAmino(t.value)}},toAmino(t){let e=n[t.typeUrl];if(!e)throw TypeError(`No converter for type URL ${t.typeUrl}`);return{type:e.aminoType,value:e.toAmino(t.value)}}})}var qe=M(en.THORChain).gas,Ve=M(en.Maya).gas,Ln=({sender:i,recipient:o,assetValue:r})=>({type:`${r.chain===en.Maya?"mayachain":"thorchain"}/MsgSend`,value:{amount:[{amount:r.getBaseValue("string"),denom:U(r.symbol,!0)}],from_address:i,to_address:o}}),jn=({sender:i,assetValue:o,memo:r=""})=>({type:`${o.chain===en.Maya?"mayachain":"thorchain"}/MsgDeposit`,value:{coins:[{amount:o.getBaseValue("string"),asset:tn(o)}],memo:r,signer:i}}),hn=({sender:i,recipient:o,assetValue:r,memo:n})=>!o?jn({assetValue:r,memo:n,sender:i}):Ln({assetValue:r,recipient:o,sender:i});function En(i,o){for(let r of["/types.MsgDeposit","/types.MsgSend"]){let n=i[r];if(n.aminoType===o)return{fromAmino:n.fromAmino,typeUrl:r}}return null}var I=(i,o)=>{let r=F(o),n=En(r,i.type);if(!n)throw new gn("toolbox_cosmos_invalid_params",{error:`No converter for amino type ${i.type}`});return{typeUrl:n.typeUrl,value:n.fromAmino(i.value)}},Hn=async({rpcUrl:i,sender:o})=>{let n=await(await _(i)).getAccount(o);if(!n)throw new gn("toolbox_cosmos_account_not_found",{sender:o});return n};async function Jn(i){let{assetValue:o,recipient:r,memo:n,sender:t,asSignable:e,asAminoMessage:s,sequence:c,accountNumber:a}=i,p=i.sweep?await bn({assetValue:o,sender:t}):o;if(r)return Kt({accountNumber:a,asAminoMessage:s,asSignable:e,assetValue:p,memo:n,recipient:r,sender:t,sequence:c});return Lt({accountNumber:a,asAminoMessage:s,asSignable:e,assetValue:p,memo:n,sender:t,sequence:c})}async function bn({assetValue:i,sender:o}){let r=i.chain,n=await yn(r),e=await(await _(n)).getAllBalances(o),s=i.isGasAsset?(await nn(r)).getBaseValue("bigint"):0n;return W({assetValue:i,balances:e,denom:U(i.symbol,!0),feeAmount:s})}async function Kt({sender:i,recipient:o,assetValue:r,memo:n="",asSignable:t=!0,asAminoMessage:e=!1,sequence:s,accountNumber:c}){let a=r.chain,p=c!==void 0&&s!==void 0?void 0:await Hn({rpcUrl:await yn(a),sender:i}),{chainId:h}=Kn(a),w=Ln({assetValue:r,recipient:o,sender:i}),S=t?I(e?w:R(w),a):w;return{accountNumber:c??Number(p?.accountNumber),chainId:h,fee:M(a),memo:n,msgs:[S],sequence:s??Number(p?.sequence)}}async function Lt({sender:i,assetValue:o,memo:r="",asSignable:n=!0,asAminoMessage:t=!1,sequence:e,accountNumber:s}){let c=o.chain,a=s!==void 0&&e!==void 0?void 0:await Hn({rpcUrl:await yn(c),sender:i}),{chainId:p}=Kn(c),h=jn({assetValue:o,memo:r,sender:i}),w=n?I(t?h:R(h),c):h;return{accountNumber:s??Number(a?.accountNumber),chainId:p,fee:M(c),memo:r,msgs:[w],sequence:e??Number(a?.sequence)}}function R(i){if(i.type==="thorchain/MsgSend"||i.type==="mayachain/MsgSend")return i;return{...i,value:{...i.value,coins:i.value.coins.map((o)=>{let r=Rt.from({asset:o.asset}),n=(r.isSynthetic?r.symbol.split("/")?.[1]:r.symbol)?.toUpperCase(),t=(r.isSynthetic?r.symbol.split("/")?.[0]:r.chain)?.toUpperCase();return{...o,asset:{chain:t,symbol:n,synth:r.isSynthetic,ticker:r.ticker}}})}}}function on({chain:i,memo:o,msgs:r}){let n=j(),t=F(i),s=r.map((c)=>{let a=En(t,c.type);if(!a)throw new gn("toolbox_cosmos_invalid_params",{error:`No converter for amino type ${c.type}`});return{typeUrl:a.typeUrl,value:a.fromAmino(c.value)}}).map((c)=>Ft(c,n));return It({memo:o,messages:s})}import{Chain as V,SwapKitError as Te}from"@swapkit/helpers";import{secp256k1 as jt}from"@noble/curves/secp256k1.js";import{base64 as Cn,bech32 as An}from"@scure/base";import{HDKey as Et}from"@scure/bip32";import{verifySignature as Ht,createWalletFromMnemonic as Jt,createWalletFromPrivateKey as $t,mnemonicToSeed as Wt,signDirect as qt}from"@swapkit/cosmos-signer";import{AssetValue as On,applyFeeMultiplier as $n,Chain as x,CosmosChainPrefixes as zn,DerivationPath as Vt,derivationPathToString as Wn,FeeOption as Tn,getChainConfig as Gt,getRPCUrl as q,NetworkDerivationPath as Yt,SwapKitError as N,SwapKitNumber as wn,updateDerivationPath as zt}from"@swapkit/helpers";import{SwapKitApi as Xn}from"@swapkit/helpers/api";import{PubKey as Xt}from"cosmjs-types/cosmos/crypto/secp256k1/keys";import{match as Qt,P as qn}from"ts-pattern";async function Qn(i,o){try{let n=(await Xn.getGasRate()).find((t)=>t.chainId===i)?.value;return n?Number.parseFloat(n):o}catch{return o}}function Zn(i){let o=[{address:i.address,algo:"secp256k1",pubkey:i.publicKey}];return{getAccounts:()=>Promise.resolve(o),async signDirect(r,n){if(r!==i.address)throw new N("toolbox_cosmos_signer_not_defined");let t=await qt(i.privateKey,i.publicKey,{accountNumber:n.accountNumber,authInfoBytes:n.authInfoBytes,bodyBytes:n.bodyBytes,chainId:n.chainId});return{signature:t.signature,signed:{accountNumber:t.signed.accountNumber,authInfoBytes:t.signed.authInfoBytes,bodyBytes:t.signed.bodyBytes,chainId:t.signed.chainId}}}}}async function Vn({phrase:i,prefix:o,...r}){let n="derivationPath"in r?r.derivationPath:`${Vt[r.chain]}/${r.index??0}`,t=await Jt({hdPath:n,mnemonic:i,prefix:o??""});return Zn(t)}async function Zt({privateKey:i,prefix:o}){let r=$t({prefix:o,privateKey:i});return Zn(r)}var Gn={[x.Cosmos]:1000,[x.Kujira]:1000,[x.Noble]:1000,[x.THORChain]:5000000,[x.Maya]:5000000,[x.Harbor]:5000000};function ne(i){return async function({signature:r,message:n,address:t}){let e=await i(t);if(!e?.pubkey)throw new N("toolbox_cosmos_verify_signature_no_pubkey");let s=e.pubkey.type==="/cosmos.crypto.secp256k1.PubKey"?Xt.decode(e.pubkey.value).key:e.pubkey.value;return Ht(Cn.decode(n),Cn.decode(r),s)}}function rn({chain:i,...o}){let r=zn[i],n="index"in o?o.index||0:0,t=Wn("derivationPath"in o&&o.derivationPath?o.derivationPath:zt(Yt[i],{index:n})),e;async function s(){if(e)return e;return e=await Qt(o).with({phrase:qn.string},({phrase:m})=>Vn({derivationPath:t,phrase:m,prefix:r})).with({signer:qn.any},({signer:m})=>m).otherwise(()=>{return}),e}async function c(m){let l=await q(i);return(await _(l)).getAccount(m)}async function a(){let m=await s(),[l]=await m?.getAccounts()||[];return l?.address}async function p(){let m=await s(),[l]=await m?.getAccounts()||[];if(!l?.pubkey)throw new N("toolbox_cosmos_signer_not_defined");return Cn.encode(l?.pubkey)}async function h(m){let l=await s(),y=await a(),b=await q(i);if(!(l&&y))throw new N("toolbox_cosmos_signer_not_defined");return(await L(b,l)).sign(y,m.msgs,m.fee,m.memo,{accountNumber:BigInt(m.accountNumber),chainId:m.chainId,sequence:m.sequence})}async function w(m){let l=await s(),y=await a(),b=await q(i);if(!(l&&y))throw new N("toolbox_cosmos_signer_not_defined");let C=await(await L(b,l)).signAndBroadcast(y,m.msgs,m.fee,m.memo);if(C.code!==0)throw new N("core_swap_transaction_error",{code:C.code,message:C.rawLog});return C.transactionHash}async function S({recipient:m,assetValue:l,memo:y="",feeRate:b,feeOptionKey:A=Tn.Fast,sweep:C}){let T=await s(),k=await a();if(!(T&&k))throw new N("toolbox_cosmos_signer_not_defined");let E=await q(i),sn=On.from({chain:i}),H=tn(sn),G=te(b||(await Yn(i,Gn[i]))[A],H,i),cn=await L(E,T),J=U(l.symbol),an=[{amount:(C?W({assetValue:l,balances:await Sn(i)(k),denom:J,feeAmount:mn(G.amount,J)}):l).getBaseValue("string"),denom:J}],{transactionHash:un}=await cn.sendTokens(k,m,an,G,y);return un}return{createPrivateKeyFromPhrase:ie(t),createTransaction:Fn,fetchFeeRateFromSwapKit:Qn,getAccount:c,getAddress:a,getBalance:async(m,l)=>{let b=(await Sn(i)(m)).filter(({denom:A})=>A&&!A.includes("IBC/")&&!([x.THORChain,x.Maya].includes(i)&&A.split("-").length>2)).flatMap(({denom:A,amount:C})=>{let T=[x.THORChain,x.Maya].includes(i)&&(A.includes("/")||A.includes("˜"))?`${i}.${A}`:A;try{return[In(T,C)]}catch{return[]}});if(b.length===0)return[On.from({chain:i})];return b},getBalanceAsDenoms:Sn(i),getFees:()=>Yn(i,Gn[i]),getPubKey:p,getSignerFromPhrase:({phrase:m,derivationPath:l})=>Vn({derivationPath:Wn(l),index:n,phrase:m,prefix:r}),getSignerFromPrivateKey:(m)=>Zt({prefix:r,privateKey:m}),signAndBroadcastTransaction:w,signTransaction:h,transfer:S,validateAddress:oe(i),verifySignature:ne(c)}}async function lo(i,o){try{let n=(await Xn.getGasRate()).find((t)=>t.chainId===i)?.value;return n?Number.parseFloat(n):o}catch{return o}}function fo({assetValue:{chain:i}}){return On.from({chain:i,value:ee(i)})}async function Yn(i,o){let{chainId:r,baseDecimal:n}=Gt(i),t=await Qn(r,o);return{average:wn.fromBigInt(BigInt(t),n),fast:wn.fromBigInt(BigInt($n(t,Tn.Fast,!0)),n),fastest:wn.fromBigInt(BigInt($n(t,Tn.Fastest,!0)),n)}}function te(i,o,r){return{amount:[{amount:typeof i==="number"?i.toString():i.getBaseValue("string"),denom:o}],gas:M(r).gas}}function ee(i){return{[x.Cosmos]:0.007,[x.Kujira]:0.02,[x.Noble]:0.01,[x.THORChain]:0.02,[x.Maya]:0.02,[x.Harbor]:0.02}[i]||0}function oe(i){let o=zn[i];return function(n){if(!n.startsWith(o))return!1;try{let{prefix:t,words:e}=An.decode(n);return An.encode(t,e)===n.toLocaleLowerCase()}catch{return!1}}}function Sn(i){return async function(r){let n=await q(i);return(await(await _(n)).getAllBalances(r)).map((c)=>({...c,denom:c.denom.includes("/")?c.denom.toUpperCase():c.denom}))}}function ie(i){return async function(r){let n=await Wt(r),e=Et.fromMasterSeed(n).derive(i);if(!e.privateKey)throw new N("toolbox_cosmos_invalid_params",{error:"HDKey derivation produced no private key"});return jt.getPublicKey(e.privateKey,!0),Uint8Array.from(e.privateKey)}}import{secp256k1 as re}from"@noble/curves/secp256k1.js";import{base64 as B}from"@scure/base";import{buildMultisignedTx as se,createMultisigThresholdPubkey as ce,signAmino as ae,createWalletFromMnemonic as ue,encodeTxRaw as le,multisigPubkeyToAddress as fe,singlePubkeyToAddress as tt}from"@swapkit/cosmos-signer";import{CosmosChainPrefixes as de,derivationPathToString as me,FeeOption as xn,getRPCUrl as et,NetworkDerivationPath as pe,SwapKitError as K,updateDerivationPath as ye}from"@swapkit/helpers";import{match as ge,P as nt}from"ts-pattern";function he(i){let o=[{address:i.address,algo:"secp256k1",pubkey:i.publicKey}];return{accounts:o,getAccounts:()=>Promise.resolve(o),async signAmino(r,n){if(r!==i.address)throw new K("toolbox_cosmos_signer_not_defined");let t=await ae(i.privateKey,i.publicKey,{signDoc:n});return{signature:t.signature,signed:t.signed}}}}function be({prefix:i,derivationPath:o}){return async function(n,t=0){let e=await ue({hdPath:`${o}/${t}`,mnemonic:n,prefix:i});return he(e)}}function Ae(i){return B.encode(i)}function we(i,o){return async function({wallet:n,tx:t}){let{msgs:e,accountNumber:s,sequence:c,chainId:a,fee:p,memo:h}=typeof t==="string"?JSON.parse(t):t,w=(await n.getAccounts())?.[0]?.address||"",S=F(i,o),m=j(),l=await Bn(n,{aminoTypes:S,registry:m}),y=[];for(let C of e){let T=I(C,i);y.push(T)}let{signatures:[b]}=await l.sign(w,y,p,h,{accountNumber:BigInt(s),chainId:a,sequence:c});return{bodyBytes:on({chain:i,memo:h,msgs:e.map(R)}),signature:Ae(b)}}}function ot(i){if(i.length!==33||i[0]!==2&&i[0]!==3)throw new K("toolbox_cosmos_invalid_params",{error:"Invalid compressed secp256k1 pubkey (must be 33 bytes starting with 0x02 or 0x03)"});return{type:"tendermint/PubKeySecp256k1",value:B.encode(i)}}function Se({prefix:i,chain:o}){return async function(n,t,e,s,c){let a=await et(o),{sequence:p,fee:h}=JSON.parse(n),w=it(e,s),S=t.map((y)=>[tt(ot(B.decode(y.pubKey)),i),B.decode(y.signature)]),m=await _(a),{transactionHash:l}=await m.broadcastTx(se({bodyBytes:c,fee:{amount:h.amount,gasLimit:BigInt(h.gas),...h.payer?{payer:h.payer}:{},...h.granter?{granter:h.granter}:{}},multisigPubkey:w,prefix:i,sequence:p,signatures:new Map(S)}));return l}}function it(i,o,r=!0){return ce(i.map((n)=>ot(B.decode(n))),o,r)}function Ce(i){return B.decode(i)}function Oe({privateKey:i,message:o}){let r=re.sign(B.decode(o),i,{lowS:!0,prehash:!1});return Promise.resolve(B.encode(r))}function rt({chain:i,...o}){let r=de[i],n="index"in o?o.index||0:0,t="derivationPath"in o&&o.derivationPath?o.derivationPath:ye(pe[i],{index:n}),e=rn({chain:i,...o}),s=M(i),c;function a(){return c??=ge(o).with({phrase:nt.string},({phrase:l})=>e.getSignerFromPhrase({derivationPath:t,phrase:l})).with({signer:nt.any},({signer:l})=>Promise.resolve(l)).otherwise(()=>Promise.resolve(void 0)),c}async function p(){let l=await et(i),y=await a();if(!y)throw new K("toolbox_cosmos_no_signer");let b=j(),A=F(i,r),C=await L(l,y,{aminoTypes:A,registry:b});return{signer:y,signingClient:C}}async function h({fee:l,memo:y,msgs:b}){let{signer:A,signingClient:C}=await p(),T=(await A.getAccounts())?.[0]?.address;if(!T)throw new K("toolbox_cosmos_signer_not_defined");let k=await C.signAndBroadcast(T,b,l,y);if(k.code!==0)throw new K("core_swap_transaction_error",{code:k.code,message:k.rawLog});return k.transactionHash}async function w(){let l=await nn(i);return{[xn.Average]:l,[xn.Fast]:l,[xn.Fastest]:l}}async function S({assetValue:l,memo:y="",recipient:b,sweep:A}){let{signer:C,signingClient:T}=await p(),k=(await C.getAccounts())?.[0]?.address;if(!k)throw new K("toolbox_cosmos_no_signer");let E="signAmino"in C,sn=A?await bn({assetValue:l,sender:k}):l,H=hn({assetValue:sn,memo:y,recipient:b,sender:k});if(E){let J=I(H,i),{signatures:kn,authInfoBytes:an}=await T.sign(k,[J],s,y),un=le({authInfoBytes:an,bodyBytes:on({chain:i,memo:y,msgs:[H].map(R)}),signatures:kn});return(await T.broadcastTx(un)).transactionHash}let G=R(H),cn=I(G,i);return h({fee:s,memo:y,msgs:[cn]})}async function m(l){let{signer:y,signingClient:b}=await p(),A=(await y.getAccounts())?.[0]?.address;if(!A)throw new K("toolbox_cosmos_signer_not_defined");return b.sign(A,l.msgs,l.fee,l.memo,{accountNumber:BigInt(l.accountNumber),chainId:l.chainId,sequence:l.sequence})}return{...e,broadcastMultisigTx:Se({chain:i,prefix:r}),buildAminoMsg:hn,buildEncodedTxBody:on,convertToSignable:I,createDefaultAminoTypes:()=>F(i,r),createDefaultRegistry:j,createMultisig:it,createTransaction:Jn,deposit:S,getFees:w,importSignature:Ce,parseAminoMessageForDirectSigning:R,pubkeyToAddress:(l)=>{if(l.type==="tendermint/PubKeyMultisigThreshold")return fe(l,r);return tt(l,r)},secp256k1HdWalletFromMnemonic:be({derivationPath:me(t),prefix:r}),signAndBroadcastTransaction:h,signMultisigTx:we(i,r),signTransaction:m,signWithPrivateKey:Oe,transfer:S}}var ko=(i,o)=>{switch(i){case V.Cosmos:case V.Kujira:case V.Noble:return rn({chain:i,...o});case V.Maya:case V.THORChain:return rt({chain:i,...o});default:throw new Te("toolbox_cosmos_not_supported",{chain:i})}};export{bt as DEFAULT_COSMOS_FEE_MAINNET,At as DEFAULT_KUJI_FEE_MAINNET,wt as DEFAULT_NOBLE_FEE_MAINNET,Ve as MAYA_GAS_VALUE,qe as THORCHAIN_GAS_VALUE,Mn as USK_KUJIRA_FACTORY_DENOM,ht as YUM_KUJIRA_FACTORY_DENOM,Q as base64ToBech32,X as bech32ToBase64,hn as buildAminoMsg,Lt as buildDepositTx,on as buildEncodedTxBody,Kt as buildTransferTx,I as convertToSignable,Fn as cosmosCreateTransaction,rn as createCosmosToolbox,F as createDefaultAminoTypes,j as createDefaultRegistry,Bn as createOfflineStargateClient,L as createSigningStargateClient,_ as createStargateClient,rt as createThorchainToolbox,Jn as createTransaction,jn as depositMsgAmino,fo as estimateTransactionFee,Qn as fetchFeeRateFromSwapKit,De as fromBase64,In as getAssetFromDenom,oe as getCosmosAddressValidator,ko as getCosmosToolbox,M as getDefaultChainFee,tn as getDenomWithChain,mn as getFeeAmountForDenom,lo as getFeeRateFromSwapKit,U as getMsgSendDenom,Vn as getSignerFromPhrase,Zt as getSignerFromPrivateKey,W as getSweepAssetValue,nn as getThorchainNativeFee,R as parseAminoMessageForDirectSigning,bn as resolveThorchainSweepAssetValue,ve as toBase64,Ln as transferMsgAmino,ne as verifySignature};
@@ -1 +1 @@
1
- import{ja as b}from"../../chunk-exyqap7m.js";import{AssetValue as h,Chain as c,derivationPathToString as ee,getChainConfig as H,getRPCUrl as X,SKConfig as te,SwapKitError as u}from"@swapkit/helpers";import{match as ne,P as re}from"ts-pattern";var se=/^G[A-Z2-7]{55}$/,ae=/^[A-Za-z0-9]{1,12}$/,j=2,oe=600000,I;async function G(e){if(I&&Date.now()-I.timestamp<oe)return I.value;let l=(await e.ledgers().order("desc").limit(1).call()).records[0]?.base_reserve_in_stroops;if(l===void 0)throw new u({errorKey:"toolbox_stellar_balance_error",info:{reason:"base_reserve_unavailable"}});return I={timestamp:Date.now(),value:l},l}function L(e){return h.from({chain:c.Stellar,value:e}).getBaseValue("bigint")}function ie(e){let{baseDecimal:s}=H(c.Stellar);return h.from({chain:c.Stellar,fromBaseDecimal:s,value:e}).getValue("string")}function V({balance:e,baseReserveInStroops:s,numSponsored:l,numSponsoring:p,sellingLiabilities:d,subentryCount:g}){let w=L(e),_=L(d),k=j+g+p-l,K=BigInt(k)*BigInt(s),A=w-K-_;return A>0n?A:0n}function le({account:e,assetValue:s,baseReserveInStroops:l,fee:p}){let d=e.balances.find((_)=>_.asset_type==="native"),w=(d?V({balance:d.balance,baseReserveInStroops:l,numSponsored:e.num_sponsored,numSponsoring:e.num_sponsoring,sellingLiabilities:d.selling_liabilities,subentryCount:e.subentry_count}):0n)-BigInt(p);if(w<=0n)throw new u({errorKey:"toolbox_sweep_amount_too_low",info:{asset:s.toString(),reason:"spendable balance does not cover the transaction fee"}});return w}function ce({baseReserveInStroops:e,sweepAmountInStroops:s}){if(s===void 0||e===void 0)return;let l=BigInt(j)*BigInt(e);if(s<l)throw new u({errorKey:"toolbox_sweep_amount_too_low",info:{amountInStroops:s,minimumStartingBalanceInStroops:l,reason:"starting balance is below the Stellar account minimum"}})}function ue({account:e,assetCode:s,assetValue:l,issuer:p,sweep:d}){if(!d)return l.getValue("string");let g=e.balances.find((w)=>("asset_code"in w)&&w.asset_code===s&&w.asset_issuer===p)?.balance??"0";if(L(g)<=0n)throw new u({errorKey:"toolbox_sweep_amount_too_low",info:{asset:l.toString(),balance:g,reason:"trust-line balance is not positive"}});return g}function de(e){if(!e)return;if(new TextEncoder().encode(e).length>28)throw new u("helpers_invalid_memo_type")}function O(e){if(!e||typeof e!=="string"||!e.startsWith("G")||e.length!==56)return!1;return se.test(e)}function U(e){if(typeof e!=="object"||e===null)return;let s="response"in e?e.response:void 0;return typeof s?.status==="number"?s.status:void 0}function fe(e){return U(e)===504}function me(e){return e.hash?.().toString("hex")}function pe(e){return[...new Set([e,...te.get("rpcUrls")[c.Stellar]])].filter(Boolean)}async function W(e){if(!O(e))return!1;try{let{StrKey:s}=await import("@stellar/stellar-sdk");return s.isValidEd25519PublicKey(e)}catch{return!1}}async function F(e){let{address:s,ticker:l}=e,p=s?await W(s):!1;if(e.chain!==c.Stellar||e.isGasAsset||!ae.test(l)||!s||!p)throw new u({errorKey:"helpers_invalid_asset_identifier",info:{identifier:e.toString()}});return{assetCode:l,issuer:s}}function we(e={}){let s;async function l({phrase:t,path:n}){let{HDKey:a}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:r}=await import("@scure/bip39"),{Keypair:o}=await import("@stellar/stellar-sdk"),i=r(t),m=a.fromMasterSeed(i).derive(n,!0);return o.fromRawEd25519Seed(Buffer.from(m.privateKey))}async function p(){if(s)return s;let t=ne(e).with({phrase:re.string},({phrase:r})=>r).otherwise(()=>{return});if(!t)throw new u("toolbox_stellar_no_signer");if(e.derivationPath&&(e.derivationPath[3]||e.derivationPath[4]))throw new u("toolbox_derivation_slot_unsupported",{chain:c.Stellar,derivationPath:e.derivationPath});let n=e.index??0;if(!e.derivationPath&&(!Number.isInteger(n)||n<0))throw new u("toolbox_derivation_slot_unsupported",{chain:c.Stellar,index:n});let a=e.derivationPath?ee(e.derivationPath.slice(0,3)):`m/44'/148'/${n}'`;return s=await l({path:a,phrase:t}),s}async function d(t){let{Horizon:n}=await import("@stellar/stellar-sdk"),a=t||await X(c.Stellar);return new n.Server(a)}async function g(t,n){for(let a of n)try{return(await(await d(a)).transactions().transaction(t).call()).hash||t}catch{}return}async function w(t,n){let a=await X(c.Stellar),r=pe(a),o=me(t),i;for(let f of r)try{let m=await d(f),{hash:S}=await m.submitTransaction(t);return S}catch(m){if(i=m,!fe(m))break;let S=o?await g(o,r):void 0;if(S)return S}throw new u(n,i)}async function _(){try{return(await p()).publicKey()}catch(t){if(t instanceof u&&t.errorKey==="toolbox_derivation_slot_unsupported")throw t;return""}}async function k(t){let n=t||await _();if(!n)throw new u("toolbox_stellar_account_not_found");let a=await d(),[r,o]=await Promise.allSettled([a.loadAccount(n),G(a)]);if(r.status==="rejected"){let i=r.reason;if(U(i)===404)return[h.from({chain:c.Stellar,value:0})];throw i}if(o.status==="rejected")throw o.reason;return r.value.balances.map((i)=>{if(i.asset_type==="native"){let S=V({balance:i.balance,baseReserveInStroops:o.value,numSponsored:r.value.num_sponsored,numSponsoring:r.value.num_sponsoring,sellingLiabilities:i.selling_liabilities,subentryCount:r.value.subentry_count}),{baseDecimal:B}=H(c.Stellar);return h.from({chain:c.Stellar,fromBaseDecimal:B,value:S})}let f="asset_code"in i?i.asset_code:"",m="asset_issuer"in i?i.asset_issuer:"";return h.from({asset:`${c.Stellar}.${f}-${m}`,asyncTokenLookup:!1,value:i.balance})})}async function K({address:t,assetValue:n}){if(n.chain!==c.Stellar)throw new u({errorKey:"toolbox_stellar_trustline_asset_invalid",info:{asset:n.toString()}});if(n.isGasAsset)return!0;if(!n.address)throw new u({errorKey:"toolbox_stellar_trustline_asset_invalid",info:{asset:n.toString(),reason:"missing issuer"}});let a=await d(),r;try{r=await a.loadAccount(t)}catch(o){if(U(o)===404)return!1;throw o}return r.balances.some((o)=>("asset_code"in o)&&o.asset_code===n.ticker&&o.asset_issuer===n.address)}async function A({recipient:t,assetValue:n,memo:a,sender:r,sweep:o}){if(de(a),!await W(t))throw new u("core_transaction_invalid_recipient_address");let f=r||await _();if(!f)throw new u("toolbox_stellar_no_signer");let{Asset:m,Memo:S,Networks:B,Operation:y,TransactionBuilder:E}=await import("@stellar/stellar-sdk"),v=await d(),[P,x,D]=await Promise.all([v.fetchBaseFee(),v.loadAccount(f),o&&n.isGasAsset?G(v):Promise.resolve(void 0)]),C=new E(x,{fee:String(P),networkPassphrase:B.PUBLIC});if(n.isGasAsset){let T=o&&D!==void 0?le({account:x,assetValue:n,baseReserveInStroops:D,fee:P}):void 0,R=T===void 0?n.getValue("string"):ie(T);try{await v.loadAccount(t),C.addOperation(y.payment({amount:R,asset:m.native(),destination:t}))}catch{ce({baseReserveInStroops:D,sweepAmountInStroops:T}),C.addOperation(y.createAccount({destination:t,startingBalance:R}))}}else{let{assetCode:T,issuer:R}=await F(n),Y=ue({account:x,assetCode:T,assetValue:n,issuer:R,sweep:o});C.addOperation(y.payment({amount:Y,asset:new m(T,R),destination:t}))}if(a)C.addMemo(S.text(a));return C.setTimeout(30).build()}async function z({assetValue:t,limit:n,sender:a}){let r=a||await _();if(!r)throw new u("toolbox_stellar_no_signer");let{Asset:o,Networks:i,Operation:f,TransactionBuilder:m}=await import("@stellar/stellar-sdk"),{assetCode:S,issuer:B}=await F(t),y=await d(),[E,v]=await Promise.all([y.fetchBaseFee(),y.loadAccount(r)]),P=new o(S,B),x=n!==void 0?f.changeTrust({asset:P,limit:n}):f.changeTrust({asset:P});return new m(v,{fee:String(E),networkPassphrase:i.PUBLIC}).addOperation(x).setTimeout(30).build()}async function M(t){let{TransactionBuilder:n,Networks:a}=await import("@stellar/stellar-sdk"),r=await p(),o=n.fromXDR(t.toXDR(),a.PUBLIC);return o.sign(r),o}function N(t){return w(t,"toolbox_stellar_broadcast_error")}async function Z({recipient:t,assetValue:n,memo:a,sweep:r}){let o=await p(),i=o.publicKey(),f=await A({assetValue:n,memo:a,recipient:t,sender:i,sweep:r});return f.sign(o),w(f,"toolbox_stellar_transaction_failed")}async function q({assetValue:t,limit:n}){let a=await p(),r=await z({assetValue:t,limit:n,sender:a.publicKey()});return r.sign(a),w(r,"toolbox_stellar_transaction_failed")}async function J(t){let n=await M(t);return N(n)}async function Q(){let{baseDecimal:t}=H(c.Stellar);try{let r=(await(await d()).feeStats()).fee_charged.p50;return h.from({chain:c.Stellar,fromBaseDecimal:t,value:r})}catch{return h.from({chain:c.Stellar,fromBaseDecimal:t,value:"100"})}}return{broadcastTransaction:N,createTransaction:A,createTrustline:q,createTrustlineTransaction:z,estimateTransactionFee:Q,getAddress:_,getBalance:k,hasTrustline:K,signAndBroadcastTransaction:J,signTransaction:M,transfer:Z,validateAddress:O}}export{we as getStellarToolbox,O as validateStellarAddress};
1
+ import{ja as p}from"../../chunk-exyqap7m.js";import{AssetValue as h,Chain as c,derivationPathToString as ne,getChainConfig as L,getRPCUrl as F,SKConfig as re,SwapKitError as d}from"@swapkit/helpers";import{match as se,P as H}from"ts-pattern";var ae=/^G[A-Z2-7]{55}$/,oe=/^[A-Za-z0-9]{1,12}$/,W=2,ie=600000,k;async function j(e){if(k&&Date.now()-k.timestamp<ie)return k.value;let l=(await e.ledgers().order("desc").limit(1).call()).records[0]?.base_reserve_in_stroops;if(l===void 0)throw new d({errorKey:"toolbox_stellar_balance_error",info:{reason:"base_reserve_unavailable"}});return k={timestamp:Date.now(),value:l},l}function U(e){return h.from({chain:c.Stellar,value:e}).getBaseValue("bigint")}function le(e){let{baseDecimal:r}=L(c.Stellar);return h.from({chain:c.Stellar,fromBaseDecimal:r,value:e}).getValue("string")}function Z({balance:e,baseReserveInStroops:r,numSponsored:l,numSponsoring:w,sellingLiabilities:S,subentryCount:f}){let _=U(e),b=U(S),v=W+f+w-l,E=BigInt(v)*BigInt(r),R=_-E-b;return R>0n?R:0n}function ce({account:e,assetValue:r,baseReserveInStroops:l,fee:w}){let S=e.balances.find((b)=>b.asset_type==="native"),_=(S?Z({balance:S.balance,baseReserveInStroops:l,numSponsored:e.num_sponsored,numSponsoring:e.num_sponsoring,sellingLiabilities:S.selling_liabilities,subentryCount:e.subentry_count}):0n)-BigInt(w);if(_<=0n)throw new d({errorKey:"toolbox_sweep_amount_too_low",info:{asset:r.toString(),reason:"spendable balance does not cover the transaction fee"}});return _}function ue({baseReserveInStroops:e,sweepAmountInStroops:r}){if(r===void 0||e===void 0)return;let l=BigInt(W)*BigInt(e);if(r<l)throw new d({errorKey:"toolbox_sweep_amount_too_low",info:{amountInStroops:r,minimumStartingBalanceInStroops:l,reason:"starting balance is below the Stellar account minimum"}})}function de({account:e,assetCode:r,assetValue:l,issuer:w,sweep:S}){if(!S)return l.getValue("string");let f=e.balances.find((_)=>("asset_code"in _)&&_.asset_code===r&&_.asset_issuer===w)?.balance??"0";if(U(f)<=0n)throw new d({errorKey:"toolbox_sweep_amount_too_low",info:{asset:l.toString(),balance:f,reason:"trust-line balance is not positive"}});return f}function fe(e){if(!e)return;if(new TextEncoder().encode(e).length>28)throw new d("helpers_invalid_memo_type")}function z(e){if(!e||typeof e!=="string"||!e.startsWith("G")||e.length!==56)return!1;return ae.test(e)}function O(e){if(typeof e!=="object"||e===null)return;let r="response"in e?e.response:void 0;return typeof r?.status==="number"?r.status:void 0}function me(e){return O(e)===504}function ge(e){return e.hash?.().toString("hex")}function Se(e){return[...new Set([e,...re.get("rpcUrls")[c.Stellar]])].filter(Boolean)}async function q(e){if(!z(e))return!1;try{let{StrKey:r}=await import("@stellar/stellar-sdk");return r.isValidEd25519PublicKey(e)}catch{return!1}}async function V(e){let{address:r,ticker:l}=e,w=r?await q(r):!1;if(e.chain!==c.Stellar||e.isGasAsset||!oe.test(l)||!r||!w)throw new d({errorKey:"helpers_invalid_asset_identifier",info:{identifier:e.toString()}});return{assetCode:l,issuer:r}}function we(e={}){let r;async function l(t){if(e.derivationPath&&(e.derivationPath[3]||e.derivationPath[4]))throw new d("toolbox_derivation_slot_unsupported",{chain:c.Stellar,derivationPath:e.derivationPath});let n=e.index??0;if(!e.derivationPath&&(!Number.isInteger(n)||n<0))throw new d("toolbox_derivation_slot_unsupported",{chain:c.Stellar,index:n});let o=e.derivationPath?ne(e.derivationPath.slice(0,3)):`m/44'/148'/${n}'`,{HDKey:s}=await import("micro-key-producer/slip10.js"),{mnemonicToSeedSync:a}=await import("@scure/bip39"),{Keypair:i}=await import("@stellar/stellar-sdk"),m=s.fromMasterSeed(a(t)).derive(o,!0),u=i.fromRawEd25519Seed(Buffer.from(m.privateKey));return{getAddress:()=>u.publicKey(),signTransaction:(g)=>(g.sign(u),g)}}async function w(){if(r)return r;return r=await se(e).with({phrase:H.string.minLength(1)},({phrase:t})=>l(t)).with({signer:H.not(H.nullish)},({signer:t})=>t).otherwise(()=>{return}),r}async function S(){let t=await w();if(!t)throw new d("toolbox_stellar_no_signer");return t}async function f(t){let{Horizon:n}=await import("@stellar/stellar-sdk"),o=t||await F(c.Stellar);return new n.Server(o)}async function _(t,n){for(let o of n)try{return(await(await f(o)).transactions().transaction(t).call()).hash||t}catch{}return}async function b(t,n){let o=await F(c.Stellar),s=Se(o),a=ge(t),i;for(let m of s)try{let u=await f(m),{hash:g}=await u.submitTransaction(t);return g}catch(u){if(i=u,!me(u))break;let g=a?await _(a,s):void 0;if(g)return g}throw new d(n,i)}async function v(){let t=await w();return t?t.getAddress():""}async function E(t){let n=t||await v();if(!n)throw new d("toolbox_stellar_account_not_found");let o=await f(),[s,a]=await Promise.allSettled([o.loadAccount(n),j(o)]);if(s.status==="rejected"){let i=s.reason;if(O(i)===404)return[h.from({chain:c.Stellar,value:0})];throw i}if(a.status==="rejected")throw a.reason;return s.value.balances.map((i)=>{if(i.asset_type==="native"){let g=Z({balance:i.balance,baseReserveInStroops:a.value,numSponsored:s.value.num_sponsored,numSponsoring:s.value.num_sponsoring,sellingLiabilities:i.selling_liabilities,subentryCount:s.value.subentry_count}),{baseDecimal:B}=L(c.Stellar);return h.from({chain:c.Stellar,fromBaseDecimal:B,value:g})}let m="asset_code"in i?i.asset_code:"",u="asset_issuer"in i?i.asset_issuer:"";return h.from({asset:`${c.Stellar}.${m}-${u}`,asyncTokenLookup:!1,value:i.balance})})}async function R({address:t,assetValue:n}){if(n.chain!==c.Stellar)throw new d({errorKey:"toolbox_stellar_trustline_asset_invalid",info:{asset:n.toString()}});if(n.isGasAsset)return!0;if(!n.address)throw new d({errorKey:"toolbox_stellar_trustline_asset_invalid",info:{asset:n.toString(),reason:"missing issuer"}});let o=await f(),s;try{s=await o.loadAccount(t)}catch(a){if(O(a)===404)return!1;throw a}return s.balances.some((a)=>("asset_code"in a)&&a.asset_code===n.ticker&&a.asset_issuer===n.address)}async function M({recipient:t,assetValue:n,memo:o,sender:s,sweep:a}){if(fe(o),!await q(t))throw new d("core_transaction_invalid_recipient_address");let m=s||await v();if(!m)throw new d("toolbox_stellar_no_signer");let{Asset:u,Memo:g,Networks:B,Operation:y,TransactionBuilder:D}=await import("@stellar/stellar-sdk"),T=await f(),[P,x,K]=await Promise.all([T.fetchBaseFee(),T.loadAccount(m),a&&n.isGasAsset?j(T):Promise.resolve(void 0)]),C=new D(x,{fee:String(P),networkPassphrase:B.PUBLIC});if(n.isGasAsset){let A=a&&K!==void 0?ce({account:x,assetValue:n,baseReserveInStroops:K,fee:P}):void 0,I=A===void 0?n.getValue("string"):le(A);try{await T.loadAccount(t),C.addOperation(y.payment({amount:I,asset:u.native(),destination:t}))}catch{ue({baseReserveInStroops:K,sweepAmountInStroops:A}),C.addOperation(y.createAccount({destination:t,startingBalance:I}))}}else{let{assetCode:A,issuer:I}=await V(n),te=de({account:x,assetCode:A,assetValue:n,issuer:I,sweep:a});C.addOperation(y.payment({amount:te,asset:new u(A,I),destination:t}))}if(o)C.addMemo(g.text(o));return C.setTimeout(30).build()}async function N({assetValue:t,limit:n,sender:o}){let s=o||await v();if(!s)throw new d("toolbox_stellar_no_signer");let{Asset:a,Networks:i,Operation:m,TransactionBuilder:u}=await import("@stellar/stellar-sdk"),{assetCode:g,issuer:B}=await V(t),y=await f(),[D,T]=await Promise.all([y.fetchBaseFee(),y.loadAccount(s)]),P=new a(g,B),x=n!==void 0?m.changeTrust({asset:P,limit:n}):m.changeTrust({asset:P});return new u(T,{fee:String(D),networkPassphrase:i.PUBLIC}).addOperation(x).setTimeout(30).build()}async function X(t){let n=await S(),{TransactionBuilder:o,Networks:s}=await import("@stellar/stellar-sdk");return n.signTransaction(o.fromXDR(t.toXDR(),s.PUBLIC))}function G(t){return b(t,"toolbox_stellar_broadcast_error")}async function J({recipient:t,assetValue:n,memo:o,sweep:s}){let a=await S(),i=await a.getAddress(),m=await M({assetValue:n,memo:o,recipient:t,sender:i,sweep:s}),u=await a.signTransaction(m);return b(u,"toolbox_stellar_transaction_failed")}async function Q({assetValue:t,limit:n}){let o=await S(),s=await N({assetValue:t,limit:n,sender:await o.getAddress()}),a=await o.signTransaction(s);return b(a,"toolbox_stellar_transaction_failed")}async function Y(t){let n=await X(t);return G(n)}async function ee(){let{baseDecimal:t}=L(c.Stellar);try{let s=(await(await f()).feeStats()).fee_charged.p50;return h.from({chain:c.Stellar,fromBaseDecimal:t,value:s})}catch{return h.from({chain:c.Stellar,fromBaseDecimal:t,value:"100"})}}return{broadcastTransaction:G,createTransaction:M,createTrustline:Q,createTrustlineTransaction:N,estimateTransactionFee:ee,getAddress:v,getBalance:E,hasTrustline:R,signAndBroadcastTransaction:Y,signTransaction:X,transfer:J,validateAddress:z}}export{we as getStellarToolbox,z as validateStellarAddress};
@@ -1 +1 @@
1
- import{ia as U}from"../../chunk-xdkdc1f0.js";import{ja as p}from"../../chunk-exyqap7m.js";import{AssetValue as et,Chain as g,getChainConfig as nt,NetworkDerivationPath as ot,SKConfig as rt,SwapKitError as l,SwapKitNumber as st}from"@swapkit/helpers";import{Address as i,beginCell as x,Cell as j,external as at,internal as it,loadStateInit as ct,SendMode as N,storeMessage as dt,toNano as L}from"@ton/core";import{match as F,P as B}from"ts-pattern";var lt=260734629,ft=L("0.01"),ut=L("0.05"),G=N.PAY_GAS_SEPARATELY+N.IGNORE_ERRORS,gt=N.CARRY_ALL_REMAINING_BALANCE+N.IGNORE_ERRORS,Tt=60000,O,v=0;async function pt(){let c=Date.now();if(O&&c-v<Tt)return O;let{getHttpEndpoint:w}=await import("@orbs-network/ton-access");return O=await w(),v=c,O}async function wt(){let[c]=rt.get("rpcUrls")[g.Ton]??[];if(c)return c;return await pt()}function Nt(c={}){let w,S,A;async function u(){if(!w){let{TonClient:t}=await import("@ton/ton"),e=c.provider??await wt();w=new t({endpoint:e})}return w}async function h(){return(await b()).address.toString()}async function C(){if(A)return A;return A=await F(c).with({phrase:B.string},async({phrase:t,derivationPath:e,index:n=0})=>{let r=ot[g.Ton],o=e?.some((a,d)=>a!==r[d]);if(n||o)throw new l("toolbox_derivation_slot_unsupported",{chain:g.Ton,derivationPath:e,index:n});let{mnemonicToWalletKey:s}=await import("@ton/crypto");return s(t.split(" "))}).with({signer:B.any},({signer:t})=>t).otherwise(()=>{return}),A}async function b(t){if(!S||t){let e=await C(),n=await u(),r=t||e;if(!r)throw new l("core_wallet_connection_not_found");let{WalletContractV4:o}=await import("@ton/ton"),s=o.create({publicKey:r.publicKey,workchain:0});S=n.open(s)}return S}let J=U(g.Ton);async function q({assetValue:t,recipient:e,memo:n,sender:r,sweep:o,jettonWalletAddress:s}){if(t.isGasAsset){if(o){let tt=r||await h(),K=await(await u()).getBalance(i.parse(tt));if(K<=0n)throw new l("toolbox_sweep_amount_too_low",{asset:t.toString(),balance:K.toString()})}let Z=n?D(n).toBoc().toString("base64"):void 0;return[{address:e,amount:t.getBaseValue("string"),payload:Z}]}let a=t.address;if(!a)throw new l({errorKey:"core_swap_contract_not_found",info:{asset:t.toString()}});let d=r??await h(),f=s?i.parse(s):await I({jettonMasterAddress:a,ownerAddress:d}),y=f.toString(),_=i.parse(e),T=i.parse(d),m=o?await H(f):t.getBaseValue("bigint");if(o&&m<=0n)throw new l("toolbox_sweep_amount_too_low",{asset:t.toString(),balance:m.toString()});let Q=n?D(n):void 0,X=V({destinationAddress:_,forwardPayload:Q,jettonAmount:m,responseAddress:T});return[{address:y,amount:ut.toString(),payload:X.toBoc().toString("base64")}]}async function M({sender:t,sweep:e,...n}){let r=e&&n.assetValue.isGasAsset?gt:G;return{messages:await q({...n,sender:t,sweep:e}),sendMode:r}}function k(t){if(!Array.isArray(t))return t;let[e]=t;return{messages:t.map(({sendMode:r,...o})=>o),sendMode:e?.sendMode??G}}function E(t){return t.map((e)=>{let n=e.payload?j.fromBase64(e.payload):void 0,r=e.stateInit?ct(j.fromBase64(e.stateInit).asSlice()):void 0,o=i.parse(e.address),s=i.isFriendly(e.address)?i.parseFriendly(e.address).isBounceable:!0;return it({body:n,bounce:s,init:r,to:o,value:BigInt(e.amount)})})}async function P(t){let e=await C(),n=await b();if(!n||!e)throw new l("core_wallet_connection_not_found");let r=await u(),{state:o}=await r.getContractState(n.address),s=o==="active",a=s?await n.getSeqno():0,{messages:d,sendMode:f}=k(t),y=n.createTransfer({messages:E(d),secretKey:e.secretKey,sendMode:f,seqno:a}),_=at({body:y,init:s?void 0:n.init,to:n.address});return x().store(dt(_)).endCell()}async function W(t){return await(await u()).sendFile(t.toBoc()),t.hash().toString("hex")}async function R(t){let e=await P(t);return W(e)}async function Y({assetValue:t,recipient:e,memo:n,sweep:r}){let o=await M({assetValue:t,memo:n,recipient:e,sweep:r});return R(o)}async function z({sender:t,...e}){let{baseDecimal:n}=nt(g.Ton),r=await F(t).with(B.string,(a)=>i.parseFriendly(a).address).otherwise(async()=>(await b()).address);if(!r)throw new l("toolbox_fee_estimation_failed",{chain:g.Ton});let o=et.from({chain:g.Ton,value:"0.01"}),s=await u();try{let a=await M({sender:t,...e}),d=await C(),f=await b();if(!f||!d)return o;let y=await f.getSeqno(),_=f.createTransfer({messages:E(a.messages),secretKey:d.secretKey,sendMode:a.sendMode,seqno:y}),{source_fees:T}=await s.estimateExternalMessageFee(r,{body:_,ignoreSignature:!0,initCode:null,initData:null}),m=T.in_fwd_fee+T.storage_fee+T.gas_fee+T.fwd_fee;return o.set(st.fromBigInt(BigInt(m),n))}catch{return o}}async function I({jettonMasterAddress:t,ownerAddress:e}){try{let n=await u(),r=i.parse(t),o=i.parse(e),{JettonMaster:s}=await import("@ton/ton");return await n.open(s.create(r)).getWalletAddress(o)}catch{throw new l({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:t,ownerAddress:e}})}}async function H(t){try{let e=await u(),{JettonWallet:n}=await import("@ton/ton");return await e.open(n.create(t)).getBalance()}catch{throw new l({errorKey:"core_swap_contract_not_found",info:{jettonWalletAddress:t.toString()}})}}function V({jettonAmount:t,destinationAddress:e,responseAddress:n,forwardAmount:r=ft,forwardPayload:o}){let s=x().storeUint(lt,32).storeUint(0,64).storeCoins(t).storeAddress(e).storeAddress(n).storeBit(0).storeCoins(r);if(o)s.storeBit(1).storeRef(o);else s.storeBit(0);return s.endCell()}function D(t){return x().storeUint(0,32).storeStringTail(t).endCell()}return{broadcastTransaction:W,createTransaction:M,estimateTransactionFee:z,getAddress:h,getBalance:J,getJettonWalletAddress:I,sign:P,signAndBroadcastTransaction:R,transfer:Y,validateAddress:yt}}function yt(c){try{return i.parse(c),!0}catch{return!1}}export{Nt as getTONToolbox,yt as validateTonAddress};
1
+ import{ia as U}from"../../chunk-xdkdc1f0.js";import{ja as w}from"../../chunk-exyqap7m.js";import{AssetValue as et,Chain as g,getChainConfig as nt,getRPCUrl as ot,NetworkDerivationPath as rt,SwapKitError as d,SwapKitNumber as st}from"@swapkit/helpers";import{Address as i,beginCell as x,Cell as j,external as at,internal as it,loadStateInit as ct,SendMode as N,storeMessage as dt,toNano as L}from"@ton/core";import{match as F,P as B}from"ts-pattern";var lt=260734629,ut=L("0.01"),ft=L("0.05"),G=N.PAY_GAS_SEPARATELY+N.IGNORE_ERRORS,gt=N.CARRY_ALL_REMAINING_BALANCE+N.IGNORE_ERRORS,Tt=60000,O,v=0;async function wt(){let u=Date.now();if(O&&u-v<Tt)return O;let{getHttpEndpoint:p}=await import("@orbs-network/ton-access");return O=await p(),v=u,O}async function pt(){try{return await ot(g.Ton)}catch{return await wt()}}function Nt(u={}){let p,S,A;async function f(){if(!p){let{TonClient:t}=await import("@ton/ton"),e=u.provider??await pt();p=new t({endpoint:e})}return p}async function h(){return(await b()).address.toString()}async function C(){if(A)return A;return A=await F(u).with({phrase:B.string},async({phrase:t,derivationPath:e,index:n=0})=>{let r=rt[g.Ton],o=e?.some((a,c)=>a!==r[c]);if(n||o)throw new d("toolbox_derivation_slot_unsupported",{chain:g.Ton,derivationPath:e,index:n});let{mnemonicToWalletKey:s}=await import("@ton/crypto");return s(t.split(" "))}).with({signer:B.any},({signer:t})=>t).otherwise(()=>{return}),A}async function b(t){if(!S||t){let e=await C(),n=await f(),r=t||e;if(!r)throw new d("core_wallet_connection_not_found");let{WalletContractV4:o}=await import("@ton/ton"),s=o.create({publicKey:r.publicKey,workchain:0});S=n.open(s)}return S}let J=U(g.Ton);async function q({assetValue:t,recipient:e,memo:n,sender:r,sweep:o,jettonWalletAddress:s}){if(t.isGasAsset){if(o){let tt=r||await h(),K=await(await f()).getBalance(i.parse(tt));if(K<=0n)throw new d("toolbox_sweep_amount_too_low",{asset:t.toString(),balance:K.toString()})}let Z=n?D(n).toBoc().toString("base64"):void 0;return[{address:e,amount:t.getBaseValue("string"),payload:Z}]}let a=t.address;if(!a)throw new d({errorKey:"core_swap_contract_not_found",info:{asset:t.toString()}});let c=r??await h(),l=s?i.parse(s):await I({jettonMasterAddress:a,ownerAddress:c}),y=l.toString(),_=i.parse(e),T=i.parse(c),m=o?await H(l):t.getBaseValue("bigint");if(o&&m<=0n)throw new d("toolbox_sweep_amount_too_low",{asset:t.toString(),balance:m.toString()});let Q=n?D(n):void 0,X=V({destinationAddress:_,forwardPayload:Q,jettonAmount:m,responseAddress:T});return[{address:y,amount:ft.toString(),payload:X.toBoc().toString("base64")}]}async function M({sender:t,sweep:e,...n}){let r=e&&n.assetValue.isGasAsset?gt:G;return{messages:await q({...n,sender:t,sweep:e}),sendMode:r}}function k(t){if(!Array.isArray(t))return t;let[e]=t;return{messages:t.map(({sendMode:r,...o})=>o),sendMode:e?.sendMode??G}}function E(t){return t.map((e)=>{let n=e.payload?j.fromBase64(e.payload):void 0,r=e.stateInit?ct(j.fromBase64(e.stateInit).asSlice()):void 0,o=i.parse(e.address),s=i.isFriendly(e.address)?i.parseFriendly(e.address).isBounceable:!0;return it({body:n,bounce:s,init:r,to:o,value:BigInt(e.amount)})})}async function P(t){let e=await C(),n=await b();if(!n||!e)throw new d("core_wallet_connection_not_found");let r=await f(),{state:o}=await r.getContractState(n.address),s=o==="active",a=s?await n.getSeqno():0,{messages:c,sendMode:l}=k(t),y=n.createTransfer({messages:E(c),secretKey:e.secretKey,sendMode:l,seqno:a}),_=at({body:y,init:s?void 0:n.init,to:n.address});return x().store(dt(_)).endCell()}async function W(t){return await(await f()).sendFile(t.toBoc()),t.hash().toString("hex")}async function R(t){let e=await P(t);return W(e)}async function Y({assetValue:t,recipient:e,memo:n,sweep:r}){let o=await M({assetValue:t,memo:n,recipient:e,sweep:r});return R(o)}async function z({sender:t,...e}){let{baseDecimal:n}=nt(g.Ton),r=await F(t).with(B.string,(a)=>i.parseFriendly(a).address).otherwise(async()=>(await b()).address);if(!r)throw new d("toolbox_fee_estimation_failed",{chain:g.Ton});let o=et.from({chain:g.Ton,value:"0.01"}),s=await f();try{let a=await M({sender:t,...e}),c=await C(),l=await b();if(!l||!c)return o;let y=await l.getSeqno(),_=l.createTransfer({messages:E(a.messages),secretKey:c.secretKey,sendMode:a.sendMode,seqno:y}),{source_fees:T}=await s.estimateExternalMessageFee(r,{body:_,ignoreSignature:!0,initCode:null,initData:null}),m=T.in_fwd_fee+T.storage_fee+T.gas_fee+T.fwd_fee;return o.set(st.fromBigInt(BigInt(m),n))}catch{return o}}async function I({jettonMasterAddress:t,ownerAddress:e}){try{let n=await f(),r=i.parse(t),o=i.parse(e),{JettonMaster:s}=await import("@ton/ton");return await n.open(s.create(r)).getWalletAddress(o)}catch{throw new d({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:t,ownerAddress:e}})}}async function H(t){try{let e=await f(),{JettonWallet:n}=await import("@ton/ton");return await e.open(n.create(t)).getBalance()}catch{throw new d({errorKey:"core_swap_contract_not_found",info:{jettonWalletAddress:t.toString()}})}}function V({jettonAmount:t,destinationAddress:e,responseAddress:n,forwardAmount:r=ut,forwardPayload:o}){let s=x().storeUint(lt,32).storeUint(0,64).storeCoins(t).storeAddress(e).storeAddress(n).storeBit(0).storeCoins(r);if(o)s.storeBit(1).storeRef(o);else s.storeBit(0);return s.endCell()}function D(t){return x().storeUint(0,32).storeStringTail(t).endCell()}return{broadcastTransaction:W,createTransaction:M,estimateTransactionFee:z,getAddress:h,getBalance:J,getJettonWalletAddress:I,sign:P,signAndBroadcastTransaction:R,transfer:Y,validateAddress:yt}}function yt(u){try{return i.parse(u),!0}catch{return!1}}export{Nt as getTONToolbox,yt as validateTonAddress};
@@ -1 +1 @@
1
- import"../../chunk-exyqap7m.js";import{hexToBytes as un}from"@noble/hashes/utils.js";import{Chain as fn,getRPCUrlSync as ln,SwapKitError as y,warnOnce as K}from"@swapkit/helpers";import{secp256k1 as gt}from"@noble/curves/secp256k1.js";import{sha256 as _t}from"@noble/hashes/sha2.js";import{keccak_256 as nn}from"@noble/hashes/sha3.js";import{bytesToHex as S,hexToBytes as M}from"@noble/hashes/utils.js";import{createBase58check as en}from"@scure/base";import{SwapKitError as Tt}from"@swapkit/helpers";var L=en(_t),mt=65,rn=2n**256n;function b(n){if(typeof n!=="string")return!1;try{let t=L.decode(n);return t.length===21&&t[0]===mt}catch{return!1}}function wt(n){return S(L.decode(n))}function on(n){return L.decode(n).slice(1)}function pt(n){let t=gt.getPublicKey(M(n),!1),e=nn(t.slice(1)).slice(-20),r=new Uint8Array(21);return r[0]=mt,r.set(e,1),L.encode(r)}function yt({txID:n,privateKey:t}){let e=gt.sign(M(n),M(t),{format:"recovered",prehash:!1}),r=e[0]??0,i=S(e.slice(1,33)),o=S(e.slice(33,65)),c=(r+27).toString(16).padStart(2,"0");return i+o+c}function N({txID:n,raw_data_hex:t}){let e=S(_t(M(t)));if(n!==e)throw new Tt("toolbox_tron_invalid_transaction_integrity",{expected:e,txID:n})}function an(n){return`000000000000000000000000${S(on(n))}`}function sn(n){let t=typeof n==="bigint"?n:BigInt(n);if(t<0n||t>=rn)throw new Tt("toolbox_tron_invalid_token_identifier",{identifier:t.toString()});return t.toString(16).padStart(64,"0")}function R(n){return n.map(({type:t,value:e})=>t==="address"?an(e):sn(BigInt(e))).join("")}function cn(n){return S(new TextEncoder().encode(n))}var dn=/^0x(?:[0-9a-fA-F]{2})+$/;function z(n){return dn.test(n)?n.slice(2):cn(n)}var bt="https://api.trongrid.io",gn=1000,_n=1e5,Tn=1e6,mn=420,wn=1e6,pn=30000,yn=2147483647;function xt(){try{return ln(fn.Tron)}catch{return bt}}function At(n){let t=n!==void 0&&Number.isFinite(n)&&n>0?Math.min(n,yn):pn,e=new AbortController,r=setTimeout(()=>e.abort(),t);return{cleanup:()=>clearTimeout(r),signal:e.signal}}function Z(n){if(!n||typeof n!=="object")return;let{Error:t}=n;return typeof t==="string"&&t.length>0?t:void 0}function hn(n){if(!n)return;if(n.length%2!==0||!/^[0-9a-f]+$/i.test(n))return n;try{let t=new TextDecoder().decode(un(n));return/^[ -~]+$/.test(t)?t:n}catch{return n}}function Et(n,t){if(typeof n!=="string")return!1;if(n===t)return!0;try{return n.toLowerCase()===wt(t).toLowerCase()}catch{return!1}}function Q(n){let t=typeof n==="number"?n:typeof n==="string"&&n.trim()!==""?Number(n):Number.NaN;return Number.isSafeInteger(t)&&t>=0?t:void 0}function C(n){let t=Q(n);return t!==void 0&&t>0?t:void 0}function J(n,t){let e=Q(n),r=Q(t);if(n!==void 0&&e===void 0||t!==void 0&&r===void 0)return 0;return Math.max(0,(e??0)-(r??0))}async function v(n,t,e){let{signal:r,cleanup:i}=At(e);try{let o=await fetch(`${xt()}${n}`,{body:JSON.stringify(t),headers:{"Content-Type":"application/json"},method:"POST",signal:r});if(!o.ok)throw new y("toolbox_tron_trongrid_api_error",{message:`${o.status} ${o.statusText} on ${n}`});return await o.json()}finally{i()}}async function vt(n,t,e){let{signal:r,cleanup:i}=At(e);try{let o=await fetch(`${t??xt()}${n}`,{headers:{"Content-Type":"application/json"},signal:r});if(!o.ok)throw new y("toolbox_tron_trongrid_api_error",{message:`${o.status} ${o.statusText} on ${n}`});return await o.json()}finally{i()}}async function O(n){if(!b(n))throw new y("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let t=await vt(`/v1/accounts/${n}`,bt);if(!(t.success&&t.data)||t.data.length===0)return;let e=t.data.find((r)=>Et(r.address,n));if(!e)return;return{balance:e.balance,trc20:e.trc20||[]}}catch(t){if(t instanceof y)throw t;throw new y("toolbox_tron_trongrid_api_error",{message:t instanceof Error?t.message:"Unknown error"})}}var bn="/wallet/createtransaction";async function Ft({from:n,to:t,amount:e}){let i=await v(bn,{amount:e,owner_address:n,to_address:t,visible:!0});if(!i.txID||!i.raw_data_hex||!i.raw_data)throw new y({errorKey:"toolbox_tron_transaction_creation_failed",info:{error:Z(i)??"Node returned no transaction"}});let c=i.raw_data?.contract?.[0]?.parameter?.value;if(c?.to_address!==t||c?.owner_address!==n||c?.amount!==e)throw new y({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Node returned a transaction that does not match the requested transfer"}});return N(i),i}var xn="/wallet/triggersmartcontract";async function St({ownerAddress:n,contractAddress:t,functionSelector:e,parameter:r,feeLimit:i,callValue:o=0}){let c=await v(xn,{call_value:o,contract_address:t,fee_limit:i,function_selector:e,owner_address:n,parameter:r,visible:!0});if(!c.result?.result||!c.transaction?.txID||!c.transaction?.raw_data_hex)throw new y({errorKey:"toolbox_tron_transaction_creation_failed",info:{code:c.result?.code,error:Z(c)??"Node returned no transaction",message:hn(c.result?.message)}});let T=c.transaction.raw_data?.contract?.[0]?.parameter?.value;if(T?.contract_address!==t||T?.owner_address!==n)throw new y({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Node returned a transaction that does not match the requested contract call"}});return N(c.transaction),c.transaction}function Nt({ownerAddress:n,contractAddress:t,functionSelector:e,parameter:r}){return v("/wallet/triggerconstantcontract",{contract_address:t,function_selector:e,owner_address:n,parameter:r,visible:!0})}function An({ownerAddress:n,contractAddress:t,functionSelector:e,parameter:r}){return v("/wallet/estimateenergy",{contract_address:t,function_selector:e,owner_address:n,parameter:r,visible:!0})}function ht(n){let t=typeof n==="number"?n:typeof n==="string"?Number(n):Number.NaN;return Number.isFinite(t)&&t>0?t:void 0}async function k(n){try{let{result:t,txid:e}=await v("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!t||!e)throw new y("toolbox_tron_token_transfer_failed");return e}catch(t){throw new y("toolbox_tron_broadcast_failed",{error:t})}}async function I({timeoutMs:n}={}){let t={};try{let{chainParameter:e}=await vt("/wallet/getchainparameters",void 0,n);for(let r of e)if(r&&typeof r.key==="string")t[r.key]=r.value}catch(e){K({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${e instanceof Error?e.message:e}`})}return{bandwidthFee:C(t.getTransactionFee)??gn,createAccountBandwidthFee:C(t.getCreateAccountFee)??_n,createAccountFee:C(t.getCreateNewAccountFeeInSystemContract)??Tn,energyFee:C(t.getEnergyFee)??mn,memoFee:C(t.getMemoFee)??wn}}async function tt(n){try{let t=await v("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:J(t.freeNetLimit,t.freeNetUsed),staked:J(t.NetLimit,t.NetUsed)},energy:J(t.EnergyLimit,t.EnergyUsed)}}catch(t){return K({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, assuming none available: ${t instanceof Error?t.message:t}`}),{bandwidth:{free:0,staked:0},energy:0}}}async function G(n,t={}){return await W(n,t)==="exists"}async function W(n,{timeoutMs:t}={}){if(!b(n))return"missing";try{let e=await v("/wallet/getaccount",{address:n,visible:!0},t);if(!e||typeof e!=="object"||Array.isArray(e)||Z(e))return"unknown";if(Et(e.address,n))return"exists";return Object.keys(e).length===0?"missing":"unknown"}catch{return"unknown"}}async function nt(n){try{let t=await An({...n,ownerAddress:n.sender}),e=t.energy_required??t.energyRequired;if(t.result&&!t.result.result)throw new y("toolbox_tron_trongrid_api_error",{message:t.result.message||"estimateenergy failed"});if(e!==void 0){let r=ht(e);if(r!==void 0)return r;throw new y("toolbox_tron_trongrid_api_error",{message:"Invalid estimateenergy response"})}}catch(t){K({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy with estimateenergy, falling back to triggerconstantcontract: ${t instanceof Error?t.message:t}`})}try{let{energy_used:t}=await Nt({...n,ownerAddress:n.sender}),e=ht(t);if(e!==void 0)return e;throw new y("toolbox_tron_trongrid_api_error",{message:"Invalid triggerconstantcontract energy response"})}catch(t){throw K({condition:!0,id:"tron_energy_estimation_fallback_failed",warning:`Failed to estimate energy: ${t instanceof Error?t.message:t}`}),new y("toolbox_tron_trongrid_api_error",{message:`Unable to estimate contract energy: ${t instanceof Error?t.message:t}`})}}async function Rt({assetAddress:n,owner:t,spender:e}){let r=R([{type:"address",value:t},{type:"address",value:e}]),o=(await Nt({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:e,parameter:r})).constant_result?.[0];if(!o)return 0n;try{return BigInt(`0x${o}`)}catch{return 0n}}import{bytesToHex as In}from"@noble/hashes/utils.js";import{HDKey as Pn}from"@scure/bip32";import{mnemonicToSeedSync as Bn}from"@scure/bip39";import{AssetValue as B,Chain as x,derivationPathToString as Mt,getChainConfig as Cn,getRPCUrl as kn,NetworkDerivationPath as Lt,SwapKitError as _,updateDerivationPath as Kt,warnOnce as j}from"@swapkit/helpers";import{match as Dn,P as rt}from"ts-pattern";import{sha256 as En}from"@noble/hashes/sha2.js";import{bytesToHex as It,hexToBytes as Pt}from"@noble/hashes/utils.js";import{SwapKitError as P}from"@swapkit/helpers";var V=0,Bt=1,q=2,Ct=5,vn=8,Fn=10,Sn=18;function et(n,t){let e=0n,r=0n,i=t;while(i<n.length&&i-t<10){let o=n[i++];if(o===void 0)break;if(e|=BigInt(o&127)<<r,r+=7n,(o&128)===0)return[e,i]}throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Malformed varint in transaction raw_data"}})}function D(n){let t=[],e=n<0n?n+2n**64n:n;while(e>=128n)t.push(Number(e&0x7fn)|128),e>>=7n;return t.push(Number(e)),t}function H(n,t,e){let r=n.get(t);if(r)r.push(e);else n.set(t,[e])}function Nn(n){let t=new Map,e=0;while(e<n.length){let[r,i]=et(n,e);e=i;let o=Number(r>>3n),c=Number(r&7n);if(c===V){let[m,T]=et(n,e);e=T,H(t,o,{data:new Uint8Array(D(m)),wireType:V})}else if(c===q){let[m,T]=et(n,e);e=T;let A=Number(m);if(A<0||e+A>n.length)throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Length-delimited proto field overruns transaction raw_data"}});let U=n.slice(e,e+A);e+=A,H(t,o,{data:U,wireType:q})}else if(c===Bt){if(e+8>n.length)throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"64-bit proto field overruns transaction raw_data"}});let m=n.slice(e,e+8);e+=8,H(t,o,{data:m,wireType:Bt})}else if(c===Ct){if(e+4>n.length)throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"32-bit proto field overruns transaction raw_data"}});let m=n.slice(e,e+4);e+=4,H(t,o,{data:m,wireType:Ct})}else throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Unsupported proto wire type in transaction raw_data"}})}return t}function Rn(n){let t=[];for(let[o,c]of[...n.entries()].sort(([m],[T])=>m-T))for(let{wireType:m,data:T}of c){let A=BigInt(o<<3|m);if(t.push(new Uint8Array(D(A))),m===q)t.push(new Uint8Array(D(BigInt(T.length))));t.push(T)}let e=t.reduce((o,c)=>o+c.length,0),r=new Uint8Array(e),i=0;for(let o of t)r.set(o,i),i+=o.length;return r}function kt(n,t){if(!n||n.length%2!==0)throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Transaction raw_data_hex is empty or not byte-aligned"}});let e=Pt(n),r=Nn(e);if(t.expiration!==void 0)r.set(vn,[{data:new Uint8Array(D(BigInt(t.expiration))),wireType:V}]);if(t.data!==void 0)r.set(Fn,[{data:Pt(t.data),wireType:q}]);if(t.fee_limit!==void 0)r.set(Sn,[{data:new Uint8Array(D(BigInt(t.fee_limit))),wireType:V}]);let i=Rn(r),o=It(i),c=It(En(i));return{raw_data_hex:o,txID:c}}var Un=b,Mn=Cn(x.Tron).baseDecimal,Ln=64,Kn=67,On=139,Ot=211;function Dt(n){let t=1,e=n>>7n;while(e>0n)t+=1,e>>=7n;return t}var $t=65000,at=25000,ot="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",$n="115792089237316195423570985008687907853269984665640564039457584007913129639935",it=2500,X=(n)=>B.from({chain:x.Tron,fromBaseDecimal:Mn,value:n}),st=(n,t)=>t?n.memoFee:0;function ct(n,t){let e=n;if(t){let r=z(t).length/2;e+=1+Dt(BigInt(r))+r}return e+1+Dt(BigInt(e))+Kn+Ln}function Gt({bandwidthFee:n,pools:t,requiredBytes:e}){return t.staked>=e||t.free>=e?0:e*n}function Wt({bandwidth:n={free:0,staked:0},chainParams:t,memo:e,recipientStatus:r}){let i=st(t,e),o=t.createAccountFee+t.createAccountBandwidthFee,c=Gt({bandwidthFee:t.bandwidthFee,pools:n,requiredBytes:ct(On,e)});if(r==="exists")return c+i;if(r==="missing")return o+i;return Math.max(o,c)+i}async function Ht(n,t){let e=n||$t,r=t??(await I()).energyFee,i=e*r,o=Math.ceil(i*1.5);return Math.min(Math.max(o,1e7),150000000)}async function Vt({assetValue:n,memo:t,recipient:e,timeoutMs:r}){let[i,o]=await Promise.all([I({timeoutMs:r}),W(e,{timeoutMs:r})]);if(j({condition:n.chain!==x.Tron,id:"tron_conservative_fee_foreign_asset",warning:"Non-Tron asset passed to the Tron fee estimate; reserving the TRC-20 fee"}),n.chain===x.Tron&&n.isGasAsset)return X(Wt({chainParams:i,memo:t,recipientStatus:o}));let m=await Ht($t+(o==="exists"?0:at),i.energyFee),T=st(i,t);return X(m+ct(Ot,t)*i.bandwidthFee+T)}async function Gn({assetValue:n,recipient:t,memo:e,timeoutMs:r=it}){return j({condition:!b(t),id:"tron_sweep_deduction_invalid_recipient",warning:"Invalid Tron sweep recipient; assuming the account needs activation"}),await Vt({assetValue:n,memo:e==null?void 0:String(e),recipient:t,timeoutMs:Number.isFinite(r)&&r>0?r:it})}function qt({phrase:n,derivationPath:t}){let e=Pn.fromMasterSeed(Bn(n)).derive(t);if(!e.privateKey)throw new _("toolbox_tron_no_signer");return In(e.privateKey)}function Wn(n,t){return{...n,value:String(t)}}function Hn(n,t){if(!t)return n;return{...n,data:t.startsWith("0x")?t:`0x${t}`}}function Vn({phrase:n,derivationPath:t,index:e}){let r=t||Mt(Kt(Lt[x.Tron],{index:e||0}));return qt({derivationPath:r,phrase:n})}function qn({phrase:n,derivationPath:t}){let e=qt({derivationPath:t,phrase:n}),r=pt(e);return{getAddress:()=>Promise.resolve(r),signTransaction:(i)=>{N(i);let o=yt({privateKey:e,txID:i.txID});return Promise.resolve({...i,signature:[o]})}}}function Ut({transaction:n,memo:t,expiration:e,feeLimit:r}){let i={},o={};if(r!==void 0&&n.raw_data)i.fee_limit=r,o.fee_limit=r;if(t){let T=z(t);i.data=T,o.data=T}if(e){let T=n.raw_data.expiration+e*1000;i.expiration=T,o.expiration=T}if(Object.keys(i).length===0)return n;let{raw_data_hex:c,txID:m}=kt(n.raw_data_hex,i);return{...n,raw_data:{...n.raw_data,...o},raw_data_hex:c,txID:m}}function jn(n={}){let t="index"in n?n.index||0:0,e=Mt("derivationPath"in n&&n.derivationPath?n.derivationPath:Kt(Lt[x.Tron],{index:t})),r,i=!1;function o(){if(i)return Promise.resolve(r);return r=Dn(n).with({phrase:rt.string},({phrase:a})=>qn({derivationPath:e,phrase:a})).with({signer:rt.not(rt.nullish)},({signer:a})=>a).otherwise(()=>{return}),i=!0,Promise.resolve(r)}async function c(){let a=await o();if(!a)throw new _("toolbox_tron_no_signer");return a.getAddress()}async function m({contractAddress:a,functionSelector:s,parameter:d,sender:u,memo:f,expiration:l,extraEnergy:g=0}){let w=await nt({contractAddress:a,functionSelector:s,parameter:d,sender:u}),p=await Ht(w+g),h=await St({contractAddress:a,feeLimit:p,functionSelector:s,ownerAddress:u,parameter:d});return Ut({expiration:l,feeLimit:p,memo:f,transaction:h})}async function T(a){if(!b(a))return[B.from({chain:x.Tron})];try{let s=await O(a);if(!s)return[B.from({chain:x.Tron})];let d=[B.from({chain:x.Tron,fromBaseDecimal:6,value:String(s.balance)})],u=s.trc20?.find((f)=>(ot in f));if(u){let f=u[ot];d.push(B.from({asset:`TRON.USDT-${ot}`,fromBaseDecimal:6,value:f}))}return d}catch(s){return j({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${s instanceof Error?s.message:s}`}),[B.from({chain:x.Tron})]}}async function A({recipient:a,assetValue:s,memo:d,expiration:u,sweep:f}){if(!b(a))throw new _("toolbox_tron_token_transfer_failed",{message:"invalid address"});let l=await o();if(!l)throw new _("toolbox_tron_no_signer");try{let g=await c(),w=await ut({assetValue:s,expiration:u,memo:d,recipient:a,sender:g,sweep:f}),p=await l.signTransaction(w),h=await k(p);if(!h)throw new _("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return h}catch(g){if(g instanceof _&&g.errorKey==="toolbox_sweep_amount_too_low")throw g;throw new _("toolbox_tron_token_transfer_failed",{message:g instanceof Error?g.message:String(g)})}}async function U({memo:a,recipient:s,senderAddress:d}){let[u,f,l]=await Promise.all([I(),W(s),tt(d)]);return X(Wt({bandwidth:l.bandwidth,chainParams:u,memo:a,recipientStatus:f}))}async function dt({assetValue:a,amountInBaseUnits:s=a.getBaseValue("string"),memo:d,recipient:u,senderAddress:f}){let l=a.address;if(!l)throw new _("toolbox_tron_invalid_token_identifier",{identifier:a.toString()});let[g,w,p,h]=await Promise.all([I(),G(u),tt(f),nt({contractAddress:l,functionSelector:"transfer(address,uint256)",parameter:R([{type:"address",value:u},{type:"uint256",value:s}]),sender:f})]),F=h+(w?0:at),Y=Gt({bandwidthFee:g.bandwidthFee,pools:p.bandwidth,requiredBytes:ct(Ot,d)}),Zt=Math.max(0,F-p.energy)*g.energyFee,tn=st(g,d);return X(Y+Zt+tn)}async function jt({assetValue:a,memo:s,recipient:d,sender:u}){let f=await o();try{let l=u?u:f?await c():void 0;if(!l)return Vt({assetValue:a,memo:s,recipient:d});return a.isGasAsset?U({memo:s,recipient:d,senderAddress:l}):dt({assetValue:a,memo:s,recipient:d,senderAddress:l})}catch(l){throw j({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${l instanceof Error?l.message:l}`}),new _("toolbox_fee_estimation_failed",{chain:x.Tron,error:l})}}async function Xt({assetValue:a,memo:s,recipient:d,sender:u,sweep:f}){if(!f)return a.getBaseValue("bigint");let[l,g]=await Promise.all([O(u),U({memo:s,recipient:d,senderAddress:u})]),w=BigInt(l?.balance??0)-g.getBaseValue("bigint");if(w<=0n)throw new _({errorKey:"toolbox_sweep_amount_too_low",info:{amount:w.toString(),asset:a.toString()}});return w}async function Yt({assetValue:a,memo:s,recipient:d,sender:u,sweep:f}){if(!f)return a.getBaseValue("string");let l=a.address;if(!l)throw new _("toolbox_tron_invalid_token_identifier",{identifier:a.toString()});let g=await O(u),p=g?.trc20.find((Y)=>(l in Y))?.[l]??"0";if(BigInt(p)<=0n)throw new _({errorKey:"toolbox_sweep_amount_too_low",info:{asset:a.toString(),balance:p}});let h=await dt({amountInBaseUnits:p,assetValue:a,memo:s,recipient:d,senderAddress:u}),E=BigInt(g?.balance??0),F=h.getBaseValue("bigint");if(E<F)throw new _({errorKey:"toolbox_sweep_amount_too_low",info:{asset:a.toString(),nativeBalance:E.toString(),requiredNativeFee:F.toString()}});return p}async function ut({recipient:a,assetValue:s,memo:d,sender:u,expiration:f,sweep:l,recipientExists:g}){if(!b(a)||!b(u))throw new _("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(s.isGasAsset){let E=await Xt({assetValue:s,expiration:f,memo:d,recipient:a,sender:u,sweep:l});if(E>BigInt(Number.MAX_SAFE_INTEGER))throw new _({errorKey:"toolbox_tron_transaction_creation_failed",info:{amount:E.toString(),reason:`Native transfer amount exceeds the safe integer limit of ${Number.MAX_SAFE_INTEGER} SUN`}});let F=await Ft({amount:Number(E),from:u,to:a});return Ut({expiration:f,memo:d,transaction:F})}let w=s.address;if(!w)throw new _("toolbox_tron_invalid_token_identifier",{identifier:s.toString()});let p=await Yt({assetValue:s,expiration:f,memo:d,recipient:a,sender:u,sweep:l}),h=g??await G(a);return m({contractAddress:w,expiration:f,extraEnergy:h?0:at,functionSelector:"transfer(address,uint256)",memo:d,parameter:R([{type:"address",value:a},{type:"uint256",value:p}]),sender:u})}async function ft(a){N(a);let s=await o();if(!s)throw new _("toolbox_tron_no_signer");return s.signTransaction(a)}async function zt(a){let s=await ft(a);return k(s)}function lt({assetAddress:a,spenderAddress:s,from:d}){return Rt({assetAddress:a,owner:d,spender:s})}async function Jt({assetAddress:a,spenderAddress:s,from:d,amount:u}){let f=await lt({assetAddress:a,from:d,spenderAddress:s});if(!u)return f>0n;return f>=BigInt(u)}async function Qt({assetAddress:a,spenderAddress:s,amount:d,from:u}){if(!b(a)||!b(s))throw new _("toolbox_tron_approve_failed");let f=await o();if(!f)throw new _("toolbox_tron_no_signer");let l=u||await c(),g=d!==void 0?BigInt(d).toString():$n;try{let w=await m({contractAddress:a,functionSelector:"approve(address,uint256)",parameter:R([{type:"address",value:s},{type:"uint256",value:g}]),sender:l}),p=await f.signTransaction(w),h=await k(p);if(!h)throw new _("toolbox_tron_approve_failed");return h}catch(w){if(w instanceof _)throw w;throw new _("toolbox_tron_approve_failed",{error:w})}}return{approve:Qt,broadcastTransaction:k,createTransaction:ut,estimateTransactionFee:jt,getAddress:c,getApprovedAmount:lt,getBalance:T,getRpcUrl:()=>kn(x.Tron),isApproved:Jt,signAndBroadcastTransaction:zt,signTransaction:ft,transfer:A,validateAddress:b}}export{it as TRON_SWEEP_ESTIMATE_TIMEOUT_MS,G as checkTronAccountExists,Gn as estimateTronSweepDeduction,I as getTronChainParameters,Vn as getTronPrivateKeyFromMnemonic,jn as getTronToolbox,Un as validateTronAddress,Hn as withTronTransactionData,Wn as withTronTransactionValue};
1
+ import"../../chunk-exyqap7m.js";import{hexToBytes as un}from"@noble/hashes/utils.js";import{Chain as fn,getRPCUrlSync as ln,SwapKitError as y,warnOnce as K}from"@swapkit/helpers";import{secp256k1 as _t}from"@noble/curves/secp256k1.js";import{sha256 as Tt}from"@noble/hashes/sha2.js";import{keccak_256 as nn}from"@noble/hashes/sha3.js";import{bytesToHex as S,hexToBytes as M}from"@noble/hashes/utils.js";import{createBase58check as en}from"@scure/base";import{SwapKitError as mt}from"@swapkit/helpers";var L=en(Tt),wt=65,rn=2n**256n;function b(n){if(typeof n!=="string")return!1;try{let t=L.decode(n);return t.length===21&&t[0]===wt}catch{return!1}}function z(n){return S(L.decode(n))}function on(n){return L.decode(n).slice(1)}function pt(n){let t=_t.getPublicKey(M(n),!1),e=nn(t.slice(1)).slice(-20),r=new Uint8Array(21);return r[0]=wt,r.set(e,1),L.encode(r)}function yt({txID:n,privateKey:t}){let e=_t.sign(M(n),M(t),{format:"recovered",prehash:!1}),r=e[0]??0,i=S(e.slice(1,33)),o=S(e.slice(33,65)),c=(r+27).toString(16).padStart(2,"0");return i+o+c}function N({txID:n,raw_data_hex:t}){let e=S(Tt(M(t)));if(n!==e)throw new mt("toolbox_tron_invalid_transaction_integrity",{expected:e,txID:n})}function an(n){return`000000000000000000000000${S(on(n))}`}function sn(n){let t=typeof n==="bigint"?n:BigInt(n);if(t<0n||t>=rn)throw new mt("toolbox_tron_invalid_token_identifier",{identifier:t.toString()});return t.toString(16).padStart(64,"0")}function R(n){return n.map(({type:t,value:e})=>t==="address"?an(e):sn(BigInt(e))).join("")}function cn(n){return S(new TextEncoder().encode(n))}var dn=/^0x(?:[0-9a-fA-F]{2})+$/;function J(n){return dn.test(n)?n.slice(2):cn(n)}var bt="https://api.trongrid.io",gn=1000,_n=1e5,Tn=1e6,mn=420,wn=1e6,pn=30000,yn=2147483647;function xt(){try{return ln(fn.Tron)}catch{return bt}}function At(n){let t=n!==void 0&&Number.isFinite(n)&&n>0?Math.min(n,yn):pn,e=new AbortController,r=setTimeout(()=>e.abort(),t);return{cleanup:()=>clearTimeout(r),signal:e.signal}}function tt(n){if(!n||typeof n!=="object")return;let{Error:t}=n;return typeof t==="string"&&t.length>0?t:void 0}function hn(n){if(!n)return;if(n.length%2!==0||!/^[0-9a-f]+$/i.test(n))return n;try{let t=new TextDecoder().decode(un(n));return/^[ -~]+$/.test(t)?t:n}catch{return n}}function Et(n,t){if(typeof n!=="string")return!1;if(n===t)return!0;try{return n.toLowerCase()===z(t).toLowerCase()}catch{return!1}}function Z(n){let t=typeof n==="number"?n:typeof n==="string"&&n.trim()!==""?Number(n):Number.NaN;return Number.isSafeInteger(t)&&t>=0?t:void 0}function C(n){let t=Z(n);return t!==void 0&&t>0?t:void 0}function Q(n,t){let e=Z(n),r=Z(t);if(n!==void 0&&e===void 0||t!==void 0&&r===void 0)return 0;return Math.max(0,(e??0)-(r??0))}async function v(n,t,e){let{signal:r,cleanup:i}=At(e);try{let o=await fetch(`${xt()}${n}`,{body:JSON.stringify(t),headers:{"Content-Type":"application/json"},method:"POST",signal:r});if(!o.ok)throw new y("toolbox_tron_trongrid_api_error",{message:`${o.status} ${o.statusText} on ${n}`});return await o.json()}finally{i()}}async function vt(n,t,e){let{signal:r,cleanup:i}=At(e);try{let o=await fetch(`${t??xt()}${n}`,{headers:{"Content-Type":"application/json"},signal:r});if(!o.ok)throw new y("toolbox_tron_trongrid_api_error",{message:`${o.status} ${o.statusText} on ${n}`});return await o.json()}finally{i()}}async function O(n){if(!b(n))throw new y("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let t=await vt(`/v1/accounts/${n}`,bt);if(!(t.success&&t.data)||t.data.length===0)return;let e=t.data.find((r)=>Et(r.address,n));if(!e)return;return{balance:e.balance,trc20:e.trc20||[]}}catch(t){if(t instanceof y)throw t;throw new y("toolbox_tron_trongrid_api_error",{message:t instanceof Error?t.message:"Unknown error"})}}var bn="/wallet/createtransaction";async function Ft({from:n,to:t,amount:e}){let i=await v(bn,{amount:e,owner_address:n,to_address:t,visible:!0});if(!i.txID||!i.raw_data_hex||!i.raw_data)throw new y({errorKey:"toolbox_tron_transaction_creation_failed",info:{error:tt(i)??"Node returned no transaction"}});let c=i.raw_data?.contract?.[0]?.parameter?.value;if(c?.to_address!==t||c?.owner_address!==n||c?.amount!==e)throw new y({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Node returned a transaction that does not match the requested transfer"}});return N(i),i}var xn="/wallet/triggersmartcontract";async function St({ownerAddress:n,contractAddress:t,functionSelector:e,parameter:r,feeLimit:i,callValue:o=0}){let c=await v(xn,{call_value:o,contract_address:t,fee_limit:i,function_selector:e,owner_address:n,parameter:r,visible:!0});if(!c.result?.result||!c.transaction?.txID||!c.transaction?.raw_data_hex)throw new y({errorKey:"toolbox_tron_transaction_creation_failed",info:{code:c.result?.code,error:tt(c)??"Node returned no transaction",message:hn(c.result?.message)}});let T=c.transaction.raw_data?.contract?.[0]?.parameter?.value;if(T?.contract_address!==t||T?.owner_address!==n)throw new y({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Node returned a transaction that does not match the requested contract call"}});return N(c.transaction),c.transaction}function Nt({ownerAddress:n,contractAddress:t,functionSelector:e,parameter:r}){return v("/wallet/triggerconstantcontract",{contract_address:t,function_selector:e,owner_address:n,parameter:r,visible:!0})}function An({ownerAddress:n,contractAddress:t,functionSelector:e,parameter:r}){return v("/wallet/estimateenergy",{contract_address:t,function_selector:e,owner_address:n,parameter:r,visible:!0})}function ht(n){let t=typeof n==="number"?n:typeof n==="string"?Number(n):Number.NaN;return Number.isFinite(t)&&t>0?t:void 0}async function k(n){try{let{result:t,txid:e}=await v("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!t||!e)throw new y("toolbox_tron_token_transfer_failed");return e}catch(t){throw new y("toolbox_tron_broadcast_failed",{error:t})}}async function I({timeoutMs:n}={}){let t={};try{let{chainParameter:e}=await vt("/wallet/getchainparameters",void 0,n);for(let r of e)if(r&&typeof r.key==="string")t[r.key]=r.value}catch(e){K({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${e instanceof Error?e.message:e}`})}return{bandwidthFee:C(t.getTransactionFee)??gn,createAccountBandwidthFee:C(t.getCreateAccountFee)??_n,createAccountFee:C(t.getCreateNewAccountFeeInSystemContract)??Tn,energyFee:C(t.getEnergyFee)??mn,memoFee:C(t.getMemoFee)??wn}}async function nt(n){try{let t=await v("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:Q(t.freeNetLimit,t.freeNetUsed),staked:Q(t.NetLimit,t.NetUsed)},energy:Q(t.EnergyLimit,t.EnergyUsed)}}catch(t){return K({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, assuming none available: ${t instanceof Error?t.message:t}`}),{bandwidth:{free:0,staked:0},energy:0}}}async function G(n,t={}){return await W(n,t)==="exists"}async function W(n,{timeoutMs:t}={}){if(!b(n))return"missing";try{let e=await v("/wallet/getaccount",{address:n,visible:!0},t);if(!e||typeof e!=="object"||Array.isArray(e)||tt(e))return"unknown";if(Et(e.address,n))return"exists";return Object.keys(e).length===0?"missing":"unknown"}catch{return"unknown"}}async function et(n){try{let t=await An({...n,ownerAddress:n.sender}),e=t.energy_required??t.energyRequired;if(t.result&&!t.result.result)throw new y("toolbox_tron_trongrid_api_error",{message:t.result.message||"estimateenergy failed"});if(e!==void 0){let r=ht(e);if(r!==void 0)return r;throw new y("toolbox_tron_trongrid_api_error",{message:"Invalid estimateenergy response"})}}catch(t){K({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy with estimateenergy, falling back to triggerconstantcontract: ${t instanceof Error?t.message:t}`})}try{let{energy_used:t}=await Nt({...n,ownerAddress:n.sender}),e=ht(t);if(e!==void 0)return e;throw new y("toolbox_tron_trongrid_api_error",{message:"Invalid triggerconstantcontract energy response"})}catch(t){throw K({condition:!0,id:"tron_energy_estimation_fallback_failed",warning:`Failed to estimate energy: ${t instanceof Error?t.message:t}`}),new y("toolbox_tron_trongrid_api_error",{message:`Unable to estimate contract energy: ${t instanceof Error?t.message:t}`})}}async function Rt({assetAddress:n,owner:t,spender:e}){let r=R([{type:"address",value:t},{type:"address",value:e}]),o=(await Nt({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:e,parameter:r})).constant_result?.[0];if(!o)return 0n;try{return BigInt(`0x${o}`)}catch{return 0n}}import{bytesToHex as In}from"@noble/hashes/utils.js";import{HDKey as Pn}from"@scure/bip32";import{mnemonicToSeedSync as Bn}from"@scure/bip39";import{AssetValue as B,Chain as x,derivationPathToString as Mt,getChainConfig as Cn,getRPCUrl as kn,NetworkDerivationPath as Lt,SwapKitError as _,updateDerivationPath as Kt,warnOnce as j}from"@swapkit/helpers";import{match as Dn,P as ot}from"ts-pattern";import{sha256 as En}from"@noble/hashes/sha2.js";import{bytesToHex as It,hexToBytes as Pt}from"@noble/hashes/utils.js";import{SwapKitError as P}from"@swapkit/helpers";var V=0,Bt=1,q=2,Ct=5,vn=8,Fn=10,Sn=18;function rt(n,t){let e=0n,r=0n,i=t;while(i<n.length&&i-t<10){let o=n[i++];if(o===void 0)break;if(e|=BigInt(o&127)<<r,r+=7n,(o&128)===0)return[e,i]}throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Malformed varint in transaction raw_data"}})}function D(n){let t=[],e=n<0n?n+2n**64n:n;while(e>=128n)t.push(Number(e&0x7fn)|128),e>>=7n;return t.push(Number(e)),t}function H(n,t,e){let r=n.get(t);if(r)r.push(e);else n.set(t,[e])}function Nn(n){let t=new Map,e=0;while(e<n.length){let[r,i]=rt(n,e);e=i;let o=Number(r>>3n),c=Number(r&7n);if(c===V){let[m,T]=rt(n,e);e=T,H(t,o,{data:new Uint8Array(D(m)),wireType:V})}else if(c===q){let[m,T]=rt(n,e);e=T;let A=Number(m);if(A<0||e+A>n.length)throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Length-delimited proto field overruns transaction raw_data"}});let U=n.slice(e,e+A);e+=A,H(t,o,{data:U,wireType:q})}else if(c===Bt){if(e+8>n.length)throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"64-bit proto field overruns transaction raw_data"}});let m=n.slice(e,e+8);e+=8,H(t,o,{data:m,wireType:Bt})}else if(c===Ct){if(e+4>n.length)throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"32-bit proto field overruns transaction raw_data"}});let m=n.slice(e,e+4);e+=4,H(t,o,{data:m,wireType:Ct})}else throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Unsupported proto wire type in transaction raw_data"}})}return t}function Rn(n){let t=[];for(let[o,c]of[...n.entries()].sort(([m],[T])=>m-T))for(let{wireType:m,data:T}of c){let A=BigInt(o<<3|m);if(t.push(new Uint8Array(D(A))),m===q)t.push(new Uint8Array(D(BigInt(T.length))));t.push(T)}let e=t.reduce((o,c)=>o+c.length,0),r=new Uint8Array(e),i=0;for(let o of t)r.set(o,i),i+=o.length;return r}function kt(n,t){if(!n||n.length%2!==0)throw new P({errorKey:"toolbox_tron_transaction_creation_failed",info:{reason:"Transaction raw_data_hex is empty or not byte-aligned"}});let e=Pt(n),r=Nn(e);if(t.expiration!==void 0)r.set(vn,[{data:new Uint8Array(D(BigInt(t.expiration))),wireType:V}]);if(t.data!==void 0)r.set(Fn,[{data:Pt(t.data),wireType:q}]);if(t.fee_limit!==void 0)r.set(Sn,[{data:new Uint8Array(D(BigInt(t.fee_limit))),wireType:V}]);let i=Rn(r),o=It(i),c=It(En(i));return{raw_data_hex:o,txID:c}}var Un=b,Mn=Cn(x.Tron).baseDecimal,Ln=64,Kn=67,On=139,Ot=211;function Dt(n){let t=1,e=n>>7n;while(e>0n)t+=1,e>>=7n;return t}var $t=65000,it=25000,at="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",$n="115792089237316195423570985008687907853269984665640564039457584007913129639935",st=2500,X=(n)=>B.from({chain:x.Tron,fromBaseDecimal:Mn,value:n}),ct=(n,t)=>t?n.memoFee:0;function dt(n,t){let e=n;if(t){let r=J(t).length/2;e+=1+Dt(BigInt(r))+r}return e+1+Dt(BigInt(e))+Kn+Ln}function Gt({bandwidthFee:n,pools:t,requiredBytes:e}){return t.staked>=e||t.free>=e?0:e*n}function Wt({bandwidth:n={free:0,staked:0},chainParams:t,memo:e,recipientStatus:r}){let i=ct(t,e),o=t.createAccountFee+t.createAccountBandwidthFee,c=Gt({bandwidthFee:t.bandwidthFee,pools:n,requiredBytes:dt(On,e)});if(r==="exists")return c+i;if(r==="missing")return o+i;return Math.max(o,c)+i}async function Ht(n,t){let e=n||$t,r=t??(await I()).energyFee,i=e*r,o=Math.ceil(i*1.5);return Math.min(Math.max(o,1e7),150000000)}async function Vt({assetValue:n,memo:t,recipient:e,timeoutMs:r}){let[i,o]=await Promise.all([I({timeoutMs:r}),W(e,{timeoutMs:r})]);if(j({condition:n.chain!==x.Tron,id:"tron_conservative_fee_foreign_asset",warning:"Non-Tron asset passed to the Tron fee estimate; reserving the TRC-20 fee"}),n.chain===x.Tron&&n.isGasAsset)return X(Wt({chainParams:i,memo:t,recipientStatus:o}));let m=await Ht($t+(o==="exists"?0:it),i.energyFee),T=ct(i,t);return X(m+dt(Ot,t)*i.bandwidthFee+T)}async function Gn({assetValue:n,recipient:t,memo:e,timeoutMs:r=st}){return j({condition:!b(t),id:"tron_sweep_deduction_invalid_recipient",warning:"Invalid Tron sweep recipient; assuming the account needs activation"}),await Vt({assetValue:n,memo:e==null?void 0:String(e),recipient:t,timeoutMs:Number.isFinite(r)&&r>0?r:st})}function qt({phrase:n,derivationPath:t}){let e=Pn.fromMasterSeed(Bn(n)).derive(t);if(!e.privateKey)throw new _("toolbox_tron_no_signer");return In(e.privateKey)}function Wn(n,t){return{...n,value:String(t)}}function Hn(n,t){if(!t)return n;return{...n,data:t.startsWith("0x")?t:`0x${t}`}}function Vn({phrase:n,derivationPath:t,index:e}){let r=t||Mt(Kt(Lt[x.Tron],{index:e||0}));return qt({derivationPath:r,phrase:n})}function qn({phrase:n,derivationPath:t}){let e=qt({derivationPath:t,phrase:n}),r=pt(e);return{getAddress:()=>Promise.resolve(r),signTransaction:(i)=>{N(i);let o=yt({privateKey:e,txID:i.txID});return Promise.resolve({...i,signature:[o]})}}}function Ut({transaction:n,memo:t,expiration:e,feeLimit:r}){let i={},o={};if(r!==void 0&&n.raw_data)i.fee_limit=r,o.fee_limit=r;if(t){let T=J(t);i.data=T,o.data=T}if(e){let T=n.raw_data.expiration+e*1000;i.expiration=T,o.expiration=T}if(Object.keys(i).length===0)return n;let{raw_data_hex:c,txID:m}=kt(n.raw_data_hex,i);return{...n,raw_data:{...n.raw_data,...o},raw_data_hex:c,txID:m}}function jn(n={}){let t="index"in n?n.index||0:0,e=Mt("derivationPath"in n&&n.derivationPath?n.derivationPath:Kt(Lt[x.Tron],{index:t})),r,i=!1;function o(){if(i)return Promise.resolve(r);return r=Dn(n).with({phrase:ot.string},({phrase:a})=>qn({derivationPath:e,phrase:a})).with({signer:ot.not(ot.nullish)},({signer:a})=>a).otherwise(()=>{return}),i=!0,Promise.resolve(r)}async function c(){let a=await o();if(!a)throw new _("toolbox_tron_no_signer");return a.getAddress()}async function m({contractAddress:a,functionSelector:s,parameter:d,sender:u,memo:f,expiration:l,extraEnergy:g=0}){let w=await et({contractAddress:a,functionSelector:s,parameter:d,sender:u}),p=await Ht(w+g),h=await St({contractAddress:a,feeLimit:p,functionSelector:s,ownerAddress:u,parameter:d});return Ut({expiration:l,feeLimit:p,memo:f,transaction:h})}async function T(a){if(!b(a))return[B.from({chain:x.Tron})];try{let s=await O(a);if(!s)return[B.from({chain:x.Tron})];let d=[B.from({chain:x.Tron,fromBaseDecimal:6,value:String(s.balance)})],u=s.trc20?.find((f)=>(at in f));if(u){let f=u[at];d.push(B.from({asset:`TRON.USDT-${at}`,fromBaseDecimal:6,value:f}))}return d}catch(s){return j({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${s instanceof Error?s.message:s}`}),[B.from({chain:x.Tron})]}}async function A({recipient:a,assetValue:s,memo:d,expiration:u,sweep:f}){if(!b(a))throw new _("toolbox_tron_token_transfer_failed",{message:"invalid address"});let l=await o();if(!l)throw new _("toolbox_tron_no_signer");try{let g=await c(),w=await ft({assetValue:s,expiration:u,memo:d,recipient:a,sender:g,sweep:f}),p=await l.signTransaction(w),h=await k(p);if(!h)throw new _("toolbox_tron_token_transfer_failed",{message:"broadcast failed"});return h}catch(g){if(g instanceof _&&g.errorKey==="toolbox_sweep_amount_too_low")throw g;throw new _("toolbox_tron_token_transfer_failed",{message:g instanceof Error?g.message:String(g)})}}async function U({memo:a,recipient:s,senderAddress:d}){let[u,f,l]=await Promise.all([I(),W(s),nt(d)]);return X(Wt({bandwidth:l.bandwidth,chainParams:u,memo:a,recipientStatus:f}))}async function ut({assetValue:a,amountInBaseUnits:s=a.getBaseValue("string"),memo:d,recipient:u,senderAddress:f}){let l=a.address;if(!l)throw new _("toolbox_tron_invalid_token_identifier",{identifier:a.toString()});let[g,w,p,h]=await Promise.all([I(),G(u),nt(f),et({contractAddress:l,functionSelector:"transfer(address,uint256)",parameter:R([{type:"address",value:u},{type:"uint256",value:s}]),sender:f})]),F=h+(w?0:it),Y=Gt({bandwidthFee:g.bandwidthFee,pools:p.bandwidth,requiredBytes:dt(Ot,d)}),Zt=Math.max(0,F-p.energy)*g.energyFee,tn=ct(g,d);return X(Y+Zt+tn)}async function jt({assetValue:a,memo:s,recipient:d,sender:u}){let f=await o();try{let l=u?u:f?await c():void 0;if(!l)return Vt({assetValue:a,memo:s,recipient:d});return a.isGasAsset?U({memo:s,recipient:d,senderAddress:l}):ut({assetValue:a,memo:s,recipient:d,senderAddress:l})}catch(l){throw j({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${l instanceof Error?l.message:l}`}),new _("toolbox_fee_estimation_failed",{chain:x.Tron,error:l})}}async function Xt({assetValue:a,memo:s,recipient:d,sender:u,sweep:f}){if(!f)return a.getBaseValue("bigint");let[l,g]=await Promise.all([O(u),U({memo:s,recipient:d,senderAddress:u})]),w=BigInt(l?.balance??0)-g.getBaseValue("bigint");if(w<=0n)throw new _({errorKey:"toolbox_sweep_amount_too_low",info:{amount:w.toString(),asset:a.toString()}});return w}async function Yt({assetValue:a,memo:s,recipient:d,sender:u,sweep:f}){if(!f)return a.getBaseValue("string");let l=a.address;if(!l)throw new _("toolbox_tron_invalid_token_identifier",{identifier:a.toString()});let g=await O(u),p=g?.trc20.find((Y)=>(l in Y))?.[l]??"0";if(BigInt(p)<=0n)throw new _({errorKey:"toolbox_sweep_amount_too_low",info:{asset:a.toString(),balance:p}});let h=await ut({amountInBaseUnits:p,assetValue:a,memo:s,recipient:d,senderAddress:u}),E=BigInt(g?.balance??0),F=h.getBaseValue("bigint");if(E<F)throw new _({errorKey:"toolbox_sweep_amount_too_low",info:{asset:a.toString(),nativeBalance:E.toString(),requiredNativeFee:F.toString()}});return p}async function ft({recipient:a,assetValue:s,memo:d,sender:u,expiration:f,sweep:l,recipientExists:g}){if(!b(a)||!b(u))throw new _("toolbox_tron_transaction_creation_failed",{message:"invalid address"});if(s.isGasAsset){let E=await Xt({assetValue:s,expiration:f,memo:d,recipient:a,sender:u,sweep:l});if(E>BigInt(Number.MAX_SAFE_INTEGER))throw new _({errorKey:"toolbox_tron_transaction_creation_failed",info:{amount:E.toString(),reason:`Native transfer amount exceeds the safe integer limit of ${Number.MAX_SAFE_INTEGER} SUN`}});let F=await Ft({amount:Number(E),from:u,to:a});return Ut({expiration:f,memo:d,transaction:F})}let w=s.address;if(!w)throw new _("toolbox_tron_invalid_token_identifier",{identifier:s.toString()});let p=await Yt({assetValue:s,expiration:f,memo:d,recipient:a,sender:u,sweep:l}),h=g??await G(a);return m({contractAddress:w,expiration:f,extraEnergy:h?0:it,functionSelector:"transfer(address,uint256)",memo:d,parameter:R([{type:"address",value:a},{type:"uint256",value:p}]),sender:u})}async function lt(a){N(a);let s=await o();if(!s)throw new _("toolbox_tron_no_signer");return s.signTransaction(a)}async function zt(a){let s=await lt(a);return k(s)}function gt({assetAddress:a,spenderAddress:s,from:d}){return Rt({assetAddress:a,owner:d,spender:s})}async function Jt({assetAddress:a,spenderAddress:s,from:d,amount:u}){let f=await gt({assetAddress:a,from:d,spenderAddress:s});if(!u)return f>0n;return f>=BigInt(u)}async function Qt({assetAddress:a,spenderAddress:s,amount:d,from:u}){if(!b(a)||!b(s))throw new _("toolbox_tron_approve_failed");let f=await o();if(!f)throw new _("toolbox_tron_no_signer");let l=u||await c(),g=d!==void 0?BigInt(d).toString():$n;try{let w=await m({contractAddress:a,functionSelector:"approve(address,uint256)",parameter:R([{type:"address",value:s},{type:"uint256",value:g}]),sender:l}),p=await f.signTransaction(w),h=await k(p);if(!h)throw new _("toolbox_tron_approve_failed");return h}catch(w){if(w instanceof _)throw w;throw new _("toolbox_tron_approve_failed",{error:w})}}return{approve:Qt,broadcastTransaction:k,createTransaction:ft,estimateTransactionFee:jt,getAddress:c,getApprovedAmount:gt,getBalance:T,getRpcUrl:()=>kn(x.Tron),isApproved:Jt,signAndBroadcastTransaction:zt,signTransaction:lt,transfer:A,validateAddress:b}}export{st as TRON_SWEEP_ESTIMATE_TIMEOUT_MS,G as checkTronAccountExists,Gn as estimateTronSweepDeduction,I as getTronChainParameters,Vn as getTronPrivateKeyFromMnemonic,jn as getTronToolbox,z as tronAddressToHex,Un as validateTronAddress,Hn as withTronTransactionData,Wn as withTronTransactionValue};
@@ -1 +1 @@
1
- import{ha as St,ia as jt}from"../../chunk-xdkdc1f0.js";import"../../chunk-exyqap7m.js";import{NetworkDerivationPath as Cn}from"@swapkit/helpers";function Z(e,t){if(!Number.isInteger(t)||t<0)throw RangeError(`${e} must be a non-negative integer, got: ${t}`)}function ee({accountIndex:e,chain:t,derivationPath:n}){if(e!==void 0)Z("accountIndex",e);let[r,s,a]=n??Cn[t];return[r,s,e??a]}function Ae({accountIndex:e,change:t=!1,chain:n,derivationPath:r,index:s}){return Z("index",s),[...ee({accountIndex:e,chain:n,derivationPath:r}),Number(t),s]}function pe(e){return e[2]??0}function Xn({deriveAddress:e,getBalance:t,getUtxos:n}){async function r(o){let{accountIndex:p,count:c,startIndex:u=0,change:i=!1}=o;if(Z("count",c),c<1)throw RangeError("count must be at least 1");Z("startIndex",u);let l=[];for(let h=0;h<c;h++){let m=await e({accountIndex:p,change:i,index:u+h});if(m)l.push(m)}return l}async function s(o){let{gapLimit:p=20,change:c=!1}=o??{},u=[],i=0,l=0;while(i<p){let h=await e({change:c,index:l});if(!h)break;if((await t(h.address)).some((y)=>y.getValue("number")>0))u.push(h),i=0;else i++;l++}return u}async function a(o=20){let[p,c]=await Promise.all([s({change:!1,gapLimit:o}),s({change:!0,gapLimit:o})]),u=[...p,...c],i=await Promise.all(u.map(async(h)=>{let f=(await t(h.address)).reduce((y,b)=>y+b.getValue("number"),0);return{...h,balance:f}})),l=i.reduce((h,m)=>h+m.balance,0);return{addresses:i,total:l}}async function d(o=20){let[p,c]=await Promise.all([s({change:!1,gapLimit:o}),s({change:!0,gapLimit:o})]),u=[...p,...c];return(await Promise.all(u.map(async(l)=>(await n(l.address)).map((m)=>({...m,address:l.address,derivationIndex:l.index,isChange:l.change}))))).flat()}return{deriveAddresses:r,getAggregatedBalance:a,getAggregatedUtxos:d,scanForAddresses:s}}import{Chain as C,getRPCUrl as Bn,RequestClient as Re,SKConfig as kn,SwapKitError as H,warnOnce as Kn}from"@swapkit/helpers";import{NETWORKS as le}from"@swapkit/utxo-signer";async function Fn({chain:e,txHash:t}){let n=`${he(e)}/push/transaction`,r=JSON.stringify({data:t});try{let s=await Re.post(n,{body:r,headers:{"Content-Type":"application/json"}});if(s.context.code!==200)throw new H("toolbox_utxo_broadcast_failed",{error:s.context.error||"Transaction broadcast failed"});return s.data?.transaction_hash||t}catch(s){let a=await Bn(e);if(a){let d=JSON.stringify({id:St(),jsonrpc:"2.0",method:"sendrawtransaction",params:[t]}),o=await Re.post(a,{body:d,headers:{"Content-Type":"application/json"}});if(o.error)throw new H("toolbox_utxo_broadcast_failed",{error:o.error?.message});if(o.result.includes('"code":-26'))throw new H("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return o.result}throw s}}function he(e){return`https://api.blockchair.com/${Dn(e)}`}function At(e){switch(e){case C.Bitcoin:return 5;case C.Dogecoin:return 1e4;case C.Litecoin:return 1;case C.Zcash:return 1;default:return 2}}function Dn(e){switch(e){case C.BitcoinCash:return"bitcoin-cash";case C.Litecoin:return"litecoin";case C.Dash:return"dash";case C.Dogecoin:return"dogecoin";case C.Zcash:return"zcash";case C.Polkadot:return"polkadot";default:return"bitcoin"}}async function In(e){try{let{feePerKb:t}=await Re.get(`https://app.bitgo.com/api/v2/${e.toLowerCase()}/tx/fee`),n=t/1000;return Math.max(n,At(e))}catch{return At(e)}}async function Oe(e,t){let n=await Re.get(`${e}${t?`${e.includes("?")?"&":"?"}key=${t}`:""}`);if(!n||n.context.code!==200)throw new H("toolbox_utxo_api_error",{error:`Failed to query ${e}`});return n.data}async function Hn({chain:e,apiKey:t}){let n=await Oe(`${he(e)}/stats`,t);if(typeof n.best_block_height!=="number")throw new H("toolbox_utxo_api_error",{error:"Missing best_block_height in stats response"});return n.best_block_height}async function Ct({address:e,chain:t,apiKey:n}){if(!e)throw new H("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await Oe(`${he(t)}/dashboards/address/${e}?transaction_details=true`,n))[e]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function Rn({address:e,chain:t,apiKey:n}){return(await Ct({address:e,apiKey:n,chain:t}))?.address.balance||0}async function Xt({chain:e,apiKey:t,txHash:n}){if(!n)throw new H("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await Oe(`${he(e)}/raw/transaction/${n}`,t))?.[n]?.raw_transaction||""}catch(r){let s=r instanceof Error?r.message:String(r);return console.error(`Failed to fetch raw transaction: ${s}`),""}}var En=4294967294;async function Mn({chain:e,apiKey:t,txHash:n}){if(!n)throw new H("toolbox_utxo_invalid_params",{error:"TxHash is required"});let s=(await Oe(`${he(e)}/dashboards/transaction/${n}`,t))?.[n];if(!s)throw new H("toolbox_utxo_tx_not_found",{txHash:n});let{transaction:a,inputs:d,outputs:o}=s,p=d.map((u)=>u.spending_sequence),c=a.is_rbf===!0||p.some((u)=>u<En);return{blockId:a.block_id,confirmed:a.block_id!==-1,fee:a.fee,inputs:d,isRBF:c,outputs:o,sequences:p,size:a.size,txid:a.hash,weight:a.weight}}async function Nn({chain:e,address:t,apiKey:n,offset:r=0,limit:s=30}){return(await Oe(`${he(e)}/outputs?q=recipient(${t}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${s}&offset=${r}`,n)).map(({is_spent:p,script_hex:c,block_id:u,transaction_hash:i,index:l,value:h,spending_signature_hex:m})=>({hash:i,index:l,is_confirmed:u!==-1,is_spent:p,script_hex:c,txHex:m,value:h}))}function Zn(e){return e.reduce((t,n)=>t+n.value,0)}function Ot(e,t){let n=[...e].sort((r,s)=>s.value-r.value);if(t){let r=[],s=0;for(let a of n)if(r.push(a),s+=a.value,s>=t)break;return r}return n}async function Bt({chain:e,address:t,apiKey:n,targetValue:r,accumulativeValue:s=0,offset:a=0,limit:d=30}){if(!t)throw new H("toolbox_utxo_invalid_params",{error:"Address is required"});try{let o=await Nn({address:t,apiKey:n,chain:e,limit:d,offset:a,targetValue:r}),c=o.length<d,u=o.filter(({is_spent:y})=>!y),i=Zn(u),l=s+i,h=r&&l>=r;if(c||h)return Ot(u,r);let m=await Bt({accumulativeValue:l,address:t,apiKey:n,chain:e,limit:d,offset:a+d,targetValue:r}),f=[...u,...m];return Ot(f,r)}catch(o){let p=o instanceof Error?o.message:String(o);return console.error(`Failed to fetch unspent UTXOs: ${p}`),[]}}async function zn({address:e,chain:t,apiKey:n,fetchTxHex:r=!0,targetValue:s}){let a=await Bt({address:e,apiKey:n,chain:t,targetValue:s}),d=r?await Promise.all(a.map(({hash:o})=>Xt({apiKey:n,chain:t,txHash:o}))):[];return a.map(({hash:o,index:p,script_hex:c,value:u},i)=>({address:e,hash:o,index:p,txHex:r?d[i]:void 0,value:u,witnessUtxo:{script:Buffer.from(c,"hex"),value:u}}))}function A(e){let t=kn.get("apiKeys").blockchair||"";return Kn({condition:!t,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(n)=>Fn({chain:e,txHash:n}),getAddressData:(n)=>Ct({address:n,apiKey:t,chain:e}),getBalance:(n)=>Rn({address:n,apiKey:t,chain:e}),getBlockHeight:()=>Hn({apiKey:t,chain:e}),getRawTx:(n)=>Xt({apiKey:t,chain:e,txHash:n}),getSuggestedTxFee:()=>In(e),getTransactionDetails:(n)=>Mn({apiKey:t,chain:e,txHash:n}),getUtxos:(n)=>zn({...n,apiKey:t,chain:e})}}function Hs(e){return e}function Rs(){return function(t){switch(t){case C.Bitcoin:return le.bitcoin;case C.BitcoinCash:return le.bitcoinCash;case C.Dash:return le.dash;case C.Litecoin:return le.litecoin;case C.Dogecoin:return le.dogecoin;case C.Zcash:return le.zcash;default:throw new H("toolbox_utxo_not_supported",{chain:t})}}}import{sha256 as Yn}from"@noble/hashes/sha2.js";import{createBase58check as jn}from"@scure/base";import{SwapKitError as Kt}from"@swapkit/helpers";import{CashAddrType as Ee,decodeCashAddr as Wn,encodeCashAddr as Ln}from"@swapkit/utxo-signer";var $n={P2PKH:Ee.P2PKH,P2SH:Ee.P2SH},Vn={[Ee.P2PKH]:"P2PKH",[Ee.P2SH]:"P2SH"};function qn(e,t,n){return Ln({hash:n,prefix:e,type:$n[t]})}function Gn(e){let t=Wn(e),n=Vn[t.type];if(!n)throw Error(`Unknown CashAddr type: ${t.type}`);return{hash:t.hash,prefix:t.prefix,type:n}}var st={decode:Gn,encode:qn};var Ft=jn(Yn);var Dt;((n)=>{n.Mainnet="mainnet";n.Testnet="testnet"})(Dt||={});var te={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}},Jn={["p2pkh"]:"pkh",["p2sh"]:"sh"};function $s(e){return Ne(e)!==void 0}function Vs(e){return ot(e).network}function G(e){let t=ot(e);if(t.format==="legacy")return e;return tr(t)}function Me(e){let t=ot(e);return nr(t)}function Ne(e){if(typeof e!=="string")return;let t=Qn(e)??er(e);return t&&{...t,scriptType:Jn[t.type]}}function ot(e){let t=Ne(e);if(!t)throw new Kt("toolbox_utxo_invalid_address",{address:e});return t}function Qn(e){try{let t=Ft.decode(e);if(t.length!==21)throw new Kt("toolbox_utxo_invalid_address",{address:e});let n=t[0],r=Array.prototype.slice.call(t,1);switch(n){case te.legacy.mainnet.p2pkh:return{format:"legacy",hash:r,network:"mainnet",type:"p2pkh"};case te.legacy.mainnet.p2sh:return{format:"legacy",hash:r,network:"mainnet",type:"p2sh"};case te.legacy.testnet.p2pkh:return{format:"legacy",hash:r,network:"testnet",type:"p2pkh"};case te.legacy.testnet.p2sh:return{format:"legacy",hash:r,network:"testnet",type:"p2sh"};case te.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:r,network:"mainnet",type:"p2pkh"};case te.bitpay.mainnet.p2sh:return{format:"bitpay",hash:r,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function er(e){if(e.indexOf(":")!==-1)try{return kt(e)}catch{}else{let t=["bitcoincash","bchtest","bchreg"];for(let n of t)try{return kt(`${n}:${e}`)}catch{}}return}function kt(e){try{let{hash:t,prefix:n,type:r}=st.decode(e);return{format:"cashaddr",hash:Array.prototype.slice.call(t,0),network:n==="bitcoincash"?"mainnet":"testnet",type:r==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function tr(e){let t=te.legacy[e.network][e.type],n=Buffer.alloc(1+e.hash.length);return n[0]=t,n.set(e.hash,1),Ft.encode(n)}function nr(e){let t=e.network==="mainnet"?"bitcoincash":"bchtest",n=e.type==="p2pkh"?"P2PKH":"P2SH",r=new Uint8Array(e.hash);return st.encode(t,n,r)}import{Chain as oe,SwapKitError as Tt}from"@swapkit/helpers";import{SwapKitError as qe,UTXO_SCRIPT_TYPE_LIST as Ar,UTXO_SCRIPT_TYPES as $t,UTXOScriptType as Ge}from"@swapkit/helpers";import{Script as Or}from"@swapkit/utxo-signer";import{Chain as at}from"@swapkit/helpers";import{getAddressScriptType as sr,getTransparentZcashAddressType as or,getZcashAddressType as ar}from"@swapkit/utxo-signer";import{match as ir}from"ts-pattern";import{Chain as fe}from"@swapkit/helpers";import{NETWORKS as Te}from"@swapkit/utxo-signer";import{match as rr}from"ts-pattern";function U(e){return rr(e).with(fe.Bitcoin,()=>Te.bitcoin).with(fe.BitcoinCash,()=>Te.bitcoinCash).with(fe.Dash,()=>Te.dash).with(fe.Dogecoin,()=>Te.dogecoin).with(fe.Litecoin,()=>Te.litecoin).with(fe.Zcash,()=>Te.zcash).exhaustive()}function z(e){return e.replace(/(bchtest:|bitcoincash:)/,"")}function Se(e){if(typeof e!=="string")return null;let t=Ne(z(e));if(!t||t.network!=="mainnet")return null;return t.scriptType}var cr=["sprout","sapling","unified"];function dr(e){let t=or(e,U(at.Zcash));if(t)return t;let n=ar(e);return n&&cr.includes(n)?n:null}function Y({address:e,chain:t}){return ir(t).with(at.BitcoinCash,()=>Se(e)).with(at.Zcash,()=>dr(e)).otherwise(()=>sr(e,U(t)))}import{Chain as ne,derivationPathToString as It,getPurposeFromPath as ur,getUTXOScriptTypeForPath as Ht,getUTXOScriptTypeForPurpose as Mt,resolveDerivationPath as pr,SwapKitError as Ce,UTXO_SCRIPT_TYPE_LIST as Rt,UTXO_SCRIPT_TYPES as me,UTXOChains as lr,UTXOScriptType as O,updateDerivationPath as hr,warnOnce as fr}from"@swapkit/helpers";import{CashAddrPrefix as Tr,CashAddrType as mr,encodeCashAddr as yr,OutScript as Nt,p2pkh as gr,p2sh as xr,p2tr as br,p2wpkh as Et}from"@swapkit/utxo-signer";var Ze=Object.freeze([O.P2PKH]),wr=Object.freeze({[ne.Bitcoin]:Rt,[ne.BitcoinCash]:Ze,[ne.Dash]:Ze,[ne.Dogecoin]:Ze,[ne.Litecoin]:Rt,[ne.Zcash]:Ze});function We(e){return wr[e]}function it(e){return We(e).some((t)=>me[t].witness)}function ye(e,t){return We(e).includes(t)}function Le(e,t){if(ye(e,t))return t;throw new Ce("toolbox_utxo_unsupported_script_type",{chain:e,error:`${e} cannot encode ${t}; supported: ${We(e).join(", ")}`,scriptType:t,supported:We(e)})}var Zt=lr.filter((e)=>!it(e));function Pr({purpose:e,scriptType:t}){let n=Mt(e);return n===void 0||n===t}function ct({chain:e,purpose:t,scriptType:n}){fr({condition:!Pr({purpose:t,scriptType:n}),id:`utxo_off_standard_encoding_${e}_${t}_${n}`,warning:`${e}: encoding m/${t}' keys as ${n}, not the ${Mt(t)} the path implies. No other wallet derives these addresses: move funds out of them, never receive into them.`})}function $e({chain:e,derivationPath:t,index:n=0,scriptType:r}){if(t){if(!r){let o=Ht(t);throw new Ce("toolbox_utxo_invalid_params",{chain:e,derivationPath:It(t),error:`scriptType is required alongside derivationPath: getUTXOScriptTypeForPath gives the standard one${o?` (${o})`:""}, or state another deliberately.`})}return Le(e,r),ct({chain:e,purpose:ur(t),scriptType:r}),{derivationPath:t,scriptType:r}}let s=pr({chain:e,index:n}),a=r?hr(s,{purpose:me[r].purpose}):s,d=r??Ht(a);if(!d)throw new Ce("toolbox_utxo_invalid_params",{chain:e,derivationPath:It(a),error:`${e}: the default derivation path has no standard script type`});return Le(e,d),{derivationPath:a,scriptType:d}}function Ur(e){return e.length===32?e:e.slice(1)}function ze(e,t){if(!e.address)throw new Ce("toolbox_utxo_invalid_address",{error:`Could not derive a ${t} address`});return e}var vr={[O.P2PKH]:(e,t)=>{let{address:n,script:r}=ze(gr(e,t),O.P2PKH);return{address:n,script:r}},[O.P2SH_P2WPKH]:(e,t)=>{let n=Et(e,t),{address:r,script:s}=ze(xr(n,t),O.P2SH_P2WPKH);return{address:r,redeemScript:n.script,script:s}},[O.P2WPKH]:(e,t)=>{let{address:n,script:r}=ze(Et(e,t),O.P2WPKH);return{address:n,script:r}},[O.P2TR]:(e,t)=>{let n=Ur(e),{address:r,script:s}=ze(br(n,void 0,t),O.P2TR);return{address:r,script:s,tapInternalKey:n}}};function Ve(e,t,n){return vr[e](t,n)}function dt(e,t){if(e!==ne.BitcoinCash)return t.address;let n=Nt.decode(t.script);if(n.type!=="pkh")throw new Ce("toolbox_utxo_invalid_address",{chain:e,error:`Cannot encode ${n.type} as CashAddr`});return yr({hash:n.hash,prefix:Tr.MAINNET,type:mr.P2PKH}).replace(/^bitcoincash:/,"")}var _r=Object.freeze({pkh:O.P2PKH,sh:O.P2SH_P2WPKH,tr:O.P2TR,wpkh:O.P2WPKH}),zt=Object.freeze({pkh:me[O.P2PKH].outputSize,sh:me[O.P2SH_P2WPKH].outputSize,tr:me[O.P2TR].outputSize,wpkh:me[O.P2WPKH].outputSize,wsh:43});function Wt(e){return e in zt}function Lt(e){return Wt(e)?zt[e]:void 0}function Xe(e){return _r[e]}function ut(e){try{let{type:t}=Nt.decode(e);return Wt(t)?Xe(t):void 0}catch{return}}import{UTXOScriptType as se}from"@swapkit/helpers";var ho=1000,lt=10,Sr=2,Cr=10;function R(e){let t=new Uint8Array(Buffer.from(e,"utf8"));return Or.encode(["RETURN",t])}function Vt(e){return Object.fromEntries(Ar.map((t)=>[t,$t[t][e]]))}var qt=Vt("inputSize"),pt=Vt("outputSize"),ht=(e)=>$t[e].witness,Ye=(e,t)=>{let n=Y({address:e,chain:t});if(!n)throw new qe("toolbox_utxo_invalid_address",{address:e,chain:t});let r=Xe(n);if(!r||!ye(t,r))throw new qe("toolbox_utxo_unsupported_script_type",{address:e,addressType:n,chain:t,error:"Address is valid but its script type is not one the SDK spends from"});return r},Xr=(e,t)=>{let n=Y({address:e,chain:t});if(!n)throw new qe("toolbox_utxo_invalid_address",{address:e,chain:t});let r=Lt(n);if(!r)throw new qe("toolbox_utxo_unsupported_script_type",{address:e,addressType:n,chain:t,error:"Address is valid but a transparent transaction cannot pay to it"});return r},ge=({chain:e,inputs:t,outputs:n,feeRate:r})=>{let s=t[0]?Be(t[0],e):Ge.P2PKH,a=r?t.filter((u)=>u.value>=qt["type"in u&&u.type?u.type:Ge.P2PKH]*Math.ceil(r)):t,d=0,o=0;for(let u of a)if(d+=re(u,e),!ht(Be(u,e)))o++;let p=n?.reduce((u,i)=>u+je(i,e),0)||pt[s],c=o<a.length;return lt+d+p+ft(c,o)},Be=(e,t)=>{if("type"in e&&e.type)return e.type;if("address"in e&&e.address)return Ye(e.address,t);return Ge.P2PKH},re=(e,t)=>qt[Be(e,t)],ft=(e,t)=>e?Math.ceil((Sr+t)/4):0,je=(e,t,n)=>{if(e?.script)return Cr+e.script.length+(e.script.length>=74?2:1);if(n)return pt[n];if("address"in e&&e.address)return Xr(e.address,t);return pt[Ge.P2PKH]};function ke(e){switch(e){case oe.Bitcoin:case oe.BitcoinCash:return 550;case oe.Dash:case oe.Litecoin:return 5500;case oe.Dogecoin:return 1e5;case oe.Zcash:return 546;default:throw new Tt("toolbox_utxo_not_supported",{chain:e})}}function E({inputs:e,outputs:t,feeRate:n=1,chain:r=oe.Bitcoin,changeAddress:s="",sweep:a=!1}){let d=ke(r),o=e.filter((f)=>{let y=re(f,r)*n;return a?f.value>Math.max(y,d):y<=f.value});if(a){let f=Math.ceil(n*ge({chain:r,inputs:o,outputs:t})),y=o.reduce((X,L)=>X+L.value,0),b=y-f;if(b<=d)throw new Tt("toolbox_sweep_amount_too_low",{available:y,dustThreshold:d,fee:f});let S=t.findIndex((X)=>("address"in X)&&X.address);if(S===-1)throw new Tt("toolbox_utxo_invalid_params",{error:"Sweep requires a recipient output"});return{fee:f,inputs:o,outputs:t.map((X,L)=>L===S?{...X,value:b}:X)}}let p=lt+t.reduce((f,y)=>f+je(y,r),0),c=t.reduce((f,y)=>f+y.value,0),u=0,i=0,l=!1,h=0,m=[];for(let f of o){if(u+=re(f,r),ht(Be(f,r)))l=!0;else i++;h+=f.value,m.push(f);let y=(p+u+ft(l,i))*n,b=y+c;if(h<b)continue;let S=h-b,X=n*je({address:s,value:0},r);if(S>X){let L=X+y,Pe=h-(c+Math.ceil(L));if(Pe>Math.max(re({value:0},r)*n,ke(r)))return{fee:Math.ceil(L),inputs:m,outputs:t.concat({address:s,value:Pe})}}return{fee:Math.ceil(y),inputs:m,outputs:t}}return{fee:Math.ceil(n*ge({chain:r,inputs:e,outputs:t}))}}import{Chain as we,SwapKitError as Bs}from"@swapkit/helpers";import{hex as un}from"@scure/base";import{Chain as Yr,derivationPathToString as jr,FeeOption as Jr,resolveDerivationPath as Qr,SwapKitError as W}from"@swapkit/helpers";import{BCHSigHash as es,CashAddrPrefix as pn,CashAddrType as ln,encodeCashAddr as hn,NETWORKS as ts,p2pkh as fn,Transaction as Tn}from"@swapkit/utxo-signer";import{secp256k1 as Br}from"@noble/curves/secp256k1.js";import{hex as ae}from"@scure/base";import{HDKey as Jt}from"@scure/bip32";import{mnemonicToSeedSync as xt}from"@scure/bip39";import{AssetValue as mt,applyFeeMultiplier as Gt,Chain as Fe,derivationPathToString as Ke,FeeOption as M,NetworkDerivationPath as kr,SwapKitError as P,SwapKitNumber as Kr,UTXO_SCRIPT_TYPES as Fr,warnOnce as Dr}from"@swapkit/helpers";import{BCHSigHash as Qt,RBF_SEQUENCE as Ir,SigHash as Yt,Transaction as yt,utils as Hr,WIF as en}from"@swapkit/utxo-signer";var Je=[Fe.Bitcoin];function tn({address:e,chain:t}){return Y({address:e,chain:t})!==null}function Rr({phrase:e,derivationPath:t,network:n,seed:r}){let s=r??xt(e),d=Jt.fromMasterSeed(s,n.bip32).derive(t);if(!d.privateKey)throw new P("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return d.privateKey}function gt(e){return Br.getPublicKey(e,!0)}function De({publicKey:e,chain:t,network:n,scriptType:r}){return dt(t,Ve(r,e,n))}function xe({phrase:e,derivationPath:t,chain:n,wif:r,seed:s}){let a=U(n);if(r){let c=en(a).decode(r),u=gt(c);return{privateKey:c,publicKey:u}}if(!e)throw new P("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let d=t||Ke(kr[n]),o=Rr({derivationPath:d,network:a,phrase:e,seed:s}),p=gt(o);return{privateKey:o,publicKey:p}}function Er(e,t){return en(U(t)).encode(e)}function Mr({phrase:e,derivationPath:t,chain:n,seed:r}){let s=t.split("/");if(s.length<4)throw new P("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${s.length}): ${t}`});let a=U(n),d=r??xt(e),o=Jt.fromMasterSeed(d,a.bip32),p=s.slice(0,4).join("/");return o.derive(p)}function Nr(e,t){if(!e||!Fr[e].witness)return!1;return e!==se.P2SH_P2WPKH||!!t}function nn({chain:e,script:t,publicKey:n,network:r}){let s=ut(t);if(s!==se.P2SH_P2WPKH&&s!==se.P2TR)return{};if(!ye(e,s))return{};let a=Ve(s,n,r);if(Hr.compareBytes(a.script,t)!==0)return{};return s===se.P2TR?{tapInternalKey:a.tapInternalKey}:{redeemScript:a.redeemScript}}function Zr(e,t,n){if(!n)return!1;let r=Y({address:e,chain:t}),s=r?Xe(r):void 0;if(!s||!ye(t,s))return!1;let a=dt(t,Ve(s,n,U(t)));return t===Fe.BitcoinCash?z(a)===z(e):a===e}function zr(e){return e.witnessUtxo?.script??e.nonWitnessUtxo?.outputs[e.index??0]?.script}function bt({chain:e,tx:t,publicKey:n,network:r,indexes:s}){let a=s??Array.from({length:t.inputsLength},(o,p)=>p),d=[];for(let o of a){let p=t.getInput(o),c=zr(p);if(!c)continue;let{redeemScript:u,tapInternalKey:i}=nn({chain:e,network:r,publicKey:n,script:c}),l={index:o};if(u&&!p.redeemScript)l.redeemScript=u;if(i&&!p.tapInternalKey)l.tapInternalKey=i;if(l.redeemScript||l.tapInternalKey)d.push(l)}return d}function ie({inputs:e,outputs:t,chain:n,tx:r,sender:s,compiledMemo:a,enableRBF:d=!1}){let o=U(n),p=it(n),c=d?Ir:void 0,u=new Set;for(let i of e){let l=`${i.hash}:${i.index}`;if(u.has(l))throw new P("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});u.add(l);let h=typeof i.hash==="string"?ae.decode(i.hash):i.hash,m=i.witnessUtxo?ut(i.witnessUtxo.script):void 0,f=i.publicKey&&i.witnessUtxo?nn({chain:n,network:o,publicKey:i.publicKey,script:i.witnessUtxo.script}):{};if(p&&i.witnessUtxo&&Nr(m,f.redeemScript))r.addInput({...f,index:i.index,sequence:c,txid:h,witnessUtxo:{amount:BigInt(i.witnessUtxo.value),script:i.witnessUtxo.script}});else if(i.txHex)r.addInput({...f,index:i.index,nonWitnessUtxo:ae.decode(i.txHex),sequence:c,txid:h,...n===Fe.BitcoinCash?{sighashType:Qt.ALL}:{}});else throw new P("toolbox_utxo_invalid_params",{error:`Input ${l} cannot be signed from its witnessUtxo alone: it needs its previous transaction (txHex), or — if it is a nested-segwit output — the public key that controls it, which its redeemScript derives from`})}for(let i of t){let l="address"in i&&i.address?i.address:s;if(n===Fe.BitcoinCash)l=G(l);if(i.script)if(a)r.addOutput({amount:0n,script:a});else throw new P("toolbox_utxo_invalid_params",{error:"An output carrying a script needs the compiled memo it carries"});else r.addOutputAddress(l,BigInt(i.value),o)}return{inputs:e,tx:r}}async function be(e){let t=await A(e).getSuggestedTxFee();return{[M.Average]:t,[M.Fast]:Gt(t,M.Fast),[M.Fastest]:Gt(t,M.Fastest)}}async function rn({assetValue:e,recipient:t,memo:n,sender:r,sweep:s,fetchTxHex:a=!1,publicKey:d},o,{forEstimateOnly:p=!1}={}){let c=e.chain,u=Ye(r,c),i=u===se.P2PKH||u===se.P2SH_P2WPKH&&!Zr(r,c,d),l=a||!p&&i,h=e.getBaseValue("number"),m=s?void 0:o??(await be(c))[M.Fastest],f=s||m===void 0?void 0:Math.ceil(h+m*5000);return{inputs:await A(c).getUtxos({address:r,fetchTxHex:l,targetValue:f}),outputs:[{address:t,value:s?0:h},...n?[{address:"",script:R(n),value:0}]:[]]}}async function sn({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s,fetchTxHex:a=!1,enableRBF:d=!1,sweep:o,publicKey:p}){let c=e.chain,u=n?R(n):null,i=await rn({assetValue:e,fetchTxHex:a,memo:n,publicKey:p,recipient:t,sender:s,sweep:o},r),{inputs:l,outputs:h}=E({...i,chain:c,changeAddress:s,feeRate:r,sweep:o});if(!(l&&h))throw new P("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let m=p?l.map((S)=>({...S,publicKey:p})):l,f=new yt({allowUnknownOutputs:!!u,version:1}),{inputs:y,tx:b}=ie({chain:c,compiledMemo:u,enableRBF:d,inputs:m,outputs:h,sender:s,tx:f});return{inputs:y,tx:b,utxos:i.inputs}}async function on({assetValue:e,feeOptionKey:t=M.Fast,feeRate:n,memo:r,sender:s,recipient:a,sweep:d}){let o=e.chain,p,c;if(n!==void 0)p=n,c=Math.floor(n);else{let i=await be(o);p=i[M.Fastest],c=i[t]}let u=await rn({assetValue:e,memo:r,recipient:a,sender:s,sweep:d},p,{forEstimateOnly:!0});return E({...u,chain:o,changeAddress:s,feeRate:c,sweep:d})}function Wr(e){return async function({from:n,memo:r,feeRate:s,feeOptionKey:a=M.Fast,recipient:d=n,recipients:o=1}){let p=s??(await be(e))[a],u=(await A(e).getUtxos({address:n,fetchTxHex:!1})).filter((f)=>f.value>Math.max(ke(e),re(f,e)*p));if(!u.length)return mt.from({chain:e});let i=typeof o==="number"?Math.max(o,1):o.length,l=typeof o==="number"||i===0?Array.from({length:i||1},()=>({address:d,value:0})):[...o];if(r)l.push({address:n,script:R(r),value:0});let{outputs:h}=E({chain:e,feeRate:p,inputs:u,outputs:l,sweep:!0}),m=h?.[0]?.value??0;return mt.from({chain:e,value:BigInt(m)})}}function Lr(e){return async function(n){let{fee:r}=await on(n);return mt.from({chain:e,value:Kr.fromBigInt(BigInt(r),8).getValue("string")})}}function $r({chain:e,phrase:t,derivationPath:n,scriptType:r,seed:s}){let a=U(e),{privateKey:d,publicKey:o}=xe({chain:e,derivationPath:n,phrase:t,seed:s}),p=an(e);return{getAddress:()=>De({chain:e,network:a,publicKey:o,scriptType:r}),privateKey:d,publicKey:o,signTransaction:(c)=>{for(let{index:u,...i}of bt({chain:e,network:a,publicKey:o,tx:c}))c.updateInput(u,i);return c.sign(d,p),c}}}function an(e){return e===Fe.BitcoinCash?[Qt.ALL]:[Yt.ALL,Yt.DEFAULT]}function Vr(e,t,n){return async function({memo:s,recipient:a,feeOptionKey:d,feeRate:o,assetValue:p,enableRBF:c=!1,sweep:u}){let i=await t?.getAddress();if(!(t&&i))throw new P("toolbox_utxo_no_signer");if(!a)throw new P("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});Dr({condition:c&&!Je.includes(e),id:`rbf_not_supported_${e}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${e}. Transaction will be created without RBF signaling.`});let l=c&&Je.includes(e),h=o||(await be(e))[d||M.Fast],{tx:m}=await sn({assetValue:p,enableRBF:l,feeRate:h,memo:s,publicKey:n,recipient:a,sender:i,sweep:u}),f=await t.signTransaction(m);return f.finalize(),A(e).broadcastTx(ae.encode(f.extract()))}}function cn(e){return(t)=>tn({address:t,chain:e})}function dn(e,{scriptType:t}){let n=U(e);return function(s){if(!s)throw new P("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return De({chain:e,network:n,publicKey:s.publicKey,scriptType:t})}}function qr(e){let t=e?.publicKey;if(t===void 0)return;if(t instanceof Uint8Array&&t.length===33)return t;throw new P("toolbox_utxo_invalid_params",{error:"signer.publicKey must be a 33-byte compressed public key (Uint8Array)"})}function ce(e){let{chain:t}=e,n=e.phrase?e:void 0;if(!n&&"derivationPath"in e&&e.derivationPath!==void 0)throw new P("toolbox_utxo_invalid_params",{error:"derivationPath needs a phrase; a toolbox built around a signer uses the signer's addresses"});let r=n?.phrase,s=n?.index??0,a=r?xt(r):void 0,{derivationPath:d,scriptType:o}=$e({chain:t,derivationPath:n?.derivationPath,index:s,scriptType:e.scriptType}),p=Ke(d),c=r?$r({chain:t,derivationPath:p,phrase:r,scriptType:o,seed:a}):void 0,u=n?void 0:e.signer,i=c||u,l=r?xe({chain:t,derivationPath:p,phrase:r,seed:a}):void 0,h=l?.publicKey??qr(u);function m(){if(i)return i.getAddress();return Promise.resolve(void 0)}function f(T){if(!r)return;let g=ee({accountIndex:T,chain:t,derivationPath:d});return Mr({chain:t,derivationPath:Ke(g),phrase:r,seed:a})}let y=f();function b(){if(!y)return;return y.publicExtendedKey}function S({accountIndex:T}={}){let g=T===void 0?y:f(T);if(!g)return;let w=ee({accountIndex:T,chain:t,derivationPath:d});return{accountIndex:pe(w),path:Ke(w),xpub:g.publicExtendedKey}}function X({accountIndex:T,index:g,change:w=!1}){let _=T===void 0?y:f(T);if(!_)return;let x=Ae({accountIndex:T,chain:t,change:w,derivationPath:d,index:g}),k=U(t),F=_.deriveChild(Number(w)).deriveChild(g);if(!F.publicKey)throw new P("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let B=De({chain:t,network:k,publicKey:F.publicKey,scriptType:o}),K=ae.encode(F.publicKey);return{accountIndex:pe(x),address:B,change:w,index:g,path:Ke(x),pubkey:K}}async function L(T){if(!Je.includes(t))return{reason:`RBF is not supported on ${t}`,supported:!1};let g=await A(t).getTransactionDetails(T);return{canReplace:g.isRBF&&!g.confirmed,confirmed:g.confirmed,enabled:g.isRBF,fee:g.fee,sequences:g.sequences,supported:!0}}async function Pe({txid:T,newFeeRate:g,recipient:w,memo:_}){if(!Je.includes(t))throw new P("toolbox_utxo_rbf_not_supported",{chain:t});let x=await A(t).getTransactionDetails(T);if(!x.isRBF)throw new P("toolbox_utxo_tx_not_replaceable",{txid:T});if(x.confirmed)throw new P("toolbox_utxo_tx_already_confirmed",{blockId:x.blockId,txid:T});let k=x.inputs.reduce((v,I)=>v+I.value,0),B=x.outputs.find((v)=>v.recipient===w)?.value||0;if(B===0)throw new P("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let K=await Promise.all(x.inputs.map(async(v)=>{let I=await A(t).getRawTx(v.transaction_hash);return{address:v.recipient,hash:v.transaction_hash,index:v.index,publicKey:h,txHex:I,value:v.value,witnessUtxo:void 0}})),D=_?R(_):null,J=k-B-x.fee,Ue=await m(),ue=[];if(D)ue.push({address:"",script:D,value:0});if(J>ke(t)&&Ue)ue.push({address:Ue,value:J});let He=ge({chain:t,inputs:K.map((v)=>({...v,type:Ye(v.address,t)})),outputs:[{address:w,value:B},...ue]}),V=Math.ceil(He*g);if(V<=x.fee)throw new P("toolbox_utxo_rbf_fee_too_low",{newFee:V,originalFee:x.fee});let ve=V-x.fee,Q=B-ve;if(Q<=0)throw new P("toolbox_utxo_rbf_insufficient_change");let _e=new yt({allowUnknownOutputs:!!D,version:1}),tt=[{address:w,value:Q},...ue];return ie({chain:t,compiledMemo:D,inputs:K,outputs:tt,sender:Ue||w,tx:_e}),{feeDelta:ve,newFee:V,originalFee:x.fee,tx:_e}}async function vn({txid:T,newFeeRate:g,recipient:w,memo:_}){let{tx:x,originalFee:k,newFee:F}=await Pe({memo:_,newFeeRate:g,recipient:w,txid:T}),B=await et(x);B.finalize();let K=await A(t).broadcastTx(ae.encode(B.extract()));return{newFee:F,originalFee:k,txid:K}}function vt({accountIndex:T,index:g,change:w=!1}){Z("index",g);let _=T===void 0?y:f(T);if(!_)return;return _.deriveChild(Number(w)).deriveChild(g).privateKey||void 0}function _t({tx:T,inputDerivations:g}){if(!y)throw new P("toolbox_utxo_no_signer");let w=an(t),_=U(t);for(let x=0;x<g.length;x++){let k=g[x];if(!k)continue;let{derivationIndex:F,isChange:B}=k,K=vt({change:B,index:F});if(!K)throw new P("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${x} at index ${F}`});for(let{index:D,...J}of bt({chain:t,indexes:[x],network:_,publicKey:gt(K),tx:T}))T.updateInput(D,J);T.signIdx(K,x,w)}return T}async function _n({utxos:T,recipient:g,assetValue:w,memo:_,feeRate:x,feeOptionKey:k,changeAddress:F,sweep:B}){if(B)throw new P("toolbox_utxo_invalid_params",{error:"Sweep is not supported for transfers from multiple addresses"});if(!y)throw new P("toolbox_utxo_no_signer");let K=x||(await be(t))[k||M.Fast],D=_?R(_):null,J=[{address:g,value:w.getBaseValue("number")}];if(D)J.push({address:"",script:D,value:0});let Ue=T.map(({address:v,hash:I,index:q,value:nt,txHex:Sn,witnessUtxo:rt})=>({address:v,hash:I,index:q,txHex:Sn,value:nt,witnessUtxo:rt?{script:rt.script,value:rt.value}:void 0})),ue=T[0]?.address,He=F||await m()||ue||g,{inputs:V,outputs:ve}=E({chain:t,changeAddress:He,feeRate:K,inputs:Ue,outputs:J});if(!(V&&ve))throw new P("toolbox_utxo_insufficient_balance",{assetValue:w,sender:"multiple addresses"});let Q=new yt({allowUnknownOutputs:!!D,version:1}),_e=V.map((v)=>{let I=T.find((q)=>q.hash===v.hash&&q.index===v.index);return I?{derivationIndex:I.derivationIndex,isChange:I.isChange}:{derivationIndex:0,isChange:!1}}),tt=V.map((v,I)=>{let q=_e[I],nt=q?y.deriveChild(Number(q.isChange)).deriveChild(q.derivationIndex).publicKey:null;return{...v,publicKey:nt??void 0}});return ie({chain:t,compiledMemo:D,inputs:tt,outputs:ve,sender:He,tx:Q}),_t({inputDerivations:_e,tx:Q}),Q.finalize(),A(t).broadcastTx(ae.encode(Q.extract()))}function An({address:T,gapLimit:g=20}){if(!y)return;for(let w=0;w<g;w++){let _=X({change:!1,index:w}),x=X({change:!0,index:w}),k=_?.address===T?!1:x?.address===T;if(_?.address===T||x?.address===T)return{change:k,index:w}}return}function et(T){if(!i)throw new P("toolbox_utxo_no_signer");return i.signTransaction(T)}async function On(T){let g=await et(T);return g.finalize(),await A(t).broadcastTx(ae.encode(g.extract()))}return{accumulative:E,broadcastTx:(T)=>A(t).broadcastTx(T),bumpFee:vn,calculateTxSize:(T)=>ge({...T,chain:t}),createKeysForPath:(T)=>xe({...T,chain:t}),createReplacementTransaction:Pe,createTransaction:(T)=>sn({publicKey:h,...T}),deriveAddressAtIndex:X,derivePrivateKeyAtIndex:vt,estimateMaxSendableAmount:Wr(t),estimateTransactionFee:Lr(t),getAddress:m,getAddressFromKeys:dn(t,{scriptType:o}),getAddressType:(T)=>Y({address:T,chain:t}),getBalance:jt(t),getExtendedPublicKey:b,getExtendedPublicKeyInfo:S,getFeeRates:()=>be(t),getInputsOutputsFee:on,getNetworkForChain:()=>U(t),getPrivateKeyFromMnemonic:(T)=>Er(xe({...T,chain:t}).privateKey,t),isRBFEnabled:L,keys:l,resolveDerivationIndex:An,scriptType:o,signAndBroadcastTransaction:On,signTransaction:et,signTransactionWithMultipleKeys:_t,transfer:Vr(t,i,h),transferFromMultipleAddresses:_n,validateAddress:cn(t)}}import{getZcashAddressType as Gr,validateZcashAddress as wt}from"@swapkit/utxo-signer";function Ie(e){return Se(e)!==null}var N=Yr.BitcoinCash;function Qe(e){return z(Me(e))}function ns(e){let t=U(N);function n(s){return s.sign(e.privateKey,[es.ALL]),s}function r(){let s=fn(e.publicKey,t);if(!s.hash)throw new W("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let a=hn({hash:s.hash,prefix:pn.MAINNET,type:ln.P2PKH});return Promise.resolve(a.replace(/^bitcoincash:/,""))}return{getAddress:r,signTransaction:n}}function mn(e={}){let t="phrase"in e?e.phrase:void 0,n="index"in e?e.index||0:0,r="derivationPath"in e?e.derivationPath:void 0,s=Qr({chain:N,derivationPath:r,index:n}),a=jr(s),d=t?xe({chain:N,derivationPath:a,phrase:t}):void 0,o=d?ns(d):("signer"in e)?e.signer:void 0;function p(){return Promise.resolve(o?.getAddress())}let c="scriptType"in e?e.scriptType:void 0,{getBalance:u,getFeeRates:i,broadcastTx:l,...h}=ce(t?{chain:N,index:n,phrase:t,...r?{derivationPath:r,scriptType:c}:{scriptType:c}}:{chain:N,scriptType:c});function m(b,S=!0){return u(z(Me(b)))}function f(b){if(!o)throw new W("toolbox_utxo_no_signer");return o.signTransaction(b)}async function y(b){let S=await f(b);return S.finalize(),await l(un.encode(S.extract()))}return{...h,broadcastTx:l,buildTx:ss,createTransaction:yn,getAddress:p,getAddressFromKeys:os,getBalance:m,getFeeRates:i,signAndBroadcastTransaction:y,signTransaction:f,stripPrefix:z,stripToCashAddress:Qe,transfer:rs({broadcastTx:l,getFeeRates:i,signer:o}),validateAddress:Ie}}async function yn({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s,sweep:a}){if(!Ie(t))throw new W("toolbox_utxo_invalid_address",{address:t});let d=Math.ceil(e.getBaseValue("number")+r*7500),o=await A(N).getUtxos({address:Qe(s),fetchTxHex:!0,targetValue:a?void 0:d}),p=n?R(n):null,c=[],u=G(t);if(c.push({address:u,value:a?0:e.getBaseValue("number")}),p)c.push({script:p,value:0});let{inputs:i,outputs:l}=E({chain:N,feeRate:r,inputs:o,outputs:c,sweep:a});if(!(i&&l))throw new W("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let h=new Tn({allowUnknownOutputs:!!p,version:1}),m=G(s),{inputs:f,tx:y}=ie({chain:N,compiledMemo:p,inputs:i,outputs:l.map((b)=>("address"in b)&&b.address?{...b,address:G(b.address)}:b),sender:m,tx:h});return{inputs:f,tx:y,utxos:i}}function rs({broadcastTx:e,getFeeRates:t,signer:n}){return async function({recipient:s,assetValue:a,feeOptionKey:d=Jr.Fast,sweep:o,...p}){let c=await n?.getAddress();if(!(n&&c))throw new W("toolbox_utxo_no_signer");if(!s)throw new W("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let u=p.feeRate||(await t())[d],{tx:i}=await yn({...p,assetValue:a,feeRate:u,recipient:s,sender:c,sweep:o}),l=await n.signTransaction(i);return l.finalize(),e(un.encode(l.extract()))}}async function ss({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s}){let a=Me(t);if(!Ie(a))throw new W("toolbox_utxo_invalid_address",{address:a});let d=Math.ceil(e.getBaseValue("number")+r*7500),o=await A(N).getUtxos({address:Qe(s),fetchTxHex:!0,targetValue:d}),p=Number(r.toFixed(0)),c=n?R(n):null,u=[];if(u.push({address:G(t),value:e.getBaseValue("number")}),c)u.push({script:c,value:0});let{inputs:i,outputs:l}=E({chain:N,feeRate:p,inputs:o,outputs:u});if(!(i&&l))throw new W("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let h=new Tn({allowUnknownOutputs:!!c,version:1}),{inputs:m,tx:f}=ie({chain:N,compiledMemo:c,inputs:i,outputs:l,sender:G(s),tx:h});return{inputs:m,tx:f,utxos:o}}function os(e){let t=ts.bitcoinCash,n=fn(e.publicKey,t);if(!n.hash)throw new W("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return hn({hash:n.hash,prefix:pn.MAINNET,type:ln.P2PKH}).replace(/^bitcoincash:/,"")}import{createBase58check as as,hex as is}from"@scure/base";import{HDKey as bn}from"@scure/bip32";import{mnemonicToSeedSync as wn}from"@scure/bip39";import{Chain as j,derivationPathToString as cs,FeeOption as ds,SwapKitError as de}from"@swapkit/helpers";import{Address as us,createZcashTransaction as ps,getZcashConsensusBranchId as ls,isTransparentZcashAddress as gn,OutScript as hs,PCZT as fs,utils as Pn,WIF as Ts,ZcashConsensusBranchId as ms,ZcashPSBT as ys,ZcashSigHash as Pt,ZcashVersionGroupId as gs}from"@swapkit/utxo-signer";import{match as xs,P as Ut}from"ts-pattern";var bs=as(Pn.sha256);function ws(e){return bs.encode(e)}function Ps({phrase:e,derivationPath:t}){let n=wn(e),s=bn.fromMasterSeed(n).derive(t);if(!s.privateKey||!s.publicKey)throw new de("toolbox_utxo_invalid_params");let{privateKey:a,publicKey:d}=s,o=Pn.hash160(d),p=new Uint8Array([28,184]),c=new Uint8Array(p.length+o.length);c.set(p,0),c.set(o,p.length);let u=ws(c);return{getAddress:()=>Promise.resolve(u),signTransaction:(i)=>{if(i instanceof ys){let l=i.toPCZT();return l.signAllInputs(a,d,Pt.ALL),l.finalizeAllInputs(),Promise.resolve(l.extract())}if(i instanceof fs)return i.signAllInputs(a,d,Pt.ALL),i.finalizeAllInputs(),Promise.resolve(i.extract());return i.signAllInputs(a,d,Pt.ALL),Promise.resolve(i)}}}function Us({inputs:e,outputs:t,tx:n,sender:r,compiledMemo:s}){let a=U(j.Zcash);for(let d of e){let o=us(a).decode(r),p=hs.encode(o);n.addInput({index:d.index,script:p,sequence:4294967295,txid:is.decode(d.hash),value:BigInt(d.value)})}for(let d of t){let o="address"in d&&d.address?d.address:r,p=d.script;if(p&&!s)continue;if(p&&s)n.addOutput({amount:0n,script:s});else n.addOutputAddress(o,BigInt(d.value),a)}return{inputs:e,tx:n}}async function vs(){try{let e=await A(j.Zcash).getBlockHeight();return ls(e+1)}catch{return ms.IRONWOOD}}async function xn(e){let{assetValue:t,recipient:n,memo:r,feeRate:s,sender:a,fetchTxHex:d,sweep:o}=e,p=U(j.Zcash);if(!gn(a,p))throw new de("toolbox_utxo_invalid_address",{address:a});if(!gn(n,p))throw new de("toolbox_utxo_invalid_address",{address:n,error:"Zcash transaction creation currently supports transparent addresses only"});let c=r?R(r):null,u=await A(j.Zcash).getUtxos({address:a,fetchTxHex:d!==!1}),i=[{address:n,value:o?0:Number(t.getBaseValue("string"))},...c?[{script:c,value:0}]:[]],{inputs:l,outputs:h}=E({chain:j.Zcash,changeAddress:a,feeRate:s,inputs:u,outputs:i,sweep:o});if(!(l&&h))throw new de("toolbox_utxo_insufficient_balance",{assetValue:t,sender:a});let m=ps({consensusBranchId:await vs(),expiryHeight:0,lockTime:0,version:4,versionGroupId:gs.SAPLING}),{tx:f,inputs:y}=Us({compiledMemo:c,inputs:l,outputs:h,sender:a,tx:m});return{inputs:y,outputs:h,tx:f}}function Un(e={}){let t="scriptType"in e?e.scriptType:void 0,n=xs(e).with({signer:Ut.not(Ut.nullish)},({signer:c})=>c).with({phrase:Ut.string},({phrase:c,derivationPath:u,index:i=0})=>{let{derivationPath:l}=$e({chain:j.Zcash,derivationPath:u,index:i,scriptType:t}),h=cs(l);return Ps({derivationPath:h,phrase:c})}).otherwise(()=>{return}),r=ce({chain:j.Zcash,scriptType:t,signer:n});async function s(c){if(!n)throw new de("toolbox_utxo_no_signer");return await n.signTransaction(c)}async function a(c){let u=await s(c);return r.broadcastTx(u.toHex())}async function d({recipient:c,assetValue:u,feeOptionKey:i=ds.Fast,sweep:l,...h}){let m=await n?.getAddress();if(!(n&&m))throw new de("toolbox_utxo_no_signer");let f=h.feeRate||(await r.getFeeRates())[i],{tx:y}=await xn({...h,assetValue:u,feeRate:f,recipient:c,sender:m,sweep:l}),S=(await n.signTransaction(y)).toHex();return r.broadcastTx(S)}function o({phrase:c,derivationPath:u="m/44'/133'/0'/0/0"}){let i=wn(c),h=bn.fromMasterSeed(i).derive(u);if(!h.privateKey||!h.publicKey)throw new de("toolbox_utxo_invalid_params");return{privateKey:h.privateKey,publicKey:h.publicKey}}function p({phrase:c,derivationPath:u="m/44'/133'/0'/0/0"}){let i=o({derivationPath:u,phrase:c}),l=U(j.Zcash);return Ts(l).encode(i.privateKey)}return{...r,createKeysForPath:o,createTransaction:xn,getPrivateKeyFromMnemonic:p,signAndBroadcastTransaction:a,signTransaction:s,transfer:d,validateAddress:wt}}import{hex as _s}from"@scure/base";import{HDKey as As}from"@scure/bip32";import{derivationPathToString as Os,NetworkDerivationPath as Ss,updateDerivationPath as Cs}from"@swapkit/helpers";function Xs({xpub:e,chain:t,count:n,startIndex:r=0,accountIndex:s,purpose:a,scriptType:d}){if(Z("count",n),n<1)throw RangeError("count must be at least 1");Z("startIndex",r),Le(t,d),ct({chain:t,purpose:a,scriptType:d});let o=U(t),p=As.fromExtendedKey(e,o.bip32),c=a===void 0?void 0:Cs(Ss[t],{purpose:a}),u=ee({accountIndex:s,chain:t,derivationPath:c}),i=pe(u),l=[];for(let h of[!1,!0]){let m=p.deriveChild(Number(h));for(let f=0;f<n;f++){let y=r+f,b=m.deriveChild(y);if(!b.publicKey)continue;let S=Ae({accountIndex:s,chain:t,change:h,derivationPath:c,index:y});l.push({accountIndex:i,address:De({chain:t,network:o,publicKey:b.publicKey,scriptType:d}),change:h,index:y,pubkey:_s.encode(b.publicKey),...a===void 0?{}:{path:Os(S)}})}}return l}function ga(e,t){switch(e){case we.BitcoinCash:return mn(t||{});case we.Zcash:return Un(t);case we.Bitcoin:case we.Dogecoin:case we.Litecoin:case we.Dash:return ce({chain:e,...t});default:throw new Bs("toolbox_utxo_not_supported",{chain:e})}}export{qt as InputSizes,ho as MIN_TX_FEE,Cr as OP_RETURN_OVERHEAD,pt as OutputSizes,Sr as SEGWIT_MARKER_FLAG_WEIGHT,lt as TX_OVERHEAD,se as UTXOScriptType,Dt as UtxoNetwork,E as accumulative,ie as addInputsAndOutputs,dn as addressFromKeysGetter,Z as assertDerivationIndex,ge as calculateTxSize,R as compileMemo,mn as createBCHToolbox,Hs as createCustomUtxoApi,Xn as createHDWalletHelpers,ce as createUTXOToolbox,Un as createZcashToolbox,Xs as deriveAddressesFromXpub,Vs as detectAddressNetwork,Se as getBchAddressType,ke as getDustThreshold,Be as getInputScriptType,re as getInputSize,bt as getMissingSpendingMetadata,U as getNetworkForChain,je as getOutputSize,Xr as getOutputSizeForAddress,Ye as getScriptTypeForAddress,pe as getUTXOAccountIndexFromPath,ee as getUTXOAccountPath,Ae as getUTXOAddressPath,cn as getUTXOAddressValidator,Y as getUtxoAddressType,A as getUtxoApi,Rs as getUtxoNetwork,ga as getUtxoToolbox,ft as getWitnessOverhead,Gr as getZcashAddressType,ht as isSegwitScriptType,$s as isValidAddress,Zt as nonSegwitChains,z as stripPrefix,Qe as stripToCashAddress,Me as toCashAddress,G as toLegacyAddress,Ne as tryDecodeAddress,Ie as validateBchAddress,tn as validateUtxoAddress,wt as validateZcashAddress};
1
+ import{ha as St,ia as jt}from"../../chunk-xdkdc1f0.js";import"../../chunk-exyqap7m.js";import{NetworkDerivationPath as Cn}from"@swapkit/helpers";function z(e,t){if(!Number.isInteger(t)||t<0)throw RangeError(`${e} must be a non-negative integer, got: ${t}`)}function te({accountIndex:e,chain:t,derivationPath:n}){if(e!==void 0)z("accountIndex",e);let[r,s,a]=n??Cn[t];return[r,s,e??a]}function Ae({accountIndex:e,change:t=!1,chain:n,derivationPath:r,index:s}){return z("index",s),[...te({accountIndex:e,chain:n,derivationPath:r}),Number(t),s]}function pe(e){return e[2]??0}function Xn({deriveAddress:e,getBalance:t,getUtxos:n}){async function r(o){let{accountIndex:p,count:c,startIndex:u=0,change:i=!1}=o;if(z("count",c),c<1)throw RangeError("count must be at least 1");z("startIndex",u);let l=[];for(let h=0;h<c;h++){let m=await e({accountIndex:p,change:i,index:u+h});if(m)l.push(m)}return l}async function s(o){let{gapLimit:p=20,change:c=!1}=o??{},u=[],i=0,l=0;while(i<p){let h=await e({change:c,index:l});if(!h)break;if((await t(h.address)).some((y)=>y.getValue("number")>0))u.push(h),i=0;else i++;l++}return u}async function a(o=20){let[p,c]=await Promise.all([s({change:!1,gapLimit:o}),s({change:!0,gapLimit:o})]),u=[...p,...c],i=await Promise.all(u.map(async(h)=>{let f=(await t(h.address)).reduce((y,b)=>y+b.getValue("number"),0);return{...h,balance:f}})),l=i.reduce((h,m)=>h+m.balance,0);return{addresses:i,total:l}}async function d(o=20){let[p,c]=await Promise.all([s({change:!1,gapLimit:o}),s({change:!0,gapLimit:o})]),u=[...p,...c];return(await Promise.all(u.map(async(l)=>(await n(l.address)).map((m)=>({...m,address:l.address,derivationIndex:l.index,isChange:l.change}))))).flat()}return{deriveAddresses:r,getAggregatedBalance:a,getAggregatedUtxos:d,scanForAddresses:s}}import{Chain as C,getRPCUrl as Bn,RequestClient as Re,SKConfig as kn,SwapKitError as R,warnOnce as Kn}from"@swapkit/helpers";import{NETWORKS as le}from"@swapkit/utxo-signer";async function Fn({chain:e,txHash:t}){let n=`${he(e)}/push/transaction`,r=JSON.stringify({data:t});try{let s=await Re.post(n,{body:r,headers:{"Content-Type":"application/json"}});if(s.context.code!==200)throw new R("toolbox_utxo_broadcast_failed",{error:s.context.error||"Transaction broadcast failed"});return s.data?.transaction_hash||t}catch(s){let a=await Bn(e);if(a){let d=JSON.stringify({id:St(),jsonrpc:"2.0",method:"sendrawtransaction",params:[t]}),o=await Re.post(a,{body:d,headers:{"Content-Type":"application/json"}});if(o.error)throw new R("toolbox_utxo_broadcast_failed",{error:o.error?.message});if(o.result.includes('"code":-26'))throw new R("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return o.result}throw s}}function he(e){return`https://api.blockchair.com/${Dn(e)}`}function At(e){switch(e){case C.Bitcoin:return 5;case C.Dogecoin:return 1e4;case C.Litecoin:return 1;case C.Zcash:return 1;default:return 2}}function Dn(e){switch(e){case C.BitcoinCash:return"bitcoin-cash";case C.Litecoin:return"litecoin";case C.Dash:return"dash";case C.Dogecoin:return"dogecoin";case C.Zcash:return"zcash";case C.Polkadot:return"polkadot";default:return"bitcoin"}}async function In(e){try{let{feePerKb:t}=await Re.get(`https://app.bitgo.com/api/v2/${e.toLowerCase()}/tx/fee`),n=t/1000;return Math.max(n,At(e))}catch{return At(e)}}async function Oe(e,t){let n=await Re.get(`${e}${t?`${e.includes("?")?"&":"?"}key=${t}`:""}`);if(!n||n.context.code!==200)throw new R("toolbox_utxo_api_error",{error:`Failed to query ${e}`});return n.data}async function Hn({chain:e,apiKey:t}){let n=await Oe(`${he(e)}/stats`,t);if(typeof n.best_block_height!=="number")throw new R("toolbox_utxo_api_error",{error:"Missing best_block_height in stats response"});return n.best_block_height}async function Ct({address:e,chain:t,apiKey:n}){if(!e)throw new R("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await Oe(`${he(t)}/dashboards/address/${e}?transaction_details=true`,n))[e]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function Rn({address:e,chain:t,apiKey:n}){return(await Ct({address:e,apiKey:n,chain:t}))?.address.balance||0}async function Xt({chain:e,apiKey:t,txHash:n}){if(!n)throw new R("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await Oe(`${he(e)}/raw/transaction/${n}`,t))?.[n]?.raw_transaction||""}catch(r){let s=r instanceof Error?r.message:String(r);return console.error(`Failed to fetch raw transaction: ${s}`),""}}var En=4294967294;async function Mn({chain:e,apiKey:t,txHash:n}){if(!n)throw new R("toolbox_utxo_invalid_params",{error:"TxHash is required"});let s=(await Oe(`${he(e)}/dashboards/transaction/${n}`,t))?.[n];if(!s)throw new R("toolbox_utxo_tx_not_found",{txHash:n});let{transaction:a,inputs:d,outputs:o}=s,p=d.map((u)=>u.spending_sequence),c=a.is_rbf===!0||p.some((u)=>u<En);return{blockId:a.block_id,confirmed:a.block_id!==-1,fee:a.fee,inputs:d,isRBF:c,outputs:o,sequences:p,size:a.size,txid:a.hash,weight:a.weight}}async function Nn({chain:e,address:t,apiKey:n,offset:r=0,limit:s=30}){return(await Oe(`${he(e)}/outputs?q=recipient(${t}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${s}&offset=${r}`,n)).map(({is_spent:p,script_hex:c,block_id:u,transaction_hash:i,index:l,value:h,spending_signature_hex:m})=>({hash:i,index:l,is_confirmed:u!==-1,is_spent:p,script_hex:c,txHex:m,value:h}))}function Zn(e){return e.reduce((t,n)=>t+n.value,0)}function Ot(e,t){let n=[...e].sort((r,s)=>s.value-r.value);if(t){let r=[],s=0;for(let a of n)if(r.push(a),s+=a.value,s>=t)break;return r}return n}async function Bt({chain:e,address:t,apiKey:n,targetValue:r,accumulativeValue:s=0,offset:a=0,limit:d=30}){if(!t)throw new R("toolbox_utxo_invalid_params",{error:"Address is required"});try{let o=await Nn({address:t,apiKey:n,chain:e,limit:d,offset:a,targetValue:r}),c=o.length<d,u=o.filter(({is_spent:y})=>!y),i=Zn(u),l=s+i,h=r&&l>=r;if(c||h)return Ot(u,r);let m=await Bt({accumulativeValue:l,address:t,apiKey:n,chain:e,limit:d,offset:a+d,targetValue:r}),f=[...u,...m];return Ot(f,r)}catch(o){let p=o instanceof Error?o.message:String(o);return console.error(`Failed to fetch unspent UTXOs: ${p}`),[]}}async function zn({address:e,chain:t,apiKey:n,fetchTxHex:r=!0,targetValue:s}){let a=await Bt({address:e,apiKey:n,chain:t,targetValue:s}),d=r?await Promise.all(a.map(({hash:o})=>Xt({apiKey:n,chain:t,txHash:o}))):[];return a.map(({hash:o,index:p,script_hex:c,value:u},i)=>({address:e,hash:o,index:p,txHex:r?d[i]:void 0,value:u,witnessUtxo:{script:Buffer.from(c,"hex"),value:u}}))}function A(e){let t=kn.get("apiKeys").blockchair||"";return Kn({condition:!t,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(n)=>Fn({chain:e,txHash:n}),getAddressData:(n)=>Ct({address:n,apiKey:t,chain:e}),getBalance:(n)=>Rn({address:n,apiKey:t,chain:e}),getBlockHeight:()=>Hn({apiKey:t,chain:e}),getRawTx:(n)=>Xt({apiKey:t,chain:e,txHash:n}),getSuggestedTxFee:()=>In(e),getTransactionDetails:(n)=>Mn({apiKey:t,chain:e,txHash:n}),getUtxos:(n)=>zn({...n,apiKey:t,chain:e})}}function Hs(e){return e}function Rs(){return function(t){switch(t){case C.Bitcoin:return le.bitcoin;case C.BitcoinCash:return le.bitcoinCash;case C.Dash:return le.dash;case C.Litecoin:return le.litecoin;case C.Dogecoin:return le.dogecoin;case C.Zcash:return le.zcash;default:throw new R("toolbox_utxo_not_supported",{chain:t})}}}import{sha256 as Yn}from"@noble/hashes/sha2.js";import{createBase58check as jn}from"@scure/base";import{SwapKitError as Kt}from"@swapkit/helpers";import{CashAddrType as Ee,decodeCashAddr as Wn,encodeCashAddr as Ln}from"@swapkit/utxo-signer";var $n={P2PKH:Ee.P2PKH,P2SH:Ee.P2SH},Vn={[Ee.P2PKH]:"P2PKH",[Ee.P2SH]:"P2SH"};function qn(e,t,n){return Ln({hash:n,prefix:e,type:$n[t]})}function Gn(e){let t=Wn(e),n=Vn[t.type];if(!n)throw Error(`Unknown CashAddr type: ${t.type}`);return{hash:t.hash,prefix:t.prefix,type:n}}var ot={decode:Gn,encode:qn};var Ft=jn(Yn);var Dt;((n)=>{n.Mainnet="mainnet";n.Testnet="testnet"})(Dt||={});var ne={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}},Jn={["p2pkh"]:"pkh",["p2sh"]:"sh"};function $s(e){return Ne(e)!==void 0}function Vs(e){return at(e).network}function G(e){let t=at(e);if(t.format==="legacy")return e;return tr(t)}function Me(e){let t=at(e);return nr(t)}function Ne(e){if(typeof e!=="string")return;let t=Qn(e)??er(e);return t&&{...t,scriptType:Jn[t.type]}}function at(e){let t=Ne(e);if(!t)throw new Kt("toolbox_utxo_invalid_address",{address:e});return t}function Qn(e){try{let t=Ft.decode(e);if(t.length!==21)throw new Kt("toolbox_utxo_invalid_address",{address:e});let n=t[0],r=Array.prototype.slice.call(t,1);switch(n){case ne.legacy.mainnet.p2pkh:return{format:"legacy",hash:r,network:"mainnet",type:"p2pkh"};case ne.legacy.mainnet.p2sh:return{format:"legacy",hash:r,network:"mainnet",type:"p2sh"};case ne.legacy.testnet.p2pkh:return{format:"legacy",hash:r,network:"testnet",type:"p2pkh"};case ne.legacy.testnet.p2sh:return{format:"legacy",hash:r,network:"testnet",type:"p2sh"};case ne.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:r,network:"mainnet",type:"p2pkh"};case ne.bitpay.mainnet.p2sh:return{format:"bitpay",hash:r,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function er(e){if(e.indexOf(":")!==-1)try{return kt(e)}catch{}else{let t=["bitcoincash","bchtest","bchreg"];for(let n of t)try{return kt(`${n}:${e}`)}catch{}}return}function kt(e){try{let{hash:t,prefix:n,type:r}=ot.decode(e);return{format:"cashaddr",hash:Array.prototype.slice.call(t,0),network:n==="bitcoincash"?"mainnet":"testnet",type:r==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function tr(e){let t=ne.legacy[e.network][e.type],n=Buffer.alloc(1+e.hash.length);return n[0]=t,n.set(e.hash,1),Ft.encode(n)}function nr(e){let t=e.network==="mainnet"?"bitcoincash":"bchtest",n=e.type==="p2pkh"?"P2PKH":"P2SH",r=new Uint8Array(e.hash);return ot.encode(t,n,r)}import{Chain as ae,SwapKitError as mt}from"@swapkit/helpers";import{SwapKitError as qe,UTXO_SCRIPT_TYPE_LIST as Ar,UTXO_SCRIPT_TYPES as $t,UTXOScriptType as Ge}from"@swapkit/helpers";import{Script as Or}from"@swapkit/utxo-signer";import{Chain as it}from"@swapkit/helpers";import{getAddressScriptType as sr,getTransparentZcashAddressType as or,getZcashAddressType as ar}from"@swapkit/utxo-signer";import{match as ir}from"ts-pattern";import{Chain as fe}from"@swapkit/helpers";import{NETWORKS as Te}from"@swapkit/utxo-signer";import{match as rr}from"ts-pattern";function U(e){return rr(e).with(fe.Bitcoin,()=>Te.bitcoin).with(fe.BitcoinCash,()=>Te.bitcoinCash).with(fe.Dash,()=>Te.dash).with(fe.Dogecoin,()=>Te.dogecoin).with(fe.Litecoin,()=>Te.litecoin).with(fe.Zcash,()=>Te.zcash).exhaustive()}function W(e){return e.replace(/(bchtest:|bitcoincash:)/,"")}function Se(e){if(typeof e!=="string")return null;let t=Ne(W(e));if(!t||t.network!=="mainnet")return null;return t.scriptType}var cr=["sprout","sapling","unified"];function dr(e){let t=or(e,U(it.Zcash));if(t)return t;let n=ar(e);return n&&cr.includes(n)?n:null}function Y({address:e,chain:t}){return ir(t).with(it.BitcoinCash,()=>Se(e)).with(it.Zcash,()=>dr(e)).otherwise(()=>sr(e,U(t)))}import{Chain as re,derivationPathToString as It,getPurposeFromPath as ur,getUTXOScriptTypeForPath as Ht,getUTXOScriptTypeForPurpose as Mt,resolveDerivationPath as pr,SwapKitError as Ce,UTXO_SCRIPT_TYPE_LIST as Rt,UTXO_SCRIPT_TYPES as me,UTXOChains as lr,UTXOScriptType as O,updateDerivationPath as hr,warnOnce as fr}from"@swapkit/helpers";import{CashAddrPrefix as Tr,CashAddrType as mr,encodeCashAddr as yr,OutScript as Nt,p2pkh as gr,p2sh as xr,p2tr as br,p2wpkh as Et}from"@swapkit/utxo-signer";var Ze=Object.freeze([O.P2PKH]),wr=Object.freeze({[re.Bitcoin]:Rt,[re.BitcoinCash]:Ze,[re.Dash]:Ze,[re.Dogecoin]:Ze,[re.Litecoin]:Rt,[re.Zcash]:Ze});function We(e){return wr[e]}function ct(e){return We(e).some((t)=>me[t].witness)}function ye(e,t){return We(e).includes(t)}function Le(e,t){if(ye(e,t))return t;throw new Ce("toolbox_utxo_unsupported_script_type",{chain:e,error:`${e} cannot encode ${t}; supported: ${We(e).join(", ")}`,scriptType:t,supported:We(e)})}var Zt=lr.filter((e)=>!ct(e));function Pr({purpose:e,scriptType:t}){let n=Mt(e);return n===void 0||n===t}function dt({chain:e,purpose:t,scriptType:n}){fr({condition:!Pr({purpose:t,scriptType:n}),id:`utxo_off_standard_encoding_${e}_${t}_${n}`,warning:`${e}: encoding m/${t}' keys as ${n}, not the ${Mt(t)} the path implies. No other wallet derives these addresses: move funds out of them, never receive into them.`})}function $e({chain:e,derivationPath:t,index:n=0,scriptType:r}){if(t){if(!r){let o=Ht(t);throw new Ce("toolbox_utxo_invalid_params",{chain:e,derivationPath:It(t),error:`scriptType is required alongside derivationPath: getUTXOScriptTypeForPath gives the standard one${o?` (${o})`:""}, or state another deliberately.`})}return Le(e,r),dt({chain:e,purpose:ur(t),scriptType:r}),{derivationPath:t,scriptType:r}}let s=pr({chain:e,index:n}),a=r?hr(s,{purpose:me[r].purpose}):s,d=r??Ht(a);if(!d)throw new Ce("toolbox_utxo_invalid_params",{chain:e,derivationPath:It(a),error:`${e}: the default derivation path has no standard script type`});return Le(e,d),{derivationPath:a,scriptType:d}}function Ur(e){return e.length===32?e:e.slice(1)}function ze(e,t){if(!e.address)throw new Ce("toolbox_utxo_invalid_address",{error:`Could not derive a ${t} address`});return e}var vr={[O.P2PKH]:(e,t)=>{let{address:n,script:r}=ze(gr(e,t),O.P2PKH);return{address:n,script:r}},[O.P2SH_P2WPKH]:(e,t)=>{let n=Et(e,t),{address:r,script:s}=ze(xr(n,t),O.P2SH_P2WPKH);return{address:r,redeemScript:n.script,script:s}},[O.P2WPKH]:(e,t)=>{let{address:n,script:r}=ze(Et(e,t),O.P2WPKH);return{address:n,script:r}},[O.P2TR]:(e,t)=>{let n=Ur(e),{address:r,script:s}=ze(br(n,void 0,t),O.P2TR);return{address:r,script:s,tapInternalKey:n}}};function Ve(e,t,n){return vr[e](t,n)}function ut(e,t){if(e!==re.BitcoinCash)return t.address;let n=Nt.decode(t.script);if(n.type!=="pkh")throw new Ce("toolbox_utxo_invalid_address",{chain:e,error:`Cannot encode ${n.type} as CashAddr`});return yr({hash:n.hash,prefix:Tr.MAINNET,type:mr.P2PKH}).replace(/^bitcoincash:/,"")}var _r=Object.freeze({pkh:O.P2PKH,sh:O.P2SH_P2WPKH,tr:O.P2TR,wpkh:O.P2WPKH}),zt=Object.freeze({pkh:me[O.P2PKH].outputSize,sh:me[O.P2SH_P2WPKH].outputSize,tr:me[O.P2TR].outputSize,wpkh:me[O.P2WPKH].outputSize,wsh:43});function Wt(e){return e in zt}function Lt(e){return Wt(e)?zt[e]:void 0}function Xe(e){return _r[e]}function pt(e){try{let{type:t}=Nt.decode(e);return Wt(t)?Xe(t):void 0}catch{return}}import{UTXOScriptType as oe}from"@swapkit/helpers";var ho=1000,ht=10,Sr=2,Cr=10;function E(e){let t=new Uint8Array(Buffer.from(e,"utf8"));return Or.encode(["RETURN",t])}function Vt(e){return Object.fromEntries(Ar.map((t)=>[t,$t[t][e]]))}var qt=Vt("inputSize"),lt=Vt("outputSize"),ft=(e)=>$t[e].witness,Ye=(e,t)=>{let n=Y({address:e,chain:t});if(!n)throw new qe("toolbox_utxo_invalid_address",{address:e,chain:t});let r=Xe(n);if(!r||!ye(t,r))throw new qe("toolbox_utxo_unsupported_script_type",{address:e,addressType:n,chain:t,error:"Address is valid but its script type is not one the SDK spends from"});return r},Xr=(e,t)=>{let n=Y({address:e,chain:t});if(!n)throw new qe("toolbox_utxo_invalid_address",{address:e,chain:t});let r=Lt(n);if(!r)throw new qe("toolbox_utxo_unsupported_script_type",{address:e,addressType:n,chain:t,error:"Address is valid but a transparent transaction cannot pay to it"});return r},ge=({chain:e,inputs:t,outputs:n,feeRate:r})=>{let s=t[0]?Be(t[0],e):Ge.P2PKH,a=r?t.filter((u)=>u.value>=qt["type"in u&&u.type?u.type:Ge.P2PKH]*Math.ceil(r)):t,d=0,o=0;for(let u of a)if(d+=se(u,e),!ft(Be(u,e)))o++;let p=n?.reduce((u,i)=>u+je(i,e),0)||lt[s],c=o<a.length;return ht+d+p+Tt(c,o)},Be=(e,t)=>{if("type"in e&&e.type)return e.type;if("address"in e&&e.address)return Ye(e.address,t);return Ge.P2PKH},se=(e,t)=>qt[Be(e,t)],Tt=(e,t)=>e?Math.ceil((Sr+t)/4):0,je=(e,t,n)=>{if(e?.script)return Cr+e.script.length+(e.script.length>=74?2:1);if(n)return lt[n];if("address"in e&&e.address)return Xr(e.address,t);return lt[Ge.P2PKH]};function ke(e){switch(e){case ae.Bitcoin:case ae.BitcoinCash:return 550;case ae.Dash:case ae.Litecoin:return 5500;case ae.Dogecoin:return 1e5;case ae.Zcash:return 546;default:throw new mt("toolbox_utxo_not_supported",{chain:e})}}function M({inputs:e,outputs:t,feeRate:n=1,chain:r=ae.Bitcoin,changeAddress:s="",sweep:a=!1}){let d=ke(r),o=e.filter((f)=>{let y=se(f,r)*n;return a?f.value>Math.max(y,d):y<=f.value});if(a){let f=Math.ceil(n*ge({chain:r,inputs:o,outputs:t})),y=o.reduce((X,V)=>X+V.value,0),b=y-f;if(b<=d)throw new mt("toolbox_sweep_amount_too_low",{available:y,dustThreshold:d,fee:f});let S=t.findIndex((X)=>("address"in X)&&X.address);if(S===-1)throw new mt("toolbox_utxo_invalid_params",{error:"Sweep requires a recipient output"});return{fee:f,inputs:o,outputs:t.map((X,V)=>V===S?{...X,value:b}:X)}}let p=ht+t.reduce((f,y)=>f+je(y,r),0),c=t.reduce((f,y)=>f+y.value,0),u=0,i=0,l=!1,h=0,m=[];for(let f of o){if(u+=se(f,r),ft(Be(f,r)))l=!0;else i++;h+=f.value,m.push(f);let y=(p+u+Tt(l,i))*n,b=y+c;if(h<b)continue;let S=h-b,X=n*je({address:s,value:0},r);if(S>X){let V=X+y,Pe=h-(c+Math.ceil(V));if(Pe>Math.max(se({value:0},r)*n,ke(r)))return{fee:Math.ceil(V),inputs:m,outputs:t.concat({address:s,value:Pe})}}return{fee:Math.ceil(y),inputs:m,outputs:t}}return{fee:Math.ceil(n*ge({chain:r,inputs:e,outputs:t}))}}import{Chain as we,SwapKitError as Bs}from"@swapkit/helpers";import{hex as un}from"@scure/base";import{Chain as Yr,derivationPathToString as jr,FeeOption as Jr,resolveDerivationPath as Qr,SwapKitError as L}from"@swapkit/helpers";import{BCHSigHash as es,CashAddrPrefix as pn,CashAddrType as ln,encodeCashAddr as hn,NETWORKS as ts,p2pkh as fn,Transaction as Tn}from"@swapkit/utxo-signer";import{secp256k1 as Br}from"@noble/curves/secp256k1.js";import{hex as j}from"@scure/base";import{HDKey as Jt}from"@scure/bip32";import{mnemonicToSeedSync as xt}from"@scure/bip39";import{AssetValue as yt,applyFeeMultiplier as Gt,Chain as Fe,derivationPathToString as Ke,FeeOption as N,NetworkDerivationPath as kr,SwapKitError as P,SwapKitNumber as Kr,UTXO_SCRIPT_TYPES as Fr,warnOnce as Dr}from"@swapkit/helpers";import{BCHSigHash as Qt,RBF_SEQUENCE as Ir,SigHash as Yt,Transaction as Je,utils as Hr,WIF as en}from"@swapkit/utxo-signer";var Qe=[Fe.Bitcoin];function tn({address:e,chain:t}){return Y({address:e,chain:t})!==null}function Rr({phrase:e,derivationPath:t,network:n,seed:r}){let s=r??xt(e),d=Jt.fromMasterSeed(s,n.bip32).derive(t);if(!d.privateKey)throw new P("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return d.privateKey}function gt(e){return Br.getPublicKey(e,!0)}function De({publicKey:e,chain:t,network:n,scriptType:r}){return ut(t,Ve(r,e,n))}function xe({phrase:e,derivationPath:t,chain:n,wif:r,seed:s}){let a=U(n);if(r){let c=en(a).decode(r),u=gt(c);return{privateKey:c,publicKey:u}}if(!e)throw new P("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let d=t||Ke(kr[n]),o=Rr({derivationPath:d,network:a,phrase:e,seed:s}),p=gt(o);return{privateKey:o,publicKey:p}}function Er(e,t){return en(U(t)).encode(e)}function Mr({phrase:e,derivationPath:t,chain:n,seed:r}){let s=t.split("/");if(s.length<4)throw new P("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${s.length}): ${t}`});let a=U(n),d=r??xt(e),o=Jt.fromMasterSeed(d,a.bip32),p=s.slice(0,4).join("/");return o.derive(p)}function Nr(e,t){if(!e||!Fr[e].witness)return!1;return e!==oe.P2SH_P2WPKH||!!t}function nn({chain:e,script:t,publicKey:n,network:r}){let s=pt(t);if(s!==oe.P2SH_P2WPKH&&s!==oe.P2TR)return{};if(!ye(e,s))return{};let a=Ve(s,n,r);if(Hr.compareBytes(a.script,t)!==0)return{};return s===oe.P2TR?{tapInternalKey:a.tapInternalKey}:{redeemScript:a.redeemScript}}function Zr(e,t,n){if(!n)return!1;let r=Y({address:e,chain:t}),s=r?Xe(r):void 0;if(!s||!ye(t,s))return!1;let a=ut(t,Ve(s,n,U(t)));return t===Fe.BitcoinCash?W(a)===W(e):a===e}function zr(e){return e.witnessUtxo?.script??e.nonWitnessUtxo?.outputs[e.index??0]?.script}function bt({chain:e,tx:t,publicKey:n,network:r,indexes:s}){let a=s??Array.from({length:t.inputsLength},(o,p)=>p),d=[];for(let o of a){let p=t.getInput(o),c=zr(p);if(!c)continue;let{redeemScript:u,tapInternalKey:i}=nn({chain:e,network:r,publicKey:n,script:c}),l={index:o};if(u&&!p.redeemScript)l.redeemScript=u;if(i&&!p.tapInternalKey)l.tapInternalKey=i;if(l.redeemScript||l.tapInternalKey)d.push(l)}return d}function ie({inputs:e,outputs:t,chain:n,tx:r,sender:s,compiledMemo:a,enableRBF:d=!1}){let o=U(n),p=ct(n),c=d?Ir:void 0,u=new Set;for(let i of e){let l=`${i.hash}:${i.index}`;if(u.has(l))throw new P("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});u.add(l);let h=typeof i.hash==="string"?j.decode(i.hash):i.hash,m=i.witnessUtxo?pt(i.witnessUtxo.script):void 0,f=i.publicKey&&i.witnessUtxo?nn({chain:n,network:o,publicKey:i.publicKey,script:i.witnessUtxo.script}):{};if(p&&i.witnessUtxo&&Nr(m,f.redeemScript))r.addInput({...f,index:i.index,sequence:c,txid:h,witnessUtxo:{amount:BigInt(i.witnessUtxo.value),script:i.witnessUtxo.script}});else if(i.txHex)r.addInput({...f,index:i.index,nonWitnessUtxo:j.decode(i.txHex),sequence:c,txid:h,...n===Fe.BitcoinCash?{sighashType:Qt.ALL}:{}});else throw new P("toolbox_utxo_invalid_params",{error:`Input ${l} cannot be signed from its witnessUtxo alone: it needs its previous transaction (txHex), or — if it is a nested-segwit output — the public key that controls it, which its redeemScript derives from`})}for(let i of t){let l="address"in i&&i.address?i.address:s;if(n===Fe.BitcoinCash)l=G(l);if(i.script)if(a)r.addOutput({amount:0n,script:a});else throw new P("toolbox_utxo_invalid_params",{error:"An output carrying a script needs the compiled memo it carries"});else r.addOutputAddress(l,BigInt(i.value),o)}return{inputs:e,tx:r}}async function be(e){let t=await A(e).getSuggestedTxFee();return{[N.Average]:t,[N.Fast]:Gt(t,N.Fast),[N.Fastest]:Gt(t,N.Fastest)}}async function rn({assetValue:e,recipient:t,memo:n,sender:r,sweep:s,fetchTxHex:a=!1,publicKey:d},o,{forEstimateOnly:p=!1}={}){let c=e.chain,u=Ye(r,c),i=u===oe.P2PKH||u===oe.P2SH_P2WPKH&&!Zr(r,c,d),l=a||!p&&i,h=e.getBaseValue("number"),m=s?void 0:o??(await be(c))[N.Fastest],f=s||m===void 0?void 0:Math.ceil(h+m*5000);return{inputs:await A(c).getUtxos({address:r,fetchTxHex:l,targetValue:f}),outputs:[{address:t,value:s?0:h},...n?[{address:"",script:E(n),value:0}]:[]]}}async function sn({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s,fetchTxHex:a=!1,enableRBF:d=!1,sweep:o,publicKey:p}){let c=e.chain,u=n?E(n):null,i=await rn({assetValue:e,fetchTxHex:a,memo:n,publicKey:p,recipient:t,sender:s,sweep:o},r),{inputs:l,outputs:h}=M({...i,chain:c,changeAddress:s,feeRate:r,sweep:o});if(!(l&&h))throw new P("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let m=p?l.map((S)=>({...S,publicKey:p})):l,f=new Je({allowUnknownOutputs:!!u,version:1}),{inputs:y,tx:b}=ie({chain:c,compiledMemo:u,enableRBF:d,inputs:m,outputs:h,sender:s,tx:f});return{inputs:y,tx:b,utxos:i.inputs}}async function on({assetValue:e,feeOptionKey:t=N.Fast,feeRate:n,memo:r,sender:s,recipient:a,sweep:d}){let o=e.chain,p,c;if(n!==void 0)p=n,c=Math.floor(n);else{let i=await be(o);p=i[N.Fastest],c=i[t]}let u=await rn({assetValue:e,memo:r,recipient:a,sender:s,sweep:d},p,{forEstimateOnly:!0});return M({...u,chain:o,changeAddress:s,feeRate:c,sweep:d})}function Wr(e){return async function({from:n,memo:r,feeRate:s,feeOptionKey:a=N.Fast,recipient:d=n,recipients:o=1}){let p=s??(await be(e))[a],u=(await A(e).getUtxos({address:n,fetchTxHex:!1})).filter((f)=>f.value>Math.max(ke(e),se(f,e)*p));if(!u.length)return yt.from({chain:e});let i=typeof o==="number"?Math.max(o,1):o.length,l=typeof o==="number"||i===0?Array.from({length:i||1},()=>({address:d,value:0})):[...o];if(r)l.push({address:n,script:E(r),value:0});let{outputs:h}=M({chain:e,feeRate:p,inputs:u,outputs:l,sweep:!0}),m=h?.[0]?.value??0;return yt.from({chain:e,value:BigInt(m)})}}function Lr(e){return async function(n){let{fee:r}=await on(n);return yt.from({chain:e,value:Kr.fromBigInt(BigInt(r),8).getValue("string")})}}function $r({chain:e,phrase:t,derivationPath:n,scriptType:r,seed:s}){let a=U(e),{privateKey:d,publicKey:o}=xe({chain:e,derivationPath:n,phrase:t,seed:s}),p=an(e);return{getAddress:()=>De({chain:e,network:a,publicKey:o,scriptType:r}),privateKey:d,publicKey:o,signTransaction:(c)=>{for(let{index:u,...i}of bt({chain:e,network:a,publicKey:o,tx:c}))c.updateInput(u,i);return c.sign(d,p),c}}}function an(e){return e===Fe.BitcoinCash?[Qt.ALL]:[Yt.ALL,Yt.DEFAULT]}function Vr(e,t,n){return async function({memo:s,recipient:a,feeOptionKey:d,feeRate:o,assetValue:p,enableRBF:c=!1,sweep:u}){let i=await t?.getAddress();if(!(t&&i))throw new P("toolbox_utxo_no_signer");if(!a)throw new P("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});Dr({condition:c&&!Qe.includes(e),id:`rbf_not_supported_${e}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${e}. Transaction will be created without RBF signaling.`});let l=c&&Qe.includes(e),h=o||(await be(e))[d||N.Fast],{tx:m}=await sn({assetValue:p,enableRBF:l,feeRate:h,memo:s,publicKey:n,recipient:a,sender:i,sweep:u}),f=await t.signTransaction(m);return f.finalize(),A(e).broadcastTx(j.encode(f.extract()))}}function cn(e){return(t)=>tn({address:t,chain:e})}function dn(e,{scriptType:t}){let n=U(e);return function(s){if(!s)throw new P("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return De({chain:e,network:n,publicKey:s.publicKey,scriptType:t})}}function qr(e){let t=e?.publicKey;if(t===void 0)return;if(t instanceof Uint8Array&&t.length===33)return t;throw new P("toolbox_utxo_invalid_params",{error:"signer.publicKey must be a 33-byte compressed public key (Uint8Array)"})}function ce(e){let{chain:t}=e,n=e.phrase?e:void 0;if(!n&&"derivationPath"in e&&e.derivationPath!==void 0)throw new P("toolbox_utxo_invalid_params",{error:"derivationPath needs a phrase; a toolbox built around a signer uses the signer's addresses"});let r=n?.phrase,s=n?.index??0,a=r?xt(r):void 0,{derivationPath:d,scriptType:o}=$e({chain:t,derivationPath:n?.derivationPath,index:s,scriptType:e.scriptType}),p=Ke(d),c=r?$r({chain:t,derivationPath:p,phrase:r,scriptType:o,seed:a}):void 0,u=n?void 0:e.signer,i=c||u,l=r?xe({chain:t,derivationPath:p,phrase:r,seed:a}):void 0,h=l?.publicKey??qr(u);function m(){if(i)return i.getAddress();return Promise.resolve(void 0)}function f(T){if(!r)return;let g=te({accountIndex:T,chain:t,derivationPath:d});return Mr({chain:t,derivationPath:Ke(g),phrase:r,seed:a})}let y=f();function b(){if(!y)return;return y.publicExtendedKey}function S({accountIndex:T}={}){let g=T===void 0?y:f(T);if(!g)return;let w=te({accountIndex:T,chain:t,derivationPath:d});return{accountIndex:pe(w),path:Ke(w),xpub:g.publicExtendedKey}}function X({accountIndex:T,index:g,change:w=!1}){let _=T===void 0?y:f(T);if(!_)return;let x=Ae({accountIndex:T,chain:t,change:w,derivationPath:d,index:g}),K=U(t),I=_.deriveChild(Number(w)).deriveChild(g);if(!I.publicKey)throw new P("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let B=De({chain:t,network:K,publicKey:I.publicKey,scriptType:o}),F=j.encode(I.publicKey);return{accountIndex:pe(x),address:B,change:w,index:g,path:Ke(x),pubkey:F}}async function V(T){if(!Qe.includes(t))return{reason:`RBF is not supported on ${t}`,supported:!1};let g=await A(t).getTransactionDetails(T);return{canReplace:g.isRBF&&!g.confirmed,confirmed:g.confirmed,enabled:g.isRBF,fee:g.fee,sequences:g.sequences,supported:!0}}async function Pe({txid:T,newFeeRate:g,recipient:w,memo:_}){if(!Qe.includes(t))throw new P("toolbox_utxo_rbf_not_supported",{chain:t});let x=await A(t).getTransactionDetails(T);if(!x.isRBF)throw new P("toolbox_utxo_tx_not_replaceable",{txid:T});if(x.confirmed)throw new P("toolbox_utxo_tx_already_confirmed",{blockId:x.blockId,txid:T});let K=x.inputs.reduce((v,D)=>v+D.value,0),B=x.outputs.find((v)=>v.recipient===w)?.value||0;if(B===0)throw new P("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let F=await Promise.all(x.inputs.map(async(v)=>{let D=await A(t).getRawTx(v.transaction_hash),k=Je.fromRaw(j.decode(D),{allowUnknownOutputs:!0,disableScriptCheck:!0}).getOutput(v.index);return{address:v.recipient,hash:v.transaction_hash,index:v.index,publicKey:h,txHex:D,value:v.value,witnessUtxo:k.script&&k.amount!==void 0?{script:Buffer.from(k.script),value:Number(k.amount)}:void 0}})),H=_?E(_):null,Q=K-B-x.fee,Ue=await m(),ue=[];if(H)ue.push({address:"",script:H,value:0});if(Q>ke(t)&&Ue)ue.push({address:Ue,value:Q});let He=ge({chain:t,inputs:F.map((v)=>({...v,type:Ye(v.address,t)})),outputs:[{address:w,value:B},...ue]}),q=Math.ceil(He*g);if(q<=x.fee)throw new P("toolbox_utxo_rbf_fee_too_low",{newFee:q,originalFee:x.fee});let ve=q-x.fee,ee=B-ve;if(ee<=0)throw new P("toolbox_utxo_rbf_insufficient_change");let _e=new Je({allowUnknownOutputs:!!H,version:1}),nt=[{address:w,value:ee},...ue];return ie({chain:t,compiledMemo:H,inputs:F,outputs:nt,sender:Ue||w,tx:_e}),{feeDelta:ve,newFee:q,originalFee:x.fee,tx:_e}}async function vn({txid:T,newFeeRate:g,recipient:w,memo:_}){let{tx:x,originalFee:K,newFee:I}=await Pe({memo:_,newFeeRate:g,recipient:w,txid:T}),B=await tt(x);B.finalize();let F=await A(t).broadcastTx(j.encode(B.extract()));return{newFee:I,originalFee:K,txid:F}}function vt({accountIndex:T,index:g,change:w=!1}){z("index",g);let _=T===void 0?y:f(T);if(!_)return;return _.deriveChild(Number(w)).deriveChild(g).privateKey||void 0}function _t({tx:T,inputDerivations:g}){if(!y)throw new P("toolbox_utxo_no_signer");let w=an(t),_=U(t);for(let x=0;x<g.length;x++){let K=g[x];if(!K)continue;let{derivationIndex:I,isChange:B}=K,F=vt({change:B,index:I});if(!F)throw new P("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${x} at index ${I}`});for(let{index:H,...Q}of bt({chain:t,indexes:[x],network:_,publicKey:gt(F),tx:T}))T.updateInput(H,Q);T.signIdx(F,x,w)}return T}async function _n({utxos:T,recipient:g,assetValue:w,memo:_,feeRate:x,feeOptionKey:K,changeAddress:I,sweep:B}){if(B)throw new P("toolbox_utxo_invalid_params",{error:"Sweep is not supported for transfers from multiple addresses"});if(!y)throw new P("toolbox_utxo_no_signer");let F=x||(await be(t))[K||N.Fast],H=_?E(_):null,Q=[{address:g,value:w.getBaseValue("number")}];if(H)Q.push({address:"",script:H,value:0});let Ue=T.map(({address:v,hash:D,index:k,value:rt,txHex:Sn,witnessUtxo:st})=>({address:v,hash:D,index:k,txHex:Sn,value:rt,witnessUtxo:st?{script:st.script,value:st.value}:void 0})),ue=T[0]?.address,He=I||await m()||ue||g,{inputs:q,outputs:ve}=M({chain:t,changeAddress:He,feeRate:F,inputs:Ue,outputs:Q});if(!(q&&ve))throw new P("toolbox_utxo_insufficient_balance",{assetValue:w,sender:"multiple addresses"});let ee=new Je({allowUnknownOutputs:!!H,version:1}),_e=q.map((v)=>{let D=T.find((k)=>k.hash===v.hash&&k.index===v.index);return D?{derivationIndex:D.derivationIndex,isChange:D.isChange}:{derivationIndex:0,isChange:!1}}),nt=q.map((v,D)=>{let k=_e[D],rt=k?y.deriveChild(Number(k.isChange)).deriveChild(k.derivationIndex).publicKey:null;return{...v,publicKey:rt??void 0}});return ie({chain:t,compiledMemo:H,inputs:nt,outputs:ve,sender:He,tx:ee}),_t({inputDerivations:_e,tx:ee}),ee.finalize(),A(t).broadcastTx(j.encode(ee.extract()))}function An({address:T,gapLimit:g=20}){if(!y)return;for(let w=0;w<g;w++){let _=X({change:!1,index:w}),x=X({change:!0,index:w}),K=_?.address===T?!1:x?.address===T;if(_?.address===T||x?.address===T)return{change:K,index:w}}return}function tt(T){if(!i)throw new P("toolbox_utxo_no_signer");return i.signTransaction(T)}async function On(T){let g=await tt(T);return g.finalize(),await A(t).broadcastTx(j.encode(g.extract()))}return{accumulative:M,broadcastTx:(T)=>A(t).broadcastTx(T),bumpFee:vn,calculateTxSize:(T)=>ge({...T,chain:t}),createKeysForPath:(T)=>xe({...T,chain:t}),createReplacementTransaction:Pe,createTransaction:(T)=>sn({publicKey:h,...T}),deriveAddressAtIndex:X,derivePrivateKeyAtIndex:vt,estimateMaxSendableAmount:Wr(t),estimateTransactionFee:Lr(t),getAddress:m,getAddressFromKeys:dn(t,{scriptType:o}),getAddressType:(T)=>Y({address:T,chain:t}),getBalance:jt(t),getExtendedPublicKey:b,getExtendedPublicKeyInfo:S,getFeeRates:()=>be(t),getInputsOutputsFee:on,getNetworkForChain:()=>U(t),getPrivateKeyFromMnemonic:(T)=>Er(xe({...T,chain:t}).privateKey,t),isRBFEnabled:V,keys:l,resolveDerivationIndex:An,scriptType:o,signAndBroadcastTransaction:On,signTransaction:tt,signTransactionWithMultipleKeys:_t,transfer:Vr(t,i,h),transferFromMultipleAddresses:_n,validateAddress:cn(t)}}import{getZcashAddressType as Gr,validateZcashAddress as wt}from"@swapkit/utxo-signer";function Ie(e){return Se(e)!==null}var Z=Yr.BitcoinCash;function et(e){return W(Me(e))}function ns(e){let t=U(Z);function n(s){return s.sign(e.privateKey,[es.ALL]),s}function r(){let s=fn(e.publicKey,t);if(!s.hash)throw new L("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let a=hn({hash:s.hash,prefix:pn.MAINNET,type:ln.P2PKH});return Promise.resolve(a.replace(/^bitcoincash:/,""))}return{getAddress:r,signTransaction:n}}function mn(e={}){let t="phrase"in e?e.phrase:void 0,n="index"in e?e.index||0:0,r="derivationPath"in e?e.derivationPath:void 0,s=Qr({chain:Z,derivationPath:r,index:n}),a=jr(s),d=t?xe({chain:Z,derivationPath:a,phrase:t}):void 0,o=d?ns(d):("signer"in e)?e.signer:void 0;function p(){return Promise.resolve(o?.getAddress())}let c="scriptType"in e?e.scriptType:void 0,{getBalance:u,getFeeRates:i,broadcastTx:l,...h}=ce(t?{chain:Z,index:n,phrase:t,...r?{derivationPath:r,scriptType:c}:{scriptType:c}}:{chain:Z,scriptType:c});function m(b,S=!0){return u(W(Me(b)))}function f(b){if(!o)throw new L("toolbox_utxo_no_signer");return o.signTransaction(b)}async function y(b){let S=await f(b);return S.finalize(),await l(un.encode(S.extract()))}return{...h,broadcastTx:l,buildTx:ss,createTransaction:yn,getAddress:p,getAddressFromKeys:os,getBalance:m,getFeeRates:i,signAndBroadcastTransaction:y,signTransaction:f,stripPrefix:W,stripToCashAddress:et,transfer:rs({broadcastTx:l,getFeeRates:i,signer:o}),validateAddress:Ie}}async function yn({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s,sweep:a}){if(!Ie(t))throw new L("toolbox_utxo_invalid_address",{address:t});let d=Math.ceil(e.getBaseValue("number")+r*7500),o=await A(Z).getUtxos({address:et(s),fetchTxHex:!0,targetValue:a?void 0:d}),p=n?E(n):null,c=[],u=G(t);if(c.push({address:u,value:a?0:e.getBaseValue("number")}),p)c.push({script:p,value:0});let{inputs:i,outputs:l}=M({chain:Z,feeRate:r,inputs:o,outputs:c,sweep:a});if(!(i&&l))throw new L("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let h=new Tn({allowUnknownOutputs:!!p,version:1}),m=G(s),{inputs:f,tx:y}=ie({chain:Z,compiledMemo:p,inputs:i,outputs:l.map((b)=>("address"in b)&&b.address?{...b,address:G(b.address)}:b),sender:m,tx:h});return{inputs:f,tx:y,utxos:i}}function rs({broadcastTx:e,getFeeRates:t,signer:n}){return async function({recipient:s,assetValue:a,feeOptionKey:d=Jr.Fast,sweep:o,...p}){let c=await n?.getAddress();if(!(n&&c))throw new L("toolbox_utxo_no_signer");if(!s)throw new L("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let u=p.feeRate||(await t())[d],{tx:i}=await yn({...p,assetValue:a,feeRate:u,recipient:s,sender:c,sweep:o}),l=await n.signTransaction(i);return l.finalize(),e(un.encode(l.extract()))}}async function ss({assetValue:e,recipient:t,memo:n,feeRate:r,sender:s}){let a=Me(t);if(!Ie(a))throw new L("toolbox_utxo_invalid_address",{address:a});let d=Math.ceil(e.getBaseValue("number")+r*7500),o=await A(Z).getUtxos({address:et(s),fetchTxHex:!0,targetValue:d}),p=Number(r.toFixed(0)),c=n?E(n):null,u=[];if(u.push({address:G(t),value:e.getBaseValue("number")}),c)u.push({script:c,value:0});let{inputs:i,outputs:l}=M({chain:Z,feeRate:p,inputs:o,outputs:u});if(!(i&&l))throw new L("toolbox_utxo_insufficient_balance",{assetValue:e,sender:s});let h=new Tn({allowUnknownOutputs:!!c,version:1}),{inputs:m,tx:f}=ie({chain:Z,compiledMemo:c,inputs:i,outputs:l,sender:G(s),tx:h});return{inputs:m,tx:f,utxos:o}}function os(e){let t=ts.bitcoinCash,n=fn(e.publicKey,t);if(!n.hash)throw new L("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return hn({hash:n.hash,prefix:pn.MAINNET,type:ln.P2PKH}).replace(/^bitcoincash:/,"")}import{createBase58check as as,hex as is}from"@scure/base";import{HDKey as bn}from"@scure/bip32";import{mnemonicToSeedSync as wn}from"@scure/bip39";import{Chain as J,derivationPathToString as cs,FeeOption as ds,SwapKitError as de}from"@swapkit/helpers";import{Address as us,createZcashTransaction as ps,getZcashConsensusBranchId as ls,isTransparentZcashAddress as gn,OutScript as hs,PCZT as fs,utils as Pn,WIF as Ts,ZcashConsensusBranchId as ms,ZcashPSBT as ys,ZcashSigHash as Pt,ZcashVersionGroupId as gs}from"@swapkit/utxo-signer";import{match as xs,P as Ut}from"ts-pattern";var bs=as(Pn.sha256);function ws(e){return bs.encode(e)}function Ps({phrase:e,derivationPath:t}){let n=wn(e),s=bn.fromMasterSeed(n).derive(t);if(!s.privateKey||!s.publicKey)throw new de("toolbox_utxo_invalid_params");let{privateKey:a,publicKey:d}=s,o=Pn.hash160(d),p=new Uint8Array([28,184]),c=new Uint8Array(p.length+o.length);c.set(p,0),c.set(o,p.length);let u=ws(c);return{getAddress:()=>Promise.resolve(u),signTransaction:(i)=>{if(i instanceof ys){let l=i.toPCZT();return l.signAllInputs(a,d,Pt.ALL),l.finalizeAllInputs(),Promise.resolve(l.extract())}if(i instanceof fs)return i.signAllInputs(a,d,Pt.ALL),i.finalizeAllInputs(),Promise.resolve(i.extract());return i.signAllInputs(a,d,Pt.ALL),Promise.resolve(i)}}}function Us({inputs:e,outputs:t,tx:n,sender:r,compiledMemo:s}){let a=U(J.Zcash);for(let d of e){let o=us(a).decode(r),p=hs.encode(o);n.addInput({index:d.index,script:p,sequence:4294967295,txid:is.decode(d.hash),value:BigInt(d.value)})}for(let d of t){let o="address"in d&&d.address?d.address:r,p=d.script;if(p&&!s)continue;if(p&&s)n.addOutput({amount:0n,script:s});else n.addOutputAddress(o,BigInt(d.value),a)}return{inputs:e,tx:n}}async function vs(){try{let e=await A(J.Zcash).getBlockHeight();return ls(e+1)}catch{return ms.IRONWOOD}}async function xn(e){let{assetValue:t,recipient:n,memo:r,feeRate:s,sender:a,fetchTxHex:d,sweep:o}=e,p=U(J.Zcash);if(!gn(a,p))throw new de("toolbox_utxo_invalid_address",{address:a});if(!gn(n,p))throw new de("toolbox_utxo_invalid_address",{address:n,error:"Zcash transaction creation currently supports transparent addresses only"});let c=r?E(r):null,u=await A(J.Zcash).getUtxos({address:a,fetchTxHex:d!==!1}),i=[{address:n,value:o?0:Number(t.getBaseValue("string"))},...c?[{script:c,value:0}]:[]],{inputs:l,outputs:h}=M({chain:J.Zcash,changeAddress:a,feeRate:s,inputs:u,outputs:i,sweep:o});if(!(l&&h))throw new de("toolbox_utxo_insufficient_balance",{assetValue:t,sender:a});let m=ps({consensusBranchId:await vs(),expiryHeight:0,lockTime:0,version:4,versionGroupId:gs.SAPLING}),{tx:f,inputs:y}=Us({compiledMemo:c,inputs:l,outputs:h,sender:a,tx:m});return{inputs:y,outputs:h,tx:f}}function Un(e={}){let t="scriptType"in e?e.scriptType:void 0,n=xs(e).with({signer:Ut.not(Ut.nullish)},({signer:c})=>c).with({phrase:Ut.string},({phrase:c,derivationPath:u,index:i=0})=>{let{derivationPath:l}=$e({chain:J.Zcash,derivationPath:u,index:i,scriptType:t}),h=cs(l);return Ps({derivationPath:h,phrase:c})}).otherwise(()=>{return}),r=ce({chain:J.Zcash,scriptType:t,signer:n});async function s(c){if(!n)throw new de("toolbox_utxo_no_signer");return await n.signTransaction(c)}async function a(c){let u=await s(c);return r.broadcastTx(u.toHex())}async function d({recipient:c,assetValue:u,feeOptionKey:i=ds.Fast,sweep:l,...h}){let m=await n?.getAddress();if(!(n&&m))throw new de("toolbox_utxo_no_signer");let f=h.feeRate||(await r.getFeeRates())[i],{tx:y}=await xn({...h,assetValue:u,feeRate:f,recipient:c,sender:m,sweep:l}),S=(await n.signTransaction(y)).toHex();return r.broadcastTx(S)}function o({phrase:c,derivationPath:u="m/44'/133'/0'/0/0"}){let i=wn(c),h=bn.fromMasterSeed(i).derive(u);if(!h.privateKey||!h.publicKey)throw new de("toolbox_utxo_invalid_params");return{privateKey:h.privateKey,publicKey:h.publicKey}}function p({phrase:c,derivationPath:u="m/44'/133'/0'/0/0"}){let i=o({derivationPath:u,phrase:c}),l=U(J.Zcash);return Ts(l).encode(i.privateKey)}return{...r,createKeysForPath:o,createTransaction:xn,getPrivateKeyFromMnemonic:p,signAndBroadcastTransaction:a,signTransaction:s,transfer:d,validateAddress:wt}}import{hex as _s}from"@scure/base";import{HDKey as As}from"@scure/bip32";import{derivationPathToString as Os,NetworkDerivationPath as Ss,updateDerivationPath as Cs}from"@swapkit/helpers";function Xs({xpub:e,chain:t,count:n,startIndex:r=0,accountIndex:s,purpose:a,scriptType:d}){if(z("count",n),n<1)throw RangeError("count must be at least 1");z("startIndex",r),Le(t,d),dt({chain:t,purpose:a,scriptType:d});let o=U(t),p=As.fromExtendedKey(e,o.bip32),c=a===void 0?void 0:Cs(Ss[t],{purpose:a}),u=te({accountIndex:s,chain:t,derivationPath:c}),i=pe(u),l=[];for(let h of[!1,!0]){let m=p.deriveChild(Number(h));for(let f=0;f<n;f++){let y=r+f,b=m.deriveChild(y);if(!b.publicKey)continue;let S=Ae({accountIndex:s,chain:t,change:h,derivationPath:c,index:y});l.push({accountIndex:i,address:De({chain:t,network:o,publicKey:b.publicKey,scriptType:d}),change:h,index:y,pubkey:_s.encode(b.publicKey),...a===void 0?{}:{path:Os(S)}})}}return l}function ga(e,t){switch(e){case we.BitcoinCash:return mn(t||{});case we.Zcash:return Un(t);case we.Bitcoin:case we.Dogecoin:case we.Litecoin:case we.Dash:return ce({chain:e,...t});default:throw new Bs("toolbox_utxo_not_supported",{chain:e})}}export{qt as InputSizes,ho as MIN_TX_FEE,Cr as OP_RETURN_OVERHEAD,lt as OutputSizes,Sr as SEGWIT_MARKER_FLAG_WEIGHT,ht as TX_OVERHEAD,oe as UTXOScriptType,Dt as UtxoNetwork,M as accumulative,ie as addInputsAndOutputs,dn as addressFromKeysGetter,z as assertDerivationIndex,ge as calculateTxSize,E as compileMemo,mn as createBCHToolbox,Hs as createCustomUtxoApi,Xn as createHDWalletHelpers,ce as createUTXOToolbox,Un as createZcashToolbox,Xs as deriveAddressesFromXpub,Vs as detectAddressNetwork,Se as getBchAddressType,ke as getDustThreshold,Be as getInputScriptType,se as getInputSize,bt as getMissingSpendingMetadata,U as getNetworkForChain,je as getOutputSize,Xr as getOutputSizeForAddress,Ye as getScriptTypeForAddress,pe as getUTXOAccountIndexFromPath,te as getUTXOAccountPath,Ae as getUTXOAddressPath,cn as getUTXOAddressValidator,Y as getUtxoAddressType,A as getUtxoApi,Rs as getUtxoNetwork,ga as getUtxoToolbox,Tt as getWitnessOverhead,Gr as getZcashAddressType,ft as isSegwitScriptType,$s as isValidAddress,Zt as nonSegwitChains,W as stripPrefix,et as stripToCashAddress,Me as toCashAddress,G as toLegacyAddress,Ne as tryDecodeAddress,Ie as validateBchAddress,tn as validateUtxoAddress,wt as validateZcashAddress};
@@ -0,0 +1,15 @@
1
+ export type CardanoVkeyWitness = {
2
+ publicKey: Uint8Array;
3
+ signature: Uint8Array;
4
+ };
5
+ export declare function decodeCardanoTransaction(txHex: string): Promise<{
6
+ body: Map<number, unknown>;
7
+ bodyHash: string;
8
+ }>;
9
+ export declare function addCardanoVkeyWitnesses(txHex: string, witnesses: CardanoVkeyWitness[]): Promise<string>;
10
+ export declare function decodeCardanoWitnessSet(witnessSetHex: string): Promise<{
11
+ publicKey: Uint8Array<ArrayBuffer>;
12
+ signature: Uint8Array<ArrayBuffer>;
13
+ }[]>;
14
+ export declare function getCardanoAddressFromBytes(addressBytes: Uint8Array): Promise<string>;
15
+ export declare function getCardanoPublicKeyHash(publicKey: Uint8Array): Promise<Buffer<ArrayBufferLike>>;
@@ -1,2 +1,3 @@
1
+ export * from "./helpers";
1
2
  export * from "./toolbox";
2
3
  export * from "./types";
@@ -27,7 +27,7 @@ export type MultisigTx = {
27
27
  };
28
28
  /**
29
29
  * Account data returned by signers (matches the cosmjs `AccountData` shape that
30
- * external wallet adapters — Keplr, Leap, Ledger — already produce).
30
+ * external wallet adapters such as Keplr and Ledger already produce).
31
31
  */
32
32
  export type AccountData = {
33
33
  address: string;
@@ -57,7 +57,7 @@ export type DirectSignDoc = {
57
57
  accountNumber: bigint;
58
58
  };
59
59
  /**
60
- * Offline signer for `SIGN_MODE_DIRECT` (Keplr-direct, Leap-direct, local
60
+ * Offline signer for `SIGN_MODE_DIRECT` (Keplr-direct and the local
61
61
  * cosmos-signer wrapper). Replaces `@cosmjs/proto-signing` `OfflineDirectSigner`.
62
62
  */
63
63
  export interface OfflineDirectSigner {
@@ -68,7 +68,7 @@ export interface OfflineDirectSigner {
68
68
  }>;
69
69
  }
70
70
  /**
71
- * Offline signer for `SIGN_MODE_LEGACY_AMINO_JSON` (Keplr-amino, Leap-amino,
71
+ * Offline signer for `SIGN_MODE_LEGACY_AMINO_JSON` (Keplr-amino,
72
72
  * Ledger, local amino wrappers). Replaces `@cosmjs/amino` `OfflineAminoSigner`.
73
73
  */
74
74
  export interface OfflineAminoSigner {
@@ -1,2 +1,2 @@
1
1
  export { getStellarToolbox, validateStellarAddress } from "./toolbox";
2
- export type { StellarCreateTransactionParams, StellarCreateTrustlineTransactionParams, StellarToolboxParams, StellarTransferParams, StellarTrustlineParams, StellarWallet, } from "./types";
2
+ export type { StellarCreateTransactionParams, StellarCreateTrustlineTransactionParams, StellarSigner, StellarToolboxParams, StellarTransaction, StellarTransferParams, StellarTrustlineParams, StellarWallet, } from "./types";
@@ -1,5 +1,5 @@
1
1
  import { AssetValue } from "@swapkit/helpers";
2
- import type { StellarCreateTransactionParams, StellarCreateTrustlineTransactionParams, StellarToolboxParams, StellarTransferParams, StellarTrustlineParams } from "./types";
2
+ import type { StellarCreateTransactionParams, StellarCreateTrustlineTransactionParams, StellarToolboxParams, StellarTransaction, StellarTransferParams, StellarTrustlineParams } from "./types";
3
3
  export declare function _clearStellarBaseReserveCache(): void;
4
4
  export declare function validateStellarAddress(address: string): boolean;
5
5
  export declare function getStellarToolbox(params?: StellarToolboxParams): {
@@ -22,7 +22,7 @@ export declare function getStellarToolbox(params?: StellarToolboxParams): {
22
22
  }) => Promise<string>;
23
23
  signTransaction: (transaction: {
24
24
  toXDR: () => string;
25
- }) => Promise<import("@stellar/stellar-sdk").Transaction | import("@stellar/stellar-sdk").FeeBumpTransaction>;
25
+ }) => Promise<StellarTransaction>;
26
26
  transfer: ({ recipient, assetValue, memo, sweep }: StellarTransferParams) => Promise<string>;
27
27
  validateAddress: typeof validateStellarAddress;
28
28
  };
@@ -1,4 +1,5 @@
1
- import type { AssetValue, DerivationPathArray, GenericCreateTransactionParams, GenericTransferParams } from "@swapkit/helpers";
1
+ import type { FeeBumpTransaction, Transaction } from "@stellar/stellar-sdk";
2
+ import type { AssetValue, ChainSigner, DerivationPathArray, GenericCreateTransactionParams, GenericTransferParams } from "@swapkit/helpers";
2
3
  import type { getStellarToolbox } from "./toolbox";
3
4
  export type StellarWallet = ReturnType<typeof getStellarToolbox>;
4
5
  export type StellarCreateTransactionParams = Omit<GenericCreateTransactionParams, "feeRate">;
@@ -10,8 +11,11 @@ export type StellarTrustlineParams = {
10
11
  export type StellarCreateTrustlineTransactionParams = StellarTrustlineParams & {
11
12
  sender?: string;
12
13
  };
14
+ export type StellarTransaction = Transaction | FeeBumpTransaction;
15
+ export type StellarSigner = ChainSigner<StellarTransaction, StellarTransaction>;
13
16
  export type StellarToolboxParams = {
14
17
  phrase?: string;
15
18
  derivationPath?: DerivationPathArray;
16
19
  index?: number;
20
+ signer?: StellarSigner;
17
21
  };
@@ -1,4 +1,5 @@
1
1
  export { checkTronAccountExists, getTronChainParameters } from "./helpers/trongrid";
2
+ export { tronAddressToHex } from "./helpers/utils";
2
3
  export { estimateTronSweepDeduction, getTronPrivateKeyFromMnemonic, getTronToolbox, TRON_SWEEP_ESTIMATE_TIMEOUT_MS, validateTronAddress, withTronTransactionData, withTronTransactionValue, } from "./toolbox";
3
4
  export type { TronApprovedParams, TronApproveParams, TronCreateTransactionParams, TronIsApprovedParams, TronSignedTransaction, TronSigner, TronToolboxOptions, TronTransaction, TronTransactionMetadata, TronTransactionWithMetadata, TronTransferParams, } from "./types";
4
5
  import type { getTronToolbox } from "./toolbox";
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "dependencies": { "@swapkit/helpers": "6.1.0", "@swapkit/utxo-signer": "3.1.0" },
2
+ "dependencies": { "@swapkit/helpers": "6.1.2", "@swapkit/utxo-signer": "3.1.1" },
3
3
  "description": "SwapKit - Toolboxes",
4
4
  "devDependencies": {
5
5
  "@aptos-labs/ts-sdk": "7.0.1",
@@ -131,5 +131,5 @@
131
131
  "type-check:go": "tsgo"
132
132
  },
133
133
  "type": "module",
134
- "version": "6.1.0"
134
+ "version": "6.3.0"
135
135
  }