@swapkit/toolboxes 4.0.0-beta.47 → 4.0.0-beta.49

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.
@@ -1,4 +1,4 @@
1
- var a6={};s6(a6,{verifySignature:()=>O6,transferMsgAmino:()=>$6,toBase64:()=>v6,parseAminoMessageForDirectSigning:()=>f,getSignerFromPrivateKey:()=>p6,getSignerFromPhrase:()=>W6,getRPC:()=>j6,getMsgSendDenom:()=>M,getFeeRateFromThorswap:()=>P6,getFeeRateFromSwapKit:()=>N6,getDenomWithChain:()=>b,getDefaultChainFee:()=>B,getCreateTransaction:()=>H6,getCosmosToolbox:()=>n6,getAssetFromDenom:()=>e,fromBase64:()=>f6,fetchFeeRateFromSwapKit:()=>Q6,estimateTransactionFee:()=>b6,depositMsgAmino:()=>z6,createThorchainToolbox:()=>X6,createStargateClient:()=>k,createSigningStargateClient:()=>o,createOfflineStargateClient:()=>s,createDefaultRegistry:()=>F,createDefaultAminoTypes:()=>K,createCosmosToolbox:()=>m,cosmosValidateAddress:()=>S6,cosmosCreateTransaction:()=>a,convertToSignable:()=>v,buildTransferTx:()=>R6,buildEncodedTxBody:()=>u,buildDepositTx:()=>G6,buildAminoMsg:()=>l,bech32ToBase64:()=>P,base64ToBech32:()=>S,YUM_KUJIRA_FACTORY_DENOM:()=>J6,USK_KUJIRA_FACTORY_DENOM:()=>i,THORCHAIN_GAS_VALUE:()=>F6,MAYA_GAS_VALUE:()=>V6,DEFAULT_KUJI_FEE_MAINNET:()=>Y6,DEFAULT_COSMOS_FEE_MAINNET:()=>T6});module.exports=i6(a6);var A=require("@scure/base"),L6=require("@swapkit/helpers"),g=require("base64-js");function P($){return A.base64.encode(Uint8Array.from(A.bech32.fromWords(A.bech32.decode($).words)))}function S($,H="thor"){return A.bech32.encode(H,A.bech32.toWords(A.base64.decode($)))}function v6($){return g.fromByteArray($)}function f6($){if(!$.match(/^[a-zA-Z0-9+/]*={0,2}$/))throw new L6.SwapKitError("toolbox_cosmos_invalid_params",{error:"Invalid base64 string format"});return g.toByteArray($)}var E=require("@swapkit/helpers");var X=require("@swapkit/helpers"),i="FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK",J6="FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM",T6={amount:[{denom:"uatom",amount:"500"}],gas:"200000"},Y6={amount:[{denom:"ukuji",amount:"1000"}],gas:"200000"};function B($){switch($){case X.Chain.Maya:return{amount:[],gas:"10000000000"};case X.Chain.THORChain:return{amount:[],gas:"500000000"};case X.Chain.Kujira:return Y6;default:return T6}}var M=($,H=!1)=>{if(H)return $.toLowerCase();switch($){case"uUSK":case"USK":return i;case"uYUM":case"YUM":return J6;case"uKUJI":case"KUJI":return"ukuji";case"ATOM":case"uATOM":return"uatom";default:return $}},b=({symbol:$,chain:H})=>{if(H===X.Chain.Maya)return($.toUpperCase()!=="CACAO"?$:`${X.Chain.Maya}.${$}`).toUpperCase();if(H===X.Chain.THORChain)return(["RUNE","TCY","RUJI"].includes($.toUpperCase())?`${X.Chain.THORChain}.${$}`:$).toUpperCase();return M($,!1)};async function k($){let{StargateClient:H}=await import("@cosmjs/stargate"),z=typeof window!=="undefined"?{}:{referrer:"https://sdk.swapkit.dev",referer:"https://sdk.swapkit.dev"};return H.connect({url:$,headers:z})}async function o($,H,z={}){let{SigningStargateClient:W,GasPrice:Z}=(await import("@cosmjs/stargate")).default,L=typeof z==="string"?z:"0.0003uatom",J=typeof z==="string"?{}:z;return W.connectWithSigner($,H,{gasPrice:Z.fromString(L),...J})}async function s($,H){let{SigningStargateClient:z}=(await import("@cosmjs/stargate")).default;return z.offline($,H)}var j6=($)=>{let{isStagenet:H}=X.SKConfig.get("envs"),z=X.SKConfig.get("rpcUrls");switch($){case X.ChainId.Kujira:return z.KUJI;case X.ChainId.THORChain:case"thorchain-mainnet-v1":return H?z.THOR_STAGENET:z.THOR;case X.ChainId.Maya:return H?z.MAYA_STAGENET:z.MAYA;default:return z.GAIA}},D6=($)=>{switch($){case X.Chain.Maya:case X.Chain.THORChain:return"/types.MsgSend";case X.Chain.Cosmos:case X.Chain.Kujira:return"/cosmos.bank.v1beta1.MsgSend";default:throw new X.SwapKitError("toolbox_cosmos_not_supported",{chain:$})}},a=async({sender:$,recipient:H,assetValue:z,memo:W="",feeRate:Z,sequence:L,accountNumber:J})=>{let{chain:_,chainId:q}=z,I=j6(q),T=await(await k(I)).getAccount($);if(!T)throw new X.SwapKitError("toolbox_cosmos_account_not_found",{sender:$});let y=X.AssetValue.from({chain:_}),N=M(y.symbol),Y=B(_),w=N&&Z?{amount:[{denom:N,amount:Z.toString()}],gas:Y.gas}:Y,O={fromAddress:$,toAddress:H,amount:[{amount:z.getBaseValue("string"),denom:M(z.symbol)}]};return{accountNumber:J??T.accountNumber,chainId:q,fee:w,memo:W,sequence:L??T.sequence,msgs:[{typeUrl:D6(_),value:O}]}},C6={rune:{chain:X.Chain.THORChain,decimals:X.BaseDecimal[X.Chain.THORChain]},tcy:{asset:"THOR.TCY",decimals:X.BaseDecimal[X.Chain.THORChain]},"x/kuji":{asset:"THOR.KUJI",decimals:X.BaseDecimal[X.Chain.THORChain]},uatom:{chain:X.Chain.Cosmos,decimals:X.BaseDecimal[X.Chain.Cosmos]},atom:{chain:X.Chain.Cosmos,decimals:X.BaseDecimal[X.Chain.Cosmos]},cacao:{chain:X.Chain.Maya,decimals:10},maya:{asset:`${X.Chain.Maya}.${X.Chain.Maya}`,decimals:4},ukuji:{chain:X.Chain.Kujira,decimals:X.BaseDecimal[X.Chain.Kujira]},kuji:{chain:X.Chain.Kujira,decimals:X.BaseDecimal[X.Chain.Kujira]},[i.toLowerCase()]:{asset:`${X.Chain.Kujira}.USK`,decimals:X.BaseDecimal[X.Chain.Kujira]}},e=($,H)=>{let z=C6[$.toLowerCase()];if(!z)return X.AssetValue.from({asset:$,value:H,fromBaseDecimal:8});let{chain:W,asset:Z,decimals:L}=z,J=W?{chain:W}:{asset:Z};return X.AssetValue.from({...J,value:H,fromBaseDecimal:L})};var q6=require("@swapkit/helpers");async function F(){let{$root:$}=await import("../../chunk-4yap1fvd.js"),{Registry:H}=(await import("@cosmjs/proto-signing")).default,{defaultRegistryTypes:z}=(await import("@cosmjs/stargate")).default;return new H([...z,["/types.MsgSend",$.types.MsgSend],["/types.MsgDeposit",$.types.MsgDeposit]])}async function K($){let{AminoTypes:H}=(await import("@cosmjs/stargate")).default,z=$===q6.Chain.THORChain?"thorchain":"mayachain";return new H({"/types.MsgSend":{aminoType:`${z}/MsgSend`,toAmino:({fromAddress:W,toAddress:Z,...L})=>({...L,from_address:S(W),to_address:S(Z)}),fromAmino:({from_address:W,to_address:Z,...L})=>({...L,fromAddress:P(W),toAddress:P(Z)})},"/types.MsgDeposit":{aminoType:`${z}/MsgDeposit`,toAmino:({signer:W,...Z})=>({...Z,signer:S(W)}),fromAmino:({signer:W,...Z})=>({...Z,signer:P(W)})}})}var F6=B(E.Chain.THORChain).gas,V6=B(E.Chain.Maya).gas,$6=({sender:$,recipient:H,assetValue:z})=>{return{type:`${z.chain===E.Chain.Maya?"mayachain":"thorchain"}/MsgSend`,value:{from_address:$,to_address:H,amount:[{amount:z.getBaseValue("string"),denom:M(z.symbol,!0)}]}}},z6=({sender:$,assetValue:H,memo:z=""})=>{return{type:`${H.chain===E.Chain.Maya?"mayachain":"thorchain"}/MsgDeposit`,value:{coins:[{amount:H.getBaseValue("string"),asset:b(H)}],signer:$,memo:z}}},l=({sender:$,recipient:H,assetValue:z,memo:W})=>{return!H?z6({sender:$,assetValue:z,memo:W}):$6({sender:$,recipient:H,assetValue:z})},v=async($,H)=>{return(await K(H)).fromAmino($)},_6=async({rpcUrl:$,sender:H})=>{let W=await(await k($)).getAccount(H);if(!W)throw new E.SwapKitError("toolbox_cosmos_account_not_found",{sender:H});return W};function H6($){return function H(z){let{assetValue:W,recipient:Z,memo:L,sender:J,asSignable:_,asAminoMessage:q}=z;if(Z)return R6($)({sender:J,recipient:Z,assetValue:W,memo:L,asSignable:_,asAminoMessage:q});return G6($)({sender:J,assetValue:W,memo:L,asSignable:_,asAminoMessage:q})}}var R6=($)=>async({sender:H,recipient:z,assetValue:W,memo:Z="",asSignable:L=!0,asAminoMessage:J=!1,sequence:_,accountNumber:q})=>{let I=await _6({rpcUrl:$,sender:H}),G=W.chain,T=$6({sender:H,recipient:z,assetValue:W}),y=L?await v(J?T:f(T),G):T;return{chainId:E.ChainToChainId[G],accountNumber:q||I.accountNumber,sequence:_||I.sequence,msgs:[y],fee:B(W.chain),memo:Z}},G6=($)=>async({sender:H,assetValue:z,memo:W="",asSignable:Z=!0,asAminoMessage:L=!1,sequence:J,accountNumber:_})=>{let q=await _6({rpcUrl:$,sender:H}),I=z.chain,G=z6({sender:H,assetValue:z,memo:W}),T=Z?await v(L?G:f(G),I):G;return{chainId:E.ChainToChainId[I],accountNumber:_||q.accountNumber,sequence:J||q.sequence,msgs:[T],fee:B(z.chain),memo:W}};function f($){if($.type==="thorchain/MsgSend"||$.type==="mayachain/MsgSend")return $;return{...$,value:{...$.value,coins:$.value.coins.map((H)=>{let z=E.AssetValue.from({asset:H.asset}),W=(z.isSynthetic?z.symbol.split("/")?.[1]:z.symbol)?.toUpperCase(),Z=(z.isSynthetic?z.symbol.split("/")?.[0]:z.chain)?.toUpperCase();return{...H,asset:{chain:Z,symbol:W,ticker:z.ticker,synth:z.isSynthetic}}})}}}async function u({chain:$,memo:H,msgs:z}){let W=await F(),Z=await K($),L={typeUrl:"/cosmos.tx.v1beta1.TxBody",value:{memo:H,messages:z.map((J)=>Z.fromAmino(J))}};return W.encode(L)}var V=require("@swapkit/helpers");var D=require("@scure/base"),Q=require("@swapkit/helpers"),Z6=require("@swapkit/helpers/api"),d=require("ts-pattern");async function Q6($,H){try{let W=(await Z6.SwapKitApi.getGasRate()).find((Z)=>Z.chainId===$)?.value;return W?Number.parseFloat(W):H}catch(z){return H}}async function W6({phrase:$,prefix:H,...z}){let{DirectSecp256k1HdWallet:W}=(await import("@cosmjs/proto-signing")).default,{stringToPath:Z}=(await import("@cosmjs/crypto")).default,L="derivationPath"in z?z.derivationPath:`${Q.DerivationPath[z.chain]}/${z.index}`;return W.fromMnemonic($,{prefix:H,hdPaths:[Z(L)]})}async function p6({privateKey:$,prefix:H}){let{DirectSecp256k1Wallet:z}=(await import("@cosmjs/proto-signing")).default;return z.fromKey($,H)}var I6={[Q.Chain.Cosmos]:500,[Q.Chain.Kujira]:1000,[Q.Chain.THORChain]:5000000,[Q.Chain.Maya]:5000000};function O6($){return async function H({signature:z,message:W,address:Z}){let L=await $(Z);if(!L?.pubkey)throw new Q.SwapKitError("toolbox_cosmos_verify_signature_no_pubkey");let{Secp256k1Signature:J,Secp256k1:_}=(await import("@cosmjs/crypto")).default,q=J.fromFixedLength(D.base64.decode(z));return _.verifySignature(q,D.base64.decode(W),L.pubkey.value)}}async function m({chain:$,...H}){let z=Q.SKConfig.get("rpcUrls")[$],W=Q.CosmosChainPrefixes[$],Z="index"in H?H.index||0:0,L=Q.derivationPathToString("derivationPath"in H&&H.derivationPath?H.derivationPath:Q.updateDerivationPath(Q.NetworkDerivationPath[$],{index:Z})),J=await d.match(H).with({phrase:d.P.string},({phrase:T})=>W6({phrase:T,prefix:W,derivationPath:L})).with({signer:d.P.any},({signer:T})=>T).otherwise(()=>{return});async function _(T){return(await k(z)).getAccount(T)}async function q(){let[T]=await J?.getAccounts()||[];return T?.address}async function I(){let[T]=await J?.getAccounts()||[];if(!T?.pubkey)throw new Q.SwapKitError("toolbox_cosmos_signer_not_defined");return D.base64.encode(T?.pubkey)}async function G({recipient:T,assetValue:y,memo:N="",feeRate:Y,feeOptionKey:w=Q.FeeOption.Fast}){let O=await q();if(!(J&&O))throw new Q.SwapKitError("toolbox_cosmos_signer_not_defined");let x=Q.AssetValue.from({chain:$}),U=b(x),c=Y||u6((await y6($,I6[$]))[w],U),r=await o(z,J),t=[{denom:M(`u${y.symbol}`).toLowerCase(),amount:y.getBaseValue("string")}],{transactionHash:p}=await r.sendTokens(O,T,t,c,N);return p}return{transfer:G,getAddress:q,getAccount:_,getBalance:async(T,y)=>{let N=await w6(z)(T);return await Promise.all(N.filter(({denom:Y})=>Y&&!Y.includes("IBC/")).map(({denom:Y,amount:w})=>{let O=[Q.Chain.THORChain,Q.Chain.Maya].includes($)&&(Y.includes("/")||Y.includes("˜"))?`${$}.${Y}`:Y;return e(O,w)}))},getSignerFromPhrase:async({phrase:T,derivationPath:y})=>W6({phrase:T,prefix:W,derivationPath:Q.derivationPathToString(y),index:Z}),getSignerFromPrivateKey:async(T)=>{let{DirectSecp256k1Wallet:y}=(await import("@cosmjs/proto-signing")).default;return y.fromKey(T,W)},createPrivateKeyFromPhrase:m6(L),validateAddress:E6(W),getPubKey:I,getFees:()=>y6($,I6[$]),fetchFeeRateFromSwapKit:Q6,getBalanceAsDenoms:w6(z),createTransaction:a,verifySignature:O6(_)}}async function N6($,H){try{let W=(await Z6.SwapKitApi.getGasRate()).find((Z)=>Z.chainId===$)?.value;return W?Number.parseFloat(W):H}catch(z){return H}}var P6=N6;function S6({address:$,chain:H,prefix:z}){let W=z||o6(H);if(!(W&&$))throw new Q.SwapKitError("toolbox_cosmos_validate_address_prefix_not_found");return E6(W)($)}function b6({assetValue:{chain:$}}){return Q.AssetValue.from({chain:$,value:d6($)})}function o6($){let{isStagenet:H}=Q.SKConfig.get("envs"),z=$?[Q.Chain.THORChain,Q.Chain.Maya].includes($)&&H:!1,W=$?Q.CosmosChainPrefixes[$]:void 0;return z?`s${W}`:W}async function y6($,H){let z=await Q6(Q.ChainToChainId[$],H);return{average:Q.SwapKitNumber.fromBigInt(BigInt(z),Q.BaseDecimal[$]),fast:Q.SwapKitNumber.fromBigInt(BigInt(Q.applyFeeMultiplier(z,Q.FeeOption.Fast,!0)),Q.BaseDecimal[$]),fastest:Q.SwapKitNumber.fromBigInt(BigInt(Q.applyFeeMultiplier(z,Q.FeeOption.Fastest,!0)),Q.BaseDecimal[$])}}function u6($,H){return{amount:[{denom:H,amount:$.getBaseValue("string")}],gas:"200000"}}function d6($){return{[Q.Chain.Cosmos]:0.007,[Q.Chain.Kujira]:0.02,[Q.Chain.THORChain]:0.02,[Q.Chain.Maya]:0.02}[$]||0}function E6($){return function H(z){if(!z.startsWith($))return!1;try{let{prefix:W,words:Z}=D.bech32.decode(z);return D.bech32.encode(W,Z)===z.toLocaleLowerCase()}catch(W){return!1}}}function w6($){return async function H(z){return(await(await k($)).getAllBalances(z)).map((J)=>({...J,denom:J.denom.includes("/")?J.denom.toUpperCase():J.denom}))}}function m6($){return async function H(z){let{Bip39:W,EnglishMnemonic:Z,Slip10:L,Slip10Curve:J,stringToPath:_}=(await import("@cosmjs/crypto")).default,q=new Z(z),I=await W.mnemonicToSeed(q),{privkey:G}=L.derivePath(J.Secp256k1,I,_($));return G}}var C=require("@scure/base"),j=require("@swapkit/helpers"),h=require("ts-pattern");function h6({prefix:$,derivationPath:H}){return async function z(W,Z=0){let{Secp256k1HdWallet:L}=(await import("@cosmjs/amino")).default,{stringToPath:J}=(await import("@cosmjs/crypto")).default;return L.fromMnemonic(W,{hdPaths:[J(`${H}/${Z}`)],prefix:$})}}function g6($){return C.base64.encode($)}function l6($){return async function H({wallet:z,tx:W}){let{msgs:Z,accountNumber:L,sequence:J,chainId:_,fee:q,memo:I}=typeof W==="string"?JSON.parse(W):W,G=(await z.getAccounts())?.[0]?.address||"",T=await K($),y=await F(),N=await s(z,{registry:y,aminoTypes:T}),Y=[];for(let x of Z){let U=await v(x,$);Y.push(U)}let{signatures:[w]}=await N.sign(G,Y,q,I,{accountNumber:L,sequence:J,chainId:_}),O=await u({chain:$,memo:I,msgs:Z.map(f)});return{signature:g6(w),bodyBytes:O}}}function c6({prefix:$,rpcUrl:H}){return async function z(W,Z,L,J,_){let{encodeSecp256k1Pubkey:q,pubkeyToAddress:I}=(await import("@cosmjs/amino")).default,{makeMultisignedTxBytes:G}=(await import("@cosmjs/stargate")).default,{sequence:T,fee:y}=JSON.parse(W),N=await B6(L,J),Y=Z.map((x)=>[I(q(C.base64.decode(x.pubKey)),$),C.base64.decode(x.signature)]),w=await k(H),{transactionHash:O}=await w.broadcastTx(G(N,T,y,_,new Map(Y)));return O}}async function B6($,H,z=!0){let{createMultisigThresholdPubkey:W,encodeSecp256k1Pubkey:Z}=(await import("@cosmjs/amino")).default;return W($.map((L)=>Z(C.base64.decode(L))),H,z)}function r6($){return C.base64.decode($)}async function t6({privateKey:$,message:H}){let{Secp256k1:z}=(await import("@cosmjs/crypto")).default,W=await z.createSignature(C.base64.decode(H),$);return C.base64.encode(Buffer.concat([W.r(32),W.s(32)]))}async function X6({chain:$,...H}){let z=j.SKConfig.get("nodeUrls")[$],W=j.SKConfig.get("rpcUrls")[$],{isStagenet:Z}=j.SKConfig.get("envs"),L=$===j.Chain.THORChain,J=`${Z?"s":""}${j.CosmosChainPrefixes[$]}`,_="index"in H?H.index||0:0,q="derivationPath"in H&&H.derivationPath?H.derivationPath:j.updateDerivationPath(j.NetworkDerivationPath[$],{index:_}),I=await m({chain:$,...H}),G=await h.match(H).with({phrase:h.P.string},({phrase:Y})=>I.getSignerFromPhrase({phrase:Y,derivationPath:q})).with({signer:h.P.any},({signer:Y})=>Y).otherwise(()=>{return}),T=B($);async function y(){let Y,w=`${z}/${L?"thorchain":"mayachain"}/constants`;try{let{int_64_values:{NativeTransactionFee:O}}=await j.RequestClient.get(w);if(!O||Number.isNaN(O)||O<0)throw new j.SwapKitError("toolbox_cosmos_invalid_fee",{nativeFee:O.toString()});Y=new j.SwapKitNumber(O)}catch{Y=new j.SwapKitNumber({value:L?0.02:1,decimal:j.BaseDecimal[$]})}return{[j.FeeOption.Average]:Y,[j.FeeOption.Fast]:Y,[j.FeeOption.Fastest]:Y}}async function N({assetValue:Y,memo:w="",recipient:O}){let{TxRaw:x}=await import("cosmjs-types/cosmos/tx/v1beta1/tx"),U=(await G?.getAccounts())?.[0]?.address;if(!(U&&G))throw new j.SwapKitError("toolbox_cosmos_no_signer");let c="signAmino"in G,r=await F(),t=await K($),p=await o(W,G,{registry:r,aminoTypes:t}),n=l({assetValue:Y,sender:U,recipient:O,memo:w});if(c){let U6=await v(n,$),{signatures:A6,authInfoBytes:M6}=await p.sign(U,[U6],T,w),K6=x.encode({signatures:A6,authInfoBytes:M6,bodyBytes:await u({chain:$,msgs:[n].map(f),memo:w})}).finish();return(await p.broadcastTx(K6)).transactionHash}let k6=f(n),x6=await v(k6,$);return(await p.signAndBroadcast(U,[x6],T,w)).transactionHash}return{...I,broadcastMultisigTx:c6({prefix:J,rpcUrl:W}),buildAminoMsg:l,buildEncodedTxBody:u,convertToSignable:v,createDefaultAminoTypes:()=>K($),createDefaultRegistry:F,createMultisig:B6,createTransaction:H6(W),deposit:N,getFees:y,importSignature:r6,parseAminoMessageForDirectSigning:f,secp256k1HdWalletFromMnemonic:h6({derivationPath:j.derivationPathToString(q),prefix:J}),signMultisigTx:l6($),signWithPrivateKey:t6,transfer:N,pubkeyToAddress:async(Y)=>{let{pubkeyToAddress:w}=(await import("@cosmjs/amino")).default;return w(Y,J)}}}var n6=($,H)=>{switch($){case V.Chain.Cosmos:case V.Chain.Kujira:return m({chain:$,...H});case V.Chain.Maya:case V.Chain.THORChain:return X6({chain:$,...H});default:throw new V.SwapKitError("toolbox_cosmos_not_supported",{chain:$})}};
1
+ var a6={};s6(a6,{verifySignature:()=>N6,transferMsgAmino:()=>$6,toBase64:()=>v6,parseAminoMessageForDirectSigning:()=>f,getSignerFromPrivateKey:()=>P6,getSignerFromPhrase:()=>H6,getRPC:()=>j6,getMsgSendDenom:()=>M,getFeeRateFromThorswap:()=>S6,getFeeRateFromSwapKit:()=>k6,getDenomWithChain:()=>p,getDefaultChainFee:()=>B,getCreateTransaction:()=>z6,getCosmosToolbox:()=>n6,getAssetFromDenom:()=>e,fromBase64:()=>f6,fetchFeeRateFromSwapKit:()=>Z6,estimateTransactionFee:()=>p6,depositMsgAmino:()=>W6,createThorchainToolbox:()=>Q6,createStargateClient:()=>y,createSigningStargateClient:()=>u,createOfflineStargateClient:()=>s,createDefaultRegistry:()=>V,createDefaultAminoTypes:()=>K,createCosmosToolbox:()=>h,cosmosValidateAddress:()=>b6,cosmosCreateTransaction:()=>a,convertToSignable:()=>v,buildTransferTx:()=>_6,buildEncodedTxBody:()=>o,buildDepositTx:()=>G6,buildAminoMsg:()=>l,bech32ToBase64:()=>S,base64ToBech32:()=>b,YUM_KUJIRA_FACTORY_DENOM:()=>L6,USK_KUJIRA_FACTORY_DENOM:()=>i,THORCHAIN_GAS_VALUE:()=>V6,MAYA_GAS_VALUE:()=>C6,DEFAULT_KUJI_FEE_MAINNET:()=>Y6,DEFAULT_COSMOS_FEE_MAINNET:()=>J6});module.exports=i6(a6);var A=require("@scure/base"),X6=require("@swapkit/helpers"),g=require("base64-js");function S($){return A.base64.encode(Uint8Array.from(A.bech32.fromWords(A.bech32.decode($).words)))}function b($,z="thor"){return A.bech32.encode(z,A.bech32.toWords(A.base64.decode($)))}function v6($){return g.fromByteArray($)}function f6($){if(!$.match(/^[a-zA-Z0-9+/]*={0,2}$/))throw new X6.SwapKitError("toolbox_cosmos_invalid_params",{error:"Invalid base64 string format"});return g.toByteArray($)}var E=require("@swapkit/helpers");var Q=require("@swapkit/helpers"),i="FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK",L6="FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM",J6={amount:[{denom:"uatom",amount:"500"}],gas:"200000"},Y6={amount:[{denom:"ukuji",amount:"1000"}],gas:"200000"};function B($){switch($){case Q.Chain.Maya:return{amount:[],gas:"10000000000"};case Q.Chain.THORChain:return{amount:[],gas:"500000000"};case Q.Chain.Kujira:return Y6;default:return J6}}var M=($,z=!1)=>{if(z)return $.toLowerCase();switch($){case"uUSK":case"USK":return i;case"uYUM":case"YUM":return L6;case"uKUJI":case"KUJI":return"ukuji";case"ATOM":case"uATOM":return"uatom";default:return $}},p=({symbol:$,chain:z})=>{if(z===Q.Chain.Maya)return($.toUpperCase()!=="CACAO"?$:`${Q.Chain.Maya}.${$}`).toUpperCase();if(z===Q.Chain.THORChain)return(["RUNE","TCY","RUJI"].includes($.toUpperCase())?`${Q.Chain.THORChain}.${$}`:$).toUpperCase();return M($,!1)};async function y($){let z=await import("@cosmjs/stargate"),W=z.StargateClient??z.default?.StargateClient,H=typeof window!=="undefined"?{}:{referrer:"https://sdk.swapkit.dev",referer:"https://sdk.swapkit.dev"};return W.connect({url:$,headers:H})}async function u($,z,W={}){let H=await import("@cosmjs/stargate"),T=H.SigningStargateClient??H.default?.SigningStargateClient,X=H.GasPrice??H.default?.GasPrice,L=typeof W==="string"?W:"0.0003uatom",j=typeof W==="string"?{}:W;return T.connectWithSigner($,z,{gasPrice:X.fromString(L),...j})}async function s($,z){let W=await import("@cosmjs/stargate");return(W.SigningStargateClient??W.default?.SigningStargateClient).offline($,z)}var j6=($)=>{let{isStagenet:z}=Q.SKConfig.get("envs"),W=Q.SKConfig.get("rpcUrls");switch($){case Q.ChainId.Kujira:return W.KUJI;case Q.ChainId.THORChain:case"thorchain-mainnet-v1":return z?W.THOR_STAGENET:W.THOR;case Q.ChainId.Maya:return z?W.MAYA_STAGENET:W.MAYA;default:return W.GAIA}},D6=($)=>{switch($){case Q.Chain.Maya:case Q.Chain.THORChain:return"/types.MsgSend";case Q.Chain.Cosmos:case Q.Chain.Kujira:return"/cosmos.bank.v1beta1.MsgSend";default:throw new Q.SwapKitError("toolbox_cosmos_not_supported",{chain:$})}},a=async({sender:$,recipient:z,assetValue:W,memo:H="",feeRate:T,sequence:X,accountNumber:L})=>{let{chain:j,chainId:q}=W,_=j6(q),J=await(await y(_)).getAccount($);if(!J)throw new Q.SwapKitError("toolbox_cosmos_account_not_found",{sender:$});let w=Q.AssetValue.from({chain:j}),k=M(w.symbol),Y=B(j),O=k&&T?{amount:[{denom:k,amount:T.toString()}],gas:Y.gas}:Y,N={fromAddress:$,toAddress:z,amount:[{amount:W.getBaseValue("string"),denom:M(W.symbol)}]};return{accountNumber:L??J.accountNumber,chainId:q,fee:O,memo:H,sequence:X??J.sequence,msgs:[{typeUrl:D6(j),value:N}]}},F6={rune:{chain:Q.Chain.THORChain,decimals:Q.BaseDecimal[Q.Chain.THORChain]},tcy:{asset:"THOR.TCY",decimals:Q.BaseDecimal[Q.Chain.THORChain]},"x/kuji":{asset:"THOR.KUJI",decimals:Q.BaseDecimal[Q.Chain.THORChain]},uatom:{chain:Q.Chain.Cosmos,decimals:Q.BaseDecimal[Q.Chain.Cosmos]},atom:{chain:Q.Chain.Cosmos,decimals:Q.BaseDecimal[Q.Chain.Cosmos]},cacao:{chain:Q.Chain.Maya,decimals:10},maya:{asset:`${Q.Chain.Maya}.${Q.Chain.Maya}`,decimals:4},ukuji:{chain:Q.Chain.Kujira,decimals:Q.BaseDecimal[Q.Chain.Kujira]},kuji:{chain:Q.Chain.Kujira,decimals:Q.BaseDecimal[Q.Chain.Kujira]},[i.toLowerCase()]:{asset:`${Q.Chain.Kujira}.USK`,decimals:Q.BaseDecimal[Q.Chain.Kujira]}},e=($,z)=>{let W=F6[$.toLowerCase()];if(!W)return Q.AssetValue.from({asset:$,value:z,fromBaseDecimal:8});let{chain:H,asset:T,decimals:X}=W,L=H?{chain:H}:{asset:T};return Q.AssetValue.from({...L,value:z,fromBaseDecimal:X})};var R6=require("@swapkit/helpers");async function V(){let{$root:$}=await import("../../chunk-4yap1fvd.js"),z=await import("@cosmjs/proto-signing"),W=z.Registry??z.default?.Registry,H=await import("@cosmjs/stargate"),T=H.defaultRegistryTypes??H.default?.defaultRegistryTypes;return new W([...T,["/types.MsgSend",$.types.MsgSend],["/types.MsgDeposit",$.types.MsgDeposit]])}async function K($){let z=await import("@cosmjs/stargate"),W=z.AminoTypes??z.default?.AminoTypes,H=$===R6.Chain.THORChain?"thorchain":"mayachain";return new W({"/types.MsgSend":{aminoType:`${H}/MsgSend`,toAmino:({fromAddress:T,toAddress:X,...L})=>({...L,from_address:b(T),to_address:b(X)}),fromAmino:({from_address:T,to_address:X,...L})=>({...L,fromAddress:S(T),toAddress:S(X)})},"/types.MsgDeposit":{aminoType:`${H}/MsgDeposit`,toAmino:({signer:T,...X})=>({...X,signer:b(T)}),fromAmino:({signer:T,...X})=>({...X,signer:S(T)})}})}var V6=B(E.Chain.THORChain).gas,C6=B(E.Chain.Maya).gas,$6=({sender:$,recipient:z,assetValue:W})=>{return{type:`${W.chain===E.Chain.Maya?"mayachain":"thorchain"}/MsgSend`,value:{from_address:$,to_address:z,amount:[{amount:W.getBaseValue("string"),denom:M(W.symbol,!0)}]}}},W6=({sender:$,assetValue:z,memo:W=""})=>{return{type:`${z.chain===E.Chain.Maya?"mayachain":"thorchain"}/MsgDeposit`,value:{coins:[{amount:z.getBaseValue("string"),asset:p(z)}],signer:$,memo:W}}},l=({sender:$,recipient:z,assetValue:W,memo:H})=>{return!z?W6({sender:$,assetValue:W,memo:H}):$6({sender:$,recipient:z,assetValue:W})},v=async($,z)=>{return(await K(z)).fromAmino($)},q6=async({rpcUrl:$,sender:z})=>{let H=await(await y($)).getAccount(z);if(!H)throw new E.SwapKitError("toolbox_cosmos_account_not_found",{sender:z});return H};function z6($){return function z(W){let{assetValue:H,recipient:T,memo:X,sender:L,asSignable:j,asAminoMessage:q}=W;if(T)return _6($)({sender:L,recipient:T,assetValue:H,memo:X,asSignable:j,asAminoMessage:q});return G6($)({sender:L,assetValue:H,memo:X,asSignable:j,asAminoMessage:q})}}var _6=($)=>async({sender:z,recipient:W,assetValue:H,memo:T="",asSignable:X=!0,asAminoMessage:L=!1,sequence:j,accountNumber:q})=>{let _=await q6({rpcUrl:$,sender:z}),I=H.chain,J=$6({sender:z,recipient:W,assetValue:H}),w=X?await v(L?J:f(J),I):J;return{chainId:E.ChainToChainId[I],accountNumber:q||_.accountNumber,sequence:j||_.sequence,msgs:[w],fee:B(H.chain),memo:T}},G6=($)=>async({sender:z,assetValue:W,memo:H="",asSignable:T=!0,asAminoMessage:X=!1,sequence:L,accountNumber:j})=>{let q=await q6({rpcUrl:$,sender:z}),_=W.chain,I=W6({sender:z,assetValue:W,memo:H}),J=T?await v(X?I:f(I),_):I;return{chainId:E.ChainToChainId[_],accountNumber:j||q.accountNumber,sequence:L||q.sequence,msgs:[J],fee:B(W.chain),memo:H}};function f($){if($.type==="thorchain/MsgSend"||$.type==="mayachain/MsgSend")return $;return{...$,value:{...$.value,coins:$.value.coins.map((z)=>{let W=E.AssetValue.from({asset:z.asset}),H=(W.isSynthetic?W.symbol.split("/")?.[1]:W.symbol)?.toUpperCase(),T=(W.isSynthetic?W.symbol.split("/")?.[0]:W.chain)?.toUpperCase();return{...z,asset:{chain:T,symbol:H,ticker:W.ticker,synth:W.isSynthetic}}})}}}async function o({chain:$,memo:z,msgs:W}){let H=await V(),T=await K($),X={typeUrl:"/cosmos.tx.v1beta1.TxBody",value:{memo:z,messages:W.map((L)=>T.fromAmino(L))}};return H.encode(X)}var C=require("@swapkit/helpers");var D=require("@scure/base"),Z=require("@swapkit/helpers"),T6=require("@swapkit/helpers/api"),d=require("ts-pattern");async function Z6($,z){try{let H=(await T6.SwapKitApi.getGasRate()).find((T)=>T.chainId===$)?.value;return H?Number.parseFloat(H):z}catch(W){return z}}async function H6({phrase:$,prefix:z,...W}){let H=await import("@cosmjs/proto-signing"),T=H.DirectSecp256k1HdWallet??H.default?.DirectSecp256k1HdWallet,X=await import("@cosmjs/crypto"),L=X.stringToPath??X.default?.stringToPath,j="derivationPath"in W?W.derivationPath:`${Z.DerivationPath[W.chain]}/${W.index}`;return T.fromMnemonic($,{prefix:z,hdPaths:[L(j)]})}async function P6({privateKey:$,prefix:z}){let W=await import("@cosmjs/proto-signing");return(W.DirectSecp256k1Wallet??W.default?.DirectSecp256k1Wallet).fromKey($,z)}var I6={[Z.Chain.Cosmos]:500,[Z.Chain.Kujira]:1000,[Z.Chain.THORChain]:5000000,[Z.Chain.Maya]:5000000};function N6($){return async function z({signature:W,message:H,address:T}){let X=await $(T);if(!X?.pubkey)throw new Z.SwapKitError("toolbox_cosmos_verify_signature_no_pubkey");let L=await import("@cosmjs/crypto"),j=L.Secp256k1Signature??L.default?.Secp256k1Signature,q=L.Secp256k1??L.default?.Secp256k1,_=j.fromFixedLength(D.base64.decode(W));return q.verifySignature(_,D.base64.decode(H),X.pubkey.value)}}async function h({chain:$,...z}){let W=Z.SKConfig.get("rpcUrls")[$],H=Z.CosmosChainPrefixes[$],T="index"in z?z.index||0:0,X=Z.derivationPathToString("derivationPath"in z&&z.derivationPath?z.derivationPath:Z.updateDerivationPath(Z.NetworkDerivationPath[$],{index:T})),L=await d.match(z).with({phrase:d.P.string},({phrase:J})=>H6({phrase:J,prefix:H,derivationPath:X})).with({signer:d.P.any},({signer:J})=>J).otherwise(()=>{return});async function j(J){return(await y(W)).getAccount(J)}async function q(){let[J]=await L?.getAccounts()||[];return J?.address}async function _(){let[J]=await L?.getAccounts()||[];if(!J?.pubkey)throw new Z.SwapKitError("toolbox_cosmos_signer_not_defined");return D.base64.encode(J?.pubkey)}async function I({recipient:J,assetValue:w,memo:k="",feeRate:Y,feeOptionKey:O=Z.FeeOption.Fast}){let N=await q();if(!(L&&N))throw new Z.SwapKitError("toolbox_cosmos_signer_not_defined");let x=Z.AssetValue.from({chain:$}),U=p(x),c=Y||o6((await w6($,I6[$]))[O],U),r=await u(W,L),t=[{denom:M(`u${w.symbol}`).toLowerCase(),amount:w.getBaseValue("string")}],{transactionHash:P}=await r.sendTokens(N,J,t,c,k);return P}return{transfer:I,getAddress:q,getAccount:j,getBalance:async(J,w)=>{let k=await O6(W)(J);return await Promise.all(k.filter(({denom:Y})=>Y&&!Y.includes("IBC/")).map(({denom:Y,amount:O})=>{let N=[Z.Chain.THORChain,Z.Chain.Maya].includes($)&&(Y.includes("/")||Y.includes("˜"))?`${$}.${Y}`:Y;return e(N,O)}))},getSignerFromPhrase:async({phrase:J,derivationPath:w})=>H6({phrase:J,prefix:H,derivationPath:Z.derivationPathToString(w),index:T}),getSignerFromPrivateKey:async(J)=>{let w=await import("@cosmjs/proto-signing");return(w.DirectSecp256k1Wallet??w.default?.DirectSecp256k1Wallet).fromKey(J,H)},createPrivateKeyFromPhrase:h6(X),validateAddress:E6(H),getPubKey:_,getFees:()=>w6($,I6[$]),fetchFeeRateFromSwapKit:Z6,getBalanceAsDenoms:O6(W),createTransaction:a,verifySignature:N6(j)}}async function k6($,z){try{let H=(await T6.SwapKitApi.getGasRate()).find((T)=>T.chainId===$)?.value;return H?Number.parseFloat(H):z}catch(W){return z}}var S6=k6;function b6({address:$,chain:z,prefix:W}){let H=W||u6(z);if(!(H&&$))throw new Z.SwapKitError("toolbox_cosmos_validate_address_prefix_not_found");return E6(H)($)}function p6({assetValue:{chain:$}}){return Z.AssetValue.from({chain:$,value:d6($)})}function u6($){let{isStagenet:z}=Z.SKConfig.get("envs"),W=$?[Z.Chain.THORChain,Z.Chain.Maya].includes($)&&z:!1,H=$?Z.CosmosChainPrefixes[$]:void 0;return W?`s${H}`:H}async function w6($,z){let W=await Z6(Z.ChainToChainId[$],z);return{average:Z.SwapKitNumber.fromBigInt(BigInt(W),Z.BaseDecimal[$]),fast:Z.SwapKitNumber.fromBigInt(BigInt(Z.applyFeeMultiplier(W,Z.FeeOption.Fast,!0)),Z.BaseDecimal[$]),fastest:Z.SwapKitNumber.fromBigInt(BigInt(Z.applyFeeMultiplier(W,Z.FeeOption.Fastest,!0)),Z.BaseDecimal[$])}}function o6($,z){return{amount:[{denom:z,amount:$.getBaseValue("string")}],gas:"200000"}}function d6($){return{[Z.Chain.Cosmos]:0.007,[Z.Chain.Kujira]:0.02,[Z.Chain.THORChain]:0.02,[Z.Chain.Maya]:0.02}[$]||0}function E6($){return function z(W){if(!W.startsWith($))return!1;try{let{prefix:H,words:T}=D.bech32.decode(W);return D.bech32.encode(H,T)===W.toLocaleLowerCase()}catch(H){return!1}}}function O6($){return async function z(W){return(await(await y($)).getAllBalances(W)).map((L)=>({...L,denom:L.denom.includes("/")?L.denom.toUpperCase():L.denom}))}}function h6($){return async function z(W){let H=await import("@cosmjs/crypto"),T=H.stringToPath??H.default?.stringToPath,X=H.Slip10Curve??H.default?.Slip10Curve,L=H.Slip10??H.default?.Slip10,j=H.EnglishMnemonic??H.default?.EnglishMnemonic,q=H.Bip39??H.default?.Bip39,_=new j(W),I=await q.mnemonicToSeed(_),{privkey:J}=L.derivePath(X.Secp256k1,I,T($));return J}}var F=require("@scure/base"),R=require("@swapkit/helpers"),m=require("ts-pattern");function m6({prefix:$,derivationPath:z}){return async function W(H,T=0){let X=await import("@cosmjs/amino"),L=X.Secp256k1HdWallet??X.default?.Secp256k1HdWallet,j=await import("@cosmjs/crypto"),q=j.stringToPath??j.default?.stringToPath;return L.fromMnemonic(H,{hdPaths:[q(`${z}/${T}`)],prefix:$})}}function g6($){return F.base64.encode($)}function l6($){return async function z({wallet:W,tx:H}){let{msgs:T,accountNumber:X,sequence:L,chainId:j,fee:q,memo:_}=typeof H==="string"?JSON.parse(H):H,I=(await W.getAccounts())?.[0]?.address||"",J=await K($),w=await V(),k=await s(W,{registry:w,aminoTypes:J}),Y=[];for(let x of T){let U=await v(x,$);Y.push(U)}let{signatures:[O]}=await k.sign(I,Y,q,_,{accountNumber:X,sequence:L,chainId:j}),N=await o({chain:$,memo:_,msgs:T.map(f)});return{signature:g6(O),bodyBytes:N}}}function c6({prefix:$,rpcUrl:z}){return async function W(H,T,X,L,j){let{encodeSecp256k1Pubkey:q,pubkeyToAddress:_}=(await import("@cosmjs/amino")).default,{makeMultisignedTxBytes:I}=(await import("@cosmjs/stargate")).default,{sequence:J,fee:w}=JSON.parse(H),k=await B6(X,L),Y=T.map((x)=>[_(q(F.base64.decode(x.pubKey)),$),F.base64.decode(x.signature)]),O=await y(z),{transactionHash:N}=await O.broadcastTx(I(k,J,w,j,new Map(Y)));return N}}async function B6($,z,W=!0){let{createMultisigThresholdPubkey:H,encodeSecp256k1Pubkey:T}=(await import("@cosmjs/amino")).default;return H($.map((X)=>T(F.base64.decode(X))),z,W)}function r6($){return F.base64.decode($)}async function t6({privateKey:$,message:z}){let{Secp256k1:W}=(await import("@cosmjs/crypto")).default,H=await W.createSignature(F.base64.decode(z),$);return F.base64.encode(Buffer.concat([H.r(32),H.s(32)]))}async function Q6({chain:$,...z}){let W=R.SKConfig.get("nodeUrls")[$],H=R.SKConfig.get("rpcUrls")[$],{isStagenet:T}=R.SKConfig.get("envs"),X=$===R.Chain.THORChain,L=`${T?"s":""}${R.CosmosChainPrefixes[$]}`,j="index"in z?z.index||0:0,q="derivationPath"in z&&z.derivationPath?z.derivationPath:R.updateDerivationPath(R.NetworkDerivationPath[$],{index:j}),_=await h({chain:$,...z}),I=await m.match(z).with({phrase:m.P.string},({phrase:Y})=>_.getSignerFromPhrase({phrase:Y,derivationPath:q})).with({signer:m.P.any},({signer:Y})=>Y).otherwise(()=>{return}),J=B($);async function w(){let Y,O=`${W}/${X?"thorchain":"mayachain"}/constants`;try{let{int_64_values:{NativeTransactionFee:N}}=await R.RequestClient.get(O);if(!N||Number.isNaN(N)||N<0)throw new R.SwapKitError("toolbox_cosmos_invalid_fee",{nativeFee:N.toString()});Y=new R.SwapKitNumber(N)}catch{Y=new R.SwapKitNumber({value:X?0.02:1,decimal:R.BaseDecimal[$]})}return{[R.FeeOption.Average]:Y,[R.FeeOption.Fast]:Y,[R.FeeOption.Fastest]:Y}}async function k({assetValue:Y,memo:O="",recipient:N}){let{TxRaw:x}=await import("cosmjs-types/cosmos/tx/v1beta1/tx"),U=(await I?.getAccounts())?.[0]?.address;if(!(U&&I))throw new R.SwapKitError("toolbox_cosmos_no_signer");let c="signAmino"in I,r=await V(),t=await K($),P=await u(H,I,{registry:r,aminoTypes:t}),n=l({assetValue:Y,sender:U,recipient:N,memo:O});if(c){let U6=await v(n,$),{signatures:A6,authInfoBytes:M6}=await P.sign(U,[U6],J,O),K6=x.encode({signatures:A6,authInfoBytes:M6,bodyBytes:await o({chain:$,msgs:[n].map(f),memo:O})}).finish();return(await P.broadcastTx(K6)).transactionHash}let y6=f(n),x6=await v(y6,$);return(await P.signAndBroadcast(U,[x6],J,O)).transactionHash}return{..._,broadcastMultisigTx:c6({prefix:L,rpcUrl:H}),buildAminoMsg:l,buildEncodedTxBody:o,convertToSignable:v,createDefaultAminoTypes:()=>K($),createDefaultRegistry:V,createMultisig:B6,createTransaction:z6(H),deposit:k,getFees:w,importSignature:r6,parseAminoMessageForDirectSigning:f,secp256k1HdWalletFromMnemonic:m6({derivationPath:R.derivationPathToString(q),prefix:L}),signMultisigTx:l6($),signWithPrivateKey:t6,transfer:k,pubkeyToAddress:async(Y)=>{let{pubkeyToAddress:O}=(await import("@cosmjs/amino")).default;return O(Y,L)}}}var n6=($,z)=>{switch($){case C.Chain.Cosmos:case C.Chain.Kujira:return h({chain:$,...z});case C.Chain.Maya:case C.Chain.THORChain:return Q6({chain:$,...z});default:throw new C.SwapKitError("toolbox_cosmos_not_supported",{chain:$})}};
2
2
 
3
- //# debugId=0EE86134E897977164756E2164756E21
3
+ //# debugId=BE9DEF82F302F3E964756E2164756E21
4
4
  //# sourceMappingURL=index.cjs.map
@@ -4,13 +4,13 @@
4
4
  "sourcesContent": [
5
5
  "import { base64, bech32 } from \"@scure/base\";\nimport { SwapKitError } from \"@swapkit/helpers\";\nimport { fromByteArray, toByteArray } from \"base64-js\";\n\nexport function bech32ToBase64(address: string) {\n return base64.encode(\n Uint8Array.from(bech32.fromWords(bech32.decode(address as `${string}1${string}`).words)),\n );\n}\n\nexport function base64ToBech32(address: string, prefix = \"thor\") {\n return bech32.encode(prefix, bech32.toWords(base64.decode(address)));\n}\n\nexport function toBase64(data: Uint8Array) {\n return fromByteArray(data);\n}\n\nexport function fromBase64(base64String: string) {\n if (!base64String.match(/^[a-zA-Z0-9+/]*={0,2}$/)) {\n throw new SwapKitError(\"toolbox_cosmos_invalid_params\", {\n error: \"Invalid base64 string format\",\n });\n }\n return toByteArray(base64String);\n}\n",
6
6
  "import type { TxBodyEncodeObject } from \"@cosmjs/proto-signing\";\nimport { AssetValue, Chain, ChainToChainId, SwapKitError } from \"@swapkit/helpers\";\n\nimport {\n createStargateClient,\n getDefaultChainFee,\n getDenomWithChain,\n getMsgSendDenom,\n} from \"../util\";\n\nimport { createDefaultAminoTypes, createDefaultRegistry } from \"./registry\";\nimport type { ThorchainCreateTransactionParams } from \"./types\";\n\ntype MsgSend = ReturnType<typeof transferMsgAmino>;\ntype MsgDeposit = ReturnType<typeof depositMsgAmino>;\ntype DirectMsgSendForBroadcast = ReturnType<typeof parseAminoMessageForDirectSigning<MsgSend>>;\ntype DirectMsgDepositForBroadcast = ReturnType<\n typeof parseAminoMessageForDirectSigning<MsgDeposit>\n>;\n\nexport const THORCHAIN_GAS_VALUE = getDefaultChainFee(Chain.THORChain).gas;\nexport const MAYA_GAS_VALUE = getDefaultChainFee(Chain.Maya).gas;\n\nexport const transferMsgAmino = ({\n sender,\n recipient,\n assetValue,\n}: {\n sender: string;\n recipient?: string;\n assetValue: AssetValue;\n}) => {\n const chain = assetValue.chain as Chain.THORChain | Chain.Maya;\n return {\n type: `${chain === Chain.Maya ? \"mayachain\" : \"thorchain\"}/MsgSend` as const,\n value: {\n from_address: sender,\n to_address: recipient,\n amount: [\n {\n amount: assetValue.getBaseValue(\"string\"),\n denom: getMsgSendDenom(assetValue.symbol, true),\n },\n ],\n },\n };\n};\n\nexport const depositMsgAmino = ({\n sender,\n assetValue,\n memo = \"\",\n}: {\n sender: string;\n assetValue: AssetValue;\n memo?: string;\n}) => {\n const chain = assetValue.chain as Chain.THORChain | Chain.Maya;\n return {\n type: `${chain === Chain.Maya ? \"mayachain\" : \"thorchain\"}/MsgDeposit` as const,\n value: {\n coins: [\n {\n amount: assetValue.getBaseValue(\"string\"),\n asset: getDenomWithChain(assetValue),\n },\n ],\n signer: sender,\n memo,\n },\n };\n};\n\nexport const buildAminoMsg = ({\n sender,\n recipient,\n assetValue,\n memo,\n}: {\n sender: string;\n recipient?: string;\n assetValue: AssetValue;\n memo?: string;\n}) => {\n const isDeposit = !recipient;\n const msg = isDeposit\n ? depositMsgAmino({ sender, assetValue, memo })\n : transferMsgAmino({ sender, recipient, assetValue });\n\n return msg;\n};\n\nexport const convertToSignable = async (\n msg: MsgSend | MsgDeposit,\n chain: Chain.THORChain | Chain.Maya,\n) => {\n const aminoTypes = await createDefaultAminoTypes(chain);\n\n return aminoTypes.fromAmino(msg);\n};\n\nconst getAccount = async ({ rpcUrl, sender }: { sender: string; rpcUrl: string }) => {\n const client = await createStargateClient(rpcUrl);\n const account = await client.getAccount(sender);\n\n if (!account) {\n throw new SwapKitError(\"toolbox_cosmos_account_not_found\", { sender });\n }\n\n return account;\n};\n\nexport function getCreateTransaction(rpcUrl: string) {\n return function createTransaction(params: ThorchainCreateTransactionParams) {\n const { assetValue, recipient, memo, sender, asSignable, asAminoMessage } = params;\n\n if (recipient) {\n return buildTransferTx(rpcUrl)({\n sender,\n recipient,\n assetValue,\n memo,\n asSignable,\n asAminoMessage,\n });\n }\n\n return buildDepositTx(rpcUrl)({\n sender,\n assetValue,\n memo,\n asSignable,\n asAminoMessage,\n });\n };\n}\n\nexport const buildTransferTx =\n (rpcUrl: string) =>\n async ({\n sender,\n recipient,\n assetValue,\n memo = \"\",\n asSignable = true,\n asAminoMessage = false,\n sequence,\n accountNumber,\n }: ThorchainCreateTransactionParams) => {\n const account = await getAccount({ rpcUrl, sender });\n const chain = assetValue.chain as Chain.THORChain | Chain.Maya;\n\n const transferMsg = transferMsgAmino({\n sender,\n recipient,\n assetValue,\n });\n\n const msg = asSignable\n ? await convertToSignable(\n asAminoMessage ? transferMsg : parseAminoMessageForDirectSigning(transferMsg),\n chain,\n )\n : transferMsg;\n\n const transaction = {\n chainId: ChainToChainId[chain],\n accountNumber: accountNumber || account.accountNumber,\n sequence: sequence || account.sequence,\n msgs: [msg],\n fee: getDefaultChainFee(assetValue.chain as Chain.THORChain | Chain.Maya),\n memo,\n };\n\n return transaction;\n };\n\nexport const buildDepositTx =\n (rpcUrl: string) =>\n async ({\n sender,\n assetValue,\n memo = \"\",\n asSignable = true,\n asAminoMessage = false,\n sequence,\n accountNumber,\n }: ThorchainCreateTransactionParams) => {\n const account = await getAccount({ rpcUrl, sender });\n const chain = assetValue.chain as Chain.THORChain | Chain.Maya;\n\n const depositMsg = depositMsgAmino({ sender, assetValue, memo });\n\n const msg = asSignable\n ? await convertToSignable(\n asAminoMessage ? depositMsg : parseAminoMessageForDirectSigning<MsgDeposit>(depositMsg),\n chain,\n )\n : depositMsg;\n\n const transaction = {\n chainId: ChainToChainId[chain],\n accountNumber: accountNumber || account.accountNumber,\n sequence: sequence || account.sequence,\n msgs: [msg],\n fee: getDefaultChainFee(assetValue.chain as Chain.THORChain | Chain.Maya),\n memo,\n };\n\n return transaction;\n };\n\nexport function parseAminoMessageForDirectSigning<T extends MsgDeposit | MsgSend>(msg: T) {\n if (msg.type === \"thorchain/MsgSend\" || msg.type === \"mayachain/MsgSend\") return msg as MsgSend;\n\n return {\n ...msg,\n value: {\n ...msg.value,\n coins: (msg as MsgDeposit).value.coins.map((coin: { asset: string; amount: string }) => {\n const assetValue = AssetValue.from({ asset: coin.asset });\n\n const symbol = (\n assetValue.isSynthetic ? assetValue.symbol.split(\"/\")?.[1] : assetValue.symbol\n )?.toUpperCase();\n const chain = (\n assetValue.isSynthetic ? assetValue.symbol.split(\"/\")?.[0] : assetValue.chain\n )?.toUpperCase();\n\n return {\n ...coin,\n asset: {\n chain,\n symbol,\n ticker: assetValue.ticker,\n synth: assetValue.isSynthetic,\n },\n };\n }),\n },\n };\n}\n\nexport async function buildEncodedTxBody({\n chain,\n memo,\n msgs,\n}: {\n msgs: DirectMsgDepositForBroadcast[] | DirectMsgSendForBroadcast[];\n memo: string;\n chain: Chain.THORChain | Chain.Maya;\n}) {\n const registry = await createDefaultRegistry();\n const aminoTypes = await createDefaultAminoTypes(chain);\n\n const signedTxBody: TxBodyEncodeObject = {\n typeUrl: \"/cosmos.tx.v1beta1.TxBody\",\n value: { memo, messages: msgs.map((msg) => aminoTypes.fromAmino(msg)) },\n };\n\n return registry.encode(signedTxBody);\n}\n",
7
- "import type { OfflineSigner } from \"@cosmjs/proto-signing\";\nimport type { SigningStargateClientOptions } from \"@cosmjs/stargate\";\nimport {\n AssetValue,\n BaseDecimal,\n Chain,\n ChainId,\n type CosmosChain,\n SKConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\n\nimport type { CosmosCreateTransactionParams } from \"./thorchainUtils\";\n\nexport const USK_KUJIRA_FACTORY_DENOM =\n \"FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK\";\n\nexport const YUM_KUJIRA_FACTORY_DENOM =\n \"FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM\";\n\nexport const DEFAULT_COSMOS_FEE_MAINNET = {\n amount: [{ denom: \"uatom\", amount: \"500\" }],\n gas: \"200000\",\n};\n\nexport const DEFAULT_KUJI_FEE_MAINNET = {\n amount: [{ denom: \"ukuji\", amount: \"1000\" }],\n gas: \"200000\",\n};\n\nexport function getDefaultChainFee(chain: CosmosChain) {\n switch (chain) {\n case Chain.Maya:\n return { amount: [], gas: \"10000000000\" };\n case Chain.THORChain:\n return { amount: [], gas: \"500000000\" };\n case Chain.Kujira:\n return DEFAULT_KUJI_FEE_MAINNET;\n default:\n return DEFAULT_COSMOS_FEE_MAINNET;\n }\n}\n\nexport const getMsgSendDenom = (symbol: string, isThorchain = false) => {\n if (isThorchain) {\n return symbol.toLowerCase();\n }\n\n switch (symbol) {\n case \"uUSK\":\n case \"USK\":\n return USK_KUJIRA_FACTORY_DENOM;\n case \"uYUM\":\n case \"YUM\":\n return YUM_KUJIRA_FACTORY_DENOM;\n case \"uKUJI\":\n case \"KUJI\":\n return \"ukuji\";\n case \"ATOM\":\n case \"uATOM\":\n return \"uatom\";\n default:\n return symbol;\n }\n};\n\nexport const getDenomWithChain = ({ symbol, chain }: AssetValue) => {\n if (chain === Chain.Maya) {\n return (symbol.toUpperCase() !== \"CACAO\" ? symbol : `${Chain.Maya}.${symbol}`).toUpperCase();\n }\n if (chain === Chain.THORChain) {\n return (\n [\"RUNE\", \"TCY\", \"RUJI\"].includes(symbol.toUpperCase())\n ? `${Chain.THORChain}.${symbol}`\n : symbol\n ).toUpperCase();\n }\n return getMsgSendDenom(symbol, false);\n};\n\nexport async function createStargateClient(url: string) {\n const { StargateClient } = await import(\"@cosmjs/stargate\");\n\n const defaultRequestHeaders =\n typeof window !== \"undefined\"\n ? ({} as Record<string, string>)\n : { referrer: \"https://sdk.swapkit.dev\", referer: \"https://sdk.swapkit.dev\" };\n\n return StargateClient.connect({\n url,\n headers: defaultRequestHeaders,\n });\n}\n\nexport async function createSigningStargateClient(\n url: string,\n signer: OfflineSigner,\n optionsOrBaseGas: string | SigningStargateClientOptions = {},\n) {\n const { SigningStargateClient, GasPrice } = (await import(\"@cosmjs/stargate\")).default;\n const gasPrice = typeof optionsOrBaseGas === \"string\" ? optionsOrBaseGas : \"0.0003uatom\";\n const options = typeof optionsOrBaseGas === \"string\" ? {} : optionsOrBaseGas;\n\n return SigningStargateClient.connectWithSigner(url, signer, {\n gasPrice: GasPrice.fromString(gasPrice),\n ...options,\n });\n}\n\nexport async function createOfflineStargateClient(\n wallet: OfflineSigner,\n registry?: SigningStargateClientOptions,\n) {\n const { SigningStargateClient } = (await import(\"@cosmjs/stargate\")).default;\n\n return SigningStargateClient.offline(wallet, registry);\n}\n\nexport const getRPC = (chainId: ChainId) => {\n const { isStagenet } = SKConfig.get(\"envs\");\n const rpcUrls = SKConfig.get(\"rpcUrls\");\n\n switch (chainId) {\n case ChainId.Kujira:\n return rpcUrls.KUJI;\n\n case ChainId.THORChain:\n case \"thorchain-mainnet-v1\" as ChainId:\n return isStagenet ? rpcUrls.THOR_STAGENET : rpcUrls.THOR;\n case ChainId.Maya:\n return isStagenet ? rpcUrls.MAYA_STAGENET : rpcUrls.MAYA;\n\n default:\n return rpcUrls.GAIA;\n }\n};\n\nconst getTransferMsgTypeByChain = (chain: CosmosChain) => {\n switch (chain) {\n case Chain.Maya:\n case Chain.THORChain:\n return \"/types.MsgSend\";\n case Chain.Cosmos:\n case Chain.Kujira:\n return \"/cosmos.bank.v1beta1.MsgSend\";\n default:\n throw new SwapKitError(\"toolbox_cosmos_not_supported\", { chain });\n }\n};\n\n/**\n * Used to build tx for Cosmos and Kujira\n */\nexport const cosmosCreateTransaction = async ({\n sender,\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n sequence,\n accountNumber,\n}: CosmosCreateTransactionParams) => {\n const { chain, chainId } = assetValue;\n\n const url = getRPC(chainId);\n const client = await createStargateClient(url);\n const accountOnChain = await client.getAccount(sender);\n\n if (!accountOnChain) {\n throw new SwapKitError(\"toolbox_cosmos_account_not_found\", { sender });\n }\n\n const gasAsset = AssetValue.from({ chain });\n const feeAsset = getMsgSendDenom(gasAsset.symbol);\n const defaultFee = getDefaultChainFee(chain as CosmosChain);\n\n const txFee =\n feeAsset && feeRate\n ? { amount: [{ denom: feeAsset, amount: feeRate.toString() }], gas: defaultFee.gas }\n : defaultFee;\n\n const msgSend = {\n fromAddress: sender,\n toAddress: recipient,\n amount: [\n { amount: assetValue.getBaseValue(\"string\"), denom: getMsgSendDenom(assetValue.symbol) },\n ],\n };\n\n return {\n accountNumber: accountNumber ?? accountOnChain.accountNumber,\n chainId,\n fee: txFee,\n memo,\n sequence: sequence ?? accountOnChain.sequence,\n msgs: [{ typeUrl: getTransferMsgTypeByChain(chain as CosmosChain), value: msgSend }],\n };\n};\n\n// Map of known denoms to their asset configurations\nconst DENOM_MAP = {\n // THORChain denoms\n rune: { chain: Chain.THORChain, decimals: BaseDecimal[Chain.THORChain] },\n tcy: { asset: \"THOR.TCY\", decimals: BaseDecimal[Chain.THORChain] },\n \"x/kuji\": { asset: \"THOR.KUJI\", decimals: BaseDecimal[Chain.THORChain] },\n\n // Cosmos denoms\n uatom: { chain: Chain.Cosmos, decimals: BaseDecimal[Chain.Cosmos] },\n atom: { chain: Chain.Cosmos, decimals: BaseDecimal[Chain.Cosmos] },\n\n // Maya denoms\n cacao: { chain: Chain.Maya, decimals: 10 }, // Maya uses 10 decimals for CACAO\n maya: { asset: `${Chain.Maya}.${Chain.Maya}`, decimals: 4 }, // MAYA token uses 4 decimals\n\n // Kujira denoms\n ukuji: { chain: Chain.Kujira, decimals: BaseDecimal[Chain.Kujira] },\n kuji: { chain: Chain.Kujira, decimals: BaseDecimal[Chain.Kujira] },\n\n // USK on Kujira (lowercase version of the factory denom)\n [USK_KUJIRA_FACTORY_DENOM.toLowerCase()]: {\n asset: `${Chain.Kujira}.USK`,\n decimals: BaseDecimal[Chain.Kujira],\n },\n};\n\n/**\n * Converts a Cosmos denom and amount to an AssetValue with proper decimal handling\n * @param denom - The denomination string\n * @param amount - The amount in base units as a string\n * @returns AssetValue with the correct decimal conversion\n */\nexport const getAssetFromDenom = (denom: string, amount: string) => {\n const config = DENOM_MAP[denom.toLowerCase()];\n\n if (!config) {\n // For unknown denoms, default to 8 decimals (common for many Cosmos chains)\n // This preserves the original behavior while using fromBaseDecimal\n return AssetValue.from({\n asset: denom,\n value: amount,\n fromBaseDecimal: 8,\n });\n }\n\n const { chain, asset, decimals } = config;\n\n const assetOrChain = (\n chain\n ? {\n chain,\n }\n : { asset }\n ) as { asset: string } | { chain: CosmosChain };\n\n return AssetValue.from({\n ...assetOrChain,\n value: amount,\n fromBaseDecimal: decimals,\n });\n};\n",
8
- "import { Chain } from \"@swapkit/helpers\";\nimport { base64ToBech32, bech32ToBase64 } from \"./addressFormat\";\n\nexport async function createDefaultRegistry() {\n const { $root } = await import(\"./types/MsgCompiled\");\n const { Registry } = (await import(\"@cosmjs/proto-signing\")).default;\n const { defaultRegistryTypes } = (await import(\"@cosmjs/stargate\")).default;\n\n return new Registry([\n ...defaultRegistryTypes,\n [\"/types.MsgSend\", $root.types.MsgSend],\n [\"/types.MsgDeposit\", $root.types.MsgDeposit],\n ]);\n}\n\nexport async function createDefaultAminoTypes(chain: Chain.THORChain | Chain.Maya) {\n const { AminoTypes } = (await import(\"@cosmjs/stargate\")).default;\n const aminoTypePrefix = chain === Chain.THORChain ? \"thorchain\" : \"mayachain\";\n\n return new AminoTypes({\n \"/types.MsgSend\": {\n aminoType: `${aminoTypePrefix}/MsgSend`,\n toAmino: ({ fromAddress, toAddress, ...rest }: any) => ({\n ...rest,\n from_address: base64ToBech32(fromAddress),\n to_address: base64ToBech32(toAddress),\n }),\n fromAmino: ({ from_address, to_address, ...rest }: any) => ({\n ...rest,\n fromAddress: bech32ToBase64(from_address),\n toAddress: bech32ToBase64(to_address),\n }),\n },\n \"/types.MsgDeposit\": {\n aminoType: `${aminoTypePrefix}/MsgDeposit`,\n toAmino: ({ signer, ...rest }: any) => ({ ...rest, signer: base64ToBech32(signer) }),\n fromAmino: ({ signer, ...rest }: any) => ({ ...rest, signer: bech32ToBase64(signer) }),\n },\n });\n}\n",
7
+ "import type { OfflineSigner } from \"@cosmjs/proto-signing\";\nimport type { SigningStargateClientOptions } from \"@cosmjs/stargate\";\nimport {\n AssetValue,\n BaseDecimal,\n Chain,\n ChainId,\n type CosmosChain,\n SKConfig,\n SwapKitError,\n} from \"@swapkit/helpers\";\n\nimport type { CosmosCreateTransactionParams } from \"./thorchainUtils\";\n\nexport const USK_KUJIRA_FACTORY_DENOM =\n \"FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK\";\n\nexport const YUM_KUJIRA_FACTORY_DENOM =\n \"FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM\";\n\nexport const DEFAULT_COSMOS_FEE_MAINNET = {\n amount: [{ denom: \"uatom\", amount: \"500\" }],\n gas: \"200000\",\n};\n\nexport const DEFAULT_KUJI_FEE_MAINNET = {\n amount: [{ denom: \"ukuji\", amount: \"1000\" }],\n gas: \"200000\",\n};\n\nexport function getDefaultChainFee(chain: CosmosChain) {\n switch (chain) {\n case Chain.Maya:\n return { amount: [], gas: \"10000000000\" };\n case Chain.THORChain:\n return { amount: [], gas: \"500000000\" };\n case Chain.Kujira:\n return DEFAULT_KUJI_FEE_MAINNET;\n default:\n return DEFAULT_COSMOS_FEE_MAINNET;\n }\n}\n\nexport const getMsgSendDenom = (symbol: string, isThorchain = false) => {\n if (isThorchain) {\n return symbol.toLowerCase();\n }\n\n switch (symbol) {\n case \"uUSK\":\n case \"USK\":\n return USK_KUJIRA_FACTORY_DENOM;\n case \"uYUM\":\n case \"YUM\":\n return YUM_KUJIRA_FACTORY_DENOM;\n case \"uKUJI\":\n case \"KUJI\":\n return \"ukuji\";\n case \"ATOM\":\n case \"uATOM\":\n return \"uatom\";\n default:\n return symbol;\n }\n};\n\nexport const getDenomWithChain = ({ symbol, chain }: AssetValue) => {\n if (chain === Chain.Maya) {\n return (symbol.toUpperCase() !== \"CACAO\" ? symbol : `${Chain.Maya}.${symbol}`).toUpperCase();\n }\n if (chain === Chain.THORChain) {\n return (\n [\"RUNE\", \"TCY\", \"RUJI\"].includes(symbol.toUpperCase())\n ? `${Chain.THORChain}.${symbol}`\n : symbol\n ).toUpperCase();\n }\n return getMsgSendDenom(symbol, false);\n};\n\nexport async function createStargateClient(url: string) {\n const imported = await import(\"@cosmjs/stargate\");\n\n const StargateClient = imported.StargateClient ?? imported.default?.StargateClient;\n\n const defaultRequestHeaders =\n typeof window !== \"undefined\"\n ? ({} as Record<string, string>)\n : { referrer: \"https://sdk.swapkit.dev\", referer: \"https://sdk.swapkit.dev\" };\n\n return StargateClient.connect({\n url,\n headers: defaultRequestHeaders,\n });\n}\n\nexport async function createSigningStargateClient(\n url: string,\n signer: OfflineSigner,\n optionsOrBaseGas: string | SigningStargateClientOptions = {},\n) {\n const imported = await import(\"@cosmjs/stargate\");\n const SigningStargateClient =\n imported.SigningStargateClient ?? imported.default?.SigningStargateClient;\n const GasPrice = imported.GasPrice ?? imported.default?.GasPrice;\n const gasPrice = typeof optionsOrBaseGas === \"string\" ? optionsOrBaseGas : \"0.0003uatom\";\n const options = typeof optionsOrBaseGas === \"string\" ? {} : optionsOrBaseGas;\n\n return SigningStargateClient.connectWithSigner(url, signer, {\n gasPrice: GasPrice.fromString(gasPrice),\n ...options,\n });\n}\n\nexport async function createOfflineStargateClient(\n wallet: OfflineSigner,\n registry?: SigningStargateClientOptions,\n) {\n const imported = await import(\"@cosmjs/stargate\");\n const SigningStargateClient =\n imported.SigningStargateClient ?? imported.default?.SigningStargateClient;\n return SigningStargateClient.offline(wallet, registry);\n}\n\nexport const getRPC = (chainId: ChainId) => {\n const { isStagenet } = SKConfig.get(\"envs\");\n const rpcUrls = SKConfig.get(\"rpcUrls\");\n\n switch (chainId) {\n case ChainId.Kujira:\n return rpcUrls.KUJI;\n\n case ChainId.THORChain:\n case \"thorchain-mainnet-v1\" as ChainId:\n return isStagenet ? rpcUrls.THOR_STAGENET : rpcUrls.THOR;\n case ChainId.Maya:\n return isStagenet ? rpcUrls.MAYA_STAGENET : rpcUrls.MAYA;\n\n default:\n return rpcUrls.GAIA;\n }\n};\n\nconst getTransferMsgTypeByChain = (chain: CosmosChain) => {\n switch (chain) {\n case Chain.Maya:\n case Chain.THORChain:\n return \"/types.MsgSend\";\n case Chain.Cosmos:\n case Chain.Kujira:\n return \"/cosmos.bank.v1beta1.MsgSend\";\n default:\n throw new SwapKitError(\"toolbox_cosmos_not_supported\", { chain });\n }\n};\n\n/**\n * Used to build tx for Cosmos and Kujira\n */\nexport const cosmosCreateTransaction = async ({\n sender,\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n sequence,\n accountNumber,\n}: CosmosCreateTransactionParams) => {\n const { chain, chainId } = assetValue;\n\n const url = getRPC(chainId);\n const client = await createStargateClient(url);\n const accountOnChain = await client.getAccount(sender);\n\n if (!accountOnChain) {\n throw new SwapKitError(\"toolbox_cosmos_account_not_found\", { sender });\n }\n\n const gasAsset = AssetValue.from({ chain });\n const feeAsset = getMsgSendDenom(gasAsset.symbol);\n const defaultFee = getDefaultChainFee(chain as CosmosChain);\n\n const txFee =\n feeAsset && feeRate\n ? { amount: [{ denom: feeAsset, amount: feeRate.toString() }], gas: defaultFee.gas }\n : defaultFee;\n\n const msgSend = {\n fromAddress: sender,\n toAddress: recipient,\n amount: [\n { amount: assetValue.getBaseValue(\"string\"), denom: getMsgSendDenom(assetValue.symbol) },\n ],\n };\n\n return {\n accountNumber: accountNumber ?? accountOnChain.accountNumber,\n chainId,\n fee: txFee,\n memo,\n sequence: sequence ?? accountOnChain.sequence,\n msgs: [{ typeUrl: getTransferMsgTypeByChain(chain as CosmosChain), value: msgSend }],\n };\n};\n\n// Map of known denoms to their asset configurations\nconst DENOM_MAP = {\n // THORChain denoms\n rune: { chain: Chain.THORChain, decimals: BaseDecimal[Chain.THORChain] },\n tcy: { asset: \"THOR.TCY\", decimals: BaseDecimal[Chain.THORChain] },\n \"x/kuji\": { asset: \"THOR.KUJI\", decimals: BaseDecimal[Chain.THORChain] },\n\n // Cosmos denoms\n uatom: { chain: Chain.Cosmos, decimals: BaseDecimal[Chain.Cosmos] },\n atom: { chain: Chain.Cosmos, decimals: BaseDecimal[Chain.Cosmos] },\n\n // Maya denoms\n cacao: { chain: Chain.Maya, decimals: 10 }, // Maya uses 10 decimals for CACAO\n maya: { asset: `${Chain.Maya}.${Chain.Maya}`, decimals: 4 }, // MAYA token uses 4 decimals\n\n // Kujira denoms\n ukuji: { chain: Chain.Kujira, decimals: BaseDecimal[Chain.Kujira] },\n kuji: { chain: Chain.Kujira, decimals: BaseDecimal[Chain.Kujira] },\n\n // USK on Kujira (lowercase version of the factory denom)\n [USK_KUJIRA_FACTORY_DENOM.toLowerCase()]: {\n asset: `${Chain.Kujira}.USK`,\n decimals: BaseDecimal[Chain.Kujira],\n },\n};\n\n/**\n * Converts a Cosmos denom and amount to an AssetValue with proper decimal handling\n * @param denom - The denomination string\n * @param amount - The amount in base units as a string\n * @returns AssetValue with the correct decimal conversion\n */\nexport const getAssetFromDenom = (denom: string, amount: string) => {\n const config = DENOM_MAP[denom.toLowerCase()];\n\n if (!config) {\n // For unknown denoms, default to 8 decimals (common for many Cosmos chains)\n // This preserves the original behavior while using fromBaseDecimal\n return AssetValue.from({\n asset: denom,\n value: amount,\n fromBaseDecimal: 8,\n });\n }\n\n const { chain, asset, decimals } = config;\n\n const assetOrChain = (\n chain\n ? {\n chain,\n }\n : { asset }\n ) as { asset: string } | { chain: CosmosChain };\n\n return AssetValue.from({\n ...assetOrChain,\n value: amount,\n fromBaseDecimal: decimals,\n });\n};\n",
8
+ "import { Chain } from \"@swapkit/helpers\";\nimport { base64ToBech32, bech32ToBase64 } from \"./addressFormat\";\n\nexport async function createDefaultRegistry() {\n const { $root } = await import(\"./types/MsgCompiled\");\n const importedProtoSigning = await import(\"@cosmjs/proto-signing\");\n const Registry = importedProtoSigning.Registry ?? importedProtoSigning.default?.Registry;\n const importedStargate = await import(\"@cosmjs/stargate\");\n const defaultRegistryTypes =\n importedStargate.defaultRegistryTypes ?? importedStargate.default?.defaultRegistryTypes;\n\n return new Registry([\n ...defaultRegistryTypes,\n [\"/types.MsgSend\", $root.types.MsgSend],\n [\"/types.MsgDeposit\", $root.types.MsgDeposit],\n ]);\n}\n\nexport async function createDefaultAminoTypes(chain: Chain.THORChain | Chain.Maya) {\n const imported = await import(\"@cosmjs/stargate\");\n const AminoTypes = imported.AminoTypes ?? imported.default?.AminoTypes;\n const aminoTypePrefix = chain === Chain.THORChain ? \"thorchain\" : \"mayachain\";\n\n return new AminoTypes({\n \"/types.MsgSend\": {\n aminoType: `${aminoTypePrefix}/MsgSend`,\n toAmino: ({ fromAddress, toAddress, ...rest }: any) => ({\n ...rest,\n from_address: base64ToBech32(fromAddress),\n to_address: base64ToBech32(toAddress),\n }),\n fromAmino: ({ from_address, to_address, ...rest }: any) => ({\n ...rest,\n fromAddress: bech32ToBase64(from_address),\n toAddress: bech32ToBase64(to_address),\n }),\n },\n \"/types.MsgDeposit\": {\n aminoType: `${aminoTypePrefix}/MsgDeposit`,\n toAmino: ({ signer, ...rest }: any) => ({ ...rest, signer: base64ToBech32(signer) }),\n fromAmino: ({ signer, ...rest }: any) => ({ ...rest, signer: bech32ToBase64(signer) }),\n },\n });\n}\n",
9
9
  "import { Chain, type CosmosChain, SwapKitError } from \"@swapkit/helpers\";\n\nimport type { CosmosToolboxParams } from \"../types\";\nimport { createCosmosToolbox } from \"./cosmos\";\nimport { createThorchainToolbox } from \"./thorchain\";\n\nexport type CosmosToolboxes = {\n GAIA: ReturnType<typeof createCosmosToolbox>;\n KUJI: ReturnType<typeof createCosmosToolbox>;\n MAYA: ReturnType<typeof createThorchainToolbox>;\n THOR: ReturnType<typeof createThorchainToolbox>;\n};\n\nexport const getCosmosToolbox = <T extends CosmosChain>(\n chain: T,\n params?: Omit<CosmosToolboxParams, \"chain\">,\n): CosmosToolboxes[T] => {\n switch (chain) {\n case Chain.Cosmos:\n case Chain.Kujira:\n return createCosmosToolbox({ chain, ...params }) as CosmosToolboxes[T];\n\n case Chain.Maya:\n case Chain.THORChain:\n return createThorchainToolbox({ chain, ...params }) as CosmosToolboxes[T];\n\n default:\n throw new SwapKitError(\"toolbox_cosmos_not_supported\", { chain });\n }\n};\n\nexport * from \"./cosmos\";\nexport * from \"./thorchain\";\n",
10
- "import type { StdFee } from \"@cosmjs/amino\";\nimport type { Account } from \"@cosmjs/stargate\";\nimport { base64, bech32 } from \"@scure/base\";\nimport {\n AssetValue,\n BaseDecimal,\n Chain,\n type ChainId,\n ChainToChainId,\n type CosmosChain,\n CosmosChainPrefixes,\n DerivationPath,\n type DerivationPathArray,\n FeeOption,\n type GenericTransferParams,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n SwapKitNumber,\n applyFeeMultiplier,\n derivationPathToString,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\nimport { P, match } from \"ts-pattern\";\nimport type { CosmosToolboxParams } from \"../types\";\nimport {\n cosmosCreateTransaction,\n createSigningStargateClient,\n createStargateClient,\n getAssetFromDenom,\n getDenomWithChain,\n getMsgSendDenom,\n} from \"../util\";\n\nexport async function fetchFeeRateFromSwapKit(chainId: ChainId, safeDefault: number) {\n try {\n const response = await SwapKitApi.getGasRate();\n const responseGasRate = response.find((gas) => gas.chainId === chainId)?.value;\n\n return responseGasRate ? Number.parseFloat(responseGasRate) : safeDefault;\n } catch (_e) {\n return safeDefault;\n }\n}\n\nexport async function getSignerFromPhrase({\n phrase,\n prefix,\n ...derivationParams\n}: { phrase: string; prefix?: string } & (\n | { chain: Chain; index?: number }\n | { derivationPath: string }\n)) {\n const { DirectSecp256k1HdWallet } = (await import(\"@cosmjs/proto-signing\")).default;\n const { stringToPath } = (await import(\"@cosmjs/crypto\")).default;\n\n const derivationPath =\n \"derivationPath\" in derivationParams\n ? derivationParams.derivationPath\n : `${DerivationPath[derivationParams.chain]}/${derivationParams.index}`;\n\n return DirectSecp256k1HdWallet.fromMnemonic(phrase, {\n prefix,\n hdPaths: [stringToPath(derivationPath)],\n });\n}\n\nexport async function getSignerFromPrivateKey({\n privateKey,\n prefix,\n}: {\n privateKey: Uint8Array;\n prefix: string;\n}) {\n const { DirectSecp256k1Wallet } = (await import(\"@cosmjs/proto-signing\")).default;\n\n return DirectSecp256k1Wallet.fromKey(privateKey, prefix);\n}\n\nconst SafeDefaultFeeValues = {\n [Chain.Cosmos]: 500,\n [Chain.Kujira]: 1000,\n [Chain.THORChain]: 5000000,\n [Chain.Maya]: 5000000,\n};\n\nexport function verifySignature(getAccount: (address: string) => Promise<Account | null>) {\n return async function verifySignature({\n signature,\n message,\n address,\n }: {\n signature: string;\n message: string;\n address: string;\n }) {\n const account = await getAccount(address);\n if (!account?.pubkey) throw new SwapKitError(\"toolbox_cosmos_verify_signature_no_pubkey\");\n const { Secp256k1Signature, Secp256k1 } = (await import(\"@cosmjs/crypto\")).default;\n\n const secpSignature = Secp256k1Signature.fromFixedLength(base64.decode(signature));\n return Secp256k1.verifySignature(secpSignature, base64.decode(message), account.pubkey.value);\n };\n}\n\nexport async function createCosmosToolbox({ chain, ...toolboxParams }: CosmosToolboxParams) {\n const rpcUrl = SKConfig.get(\"rpcUrls\")[chain];\n const chainPrefix = CosmosChainPrefixes[chain];\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n const derivationPath = derivationPathToString(\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index }),\n );\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) =>\n getSignerFromPhrase({ phrase, prefix: chainPrefix, derivationPath }),\n )\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n async function getAccount(address: string) {\n const client = await createStargateClient(rpcUrl);\n return client.getAccount(address);\n }\n\n async function getAddress() {\n const [account] = (await signer?.getAccounts()) || [];\n return account?.address;\n }\n\n async function getPubKey() {\n const [account] = (await signer?.getAccounts()) || [];\n if (!account?.pubkey) {\n throw new SwapKitError(\"toolbox_cosmos_signer_not_defined\");\n }\n return base64.encode(account?.pubkey);\n }\n\n async function transfer({\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n feeOptionKey = FeeOption.Fast,\n }: GenericTransferParams) {\n const from = await getAddress();\n\n if (!(signer && from)) {\n throw new SwapKitError(\"toolbox_cosmos_signer_not_defined\");\n }\n\n const feeAssetValue = AssetValue.from({\n chain,\n });\n const assetDenom = getDenomWithChain(feeAssetValue);\n\n const txFee =\n feeRate ||\n feeToStdFee((await getFees(chain, SafeDefaultFeeValues[chain]))[feeOptionKey], assetDenom);\n\n const signingClient = await createSigningStargateClient(rpcUrl, signer);\n const message = [\n {\n denom: getMsgSendDenom(`u${assetValue.symbol}`).toLowerCase(),\n amount: assetValue.getBaseValue(\"string\"),\n },\n ];\n\n const { transactionHash } = await signingClient.sendTokens(\n from,\n recipient,\n message,\n txFee,\n memo,\n );\n\n return transactionHash;\n }\n\n return {\n transfer,\n getAddress,\n getAccount,\n getBalance: async (address: string, _potentialScamFilter?: boolean) => {\n const denomBalances = await cosmosBalanceDenomsGetter(rpcUrl)(address);\n return await Promise.all(\n denomBalances\n .filter(({ denom }) => denom && !denom.includes(\"IBC/\"))\n .map(({ denom, amount }) => {\n const fullDenom =\n [Chain.THORChain, Chain.Maya].includes(chain) &&\n (denom.includes(\"/\") || denom.includes(\"˜\"))\n ? `${chain}.${denom}`\n : denom;\n return getAssetFromDenom(fullDenom, amount);\n }),\n );\n },\n getSignerFromPhrase: async ({\n phrase,\n derivationPath,\n }: { phrase: string; derivationPath: DerivationPathArray }) =>\n getSignerFromPhrase({\n phrase,\n prefix: chainPrefix,\n derivationPath: derivationPathToString(derivationPath),\n index,\n }),\n getSignerFromPrivateKey: async (privateKey: Uint8Array) => {\n const { DirectSecp256k1Wallet } = (await import(\"@cosmjs/proto-signing\")).default;\n return DirectSecp256k1Wallet.fromKey(privateKey, chainPrefix);\n },\n createPrivateKeyFromPhrase: createPrivateKeyFromPhrase(derivationPath),\n validateAddress: getCosmosValidateAddress(chainPrefix),\n getPubKey,\n getFees: () => getFees(chain, SafeDefaultFeeValues[chain]),\n fetchFeeRateFromSwapKit,\n getBalanceAsDenoms: cosmosBalanceDenomsGetter(rpcUrl),\n createTransaction: cosmosCreateTransaction,\n verifySignature: verifySignature(getAccount),\n };\n}\n\nexport async function getFeeRateFromSwapKit(chainId: ChainId, safeDefault: number) {\n try {\n const response = await SwapKitApi.getGasRate();\n const responseGasRate = response.find((gas) => gas.chainId === chainId)?.value;\n\n return responseGasRate ? Number.parseFloat(responseGasRate) : safeDefault;\n } catch (_e) {\n return safeDefault;\n }\n}\n\n/**\n * @deprecated use getFeeRateFromSwapKit instead\n */\nexport const getFeeRateFromThorswap = getFeeRateFromSwapKit;\n\nexport function cosmosValidateAddress({\n address,\n chain,\n prefix: chainPrefix,\n}: { address: string } & (\n | { prefix: string; chain?: undefined }\n | { chain: CosmosChain; prefix?: undefined }\n)) {\n const prefix = chainPrefix || getPrefix(chain);\n\n if (!(prefix && address)) {\n throw new SwapKitError(\"toolbox_cosmos_validate_address_prefix_not_found\");\n }\n\n return getCosmosValidateAddress(prefix)(address);\n}\n\nexport function estimateTransactionFee({\n assetValue: { chain },\n}: {\n assetValue: AssetValue;\n}) {\n return AssetValue.from({ chain, value: getMinTransactionFee(chain) });\n}\n\nfunction getPrefix<C extends CosmosChain>(chain?: C) {\n const { isStagenet } = SKConfig.get(\"envs\");\n const useStagenetPrefix = chain\n ? [Chain.THORChain, Chain.Maya].includes(chain) && isStagenet\n : false;\n const basePrefix = chain ? CosmosChainPrefixes[chain] : undefined;\n\n return useStagenetPrefix ? `s${basePrefix}` : basePrefix;\n}\n\nasync function getFees(chain: Chain, safeDefault: number) {\n const baseFee = await fetchFeeRateFromSwapKit(ChainToChainId[chain], safeDefault);\n return {\n average: SwapKitNumber.fromBigInt(BigInt(baseFee), BaseDecimal[chain]),\n fast: SwapKitNumber.fromBigInt(\n BigInt(applyFeeMultiplier(baseFee, FeeOption.Fast, true)),\n BaseDecimal[chain],\n ),\n fastest: SwapKitNumber.fromBigInt(\n BigInt(applyFeeMultiplier(baseFee, FeeOption.Fastest, true)),\n BaseDecimal[chain],\n ),\n } as { [key in FeeOption]: SwapKitNumber };\n}\n\nfunction feeToStdFee(fee: SwapKitNumber, denom: string): StdFee {\n return {\n amount: [{ denom, amount: fee.getBaseValue(\"string\") }],\n gas: \"200000\",\n };\n}\n\nfunction getMinTransactionFee(chain: Chain) {\n return (\n {\n [Chain.Cosmos]: 0.007,\n [Chain.Kujira]: 0.02,\n [Chain.THORChain]: 0.02,\n [Chain.Maya]: 0.02,\n }[chain as CosmosChain] || 0\n );\n}\n\nfunction getCosmosValidateAddress(prefix: string) {\n return function validateAddress(address: string) {\n if (!address.startsWith(prefix)) return false;\n\n try {\n const { prefix, words } = bech32.decode(address as `${string}1${string}`);\n const normalized = bech32.encode(prefix, words);\n\n return normalized === address.toLocaleLowerCase();\n } catch (_error) {\n return false;\n }\n };\n}\n\nfunction cosmosBalanceDenomsGetter(rpcUrl: string) {\n return async function getCosmosBalanceDenoms(address: string) {\n const client = await createStargateClient(rpcUrl);\n const allBalances = await client.getAllBalances(address);\n\n const balances = allBalances.map((balance) => ({\n ...balance,\n denom: balance.denom.includes(\"/\") ? balance.denom.toUpperCase() : balance.denom,\n }));\n\n return balances;\n };\n}\n\nfunction createPrivateKeyFromPhrase(derivationPath: string) {\n return async function createPrivateKeyFromPhrase(phrase: string) {\n const { Bip39, EnglishMnemonic, Slip10, Slip10Curve, stringToPath } = (\n await import(\"@cosmjs/crypto\")\n ).default;\n\n const mnemonicChecked = new EnglishMnemonic(phrase);\n const seed = await Bip39.mnemonicToSeed(mnemonicChecked);\n\n const { privkey } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n stringToPath(derivationPath),\n );\n\n return privkey;\n };\n}\n",
11
- "import type { Pubkey, Secp256k1HdWallet } from \"@cosmjs/amino\";\nimport { base64 } from \"@scure/base\";\nimport {\n BaseDecimal,\n Chain,\n CosmosChainPrefixes,\n FeeOption,\n type GenericTransferParams,\n NetworkDerivationPath,\n RequestClient,\n SKConfig,\n SwapKitError,\n SwapKitNumber,\n derivationPathToString,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\n\nimport { P, match } from \"ts-pattern\";\nimport {\n buildAminoMsg,\n buildEncodedTxBody,\n convertToSignable,\n createDefaultAminoTypes,\n createDefaultRegistry,\n getCreateTransaction,\n parseAminoMessageForDirectSigning,\n} from \"../thorchainUtils\";\nimport type { ThorchainConstantsResponse } from \"../thorchainUtils/types/client-types\";\nimport type { MultisigTx } from \"../types\";\nimport type { CosmosToolboxParams, MultiSigSigner } from \"../types\";\nimport {\n createOfflineStargateClient,\n createSigningStargateClient,\n createStargateClient,\n getDefaultChainFee,\n} from \"../util\";\nimport { createCosmosToolbox } from \"./cosmos\";\n\nfunction secp256k1HdWalletFromMnemonic({\n prefix,\n derivationPath,\n}: {\n prefix: string;\n derivationPath?: string;\n}) {\n return async function secp256k1HdWalletFromMnemonic(mnemonic: string, index = 0) {\n const { Secp256k1HdWallet } = (await import(\"@cosmjs/amino\")).default;\n const { stringToPath } = (await import(\"@cosmjs/crypto\")).default;\n\n return Secp256k1HdWallet.fromMnemonic(mnemonic, {\n hdPaths: [stringToPath(`${derivationPath}/${index}`)],\n prefix,\n });\n };\n}\n\nfunction exportSignature(signature: Uint8Array) {\n return base64.encode(signature);\n}\n\nfunction signMultisigTx(chain: Chain.THORChain | Chain.Maya) {\n return async function signMultisigTx({\n wallet,\n tx,\n }: {\n wallet: Secp256k1HdWallet;\n tx: string | MultisigTx;\n }) {\n const { msgs, accountNumber, sequence, chainId, fee, memo } =\n typeof tx === \"string\" ? JSON.parse(tx) : tx;\n\n const address = (await wallet.getAccounts())?.[0]?.address || \"\";\n const aminoTypes = await createDefaultAminoTypes(chain);\n const registry = await createDefaultRegistry();\n const signingClient = await createOfflineStargateClient(wallet, {\n registry,\n aminoTypes,\n });\n const msgForSigning = [];\n\n for (const msg of msgs) {\n const signMsg = await convertToSignable(msg, chain);\n msgForSigning.push(signMsg);\n }\n\n const {\n signatures: [signature],\n } = await signingClient.sign(address, msgForSigning, fee, memo, {\n accountNumber,\n sequence,\n chainId,\n });\n\n const bodyBytes = await buildEncodedTxBody({\n chain,\n memo,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n });\n\n return { signature: exportSignature(signature as Uint8Array), bodyBytes };\n };\n}\n\nfunction broadcastMultisigTx({\n prefix,\n rpcUrl,\n}: {\n prefix: string;\n rpcUrl: string;\n}) {\n return async function broadcastMultisigTx(\n tx: string,\n signers: MultiSigSigner[],\n membersPubKeys: string[],\n threshold: number,\n bodyBytes: Uint8Array,\n ) {\n const { encodeSecp256k1Pubkey, pubkeyToAddress } = (await import(\"@cosmjs/amino\")).default;\n const { makeMultisignedTxBytes } = (await import(\"@cosmjs/stargate\")).default;\n\n const { sequence, fee } = JSON.parse(tx);\n const multisigPubkey = await createMultisig(membersPubKeys, threshold);\n\n const addressesAndSignatures: [string, Uint8Array][] = signers.map((signer) => [\n pubkeyToAddress(encodeSecp256k1Pubkey(base64.decode(signer.pubKey)), prefix),\n base64.decode(signer.signature),\n ]);\n\n const broadcaster = await createStargateClient(rpcUrl);\n\n const { transactionHash } = await broadcaster.broadcastTx(\n makeMultisignedTxBytes(\n multisigPubkey,\n sequence,\n fee,\n bodyBytes,\n new Map<string, Uint8Array>(addressesAndSignatures),\n ),\n );\n\n return transactionHash;\n };\n}\n\nasync function createMultisig(pubKeys: string[], threshold: number, noSortPubKeys = true) {\n const { createMultisigThresholdPubkey, encodeSecp256k1Pubkey } = (await import(\"@cosmjs/amino\"))\n .default;\n return createMultisigThresholdPubkey(\n pubKeys.map((pubKey) => encodeSecp256k1Pubkey(base64.decode(pubKey))),\n threshold,\n noSortPubKeys,\n );\n}\n\nfunction importSignature(signature: string) {\n return base64.decode(signature);\n}\n\nasync function signWithPrivateKey({\n privateKey,\n message,\n}: {\n privateKey: Uint8Array;\n message: string;\n}) {\n const { Secp256k1 } = (await import(\"@cosmjs/crypto\")).default;\n\n const signature = await Secp256k1.createSignature(base64.decode(message), privateKey);\n return base64.encode(Buffer.concat([signature.r(32), signature.s(32)]));\n}\n\nexport async function createThorchainToolbox({\n chain,\n ...toolboxParams\n}: CosmosToolboxParams<Chain.THORChain | Chain.Maya>) {\n const nodeUrl = SKConfig.get(\"nodeUrls\")[chain];\n const rpcUrl = SKConfig.get(\"rpcUrls\")[chain];\n const { isStagenet } = SKConfig.get(\"envs\");\n const isThorchain = chain === Chain.THORChain;\n const chainPrefix = `${isStagenet ? \"s\" : \"\"}${CosmosChainPrefixes[chain]}`;\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n\n const derivationPath =\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index });\n\n const cosmosToolbox = await createCosmosToolbox({\n chain,\n ...toolboxParams,\n });\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) =>\n cosmosToolbox.getSignerFromPhrase({ phrase, derivationPath }),\n )\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const defaultFee = getDefaultChainFee(chain);\n\n async function getFees() {\n let fee: SwapKitNumber;\n\n const constantsUrl = `${nodeUrl}/${isThorchain ? \"thorchain\" : \"mayachain\"}/constants`;\n\n try {\n const {\n int_64_values: { NativeTransactionFee: nativeFee },\n } = await RequestClient.get<ThorchainConstantsResponse>(constantsUrl);\n\n if (!nativeFee || Number.isNaN(nativeFee) || nativeFee < 0) {\n throw new SwapKitError(\"toolbox_cosmos_invalid_fee\", { nativeFee: nativeFee.toString() });\n }\n\n fee = new SwapKitNumber(nativeFee);\n } catch {\n fee = new SwapKitNumber({\n value: isThorchain ? 0.02 : 1,\n decimal: BaseDecimal[chain],\n });\n }\n\n return { [FeeOption.Average]: fee, [FeeOption.Fast]: fee, [FeeOption.Fastest]: fee };\n }\n\n async function transfer({\n assetValue,\n memo = \"\",\n recipient,\n }: Omit<GenericTransferParams, \"recipient\"> & { recipient?: string }) {\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx\");\n const sender = (await signer?.getAccounts())?.[0]?.address;\n if (!(sender && signer)) throw new SwapKitError(\"toolbox_cosmos_no_signer\");\n\n const isAminoSigner = \"signAmino\" in signer;\n const registry = await createDefaultRegistry();\n const aminoTypes = await createDefaultAminoTypes(chain);\n const signingClient = await createSigningStargateClient(rpcUrl, signer, {\n registry,\n aminoTypes,\n });\n\n const aminoMessage = buildAminoMsg({\n assetValue,\n sender,\n recipient,\n memo,\n });\n\n if (isAminoSigner) {\n const msgSign = await convertToSignable(aminoMessage, chain);\n\n const { signatures, authInfoBytes } = await signingClient.sign(\n sender,\n [msgSign],\n defaultFee,\n memo,\n );\n\n const tx = TxRaw.encode({\n signatures,\n authInfoBytes,\n bodyBytes: await buildEncodedTxBody({\n chain,\n msgs: [aminoMessage].map(parseAminoMessageForDirectSigning),\n memo,\n }),\n }).finish();\n\n const txResponse = await signingClient.broadcastTx(tx);\n\n return txResponse.transactionHash;\n }\n\n const preparedMessage = parseAminoMessageForDirectSigning(aminoMessage);\n const msgSign = await convertToSignable(preparedMessage, chain);\n const txResponse = await signingClient.signAndBroadcast(sender, [msgSign], defaultFee, memo);\n\n return txResponse.transactionHash;\n }\n\n return {\n ...cosmosToolbox,\n broadcastMultisigTx: broadcastMultisigTx({ prefix: chainPrefix, rpcUrl }),\n buildAminoMsg,\n buildEncodedTxBody,\n convertToSignable,\n createDefaultAminoTypes: () => createDefaultAminoTypes(chain),\n createDefaultRegistry,\n createMultisig,\n createTransaction: getCreateTransaction(rpcUrl),\n deposit: transfer,\n getFees,\n importSignature,\n parseAminoMessageForDirectSigning,\n secp256k1HdWalletFromMnemonic: secp256k1HdWalletFromMnemonic({\n derivationPath: derivationPathToString(derivationPath),\n prefix: chainPrefix,\n }),\n signMultisigTx: signMultisigTx(chain),\n signWithPrivateKey,\n transfer,\n pubkeyToAddress: async (pubkey: Pubkey) => {\n const { pubkeyToAddress } = (await import(\"@cosmjs/amino\")).default;\n return pubkeyToAddress(pubkey, chainPrefix);\n },\n };\n}\n"
10
+ "import type { StdFee } from \"@cosmjs/amino\";\nimport type { Account } from \"@cosmjs/stargate\";\nimport { base64, bech32 } from \"@scure/base\";\nimport {\n AssetValue,\n BaseDecimal,\n Chain,\n type ChainId,\n ChainToChainId,\n type CosmosChain,\n CosmosChainPrefixes,\n DerivationPath,\n type DerivationPathArray,\n FeeOption,\n type GenericTransferParams,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n SwapKitNumber,\n applyFeeMultiplier,\n derivationPathToString,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\nimport { P, match } from \"ts-pattern\";\nimport type { CosmosToolboxParams } from \"../types\";\nimport {\n cosmosCreateTransaction,\n createSigningStargateClient,\n createStargateClient,\n getAssetFromDenom,\n getDenomWithChain,\n getMsgSendDenom,\n} from \"../util\";\n\nexport async function fetchFeeRateFromSwapKit(chainId: ChainId, safeDefault: number) {\n try {\n const response = await SwapKitApi.getGasRate();\n const responseGasRate = response.find((gas) => gas.chainId === chainId)?.value;\n\n return responseGasRate ? Number.parseFloat(responseGasRate) : safeDefault;\n } catch (_e) {\n return safeDefault;\n }\n}\n\nexport async function getSignerFromPhrase({\n phrase,\n prefix,\n ...derivationParams\n}: { phrase: string; prefix?: string } & (\n | { chain: Chain; index?: number }\n | { derivationPath: string }\n)) {\n const importedProtoSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1HdWallet =\n importedProtoSigning.DirectSecp256k1HdWallet ??\n importedProtoSigning.default?.DirectSecp256k1HdWallet;\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n\n const derivationPath =\n \"derivationPath\" in derivationParams\n ? derivationParams.derivationPath\n : `${DerivationPath[derivationParams.chain]}/${derivationParams.index}`;\n\n return DirectSecp256k1HdWallet.fromMnemonic(phrase, {\n prefix,\n hdPaths: [stringToPath(derivationPath)],\n });\n}\n\nexport async function getSignerFromPrivateKey({\n privateKey,\n prefix,\n}: {\n privateKey: Uint8Array;\n prefix: string;\n}) {\n const importedProtoSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1Wallet =\n importedProtoSigning.DirectSecp256k1Wallet ??\n importedProtoSigning.default?.DirectSecp256k1Wallet;\n\n return DirectSecp256k1Wallet.fromKey(privateKey, prefix);\n}\n\nconst SafeDefaultFeeValues = {\n [Chain.Cosmos]: 500,\n [Chain.Kujira]: 1000,\n [Chain.THORChain]: 5000000,\n [Chain.Maya]: 5000000,\n};\n\nexport function verifySignature(getAccount: (address: string) => Promise<Account | null>) {\n return async function verifySignature({\n signature,\n message,\n address,\n }: {\n signature: string;\n message: string;\n address: string;\n }) {\n const account = await getAccount(address);\n if (!account?.pubkey) throw new SwapKitError(\"toolbox_cosmos_verify_signature_no_pubkey\");\n\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const Secp256k1Signature =\n importedCrypto.Secp256k1Signature ?? importedCrypto.default?.Secp256k1Signature;\n const Secp256k1 = importedCrypto.Secp256k1 ?? importedCrypto.default?.Secp256k1;\n\n const secpSignature = Secp256k1Signature.fromFixedLength(base64.decode(signature));\n return Secp256k1.verifySignature(secpSignature, base64.decode(message), account.pubkey.value);\n };\n}\n\nexport async function createCosmosToolbox({ chain, ...toolboxParams }: CosmosToolboxParams) {\n const rpcUrl = SKConfig.get(\"rpcUrls\")[chain];\n const chainPrefix = CosmosChainPrefixes[chain];\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n const derivationPath = derivationPathToString(\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index }),\n );\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) =>\n getSignerFromPhrase({ phrase, prefix: chainPrefix, derivationPath }),\n )\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n async function getAccount(address: string) {\n const client = await createStargateClient(rpcUrl);\n return client.getAccount(address);\n }\n\n async function getAddress() {\n const [account] = (await signer?.getAccounts()) || [];\n return account?.address;\n }\n\n async function getPubKey() {\n const [account] = (await signer?.getAccounts()) || [];\n if (!account?.pubkey) {\n throw new SwapKitError(\"toolbox_cosmos_signer_not_defined\");\n }\n return base64.encode(account?.pubkey);\n }\n\n async function transfer({\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n feeOptionKey = FeeOption.Fast,\n }: GenericTransferParams) {\n const from = await getAddress();\n\n if (!(signer && from)) {\n throw new SwapKitError(\"toolbox_cosmos_signer_not_defined\");\n }\n\n const feeAssetValue = AssetValue.from({\n chain,\n });\n const assetDenom = getDenomWithChain(feeAssetValue);\n\n const txFee =\n feeRate ||\n feeToStdFee((await getFees(chain, SafeDefaultFeeValues[chain]))[feeOptionKey], assetDenom);\n\n const signingClient = await createSigningStargateClient(rpcUrl, signer);\n const message = [\n {\n denom: getMsgSendDenom(`u${assetValue.symbol}`).toLowerCase(),\n amount: assetValue.getBaseValue(\"string\"),\n },\n ];\n\n const { transactionHash } = await signingClient.sendTokens(\n from,\n recipient,\n message,\n txFee,\n memo,\n );\n\n return transactionHash;\n }\n\n return {\n transfer,\n getAddress,\n getAccount,\n getBalance: async (address: string, _potentialScamFilter?: boolean) => {\n const denomBalances = await cosmosBalanceDenomsGetter(rpcUrl)(address);\n return await Promise.all(\n denomBalances\n .filter(({ denom }) => denom && !denom.includes(\"IBC/\"))\n .map(({ denom, amount }) => {\n const fullDenom =\n [Chain.THORChain, Chain.Maya].includes(chain) &&\n (denom.includes(\"/\") || denom.includes(\"˜\"))\n ? `${chain}.${denom}`\n : denom;\n return getAssetFromDenom(fullDenom, amount);\n }),\n );\n },\n getSignerFromPhrase: async ({\n phrase,\n derivationPath,\n }: { phrase: string; derivationPath: DerivationPathArray }) =>\n getSignerFromPhrase({\n phrase,\n prefix: chainPrefix,\n derivationPath: derivationPathToString(derivationPath),\n index,\n }),\n getSignerFromPrivateKey: async (privateKey: Uint8Array) => {\n const importedSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1Wallet =\n importedSigning.DirectSecp256k1Wallet ?? importedSigning.default?.DirectSecp256k1Wallet;\n return DirectSecp256k1Wallet.fromKey(privateKey, chainPrefix);\n },\n createPrivateKeyFromPhrase: createPrivateKeyFromPhrase(derivationPath),\n validateAddress: getCosmosValidateAddress(chainPrefix),\n getPubKey,\n getFees: () => getFees(chain, SafeDefaultFeeValues[chain]),\n fetchFeeRateFromSwapKit,\n getBalanceAsDenoms: cosmosBalanceDenomsGetter(rpcUrl),\n createTransaction: cosmosCreateTransaction,\n verifySignature: verifySignature(getAccount),\n };\n}\n\nexport async function getFeeRateFromSwapKit(chainId: ChainId, safeDefault: number) {\n try {\n const response = await SwapKitApi.getGasRate();\n const responseGasRate = response.find((gas) => gas.chainId === chainId)?.value;\n\n return responseGasRate ? Number.parseFloat(responseGasRate) : safeDefault;\n } catch (_e) {\n return safeDefault;\n }\n}\n\n/**\n * @deprecated use getFeeRateFromSwapKit instead\n */\nexport const getFeeRateFromThorswap = getFeeRateFromSwapKit;\n\nexport function cosmosValidateAddress({\n address,\n chain,\n prefix: chainPrefix,\n}: { address: string } & (\n | { prefix: string; chain?: undefined }\n | { chain: CosmosChain; prefix?: undefined }\n)) {\n const prefix = chainPrefix || getPrefix(chain);\n\n if (!(prefix && address)) {\n throw new SwapKitError(\"toolbox_cosmos_validate_address_prefix_not_found\");\n }\n\n return getCosmosValidateAddress(prefix)(address);\n}\n\nexport function estimateTransactionFee({\n assetValue: { chain },\n}: {\n assetValue: AssetValue;\n}) {\n return AssetValue.from({ chain, value: getMinTransactionFee(chain) });\n}\n\nfunction getPrefix<C extends CosmosChain>(chain?: C) {\n const { isStagenet } = SKConfig.get(\"envs\");\n const useStagenetPrefix = chain\n ? [Chain.THORChain, Chain.Maya].includes(chain) && isStagenet\n : false;\n const basePrefix = chain ? CosmosChainPrefixes[chain] : undefined;\n\n return useStagenetPrefix ? `s${basePrefix}` : basePrefix;\n}\n\nasync function getFees(chain: Chain, safeDefault: number) {\n const baseFee = await fetchFeeRateFromSwapKit(ChainToChainId[chain], safeDefault);\n return {\n average: SwapKitNumber.fromBigInt(BigInt(baseFee), BaseDecimal[chain]),\n fast: SwapKitNumber.fromBigInt(\n BigInt(applyFeeMultiplier(baseFee, FeeOption.Fast, true)),\n BaseDecimal[chain],\n ),\n fastest: SwapKitNumber.fromBigInt(\n BigInt(applyFeeMultiplier(baseFee, FeeOption.Fastest, true)),\n BaseDecimal[chain],\n ),\n } as { [key in FeeOption]: SwapKitNumber };\n}\n\nfunction feeToStdFee(fee: SwapKitNumber, denom: string): StdFee {\n return {\n amount: [{ denom, amount: fee.getBaseValue(\"string\") }],\n gas: \"200000\",\n };\n}\n\nfunction getMinTransactionFee(chain: Chain) {\n return (\n {\n [Chain.Cosmos]: 0.007,\n [Chain.Kujira]: 0.02,\n [Chain.THORChain]: 0.02,\n [Chain.Maya]: 0.02,\n }[chain as CosmosChain] || 0\n );\n}\n\nfunction getCosmosValidateAddress(prefix: string) {\n return function validateAddress(address: string) {\n if (!address.startsWith(prefix)) return false;\n\n try {\n const { prefix, words } = bech32.decode(address as `${string}1${string}`);\n const normalized = bech32.encode(prefix, words);\n\n return normalized === address.toLocaleLowerCase();\n } catch (_error) {\n return false;\n }\n };\n}\n\nfunction cosmosBalanceDenomsGetter(rpcUrl: string) {\n return async function getCosmosBalanceDenoms(address: string) {\n const client = await createStargateClient(rpcUrl);\n const allBalances = await client.getAllBalances(address);\n\n const balances = allBalances.map((balance) => ({\n ...balance,\n denom: balance.denom.includes(\"/\") ? balance.denom.toUpperCase() : balance.denom,\n }));\n\n return balances;\n };\n}\n\nfunction createPrivateKeyFromPhrase(derivationPath: string) {\n return async function createPrivateKeyFromPhrase(phrase: string) {\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n const Slip10Curve = importedCrypto.Slip10Curve ?? importedCrypto.default?.Slip10Curve;\n const Slip10 = importedCrypto.Slip10 ?? importedCrypto.default?.Slip10;\n const EnglishMnemonic =\n importedCrypto.EnglishMnemonic ?? importedCrypto.default?.EnglishMnemonic;\n const Bip39 = importedCrypto.Bip39 ?? importedCrypto.default?.Bip39;\n\n const mnemonicChecked = new EnglishMnemonic(phrase);\n const seed = await Bip39.mnemonicToSeed(mnemonicChecked);\n\n const { privkey } = Slip10.derivePath(\n Slip10Curve.Secp256k1,\n seed,\n stringToPath(derivationPath),\n );\n\n return privkey;\n };\n}\n",
11
+ "import type { Pubkey, Secp256k1HdWallet } from \"@cosmjs/amino\";\nimport { base64 } from \"@scure/base\";\nimport {\n BaseDecimal,\n Chain,\n CosmosChainPrefixes,\n FeeOption,\n type GenericTransferParams,\n NetworkDerivationPath,\n RequestClient,\n SKConfig,\n SwapKitError,\n SwapKitNumber,\n derivationPathToString,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\n\nimport { P, match } from \"ts-pattern\";\nimport {\n buildAminoMsg,\n buildEncodedTxBody,\n convertToSignable,\n createDefaultAminoTypes,\n createDefaultRegistry,\n getCreateTransaction,\n parseAminoMessageForDirectSigning,\n} from \"../thorchainUtils\";\nimport type { ThorchainConstantsResponse } from \"../thorchainUtils/types/client-types\";\nimport type { MultisigTx } from \"../types\";\nimport type { CosmosToolboxParams, MultiSigSigner } from \"../types\";\nimport {\n createOfflineStargateClient,\n createSigningStargateClient,\n createStargateClient,\n getDefaultChainFee,\n} from \"../util\";\nimport { createCosmosToolbox } from \"./cosmos\";\n\nfunction secp256k1HdWalletFromMnemonic({\n prefix,\n derivationPath,\n}: {\n prefix: string;\n derivationPath?: string;\n}) {\n return async function secp256k1HdWalletFromMnemonic(mnemonic: string, index = 0) {\n const importedAmino = await import(\"@cosmjs/amino\");\n const Secp256k1HdWallet =\n importedAmino.Secp256k1HdWallet ?? importedAmino.default?.Secp256k1HdWallet;\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n\n return Secp256k1HdWallet.fromMnemonic(mnemonic, {\n hdPaths: [stringToPath(`${derivationPath}/${index}`)],\n prefix,\n });\n };\n}\n\nfunction exportSignature(signature: Uint8Array) {\n return base64.encode(signature);\n}\n\nfunction signMultisigTx(chain: Chain.THORChain | Chain.Maya) {\n return async function signMultisigTx({\n wallet,\n tx,\n }: {\n wallet: Secp256k1HdWallet;\n tx: string | MultisigTx;\n }) {\n const { msgs, accountNumber, sequence, chainId, fee, memo } =\n typeof tx === \"string\" ? JSON.parse(tx) : tx;\n\n const address = (await wallet.getAccounts())?.[0]?.address || \"\";\n const aminoTypes = await createDefaultAminoTypes(chain);\n const registry = await createDefaultRegistry();\n const signingClient = await createOfflineStargateClient(wallet, {\n registry,\n aminoTypes,\n });\n const msgForSigning = [];\n\n for (const msg of msgs) {\n const signMsg = await convertToSignable(msg, chain);\n msgForSigning.push(signMsg);\n }\n\n const {\n signatures: [signature],\n } = await signingClient.sign(address, msgForSigning, fee, memo, {\n accountNumber,\n sequence,\n chainId,\n });\n\n const bodyBytes = await buildEncodedTxBody({\n chain,\n memo,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n });\n\n return { signature: exportSignature(signature as Uint8Array), bodyBytes };\n };\n}\n\nfunction broadcastMultisigTx({\n prefix,\n rpcUrl,\n}: {\n prefix: string;\n rpcUrl: string;\n}) {\n return async function broadcastMultisigTx(\n tx: string,\n signers: MultiSigSigner[],\n membersPubKeys: string[],\n threshold: number,\n bodyBytes: Uint8Array,\n ) {\n const { encodeSecp256k1Pubkey, pubkeyToAddress } = (await import(\"@cosmjs/amino\")).default;\n const { makeMultisignedTxBytes } = (await import(\"@cosmjs/stargate\")).default;\n\n const { sequence, fee } = JSON.parse(tx);\n const multisigPubkey = await createMultisig(membersPubKeys, threshold);\n\n const addressesAndSignatures: [string, Uint8Array][] = signers.map((signer) => [\n pubkeyToAddress(encodeSecp256k1Pubkey(base64.decode(signer.pubKey)), prefix),\n base64.decode(signer.signature),\n ]);\n\n const broadcaster = await createStargateClient(rpcUrl);\n\n const { transactionHash } = await broadcaster.broadcastTx(\n makeMultisignedTxBytes(\n multisigPubkey,\n sequence,\n fee,\n bodyBytes,\n new Map<string, Uint8Array>(addressesAndSignatures),\n ),\n );\n\n return transactionHash;\n };\n}\n\nasync function createMultisig(pubKeys: string[], threshold: number, noSortPubKeys = true) {\n const { createMultisigThresholdPubkey, encodeSecp256k1Pubkey } = (await import(\"@cosmjs/amino\"))\n .default;\n return createMultisigThresholdPubkey(\n pubKeys.map((pubKey) => encodeSecp256k1Pubkey(base64.decode(pubKey))),\n threshold,\n noSortPubKeys,\n );\n}\n\nfunction importSignature(signature: string) {\n return base64.decode(signature);\n}\n\nasync function signWithPrivateKey({\n privateKey,\n message,\n}: {\n privateKey: Uint8Array;\n message: string;\n}) {\n const { Secp256k1 } = (await import(\"@cosmjs/crypto\")).default;\n\n const signature = await Secp256k1.createSignature(base64.decode(message), privateKey);\n return base64.encode(Buffer.concat([signature.r(32), signature.s(32)]));\n}\n\nexport async function createThorchainToolbox({\n chain,\n ...toolboxParams\n}: CosmosToolboxParams<Chain.THORChain | Chain.Maya>) {\n const nodeUrl = SKConfig.get(\"nodeUrls\")[chain];\n const rpcUrl = SKConfig.get(\"rpcUrls\")[chain];\n const { isStagenet } = SKConfig.get(\"envs\");\n const isThorchain = chain === Chain.THORChain;\n const chainPrefix = `${isStagenet ? \"s\" : \"\"}${CosmosChainPrefixes[chain]}`;\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n\n const derivationPath =\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index });\n\n const cosmosToolbox = await createCosmosToolbox({\n chain,\n ...toolboxParams,\n });\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) =>\n cosmosToolbox.getSignerFromPhrase({ phrase, derivationPath }),\n )\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const defaultFee = getDefaultChainFee(chain);\n\n async function getFees() {\n let fee: SwapKitNumber;\n\n const constantsUrl = `${nodeUrl}/${isThorchain ? \"thorchain\" : \"mayachain\"}/constants`;\n\n try {\n const {\n int_64_values: { NativeTransactionFee: nativeFee },\n } = await RequestClient.get<ThorchainConstantsResponse>(constantsUrl);\n\n if (!nativeFee || Number.isNaN(nativeFee) || nativeFee < 0) {\n throw new SwapKitError(\"toolbox_cosmos_invalid_fee\", { nativeFee: nativeFee.toString() });\n }\n\n fee = new SwapKitNumber(nativeFee);\n } catch {\n fee = new SwapKitNumber({\n value: isThorchain ? 0.02 : 1,\n decimal: BaseDecimal[chain],\n });\n }\n\n return { [FeeOption.Average]: fee, [FeeOption.Fast]: fee, [FeeOption.Fastest]: fee };\n }\n\n async function transfer({\n assetValue,\n memo = \"\",\n recipient,\n }: Omit<GenericTransferParams, \"recipient\"> & { recipient?: string }) {\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx\");\n const sender = (await signer?.getAccounts())?.[0]?.address;\n if (!(sender && signer)) throw new SwapKitError(\"toolbox_cosmos_no_signer\");\n\n const isAminoSigner = \"signAmino\" in signer;\n const registry = await createDefaultRegistry();\n const aminoTypes = await createDefaultAminoTypes(chain);\n const signingClient = await createSigningStargateClient(rpcUrl, signer, {\n registry,\n aminoTypes,\n });\n\n const aminoMessage = buildAminoMsg({\n assetValue,\n sender,\n recipient,\n memo,\n });\n\n if (isAminoSigner) {\n const msgSign = await convertToSignable(aminoMessage, chain);\n\n const { signatures, authInfoBytes } = await signingClient.sign(\n sender,\n [msgSign],\n defaultFee,\n memo,\n );\n\n const tx = TxRaw.encode({\n signatures,\n authInfoBytes,\n bodyBytes: await buildEncodedTxBody({\n chain,\n msgs: [aminoMessage].map(parseAminoMessageForDirectSigning),\n memo,\n }),\n }).finish();\n\n const txResponse = await signingClient.broadcastTx(tx);\n\n return txResponse.transactionHash;\n }\n\n const preparedMessage = parseAminoMessageForDirectSigning(aminoMessage);\n const msgSign = await convertToSignable(preparedMessage, chain);\n const txResponse = await signingClient.signAndBroadcast(sender, [msgSign], defaultFee, memo);\n\n return txResponse.transactionHash;\n }\n\n return {\n ...cosmosToolbox,\n broadcastMultisigTx: broadcastMultisigTx({ prefix: chainPrefix, rpcUrl }),\n buildAminoMsg,\n buildEncodedTxBody,\n convertToSignable,\n createDefaultAminoTypes: () => createDefaultAminoTypes(chain),\n createDefaultRegistry,\n createMultisig,\n createTransaction: getCreateTransaction(rpcUrl),\n deposit: transfer,\n getFees,\n importSignature,\n parseAminoMessageForDirectSigning,\n secp256k1HdWalletFromMnemonic: secp256k1HdWalletFromMnemonic({\n derivationPath: derivationPathToString(derivationPath),\n prefix: chainPrefix,\n }),\n signMultisigTx: signMultisigTx(chain),\n signWithPrivateKey,\n transfer,\n pubkeyToAddress: async (pubkey: Pubkey) => {\n const { pubkeyToAddress } = (await import(\"@cosmjs/amino\")).default;\n return pubkeyToAddress(pubkey, chainPrefix);\n },\n };\n}\n"
12
12
  ],
13
- "mappings": "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",
14
- "debugId": "0EE86134E897977164756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "BE9DEF82F302F3E964756E2164756E21",
15
15
  "names": []
16
16
  }
@@ -1,4 +1,4 @@
1
- import{d as q,e as _}from"../../chunk-s47y8512.js";import{base64 as W6,bech32 as F}from"@scure/base";import{SwapKitError as o6}from"@swapkit/helpers";import{fromByteArray as u6,toByteArray as d6}from"base64-js";function V($){return W6.encode(Uint8Array.from(F.fromWords(F.decode($).words)))}function p($,H="thor"){return F.encode(H,F.toWords(W6.decode($)))}function f4($){return u6($)}function D4($){if(!$.match(/^[a-zA-Z0-9+/]*={0,2}$/))throw new o6("toolbox_cosmos_invalid_params",{error:"Invalid base64 string format"});return d6($)}import{AssetValue as n6,Chain as b,ChainToChainId as Y6,SwapKitError as i6}from"@swapkit/helpers";import{AssetValue as t,BaseDecimal as k,Chain as T,ChainId as r,SKConfig as Z6,SwapKitError as Q6}from"@swapkit/helpers";var X6="FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK",m6="FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM",h6={amount:[{denom:"uatom",amount:"500"}],gas:"200000"},g6={amount:[{denom:"ukuji",amount:"1000"}],gas:"200000"};function x($){switch($){case T.Maya:return{amount:[],gas:"10000000000"};case T.THORChain:return{amount:[],gas:"500000000"};case T.Kujira:return g6;default:return h6}}var A=($,H=!1)=>{if(H)return $.toLowerCase();switch($){case"uUSK":case"USK":return X6;case"uYUM":case"YUM":return m6;case"uKUJI":case"KUJI":return"ukuji";case"ATOM":case"uATOM":return"uatom";default:return $}},P=({symbol:$,chain:H})=>{if(H===T.Maya)return($.toUpperCase()!=="CACAO"?$:`${T.Maya}.${$}`).toUpperCase();if(H===T.THORChain)return(["RUNE","TCY","RUJI"].includes($.toUpperCase())?`${T.THORChain}.${$}`:$).toUpperCase();return A($,!1)};async function U($){let{StargateClient:H}=await import("@cosmjs/stargate"),z=typeof window!=="undefined"?{}:{referrer:"https://sdk.swapkit.dev",referer:"https://sdk.swapkit.dev"};return H.connect({url:$,headers:z})}async function S($,H,z={}){let{SigningStargateClient:W,GasPrice:Z}=(await import("@cosmjs/stargate")).default,Q=typeof z==="string"?z:"0.0003uatom",X=typeof z==="string"?{}:z;return W.connectWithSigner($,H,{gasPrice:Z.fromString(Q),...X})}async function L6($,H){let{SigningStargateClient:z}=(await import("@cosmjs/stargate")).default;return z.offline($,H)}var l6=($)=>{let{isStagenet:H}=Z6.get("envs"),z=Z6.get("rpcUrls");switch($){case r.Kujira:return z.KUJI;case r.THORChain:case"thorchain-mainnet-v1":return H?z.THOR_STAGENET:z.THOR;case r.Maya:return H?z.MAYA_STAGENET:z.MAYA;default:return z.GAIA}},c6=($)=>{switch($){case T.Maya:case T.THORChain:return"/types.MsgSend";case T.Cosmos:case T.Kujira:return"/cosmos.bank.v1beta1.MsgSend";default:throw new Q6("toolbox_cosmos_not_supported",{chain:$})}},J6=async({sender:$,recipient:H,assetValue:z,memo:W="",feeRate:Z,sequence:Q,accountNumber:X})=>{let{chain:j,chainId:Y}=z,G=l6(Y),L=await(await U(G)).getAccount($);if(!L)throw new Q6("toolbox_cosmos_account_not_found",{sender:$});let I=t.from({chain:j}),O=A(I.symbol),J=x(j),y=O&&Z?{amount:[{denom:O,amount:Z.toString()}],gas:J.gas}:J,w={fromAddress:$,toAddress:H,amount:[{amount:z.getBaseValue("string"),denom:A(z.symbol)}]};return{accountNumber:X??L.accountNumber,chainId:Y,fee:y,memo:W,sequence:Q??L.sequence,msgs:[{typeUrl:c6(j),value:w}]}},r6={rune:{chain:T.THORChain,decimals:k[T.THORChain]},tcy:{asset:"THOR.TCY",decimals:k[T.THORChain]},"x/kuji":{asset:"THOR.KUJI",decimals:k[T.THORChain]},uatom:{chain:T.Cosmos,decimals:k[T.Cosmos]},atom:{chain:T.Cosmos,decimals:k[T.Cosmos]},cacao:{chain:T.Maya,decimals:10},maya:{asset:`${T.Maya}.${T.Maya}`,decimals:4},ukuji:{chain:T.Kujira,decimals:k[T.Kujira]},kuji:{chain:T.Kujira,decimals:k[T.Kujira]},[X6.toLowerCase()]:{asset:`${T.Kujira}.USK`,decimals:k[T.Kujira]}},T6=($,H)=>{let z=r6[$.toLowerCase()];if(!z)return t.from({asset:$,value:H,fromBaseDecimal:8});let{chain:W,asset:Z,decimals:Q}=z,X=W?{chain:W}:{asset:Z};return t.from({...X,value:H,fromBaseDecimal:Q})};import{Chain as t6}from"@swapkit/helpers";async function D(){let{$root:$}=await import("../../chunk-9bqegm61.js"),{Registry:H}=(await import("@cosmjs/proto-signing")).default,{defaultRegistryTypes:z}=(await import("@cosmjs/stargate")).default;return new H([...z,["/types.MsgSend",$.types.MsgSend],["/types.MsgDeposit",$.types.MsgDeposit]])}async function M($){let{AminoTypes:H}=(await import("@cosmjs/stargate")).default,z=$===t6.THORChain?"thorchain":"mayachain";return new H({"/types.MsgSend":{aminoType:`${z}/MsgSend`,toAmino:({fromAddress:W,toAddress:Z,...Q})=>({...Q,from_address:p(W),to_address:p(Z)}),fromAmino:({from_address:W,to_address:Z,...Q})=>({...Q,fromAddress:V(W),toAddress:V(Z)})},"/types.MsgDeposit":{aminoType:`${z}/MsgDeposit`,toAmino:({signer:W,...Z})=>({...Z,signer:p(W)}),fromAmino:({signer:W,...Z})=>({...Z,signer:V(W)})}})}var d4=x(b.THORChain).gas,m4=x(b.Maya).gas,j6=({sender:$,recipient:H,assetValue:z})=>{return{type:`${z.chain===b.Maya?"mayachain":"thorchain"}/MsgSend`,value:{from_address:$,to_address:H,amount:[{amount:z.getBaseValue("string"),denom:A(z.symbol,!0)}]}}},q6=({sender:$,assetValue:H,memo:z=""})=>{return{type:`${H.chain===b.Maya?"mayachain":"thorchain"}/MsgDeposit`,value:{coins:[{amount:H.getBaseValue("string"),asset:P(H)}],signer:$,memo:z}}},n=({sender:$,recipient:H,assetValue:z,memo:W})=>{return!H?q6({sender:$,assetValue:z,memo:W}):j6({sender:$,recipient:H,assetValue:z})},K=async($,H)=>{return(await M(H)).fromAmino($)},_6=async({rpcUrl:$,sender:H})=>{let W=await(await U($)).getAccount(H);if(!W)throw new i6("toolbox_cosmos_account_not_found",{sender:H});return W};function R6($){return function H(z){let{assetValue:W,recipient:Z,memo:Q,sender:X,asSignable:j,asAminoMessage:Y}=z;if(Z)return s6($)({sender:X,recipient:Z,assetValue:W,memo:Q,asSignable:j,asAminoMessage:Y});return a6($)({sender:X,assetValue:W,memo:Q,asSignable:j,asAminoMessage:Y})}}var s6=($)=>async({sender:H,recipient:z,assetValue:W,memo:Z="",asSignable:Q=!0,asAminoMessage:X=!1,sequence:j,accountNumber:Y})=>{let G=await _6({rpcUrl:$,sender:H}),R=W.chain,L=j6({sender:H,recipient:z,assetValue:W}),I=Q?await K(X?L:v(L),R):L;return{chainId:Y6[R],accountNumber:Y||G.accountNumber,sequence:j||G.sequence,msgs:[I],fee:x(W.chain),memo:Z}},a6=($)=>async({sender:H,assetValue:z,memo:W="",asSignable:Z=!0,asAminoMessage:Q=!1,sequence:X,accountNumber:j})=>{let Y=await _6({rpcUrl:$,sender:H}),G=z.chain,R=q6({sender:H,assetValue:z,memo:W}),L=Z?await K(Q?R:v(R),G):R;return{chainId:Y6[G],accountNumber:j||Y.accountNumber,sequence:X||Y.sequence,msgs:[L],fee:x(z.chain),memo:W}};function v($){if($.type==="thorchain/MsgSend"||$.type==="mayachain/MsgSend")return $;return{...$,value:{...$.value,coins:$.value.coins.map((H)=>{let z=n6.from({asset:H.asset}),W=(z.isSynthetic?z.symbol.split("/")?.[1]:z.symbol)?.toUpperCase(),Z=(z.isSynthetic?z.symbol.split("/")?.[0]:z.chain)?.toUpperCase();return{...H,asset:{chain:Z,symbol:W,ticker:z.ticker,synth:z.isSynthetic}}})}}}async function o({chain:$,memo:H,msgs:z}){let W=await D(),Z=await M($),Q={typeUrl:"/cosmos.tx.v1beta1.TxBody",value:{memo:H,messages:z.map((X)=>Z.fromAmino(X))}};return W.encode(Q)}import{Chain as m,SwapKitError as x4}from"@swapkit/helpers";import{base64 as e,bech32 as i}from"@scure/base";import{AssetValue as B6,BaseDecimal as s,Chain as N,ChainToChainId as e6,CosmosChainPrefixes as k6,DerivationPath as $4,FeeOption as $6,NetworkDerivationPath as z4,SKConfig as x6,SwapKitError as u,SwapKitNumber as a,applyFeeMultiplier as G6,derivationPathToString as I6,updateDerivationPath as H4}from"@swapkit/helpers";import{SwapKitApi as U6}from"@swapkit/helpers/api";import{P as y6,match as W4}from"ts-pattern";async function A6($,H){try{let W=(await U6.getGasRate()).find((Z)=>Z.chainId===$)?.value;return W?Number.parseFloat(W):H}catch(z){return H}}async function w6({phrase:$,prefix:H,...z}){let{DirectSecp256k1HdWallet:W}=(await import("@cosmjs/proto-signing")).default,{stringToPath:Z}=(await import("@cosmjs/crypto")).default,Q="derivationPath"in z?z.derivationPath:`${$4[z.chain]}/${z.index}`;return W.fromMnemonic($,{prefix:H,hdPaths:[Z(Q)]})}async function z2({privateKey:$,prefix:H}){let{DirectSecp256k1Wallet:z}=(await import("@cosmjs/proto-signing")).default;return z.fromKey($,H)}var O6={[N.Cosmos]:500,[N.Kujira]:1000,[N.THORChain]:5000000,[N.Maya]:5000000};function Z4($){return async function H({signature:z,message:W,address:Z}){let Q=await $(Z);if(!Q?.pubkey)throw new u("toolbox_cosmos_verify_signature_no_pubkey");let{Secp256k1Signature:X,Secp256k1:j}=(await import("@cosmjs/crypto")).default,Y=X.fromFixedLength(e.decode(z));return j.verifySignature(Y,e.decode(W),Q.pubkey.value)}}async function d({chain:$,...H}){let z=x6.get("rpcUrls")[$],W=k6[$],Z="index"in H?H.index||0:0,Q=I6("derivationPath"in H&&H.derivationPath?H.derivationPath:H4(z4[$],{index:Z})),X=await W4(H).with({phrase:y6.string},({phrase:L})=>w6({phrase:L,prefix:W,derivationPath:Q})).with({signer:y6.any},({signer:L})=>L).otherwise(()=>{return});async function j(L){return(await U(z)).getAccount(L)}async function Y(){let[L]=await X?.getAccounts()||[];return L?.address}async function G(){let[L]=await X?.getAccounts()||[];if(!L?.pubkey)throw new u("toolbox_cosmos_signer_not_defined");return e.encode(L?.pubkey)}async function R({recipient:L,assetValue:I,memo:O="",feeRate:J,feeOptionKey:y=$6.Fast}){let w=await Y();if(!(X&&w))throw new u("toolbox_cosmos_signer_not_defined");let E=B6.from({chain:$}),B=P(E),h=J||L4((await N6($,O6[$]))[y],B),g=await S(z,X),l=[{denom:A(`u${I.symbol}`).toLowerCase(),amount:I.getBaseValue("string")}],{transactionHash:C}=await g.sendTokens(w,L,l,h,O);return C}return{transfer:R,getAddress:Y,getAccount:j,getBalance:async(L,I)=>{let O=await E6(z)(L);return await Promise.all(O.filter(({denom:J})=>J&&!J.includes("IBC/")).map(({denom:J,amount:y})=>{let w=[N.THORChain,N.Maya].includes($)&&(J.includes("/")||J.includes("˜"))?`${$}.${J}`:J;return T6(w,y)}))},getSignerFromPhrase:async({phrase:L,derivationPath:I})=>w6({phrase:L,prefix:W,derivationPath:I6(I),index:Z}),getSignerFromPrivateKey:async(L)=>{let{DirectSecp256k1Wallet:I}=(await import("@cosmjs/proto-signing")).default;return I.fromKey(L,W)},createPrivateKeyFromPhrase:T4(Q),validateAddress:M6(W),getPubKey:G,getFees:()=>N6($,O6[$]),fetchFeeRateFromSwapKit:A6,getBalanceAsDenoms:E6(z),createTransaction:J6,verifySignature:Z4(j)}}async function Q4($,H){try{let W=(await U6.getGasRate()).find((Z)=>Z.chainId===$)?.value;return W?Number.parseFloat(W):H}catch(z){return H}}var H2=Q4;function W2({address:$,chain:H,prefix:z}){let W=z||X4(H);if(!(W&&$))throw new u("toolbox_cosmos_validate_address_prefix_not_found");return M6(W)($)}function Z2({assetValue:{chain:$}}){return B6.from({chain:$,value:J4($)})}function X4($){let{isStagenet:H}=x6.get("envs"),z=$?[N.THORChain,N.Maya].includes($)&&H:!1,W=$?k6[$]:void 0;return z?`s${W}`:W}async function N6($,H){let z=await A6(e6[$],H);return{average:a.fromBigInt(BigInt(z),s[$]),fast:a.fromBigInt(BigInt(G6(z,$6.Fast,!0)),s[$]),fastest:a.fromBigInt(BigInt(G6(z,$6.Fastest,!0)),s[$])}}function L4($,H){return{amount:[{denom:H,amount:$.getBaseValue("string")}],gas:"200000"}}function J4($){return{[N.Cosmos]:0.007,[N.Kujira]:0.02,[N.THORChain]:0.02,[N.Maya]:0.02}[$]||0}function M6($){return function H(z){if(!z.startsWith($))return!1;try{let{prefix:W,words:Z}=i.decode(z);return i.encode(W,Z)===z.toLocaleLowerCase()}catch(W){return!1}}}function E6($){return async function H(z){return(await(await U($)).getAllBalances(z)).map((X)=>({...X,denom:X.denom.includes("/")?X.denom.toUpperCase():X.denom}))}}function T4($){return async function H(z){let{Bip39:W,EnglishMnemonic:Z,Slip10:Q,Slip10Curve:X,stringToPath:j}=(await import("@cosmjs/crypto")).default,Y=new Z(z),G=await W.mnemonicToSeed(Y),{privkey:R}=Q.derivePath(X.Secp256k1,G,j($));return R}}import{base64 as f}from"@scure/base";import{BaseDecimal as Y4,Chain as j4,CosmosChainPrefixes as q4,FeeOption as z6,NetworkDerivationPath as _4,RequestClient as R4,SKConfig as H6,SwapKitError as K6,SwapKitNumber as v6,derivationPathToString as G4,updateDerivationPath as I4}from"@swapkit/helpers";import{P as f6,match as y4}from"ts-pattern";function w4({prefix:$,derivationPath:H}){return async function z(W,Z=0){let{Secp256k1HdWallet:Q}=(await import("@cosmjs/amino")).default,{stringToPath:X}=(await import("@cosmjs/crypto")).default;return Q.fromMnemonic(W,{hdPaths:[X(`${H}/${Z}`)],prefix:$})}}function O4($){return f.encode($)}function N4($){return async function H({wallet:z,tx:W}){let{msgs:Z,accountNumber:Q,sequence:X,chainId:j,fee:Y,memo:G}=typeof W==="string"?JSON.parse(W):W,R=(await z.getAccounts())?.[0]?.address||"",L=await M($),I=await D(),O=await L6(z,{registry:I,aminoTypes:L}),J=[];for(let E of Z){let B=await K(E,$);J.push(B)}let{signatures:[y]}=await O.sign(R,J,Y,G,{accountNumber:Q,sequence:X,chainId:j}),w=await o({chain:$,memo:G,msgs:Z.map(v)});return{signature:O4(y),bodyBytes:w}}}function E4({prefix:$,rpcUrl:H}){return async function z(W,Z,Q,X,j){let{encodeSecp256k1Pubkey:Y,pubkeyToAddress:G}=(await import("@cosmjs/amino")).default,{makeMultisignedTxBytes:R}=(await import("@cosmjs/stargate")).default,{sequence:L,fee:I}=JSON.parse(W),O=await D6(Q,X),J=Z.map((E)=>[G(Y(f.decode(E.pubKey)),$),f.decode(E.signature)]),y=await U(H),{transactionHash:w}=await y.broadcastTx(R(O,L,I,j,new Map(J)));return w}}async function D6($,H,z=!0){let{createMultisigThresholdPubkey:W,encodeSecp256k1Pubkey:Z}=(await import("@cosmjs/amino")).default;return W($.map((Q)=>Z(f.decode(Q))),H,z)}function B4($){return f.decode($)}async function k4({privateKey:$,message:H}){let{Secp256k1:z}=(await import("@cosmjs/crypto")).default,W=await z.createSignature(f.decode(H),$);return f.encode(Buffer.concat([W.r(32),W.s(32)]))}async function C6({chain:$,...H}){let z=H6.get("nodeUrls")[$],W=H6.get("rpcUrls")[$],{isStagenet:Z}=H6.get("envs"),Q=$===j4.THORChain,X=`${Z?"s":""}${q4[$]}`,j="index"in H?H.index||0:0,Y="derivationPath"in H&&H.derivationPath?H.derivationPath:I4(_4[$],{index:j}),G=await d({chain:$,...H}),R=await y4(H).with({phrase:f6.string},({phrase:J})=>G.getSignerFromPhrase({phrase:J,derivationPath:Y})).with({signer:f6.any},({signer:J})=>J).otherwise(()=>{return}),L=x($);async function I(){let J,y=`${z}/${Q?"thorchain":"mayachain"}/constants`;try{let{int_64_values:{NativeTransactionFee:w}}=await R4.get(y);if(!w||Number.isNaN(w)||w<0)throw new K6("toolbox_cosmos_invalid_fee",{nativeFee:w.toString()});J=new v6(w)}catch{J=new v6({value:Q?0.02:1,decimal:Y4[$]})}return{[z6.Average]:J,[z6.Fast]:J,[z6.Fastest]:J}}async function O({assetValue:J,memo:y="",recipient:w}){let{TxRaw:E}=await import("cosmjs-types/cosmos/tx/v1beta1/tx"),B=(await R?.getAccounts())?.[0]?.address;if(!(B&&R))throw new K6("toolbox_cosmos_no_signer");let h="signAmino"in R,g=await D(),l=await M($),C=await S(W,R,{registry:g,aminoTypes:l}),c=n({assetValue:J,sender:B,recipient:w,memo:y});if(h){let p6=await K(c,$),{signatures:P6,authInfoBytes:S6}=await C.sign(B,[p6],L,y),b6=E.encode({signatures:P6,authInfoBytes:S6,bodyBytes:await o({chain:$,msgs:[c].map(v),memo:y})}).finish();return(await C.broadcastTx(b6)).transactionHash}let F6=v(c),V6=await K(F6,$);return(await C.signAndBroadcast(B,[V6],L,y)).transactionHash}return{...G,broadcastMultisigTx:E4({prefix:X,rpcUrl:W}),buildAminoMsg:n,buildEncodedTxBody:o,convertToSignable:K,createDefaultAminoTypes:()=>M($),createDefaultRegistry:D,createMultisig:D6,createTransaction:R6(W),deposit:O,getFees:I,importSignature:B4,parseAminoMessageForDirectSigning:v,secp256k1HdWalletFromMnemonic:w4({derivationPath:G4(Y),prefix:X}),signMultisigTx:N4($),signWithPrivateKey:k4,transfer:O,pubkeyToAddress:async(J)=>{let{pubkeyToAddress:y}=(await import("@cosmjs/amino")).default;return y(J,X)}}}var I2=($,H)=>{switch($){case m.Cosmos:case m.Kujira:return d({chain:$,...H});case m.Maya:case m.THORChain:return C6({chain:$,...H});default:throw new x4("toolbox_cosmos_not_supported",{chain:$})}};export{Z4 as verifySignature,j6 as transferMsgAmino,f4 as toBase64,v as parseAminoMessageForDirectSigning,z2 as getSignerFromPrivateKey,w6 as getSignerFromPhrase,l6 as getRPC,A as getMsgSendDenom,H2 as getFeeRateFromThorswap,Q4 as getFeeRateFromSwapKit,P as getDenomWithChain,x as getDefaultChainFee,R6 as getCreateTransaction,I2 as getCosmosToolbox,T6 as getAssetFromDenom,D4 as fromBase64,A6 as fetchFeeRateFromSwapKit,Z2 as estimateTransactionFee,q6 as depositMsgAmino,C6 as createThorchainToolbox,U as createStargateClient,S as createSigningStargateClient,L6 as createOfflineStargateClient,D as createDefaultRegistry,M as createDefaultAminoTypes,d as createCosmosToolbox,W2 as cosmosValidateAddress,J6 as cosmosCreateTransaction,K as convertToSignable,s6 as buildTransferTx,o as buildEncodedTxBody,a6 as buildDepositTx,n as buildAminoMsg,V as bech32ToBase64,p as base64ToBech32,m6 as YUM_KUJIRA_FACTORY_DENOM,X6 as USK_KUJIRA_FACTORY_DENOM,d4 as THORCHAIN_GAS_VALUE,m4 as MAYA_GAS_VALUE,g6 as DEFAULT_KUJI_FEE_MAINNET,h6 as DEFAULT_COSMOS_FEE_MAINNET};
1
+ import{d as q,e as _}from"../../chunk-s47y8512.js";import{base64 as H6,bech32 as V}from"@scure/base";import{SwapKitError as u6}from"@swapkit/helpers";import{fromByteArray as o6,toByteArray as d6}from"base64-js";function C($){return H6.encode(Uint8Array.from(V.fromWords(V.decode($).words)))}function P($,z="thor"){return V.encode(z,V.toWords(H6.decode($)))}function f2($){return o6($)}function D2($){if(!$.match(/^[a-zA-Z0-9+/]*={0,2}$/))throw new u6("toolbox_cosmos_invalid_params",{error:"Invalid base64 string format"});return d6($)}import{AssetValue as n6,Chain as p,ChainToChainId as Y6,SwapKitError as i6}from"@swapkit/helpers";import{AssetValue as t,BaseDecimal as y,Chain as Y,ChainId as r,SKConfig as T6,SwapKitError as Z6}from"@swapkit/helpers";var Q6="FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK",h6="FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM",m6={amount:[{denom:"uatom",amount:"500"}],gas:"200000"},g6={amount:[{denom:"ukuji",amount:"1000"}],gas:"200000"};function x($){switch($){case Y.Maya:return{amount:[],gas:"10000000000"};case Y.THORChain:return{amount:[],gas:"500000000"};case Y.Kujira:return g6;default:return m6}}var A=($,z=!1)=>{if(z)return $.toLowerCase();switch($){case"uUSK":case"USK":return Q6;case"uYUM":case"YUM":return h6;case"uKUJI":case"KUJI":return"ukuji";case"ATOM":case"uATOM":return"uatom";default:return $}},S=({symbol:$,chain:z})=>{if(z===Y.Maya)return($.toUpperCase()!=="CACAO"?$:`${Y.Maya}.${$}`).toUpperCase();if(z===Y.THORChain)return(["RUNE","TCY","RUJI"].includes($.toUpperCase())?`${Y.THORChain}.${$}`:$).toUpperCase();return A($,!1)};async function U($){let z=await import("@cosmjs/stargate"),W=z.StargateClient??z.default?.StargateClient,H=typeof window!=="undefined"?{}:{referrer:"https://sdk.swapkit.dev",referer:"https://sdk.swapkit.dev"};return W.connect({url:$,headers:H})}async function b($,z,W={}){let H=await import("@cosmjs/stargate"),T=H.SigningStargateClient??H.default?.SigningStargateClient,Z=H.GasPrice??H.default?.GasPrice,Q=typeof W==="string"?W:"0.0003uatom",J=typeof W==="string"?{}:W;return T.connectWithSigner($,z,{gasPrice:Z.fromString(Q),...J})}async function X6($,z){let W=await import("@cosmjs/stargate");return(W.SigningStargateClient??W.default?.SigningStargateClient).offline($,z)}var l6=($)=>{let{isStagenet:z}=T6.get("envs"),W=T6.get("rpcUrls");switch($){case r.Kujira:return W.KUJI;case r.THORChain:case"thorchain-mainnet-v1":return z?W.THOR_STAGENET:W.THOR;case r.Maya:return z?W.MAYA_STAGENET:W.MAYA;default:return W.GAIA}},c6=($)=>{switch($){case Y.Maya:case Y.THORChain:return"/types.MsgSend";case Y.Cosmos:case Y.Kujira:return"/cosmos.bank.v1beta1.MsgSend";default:throw new Z6("toolbox_cosmos_not_supported",{chain:$})}},L6=async({sender:$,recipient:z,assetValue:W,memo:H="",feeRate:T,sequence:Z,accountNumber:Q})=>{let{chain:J,chainId:j}=W,R=l6(j),X=await(await U(R)).getAccount($);if(!X)throw new Z6("toolbox_cosmos_account_not_found",{sender:$});let I=t.from({chain:J}),N=A(I.symbol),L=x(J),w=N&&T?{amount:[{denom:N,amount:T.toString()}],gas:L.gas}:L,O={fromAddress:$,toAddress:z,amount:[{amount:W.getBaseValue("string"),denom:A(W.symbol)}]};return{accountNumber:Q??X.accountNumber,chainId:j,fee:w,memo:H,sequence:Z??X.sequence,msgs:[{typeUrl:c6(J),value:O}]}},r6={rune:{chain:Y.THORChain,decimals:y[Y.THORChain]},tcy:{asset:"THOR.TCY",decimals:y[Y.THORChain]},"x/kuji":{asset:"THOR.KUJI",decimals:y[Y.THORChain]},uatom:{chain:Y.Cosmos,decimals:y[Y.Cosmos]},atom:{chain:Y.Cosmos,decimals:y[Y.Cosmos]},cacao:{chain:Y.Maya,decimals:10},maya:{asset:`${Y.Maya}.${Y.Maya}`,decimals:4},ukuji:{chain:Y.Kujira,decimals:y[Y.Kujira]},kuji:{chain:Y.Kujira,decimals:y[Y.Kujira]},[Q6.toLowerCase()]:{asset:`${Y.Kujira}.USK`,decimals:y[Y.Kujira]}},J6=($,z)=>{let W=r6[$.toLowerCase()];if(!W)return t.from({asset:$,value:z,fromBaseDecimal:8});let{chain:H,asset:T,decimals:Z}=W,Q=H?{chain:H}:{asset:T};return t.from({...Q,value:z,fromBaseDecimal:Z})};import{Chain as t6}from"@swapkit/helpers";async function D(){let{$root:$}=await import("../../chunk-9bqegm61.js"),z=await import("@cosmjs/proto-signing"),W=z.Registry??z.default?.Registry,H=await import("@cosmjs/stargate"),T=H.defaultRegistryTypes??H.default?.defaultRegistryTypes;return new W([...T,["/types.MsgSend",$.types.MsgSend],["/types.MsgDeposit",$.types.MsgDeposit]])}async function M($){let z=await import("@cosmjs/stargate"),W=z.AminoTypes??z.default?.AminoTypes,H=$===t6.THORChain?"thorchain":"mayachain";return new W({"/types.MsgSend":{aminoType:`${H}/MsgSend`,toAmino:({fromAddress:T,toAddress:Z,...Q})=>({...Q,from_address:P(T),to_address:P(Z)}),fromAmino:({from_address:T,to_address:Z,...Q})=>({...Q,fromAddress:C(T),toAddress:C(Z)})},"/types.MsgDeposit":{aminoType:`${H}/MsgDeposit`,toAmino:({signer:T,...Z})=>({...Z,signer:P(T)}),fromAmino:({signer:T,...Z})=>({...Z,signer:C(T)})}})}var d2=x(p.THORChain).gas,h2=x(p.Maya).gas,j6=({sender:$,recipient:z,assetValue:W})=>{return{type:`${W.chain===p.Maya?"mayachain":"thorchain"}/MsgSend`,value:{from_address:$,to_address:z,amount:[{amount:W.getBaseValue("string"),denom:A(W.symbol,!0)}]}}},R6=({sender:$,assetValue:z,memo:W=""})=>{return{type:`${z.chain===p.Maya?"mayachain":"thorchain"}/MsgDeposit`,value:{coins:[{amount:z.getBaseValue("string"),asset:S(z)}],signer:$,memo:W}}},n=({sender:$,recipient:z,assetValue:W,memo:H})=>{return!z?R6({sender:$,assetValue:W,memo:H}):j6({sender:$,recipient:z,assetValue:W})},K=async($,z)=>{return(await M(z)).fromAmino($)},q6=async({rpcUrl:$,sender:z})=>{let H=await(await U($)).getAccount(z);if(!H)throw new i6("toolbox_cosmos_account_not_found",{sender:z});return H};function _6($){return function z(W){let{assetValue:H,recipient:T,memo:Z,sender:Q,asSignable:J,asAminoMessage:j}=W;if(T)return s6($)({sender:Q,recipient:T,assetValue:H,memo:Z,asSignable:J,asAminoMessage:j});return a6($)({sender:Q,assetValue:H,memo:Z,asSignable:J,asAminoMessage:j})}}var s6=($)=>async({sender:z,recipient:W,assetValue:H,memo:T="",asSignable:Z=!0,asAminoMessage:Q=!1,sequence:J,accountNumber:j})=>{let R=await q6({rpcUrl:$,sender:z}),G=H.chain,X=j6({sender:z,recipient:W,assetValue:H}),I=Z?await K(Q?X:v(X),G):X;return{chainId:Y6[G],accountNumber:j||R.accountNumber,sequence:J||R.sequence,msgs:[I],fee:x(H.chain),memo:T}},a6=($)=>async({sender:z,assetValue:W,memo:H="",asSignable:T=!0,asAminoMessage:Z=!1,sequence:Q,accountNumber:J})=>{let j=await q6({rpcUrl:$,sender:z}),R=W.chain,G=R6({sender:z,assetValue:W,memo:H}),X=T?await K(Z?G:v(G),R):G;return{chainId:Y6[R],accountNumber:J||j.accountNumber,sequence:Q||j.sequence,msgs:[X],fee:x(W.chain),memo:H}};function v($){if($.type==="thorchain/MsgSend"||$.type==="mayachain/MsgSend")return $;return{...$,value:{...$.value,coins:$.value.coins.map((z)=>{let W=n6.from({asset:z.asset}),H=(W.isSynthetic?W.symbol.split("/")?.[1]:W.symbol)?.toUpperCase(),T=(W.isSynthetic?W.symbol.split("/")?.[0]:W.chain)?.toUpperCase();return{...z,asset:{chain:T,symbol:H,ticker:W.ticker,synth:W.isSynthetic}}})}}}async function u({chain:$,memo:z,msgs:W}){let H=await D(),T=await M($),Z={typeUrl:"/cosmos.tx.v1beta1.TxBody",value:{memo:z,messages:W.map((Q)=>T.fromAmino(Q))}};return H.encode(Z)}import{Chain as h,SwapKitError as x2}from"@swapkit/helpers";import{base64 as e,bech32 as i}from"@scure/base";import{AssetValue as B6,BaseDecimal as s,Chain as k,ChainToChainId as e6,CosmosChainPrefixes as y6,DerivationPath as $2,FeeOption as $6,NetworkDerivationPath as W2,SKConfig as x6,SwapKitError as o,SwapKitNumber as a,applyFeeMultiplier as G6,derivationPathToString as I6,updateDerivationPath as z2}from"@swapkit/helpers";import{SwapKitApi as U6}from"@swapkit/helpers/api";import{P as w6,match as H2}from"ts-pattern";async function A6($,z){try{let H=(await U6.getGasRate()).find((T)=>T.chainId===$)?.value;return H?Number.parseFloat(H):z}catch(W){return z}}async function O6({phrase:$,prefix:z,...W}){let H=await import("@cosmjs/proto-signing"),T=H.DirectSecp256k1HdWallet??H.default?.DirectSecp256k1HdWallet,Z=await import("@cosmjs/crypto"),Q=Z.stringToPath??Z.default?.stringToPath,J="derivationPath"in W?W.derivationPath:`${$2[W.chain]}/${W.index}`;return T.fromMnemonic($,{prefix:z,hdPaths:[Q(J)]})}async function W4({privateKey:$,prefix:z}){let W=await import("@cosmjs/proto-signing");return(W.DirectSecp256k1Wallet??W.default?.DirectSecp256k1Wallet).fromKey($,z)}var N6={[k.Cosmos]:500,[k.Kujira]:1000,[k.THORChain]:5000000,[k.Maya]:5000000};function T2($){return async function z({signature:W,message:H,address:T}){let Z=await $(T);if(!Z?.pubkey)throw new o("toolbox_cosmos_verify_signature_no_pubkey");let Q=await import("@cosmjs/crypto"),J=Q.Secp256k1Signature??Q.default?.Secp256k1Signature,j=Q.Secp256k1??Q.default?.Secp256k1,R=J.fromFixedLength(e.decode(W));return j.verifySignature(R,e.decode(H),Z.pubkey.value)}}async function d({chain:$,...z}){let W=x6.get("rpcUrls")[$],H=y6[$],T="index"in z?z.index||0:0,Z=I6("derivationPath"in z&&z.derivationPath?z.derivationPath:z2(W2[$],{index:T})),Q=await H2(z).with({phrase:w6.string},({phrase:X})=>O6({phrase:X,prefix:H,derivationPath:Z})).with({signer:w6.any},({signer:X})=>X).otherwise(()=>{return});async function J(X){return(await U(W)).getAccount(X)}async function j(){let[X]=await Q?.getAccounts()||[];return X?.address}async function R(){let[X]=await Q?.getAccounts()||[];if(!X?.pubkey)throw new o("toolbox_cosmos_signer_not_defined");return e.encode(X?.pubkey)}async function G({recipient:X,assetValue:I,memo:N="",feeRate:L,feeOptionKey:w=$6.Fast}){let O=await j();if(!(Q&&O))throw new o("toolbox_cosmos_signer_not_defined");let E=B6.from({chain:$}),B=S(E),m=L||X2((await k6($,N6[$]))[w],B),g=await b(W,Q),l=[{denom:A(`u${I.symbol}`).toLowerCase(),amount:I.getBaseValue("string")}],{transactionHash:F}=await g.sendTokens(O,X,l,m,N);return F}return{transfer:G,getAddress:j,getAccount:J,getBalance:async(X,I)=>{let N=await E6(W)(X);return await Promise.all(N.filter(({denom:L})=>L&&!L.includes("IBC/")).map(({denom:L,amount:w})=>{let O=[k.THORChain,k.Maya].includes($)&&(L.includes("/")||L.includes("˜"))?`${$}.${L}`:L;return J6(O,w)}))},getSignerFromPhrase:async({phrase:X,derivationPath:I})=>O6({phrase:X,prefix:H,derivationPath:I6(I),index:T}),getSignerFromPrivateKey:async(X)=>{let I=await import("@cosmjs/proto-signing");return(I.DirectSecp256k1Wallet??I.default?.DirectSecp256k1Wallet).fromKey(X,H)},createPrivateKeyFromPhrase:J2(Z),validateAddress:M6(H),getPubKey:R,getFees:()=>k6($,N6[$]),fetchFeeRateFromSwapKit:A6,getBalanceAsDenoms:E6(W),createTransaction:L6,verifySignature:T2(J)}}async function Z2($,z){try{let H=(await U6.getGasRate()).find((T)=>T.chainId===$)?.value;return H?Number.parseFloat(H):z}catch(W){return z}}var z4=Z2;function H4({address:$,chain:z,prefix:W}){let H=W||Q2(z);if(!(H&&$))throw new o("toolbox_cosmos_validate_address_prefix_not_found");return M6(H)($)}function T4({assetValue:{chain:$}}){return B6.from({chain:$,value:L2($)})}function Q2($){let{isStagenet:z}=x6.get("envs"),W=$?[k.THORChain,k.Maya].includes($)&&z:!1,H=$?y6[$]:void 0;return W?`s${H}`:H}async function k6($,z){let W=await A6(e6[$],z);return{average:a.fromBigInt(BigInt(W),s[$]),fast:a.fromBigInt(BigInt(G6(W,$6.Fast,!0)),s[$]),fastest:a.fromBigInt(BigInt(G6(W,$6.Fastest,!0)),s[$])}}function X2($,z){return{amount:[{denom:z,amount:$.getBaseValue("string")}],gas:"200000"}}function L2($){return{[k.Cosmos]:0.007,[k.Kujira]:0.02,[k.THORChain]:0.02,[k.Maya]:0.02}[$]||0}function M6($){return function z(W){if(!W.startsWith($))return!1;try{let{prefix:H,words:T}=i.decode(W);return i.encode(H,T)===W.toLocaleLowerCase()}catch(H){return!1}}}function E6($){return async function z(W){return(await(await U($)).getAllBalances(W)).map((Q)=>({...Q,denom:Q.denom.includes("/")?Q.denom.toUpperCase():Q.denom}))}}function J2($){return async function z(W){let H=await import("@cosmjs/crypto"),T=H.stringToPath??H.default?.stringToPath,Z=H.Slip10Curve??H.default?.Slip10Curve,Q=H.Slip10??H.default?.Slip10,J=H.EnglishMnemonic??H.default?.EnglishMnemonic,j=H.Bip39??H.default?.Bip39,R=new J(W),G=await j.mnemonicToSeed(R),{privkey:X}=Q.derivePath(Z.Secp256k1,G,T($));return X}}import{base64 as f}from"@scure/base";import{BaseDecimal as Y2,Chain as j2,CosmosChainPrefixes as R2,FeeOption as W6,NetworkDerivationPath as q2,RequestClient as _2,SKConfig as z6,SwapKitError as K6,SwapKitNumber as v6,derivationPathToString as G2,updateDerivationPath as I2}from"@swapkit/helpers";import{P as f6,match as w2}from"ts-pattern";function O2({prefix:$,derivationPath:z}){return async function W(H,T=0){let Z=await import("@cosmjs/amino"),Q=Z.Secp256k1HdWallet??Z.default?.Secp256k1HdWallet,J=await import("@cosmjs/crypto"),j=J.stringToPath??J.default?.stringToPath;return Q.fromMnemonic(H,{hdPaths:[j(`${z}/${T}`)],prefix:$})}}function N2($){return f.encode($)}function k2($){return async function z({wallet:W,tx:H}){let{msgs:T,accountNumber:Z,sequence:Q,chainId:J,fee:j,memo:R}=typeof H==="string"?JSON.parse(H):H,G=(await W.getAccounts())?.[0]?.address||"",X=await M($),I=await D(),N=await X6(W,{registry:I,aminoTypes:X}),L=[];for(let E of T){let B=await K(E,$);L.push(B)}let{signatures:[w]}=await N.sign(G,L,j,R,{accountNumber:Z,sequence:Q,chainId:J}),O=await u({chain:$,memo:R,msgs:T.map(v)});return{signature:N2(w),bodyBytes:O}}}function E2({prefix:$,rpcUrl:z}){return async function W(H,T,Z,Q,J){let{encodeSecp256k1Pubkey:j,pubkeyToAddress:R}=(await import("@cosmjs/amino")).default,{makeMultisignedTxBytes:G}=(await import("@cosmjs/stargate")).default,{sequence:X,fee:I}=JSON.parse(H),N=await D6(Z,Q),L=T.map((E)=>[R(j(f.decode(E.pubKey)),$),f.decode(E.signature)]),w=await U(z),{transactionHash:O}=await w.broadcastTx(G(N,X,I,J,new Map(L)));return O}}async function D6($,z,W=!0){let{createMultisigThresholdPubkey:H,encodeSecp256k1Pubkey:T}=(await import("@cosmjs/amino")).default;return H($.map((Z)=>T(f.decode(Z))),z,W)}function B2($){return f.decode($)}async function y2({privateKey:$,message:z}){let{Secp256k1:W}=(await import("@cosmjs/crypto")).default,H=await W.createSignature(f.decode(z),$);return f.encode(Buffer.concat([H.r(32),H.s(32)]))}async function F6({chain:$,...z}){let W=z6.get("nodeUrls")[$],H=z6.get("rpcUrls")[$],{isStagenet:T}=z6.get("envs"),Z=$===j2.THORChain,Q=`${T?"s":""}${R2[$]}`,J="index"in z?z.index||0:0,j="derivationPath"in z&&z.derivationPath?z.derivationPath:I2(q2[$],{index:J}),R=await d({chain:$,...z}),G=await w2(z).with({phrase:f6.string},({phrase:L})=>R.getSignerFromPhrase({phrase:L,derivationPath:j})).with({signer:f6.any},({signer:L})=>L).otherwise(()=>{return}),X=x($);async function I(){let L,w=`${W}/${Z?"thorchain":"mayachain"}/constants`;try{let{int_64_values:{NativeTransactionFee:O}}=await _2.get(w);if(!O||Number.isNaN(O)||O<0)throw new K6("toolbox_cosmos_invalid_fee",{nativeFee:O.toString()});L=new v6(O)}catch{L=new v6({value:Z?0.02:1,decimal:Y2[$]})}return{[W6.Average]:L,[W6.Fast]:L,[W6.Fastest]:L}}async function N({assetValue:L,memo:w="",recipient:O}){let{TxRaw:E}=await import("cosmjs-types/cosmos/tx/v1beta1/tx"),B=(await G?.getAccounts())?.[0]?.address;if(!(B&&G))throw new K6("toolbox_cosmos_no_signer");let m="signAmino"in G,g=await D(),l=await M($),F=await b(H,G,{registry:g,aminoTypes:l}),c=n({assetValue:L,sender:B,recipient:O,memo:w});if(m){let P6=await K(c,$),{signatures:S6,authInfoBytes:b6}=await F.sign(B,[P6],X,w),p6=E.encode({signatures:S6,authInfoBytes:b6,bodyBytes:await u({chain:$,msgs:[c].map(v),memo:w})}).finish();return(await F.broadcastTx(p6)).transactionHash}let V6=v(c),C6=await K(V6,$);return(await F.signAndBroadcast(B,[C6],X,w)).transactionHash}return{...R,broadcastMultisigTx:E2({prefix:Q,rpcUrl:H}),buildAminoMsg:n,buildEncodedTxBody:u,convertToSignable:K,createDefaultAminoTypes:()=>M($),createDefaultRegistry:D,createMultisig:D6,createTransaction:_6(H),deposit:N,getFees:I,importSignature:B2,parseAminoMessageForDirectSigning:v,secp256k1HdWalletFromMnemonic:O2({derivationPath:G2(j),prefix:Q}),signMultisigTx:k2($),signWithPrivateKey:y2,transfer:N,pubkeyToAddress:async(L)=>{let{pubkeyToAddress:w}=(await import("@cosmjs/amino")).default;return w(L,Q)}}}var I4=($,z)=>{switch($){case h.Cosmos:case h.Kujira:return d({chain:$,...z});case h.Maya:case h.THORChain:return F6({chain:$,...z});default:throw new x2("toolbox_cosmos_not_supported",{chain:$})}};export{T2 as verifySignature,j6 as transferMsgAmino,f2 as toBase64,v as parseAminoMessageForDirectSigning,W4 as getSignerFromPrivateKey,O6 as getSignerFromPhrase,l6 as getRPC,A as getMsgSendDenom,z4 as getFeeRateFromThorswap,Z2 as getFeeRateFromSwapKit,S as getDenomWithChain,x as getDefaultChainFee,_6 as getCreateTransaction,I4 as getCosmosToolbox,J6 as getAssetFromDenom,D2 as fromBase64,A6 as fetchFeeRateFromSwapKit,T4 as estimateTransactionFee,R6 as depositMsgAmino,F6 as createThorchainToolbox,U as createStargateClient,b as createSigningStargateClient,X6 as createOfflineStargateClient,D as createDefaultRegistry,M as createDefaultAminoTypes,d as createCosmosToolbox,H4 as cosmosValidateAddress,L6 as cosmosCreateTransaction,K as convertToSignable,s6 as buildTransferTx,u as buildEncodedTxBody,a6 as buildDepositTx,n as buildAminoMsg,C as bech32ToBase64,P as base64ToBech32,h6 as YUM_KUJIRA_FACTORY_DENOM,Q6 as USK_KUJIRA_FACTORY_DENOM,d2 as THORCHAIN_GAS_VALUE,h2 as MAYA_GAS_VALUE,g6 as DEFAULT_KUJI_FEE_MAINNET,m6 as DEFAULT_COSMOS_FEE_MAINNET};
2
2
 
3
- //# debugId=400B1DEE649380A164756E2164756E21
3
+ //# debugId=2D4DADF900B9930764756E2164756E21
4
4
  //# sourceMappingURL=index.js.map