@swapkit/wallets 3.0.0-beta.29 → 3.0.0-beta.30

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,3 +1,3 @@
1
- import{A as h}from"../../chunk-zfnkndsr.js";import{C as w,D as p}from"../../chunk-qwd1kp32.js";import{Chain as m,EVMChains as P,WalletOption as v,createWallet as k,filterSupportedChains as y}from"@swapkit/helpers";import{Chain as n,ChainId as u,SwapKitError as c,prepareNetworkSwitch as _,switchEVMWalletNetwork as b}from"@swapkit/helpers";import{Psbt as C}from"bitcoinjs-lib";async function g(i){let t=window.bitkeep;switch(i){case n.Ethereum:case n.Base:case n.Avalanche:case n.Arbitrum:case n.Optimism:case n.Polygon:case n.BinanceSmartChain:{if(!(t&&("ethereum"in t)))throw new c("wallet_bitkeep_not_found");let o=t.ethereum,[a]=await o.send("eth_requestAccounts",[]);return{...await x({chain:i,walletProvider:o}),address:a}}case n.Bitcoin:{if(!(t&&("unisat"in t)))throw new c("wallet_bitkeep_not_found");let{unisat:o}=t,{getUtxoToolbox:a}=await import("@swapkit/toolboxes/utxo"),[e]=await o.requestAccounts();async function r(d){let f=await o.signPsbt(d.toHex(),{autoFinalized:!1});return C.fromHex(f)}let s={getAddress:()=>Promise.resolve(e),signTransaction:r};return{...await a(n.Bitcoin,{signer:s}),address:e}}case n.Cosmos:{if(!(t&&("keplr"in t)))throw new c("wallet_bitkeep_not_found");let{keplr:o}=t;await o.enable(u.Cosmos);let a=o.getOfflineSignerOnlyAmino(u.Cosmos),e=await a.getAccounts();if(!e?.[0])throw new c("wallet_bitkeep_no_accounts",{chain:n.Cosmos});let{getCosmosToolbox:r}=await import("@swapkit/toolboxes/cosmos"),[{address:s}]=e,l={...a,getAddress:()=>Promise.resolve(s),signTransaction:async()=>Promise.resolve({})};return{...r(n.Cosmos,{signer:l}),address:s}}case n.Solana:{if(!(t&&("solana"in t)))throw new c("wallet_bitkeep_not_found");let{getSolanaToolbox:o}=await import("@swapkit/toolboxes/solana"),a=t?.solana,e=o({signer:a}),s=(await a.connect()).publicKey.toString();return{...e,address:s}}default:throw new c("wallet_chain_not_supported")}}var x=async({chain:i,walletProvider:t})=>{let{getEvmToolbox:o}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:a}=await import("ethers");if(!t)throw new c("wallet_provider_not_found");let e=new a(t,"any"),r=await e.getSigner(),s=await o(i,{provider:e,signer:r});try{if(i!==n.Ethereum&&"getNetworkParams"in s)await b(e,i,s.getNetworkParams())}catch(l){throw new c("wallet_bitkeep_failed_to_switch_network",{chain:i})}return _({chain:i,toolbox:s,provider:e})};var S=k({name:"connectBitget",walletType:v.BITGET,supportedChains:[...P,m.Cosmos,m.Bitcoin,m.Solana],connect:({addChain:i,walletType:t,supportedChains:o})=>async function a(e){let r=y({chains:e,supportedChains:o,walletType:t});return await Promise.all(r.map(async(s)=>{let l=await g(s),d=await l.getAddress()||"";i({...l,address:d,chain:s,walletType:t})})),!0}}),N=h(S);export{S as bitgetWallet,N as BITGET_SUPPORTED_CHAINS};
1
+ import{A as h}from"../../chunk-th8ggrmx.js";import{C as w,D as p}from"../../chunk-qwd1kp32.js";import{Chain as m,EVMChains as P,WalletOption as v,createWallet as k,filterSupportedChains as y}from"@swapkit/helpers";import{Chain as n,ChainId as u,SwapKitError as c,prepareNetworkSwitch as _,switchEVMWalletNetwork as b}from"@swapkit/helpers";import{Psbt as C}from"bitcoinjs-lib";async function g(i){let t=window.bitkeep;switch(i){case n.Ethereum:case n.Base:case n.Avalanche:case n.Arbitrum:case n.Optimism:case n.Polygon:case n.BinanceSmartChain:{if(!(t&&("ethereum"in t)))throw new c("wallet_bitkeep_not_found");let o=t.ethereum,[a]=await o.send("eth_requestAccounts",[]);return{...await x({chain:i,walletProvider:o}),address:a}}case n.Bitcoin:{if(!(t&&("unisat"in t)))throw new c("wallet_bitkeep_not_found");let{unisat:o}=t,{getUtxoToolbox:a}=await import("@swapkit/toolboxes/utxo"),[e]=await o.requestAccounts();async function r(d){let f=await o.signPsbt(d.toHex(),{autoFinalized:!1});return C.fromHex(f)}let s={getAddress:()=>Promise.resolve(e),signTransaction:r};return{...await a(n.Bitcoin,{signer:s}),address:e}}case n.Cosmos:{if(!(t&&("keplr"in t)))throw new c("wallet_bitkeep_not_found");let{keplr:o}=t;await o.enable(u.Cosmos);let a=o.getOfflineSignerOnlyAmino(u.Cosmos),e=await a.getAccounts();if(!e?.[0])throw new c("wallet_bitkeep_no_accounts",{chain:n.Cosmos});let{getCosmosToolbox:r}=await import("@swapkit/toolboxes/cosmos"),[{address:s}]=e,l={...a,getAddress:()=>Promise.resolve(s),signTransaction:async()=>Promise.resolve({})};return{...r(n.Cosmos,{signer:l}),address:s}}case n.Solana:{if(!(t&&("solana"in t)))throw new c("wallet_bitkeep_not_found");let{getSolanaToolbox:o}=await import("@swapkit/toolboxes/solana"),a=t?.solana,e=o({signer:a}),s=(await a.connect()).publicKey.toString();return{...e,address:s}}default:throw new c("wallet_chain_not_supported")}}var x=async({chain:i,walletProvider:t})=>{let{getEvmToolbox:o}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:a}=await import("ethers");if(!t)throw new c("wallet_provider_not_found");let e=new a(t,"any"),r=await e.getSigner(),s=await o(i,{provider:e,signer:r});try{if(i!==n.Ethereum&&"getNetworkParams"in s)await b(e,i,s.getNetworkParams())}catch(l){throw new c("wallet_bitkeep_failed_to_switch_network",{chain:i})}return _({chain:i,toolbox:s,provider:e})};var S=k({name:"connectBitget",walletType:v.BITGET,supportedChains:[...P,m.Cosmos,m.Bitcoin,m.Solana],connect:({addChain:i,walletType:t,supportedChains:o})=>async function a(e){let r=y({chains:e,supportedChains:o,walletType:t});return await Promise.all(r.map(async(s)=>{let l=await g(s),d=await l.getAddress()||"";i({...l,address:d,chain:s,walletType:t})})),!0}}),N=h(S);export{S as bitgetWallet,N as BITGET_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=EA85396D0A49B08564756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as g}from"../../chunk-zfnkndsr.js";import{C as h,D as u}from"../../chunk-qwd1kp32.js";import{Chain as a,ChainToChainId as P,SKConfig as y,WalletOption as S,createWallet as v,filterSupportedChains as W}from"@swapkit/helpers";import{Chain as s,SwapKitError as m}from"@swapkit/helpers";async function b(t,o){let{AbstractSigner:i}=await import("ethers");class n extends i{#e;constructor(e,r){super(r);this.#e=e}async getAddress(){let e=await this.#e.request({method:"eth_requestAccounts"});if(!e[0])throw new m("wallet_coinbase_no_accounts");return e[0]}async signTransaction(){return await this.#e.request({method:"eth_signTransaction"})}async signMessage(e){return await this.#e.request({method:"personal_sign",params:[e,await this.getAddress()]})}signTypedData=()=>{throw new m("wallet_coinbase_method_not_supported",{method:"signTypedData"})};connect(e){return new n(this.#e,e)}}return new n(t,o)}var w=async({chain:t,coinbaseSdk:o})=>{switch(t){case s.Ethereum:case s.Avalanche:case s.Arbitrum:case s.Optimism:case s.Polygon:case s.BinanceSmartChain:{let i=o.getProvider(),{getEvmToolbox:n,getProvider:e}=await import("@swapkit/toolboxes/evm"),r=await e(t),c=await b(i,r),d=await n(t,{provider:r,signer:c}),p=await c.getAddress();return{...d,address:p}}default:throw new m("wallet_coinbase_chain_not_supported",{chain:t})}};var _=v({name:"connectCoinbaseWallet",walletType:S.COINBASE_MOBILE,supportedChains:[a.Arbitrum,a.Avalanche,a.Base,a.BinanceSmartChain,a.Ethereum,a.Optimism,a.Polygon],connect:({addChain:t,walletType:o,supportedChains:i})=>async function n(e){let{createCoinbaseWalletSDK:r}=await import("@coinbase/wallet-sdk"),c=W({chains:e,supportedChains:i,walletType:o}),d=y.get("integrations").coinbase||{appName:"Swapkit Playground"},p=r({...d,appChainIds:c.map((l)=>Number(P[l]))});return await Promise.all(c.map(async(l)=>{let C=await w({chain:l,coinbaseSdk:p});t({...C,chain:l,walletType:o})})),!0}}),O=g(_);export{_ as coinbaseWallet,O as COINBASE_SUPPORTED_CHAINS};
1
+ import{A as g}from"../../chunk-th8ggrmx.js";import{C as h,D as u}from"../../chunk-qwd1kp32.js";import{Chain as a,ChainToChainId as P,SKConfig as y,WalletOption as S,createWallet as v,filterSupportedChains as W}from"@swapkit/helpers";import{Chain as s,SwapKitError as m}from"@swapkit/helpers";async function b(t,o){let{AbstractSigner:i}=await import("ethers");class n extends i{#e;constructor(e,r){super(r);this.#e=e}async getAddress(){let e=await this.#e.request({method:"eth_requestAccounts"});if(!e[0])throw new m("wallet_coinbase_no_accounts");return e[0]}async signTransaction(){return await this.#e.request({method:"eth_signTransaction"})}async signMessage(e){return await this.#e.request({method:"personal_sign",params:[e,await this.getAddress()]})}signTypedData=()=>{throw new m("wallet_coinbase_method_not_supported",{method:"signTypedData"})};connect(e){return new n(this.#e,e)}}return new n(t,o)}var w=async({chain:t,coinbaseSdk:o})=>{switch(t){case s.Ethereum:case s.Avalanche:case s.Arbitrum:case s.Optimism:case s.Polygon:case s.BinanceSmartChain:{let i=o.getProvider(),{getEvmToolbox:n,getProvider:e}=await import("@swapkit/toolboxes/evm"),r=await e(t),c=await b(i,r),d=await n(t,{provider:r,signer:c}),p=await c.getAddress();return{...d,address:p}}default:throw new m("wallet_coinbase_chain_not_supported",{chain:t})}};var _=v({name:"connectCoinbaseWallet",walletType:S.COINBASE_MOBILE,supportedChains:[a.Arbitrum,a.Avalanche,a.Base,a.BinanceSmartChain,a.Ethereum,a.Optimism,a.Polygon],connect:({addChain:t,walletType:o,supportedChains:i})=>async function n(e){let{createCoinbaseWalletSDK:r}=await import("@coinbase/wallet-sdk"),c=W({chains:e,supportedChains:i,walletType:o}),d=y.get("integrations").coinbase||{appName:"Swapkit Playground"},p=r({...d,appChainIds:c.map((l)=>Number(P[l]))});return await Promise.all(c.map(async(l)=>{let C=await w({chain:l,coinbaseSdk:p});t({...C,chain:l,walletType:o})})),!0}}),O=g(_);export{_ as coinbaseWallet,O as COINBASE_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=18D577AF5E04806A64756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A}from"../../chunk-zfnkndsr.js";import{C as G,D as H}from"../../chunk-qwd1kp32.js";import{Chain as J,ChainToChainId as w,SwapKitError as I,WalletOption as T,createWallet as v,filterSupportedChains as u}from"@swapkit/helpers";import{Chain as q,ChainToChainId as b,EVMChains as P,SwapKitError as _,WalletOption as E,providerRequest as f}from"@swapkit/helpers";import{erc20ABI as g}from"@swapkit/helpers/contracts";async function L(z){if(!window.xfi)throw new _("wallet_ctrl_not_found");let{match:Z}=await import("ts-pattern");return Z(z).with(q.Arbitrum,q.Avalanche,q.Base,q.BinanceSmartChain,q.Ethereum,q.Optimism,q.Polygon,()=>window.xfi?.ethereum).with(q.Cosmos,q.Kujira,()=>window.xfi?.keplr).with(q.Bitcoin,()=>window.xfi?.bitcoin).with(q.BitcoinCash,()=>window.xfi?.bitcoincash).with(q.Dogecoin,()=>window.xfi?.dogecoin).with(q.Litecoin,()=>window.xfi?.litecoin).with(q.Solana,()=>window.xfi?.solana).with(q.THORChain,()=>window.xfi?.thorchain).with(q.Maya,()=>window.xfi?.mayachain).otherwise(()=>{return})}async function x({method:z,params:Z,chain:D}){let Q=await L(D);return new Promise(($,F)=>{if(Q&&"request"in Q)Q.request({method:z,params:Z},(X,Y)=>{X?F(X):$(Y)})})}async function V(z){try{let Z=await L(z);if(!Z)throw new _({errorKey:"wallet_provider_not_found",info:{wallet:E.CTRL,chain:z}});if([q.Cosmos,q.Kujira].includes(z)){let Q=await L(q.Cosmos);if(!Q||"request"in Q)throw new _({errorKey:"wallet_provider_not_found",info:{wallet:E.CTRL,chain:z}});let $=b[z];await Q.enable($);let F=Q.getOfflineSigner($),[X]=await F.getAccounts();return X?.address}if(P.includes(z)){if("request"in Z&&typeof Z.request==="function")return(await Z.request({method:"eth_requestAccounts"}))[0];let{BrowserProvider:Q}=await import("ethers"),$=new Q(Z,"any"),[F]=await f({provider:$,method:"eth_requestAccounts",params:[]});return F}if(z===q.Solana)return(await(await L(q.Solana)).connect()).publicKey.toString();if(z===q.Near){if(!window.xfi?.near)throw new _("wallet_ctrl_not_found",{chain:q.Near});if(!window.xfi.near.isSignedIn?.())return(await window.xfi.near.request?.({method:"connect"}))?.[0]||"";return window.xfi.near.getAccountId?.()||""}return(await Z.request({method:"request_accounts",params:[]}))[0]}catch(Z){throw new _({errorKey:"wallet_provider_not_found",info:{wallet:E.CTRL,chain:z}})}}async function O({assetValue:z,recipient:Z,memo:D,gasLimit:Q},$="transfer"){if(!z)throw new _("wallet_ctrl_asset_not_defined");let F=await V(z.chain),X=[{amount:{amount:z.getBaseValue("number"),decimals:z.decimal},asset:{chain:z.chain,symbol:z.symbol.toUpperCase(),ticker:z.symbol.toUpperCase()},memo:D||"",from:F,recipient:Z,gasLimit:Q}];return x({method:$,params:X,chain:z.chain})}function S(z,Z){return{call:async({contractAddress:D,abi:Q,funcName:$,funcParams:F=[],txOverrides:X})=>{if(!D)throw new _("wallet_ctrl_contract_address_not_provided");let{createContract:Y,getCreateContractTxObject:y,isStateChangingCall:B}=await import("@swapkit/toolboxes/evm");if(B({abi:Q,funcName:$})){let j=y({provider:z,chain:Z}),{value:W,from:K,to:N,data:k}=await j({contractAddress:D,abi:Q,funcName:$,funcParams:F,txOverrides:X});return(await(await z.getSigner()).sendTransaction({value:BigInt(W||0),from:K,to:N,data:k||"0x"})).hash}let R=await Y(D,Q,z)[$]?.(...F);return typeof R?.hash==="string"?R?.hash:R},approve:async({assetAddress:D,spenderAddress:Q,amount:$,from:F})=>{let{MAX_APPROVAL:X,getCreateContractTxObject:Y}=await import("@swapkit/toolboxes/evm"),y=[Q,BigInt($||X)],U={contractAddress:D,abi:g,funcName:"approve",funcParams:y,txOverrides:{from:F}},M=Y({provider:z,chain:Z}),{value:R,to:j,data:W}=await M(U);return(await(await z.getSigner()).sendTransaction({value:BigInt(R||0),from:F,to:j,data:W||"0x"})).hash},sendTransaction:async(D)=>{let{from:Q,to:$,data:F,value:X}=D;if(!$)throw new _("wallet_ctrl_send_transaction_no_address");return(await(await z.getSigner()).sendTransaction({value:BigInt(X||0),from:Q,to:$,data:F||"0x"})).hash}}}var m=v({name:"connectCtrl",walletType:T.CTRL,supportedChains:[J.Arbitrum,J.Avalanche,J.Base,J.BinanceSmartChain,J.Bitcoin,J.BitcoinCash,J.Cosmos,J.Dogecoin,J.Ethereum,J.Kujira,J.Litecoin,J.Maya,J.Near,J.Optimism,J.Polygon,J.Solana,J.THORChain],connect:({addChain:z,walletType:Z,supportedChains:D})=>async function Q($){let X=u({chains:$,supportedChains:D,walletType:Z}).map(async(Y)=>{let y=await V(Y),B=await C(Y);z({...B,address:y,chain:Y,walletType:Z})});return await Promise.all(X),!0}}),t=A(m);async function C(z){switch(z){case J.Solana:{let{getSolanaToolbox:Z}=await import("@swapkit/toolboxes/solana"),D=window.xfi?.solana;if(!D)throw new I("wallet_ctrl_not_found");return{...Z({signer:D})}}case J.Maya:case J.THORChain:{let{getCosmosToolbox:Z,THORCHAIN_GAS_VALUE:D,MAYA_GAS_VALUE:Q}=await import("@swapkit/toolboxes/cosmos"),$=z===J.Maya?Q:D;return{...await Z(z),deposit:(X)=>O({...X,recipient:""},"deposit"),transfer:(X)=>O({...X,gasLimit:$},"transfer")}}case J.Cosmos:case J.Kujira:{let{getCosmosToolbox:Z}=await import("@swapkit/toolboxes/cosmos"),D=w[z],Q=await L(z);await Q?.enable(D);let $=Q?.getOfflineSignerOnlyAmino(D);if(!$)throw new I("wallet_ctrl_not_found");return Z(z,{signer:$})}case J.Bitcoin:case J.BitcoinCash:case J.Dogecoin:case J.Litecoin:{let{getUtxoToolbox:Z}=await import("@swapkit/toolboxes/utxo");return{...await Z(z),transfer:O}}case J.Arbitrum:case J.Avalanche:case J.Base:case J.BinanceSmartChain:case J.Ethereum:case J.Optimism:case J.Polygon:{let{prepareNetworkSwitch:Z,switchEVMWalletNetwork:D}=await import("@swapkit/helpers"),{getEvmToolbox:Q}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:$}=await import("ethers"),F=await L(z);if(!F)throw new I("wallet_ctrl_not_found");let X=new $(F,"any"),Y=await X.getSigner(),y=await Q(z,{provider:X,signer:Y}),B=S(X,z);try{if(z!==J.Ethereum){let U=y.getNetworkParams();await D(X,z,U)}}catch(U){throw new I({errorKey:"wallet_failed_to_add_or_switch_network",info:{wallet:T.CTRL,chain:z}})}return Z({provider:window.xfi?.ethereum,chain:z,toolbox:{...y,...B}})}case J.Near:{if(!window.xfi?.near)throw new I("wallet_ctrl_not_found",{chain:J.Near});let{createNearSignerFromProvider:Z}=await import("../../chunk-dcj9twam.js"),{getNearToolbox:D}=await import("@swapkit/toolboxes/near"),Q=window.xfi.near,$=await Z(Q,"CTRL"),F=await $.getAddress();return{...await D({signer:$}),transfer:async(B)=>{let{transfer:U}=await import("near-api-js/lib/transaction"),M=B.assetValue.getBaseValue("string"),R=U(BigInt(M)),j={signerId:F,receiverId:B.recipient,actions:[R]};return await Q.request({method:"signAndSendTransaction",params:{transaction:j}})},createTransaction:async(B)=>{let{functionCall:U,transfer:M}=await import("near-api-js/lib/transaction");if(B.functionCall){let{methodName:W,args:K,attachedDeposit:N}=B.functionCall,k=U(W,K,BigInt("30000000000000"),BigInt(N||"0"));return{signerId:F,receiverId:B.recipient,actions:[k]}}let R=B.assetValue.getBaseValue("string"),j=M(BigInt(R));return{signerId:F,receiverId:B.recipient,actions:[j]}}}}default:return null}}export{m as ctrlWallet,t as CTRL_SUPPORTED_CHAINS};
1
+ import{A}from"../../chunk-th8ggrmx.js";import{C as G,D as H}from"../../chunk-qwd1kp32.js";import{Chain as J,ChainToChainId as w,SwapKitError as I,WalletOption as T,createWallet as v,filterSupportedChains as u}from"@swapkit/helpers";import{Chain as q,ChainToChainId as b,EVMChains as P,SwapKitError as _,WalletOption as E,providerRequest as f}from"@swapkit/helpers";import{erc20ABI as g}from"@swapkit/helpers/contracts";async function L(z){if(!window.xfi)throw new _("wallet_ctrl_not_found");let{match:Z}=await import("ts-pattern");return Z(z).with(q.Arbitrum,q.Avalanche,q.Base,q.BinanceSmartChain,q.Ethereum,q.Optimism,q.Polygon,()=>window.xfi?.ethereum).with(q.Cosmos,q.Kujira,()=>window.xfi?.keplr).with(q.Bitcoin,()=>window.xfi?.bitcoin).with(q.BitcoinCash,()=>window.xfi?.bitcoincash).with(q.Dogecoin,()=>window.xfi?.dogecoin).with(q.Litecoin,()=>window.xfi?.litecoin).with(q.Solana,()=>window.xfi?.solana).with(q.THORChain,()=>window.xfi?.thorchain).with(q.Maya,()=>window.xfi?.mayachain).otherwise(()=>{return})}async function x({method:z,params:Z,chain:D}){let Q=await L(D);return new Promise(($,F)=>{if(Q&&"request"in Q)Q.request({method:z,params:Z},(X,Y)=>{X?F(X):$(Y)})})}async function V(z){try{let Z=await L(z);if(!Z)throw new _({errorKey:"wallet_provider_not_found",info:{wallet:E.CTRL,chain:z}});if([q.Cosmos,q.Kujira].includes(z)){let Q=await L(q.Cosmos);if(!Q||"request"in Q)throw new _({errorKey:"wallet_provider_not_found",info:{wallet:E.CTRL,chain:z}});let $=b[z];await Q.enable($);let F=Q.getOfflineSigner($),[X]=await F.getAccounts();return X?.address}if(P.includes(z)){if("request"in Z&&typeof Z.request==="function")return(await Z.request({method:"eth_requestAccounts"}))[0];let{BrowserProvider:Q}=await import("ethers"),$=new Q(Z,"any"),[F]=await f({provider:$,method:"eth_requestAccounts",params:[]});return F}if(z===q.Solana)return(await(await L(q.Solana)).connect()).publicKey.toString();if(z===q.Near){if(!window.xfi?.near)throw new _("wallet_ctrl_not_found",{chain:q.Near});if(!window.xfi.near.isSignedIn?.())return(await window.xfi.near.request?.({method:"connect"}))?.[0]||"";return window.xfi.near.getAccountId?.()||""}return(await Z.request({method:"request_accounts",params:[]}))[0]}catch(Z){throw new _({errorKey:"wallet_provider_not_found",info:{wallet:E.CTRL,chain:z}})}}async function O({assetValue:z,recipient:Z,memo:D,gasLimit:Q},$="transfer"){if(!z)throw new _("wallet_ctrl_asset_not_defined");let F=await V(z.chain),X=[{amount:{amount:z.getBaseValue("number"),decimals:z.decimal},asset:{chain:z.chain,symbol:z.symbol.toUpperCase(),ticker:z.symbol.toUpperCase()},memo:D||"",from:F,recipient:Z,gasLimit:Q}];return x({method:$,params:X,chain:z.chain})}function S(z,Z){return{call:async({contractAddress:D,abi:Q,funcName:$,funcParams:F=[],txOverrides:X})=>{if(!D)throw new _("wallet_ctrl_contract_address_not_provided");let{createContract:Y,getCreateContractTxObject:y,isStateChangingCall:B}=await import("@swapkit/toolboxes/evm");if(B({abi:Q,funcName:$})){let j=y({provider:z,chain:Z}),{value:W,from:K,to:N,data:k}=await j({contractAddress:D,abi:Q,funcName:$,funcParams:F,txOverrides:X});return(await(await z.getSigner()).sendTransaction({value:BigInt(W||0),from:K,to:N,data:k||"0x"})).hash}let R=await Y(D,Q,z)[$]?.(...F);return typeof R?.hash==="string"?R?.hash:R},approve:async({assetAddress:D,spenderAddress:Q,amount:$,from:F})=>{let{MAX_APPROVAL:X,getCreateContractTxObject:Y}=await import("@swapkit/toolboxes/evm"),y=[Q,BigInt($||X)],U={contractAddress:D,abi:g,funcName:"approve",funcParams:y,txOverrides:{from:F}},M=Y({provider:z,chain:Z}),{value:R,to:j,data:W}=await M(U);return(await(await z.getSigner()).sendTransaction({value:BigInt(R||0),from:F,to:j,data:W||"0x"})).hash},sendTransaction:async(D)=>{let{from:Q,to:$,data:F,value:X}=D;if(!$)throw new _("wallet_ctrl_send_transaction_no_address");return(await(await z.getSigner()).sendTransaction({value:BigInt(X||0),from:Q,to:$,data:F||"0x"})).hash}}}var m=v({name:"connectCtrl",walletType:T.CTRL,supportedChains:[J.Arbitrum,J.Avalanche,J.Base,J.BinanceSmartChain,J.Bitcoin,J.BitcoinCash,J.Cosmos,J.Dogecoin,J.Ethereum,J.Kujira,J.Litecoin,J.Maya,J.Near,J.Optimism,J.Polygon,J.Solana,J.THORChain],connect:({addChain:z,walletType:Z,supportedChains:D})=>async function Q($){let X=u({chains:$,supportedChains:D,walletType:Z}).map(async(Y)=>{let y=await V(Y),B=await C(Y);z({...B,address:y,chain:Y,walletType:Z})});return await Promise.all(X),!0}}),t=A(m);async function C(z){switch(z){case J.Solana:{let{getSolanaToolbox:Z}=await import("@swapkit/toolboxes/solana"),D=window.xfi?.solana;if(!D)throw new I("wallet_ctrl_not_found");return{...Z({signer:D})}}case J.Maya:case J.THORChain:{let{getCosmosToolbox:Z,THORCHAIN_GAS_VALUE:D,MAYA_GAS_VALUE:Q}=await import("@swapkit/toolboxes/cosmos"),$=z===J.Maya?Q:D;return{...await Z(z),deposit:(X)=>O({...X,recipient:""},"deposit"),transfer:(X)=>O({...X,gasLimit:$},"transfer")}}case J.Cosmos:case J.Kujira:{let{getCosmosToolbox:Z}=await import("@swapkit/toolboxes/cosmos"),D=w[z],Q=await L(z);await Q?.enable(D);let $=Q?.getOfflineSignerOnlyAmino(D);if(!$)throw new I("wallet_ctrl_not_found");return Z(z,{signer:$})}case J.Bitcoin:case J.BitcoinCash:case J.Dogecoin:case J.Litecoin:{let{getUtxoToolbox:Z}=await import("@swapkit/toolboxes/utxo");return{...await Z(z),transfer:O}}case J.Arbitrum:case J.Avalanche:case J.Base:case J.BinanceSmartChain:case J.Ethereum:case J.Optimism:case J.Polygon:{let{prepareNetworkSwitch:Z,switchEVMWalletNetwork:D}=await import("@swapkit/helpers"),{getEvmToolbox:Q}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:$}=await import("ethers"),F=await L(z);if(!F)throw new I("wallet_ctrl_not_found");let X=new $(F,"any"),Y=await X.getSigner(),y=await Q(z,{provider:X,signer:Y}),B=S(X,z);try{if(z!==J.Ethereum){let U=y.getNetworkParams();await D(X,z,U)}}catch(U){throw new I({errorKey:"wallet_failed_to_add_or_switch_network",info:{wallet:T.CTRL,chain:z}})}return Z({provider:window.xfi?.ethereum,chain:z,toolbox:{...y,...B}})}case J.Near:{if(!window.xfi?.near)throw new I("wallet_ctrl_not_found",{chain:J.Near});let{createNearSignerFromProvider:Z}=await import("../../chunk-dcj9twam.js"),{getNearToolbox:D}=await import("@swapkit/toolboxes/near"),Q=window.xfi.near,$=await Z(Q,"CTRL"),F=await $.getAddress();return{...await D({signer:$}),transfer:async(B)=>{let{transfer:U}=await import("near-api-js/lib/transaction"),M=B.assetValue.getBaseValue("string"),R=U(BigInt(M)),j={signerId:F,receiverId:B.recipient,actions:[R]};return await Q.request({method:"signAndSendTransaction",params:{transaction:j}})},createTransaction:async(B)=>{let{functionCall:U,transfer:M}=await import("near-api-js/lib/transaction");if(B.functionCall){let{methodName:W,args:K,attachedDeposit:N}=B.functionCall,k=U(W,K,BigInt("30000000000000"),BigInt(N||"0"));return{signerId:F,receiverId:B.recipient,actions:[k]}}let R=B.assetValue.getBaseValue("string"),j=M(BigInt(R));return{signerId:F,receiverId:B.recipient,actions:[j]}}}}default:return null}}export{m as ctrlWallet,t as CTRL_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=62BD16C82F053DB864756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as h}from"../../chunk-zfnkndsr.js";import{C as u,D as O}from"../../chunk-qwd1kp32.js";import{Chain as S,ChainToHexChainId as A,EVMChains as B,SwapKitError as d,WalletOption as l,createWallet as C,filterSupportedChains as P,prepareNetworkSwitch as f,switchEVMWalletNetwork as v}from"@swapkit/helpers";var _=(r)=>{switch(r){case l.COINBASE_WEB:return window.coinbaseWalletExtension;case l.TRUSTWALLET_WEB:return window.trustwallet;default:return window.ethereum}},g=async({address:r,walletProvider:w,chain:e,provider:o})=>{if(!w)throw new d("wallet_evm_extensions_not_found");let{getEvmToolbox:t}=await import("@swapkit/toolboxes/evm"),a=await o.getSigner(),i=await t(e,{provider:o,signer:a});if(e!==S.Ethereum){if((await o.getNetwork()).chainId.toString()!==A[e])try{let n=i.getNetworkParams();await v(o,e,n)}catch(n){throw new d("wallet_evm_extensions_failed_to_switch_network",{chain:e})}}return f({toolbox:{...i,getBalance:()=>i.getBalance(r)},chain:e,provider:o})},x=C({name:"connectEVMWallet",supportedChains:[...B],connect:({addChain:r,supportedChains:w})=>async function e(o,t=l.METAMASK,a){let i=P({chains:o,supportedChains:w,walletType:t}),{BrowserProvider:c}=await import("ethers");return await Promise.all(i.map(async(n)=>{if(t===l.EIP6963){if(!a)throw new d("wallet_evm_extensions_no_provider");let E=new c(a,"any");await E.send("eth_requestAccounts",[]);let W=await(await E.getSigner()).getAddress(),M=await g({address:W,chain:n,provider:E,walletProvider:a});r({...M,address:W,chain:n,walletType:t});return}let s=new c(_(t),"any");await s.send("eth_requestAccounts",[]);let p=await(await s.getSigner()).getAddress(),m=await g({address:p,chain:n,walletProvider:_(t),provider:s});r({...m,address:p,chain:n,disconnect:()=>s.send("wallet_revokePermissions",[{eth_accounts:{}}]),walletType:t})})),!0}}),L=h(x);export{g as getWeb3WalletMethods,x as evmWallet,L as EVM_EXTENSIONS_SUPPORTED_CHAINS};
1
+ import{A as h}from"../../chunk-th8ggrmx.js";import{C as u,D as O}from"../../chunk-qwd1kp32.js";import{Chain as S,ChainToHexChainId as A,EVMChains as B,SwapKitError as d,WalletOption as l,createWallet as C,filterSupportedChains as P,prepareNetworkSwitch as f,switchEVMWalletNetwork as v}from"@swapkit/helpers";var _=(r)=>{switch(r){case l.COINBASE_WEB:return window.coinbaseWalletExtension;case l.TRUSTWALLET_WEB:return window.trustwallet;default:return window.ethereum}},g=async({address:r,walletProvider:w,chain:e,provider:o})=>{if(!w)throw new d("wallet_evm_extensions_not_found");let{getEvmToolbox:t}=await import("@swapkit/toolboxes/evm"),a=await o.getSigner(),i=await t(e,{provider:o,signer:a});if(e!==S.Ethereum){if((await o.getNetwork()).chainId.toString()!==A[e])try{let n=i.getNetworkParams();await v(o,e,n)}catch(n){throw new d("wallet_evm_extensions_failed_to_switch_network",{chain:e})}}return f({toolbox:{...i,getBalance:()=>i.getBalance(r)},chain:e,provider:o})},x=C({name:"connectEVMWallet",supportedChains:[...B],connect:({addChain:r,supportedChains:w})=>async function e(o,t=l.METAMASK,a){let i=P({chains:o,supportedChains:w,walletType:t}),{BrowserProvider:c}=await import("ethers");return await Promise.all(i.map(async(n)=>{if(t===l.EIP6963){if(!a)throw new d("wallet_evm_extensions_no_provider");let E=new c(a,"any");await E.send("eth_requestAccounts",[]);let W=await(await E.getSigner()).getAddress(),M=await g({address:W,chain:n,provider:E,walletProvider:a});r({...M,address:W,chain:n,walletType:t});return}let s=new c(_(t),"any");await s.send("eth_requestAccounts",[]);let p=await(await s.getSigner()).getAddress(),m=await g({address:p,chain:n,walletProvider:_(t),provider:s});r({...m,address:p,chain:n,disconnect:()=>s.send("wallet_revokePermissions",[{eth_accounts:{}}]),walletType:t})})),!0}}),L=h(x);export{g as getWeb3WalletMethods,x as evmWallet,L as EVM_EXTENSIONS_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=BE8AD4EE99FDBC2364756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as m}from"../../chunk-zfnkndsr.js";import{C as U,D as f}from"../../chunk-qwd1kp32.js";import{Chain as F,EVMChains as B,SwapKitError as I,WalletOption as j,createWallet as M,filterSupportedChains as N,prepareNetworkSwitch as O,switchEVMWalletNetwork as y}from"@swapkit/helpers";import{Psbt as W}from"bitcoinjs-lib";import{AddressPurpose as u,BitcoinNetworkType as V,getAddress as K,signTransaction as k}from"sats-connect";export*from"@passkeys/react";export*from"@passkeys/core";async function T({walletProvider:$,provider:Z,chain:z}){switch(z){case F.Bitcoin:{let{getUtxoToolbox:_}=await import("@swapkit/toolboxes/utxo"),G="",J=()=>new Promise((q)=>q(Z)),H={getProvider:J,payload:{purposes:[u.Payment],message:"Address for receiving and sending payments",network:{type:V.Mainnet}},onFinish:(q)=>{if(!q.addresses[0])throw new I("wallet_exodus_no_address");G=q.addresses[0].address},onCancel:()=>{throw new I("wallet_exodus_request_canceled")}};await K(H);async function Q(q){let Y,D={getProvider:J,payload:{message:"Sign transaction",network:{type:V.Mainnet},psbtBase64:q.toBase64(),broadcast:!1,inputsToSign:[{address:G,signingIndexes:q.txInputs.map((R,A)=>A)}]},onFinish:(R)=>{Y=W.fromBase64(R.psbtBase64)},onCancel:()=>{throw new I("wallet_exodus_signature_canceled")}};if(await k(D),!Y)throw new I("wallet_exodus_sign_transaction_error");return Y}return{...await _(z,{signer:{signTransaction:Q,getAddress:()=>Promise.resolve(G)}}),address:G}}case F.Arbitrum:case F.Avalanche:case F.Base:case F.BinanceSmartChain:case F.Ethereum:case F.Optimism:case F.Polygon:{if(!$)throw new I("wallet_exodus_not_found");let{getProvider:_,getEvmToolbox:G}=await import("@swapkit/toolboxes/evm"),J=await _(z),H=Z;await H.send("eth_requestAccounts",[]);let Q=await H.getSigner(),X=await Q.getAddress(),L=await G(z,{provider:J,signer:Q});try{if(z!==F.Ethereum){let q=L.getNetworkParams();await y(H,z,q)}}catch(q){throw new I("wallet_exodus_failed_to_switch_network",{chain:z})}return{...O({toolbox:L,chain:z,provider:H}),address:X}}default:throw new I("wallet_exodus_chain_not_supported",{chain:z})}}var x=M({name:"connectExodusWallet",walletType:j.EXODUS,supportedChains:[...B,F.Bitcoin],connect:({addChain:$,walletType:Z,supportedChains:z})=>async function _(G,J){if(!J)throw new I("wallet_exodus_instance_missing");let H=N({chains:G,supportedChains:z,walletType:Z}),{BrowserProvider:Q}=await import("ethers"),{providers:X}=J;return await Promise.all(H.map(async(L)=>{let q=L===F.Bitcoin?X.bitcoin:new Q(X.ethereum,"any"),{address:Y,...D}=await T({chain:L,provider:q,walletProvider:X.ethereum});$({...D,disconnect:()=>q.send("wallet_revokePermissions",[{eth_accounts:{}}]),chain:L,address:Y,walletType:j.EXODUS})})),!0}}),C=m(x);export{x as exodusWallet,C as EXODUS_SUPPORTED_CHAINS};
1
+ import{A as m}from"../../chunk-th8ggrmx.js";import{C as U,D as f}from"../../chunk-qwd1kp32.js";import{Chain as F,EVMChains as B,SwapKitError as I,WalletOption as j,createWallet as M,filterSupportedChains as N,prepareNetworkSwitch as O,switchEVMWalletNetwork as y}from"@swapkit/helpers";import{Psbt as W}from"bitcoinjs-lib";import{AddressPurpose as u,BitcoinNetworkType as V,getAddress as K,signTransaction as k}from"sats-connect";export*from"@passkeys/react";export*from"@passkeys/core";async function T({walletProvider:$,provider:Z,chain:z}){switch(z){case F.Bitcoin:{let{getUtxoToolbox:_}=await import("@swapkit/toolboxes/utxo"),G="",J=()=>new Promise((q)=>q(Z)),H={getProvider:J,payload:{purposes:[u.Payment],message:"Address for receiving and sending payments",network:{type:V.Mainnet}},onFinish:(q)=>{if(!q.addresses[0])throw new I("wallet_exodus_no_address");G=q.addresses[0].address},onCancel:()=>{throw new I("wallet_exodus_request_canceled")}};await K(H);async function Q(q){let Y,D={getProvider:J,payload:{message:"Sign transaction",network:{type:V.Mainnet},psbtBase64:q.toBase64(),broadcast:!1,inputsToSign:[{address:G,signingIndexes:q.txInputs.map((R,A)=>A)}]},onFinish:(R)=>{Y=W.fromBase64(R.psbtBase64)},onCancel:()=>{throw new I("wallet_exodus_signature_canceled")}};if(await k(D),!Y)throw new I("wallet_exodus_sign_transaction_error");return Y}return{...await _(z,{signer:{signTransaction:Q,getAddress:()=>Promise.resolve(G)}}),address:G}}case F.Arbitrum:case F.Avalanche:case F.Base:case F.BinanceSmartChain:case F.Ethereum:case F.Optimism:case F.Polygon:{if(!$)throw new I("wallet_exodus_not_found");let{getProvider:_,getEvmToolbox:G}=await import("@swapkit/toolboxes/evm"),J=await _(z),H=Z;await H.send("eth_requestAccounts",[]);let Q=await H.getSigner(),X=await Q.getAddress(),L=await G(z,{provider:J,signer:Q});try{if(z!==F.Ethereum){let q=L.getNetworkParams();await y(H,z,q)}}catch(q){throw new I("wallet_exodus_failed_to_switch_network",{chain:z})}return{...O({toolbox:L,chain:z,provider:H}),address:X}}default:throw new I("wallet_exodus_chain_not_supported",{chain:z})}}var x=M({name:"connectExodusWallet",walletType:j.EXODUS,supportedChains:[...B,F.Bitcoin],connect:({addChain:$,walletType:Z,supportedChains:z})=>async function _(G,J){if(!J)throw new I("wallet_exodus_instance_missing");let H=N({chains:G,supportedChains:z,walletType:Z}),{BrowserProvider:Q}=await import("ethers"),{providers:X}=J;return await Promise.all(H.map(async(L)=>{let q=L===F.Bitcoin?X.bitcoin:new Q(X.ethereum,"any"),{address:Y,...D}=await T({chain:L,provider:q,walletProvider:X.ethereum});$({...D,disconnect:()=>q.send("wallet_revokePermissions",[{eth_accounts:{}}]),chain:L,address:Y,walletType:j.EXODUS})})),!0}}),C=m(x);export{x as exodusWallet,C as EXODUS_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=CC0047348829D7C664756E2164756E21
package/dist/src/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import{A as l,B as n}from"../chunk-zfnkndsr.js";import"../chunk-qwd1kp32.js";export{n as loadWallet,l as getWalletSupportedChains};
1
+ import{A as l,B as n}from"../chunk-th8ggrmx.js";import"../chunk-qwd1kp32.js";export{n as loadWallet,l as getWalletSupportedChains};
2
2
 
3
3
  //# debugId=A65C19099338DCD964756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as i}from"../../chunk-zfnkndsr.js";import{C as b,D as A}from"../../chunk-qwd1kp32.js";import{Chain as X,NetworkDerivationPath as Iz,SKConfig as C,SwapKitError as Vz,WalletOption as n,createWallet as Hz,filterSupportedChains as Fz}from"@swapkit/helpers";import{KeepKeySdk as Nz}from"@keepkey/keepkey-sdk";import{Chain as l,ChainId as p,DerivationPath as zz,SKConfig as Jz,derivationPathToString as Qz}from"@swapkit/helpers";import{SwapKitError as T}from"@swapkit/helpers";var g=2147483648,x;((Y)=>{Y.BTC="Bitcoin";Y.BCH="BitcoinCash";Y.DOGE="Dogecoin";Y.LTC="Litecoin";Y.DASH="Dash"})(x||={});function e(z){if(z==="m/")return!0;return/^m(((\/[0-9]+h)+|(\/[0-9]+H)+|(\/[0-9]+')*)((\/[0-9]+)*))$/.test(z)}function N(z){let J=z;if(!e(J))throw new T("wallet_keepkey_invalid_params",{reason:`Not a bip32 path: '${J}'`});if(/^m\//i.test(J))J=J.slice(2);let Q=J.split("/");if(Q.length===1&&Q[0]==="")return[];let R=new Array(Q.length);for(let Z=0;Z<Q.length;Z++){let Y=Q[Z];if(Y){let W=/(\d+)([hH']?)/.exec(Y);if(W===null)throw new T("wallet_keepkey_invalid_params",{reason:"Invalid input"});let[,$="",q=""]=W;if(R[Z]=Number.parseInt($,10),R[Z]>=g)throw new T("wallet_keepkey_invalid_params",{reason:"Invalid child index"});if(q==="h"||q==="H"||q==="'")R[Z]+=g;else if(q.length>0)throw new T("wallet_keepkey_invalid_params",{reason:"Invalid modifier"})}}return R}var m=async({sdk:z,derivationPath:J})=>{let{DEFAULT_COSMOS_FEE_MAINNET:Q,getCosmosToolbox:R,getFeeRateFromThorswap:Z,createStargateClient:Y}=await import("@swapkit/toolboxes/cosmos"),W=J?Qz(J):`${zz.GAIA}/0`,{address:$}=await z.address.cosmosGetAddress({address_n:N(W)}),q=await R(l.Cosmos);if(Q.amount[0])Q.amount[0].amount=String(await Z(p.Cosmos,500));return{...q,transfer:async({assetValue:M,recipient:j,memo:L})=>{let G=M.getBaseValue("string"),B=await q.getAccount($),_=await z.cosmos.cosmosSignAmino({signerAddress:$,signDoc:{fee:Q,memo:L||"",sequence:B?.sequence.toString()??"",chain_id:p.Cosmos,account_number:B?.accountNumber.toString()??"",msgs:[{value:{amount:[{denom:"uatom",amount:G}],to_address:j,from_address:$},type:"cosmos-sdk/MsgSend"}]}}),I=atob(_.serialized),O=new Uint8Array(I.length).map((D,F)=>I.charCodeAt(F));return(await(await Y(Jz.get("rpcUrls")[l.Cosmos])).broadcastTx(O)).transactionHash},address:$}};import{ChainToChainId as Xz,NetworkDerivationPath as Yz,SwapKitError as w,derivationPathToString as Zz}from"@swapkit/helpers";import{AbstractSigner as $z}from"ethers";class v extends $z{sdk;chain;derivationPath;address;provider;constructor({sdk:z,chain:J,derivationPath:Q,provider:R}){super();this.sdk=z,this.chain=J,this.derivationPath=Q||Yz.ETH,this.address="",this.provider=R}signTypedData(){throw new w("wallet_keepkey_method_not_supported",{method:"signTypedData"})}getAddress=async()=>{if(this.address)return this.address;let{address:z}=await this.sdk.address.ethereumGetAddress({address_n:N(Zz(this.derivationPath))});return this.address=z,z};signMessage=(z)=>this.sdk.eth.ethSign({address:this.address,message:z});signTransaction=async({to:z,value:J,gasLimit:Q,nonce:R,data:Z,maxFeePerGas:Y,maxPriorityFeePerGas:W,gasPrice:$})=>{if(!z)throw new w("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!Q)throw new w("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!Z)throw new w("wallet_keepkey_invalid_params",{reason:"Missing data"});let q=!!((Y||W)&&!$);if(q&&!Y)throw new w("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(q&&!W)throw new w("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(q||$))throw new w("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:U}=await import("@swapkit/toolboxes/evm"),M=R?BigInt(R):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),j={gas:U(BigInt(Q)),addressNList:[2147483692,2147483708,2147483648,0,0],from:this.address,chainId:U(BigInt(Xz[this.chain])),to:z.toString(),value:U(BigInt(J||0)),nonce:U(M),data:Z,...q&&{maxFeePerGas:U(BigInt(Y?.toString()||"0")),maxPriorityFeePerGas:U(BigInt(W?.toString()||"0"))},...!q&&{gasPrice:U(BigInt($?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(j)).serialized};sendTransaction=async(z)=>{if(!this.provider)throw new w("wallet_keepkey_no_provider");let J=await this.signTransaction(z);return await this.provider.broadcastTransaction(J)};connect=(z)=>new v({sdk:this.sdk,chain:this.chain,derivationPath:this.derivationPath,provider:z})}import{Chain as u,ChainId as qz,DerivationPath as jz,SKConfig as c,SwapKitError as Uz,derivationPathToString as Bz}from"@swapkit/helpers";var h=async({sdk:z,derivationPath:J})=>{let{createStargateClient:Q,getCosmosToolbox:R}=await import("@swapkit/toolboxes/cosmos"),Z=await R(u.Maya),Y=J?Bz(J):`${jz.MAYA}/0`,{address:W}=await z.address.mayachainGetAddress({address_n:N(Y)}),$=async({assetValue:M,recipient:j,sender:L,memo:G})=>{let{makeSignDoc:B}=(await import("@cosmjs/amino")).default,{getDenomWithChain:_}=await import("@swapkit/toolboxes/cosmos"),I=await Z.getAccount(L);if(!I)throw new Uz("wallet_keepkey_account_not_found");let{accountNumber:O,sequence:V=0}=I,H=M.getBaseValue("string"),D=j&&j!=="",F=D?{type:"mayachain/MsgSend",value:{amount:[{amount:H,denom:M.symbol.toLowerCase()}],from_address:L,to_address:j}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:H,asset:_(M)}],memo:G,signer:L}},E=B([F],{gas:"500000000",amount:[]},qz.Maya,G,O?.toString(),V),y=await(D?z.mayachain.mayachainSignAminoTransfer:z.mayachain.mayachainSignAminoDeposit)({signDoc:E,signerAddress:L}),K=atob(y.serialized);return new Uint8Array(K.length).map((a,k)=>K.charCodeAt(k))};return{...Z,transfer:async({assetValue:M,recipient:j,memo:L})=>{let G=await Q(c.get("rpcUrls")[u.Maya]),B=await $({assetValue:M,recipient:j,memo:L,sender:W}),{transactionHash:_}=await G.broadcastTx(B);return _},deposit:async({assetValue:M,memo:j})=>{let L=await Q(c.get("rpcUrls")[u.Maya]),G=await $({assetValue:M,memo:j,sender:W}),{transactionHash:B}=await L.broadcastTx(G);return B},address:W}};import{Chain as S,ChainId as Rz,DerivationPath as Wz,SKConfig as d,SwapKitError as Gz,derivationPathToString as Lz}from"@swapkit/helpers";var o=async({sdk:z,derivationPath:J})=>{let{makeSignDoc:Q}=(await import("@cosmjs/amino")).default,{buildAminoMsg:R,getDefaultChainFee:Z,createStargateClient:Y,getCosmosToolbox:W}=await import("@swapkit/toolboxes/cosmos"),$=await W(S.THORChain),q=J?Lz(J):`${Wz.THOR}/0`,{address:U}=await z.address.thorchainGetAddress({address_n:N(q)}),M=async({assetValue:G,recipient:B,sender:_,memo:I})=>{let O=await $.getAccount(_);if(!O)throw new Gz("wallet_keepkey_account_not_found");let{accountNumber:V,sequence:H=0}=O,D=B&&B!=="",F=R({sender:_,recipient:B,assetValue:G,memo:I}),E=Rz.THORChain,f=Q([F],Z(S.THORChain),E,I,V?.toString(),H),y=D?await z.thorchain.thorchainSignAminoTransfer({signDoc:f,signerAddress:_}):await z.thorchain.thorchainSignAminoDeposit({signDoc:f,signerAddress:_}),K=atob(y.serialized);return new Uint8Array(K.length).map((a,k)=>K.charCodeAt(k))};return{...$,transfer:async({assetValue:G,recipient:B,memo:_})=>{let I=await Y(d.get("rpcUrls")[S.THORChain]),O=await M({assetValue:G,recipient:B,memo:_,sender:U}),{transactionHash:V}=await I.broadcastTx(O);return V},deposit:async({assetValue:G,memo:B})=>{let _=await Y(d.get("rpcUrls")[S.THORChain]),I=await M({assetValue:G,memo:B,sender:U}),{transactionHash:O}=await _.broadcastTx(I);return O},address:U}};import{Chain as P,DerivationPath as _z,FeeOption as Mz,SwapKitError as r,derivationPathToString as Oz}from"@swapkit/helpers";var s=async({sdk:z,chain:J,derivationPath:Q})=>{let{getUtxoToolbox:R}=await import("@swapkit/toolboxes/utxo"),Z=await R(J),Y=[P.Bitcoin,P.Litecoin].includes(J)?"p2wpkh":"p2pkh",W=Q?Oz(Q):`${_z[J]}/0`,$={coin:x[J],script_type:Y,address_n:N(W)},q=(await z.address.utxoGetAddress($)).address,U=async(j,L,G="")=>{let B=j.txOutputs.map((O)=>{let{value:V,address:H,change:D}=O,F=J===P.BitcoinCash?Z.stripToCashAddress(H):H;if(D||H===q)return{addressNList:$.address_n,isChange:!0,addressType:"change",amount:V,scriptType:Y};if(F)return{address:F,amount:V,addressType:"spend"};return null}).filter(Boolean),_=(O)=>{return O.filter((V)=>V!==null&&typeof V==="object"&&Object.keys(V).length>0)};return(await z.utxo.utxoSignTransaction({coin:x[J],inputs:L,outputs:_(B),opReturnData:G})).serializedTx?.toString()};return{...Z,signTransaction:U,transfer:async({recipient:j,feeOptionKey:L,feeRate:G,memo:B,..._})=>{if(!q)throw new r("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!j)throw new r("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let I=J===P.BitcoinCash?Z.buildTx:Z.createTransaction,{psbt:O,inputs:V}=await I({..._,memo:B,recipient:j,feeRate:G||(await Z.getFeeRates())[L||Mz.Fast],sender:q,fetchTxHex:!0}),H=V.map(({value:F,index:E,hash:f,txHex:y})=>({addressNList:$.address_n,amount:F.toString(),hex:y||"",scriptType:Y,txid:f,vout:E})),D=await U(O,H,B);return Z.broadcastTx(D)},address:q}};var Dz=Hz({name:"connectKeepkey",supportedChains:[X.Arbitrum,X.Avalanche,X.Base,X.BinanceSmartChain,X.Bitcoin,X.BitcoinCash,X.Cosmos,X.Dogecoin,X.Dash,X.Ethereum,X.Litecoin,X.Optimism,X.Polygon,X.THORChain,X.Maya],walletType:n.KEEPKEY,connect:({addChain:z,supportedChains:J,walletType:Q})=>async function R(Z,Y){let W=Fz({chains:Z,supportedChains:J,walletType:Q}),$=C.get("integrations").keepKey;if(!$)throw new Error("KeepKey config not found");let q=C.get("apiKeys").keepKey||"1234";await t();let U={apiKey:q,pairingInfo:$},M=await Nz.create(U);if(U.apiKey&&U.apiKey!==q)C.setApiKey("keepKey",U.apiKey);return await Promise.all(W.map(async(j)=>{let L=await bz({chain:j,derivationPath:Y?.[j]||Iz[j],sdk:M}),G=await L.getAddress()||"";z({...L,address:G,chain:j,walletType:n.KEEPKEY})})),!0}}),az=i(Dz);async function bz({sdk:z,chain:J,derivationPath:Q}){let{getProvider:R,getEvmToolbox:Z}=await import("@swapkit/toolboxes/evm");switch(J){case X.BinanceSmartChain:case X.Arbitrum:case X.Optimism:case X.Polygon:case X.Avalanche:case X.Base:case X.Ethereum:{let Y=await R(J),W=new v({sdk:z,chain:J,derivationPath:Q,provider:Y});return await Z(J,{provider:Y,signer:W})}case X.Cosmos:return m({sdk:z,derivationPath:Q});case X.THORChain:return o({sdk:z,derivationPath:Q});case X.Maya:return h({sdk:z,derivationPath:Q});case X.Bitcoin:case X.BitcoinCash:case X.Dash:case X.Dogecoin:case X.Litecoin:return s({sdk:z,chain:J,derivationPath:Q});default:throw new Vz("wallet_keepkey_chain_not_supported",{chain:J})}}async function t(z=0){if(z>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Az())window.location.assign("keepkey://launch"),await new Promise((Q)=>setTimeout(Q,30000)),t(z+1)}async function Az(z="http://localhost:1646/spec/swagger.json"){try{return(await fetch(z)).status===200}catch(J){return!1}}export{Dz as keepkeyWallet,az as KEEPKEY_SUPPORTED_CHAINS};
1
+ import{A as i}from"../../chunk-th8ggrmx.js";import{C as b,D as A}from"../../chunk-qwd1kp32.js";import{Chain as X,NetworkDerivationPath as Iz,SKConfig as C,SwapKitError as Vz,WalletOption as n,createWallet as Hz,filterSupportedChains as Fz}from"@swapkit/helpers";import{KeepKeySdk as Nz}from"@keepkey/keepkey-sdk";import{Chain as l,ChainId as p,DerivationPath as zz,SKConfig as Jz,derivationPathToString as Qz}from"@swapkit/helpers";import{SwapKitError as T}from"@swapkit/helpers";var g=2147483648,x;((Y)=>{Y.BTC="Bitcoin";Y.BCH="BitcoinCash";Y.DOGE="Dogecoin";Y.LTC="Litecoin";Y.DASH="Dash"})(x||={});function e(z){if(z==="m/")return!0;return/^m(((\/[0-9]+h)+|(\/[0-9]+H)+|(\/[0-9]+')*)((\/[0-9]+)*))$/.test(z)}function N(z){let J=z;if(!e(J))throw new T("wallet_keepkey_invalid_params",{reason:`Not a bip32 path: '${J}'`});if(/^m\//i.test(J))J=J.slice(2);let Q=J.split("/");if(Q.length===1&&Q[0]==="")return[];let R=new Array(Q.length);for(let Z=0;Z<Q.length;Z++){let Y=Q[Z];if(Y){let W=/(\d+)([hH']?)/.exec(Y);if(W===null)throw new T("wallet_keepkey_invalid_params",{reason:"Invalid input"});let[,$="",q=""]=W;if(R[Z]=Number.parseInt($,10),R[Z]>=g)throw new T("wallet_keepkey_invalid_params",{reason:"Invalid child index"});if(q==="h"||q==="H"||q==="'")R[Z]+=g;else if(q.length>0)throw new T("wallet_keepkey_invalid_params",{reason:"Invalid modifier"})}}return R}var m=async({sdk:z,derivationPath:J})=>{let{DEFAULT_COSMOS_FEE_MAINNET:Q,getCosmosToolbox:R,getFeeRateFromThorswap:Z,createStargateClient:Y}=await import("@swapkit/toolboxes/cosmos"),W=J?Qz(J):`${zz.GAIA}/0`,{address:$}=await z.address.cosmosGetAddress({address_n:N(W)}),q=await R(l.Cosmos);if(Q.amount[0])Q.amount[0].amount=String(await Z(p.Cosmos,500));return{...q,transfer:async({assetValue:M,recipient:j,memo:L})=>{let G=M.getBaseValue("string"),B=await q.getAccount($),_=await z.cosmos.cosmosSignAmino({signerAddress:$,signDoc:{fee:Q,memo:L||"",sequence:B?.sequence.toString()??"",chain_id:p.Cosmos,account_number:B?.accountNumber.toString()??"",msgs:[{value:{amount:[{denom:"uatom",amount:G}],to_address:j,from_address:$},type:"cosmos-sdk/MsgSend"}]}}),I=atob(_.serialized),O=new Uint8Array(I.length).map((D,F)=>I.charCodeAt(F));return(await(await Y(Jz.get("rpcUrls")[l.Cosmos])).broadcastTx(O)).transactionHash},address:$}};import{ChainToChainId as Xz,NetworkDerivationPath as Yz,SwapKitError as w,derivationPathToString as Zz}from"@swapkit/helpers";import{AbstractSigner as $z}from"ethers";class v extends $z{sdk;chain;derivationPath;address;provider;constructor({sdk:z,chain:J,derivationPath:Q,provider:R}){super();this.sdk=z,this.chain=J,this.derivationPath=Q||Yz.ETH,this.address="",this.provider=R}signTypedData(){throw new w("wallet_keepkey_method_not_supported",{method:"signTypedData"})}getAddress=async()=>{if(this.address)return this.address;let{address:z}=await this.sdk.address.ethereumGetAddress({address_n:N(Zz(this.derivationPath))});return this.address=z,z};signMessage=(z)=>this.sdk.eth.ethSign({address:this.address,message:z});signTransaction=async({to:z,value:J,gasLimit:Q,nonce:R,data:Z,maxFeePerGas:Y,maxPriorityFeePerGas:W,gasPrice:$})=>{if(!z)throw new w("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!Q)throw new w("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!Z)throw new w("wallet_keepkey_invalid_params",{reason:"Missing data"});let q=!!((Y||W)&&!$);if(q&&!Y)throw new w("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(q&&!W)throw new w("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(q||$))throw new w("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:U}=await import("@swapkit/toolboxes/evm"),M=R?BigInt(R):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),j={gas:U(BigInt(Q)),addressNList:[2147483692,2147483708,2147483648,0,0],from:this.address,chainId:U(BigInt(Xz[this.chain])),to:z.toString(),value:U(BigInt(J||0)),nonce:U(M),data:Z,...q&&{maxFeePerGas:U(BigInt(Y?.toString()||"0")),maxPriorityFeePerGas:U(BigInt(W?.toString()||"0"))},...!q&&{gasPrice:U(BigInt($?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(j)).serialized};sendTransaction=async(z)=>{if(!this.provider)throw new w("wallet_keepkey_no_provider");let J=await this.signTransaction(z);return await this.provider.broadcastTransaction(J)};connect=(z)=>new v({sdk:this.sdk,chain:this.chain,derivationPath:this.derivationPath,provider:z})}import{Chain as u,ChainId as qz,DerivationPath as jz,SKConfig as c,SwapKitError as Uz,derivationPathToString as Bz}from"@swapkit/helpers";var h=async({sdk:z,derivationPath:J})=>{let{createStargateClient:Q,getCosmosToolbox:R}=await import("@swapkit/toolboxes/cosmos"),Z=await R(u.Maya),Y=J?Bz(J):`${jz.MAYA}/0`,{address:W}=await z.address.mayachainGetAddress({address_n:N(Y)}),$=async({assetValue:M,recipient:j,sender:L,memo:G})=>{let{makeSignDoc:B}=(await import("@cosmjs/amino")).default,{getDenomWithChain:_}=await import("@swapkit/toolboxes/cosmos"),I=await Z.getAccount(L);if(!I)throw new Uz("wallet_keepkey_account_not_found");let{accountNumber:O,sequence:V=0}=I,H=M.getBaseValue("string"),D=j&&j!=="",F=D?{type:"mayachain/MsgSend",value:{amount:[{amount:H,denom:M.symbol.toLowerCase()}],from_address:L,to_address:j}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:H,asset:_(M)}],memo:G,signer:L}},E=B([F],{gas:"500000000",amount:[]},qz.Maya,G,O?.toString(),V),y=await(D?z.mayachain.mayachainSignAminoTransfer:z.mayachain.mayachainSignAminoDeposit)({signDoc:E,signerAddress:L}),K=atob(y.serialized);return new Uint8Array(K.length).map((a,k)=>K.charCodeAt(k))};return{...Z,transfer:async({assetValue:M,recipient:j,memo:L})=>{let G=await Q(c.get("rpcUrls")[u.Maya]),B=await $({assetValue:M,recipient:j,memo:L,sender:W}),{transactionHash:_}=await G.broadcastTx(B);return _},deposit:async({assetValue:M,memo:j})=>{let L=await Q(c.get("rpcUrls")[u.Maya]),G=await $({assetValue:M,memo:j,sender:W}),{transactionHash:B}=await L.broadcastTx(G);return B},address:W}};import{Chain as S,ChainId as Rz,DerivationPath as Wz,SKConfig as d,SwapKitError as Gz,derivationPathToString as Lz}from"@swapkit/helpers";var o=async({sdk:z,derivationPath:J})=>{let{makeSignDoc:Q}=(await import("@cosmjs/amino")).default,{buildAminoMsg:R,getDefaultChainFee:Z,createStargateClient:Y,getCosmosToolbox:W}=await import("@swapkit/toolboxes/cosmos"),$=await W(S.THORChain),q=J?Lz(J):`${Wz.THOR}/0`,{address:U}=await z.address.thorchainGetAddress({address_n:N(q)}),M=async({assetValue:G,recipient:B,sender:_,memo:I})=>{let O=await $.getAccount(_);if(!O)throw new Gz("wallet_keepkey_account_not_found");let{accountNumber:V,sequence:H=0}=O,D=B&&B!=="",F=R({sender:_,recipient:B,assetValue:G,memo:I}),E=Rz.THORChain,f=Q([F],Z(S.THORChain),E,I,V?.toString(),H),y=D?await z.thorchain.thorchainSignAminoTransfer({signDoc:f,signerAddress:_}):await z.thorchain.thorchainSignAminoDeposit({signDoc:f,signerAddress:_}),K=atob(y.serialized);return new Uint8Array(K.length).map((a,k)=>K.charCodeAt(k))};return{...$,transfer:async({assetValue:G,recipient:B,memo:_})=>{let I=await Y(d.get("rpcUrls")[S.THORChain]),O=await M({assetValue:G,recipient:B,memo:_,sender:U}),{transactionHash:V}=await I.broadcastTx(O);return V},deposit:async({assetValue:G,memo:B})=>{let _=await Y(d.get("rpcUrls")[S.THORChain]),I=await M({assetValue:G,memo:B,sender:U}),{transactionHash:O}=await _.broadcastTx(I);return O},address:U}};import{Chain as P,DerivationPath as _z,FeeOption as Mz,SwapKitError as r,derivationPathToString as Oz}from"@swapkit/helpers";var s=async({sdk:z,chain:J,derivationPath:Q})=>{let{getUtxoToolbox:R}=await import("@swapkit/toolboxes/utxo"),Z=await R(J),Y=[P.Bitcoin,P.Litecoin].includes(J)?"p2wpkh":"p2pkh",W=Q?Oz(Q):`${_z[J]}/0`,$={coin:x[J],script_type:Y,address_n:N(W)},q=(await z.address.utxoGetAddress($)).address,U=async(j,L,G="")=>{let B=j.txOutputs.map((O)=>{let{value:V,address:H,change:D}=O,F=J===P.BitcoinCash?Z.stripToCashAddress(H):H;if(D||H===q)return{addressNList:$.address_n,isChange:!0,addressType:"change",amount:V,scriptType:Y};if(F)return{address:F,amount:V,addressType:"spend"};return null}).filter(Boolean),_=(O)=>{return O.filter((V)=>V!==null&&typeof V==="object"&&Object.keys(V).length>0)};return(await z.utxo.utxoSignTransaction({coin:x[J],inputs:L,outputs:_(B),opReturnData:G})).serializedTx?.toString()};return{...Z,signTransaction:U,transfer:async({recipient:j,feeOptionKey:L,feeRate:G,memo:B,..._})=>{if(!q)throw new r("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!j)throw new r("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let I=J===P.BitcoinCash?Z.buildTx:Z.createTransaction,{psbt:O,inputs:V}=await I({..._,memo:B,recipient:j,feeRate:G||(await Z.getFeeRates())[L||Mz.Fast],sender:q,fetchTxHex:!0}),H=V.map(({value:F,index:E,hash:f,txHex:y})=>({addressNList:$.address_n,amount:F.toString(),hex:y||"",scriptType:Y,txid:f,vout:E})),D=await U(O,H,B);return Z.broadcastTx(D)},address:q}};var Dz=Hz({name:"connectKeepkey",supportedChains:[X.Arbitrum,X.Avalanche,X.Base,X.BinanceSmartChain,X.Bitcoin,X.BitcoinCash,X.Cosmos,X.Dogecoin,X.Dash,X.Ethereum,X.Litecoin,X.Optimism,X.Polygon,X.THORChain,X.Maya],walletType:n.KEEPKEY,connect:({addChain:z,supportedChains:J,walletType:Q})=>async function R(Z,Y){let W=Fz({chains:Z,supportedChains:J,walletType:Q}),$=C.get("integrations").keepKey;if(!$)throw new Error("KeepKey config not found");let q=C.get("apiKeys").keepKey||"1234";await t();let U={apiKey:q,pairingInfo:$},M=await Nz.create(U);if(U.apiKey&&U.apiKey!==q)C.setApiKey("keepKey",U.apiKey);return await Promise.all(W.map(async(j)=>{let L=await bz({chain:j,derivationPath:Y?.[j]||Iz[j],sdk:M}),G=await L.getAddress()||"";z({...L,address:G,chain:j,walletType:n.KEEPKEY})})),!0}}),az=i(Dz);async function bz({sdk:z,chain:J,derivationPath:Q}){let{getProvider:R,getEvmToolbox:Z}=await import("@swapkit/toolboxes/evm");switch(J){case X.BinanceSmartChain:case X.Arbitrum:case X.Optimism:case X.Polygon:case X.Avalanche:case X.Base:case X.Ethereum:{let Y=await R(J),W=new v({sdk:z,chain:J,derivationPath:Q,provider:Y});return await Z(J,{provider:Y,signer:W})}case X.Cosmos:return m({sdk:z,derivationPath:Q});case X.THORChain:return o({sdk:z,derivationPath:Q});case X.Maya:return h({sdk:z,derivationPath:Q});case X.Bitcoin:case X.BitcoinCash:case X.Dash:case X.Dogecoin:case X.Litecoin:return s({sdk:z,chain:J,derivationPath:Q});default:throw new Vz("wallet_keepkey_chain_not_supported",{chain:J})}}async function t(z=0){if(z>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Az())window.location.assign("keepkey://launch"),await new Promise((Q)=>setTimeout(Q,30000)),t(z+1)}async function Az(z="http://localhost:1646/spec/swagger.json"){try{return(await fetch(z)).status===200}catch(J){return!1}}export{Dz as keepkeyWallet,az as KEEPKEY_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=C358D755D9B9BFA964756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as B}from"../../chunk-zfnkndsr.js";import{C as d,D as u}from"../../chunk-qwd1kp32.js";import{AssetValue as L,Chain as t,ChainIdToChain as V,SwapKitError as _,WalletOption as b,createWallet as j,filterSupportedChains as H}from"@swapkit/helpers";import{Chain as a,EVMChains as D,SwapKitError as p,WalletOption as A}from"@swapkit/helpers";import{erc20ABI as I}from"@swapkit/helpers/contracts";var O=(e)=>{switch(e){case a.Bitcoin:return"bitcoin";case a.BitcoinCash:return"bitcoincash";case a.Dash:return"dash";case a.Dogecoin:return"dogecoin";case a.Litecoin:return"litecoin";default:throw new p("wallet_keepkey_chain_not_supported",{chain:e})}};function w(e){if(!window.keepkey)throw new p("wallet_keepkey_not_found");switch(e){case a.Ethereum:case a.Base:case a.Avalanche:case a.BinanceSmartChain:case a.Arbitrum:case a.Optimism:case a.Polygon:return window.keepkey.ethereum;case a.Cosmos:return window.keepkey.cosmos;case a.Bitcoin:return window.keepkey.bitcoin;case a.BitcoinCash:return window.keepkey.bitcoincash;case a.Dogecoin:return window.keepkey.dogecoin;case a.Litecoin:return window.keepkey.litecoin;case a.Dash:return window.keepkey.dash;case a.THORChain:return window.keepkey.thorchain;case a.Maya:return window.keepkey.mayachain;default:return}}async function F({method:e,params:c,chain:r}){let s=w(r);return new Promise((o,i)=>{if(s&&"request"in s)s.request({method:e,params:c},(n,m)=>{n?i(n):o(m)});else i(new p("wallet_provider_not_found"))})}async function k(e){let c=w(e);if(!c)throw new p({errorKey:"wallet_provider_not_found",info:{wallet:A.KEEPKEY,chain:e}});let r="request_accounts";if(D.includes(e))r="eth_requestAccounts";let[s]=await c.request({method:r,params:[]});return s}async function f({assetValue:e,recipient:c,memo:r,gasLimit:s},o="transfer"){if(!e)throw new p("wallet_keepkey_asset_not_defined");let i=await k(e.chain),n=[{amount:{amount:e.getValue("string"),decimals:e.decimal},asset:{chain:e.chain,symbol:e.symbol.toUpperCase(),ticker:e.symbol.toUpperCase()},memo:r,from:i,recipient:c,gasLimit:s}];return F({method:o,params:n,chain:e.chain})}function l(e,c){return{call:async({contractAddress:r,abi:s,funcName:o,funcParams:i=[],txOverrides:n})=>{if(!r)throw new p("wallet_keepkey_contract_address_not_provided");let{createContract:m,getCreateContractTxObject:g,isStateChangingCall:y,toHexString:P}=await import("@swapkit/toolboxes/evm");if(y({abi:s,funcName:o})){let X=g({provider:e,chain:c}),{value:U,from:q,to:M,data:x}=await X({contractAddress:r,abi:s,funcName:o,funcParams:i,txOverrides:n});return e.send("eth_sendTransaction",[{value:P(BigInt(U||0)),from:q,to:M,data:x||"0x"}])}let v=await m(r,s,e)[o]?.(...i);return typeof v?.hash==="string"?v?.hash:v},approve:async({assetAddress:r,spenderAddress:s,amount:o,from:i})=>{let{MAX_APPROVAL:n,getCreateContractTxObject:m,toHexString:g}=await import("@swapkit/toolboxes/evm"),y=m({provider:e,chain:c}),{value:P,to:T,data:E}=await y({contractAddress:r,abi:I,funcName:"approve",funcParams:[s,BigInt(o||n)],txOverrides:{from:i}});return e.send("eth_sendTransaction",[{value:g(BigInt(P||0)),from:i,to:T,data:E||"0x"}])},sendTransaction:async(r)=>{let{from:s,to:o,data:i,value:n}=r;if(!o)throw new p("wallet_keepkey_send_transaction_no_address");let{toHexString:m}=await import("@swapkit/toolboxes/evm");return e.send("eth_sendTransaction",[{value:m(BigInt(n||0)),from:s,to:o,data:i||"0x"}])}}}var K=j({name:"connectKeepkeyBex",supportedChains:[t.Arbitrum,t.Avalanche,t.BinanceSmartChain,t.Bitcoin,t.BitcoinCash,t.Base,t.Cosmos,t.Dash,t.Dogecoin,t.Ethereum,t.Kujira,t.Litecoin,t.Maya,t.Optimism,t.Polygon,t.Solana,t.THORChain],walletType:b.KEEPKEY_BEX,connect:({addChain:e,supportedChains:c,walletType:r})=>async function s(o){let i=H({chains:o,supportedChains:c,walletType:r});return await Promise.all(i.map(async(n)=>{let m=await k(n),g=await R(n);e({...g,address:m,chain:n,walletType:r})})),!0}}),S=B(K);async function R(e){switch(e){case t.Maya:case t.THORChain:{let{getCosmosToolbox:c,THORCHAIN_GAS_VALUE:r,MAYA_GAS_VALUE:s}=await import("@swapkit/toolboxes/cosmos"),o=e===t.Maya?s:r;return{...c(e),deposit:(n)=>f({...n,recipient:""},"deposit"),transfer:(n)=>f({...n,gasLimit:o},"transfer")}}case t.Cosmos:case t.Kujira:{let{getCosmosToolbox:c}=await import("@swapkit/toolboxes/cosmos"),r=window.keepkey?.cosmos?.getOfflineSignerOnlyAmino(V[e]);if(!r)throw new _("wallet_keepkey_signer_not_found");let s=c(e,{signer:r}),o=await r.getAccounts();if(!o?.[0]?.address)throw new _("wallet_keepkey_no_accounts");let[{address:i}]=o;return{...s,address:i}}case t.Dash:case t.Bitcoin:case t.BitcoinCash:case t.Dogecoin:case t.Litecoin:{let{getUtxoToolbox:c}=await import("@swapkit/toolboxes/utxo");return{...await c(e),getBalance:async()=>{let o=O(e),i=await window?.keepkey?.[o]?.request({method:"request_balance"});return[L.from({chain:e,value:i[0].balance})]},transfer:f}}case t.Ethereum:case t.BinanceSmartChain:case t.Base:case t.Arbitrum:case t.Optimism:case t.Polygon:case t.Avalanche:{let{prepareNetworkSwitch:c,switchEVMWalletNetwork:r}=await import("@swapkit/helpers"),{getEvmToolbox:s}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:o}=await import("ethers"),i=w(e);if(!i)throw new _("wallet_keepkey_not_found");let n=new o(i,"any"),m=await n.getSigner(),g=await s(e,{provider:n,signer:m}),y=l(n,e);try{if(e!==t.Ethereum){let P=g.getNetworkParams();await r(n,e,P)}}catch(P){throw new _({errorKey:"wallet_failed_to_add_or_switch_network",info:{wallet:b.KEEPKEY,chain:e}})}return c({provider:n,chain:e,toolbox:{...g,...y}})}default:return null}}export{K as keepkeyBexWallet,S as KEEPKEY_BEX_SUPPORTED_CHAINS};
1
+ import{A as B}from"../../chunk-th8ggrmx.js";import{C as d,D as u}from"../../chunk-qwd1kp32.js";import{AssetValue as L,Chain as t,ChainIdToChain as V,SwapKitError as _,WalletOption as b,createWallet as j,filterSupportedChains as H}from"@swapkit/helpers";import{Chain as a,EVMChains as D,SwapKitError as p,WalletOption as A}from"@swapkit/helpers";import{erc20ABI as I}from"@swapkit/helpers/contracts";var O=(e)=>{switch(e){case a.Bitcoin:return"bitcoin";case a.BitcoinCash:return"bitcoincash";case a.Dash:return"dash";case a.Dogecoin:return"dogecoin";case a.Litecoin:return"litecoin";default:throw new p("wallet_keepkey_chain_not_supported",{chain:e})}};function w(e){if(!window.keepkey)throw new p("wallet_keepkey_not_found");switch(e){case a.Ethereum:case a.Base:case a.Avalanche:case a.BinanceSmartChain:case a.Arbitrum:case a.Optimism:case a.Polygon:return window.keepkey.ethereum;case a.Cosmos:return window.keepkey.cosmos;case a.Bitcoin:return window.keepkey.bitcoin;case a.BitcoinCash:return window.keepkey.bitcoincash;case a.Dogecoin:return window.keepkey.dogecoin;case a.Litecoin:return window.keepkey.litecoin;case a.Dash:return window.keepkey.dash;case a.THORChain:return window.keepkey.thorchain;case a.Maya:return window.keepkey.mayachain;default:return}}async function F({method:e,params:c,chain:r}){let s=w(r);return new Promise((o,i)=>{if(s&&"request"in s)s.request({method:e,params:c},(n,m)=>{n?i(n):o(m)});else i(new p("wallet_provider_not_found"))})}async function k(e){let c=w(e);if(!c)throw new p({errorKey:"wallet_provider_not_found",info:{wallet:A.KEEPKEY,chain:e}});let r="request_accounts";if(D.includes(e))r="eth_requestAccounts";let[s]=await c.request({method:r,params:[]});return s}async function f({assetValue:e,recipient:c,memo:r,gasLimit:s},o="transfer"){if(!e)throw new p("wallet_keepkey_asset_not_defined");let i=await k(e.chain),n=[{amount:{amount:e.getValue("string"),decimals:e.decimal},asset:{chain:e.chain,symbol:e.symbol.toUpperCase(),ticker:e.symbol.toUpperCase()},memo:r,from:i,recipient:c,gasLimit:s}];return F({method:o,params:n,chain:e.chain})}function l(e,c){return{call:async({contractAddress:r,abi:s,funcName:o,funcParams:i=[],txOverrides:n})=>{if(!r)throw new p("wallet_keepkey_contract_address_not_provided");let{createContract:m,getCreateContractTxObject:g,isStateChangingCall:y,toHexString:P}=await import("@swapkit/toolboxes/evm");if(y({abi:s,funcName:o})){let X=g({provider:e,chain:c}),{value:U,from:q,to:M,data:x}=await X({contractAddress:r,abi:s,funcName:o,funcParams:i,txOverrides:n});return e.send("eth_sendTransaction",[{value:P(BigInt(U||0)),from:q,to:M,data:x||"0x"}])}let v=await m(r,s,e)[o]?.(...i);return typeof v?.hash==="string"?v?.hash:v},approve:async({assetAddress:r,spenderAddress:s,amount:o,from:i})=>{let{MAX_APPROVAL:n,getCreateContractTxObject:m,toHexString:g}=await import("@swapkit/toolboxes/evm"),y=m({provider:e,chain:c}),{value:P,to:T,data:E}=await y({contractAddress:r,abi:I,funcName:"approve",funcParams:[s,BigInt(o||n)],txOverrides:{from:i}});return e.send("eth_sendTransaction",[{value:g(BigInt(P||0)),from:i,to:T,data:E||"0x"}])},sendTransaction:async(r)=>{let{from:s,to:o,data:i,value:n}=r;if(!o)throw new p("wallet_keepkey_send_transaction_no_address");let{toHexString:m}=await import("@swapkit/toolboxes/evm");return e.send("eth_sendTransaction",[{value:m(BigInt(n||0)),from:s,to:o,data:i||"0x"}])}}}var K=j({name:"connectKeepkeyBex",supportedChains:[t.Arbitrum,t.Avalanche,t.BinanceSmartChain,t.Bitcoin,t.BitcoinCash,t.Base,t.Cosmos,t.Dash,t.Dogecoin,t.Ethereum,t.Kujira,t.Litecoin,t.Maya,t.Optimism,t.Polygon,t.Solana,t.THORChain],walletType:b.KEEPKEY_BEX,connect:({addChain:e,supportedChains:c,walletType:r})=>async function s(o){let i=H({chains:o,supportedChains:c,walletType:r});return await Promise.all(i.map(async(n)=>{let m=await k(n),g=await R(n);e({...g,address:m,chain:n,walletType:r})})),!0}}),S=B(K);async function R(e){switch(e){case t.Maya:case t.THORChain:{let{getCosmosToolbox:c,THORCHAIN_GAS_VALUE:r,MAYA_GAS_VALUE:s}=await import("@swapkit/toolboxes/cosmos"),o=e===t.Maya?s:r;return{...c(e),deposit:(n)=>f({...n,recipient:""},"deposit"),transfer:(n)=>f({...n,gasLimit:o},"transfer")}}case t.Cosmos:case t.Kujira:{let{getCosmosToolbox:c}=await import("@swapkit/toolboxes/cosmos"),r=window.keepkey?.cosmos?.getOfflineSignerOnlyAmino(V[e]);if(!r)throw new _("wallet_keepkey_signer_not_found");let s=c(e,{signer:r}),o=await r.getAccounts();if(!o?.[0]?.address)throw new _("wallet_keepkey_no_accounts");let[{address:i}]=o;return{...s,address:i}}case t.Dash:case t.Bitcoin:case t.BitcoinCash:case t.Dogecoin:case t.Litecoin:{let{getUtxoToolbox:c}=await import("@swapkit/toolboxes/utxo");return{...await c(e),getBalance:async()=>{let o=O(e),i=await window?.keepkey?.[o]?.request({method:"request_balance"});return[L.from({chain:e,value:i[0].balance})]},transfer:f}}case t.Ethereum:case t.BinanceSmartChain:case t.Base:case t.Arbitrum:case t.Optimism:case t.Polygon:case t.Avalanche:{let{prepareNetworkSwitch:c,switchEVMWalletNetwork:r}=await import("@swapkit/helpers"),{getEvmToolbox:s}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:o}=await import("ethers"),i=w(e);if(!i)throw new _("wallet_keepkey_not_found");let n=new o(i,"any"),m=await n.getSigner(),g=await s(e,{provider:n,signer:m}),y=l(n,e);try{if(e!==t.Ethereum){let P=g.getNetworkParams();await r(n,e,P)}}catch(P){throw new _({errorKey:"wallet_failed_to_add_or_switch_network",info:{wallet:b.KEEPKEY,chain:e}})}return c({provider:n,chain:e,toolbox:{...g,...y}})}default:return null}}export{K as keepkeyBexWallet,S as KEEPKEY_BEX_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=0F160E0AAF7196EF64756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as v}from"../../chunk-zfnkndsr.js";import{C as m,D as h}from"../../chunk-qwd1kp32.js";import{Chain as c,CosmosChains as E,EVMChains as A,NetworkDerivationPath as _,UTXOChains as R,WalletOption as w,createWallet as U,filterSupportedChains as W,updateDerivationPath as F}from"@swapkit/helpers";import{createCipheriv as P,createDecipheriv as K,pbkdf2Sync as y,randomBytes as d}from"node:crypto";import{generateMnemonic as T,validateMnemonic as D}from"@scure/bip39";import{wordlist as g}from"@scure/bip39/wordlists/english";async function x(t){let{blake2bFinal:i,blake2bInit:s,blake2bUpdate:n}=(await import("blakejs")).default,e=t;if(!(e instanceof Buffer))e=Buffer.from(e,"hex");let a=s(32);return n(a,e),Array.from(i(a)).map((r)=>r<16?`0${r.toString(16)}`:r.toString(16)).join("")}async function V(t,i){let n=d(16),e=d(32),a={c:262144,prf:"hmac-sha256",dklen:32,salt:e.toString("hex")},r=y(i,e,a.c,a.dklen,"sha256"),p=P("aes-128-ctr",r.subarray(0,16),n),o=Buffer.concat([p.update(Buffer.from(t,"utf8")),p.final()]),f=Buffer.concat([r.subarray(16,32),Buffer.from(o)]),l=await x(f);return{meta:"xchain-keystore",version:1,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:n.toString("hex")},ciphertext:o.toString("hex"),kdf:"pbkdf2",kdfparams:a,mac:l}}}function H(t=12){return T(g,t===12?128:256)}function X(t){return D(t,g)}async function $(t,i){let{SwapKitError:s}=await import("@swapkit/helpers");switch(t.version){case 1:{let n=t.crypto.kdfparams,e=Buffer.from(n.salt,"hex"),a=y(i,e,n.c,n.dklen,"sha256"),r=Buffer.from(t.crypto.ciphertext,"hex"),p=Buffer.concat([a.subarray(16,32),r]);if(await x(p)!==t.crypto.mac)throw new s("wallet_keystore_invalid_password");let f=K(t.crypto.cipher,a.subarray(0,16),Buffer.from(t.crypto.cipherparams.iv,"hex"));return Buffer.concat([f.update(r),f.final()]).toString("utf8")}default:throw new s("wallet_keystore_unsupported_version")}}var N=U({name:"connectKeystore",walletType:w.KEYSTORE,supportedChains:[...A,...R,...E,c.Polkadot,c.Chainflip,c.Ripple,c.Solana,c.Tron,c.Near],connect:({addChain:t,supportedChains:i,walletType:s})=>async function n(e,a,r){let p=W({chains:e,supportedChains:i,walletType:s});return await Promise.all(p.map(async(o)=>{let f=typeof r==="number"?r:0,l=r&&typeof r==="object"?r[o]:void 0,b=_[o].slice(0,o===c.Solana?4:5),k=l||F(b,{index:f}),{getToolbox:S}=await import("@swapkit/toolboxes"),u=await S(o,{phrase:a,derivationPath:k}),C=await u.getAddress()||"",B={...u,address:C};t({...B,chain:o,walletType:w.KEYSTORE})})),!0}}),I=v(N);export{X as validatePhrase,N as keystoreWallet,H as generatePhrase,V as encryptToKeyStore,$ as decryptFromKeystore,I as KEYSTORE_SUPPORTED_CHAINS};
1
+ import{A as v}from"../../chunk-th8ggrmx.js";import{C as m,D as h}from"../../chunk-qwd1kp32.js";import{Chain as c,CosmosChains as E,EVMChains as A,NetworkDerivationPath as _,UTXOChains as R,WalletOption as w,createWallet as U,filterSupportedChains as W,updateDerivationPath as F}from"@swapkit/helpers";import{createCipheriv as P,createDecipheriv as K,pbkdf2Sync as y,randomBytes as d}from"node:crypto";import{generateMnemonic as T,validateMnemonic as D}from"@scure/bip39";import{wordlist as g}from"@scure/bip39/wordlists/english";async function x(t){let{blake2bFinal:i,blake2bInit:s,blake2bUpdate:n}=(await import("blakejs")).default,e=t;if(!(e instanceof Buffer))e=Buffer.from(e,"hex");let a=s(32);return n(a,e),Array.from(i(a)).map((r)=>r<16?`0${r.toString(16)}`:r.toString(16)).join("")}async function V(t,i){let n=d(16),e=d(32),a={c:262144,prf:"hmac-sha256",dklen:32,salt:e.toString("hex")},r=y(i,e,a.c,a.dklen,"sha256"),p=P("aes-128-ctr",r.subarray(0,16),n),o=Buffer.concat([p.update(Buffer.from(t,"utf8")),p.final()]),f=Buffer.concat([r.subarray(16,32),Buffer.from(o)]),l=await x(f);return{meta:"xchain-keystore",version:1,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:n.toString("hex")},ciphertext:o.toString("hex"),kdf:"pbkdf2",kdfparams:a,mac:l}}}function H(t=12){return T(g,t===12?128:256)}function X(t){return D(t,g)}async function $(t,i){let{SwapKitError:s}=await import("@swapkit/helpers");switch(t.version){case 1:{let n=t.crypto.kdfparams,e=Buffer.from(n.salt,"hex"),a=y(i,e,n.c,n.dklen,"sha256"),r=Buffer.from(t.crypto.ciphertext,"hex"),p=Buffer.concat([a.subarray(16,32),r]);if(await x(p)!==t.crypto.mac)throw new s("wallet_keystore_invalid_password");let f=K(t.crypto.cipher,a.subarray(0,16),Buffer.from(t.crypto.cipherparams.iv,"hex"));return Buffer.concat([f.update(r),f.final()]).toString("utf8")}default:throw new s("wallet_keystore_unsupported_version")}}var N=U({name:"connectKeystore",walletType:w.KEYSTORE,supportedChains:[...A,...R,...E,c.Polkadot,c.Chainflip,c.Ripple,c.Solana,c.Tron,c.Near],connect:({addChain:t,supportedChains:i,walletType:s})=>async function n(e,a,r){let p=W({chains:e,supportedChains:i,walletType:s});return await Promise.all(p.map(async(o)=>{let f=typeof r==="number"?r:0,l=r&&typeof r==="object"?r[o]:void 0,b=_[o].slice(0,o===c.Solana?4:5),k=l||F(b,{index:f}),{getToolbox:S}=await import("@swapkit/toolboxes"),u=await S(o,{phrase:a,derivationPath:k}),C=await u.getAddress()||"",B={...u,address:C};t({...B,chain:o,walletType:w.KEYSTORE})})),!0}}),I=v(N);export{X as validatePhrase,N as keystoreWallet,H as generatePhrase,V as encryptToKeyStore,$ as decryptFromKeystore,I as KEYSTORE_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=111FA87A0901E32464756E2164756E21
@@ -1,4 +1,4 @@
1
- import{A as V0}from"../../chunk-zfnkndsr.js";import{C as W,D as J}from"../../chunk-qwd1kp32.js";import{Chain as F,ChainId as DL,FeeOption as fL,SKConfig as y0,StagenetChain as zL,SwapKitError as E,WalletOption as K0,createWallet as qL,filterSupportedChains as lL}from"@swapkit/helpers";import{Chain as Q,SwapKitError as s0,WalletOption as e0}from"@swapkit/helpers";var I=async({chain:L,ledgerClient:m})=>{if(!m)return"";switch(L){case Q.Cosmos:case Q.THORChain:return m.connect();case Q.Ethereum:case Q.BinanceSmartChain:case Q.Avalanche:case Q.Polygon:case Q.Arbitrum:case Q.Optimism:case Q.Base:return m.getAddress();case Q.Bitcoin:case Q.BitcoinCash:case Q.Dash:case Q.Dogecoin:case Q.Litecoin:{let _=m;await _.connect();let O=await _.getAddress();return L===Q.BitcoinCash?O.replace("bitcoincash:",""):O}case Q.Near:return await m.getAddress();case Q.Ripple:return m.address;default:throw new s0("wallet_chain_not_supported",{wallet:e0.LEDGER,chain:L})}};import{Chain as j,SwapKitError as HL,WalletOption as wL}from"@swapkit/helpers";import{NetworkDerivationPath as yL,SwapKitError as Q0,derivationPathToString as OL}from"@swapkit/helpers";import{LedgerErrorCode as e,NetworkDerivationPath as _L,SwapKitError as r}from"@swapkit/helpers";import{SwapKitError as j0}from"@swapkit/helpers";var K=85,n=250;var S={GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2,GET_ADDR_SECP256K1:4},v={INIT:0,ADD:1,LAST:2},o={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},V={JSON:0},f={NoError:36864},G0={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",36864:"No errors",36865:"Device is busy",26626:"Error deriving keys",25600:"Execution Error",26368:"Wrong Length",27010:"Empty Buffer",27011:"Output buffer too small",27012:"Data is invalid",27013:"Conditions not satisfied",27014:"Transaction rejected",27264:"Bad key handle",27392:"Invalid P1/P2",27904:"Instruction not supported",28160:"App does not seem to be open",28416:"Unknown error",28417:"Sign/verify error"};function H(L){if(L in G0)return G0[L];return`Unknown Status Code: ${L}`}function r0(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function Z(L){if(L){if(r0(L)){if(Object.prototype.hasOwnProperty.call(L,"statusCode"))return{return_code:L.statusCode,error_message:H(L.statusCode)};if(Object.prototype.hasOwnProperty.call(L,"return_code")&&Object.prototype.hasOwnProperty.call(L,"error_message"))return L}return{return_code:65535,error_message:L.toString()}}return{return_code:65535,error_message:L.toString()}}async function p(L){return L.send(85,S.GET_VERSION,0,0).then((m)=>{let _=m.slice(-2),O=_[0]*256+_[1],y=0;if(m.length>=9)y=(m[5]<<24)+(m[6]<<16)+(m[7]<<8)+(m[8]<<0);return{return_code:O,error_message:H(O),test_mode:m[0]!==0,major:m[1],minor:m[2],patch:m[3],device_locked:m[4]===1,target_id:y.toString(16)}},Z)}import{SwapKitError as h}from"@swapkit/helpers";function F0(L){if(L==null||L.length<3)throw new h("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new h("wallet_ledger_invalid_params",{reason:"Path too long"});let m=Buffer.alloc(1+4*L.length);m.writeUInt8(L.length,0);for(let _=0;_<L.length;_+=1){let O=L[_]||0;if(_<3)O|=2147483648;m.writeInt32LE(O,1+_*4)}return m}async function a(L,m,_,O,y=V.JSON){return L.transport.send(K,S.SIGN_SECP256K1,m,y,O,[f.NoError,27012,27264]).then((T)=>{let B=T.slice(-2),X=B[0]*256+B[1],G=H(X);if(X===27264||X===27012)G=`${G} : ${T.slice(0,T.length-2).toString("ascii")}`;let R=null;if(T.length>2)R=T.slice(0,T.length-2);return{signature:R,return_code:X,error_message:G}},Z)}function LL(L){if(L.length!==65)throw new h("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let m=L.slice(33,65),_=Buffer.from([2+(m[m.length-1]&1)]);return Buffer.concat([_,L.slice(1,33)])}async function R0(L,m){return L.transport.send(K,S.INS_PUBLIC_KEY_SECP256K1,0,0,m,[f.NoError]).then((_)=>{let O=_.slice(-2),y=O[0]*256+O[1],T=Buffer.from(_.slice(0,65));return{pk:T,compressed_pk:LL(T),return_code:y,error_message:H(y)}},Z)}function W0(L){if(!L||L.length!==5)throw new h("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let m=Buffer.alloc(20);return m.writeUInt32LE(2147483648+L[0],0),m.writeUInt32LE(2147483648+L[1],4),m.writeUInt32LE(2147483648+L[2],8),m.writeUInt32LE(L[3],12),m.writeUInt32LE(L[4],16),m}function J0(L,m,_,O,y=V.JSON){let T=v.ADD;if(m===1)T=v.INIT;if(m===_)T=v.LAST;return a(L,T,0,O,y)}async function $0(L,m){return L.transport.send(K,S.GET_ADDR_SECP256K1,0,0,m,[f.NoError]).then((_)=>{let O=_.slice(-2),y=O[0]*256+O[1];return{pk:"OBSOLETE PROPERTY",compressed_pk:Buffer.from(_.slice(0,33)),return_code:y,error_message:H(y)}},Z)}class k{transport;versionResponse;constructor(L){if(!L)throw new j0("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new j0("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let m=Buffer.alloc(1+L.length);return m.writeUInt8(L.length,0),m.write(L,1),m}async serializePath(L){if(this.versionResponse=await p(this.transport),this.versionResponse.return_code!==f.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return F0(L);case 2:return W0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,m){let _=await this.serializePath(L),O=[];O.push(_);for(let y=0;y<m.length;y+=n){let T=y+n;if(y>m.length)T=m.length;O.push(m.slice(y,T))}return O}async getVersion(){try{return this.versionResponse=await p(this.transport),this.versionResponse}catch(L){return Z(L)}}async appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let m=L.slice(-2),_=m[0]*256+m[1],O="",y="",T=0,B=0;if(L[0]!==1)return{return_code:36865,error_message:"response format ID not recognized"};let X=L[1];O=L.slice(2,2+X).toString("ascii");let G=2+X,R=L[G];G+=1,y=L.slice(G,G+R).toString("ascii"),G+=R;let $=L[G];return G+=1,T=$,B=L[G],{return_code:_,error_message:H(_),appName:O,appVersion:y,flagLen:T,flagsValue:B,flag_recovery:(B&1)!==0,flag_signed_mcu_code:(B&2)!==0,flag_onboarded:(B&4)!==0,flag_pin_validated:(B&128)!==0}},Z)}async deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[f.NoError,28160]).then((L)=>{let m=L.slice(-2),_=m[0]*256+m[1];if(_===28160)return{return_code:_,error_message:"This command is only available in the Dashboard"};let O=L.slice(0,4).toString("hex"),y=4,T=L[y];y+=1;let B=L.slice(y,y+T).toString();y+=T;let X=L[y];y+=1;let G=L.slice(y,y+X).toString("hex");y+=X;let R=L[y];y+=1;let $=L.slice(y,y+R);if($[R-1]===0)$=L.slice(y,y+R-1);let M=$.toString();return{return_code:_,error_message:H(_),targetId:O,seVersion:B,flag:G,mcuVersion:M}},Z)}async publicKey(L){try{let m=await this.serializePath(L);switch(this.versionResponse.major){case 1:return R0(this,m);case 2:{let _=Buffer.concat([k.serializeHRP("thor"),m]);return $0(this,_)}default:return{return_code:25600,error_message:"App Version is not supported"}}}catch(m){return Z(m)}}async getAddressAndPubKey(L,m,_=!1){return this.serializePath(L).then((O)=>{let y=Buffer.concat([k.serializeHRP(m),O]);return this.transport.send(K,S.GET_ADDR_SECP256K1,_?o.SHOW_ADDRESS_IN_DEVICE:o.ONLY_RETRIEVE,0,y,[f.NoError]).then((T)=>{let B=T.slice(-2),X=B[0]*256+B[1],G=Buffer.from(T.slice(0,33));return{bech32_address:Buffer.from(T.slice(33,-2)).toString(),compressed_pk:G,return_code:X,error_message:H(X)}},Z)}).catch((O)=>Z(O))}showAddressAndPubKey(L,m){return this.getAddressAndPubKey(L,m,!0)}signSendChunk(L,m,_,O=V.JSON){switch(this.versionResponse.major){case 1:return a(this,L,m,_,O);case 2:return J0(this,L,m,_,O);default:return{return_code:25600,error_message:"App Version is not supported"}}}async sign(L,m,_=V.JSON){let O=Buffer.from(m),y=[],T;try{y=await this.signGetChunks(L,O),T=await this.signSendChunk(1,y.length,y[0],_)}catch(X){Z(X)}let B={return_code:T.return_code,error_message:T.error_message,signature:null};for(let X=1;X<y.length;X+=1)if(B=await this.signSendChunk(1+X,y.length,y[X],_),B.return_code!==f.NoError)break;return{return_code:B.return_code,error_message:B.error_message,signature:B.signature}}}import{SwapKitError as u}from"@swapkit/helpers";var s=()=>navigator?.usb,mL=async()=>{let L=s();if(typeof L?.getDevices!=="function")return[];let{ledgerUSBVendorId:m}=await import("@ledgerhq/devices"),O=(await L?.getDevices()).filter((y)=>y.vendorId===m);if(O.length>0)return O[0];return L?.requestDevice({filters:[{vendorId:m}]})},N=async()=>{let L=await mL();if(!L)throw new u("wallet_ledger_device_not_found");if(await L.open(),L.configuration===null)await L.selectConfiguration(1);try{await L.reset()}catch{}let m=L.configurations[0].interfaces.find(({alternates:X})=>X.some(({interfaceClass:G})=>G===255));if(!m)throw await L.close(),new u("wallet_ledger_connection_error");try{await L.claimInterface(m.interfaceNumber)}catch(X){throw await L.close(),new u("wallet_ledger_connection_claimed",X)}let _=(await import("@ledgerhq/hw-transport-webusb")).default;if(!await _.isSupported())throw new u("wallet_ledger_webusb_not_supported");let{DisconnectedDevice:y}=await import("@ledgerhq/errors"),T=new _(L,m.interfaceNumber),B=(X)=>{if(L===X.device)s()?.removeEventListener("disconnect",B),T._emitDisconnect(new y)};return s()?.addEventListener("disconnect",B),T};class b{ledgerTimeout=50000;derivationPath=_L.GAIA;transport;ledgerApp;chain="thor";checkOrCreateTransportAndLedger=async(L=!1)=>{if(!L&&this.transport&&this.ledgerApp)return;try{switch(this.transport=L||!this.transport?await N():this.transport,this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new k(this.transport):this.ledgerApp;break}case"cosmos":{let m=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=L||!this.ledgerApp?new m(this.transport):this.ledgerApp}}return this.ledgerApp}catch(m){throw new r("wallet_ledger_connection_error",m)}};validateResponse=(L,m)=>{switch(L){case e.NoError:return;case e.LockedDevice:throw new r("wallet_ledger_device_locked",{message:`Ledger is locked: ${m}`});case e.TC_NotFound:throw new r("wallet_ledger_device_not_found");default:break}}}class L0 extends b{pubKey=null;derivationPath;constructor(L=yL.GAIA){super();this.chain="cosmos",this.derivationPath=OL(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:m}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),m};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,m="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:O,signature:y}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new Q0("wallet_ledger_pubkey_not_found");return this.validateResponse(_,O),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:m,signature:y}]};signAmino=async(L,m)=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.getAccounts();if(_.findIndex(($)=>$.address===L)===-1)throw new Q0("wallet_ledger_address_not_found",{address:L});let{encodeSecp256k1Signature:y,serializeSignDoc:T}=(await import("@cosmjs/amino")).default,{Secp256k1Signature:B}=(await import("@cosmjs/crypto")).default,X=T(m),G=await this.ledgerApp.sign(this.derivationPath,X);this.validateResponse(G.return_code,G.error_message);let R=B.fromDer(G.signature).toFixedLength();return{signed:m,signature:y(_[0].pubkey,R)}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}import{ChainId as w,NetworkDerivationPath as TL,SwapKitError as x,derivationPathToString as XL}from"@swapkit/helpers";import{AbstractSigner as BL}from"ethers";class z extends BL{chainId=w.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;constructor({provider:L,derivationPath:m=TL.OP,chainId:_=w.Optimism}){super(L);this.chainId=_||w.Ethereum,this.derivationPath=typeof m==="string"?m:XL(m),Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new z({provider:L,derivationPath:this.derivationPath,chainId:this.chainId});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await N(),m=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new m(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new x("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath)};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signMessage=async(L)=>{let{Signature:m}=await import("ethers");await this.createTransportAndLedger();let _=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!_)throw new x("wallet_ledger_signing_error");return _.r=`0x${_.r}`,_.s=`0x${_.s}`,m.from(_).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new x("wallet_ledger_no_provider");let m=await this.signTransaction(L);return await this.provider.broadcastTransaction(m)};signTypedData(){throw new x("wallet_ledger_method_not_supported",{method:"signTypedData"})}signTransaction=async(L)=>{let{Transaction:m}=await import("ethers");await this.createTransportAndLedger();let _=await this.provider?.getTransactionCount(L.from||await this.getAddress()),O={chainId:L.chainId||this.chainId,data:L.data,gasLimit:L.gasLimit,...L.gasPrice&&{gasPrice:L.gasPrice},...!L.gasPrice&&L.maxFeePerGas&&{maxFeePerGas:L.maxFeePerGas,maxPriorityFeePerGas:L.maxPriorityFeePerGas},nonce:L.nonce!==void 0?Number((L.nonce||_||0).toString()):_,to:L.to?.toString(),value:L.value,type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0},y=m.from(O).unsignedSerialized.slice(2),{ledgerService:T}=await import("@ledgerhq/hw-app-eth"),B=await T.resolveTransaction(y,{},{externalPlugins:!0,erc20:!0}),X=await this.ledgerApp?.signTransaction(this.derivationPath,y,B);if(!X)throw new x("wallet_ledger_signing_error");let{r:G,s:R,v:$}=X;return m.from({...O,signature:{v:Number(BigInt($)),r:`0x${G}`,s:`0x${R}`}}).serialized}}var Y0=({provider:L,derivationPath:m})=>new z({chainId:w.Ethereum,provider:L,derivationPath:m}),M0=({provider:L,derivationPath:m})=>new z({chainId:w.Avalanche,provider:L,derivationPath:m}),Z0=({provider:L,derivationPath:m})=>new z({chainId:w.BinanceSmartChain,provider:L,derivationPath:m}),N0=({provider:L,derivationPath:m})=>new z({chainId:w.Arbitrum,provider:L,derivationPath:m}),C0=({provider:L,derivationPath:m})=>new z({chainId:w.Polygon,provider:L,derivationPath:m}),U0=({provider:L,derivationPath:m})=>new z({chainId:w.Optimism,provider:L,derivationPath:m}),H0=({provider:L,derivationPath:m})=>new z({chainId:w.Base,provider:L,derivationPath:m});async function w0(L,m){let _=await import("@ledgerhq/hw-app-near"),{Chain:O,DerivationPath:y,derivationPathToString:T,SwapKitError:B}=await import("@swapkit/helpers"),X=new _.default(L),G=m?T(m):y[O.Near],{address:R,publicKey:$}=await X.getAddress(G);return{async getPublicKey(){let{utils:Y}=await import("near-api-js");return Y.PublicKey.fromString(`ed25519:${$}`)},signNep413Message(Y,C,D,U,A){return Promise.reject(new B("wallet_ledger_method_not_supported",{wallet:"Ledger",method:"signNep413Message"}))},getAddress(){return Promise.resolve(R)},async signTransaction(Y){let{Signature:C,SignedTransaction:D}=await import("near-api-js/lib/transaction");try{let U=await X.signTransaction(Y.encode(),G);if(!U)throw new Error("Signature undefined");let A=new C({keyType:0,data:U}),c=new D({transaction:Y,signature:A});return[U,c]}catch(U){throw new B("wallet_ledger_signing_error",{error:U})}},signDelegateAction(Y){return Promise.reject(new B("wallet_ledger_method_not_supported",{wallet:"Ledger",method:"signDelegateAction"}))}}}import{base64 as FL}from"@scure/base";import{NetworkDerivationPath as RL,SwapKitError as D0}from"@swapkit/helpers";import{base64 as GL}from"@scure/base";import{SwapKitError as q}from"@swapkit/helpers";var m0=(L)=>{if(L.length<64)throw new q("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new q("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new q("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new q("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let m=L[3],_=L.slice(4,m+4);if(_.length===33&&_[0]===0)_=_.slice(1,33);else if(_.length===33)throw new q("wallet_ledger_invalid_signature",{reason:"r too long"});while(_.length<32)_.unshift(0);if(L[m+4]!==2)throw new q("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let O=L[m+5];if(4+m+2+O!==L.length)throw new q("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let y=L.slice(m+6,L.length);if(y.length===33&&y[0]===0)y=y.slice(1,33);else if(y.length===33)throw new q("wallet_ledger_invalid_signature",{reason:"s too long"});while(y.length<32)y.unshift(0);if(_.length!==32||y.length!==32)throw new q("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return GL.encode(Buffer.concat([_,y]))};class _0 extends b{pubKey=null;derivationPath;constructor(L=RL.THOR){super();this.chain="thor",this.derivationPath=L}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:L,bech32_address:m}=await this.getAddressAndPubKey();return this.pubKey=FL.encode(L),m};getAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.getAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};showAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.showAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};signTransaction=async(L,m="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:O,signature:y}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new D0("wallet_ledger_pubkey_not_found");return this.validateResponse(_,O),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:m,signature:m0(y)}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:m,error_message:_,signature:O}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new D0("wallet_ledger_pubkey_not_found");return this.validateResponse(m,_),m0(O)}}import{SwapKitError as f0,derivationPathToString as WL,getWalletFormatFor as JL}from"@swapkit/helpers";import{Transaction as $L}from"bitcoinjs-lib";var jL=async({psbt:L,inputUtxos:m,btcApp:_,derivationPath:O},y)=>{let T=m.map(($)=>{let M=$L.fromHex($.txHex||"");return[_.splitTransaction(M.toHex(),M.hasWitnesses()),$.index,void 0,void 0]}),B=L.data.globalMap.unsignedTx.toBuffer().toString("hex"),X=_.splitTransaction(B,!0),G=_.serializeTransactionOutputs(X).toString("hex"),R={additionals:["bech32"],associatedKeysets:T.map(()=>O),inputs:T,outputScriptHex:G,segwit:!0,useTrustedInputForSegwit:!0};return _.createPaymentTransaction({...R,...y})},g=({chain:L,additionalSignParams:m})=>{let _,O=null;async function y(B=!0){if(B&&!_)new f0("wallet_ledger_connection_error",{message:`Ledger connection failed:
1
+ import{A as V0}from"../../chunk-th8ggrmx.js";import{C as W,D as J}from"../../chunk-qwd1kp32.js";import{Chain as F,ChainId as DL,FeeOption as fL,SKConfig as y0,StagenetChain as zL,SwapKitError as E,WalletOption as K0,createWallet as qL,filterSupportedChains as lL}from"@swapkit/helpers";import{Chain as Q,SwapKitError as s0,WalletOption as e0}from"@swapkit/helpers";var I=async({chain:L,ledgerClient:m})=>{if(!m)return"";switch(L){case Q.Cosmos:case Q.THORChain:return m.connect();case Q.Ethereum:case Q.BinanceSmartChain:case Q.Avalanche:case Q.Polygon:case Q.Arbitrum:case Q.Optimism:case Q.Base:return m.getAddress();case Q.Bitcoin:case Q.BitcoinCash:case Q.Dash:case Q.Dogecoin:case Q.Litecoin:{let _=m;await _.connect();let O=await _.getAddress();return L===Q.BitcoinCash?O.replace("bitcoincash:",""):O}case Q.Near:return await m.getAddress();case Q.Ripple:return m.address;default:throw new s0("wallet_chain_not_supported",{wallet:e0.LEDGER,chain:L})}};import{Chain as j,SwapKitError as HL,WalletOption as wL}from"@swapkit/helpers";import{NetworkDerivationPath as yL,SwapKitError as Q0,derivationPathToString as OL}from"@swapkit/helpers";import{LedgerErrorCode as e,NetworkDerivationPath as _L,SwapKitError as r}from"@swapkit/helpers";import{SwapKitError as j0}from"@swapkit/helpers";var K=85,n=250;var S={GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2,GET_ADDR_SECP256K1:4},v={INIT:0,ADD:1,LAST:2},o={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},V={JSON:0},f={NoError:36864},G0={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",36864:"No errors",36865:"Device is busy",26626:"Error deriving keys",25600:"Execution Error",26368:"Wrong Length",27010:"Empty Buffer",27011:"Output buffer too small",27012:"Data is invalid",27013:"Conditions not satisfied",27014:"Transaction rejected",27264:"Bad key handle",27392:"Invalid P1/P2",27904:"Instruction not supported",28160:"App does not seem to be open",28416:"Unknown error",28417:"Sign/verify error"};function H(L){if(L in G0)return G0[L];return`Unknown Status Code: ${L}`}function r0(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function Z(L){if(L){if(r0(L)){if(Object.prototype.hasOwnProperty.call(L,"statusCode"))return{return_code:L.statusCode,error_message:H(L.statusCode)};if(Object.prototype.hasOwnProperty.call(L,"return_code")&&Object.prototype.hasOwnProperty.call(L,"error_message"))return L}return{return_code:65535,error_message:L.toString()}}return{return_code:65535,error_message:L.toString()}}async function p(L){return L.send(85,S.GET_VERSION,0,0).then((m)=>{let _=m.slice(-2),O=_[0]*256+_[1],y=0;if(m.length>=9)y=(m[5]<<24)+(m[6]<<16)+(m[7]<<8)+(m[8]<<0);return{return_code:O,error_message:H(O),test_mode:m[0]!==0,major:m[1],minor:m[2],patch:m[3],device_locked:m[4]===1,target_id:y.toString(16)}},Z)}import{SwapKitError as h}from"@swapkit/helpers";function F0(L){if(L==null||L.length<3)throw new h("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new h("wallet_ledger_invalid_params",{reason:"Path too long"});let m=Buffer.alloc(1+4*L.length);m.writeUInt8(L.length,0);for(let _=0;_<L.length;_+=1){let O=L[_]||0;if(_<3)O|=2147483648;m.writeInt32LE(O,1+_*4)}return m}async function a(L,m,_,O,y=V.JSON){return L.transport.send(K,S.SIGN_SECP256K1,m,y,O,[f.NoError,27012,27264]).then((T)=>{let B=T.slice(-2),X=B[0]*256+B[1],G=H(X);if(X===27264||X===27012)G=`${G} : ${T.slice(0,T.length-2).toString("ascii")}`;let R=null;if(T.length>2)R=T.slice(0,T.length-2);return{signature:R,return_code:X,error_message:G}},Z)}function LL(L){if(L.length!==65)throw new h("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let m=L.slice(33,65),_=Buffer.from([2+(m[m.length-1]&1)]);return Buffer.concat([_,L.slice(1,33)])}async function R0(L,m){return L.transport.send(K,S.INS_PUBLIC_KEY_SECP256K1,0,0,m,[f.NoError]).then((_)=>{let O=_.slice(-2),y=O[0]*256+O[1],T=Buffer.from(_.slice(0,65));return{pk:T,compressed_pk:LL(T),return_code:y,error_message:H(y)}},Z)}function W0(L){if(!L||L.length!==5)throw new h("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let m=Buffer.alloc(20);return m.writeUInt32LE(2147483648+L[0],0),m.writeUInt32LE(2147483648+L[1],4),m.writeUInt32LE(2147483648+L[2],8),m.writeUInt32LE(L[3],12),m.writeUInt32LE(L[4],16),m}function J0(L,m,_,O,y=V.JSON){let T=v.ADD;if(m===1)T=v.INIT;if(m===_)T=v.LAST;return a(L,T,0,O,y)}async function $0(L,m){return L.transport.send(K,S.GET_ADDR_SECP256K1,0,0,m,[f.NoError]).then((_)=>{let O=_.slice(-2),y=O[0]*256+O[1];return{pk:"OBSOLETE PROPERTY",compressed_pk:Buffer.from(_.slice(0,33)),return_code:y,error_message:H(y)}},Z)}class k{transport;versionResponse;constructor(L){if(!L)throw new j0("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new j0("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let m=Buffer.alloc(1+L.length);return m.writeUInt8(L.length,0),m.write(L,1),m}async serializePath(L){if(this.versionResponse=await p(this.transport),this.versionResponse.return_code!==f.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return F0(L);case 2:return W0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,m){let _=await this.serializePath(L),O=[];O.push(_);for(let y=0;y<m.length;y+=n){let T=y+n;if(y>m.length)T=m.length;O.push(m.slice(y,T))}return O}async getVersion(){try{return this.versionResponse=await p(this.transport),this.versionResponse}catch(L){return Z(L)}}async appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let m=L.slice(-2),_=m[0]*256+m[1],O="",y="",T=0,B=0;if(L[0]!==1)return{return_code:36865,error_message:"response format ID not recognized"};let X=L[1];O=L.slice(2,2+X).toString("ascii");let G=2+X,R=L[G];G+=1,y=L.slice(G,G+R).toString("ascii"),G+=R;let $=L[G];return G+=1,T=$,B=L[G],{return_code:_,error_message:H(_),appName:O,appVersion:y,flagLen:T,flagsValue:B,flag_recovery:(B&1)!==0,flag_signed_mcu_code:(B&2)!==0,flag_onboarded:(B&4)!==0,flag_pin_validated:(B&128)!==0}},Z)}async deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[f.NoError,28160]).then((L)=>{let m=L.slice(-2),_=m[0]*256+m[1];if(_===28160)return{return_code:_,error_message:"This command is only available in the Dashboard"};let O=L.slice(0,4).toString("hex"),y=4,T=L[y];y+=1;let B=L.slice(y,y+T).toString();y+=T;let X=L[y];y+=1;let G=L.slice(y,y+X).toString("hex");y+=X;let R=L[y];y+=1;let $=L.slice(y,y+R);if($[R-1]===0)$=L.slice(y,y+R-1);let M=$.toString();return{return_code:_,error_message:H(_),targetId:O,seVersion:B,flag:G,mcuVersion:M}},Z)}async publicKey(L){try{let m=await this.serializePath(L);switch(this.versionResponse.major){case 1:return R0(this,m);case 2:{let _=Buffer.concat([k.serializeHRP("thor"),m]);return $0(this,_)}default:return{return_code:25600,error_message:"App Version is not supported"}}}catch(m){return Z(m)}}async getAddressAndPubKey(L,m,_=!1){return this.serializePath(L).then((O)=>{let y=Buffer.concat([k.serializeHRP(m),O]);return this.transport.send(K,S.GET_ADDR_SECP256K1,_?o.SHOW_ADDRESS_IN_DEVICE:o.ONLY_RETRIEVE,0,y,[f.NoError]).then((T)=>{let B=T.slice(-2),X=B[0]*256+B[1],G=Buffer.from(T.slice(0,33));return{bech32_address:Buffer.from(T.slice(33,-2)).toString(),compressed_pk:G,return_code:X,error_message:H(X)}},Z)}).catch((O)=>Z(O))}showAddressAndPubKey(L,m){return this.getAddressAndPubKey(L,m,!0)}signSendChunk(L,m,_,O=V.JSON){switch(this.versionResponse.major){case 1:return a(this,L,m,_,O);case 2:return J0(this,L,m,_,O);default:return{return_code:25600,error_message:"App Version is not supported"}}}async sign(L,m,_=V.JSON){let O=Buffer.from(m),y=[],T;try{y=await this.signGetChunks(L,O),T=await this.signSendChunk(1,y.length,y[0],_)}catch(X){Z(X)}let B={return_code:T.return_code,error_message:T.error_message,signature:null};for(let X=1;X<y.length;X+=1)if(B=await this.signSendChunk(1+X,y.length,y[X],_),B.return_code!==f.NoError)break;return{return_code:B.return_code,error_message:B.error_message,signature:B.signature}}}import{SwapKitError as u}from"@swapkit/helpers";var s=()=>navigator?.usb,mL=async()=>{let L=s();if(typeof L?.getDevices!=="function")return[];let{ledgerUSBVendorId:m}=await import("@ledgerhq/devices"),O=(await L?.getDevices()).filter((y)=>y.vendorId===m);if(O.length>0)return O[0];return L?.requestDevice({filters:[{vendorId:m}]})},N=async()=>{let L=await mL();if(!L)throw new u("wallet_ledger_device_not_found");if(await L.open(),L.configuration===null)await L.selectConfiguration(1);try{await L.reset()}catch{}let m=L.configurations[0].interfaces.find(({alternates:X})=>X.some(({interfaceClass:G})=>G===255));if(!m)throw await L.close(),new u("wallet_ledger_connection_error");try{await L.claimInterface(m.interfaceNumber)}catch(X){throw await L.close(),new u("wallet_ledger_connection_claimed",X)}let _=(await import("@ledgerhq/hw-transport-webusb")).default;if(!await _.isSupported())throw new u("wallet_ledger_webusb_not_supported");let{DisconnectedDevice:y}=await import("@ledgerhq/errors"),T=new _(L,m.interfaceNumber),B=(X)=>{if(L===X.device)s()?.removeEventListener("disconnect",B),T._emitDisconnect(new y)};return s()?.addEventListener("disconnect",B),T};class b{ledgerTimeout=50000;derivationPath=_L.GAIA;transport;ledgerApp;chain="thor";checkOrCreateTransportAndLedger=async(L=!1)=>{if(!L&&this.transport&&this.ledgerApp)return;try{switch(this.transport=L||!this.transport?await N():this.transport,this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new k(this.transport):this.ledgerApp;break}case"cosmos":{let m=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=L||!this.ledgerApp?new m(this.transport):this.ledgerApp}}return this.ledgerApp}catch(m){throw new r("wallet_ledger_connection_error",m)}};validateResponse=(L,m)=>{switch(L){case e.NoError:return;case e.LockedDevice:throw new r("wallet_ledger_device_locked",{message:`Ledger is locked: ${m}`});case e.TC_NotFound:throw new r("wallet_ledger_device_not_found");default:break}}}class L0 extends b{pubKey=null;derivationPath;constructor(L=yL.GAIA){super();this.chain="cosmos",this.derivationPath=OL(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:m}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),m};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,m="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:O,signature:y}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new Q0("wallet_ledger_pubkey_not_found");return this.validateResponse(_,O),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:m,signature:y}]};signAmino=async(L,m)=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.getAccounts();if(_.findIndex(($)=>$.address===L)===-1)throw new Q0("wallet_ledger_address_not_found",{address:L});let{encodeSecp256k1Signature:y,serializeSignDoc:T}=(await import("@cosmjs/amino")).default,{Secp256k1Signature:B}=(await import("@cosmjs/crypto")).default,X=T(m),G=await this.ledgerApp.sign(this.derivationPath,X);this.validateResponse(G.return_code,G.error_message);let R=B.fromDer(G.signature).toFixedLength();return{signed:m,signature:y(_[0].pubkey,R)}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}import{ChainId as w,NetworkDerivationPath as TL,SwapKitError as x,derivationPathToString as XL}from"@swapkit/helpers";import{AbstractSigner as BL}from"ethers";class z extends BL{chainId=w.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;constructor({provider:L,derivationPath:m=TL.OP,chainId:_=w.Optimism}){super(L);this.chainId=_||w.Ethereum,this.derivationPath=typeof m==="string"?m:XL(m),Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new z({provider:L,derivationPath:this.derivationPath,chainId:this.chainId});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await N(),m=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new m(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new x("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath)};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signMessage=async(L)=>{let{Signature:m}=await import("ethers");await this.createTransportAndLedger();let _=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!_)throw new x("wallet_ledger_signing_error");return _.r=`0x${_.r}`,_.s=`0x${_.s}`,m.from(_).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new x("wallet_ledger_no_provider");let m=await this.signTransaction(L);return await this.provider.broadcastTransaction(m)};signTypedData(){throw new x("wallet_ledger_method_not_supported",{method:"signTypedData"})}signTransaction=async(L)=>{let{Transaction:m}=await import("ethers");await this.createTransportAndLedger();let _=await this.provider?.getTransactionCount(L.from||await this.getAddress()),O={chainId:L.chainId||this.chainId,data:L.data,gasLimit:L.gasLimit,...L.gasPrice&&{gasPrice:L.gasPrice},...!L.gasPrice&&L.maxFeePerGas&&{maxFeePerGas:L.maxFeePerGas,maxPriorityFeePerGas:L.maxPriorityFeePerGas},nonce:L.nonce!==void 0?Number((L.nonce||_||0).toString()):_,to:L.to?.toString(),value:L.value,type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0},y=m.from(O).unsignedSerialized.slice(2),{ledgerService:T}=await import("@ledgerhq/hw-app-eth"),B=await T.resolveTransaction(y,{},{externalPlugins:!0,erc20:!0}),X=await this.ledgerApp?.signTransaction(this.derivationPath,y,B);if(!X)throw new x("wallet_ledger_signing_error");let{r:G,s:R,v:$}=X;return m.from({...O,signature:{v:Number(BigInt($)),r:`0x${G}`,s:`0x${R}`}}).serialized}}var Y0=({provider:L,derivationPath:m})=>new z({chainId:w.Ethereum,provider:L,derivationPath:m}),M0=({provider:L,derivationPath:m})=>new z({chainId:w.Avalanche,provider:L,derivationPath:m}),Z0=({provider:L,derivationPath:m})=>new z({chainId:w.BinanceSmartChain,provider:L,derivationPath:m}),N0=({provider:L,derivationPath:m})=>new z({chainId:w.Arbitrum,provider:L,derivationPath:m}),C0=({provider:L,derivationPath:m})=>new z({chainId:w.Polygon,provider:L,derivationPath:m}),U0=({provider:L,derivationPath:m})=>new z({chainId:w.Optimism,provider:L,derivationPath:m}),H0=({provider:L,derivationPath:m})=>new z({chainId:w.Base,provider:L,derivationPath:m});async function w0(L,m){let _=await import("@ledgerhq/hw-app-near"),{Chain:O,DerivationPath:y,derivationPathToString:T,SwapKitError:B}=await import("@swapkit/helpers"),X=new _.default(L),G=m?T(m):y[O.Near],{address:R,publicKey:$}=await X.getAddress(G);return{async getPublicKey(){let{utils:Y}=await import("near-api-js");return Y.PublicKey.fromString(`ed25519:${$}`)},signNep413Message(Y,C,D,U,A){return Promise.reject(new B("wallet_ledger_method_not_supported",{wallet:"Ledger",method:"signNep413Message"}))},getAddress(){return Promise.resolve(R)},async signTransaction(Y){let{Signature:C,SignedTransaction:D}=await import("near-api-js/lib/transaction");try{let U=await X.signTransaction(Y.encode(),G);if(!U)throw new Error("Signature undefined");let A=new C({keyType:0,data:U}),c=new D({transaction:Y,signature:A});return[U,c]}catch(U){throw new B("wallet_ledger_signing_error",{error:U})}},signDelegateAction(Y){return Promise.reject(new B("wallet_ledger_method_not_supported",{wallet:"Ledger",method:"signDelegateAction"}))}}}import{base64 as FL}from"@scure/base";import{NetworkDerivationPath as RL,SwapKitError as D0}from"@swapkit/helpers";import{base64 as GL}from"@scure/base";import{SwapKitError as q}from"@swapkit/helpers";var m0=(L)=>{if(L.length<64)throw new q("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new q("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new q("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new q("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let m=L[3],_=L.slice(4,m+4);if(_.length===33&&_[0]===0)_=_.slice(1,33);else if(_.length===33)throw new q("wallet_ledger_invalid_signature",{reason:"r too long"});while(_.length<32)_.unshift(0);if(L[m+4]!==2)throw new q("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let O=L[m+5];if(4+m+2+O!==L.length)throw new q("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let y=L.slice(m+6,L.length);if(y.length===33&&y[0]===0)y=y.slice(1,33);else if(y.length===33)throw new q("wallet_ledger_invalid_signature",{reason:"s too long"});while(y.length<32)y.unshift(0);if(_.length!==32||y.length!==32)throw new q("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return GL.encode(Buffer.concat([_,y]))};class _0 extends b{pubKey=null;derivationPath;constructor(L=RL.THOR){super();this.chain="thor",this.derivationPath=L}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:L,bech32_address:m}=await this.getAddressAndPubKey();return this.pubKey=FL.encode(L),m};getAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.getAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};showAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.showAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};signTransaction=async(L,m="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:O,signature:y}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new D0("wallet_ledger_pubkey_not_found");return this.validateResponse(_,O),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:m,signature:m0(y)}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:m,error_message:_,signature:O}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new D0("wallet_ledger_pubkey_not_found");return this.validateResponse(m,_),m0(O)}}import{SwapKitError as f0,derivationPathToString as WL,getWalletFormatFor as JL}from"@swapkit/helpers";import{Transaction as $L}from"bitcoinjs-lib";var jL=async({psbt:L,inputUtxos:m,btcApp:_,derivationPath:O},y)=>{let T=m.map(($)=>{let M=$L.fromHex($.txHex||"");return[_.splitTransaction(M.toHex(),M.hasWitnesses()),$.index,void 0,void 0]}),B=L.data.globalMap.unsignedTx.toBuffer().toString("hex"),X=_.splitTransaction(B,!0),G=_.serializeTransactionOutputs(X).toString("hex"),R={additionals:["bech32"],associatedKeysets:T.map(()=>O),inputs:T,outputScriptHex:G,segwit:!0,useTrustedInputForSegwit:!0};return _.createPaymentTransaction({...R,...y})},g=({chain:L,additionalSignParams:m})=>{let _,O=null;async function y(B=!0){if(B&&!_)new f0("wallet_ledger_connection_error",{message:`Ledger connection failed:
2
2
  ${JSON.stringify({checkBtcApp:B,btcApp:_})}`});O||=await N()}async function T(){O=await N(),_=new(await import("@ledgerhq/hw-app-btc")).default({transport:O,currency:L})}return(B)=>{let X=typeof B==="string"?B:WL(B),G=JL(X);return{connect:async()=>{await y(!1),_=new(await import("@ledgerhq/hw-app-btc")).default({transport:O,currency:L})},getExtendedPublicKey:async(R="84'/0'/0'",$=76067358)=>{return await y(!1),_.getWalletXpub({path:R,xpubVersion:$})},signTransaction:async(R,$)=>{return await T(),jL({psbt:R,derivationPath:X,btcApp:_,inputUtxos:$},m)},getAddress:async()=>{let{toCashAddress:R}=await import("@swapkit/toolboxes/utxo");await y(!1);let{bitcoinAddress:$}=await _.getWalletPublicKey(X,{format:G});if(!$)throw new f0("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${X}`});return L==="bitcoin-cash"&&G==="legacy"?R($).replace(/(bchtest:|bitcoincash:)/,""):$}}}},z0=g({chain:"bitcoin"}),q0=g({chain:"litecoin"}),l0=g({chain:"bitcoin-cash",additionalSignParams:{segwit:!1,additionals:["abc"],sigHashType:65}}),P0=g({chain:"dogecoin",additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1}}),S0=g({chain:"dash",additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1}});import{Chain as QL,NetworkDerivationPath as YL,derivationPathToString as ML}from"@swapkit/helpers";import{encode as A0}from"ripple-binary-codec";var ZL=2147483648;function NL(L){let m={};for(let _ in L)if(L[_]!==null&&L[_]!==void 0)m[_]=L[_];return m}async function CL(L){let{default:m}=await import("@ledgerhq/hw-app-xrp");return new m(L)}function UL({instance:L,derivationPath:m}){return L.getAddress(m)}var I0=async(L)=>{let m=ML(L||YL[QL.Ripple]),_=await N(),O=await CL(_),{address:y,publicKey:T}=await UL({instance:O,derivationPath:m});async function B(X){let{hashes:G}=await import("@swapkit/toolboxes/ripple"),$={...NL(X),Flags:X.Flags||ZL,SigningPubKey:T.toUpperCase()},M=A0($),Y=await O.signTransaction(m,M),C=A0({...$,TxnSignature:Y}),D=G.hashSignedTx(C);return{tx_blob:C,hash:D}}return{address:y,sign:B}};var l=async({chain:L,derivationPath:m})=>{let{match:_}=await import("ts-pattern");return _(L).returnType().with(j.THORChain,()=>Promise.resolve(new _0(m))).with(j.Cosmos,()=>Promise.resolve(new L0(m))).with(j.Bitcoin,()=>Promise.resolve(z0(m))).with(j.BitcoinCash,()=>Promise.resolve(l0(m))).with(j.Dash,()=>Promise.resolve(S0(m))).with(j.Dogecoin,()=>Promise.resolve(P0(m))).with(j.Litecoin,()=>Promise.resolve(q0(m))).with(j.Ripple,()=>Promise.resolve(I0(m))).with(j.Near,async()=>{let O=await N();return w0(O,m)}).with(j.Arbitrum,j.Avalanche,j.BinanceSmartChain,j.Ethereum,j.Optimism,j.Polygon,j.Base,async()=>{let{getProvider:O}=await import("@swapkit/toolboxes/evm"),y={provider:await O(L),derivationPath:m};return _(L).with(j.BinanceSmartChain,()=>Z0(y)).with(j.Avalanche,()=>M0(y)).with(j.Arbitrum,()=>N0(y)).with(j.Optimism,()=>U0(y)).with(j.Polygon,()=>C0(y)).with(j.Base,()=>H0(y)).otherwise(()=>Y0(y))}).otherwise(()=>{throw new HL("wallet_chain_not_supported",{wallet:wL.LEDGER,chain:L})})};var PL=qL({name:"connectLedger",supportedChains:[F.Arbitrum,F.Avalanche,F.Base,F.BinanceSmartChain,F.Bitcoin,F.BitcoinCash,F.Cosmos,F.Dash,F.Dogecoin,F.Ethereum,F.Litecoin,F.Near,F.Optimism,F.Polygon,F.Ripple,F.THORChain],walletType:K0.LEDGER,connect:({addChain:L,supportedChains:m,walletType:_})=>async function O(y,T){let[B]=lL({chains:y,supportedChains:m,walletType:_});if(!B)return!1;let X=await IL({chain:B,derivationPath:T});return L({...X,chain:B,walletType:K0.LEDGER}),!0}}),bm=V0(PL);function SL(L,m="t"){if(!L?.includes("=:"))return L;let _=L.includes(`:${m}:`)?L.split(`:${m}:`)[0]:L;return _?.substring(0,_.lastIndexOf(":"))}function d(L){if(Array.isArray(L))return L.forEach((O,y)=>{L[y]=d(O)}),L;if(typeof L!=="object")return L;let m={},_=Object.keys(L).sort();for(let O of _)m[O]=d(L[O]);return m}function AL(L){return JSON.stringify(d(L))}async function IL({chain:L,derivationPath:m}){switch(L){case F.BitcoinCash:case F.Bitcoin:case F.Dash:case F.Dogecoin:case F.Litecoin:{let{getUtxoToolbox:_}=await import("@swapkit/toolboxes/utxo"),O=await _(L),y=await l({chain:L,derivationPath:m}),T=await I({chain:L,ledgerClient:y});return{...O,address:T,transfer:async(X)=>{let G=X.feeRate||(await O.getFeeRates())[fL.Average],R=[F.Bitcoin].includes(L)?X.memo:SL(X.memo),{psbt:$,inputs:M}=await O.createTransaction({...X,feeRate:G,memo:R,sender:T,fetchTxHex:!0}),Y=await y.signTransaction($,M);return await O.broadcastTx(Y)}}}case F.Ethereum:case F.Avalanche:case F.Arbitrum:case F.Optimism:case F.Polygon:case F.BinanceSmartChain:case F.Base:{let{getEvmToolbox:_}=await import("@swapkit/toolboxes/evm"),O=await l({chain:L,derivationPath:m}),y=await I({chain:L,ledgerClient:O});return{...await _(L,{signer:O}),address:y}}case F.Cosmos:{let{createSigningStargateClient:_,getMsgSendDenom:O,getCosmosToolbox:y}=await import("@swapkit/toolboxes/cosmos"),T=await y(F.Cosmos),B=await l({chain:L,derivationPath:m}),X=await I({chain:L,ledgerClient:B});return{...T,address:X,transfer:async({assetValue:R,recipient:$,memo:M})=>{if(!R)throw new E("wallet_ledger_invalid_asset");let Y={amount:[{amount:R.getBaseValue("string"),denom:O(`u${R.symbol}`).toLowerCase()}],fromAddress:X,toAddress:$},C=await _(y0.get("rpcUrls")[L],B,"0.007uatom"),{transactionHash:D}=await C.signAndBroadcast(X,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:Y}],2,M);return D}}}case F.THORChain:{let{SignMode:_}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:O}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),{encodePubkey:y,makeAuthInfoBytes:T}=(await import("@cosmjs/proto-signing")).default,{createStargateClient:B,buildEncodedTxBody:X,getCosmosToolbox:G,buildAminoMsg:R,getDefaultChainFee:$,fromBase64:M,parseAminoMessageForDirectSigning:Y}=await import("@swapkit/toolboxes/cosmos"),C=await G(L),D=await l({chain:L,derivationPath:m}),U=await I({chain:L,ledgerClient:D}),A=$(L),{pubkey:c,signTransaction:E0,sign:k0}=D,O0=async({memo:P="",assetValue:T0,...b0})=>{let X0=await C.getAccount(U);if(!X0)throw new E("wallet_ledger_invalid_account");if(!T0)throw new E("wallet_ledger_invalid_asset");if(!c)throw new E("wallet_ledger_pubkey_not_found");let{accountNumber:x0,sequence:g0}=X0,i=(g0||0).toString(),B0=d([R({sender:U,assetValue:T0,memo:P,...b0})]),c0=AL({account_number:x0?.toString(),chain_id:DL.THORChain,fee:A,memo:P,msgs:B0,sequence:i}),t=await E0(c0,i);if(!t)throw new E("wallet_ledger_signing_error");let v0=y({type:"tendermint/PubKeySecp256k1",value:c}),h0=B0.map(Y),u0=await X({msgs:h0,chain:L,memo:P}),d0=T([{pubkey:v0,sequence:Number(i)}],A.amount,Number.parseInt(A.gas),void 0,void 0,_.SIGN_MODE_LEGACY_AMINO_JSON),i0=t?.[0]?.signature?M(t[0].signature):Uint8Array.from([]),t0=O.fromPartial({bodyBytes:u0,authInfoBytes:d0,signatures:[i0]}),n0=O.encode(t0).finish(),{isStagenet:o0}=y0.get("envs"),p0=await B(y0.get("rpcUrls")[o0?zL.THORChain:F.THORChain]),{transactionHash:a0}=await p0.broadcastTx(n0);return a0};return{...C,address:U,deposit:(P)=>O0(P),transfer:(P)=>O0(P),signMessage:k0}}case F.Near:{let{getNearToolbox:_}=await import("@swapkit/toolboxes/near"),O=await l({chain:L,derivationPath:m}),y=await O.getAddress();return{...await _({signer:O}),address:y}}case F.Ripple:{let{getRippleToolbox:_}=await import("@swapkit/toolboxes/ripple"),O=await l({chain:L,derivationPath:m}),y=O.address;return{...await _({signer:O}),address:y}}default:throw new E("wallet_ledger_chain_not_supported",{chain:L})}}export{PL as ledgerWallet,bm as LEDGER_SUPPORTED_CHAINS};
3
3
 
4
4
  //# debugId=8F9CDAA84455D4C164756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as f}from"../../chunk-zfnkndsr.js";import{C as d,D as m}from"../../chunk-qwd1kp32.js";import{Chain as r,WalletOption as P,createWallet as A,filterSupportedChains as O}from"@swapkit/helpers";import{Chain as t,ChainId as x,SKConfig as h,SwapKitError as l,prepareNetworkSwitch as _,switchEVMWalletNetwork as C}from"@swapkit/helpers";import{Psbt as b}from"bitcoinjs-lib";var y=()=>async({from:a,recipient:o,amount:e,asset:s,memo:n})=>{if(!(window.okxwallet&&("keplr"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:t.Cosmos});let{createSigningStargateClient:w}=await import("@swapkit/toolboxes/cosmos"),{keplr:i}=window.okxwallet,c=i?.getOfflineSignerOnlyAmino(x.Cosmos),p=await w(h.get("rpcUrls").GAIA,c),g=[{denom:s?.symbol==="MUON"?"umuon":"uatom",amount:e.amount().toString()}],{transactionHash:k}=await p.sendTokens(a,o,g,1.6,n);return k};async function S({walletProvider:a,chain:o}){let{getEvmToolbox:e}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:s}=await import("ethers");if(!a)throw new l("wallet_okx_not_found");let n=new s(a,"any"),w=await n.getSigner(),i=await e(o,{provider:n,signer:w});try{if(o!==t.Ethereum&&"getNetworkParams"in i)await C(n,o,i.getNetworkParams())}catch(c){throw new l("wallet_okx_failed_to_switch_network",{chain:o})}return _({toolbox:i,provider:n,chain:o})}async function u(a){switch(a){case t.Ethereum:case t.Base:case t.Avalanche:case t.Arbitrum:case t.Optimism:case t.Polygon:case t.BinanceSmartChain:{if(!(window.okxwallet&&("send"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:a});let o=await S({chain:a,walletProvider:window.okxwallet}),e=(await window.okxwallet.send("eth_requestAccounts",[])).result[0];return{...o,address:e}}case t.Bitcoin:{if(!(window.okxwallet&&("bitcoin"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:t.Bitcoin});let{getUtxoToolbox:o}=await import("@swapkit/toolboxes/utxo"),{bitcoin:e}=window.okxwallet,s=(await e.connect()).address;return{...await o(a,{signer:{signTransaction:async(i)=>{let c=await e.signPsbt(i.toHex(),{from:s,type:"list"});return b.fromHex(c)},getAddress:async()=>Promise.resolve(s)}}),address:s}}case t.Cosmos:{if(!(window.okxwallet&&("keplr"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:t.Cosmos});let{keplr:o}=window.okxwallet;await o.enable(x.Cosmos);let e=await o.getOfflineSignerOnlyAmino(x.Cosmos).getAccounts();if(!e?.[0])throw new l("wallet_okx_no_accounts",{chain:t.Cosmos});let{getCosmosToolbox:s}=await import("@swapkit/toolboxes/cosmos"),[{address:n}]=e;return{...s(t.Cosmos),address:n,transfer:y()}}case t.Near:{if(!(window.okxwallet&&("near"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:t.Near});let{createNearSignerFromProvider:o}=await import("../../chunk-dcj9twam.js"),{getNearToolbox:e}=await import("@swapkit/toolboxes/near"),s=window.okxwallet.near,n=await o(s,"OKX"),w=await n.getAddress();return{...await e({signer:n}),address:w}}default:throw new l("wallet_okx_chain_not_supported",{chain:a})}}var v=A({name:"connectOkx",walletType:P.OKX,supportedChains:[r.Arbitrum,r.Avalanche,r.Base,r.BinanceSmartChain,r.Bitcoin,r.Cosmos,r.Ethereum,r.Near,r.Optimism,r.Polygon],connect:({addChain:a,supportedChains:o,walletType:e})=>async function s(n){let w=O({chains:n,supportedChains:o,walletType:e});return await Promise.all(w.map(async(i)=>{let c=await u(i),p=await c.getAddress()||"";a({...c,address:p,chain:i,walletType:e})})),!0}}),I=f(v);export{v as okxWallet,I as OKX_SUPPORTED_CHAINS};
1
+ import{A as f}from"../../chunk-th8ggrmx.js";import{C as d,D as m}from"../../chunk-qwd1kp32.js";import{Chain as r,WalletOption as P,createWallet as A,filterSupportedChains as O}from"@swapkit/helpers";import{Chain as t,ChainId as x,SKConfig as h,SwapKitError as l,prepareNetworkSwitch as _,switchEVMWalletNetwork as C}from"@swapkit/helpers";import{Psbt as b}from"bitcoinjs-lib";var y=()=>async({from:a,recipient:o,amount:e,asset:s,memo:n})=>{if(!(window.okxwallet&&("keplr"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:t.Cosmos});let{createSigningStargateClient:w}=await import("@swapkit/toolboxes/cosmos"),{keplr:i}=window.okxwallet,c=i?.getOfflineSignerOnlyAmino(x.Cosmos),p=await w(h.get("rpcUrls").GAIA,c),g=[{denom:s?.symbol==="MUON"?"umuon":"uatom",amount:e.amount().toString()}],{transactionHash:k}=await p.sendTokens(a,o,g,1.6,n);return k};async function S({walletProvider:a,chain:o}){let{getEvmToolbox:e}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:s}=await import("ethers");if(!a)throw new l("wallet_okx_not_found");let n=new s(a,"any"),w=await n.getSigner(),i=await e(o,{provider:n,signer:w});try{if(o!==t.Ethereum&&"getNetworkParams"in i)await C(n,o,i.getNetworkParams())}catch(c){throw new l("wallet_okx_failed_to_switch_network",{chain:o})}return _({toolbox:i,provider:n,chain:o})}async function u(a){switch(a){case t.Ethereum:case t.Base:case t.Avalanche:case t.Arbitrum:case t.Optimism:case t.Polygon:case t.BinanceSmartChain:{if(!(window.okxwallet&&("send"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:a});let o=await S({chain:a,walletProvider:window.okxwallet}),e=(await window.okxwallet.send("eth_requestAccounts",[])).result[0];return{...o,address:e}}case t.Bitcoin:{if(!(window.okxwallet&&("bitcoin"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:t.Bitcoin});let{getUtxoToolbox:o}=await import("@swapkit/toolboxes/utxo"),{bitcoin:e}=window.okxwallet,s=(await e.connect()).address;return{...await o(a,{signer:{signTransaction:async(i)=>{let c=await e.signPsbt(i.toHex(),{from:s,type:"list"});return b.fromHex(c)},getAddress:async()=>Promise.resolve(s)}}),address:s}}case t.Cosmos:{if(!(window.okxwallet&&("keplr"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:t.Cosmos});let{keplr:o}=window.okxwallet;await o.enable(x.Cosmos);let e=await o.getOfflineSignerOnlyAmino(x.Cosmos).getAccounts();if(!e?.[0])throw new l("wallet_okx_no_accounts",{chain:t.Cosmos});let{getCosmosToolbox:s}=await import("@swapkit/toolboxes/cosmos"),[{address:n}]=e;return{...s(t.Cosmos),address:n,transfer:y()}}case t.Near:{if(!(window.okxwallet&&("near"in window.okxwallet)))throw new l("wallet_okx_not_found",{chain:t.Near});let{createNearSignerFromProvider:o}=await import("../../chunk-dcj9twam.js"),{getNearToolbox:e}=await import("@swapkit/toolboxes/near"),s=window.okxwallet.near,n=await o(s,"OKX"),w=await n.getAddress();return{...await e({signer:n}),address:w}}default:throw new l("wallet_okx_chain_not_supported",{chain:a})}}var v=A({name:"connectOkx",walletType:P.OKX,supportedChains:[r.Arbitrum,r.Avalanche,r.Base,r.BinanceSmartChain,r.Bitcoin,r.Cosmos,r.Ethereum,r.Near,r.Optimism,r.Polygon],connect:({addChain:a,supportedChains:o,walletType:e})=>async function s(n){let w=O({chains:n,supportedChains:o,walletType:e});return await Promise.all(w.map(async(i)=>{let c=await u(i),p=await c.getAddress()||"";a({...c,address:p,chain:i,walletType:e})})),!0}}),I=f(v);export{v as okxWallet,I as OKX_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=69F3A40AF309F99764756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as k}from"../../chunk-zfnkndsr.js";import{C as p,D as m}from"../../chunk-qwd1kp32.js";import{Chain as e,SKConfig as b,SwapKitError as r,WalletOption as u,addEVMWalletNetwork as A,createWallet as S,filterSupportedChains as E,prepareNetworkSwitch as O}from"@swapkit/helpers";import{Psbt as x}from"bitcoinjs-lib";async function B(t){switch(t){case e.Bitcoin:{if(!window.$onekey?.btc)throw new r({errorKey:"wallet_onekey_not_found",info:{chain:t}});let{getUtxoToolbox:s}=await import("@swapkit/toolboxes/utxo"),{signTransaction:a,getAddress:w,AddressPurpose:o,BitcoinNetworkType:c}=await import("sats-connect"),n="",i=()=>new Promise((d)=>d(window.$onekey?.btc)),l={getProvider:i,payload:{purposes:[o.Payment],message:"Address for receiving and sending payments",network:{type:c.Mainnet}},onFinish:(d)=>{if(d.addresses[0]?.address)n=d.addresses[0].address},onCancel:()=>{throw new r("wallet_connection_rejected_by_user")}};await w(l);async function y(d){let _,h={getProvider:i,payload:{message:"Sign transaction",network:{type:c.Mainnet},psbtBase64:d.toBase64(),broadcast:!1,inputsToSign:[{address:n,signingIndexes:d.txInputs.map((f,P)=>P)}]},onFinish:(f)=>{_=x.fromBase64(f.psbtBase64)},onCancel:()=>{throw new r("wallet_connection_rejected_by_user")}};if(await a(h),!_)throw new r("wallet_onekey_sign_transaction_error");return _}return{...await s(t,{signer:{signTransaction:y,getAddress:()=>Promise.resolve(n)}}),address:n}}case e.Solana:{if(!window.$onekey?.sol)throw new r({errorKey:"wallet_onekey_not_found",info:{chain:t}});let{getSolanaToolbox:s}=await import("@swapkit/toolboxes/solana"),a=window.$onekey.sol,w=await a.getAddress();return{...s({signer:a}),address:w}}case e.Arbitrum:case e.Avalanche:case e.Base:case e.BinanceSmartChain:case e.Ethereum:case e.Optimism:case e.Polygon:{let{getProvider:s,getEvmToolbox:a}=await import("@swapkit/toolboxes/evm");if(!window.$onekey?.ethereum)throw new r({errorKey:"wallet_onekey_not_found",info:{chain:t}});let{BrowserProvider:w}=await import("ethers"),o=new w(window.$onekey.ethereum,"any"),c=b.get("rpcUrls")[t];await o.send("eth_requestAccounts",[]);let n=await s(t,c),i=await o.getSigner(),l=await i.getAddress(),y=await a(t,{provider:n,signer:i});try{if(t!==e.Ethereum){let g=y.getNetworkParams();await A(o,g)}}catch(g){throw new r({errorKey:"wallet_failed_to_add_or_switch_network",info:{chain:t,error:g}})}return{address:l,...O({toolbox:y,chain:t,provider:o})}}default:throw new r({errorKey:"wallet_chain_not_supported",info:{chain:t,wallet:u.ONEKEY}})}}var v=S({name:"connectOnekeyWallet",walletType:u.ONEKEY,supportedChains:[e.Arbitrum,e.Avalanche,e.Base,e.BinanceSmartChain,e.Bitcoin,e.Ethereum,e.Optimism,e.Polygon,e.Solana],connect:({addChain:t,walletType:s,supportedChains:a})=>async function w(o){if(!window.$onekey)throw new r({errorKey:"wallet_onekey_not_found",info:{wallet:u.ONEKEY}});let c=E({chains:o,supportedChains:a,walletType:s});return await Promise.all(c.map(async(n)=>{let i=await B(n),l=await i.getAddress()||"F";t({...i,chain:n,address:l,walletType:s})})),!0}}),W=k(v);export{v as onekeyWallet,W as ONEKEY_WALLET_SUPPORTED_CHAINS};
1
+ import{A as k}from"../../chunk-th8ggrmx.js";import{C as p,D as m}from"../../chunk-qwd1kp32.js";import{Chain as e,SKConfig as b,SwapKitError as r,WalletOption as u,addEVMWalletNetwork as A,createWallet as S,filterSupportedChains as E,prepareNetworkSwitch as O}from"@swapkit/helpers";import{Psbt as x}from"bitcoinjs-lib";async function B(t){switch(t){case e.Bitcoin:{if(!window.$onekey?.btc)throw new r({errorKey:"wallet_onekey_not_found",info:{chain:t}});let{getUtxoToolbox:s}=await import("@swapkit/toolboxes/utxo"),{signTransaction:a,getAddress:w,AddressPurpose:o,BitcoinNetworkType:c}=await import("sats-connect"),n="",i=()=>new Promise((d)=>d(window.$onekey?.btc)),l={getProvider:i,payload:{purposes:[o.Payment],message:"Address for receiving and sending payments",network:{type:c.Mainnet}},onFinish:(d)=>{if(d.addresses[0]?.address)n=d.addresses[0].address},onCancel:()=>{throw new r("wallet_connection_rejected_by_user")}};await w(l);async function y(d){let _,h={getProvider:i,payload:{message:"Sign transaction",network:{type:c.Mainnet},psbtBase64:d.toBase64(),broadcast:!1,inputsToSign:[{address:n,signingIndexes:d.txInputs.map((f,P)=>P)}]},onFinish:(f)=>{_=x.fromBase64(f.psbtBase64)},onCancel:()=>{throw new r("wallet_connection_rejected_by_user")}};if(await a(h),!_)throw new r("wallet_onekey_sign_transaction_error");return _}return{...await s(t,{signer:{signTransaction:y,getAddress:()=>Promise.resolve(n)}}),address:n}}case e.Solana:{if(!window.$onekey?.sol)throw new r({errorKey:"wallet_onekey_not_found",info:{chain:t}});let{getSolanaToolbox:s}=await import("@swapkit/toolboxes/solana"),a=window.$onekey.sol,w=await a.getAddress();return{...s({signer:a}),address:w}}case e.Arbitrum:case e.Avalanche:case e.Base:case e.BinanceSmartChain:case e.Ethereum:case e.Optimism:case e.Polygon:{let{getProvider:s,getEvmToolbox:a}=await import("@swapkit/toolboxes/evm");if(!window.$onekey?.ethereum)throw new r({errorKey:"wallet_onekey_not_found",info:{chain:t}});let{BrowserProvider:w}=await import("ethers"),o=new w(window.$onekey.ethereum,"any"),c=b.get("rpcUrls")[t];await o.send("eth_requestAccounts",[]);let n=await s(t,c),i=await o.getSigner(),l=await i.getAddress(),y=await a(t,{provider:n,signer:i});try{if(t!==e.Ethereum){let g=y.getNetworkParams();await A(o,g)}}catch(g){throw new r({errorKey:"wallet_failed_to_add_or_switch_network",info:{chain:t,error:g}})}return{address:l,...O({toolbox:y,chain:t,provider:o})}}default:throw new r({errorKey:"wallet_chain_not_supported",info:{chain:t,wallet:u.ONEKEY}})}}var v=S({name:"connectOnekeyWallet",walletType:u.ONEKEY,supportedChains:[e.Arbitrum,e.Avalanche,e.Base,e.BinanceSmartChain,e.Bitcoin,e.Ethereum,e.Optimism,e.Polygon,e.Solana],connect:({addChain:t,walletType:s,supportedChains:a})=>async function w(o){if(!window.$onekey)throw new r({errorKey:"wallet_onekey_not_found",info:{wallet:u.ONEKEY}});let c=E({chains:o,supportedChains:a,walletType:s});return await Promise.all(c.map(async(n)=>{let i=await B(n),l=await i.getAddress()||"F";t({...i,chain:n,address:l,walletType:s})})),!0}}),W=k(v);export{v as onekeyWallet,W as ONEKEY_WALLET_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=2026F5D7AFC8DB0C64756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as f}from"../../chunk-zfnkndsr.js";import{C as l,D as d}from"../../chunk-qwd1kp32.js";import{Chain as i,SwapKitError as r,WalletOption as _,createWallet as S,filterSupportedChains as C}from"@swapkit/helpers";var A=S({name:"connectPhantom",walletType:_.PHANTOM,supportedChains:[i.Bitcoin,i.Ethereum,i.Solana],connect:({addChain:s,supportedChains:c,walletType:o})=>async function n(e){let a=C({chains:e,supportedChains:c,walletType:o});try{return await Promise.all(a.map(async(t)=>{let{address:h,...w}=await v(t);s({...w,chain:t,address:h,walletType:o})})),!0}catch(t){if(t instanceof r)throw t;throw new r("wallet_connection_rejected_by_user",t)}}}),N=f(A);async function v(s){let c=window?.phantom;switch(s){case i.Bitcoin:{let o=c?.bitcoin;if(!o?.isPhantom)throw new r("wallet_phantom_not_found");let{getUtxoToolbox:n}=await import("@swapkit/toolboxes/utxo"),[{address:e}]=await o.requestAccounts();return{...await n(s),address:e}}case i.Ethereum:{let{getEvmToolbox:o}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:n}=await import("ethers"),e=new n(c?.ethereum,"any"),[a]=await e.send("eth_requestAccounts",[]),t=await e.getSigner();return{...await o(s,{signer:t,provider:e}),address:a}}case i.Solana:{let{getSolanaToolbox:o}=await import("@swapkit/toolboxes/solana"),n=c?.solana;if(!n?.isPhantom)throw new r("wallet_phantom_not_found");let a=(await n.connect()).publicKey.toString(),t=await o();return{...t,transfer:async({recipient:w,assetValue:P,isProgramDerivedAddress:m})=>{let{PublicKey:b}=await import("@solana/web3.js"),y=await t.getAddressValidator();if(!(m||y(w)))throw new r("core_transaction_invalid_recipient_address");let g=new b(a),u=await t.getConnection(),p=await t.createTransaction({recipient:w,assetValue:P,sender:a,isProgramDerivedAddress:m});if(!p)throw new r("core_transaction_invalid_sender_address");let T=await u.getLatestBlockhash();p.recentBlockhash=T.blockhash,p.feePayer=g;let x=await n.signTransaction(p);return await u.sendRawTransaction(x.serialize())},address:a}}default:throw new r("wallet_chain_not_supported",{wallet:_.PHANTOM,chain:s})}}export{A as phantomWallet,N as PHANTOM_SUPPORTED_CHAINS};
1
+ import{A as f}from"../../chunk-th8ggrmx.js";import{C as l,D as d}from"../../chunk-qwd1kp32.js";import{Chain as i,SwapKitError as r,WalletOption as _,createWallet as S,filterSupportedChains as C}from"@swapkit/helpers";var A=S({name:"connectPhantom",walletType:_.PHANTOM,supportedChains:[i.Bitcoin,i.Ethereum,i.Solana],connect:({addChain:s,supportedChains:c,walletType:o})=>async function n(e){let a=C({chains:e,supportedChains:c,walletType:o});try{return await Promise.all(a.map(async(t)=>{let{address:h,...w}=await v(t);s({...w,chain:t,address:h,walletType:o})})),!0}catch(t){if(t instanceof r)throw t;throw new r("wallet_connection_rejected_by_user",t)}}}),N=f(A);async function v(s){let c=window?.phantom;switch(s){case i.Bitcoin:{let o=c?.bitcoin;if(!o?.isPhantom)throw new r("wallet_phantom_not_found");let{getUtxoToolbox:n}=await import("@swapkit/toolboxes/utxo"),[{address:e}]=await o.requestAccounts();return{...await n(s),address:e}}case i.Ethereum:{let{getEvmToolbox:o}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:n}=await import("ethers"),e=new n(c?.ethereum,"any"),[a]=await e.send("eth_requestAccounts",[]),t=await e.getSigner();return{...await o(s,{signer:t,provider:e}),address:a}}case i.Solana:{let{getSolanaToolbox:o}=await import("@swapkit/toolboxes/solana"),n=c?.solana;if(!n?.isPhantom)throw new r("wallet_phantom_not_found");let a=(await n.connect()).publicKey.toString(),t=await o();return{...t,transfer:async({recipient:w,assetValue:P,isProgramDerivedAddress:m})=>{let{PublicKey:b}=await import("@solana/web3.js"),y=await t.getAddressValidator();if(!(m||y(w)))throw new r("core_transaction_invalid_recipient_address");let g=new b(a),u=await t.getConnection(),p=await t.createTransaction({recipient:w,assetValue:P,sender:a,isProgramDerivedAddress:m});if(!p)throw new r("core_transaction_invalid_sender_address");let T=await u.getLatestBlockhash();p.recentBlockhash=T.blockhash,p.feePayer=g;let x=await n.signTransaction(p);return await u.sendRawTransaction(x.serialize())},address:a}}default:throw new r("wallet_chain_not_supported",{wallet:_.PHANTOM,chain:s})}}export{A as phantomWallet,N as PHANTOM_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=C71056FDDB2C42A464756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as c}from"../../chunk-zfnkndsr.js";import{C as u,D as f}from"../../chunk-qwd1kp32.js";import{Chain as i,SwapKitError as l,WalletOption as d,createWallet as _,filterSupportedChains as P}from"@swapkit/helpers";var h=_({name:"connectPolkadotJs",walletType:d.POLKADOT_JS,supportedChains:[i.Polkadot],connect:({addChain:t,supportedChains:s,walletType:r})=>async function a(n){let e=P({chains:n,supportedChains:s,walletType:r});return await Promise.all(e.map(async(o)=>{let{address:w,...p}=await m(o);t({...p,chain:o,address:w,walletType:r})})),!0}}),g=c(h);async function m(t){switch(t){case i.Polkadot:{let{getSubstrateToolbox:s}=await import("@swapkit/toolboxes/substrate"),a=await window?.injectedWeb3?.["polkadot-js"]?.enable?.("polkadot-js");if(!a)throw new l({errorKey:"wallet_polkadot_not_found",info:{chain:t}});let n=await s(t,{signer:a.signer}),[e]=await a.accounts.get();if(!e?.address)throw new l({errorKey:"wallet_missing_params",info:{wallet:d.POLKADOT_JS,address:e?.address}});let o=n.convertAddress(e.address,0);return{...n,getAddress:()=>o,address:o}}default:throw new l({errorKey:"wallet_chain_not_supported",info:{chain:t,wallet:d.POLKADOT_JS}})}}export{h as polkadotWallet,g as POLKADOT_SUPPORTED_CHAINS};
1
+ import{A as c}from"../../chunk-th8ggrmx.js";import{C as u,D as f}from"../../chunk-qwd1kp32.js";import{Chain as i,SwapKitError as l,WalletOption as d,createWallet as _,filterSupportedChains as P}from"@swapkit/helpers";var h=_({name:"connectPolkadotJs",walletType:d.POLKADOT_JS,supportedChains:[i.Polkadot],connect:({addChain:t,supportedChains:s,walletType:r})=>async function a(n){let e=P({chains:n,supportedChains:s,walletType:r});return await Promise.all(e.map(async(o)=>{let{address:w,...p}=await m(o);t({...p,chain:o,address:w,walletType:r})})),!0}}),g=c(h);async function m(t){switch(t){case i.Polkadot:{let{getSubstrateToolbox:s}=await import("@swapkit/toolboxes/substrate"),a=await window?.injectedWeb3?.["polkadot-js"]?.enable?.("polkadot-js");if(!a)throw new l({errorKey:"wallet_polkadot_not_found",info:{chain:t}});let n=await s(t,{signer:a.signer}),[e]=await a.accounts.get();if(!e?.address)throw new l({errorKey:"wallet_missing_params",info:{wallet:d.POLKADOT_JS,address:e?.address}});let o=n.convertAddress(e.address,0);return{...n,getAddress:()=>o,address:o}}default:throw new l({errorKey:"wallet_chain_not_supported",info:{chain:t,wallet:d.POLKADOT_JS}})}}export{h as polkadotWallet,g as POLKADOT_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=D085489261E39F3F64756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as I}from"../../chunk-zfnkndsr.js";import{C as _,D as $}from"../../chunk-qwd1kp32.js";import{AssetValue as S,Chain as T,SKConfig as Y,SwapKitError as X,WalletOption as x,createWallet as B,filterSupportedChains as C}from"@swapkit/helpers";var h=B({name:"connectRadixWallet",walletType:x.RADIX_WALLET,supportedChains:[T.Radix],connect:({addChain:L,supportedChains:K,walletType:H})=>async function V(M){let O=C({chains:M,supportedChains:K,walletType:H});if(!Y.get("integrations").radix)throw new X("wallet_radix_not_found");return await Promise.all(O.map(async(z)=>{let j=await E();L({...j,chain:z,walletType:H})})),!0}}),f=I(h);async function k(L){let{GatewayApiClient:K}=await import("@radixdlt/babylon-gateway-api-sdk"),{applicationName:H}=Y.get("integrations").radix,V=K.initialize({networkId:1,applicationName:H}),M=!0,O,U=[],z=await v(V);while(M){let j={address:L,limit_per_page:100,cursor:O,at_ledger_state:{state_version:z}},Q=await V.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:j});if(U=U.concat(Q.items),Q.next_cursor)O=Q.next_cursor;else M=!1}return U}async function v(L){return L.status.getCurrent().then((K)=>K.ledger_state.state_version)}async function D(L){let{GatewayApiClient:K}=await import("@radixdlt/babylon-gateway-api-sdk"),H=await k(L),{applicationName:V}=Y.get("integrations").radix,M=K.initialize({networkId:1,applicationName:V}),O=[],U=50,z=[];for(let j=0;j<H.length;j+=50)z.push(H.slice(j,j+50));for(let j of z){let Q=j.map((J)=>J.resource_address),Z=await M.state.getEntityDetailsVaultAggregated(Q),q=new Map;for(let J of Z)if(J.details!==void 0){let W=J.metadata?.items.find((N)=>N.key==="symbol"),G=W?.value.typed.type==="String"?W.value.typed.value:"?";if(J.details.type==="FungibleResource")q.set(J.address,{decimals:J.details.divisibility,symbol:G})}for(let J of j)if(J.aggregation_level==="Global"){let W=q.get(J.resource_address)||{decimals:0,symbol:"?"},G=S.from({asset:W.symbol!==T.Radix?`${T.Radix}.${W.symbol}-${J.resource_address}`:"XRD.XRD",value:J.amount});O.push(G)}}return O}async function E(){let{RadixDappToolkit:L}=await import("@radixdlt/radix-dapp-toolkit"),K=Y.get("integrations").radix,H=L({...K,networkId:K.network.networkId});function V(z){return new Promise((j)=>setTimeout(j,z))}await V(400);function M(){return H.walletApi.getWalletData()?.accounts?.[0]?.address}let O=async()=>{let{DataRequestBuilder:z}=await import("@radixdlt/radix-dapp-toolkit");H.walletApi.setRequestData(z.accounts().exactly(1));let j=await H.walletApi.sendRequest();if(!j)throw new X("wallet_radix_no_account");let Q=j.unwrapOr(null)?.accounts[0]?.address;if(!Q)throw new X("wallet_radix_no_account");return Q},U=M()||await O();return{radixDappToolkit:H,address:U,getAddress:M,getBalance:()=>D(U),transfer:(z)=>{throw new X("wallet_radix_method_not_supported",{method:"transfer"})},signAndBroadcast:async({manifest:z,message:j})=>{let Z=(await H.walletApi.sendTransaction({transactionManifest:z,message:j})).unwrapOr(null)?.transactionIntentHash;if(!Z)throw new X("wallet_radix_transaction_failed");return Z}}}export{h as radixWallet,f as RADIX_SUPPORTED_CHAINS};
1
+ import{A as I}from"../../chunk-th8ggrmx.js";import{C as _,D as $}from"../../chunk-qwd1kp32.js";import{AssetValue as S,Chain as T,SKConfig as Y,SwapKitError as X,WalletOption as x,createWallet as B,filterSupportedChains as C}from"@swapkit/helpers";var h=B({name:"connectRadixWallet",walletType:x.RADIX_WALLET,supportedChains:[T.Radix],connect:({addChain:L,supportedChains:K,walletType:H})=>async function V(M){let O=C({chains:M,supportedChains:K,walletType:H});if(!Y.get("integrations").radix)throw new X("wallet_radix_not_found");return await Promise.all(O.map(async(z)=>{let j=await E();L({...j,chain:z,walletType:H})})),!0}}),f=I(h);async function k(L){let{GatewayApiClient:K}=await import("@radixdlt/babylon-gateway-api-sdk"),{applicationName:H}=Y.get("integrations").radix,V=K.initialize({networkId:1,applicationName:H}),M=!0,O,U=[],z=await v(V);while(M){let j={address:L,limit_per_page:100,cursor:O,at_ledger_state:{state_version:z}},Q=await V.state.innerClient.entityFungiblesPage({stateEntityFungiblesPageRequest:j});if(U=U.concat(Q.items),Q.next_cursor)O=Q.next_cursor;else M=!1}return U}async function v(L){return L.status.getCurrent().then((K)=>K.ledger_state.state_version)}async function D(L){let{GatewayApiClient:K}=await import("@radixdlt/babylon-gateway-api-sdk"),H=await k(L),{applicationName:V}=Y.get("integrations").radix,M=K.initialize({networkId:1,applicationName:V}),O=[],U=50,z=[];for(let j=0;j<H.length;j+=50)z.push(H.slice(j,j+50));for(let j of z){let Q=j.map((J)=>J.resource_address),Z=await M.state.getEntityDetailsVaultAggregated(Q),q=new Map;for(let J of Z)if(J.details!==void 0){let W=J.metadata?.items.find((N)=>N.key==="symbol"),G=W?.value.typed.type==="String"?W.value.typed.value:"?";if(J.details.type==="FungibleResource")q.set(J.address,{decimals:J.details.divisibility,symbol:G})}for(let J of j)if(J.aggregation_level==="Global"){let W=q.get(J.resource_address)||{decimals:0,symbol:"?"},G=S.from({asset:W.symbol!==T.Radix?`${T.Radix}.${W.symbol}-${J.resource_address}`:"XRD.XRD",value:J.amount});O.push(G)}}return O}async function E(){let{RadixDappToolkit:L}=await import("@radixdlt/radix-dapp-toolkit"),K=Y.get("integrations").radix,H=L({...K,networkId:K.network.networkId});function V(z){return new Promise((j)=>setTimeout(j,z))}await V(400);function M(){return H.walletApi.getWalletData()?.accounts?.[0]?.address}let O=async()=>{let{DataRequestBuilder:z}=await import("@radixdlt/radix-dapp-toolkit");H.walletApi.setRequestData(z.accounts().exactly(1));let j=await H.walletApi.sendRequest();if(!j)throw new X("wallet_radix_no_account");let Q=j.unwrapOr(null)?.accounts[0]?.address;if(!Q)throw new X("wallet_radix_no_account");return Q},U=M()||await O();return{radixDappToolkit:H,address:U,getAddress:M,getBalance:()=>D(U),transfer:(z)=>{throw new X("wallet_radix_method_not_supported",{method:"transfer"})},signAndBroadcast:async({manifest:z,message:j})=>{let Z=(await H.walletApi.sendTransaction({transactionManifest:z,message:j})).unwrapOr(null)?.transactionIntentHash;if(!Z)throw new X("wallet_radix_transaction_failed");return Z}}}export{h as radixWallet,f as RADIX_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=DED8821778BCF99864756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as p}from"../../chunk-zfnkndsr.js";import{C as d,D as m}from"../../chunk-qwd1kp32.js";import{Chain as t,SwapKitError as s,WalletOption as l,createWallet as h,filterSupportedChains as f,prepareNetworkSwitch as u,switchEVMWalletNetwork as _}from"@swapkit/helpers";var A=h({name:"connectTalisman",walletType:l.TALISMAN,supportedChains:[t.Ethereum,t.Arbitrum,t.Avalanche,t.Base,t.Polygon,t.BinanceSmartChain,t.Optimism,t.Polkadot,t.Chainflip],connect:({addChain:e,supportedChains:a,walletType:r})=>async function c(o){let i=f({chains:o,supportedChains:a,walletType:r});return await Promise.all(i.map(async(n)=>{let w=await S(n);e({...w,chain:n,walletType:r})})),!0}}),C=p(A);async function E({walletProvider:e,chain:a}){let{getEvmToolbox:r}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:c}=await import("ethers");if(!e)throw new s({errorKey:"wallet_provider_not_found",info:{wallet:l.TALISMAN,chain:a}});let o=new c(e,"any"),i=await o.getSigner(),n=await r(a,{provider:o,signer:i});try{if(a!==t.Ethereum)await _(o,a,n.getNetworkParams())}catch(w){throw new s({errorKey:"wallet_failed_to_add_or_switch_network",info:{wallet:l.TALISMAN,chain:a}})}return u({toolbox:n,chain:a,provider:o})}async function S(e){switch(e){case t.Ethereum:case t.Arbitrum:case t.Optimism:case t.Polygon:case t.Avalanche:case t.BinanceSmartChain:case t.Base:{if(!(window.talismanEth&&("send"in window.talismanEth)))throw new s({errorKey:"wallet_talisman_not_found",info:{chain:e}});let a=await E({chain:e,walletProvider:window.talismanEth}),r=(await window.talismanEth.send("eth_requestAccounts",[]))[0];return{...a,address:r}}case t.Polkadot:case t.Chainflip:{let{getSubstrateToolbox:a,SubstrateNetwork:r}=await import("@swapkit/toolboxes/substrate"),o=await window?.injectedWeb3?.talisman?.enable?.("talisman");if(!o)throw new s({errorKey:"wallet_talisman_not_enabled",info:{chain:e}});let i=await a(e,{signer:o.signer}),n=await o.accounts.get();if(!n[0]?.address)throw new s({errorKey:"wallet_missing_params",info:{wallet:l.TALISMAN,accounts:n,address:n[0]?.address}});let w=i.convertAddress(n[0].address,r[e].prefix);return{...i,address:w}}default:throw new s({errorKey:"wallet_chain_not_supported",info:{chain:e,wallet:l.TALISMAN}})}}export{A as talismanWallet,C as TALISMAN_SUPPORTED_CHAINS};
1
+ import{A as p}from"../../chunk-th8ggrmx.js";import{C as d,D as m}from"../../chunk-qwd1kp32.js";import{Chain as t,SwapKitError as s,WalletOption as l,createWallet as h,filterSupportedChains as f,prepareNetworkSwitch as u,switchEVMWalletNetwork as _}from"@swapkit/helpers";var A=h({name:"connectTalisman",walletType:l.TALISMAN,supportedChains:[t.Ethereum,t.Arbitrum,t.Avalanche,t.Base,t.Polygon,t.BinanceSmartChain,t.Optimism,t.Polkadot,t.Chainflip],connect:({addChain:e,supportedChains:a,walletType:r})=>async function c(o){let i=f({chains:o,supportedChains:a,walletType:r});return await Promise.all(i.map(async(n)=>{let w=await S(n);e({...w,chain:n,walletType:r})})),!0}}),C=p(A);async function E({walletProvider:e,chain:a}){let{getEvmToolbox:r}=await import("@swapkit/toolboxes/evm"),{BrowserProvider:c}=await import("ethers");if(!e)throw new s({errorKey:"wallet_provider_not_found",info:{wallet:l.TALISMAN,chain:a}});let o=new c(e,"any"),i=await o.getSigner(),n=await r(a,{provider:o,signer:i});try{if(a!==t.Ethereum)await _(o,a,n.getNetworkParams())}catch(w){throw new s({errorKey:"wallet_failed_to_add_or_switch_network",info:{wallet:l.TALISMAN,chain:a}})}return u({toolbox:n,chain:a,provider:o})}async function S(e){switch(e){case t.Ethereum:case t.Arbitrum:case t.Optimism:case t.Polygon:case t.Avalanche:case t.BinanceSmartChain:case t.Base:{if(!(window.talismanEth&&("send"in window.talismanEth)))throw new s({errorKey:"wallet_talisman_not_found",info:{chain:e}});let a=await E({chain:e,walletProvider:window.talismanEth}),r=(await window.talismanEth.send("eth_requestAccounts",[]))[0];return{...a,address:r}}case t.Polkadot:case t.Chainflip:{let{getSubstrateToolbox:a,SubstrateNetwork:r}=await import("@swapkit/toolboxes/substrate"),o=await window?.injectedWeb3?.talisman?.enable?.("talisman");if(!o)throw new s({errorKey:"wallet_talisman_not_enabled",info:{chain:e}});let i=await a(e,{signer:o.signer}),n=await o.accounts.get();if(!n[0]?.address)throw new s({errorKey:"wallet_missing_params",info:{wallet:l.TALISMAN,accounts:n,address:n[0]?.address}});let w=i.convertAddress(n[0].address,r[e].prefix);return{...i,address:w}}default:throw new s({errorKey:"wallet_chain_not_supported",info:{chain:e,wallet:l.TALISMAN}})}}export{A as talismanWallet,C as TALISMAN_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=2830057D8BC39BEB64756E2164756E21
@@ -1,3 +1,3 @@
1
- import{A as f}from"../../chunk-zfnkndsr.js";import{C as N,D as V}from"../../chunk-qwd1kp32.js";import{Chain as j,FeeOption as E,SKConfig as S,SwapKitError as M,WalletOption as K,createWallet as y,derivationPathToString as P,filterSupportedChains as b}from"@swapkit/helpers";function w(q){switch(q[0]){case 84:return{input:"SPENDWITNESS",output:"PAYTOWITNESS"};case 49:return{input:"SPENDP2SHWITNESS",output:"PAYTOP2SHWITNESS"};case 44:return{input:"SPENDADDRESS",output:"PAYTOADDRESS"};default:return null}}async function g({chain:q,derivationPath:X}){switch(q){case j.BinanceSmartChain:case j.Avalanche:case j.Arbitrum:case j.Optimism:case j.Polygon:case j.Base:case j.Ethereum:{let{getProvider:H,getEvmToolbox:Y}=await import("@swapkit/toolboxes/evm"),{getEVMSigner:Z}=await import("../../chunk-0qaxr89s.js"),$=await H(q),J=await Z({chain:q,derivationPath:X,provider:$}),D=await J.getAddress();return{...await Y(q,{provider:$,signer:J}),address:D}}case j.Bitcoin:case j.BitcoinCash:case j.Dash:case j.Dogecoin:case j.Litecoin:{let{toCashAddress:H,getUtxoToolbox:Y}=await import("@swapkit/toolboxes/utxo"),Z=w(X);if(!Z)throw new M({errorKey:"wallet_trezor_derivation_path_not_supported",info:{derivationPath:X}});let $=q.toLowerCase(),D=await(async(G=X)=>{let F=(await import("@trezor/connect-web")).default,{success:_,payload:I}=await F.getAddress({path:P(G),coin:$});if(!_)throw new M({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:q,error:I.error||"Unknown error"}});if(q===j.BitcoinCash)return(await Y(q)).stripPrefix(I.address);return I.address})(),k=async(G,F,_="")=>{let I=(await import("@trezor/connect-web")).default,A=X.map((B,Q)=>Q<3?(B|2147483648)>>>0:B),L=await Y(q),R=await I.signTransaction({coin:$,inputs:F.map(({hash:B,index:Q,value:U})=>({address_n:A,prev_hash:B,prev_index:Q,amount:U,script_type:Z.input})),outputs:G.txOutputs.map((B)=>{let Q=q===j.BitcoinCash&&B.address?L.stripPrefix(H(B.address)):B.address,U=Q===D;if(!B.address)return{amount:"0",op_return_data:Buffer.from(_).toString("hex"),script_type:"PAYTOOPRETURN"};return U?{amount:B.value,address_n:A,script_type:Z.output}:{amount:B.value,address:Q,script_type:"PAYTOADDRESS"}})});if(R.success)return R.payload.serializedTx;throw new M({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:q,error:R.payload.error}})},O=async({recipient:G,feeOptionKey:F,feeRate:_,memo:I,...A})=>{if(!(D&&G))throw new M({errorKey:"wallet_missing_params",info:{wallet:K.TREZOR,memo:I,address:D,recipient:G}});let L=await Y(q),R=_||(await L.getFeeRates())[F||E.Fast],B=q===j.BitcoinCash?L.buildTx:L.createTransaction,{psbt:Q,inputs:U}=await B({...A,memo:I,recipient:G,feeRate:R,sender:D,fetchTxHex:!0}),z=await k(Q,U,I);return await L.broadcastTx(z)};return{...await Y(q),address:D,transfer:O,signTransaction:k}}default:throw new M({errorKey:"wallet_chain_not_supported",info:{chain:q,wallet:K.TREZOR}})}}var v=y({name:"connectTrezor",walletType:K.TREZOR,supportedChains:[j.Arbitrum,j.Avalanche,j.Base,j.BinanceSmartChain,j.Bitcoin,j.BitcoinCash,j.Dash,j.Dogecoin,j.Ethereum,j.Litecoin,j.Optimism,j.Polygon],connect:({addChain:q,supportedChains:X,walletType:H})=>async function Y(Z,$){let[J]=b({chains:Z,supportedChains:X,walletType:H});if(!J)throw new M({errorKey:"wallet_chain_not_supported",info:{chain:J,wallet:K.TREZOR}});let D=(await import("@trezor/connect-web")).default,{success:k}=await D.getDeviceState();if(!k){let W=S.get("integrations").trezor,G=W?{...W,appName:W.appName||"SwapKit"}:{appUrl:"",email:"",appName:"SwapKit"};D.init({lazyLoad:!0,manifest:G})}let O=await g({chain:J,derivationPath:$});return q({...O,chain:J,walletType:H}),!0}}),C=f(v);export{v as trezorWallet,C as TREZOR_SUPPORTED_CHAINS};
1
+ import{A as f}from"../../chunk-th8ggrmx.js";import{C as N,D as V}from"../../chunk-qwd1kp32.js";import{Chain as j,FeeOption as E,SKConfig as S,SwapKitError as M,WalletOption as K,createWallet as y,derivationPathToString as P,filterSupportedChains as b}from"@swapkit/helpers";function w(q){switch(q[0]){case 84:return{input:"SPENDWITNESS",output:"PAYTOWITNESS"};case 49:return{input:"SPENDP2SHWITNESS",output:"PAYTOP2SHWITNESS"};case 44:return{input:"SPENDADDRESS",output:"PAYTOADDRESS"};default:return null}}async function g({chain:q,derivationPath:X}){switch(q){case j.BinanceSmartChain:case j.Avalanche:case j.Arbitrum:case j.Optimism:case j.Polygon:case j.Base:case j.Ethereum:{let{getProvider:H,getEvmToolbox:Y}=await import("@swapkit/toolboxes/evm"),{getEVMSigner:Z}=await import("../../chunk-0qaxr89s.js"),$=await H(q),J=await Z({chain:q,derivationPath:X,provider:$}),D=await J.getAddress();return{...await Y(q,{provider:$,signer:J}),address:D}}case j.Bitcoin:case j.BitcoinCash:case j.Dash:case j.Dogecoin:case j.Litecoin:{let{toCashAddress:H,getUtxoToolbox:Y}=await import("@swapkit/toolboxes/utxo"),Z=w(X);if(!Z)throw new M({errorKey:"wallet_trezor_derivation_path_not_supported",info:{derivationPath:X}});let $=q.toLowerCase(),D=await(async(G=X)=>{let F=(await import("@trezor/connect-web")).default,{success:_,payload:I}=await F.getAddress({path:P(G),coin:$});if(!_)throw new M({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:q,error:I.error||"Unknown error"}});if(q===j.BitcoinCash)return(await Y(q)).stripPrefix(I.address);return I.address})(),k=async(G,F,_="")=>{let I=(await import("@trezor/connect-web")).default,A=X.map((B,Q)=>Q<3?(B|2147483648)>>>0:B),L=await Y(q),R=await I.signTransaction({coin:$,inputs:F.map(({hash:B,index:Q,value:U})=>({address_n:A,prev_hash:B,prev_index:Q,amount:U,script_type:Z.input})),outputs:G.txOutputs.map((B)=>{let Q=q===j.BitcoinCash&&B.address?L.stripPrefix(H(B.address)):B.address,U=Q===D;if(!B.address)return{amount:"0",op_return_data:Buffer.from(_).toString("hex"),script_type:"PAYTOOPRETURN"};return U?{amount:B.value,address_n:A,script_type:Z.output}:{amount:B.value,address:Q,script_type:"PAYTOADDRESS"}})});if(R.success)return R.payload.serializedTx;throw new M({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:q,error:R.payload.error}})},O=async({recipient:G,feeOptionKey:F,feeRate:_,memo:I,...A})=>{if(!(D&&G))throw new M({errorKey:"wallet_missing_params",info:{wallet:K.TREZOR,memo:I,address:D,recipient:G}});let L=await Y(q),R=_||(await L.getFeeRates())[F||E.Fast],B=q===j.BitcoinCash?L.buildTx:L.createTransaction,{psbt:Q,inputs:U}=await B({...A,memo:I,recipient:G,feeRate:R,sender:D,fetchTxHex:!0}),z=await k(Q,U,I);return await L.broadcastTx(z)};return{...await Y(q),address:D,transfer:O,signTransaction:k}}default:throw new M({errorKey:"wallet_chain_not_supported",info:{chain:q,wallet:K.TREZOR}})}}var v=y({name:"connectTrezor",walletType:K.TREZOR,supportedChains:[j.Arbitrum,j.Avalanche,j.Base,j.BinanceSmartChain,j.Bitcoin,j.BitcoinCash,j.Dash,j.Dogecoin,j.Ethereum,j.Litecoin,j.Optimism,j.Polygon],connect:({addChain:q,supportedChains:X,walletType:H})=>async function Y(Z,$){let[J]=b({chains:Z,supportedChains:X,walletType:H});if(!J)throw new M({errorKey:"wallet_chain_not_supported",info:{chain:J,wallet:K.TREZOR}});let D=(await import("@trezor/connect-web")).default,{success:k}=await D.getDeviceState();if(!k){let W=S.get("integrations").trezor,G=W?{...W,appName:W.appName||"SwapKit"}:{appUrl:"",email:"",appName:"SwapKit"};D.init({lazyLoad:!0,manifest:G})}let O=await g({chain:J,derivationPath:$});return q({...O,chain:J,walletType:H}),!0}}),C=f(v);export{v as trezorWallet,C as TREZOR_SUPPORTED_CHAINS};
2
2
 
3
3
  //# debugId=C709440C56578CE864756E2164756E21
@@ -1,3 +1,3 @@
1
- var R5={};u5(R5,{walletconnectWallet:()=>V5,WC_SUPPORTED_CHAINS:()=>E5,THORCHAIN_MAINNET_ID:()=>v,POLYGON_MAINNET_ID:()=>N,OPTIMISM_MAINNET_ID:()=>A,NEAR_TESTNET_ID:()=>C,NEAR_MAINNET_ID:()=>d,MAYACHAIN_MAINNET_ID:()=>M,KUJIRA_MAINNET_ID:()=>x,ETHEREUM_MAINNET_ID:()=>H,DEFAULT_SOLANA_METHODS:()=>I,DEFAULT_SOLANA_EVENTS:()=>t,DEFAULT_RELAY_URL:()=>n,DEFAULT_POLKADOT_METHODS:()=>e,DEFAULT_POLKADOT_EVENTS:()=>c,DEFAULT_NEAR_METHODS:()=>o,DEFAULT_NEAR_EVENTS:()=>i,DEFAULT_LOGGER:()=>L5,DEFAULT_EIP_155_EVENTS:()=>h,DEFAULT_EIP155_METHODS:()=>W,DEFAULT_COSMOS_METHODS:()=>E,DEFAULT_COSMOS_EVENTS:()=>W5,DEFAULT_APP_METADATA:()=>O5,COSMOS_HUB_MAINNET_ID:()=>m,BSC_MAINNET_ID:()=>S,BASE_MAINNET_ID:()=>s,AVALANCHE_MAINNET_ID:()=>T,ARBITRUM_ONE_MAINNET_ID:()=>g});module.exports=k5(R5);var L=require("@swapkit/helpers");var q=require("@swapkit/helpers"),p5=require("ethers");var V=require("@swapkit/helpers");var u=(O,j)=>{return(j.find((z)=>z.startsWith($(O)))||"")?.split(":")?.[2]||""},$=(O)=>{switch(O){case V.Chain.Avalanche:return T;case V.Chain.Base:return s;case V.Chain.BinanceSmartChain:return S;case V.Chain.Ethereum:return H;case V.Chain.THORChain:return v;case V.Chain.Arbitrum:return g;case V.Chain.Optimism:return A;case V.Chain.Polygon:return N;case V.Chain.Maya:return M;case V.Chain.Cosmos:return m;case V.Chain.Kujira:return x;case V.Chain.Near:{let{isStagenet:j}=V.SKConfig.get("envs");return j?C:d}default:return""}};class l extends p5.AbstractSigner{address;chain;walletconnect;provider;constructor({chain:O,provider:j,walletconnect:F}){super(j);this.chain=O,this.walletconnect=F,this.provider=j,this.address=""}getAddress=async()=>{if(!this.walletconnect)throw new q.SwapKitError("wallet_walletconnect_connection_not_established");if(!this.address)this.address=u(this.chain,this.walletconnect.accounts);return this.address};signMessage=async(O)=>{let j=await this.walletconnect?.client.request({chainId:$(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sign",params:[O]}});return j.startsWith("0x")?j:`0x${j}`};signTransaction=()=>{throw new q.SwapKitError("wallet_walletconnect_method_not_supported",{method:"signTransaction"})};signTypedData=()=>{throw new q.SwapKitError("wallet_walletconnect_method_not_supported",{method:"signTypedData"})};sendTransaction=async({from:O,to:j,value:F,data:p})=>{let{toHexString:z}=await import("@swapkit/toolboxes/evm"),Q={from:O,to:j,value:z(BigInt(F||0)),data:p};return await this.walletconnect?.client.request({chainId:$(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sendTransaction",params:[Q]}})};connect=(O)=>{if(!O)throw new q.SwapKitError({errorKey:"wallet_provider_not_found",info:{wallet:q.WalletOption.WALLETCONNECT,chain:this.chain}});return new l({chain:this.chain,walletconnect:this.walletconnect,provider:O})}}var f5=async({chain:O,walletconnect:j,provider:F})=>new l({chain:O,walletconnect:j,provider:F});var a=require("@swapkit/helpers");var r5=(O)=>{let j=[];for(let F of O){let[p]=F.split(":");if(p&&!j.includes(p))j.push(p)}return j},P5=(O)=>{switch(O){case"eip155":return Object.values(W);case"cosmos":return Object.values(E);case"solana":return Object.values(I);case"polkadot":return Object.values(e);case"near":return Object.values(o);default:throw new a.SwapKitError({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:O}})}},b5=(O)=>{switch(O){case"eip155":return Object.values(h);case"cosmos":return[];case"solana":return Object.values(t);case"polkadot":return Object.values(c);case"near":return Object.values(i);default:throw new a.SwapKitError({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:O}})}},U5=(O)=>{let j=r5(O);return Object.fromEntries(j.map((F)=>[F,{methods:P5(F),chains:O.filter((p)=>p.startsWith(F)),events:b5(F)}]))};var V5=L.createWallet({name:"connectWalletconnect",walletType:L.WalletOption.WALLETCONNECT,supportedChains:[L.Chain.Arbitrum,L.Chain.Avalanche,L.Chain.Base,L.Chain.BinanceSmartChain,L.Chain.Cosmos,L.Chain.Ethereum,L.Chain.Kujira,L.Chain.Maya,L.Chain.Near,L.Chain.Optimism,L.Chain.Polygon,L.Chain.THORChain],connect:({addChain:O,supportedChains:j,walletType:F})=>async function p(z,Q){let f=L.filterSupportedChains({chains:z,supportedChains:j,walletType:F}),{walletConnectProjectId:X}=L.SKConfig.get("apiKeys");if(!X)throw new L.SwapKitError("wallet_walletconnect_project_id_not_specified");let U=await D5(f,X,Q);if(!U)throw new L.SwapKitError("wallet_walletconnect_connection_not_established");let{session:J,accounts:Y}=U;return await Promise.all(f.map(async(K)=>{let r=u(K,Y),_=await _5({session:J,address:r,chain:K,walletconnect:U});O({..._,address:r,chain:K,disconnect:U.disconnect,walletType:L.WalletOption.WALLETCONNECT})})),!0}}),E5=z5(V5);async function _5({chain:O,walletconnect:j,address:F,session:p}){switch(O){case L.Chain.Arbitrum:case L.Chain.Avalanche:case L.Chain.Base:case L.Chain.BinanceSmartChain:case L.Chain.Ethereum:case L.Chain.Optimism:case L.Chain.Polygon:{let{getProvider:z,getEvmToolbox:Q}=await import("@swapkit/toolboxes/evm"),f=await z(O),X=await f5({walletconnect:j,chain:O,provider:f});return await Q(O,{provider:f,signer:X})}case L.Chain.THORChain:{let{SignMode:z}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:Q}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),{encodePubkey:f,makeAuthInfoBytes:X}=(await import("@cosmjs/proto-signing")).default,{makeSignDoc:U}=(await import("@cosmjs/amino")).default,{getCosmosToolbox:J,buildAminoMsg:Y,buildEncodedTxBody:K,createStargateClient:r,fromBase64:_,getDefaultChainFee:Q5,parseAminoMessageForDirectSigning:X5}=await import("@swapkit/toolboxes/cosmos"),D=await J(L.Chain.THORChain);async function Z5(y){let b=await D.getAccount(y);if(O!==L.Chain.THORChain)return b;let[{address:G,algo:B,pubkey:k}]=await j?.client.request({chainId:v,topic:p.topic,request:{method:"cosmos_getAccounts",params:{}}});return{...b,address:G,pubkey:{type:B,value:k}}}let R=Q5(O),y5=(y)=>j?.client.request({chainId:v,topic:p.topic,request:{method:"cosmos_signAmino",params:{signerAddress:F,signDoc:y}}});async function j5({assetValue:y,memo:P,...b}){let G=await D.getAccount(F);if(!G)throw new L.SwapKitError({errorKey:"wallet_missing_params",info:{account:G}});if(!G.pubkey)throw new L.SwapKitError({errorKey:"wallet_missing_params",info:{account:G,pubkey:G?.pubkey}});let{accountNumber:B,sequence:k=0}=G,F5=[Y({assetValue:y,memo:P,sender:F,...b})],G5=L.ChainId.THORChain,J5=U(F5,R,G5,P,B?.toString(),k?.toString()||"0"),w=await y5(J5),K5=await K({chain:L.Chain.THORChain,msgs:F5.map(X5),memo:P||""}),$5=f(G.pubkey),q5=X([{pubkey:$5,sequence:k}],R.amount,Number.parseInt(R.gas),void 0,void 0,z.SIGN_MODE_LEGACY_AMINO_JSON),v5=Q.fromPartial({bodyBytes:K5,authInfoBytes:q5,signatures:[_(typeof w.signature==="string"?w.signature:w.signature.signature)]}),Y5=Q.encode(v5).finish();return(await(await r(L.SKConfig.get("rpcUrls")[L.Chain.THORChain])).broadcastTx(Y5)).transactionHash}return{...D,transfer:(y)=>j5(y),deposit:(y)=>j5(y),getAccount:Z5}}case L.Chain.Near:{let{getNearToolbox:z}=await import("@swapkit/toolboxes/near"),{DEFAULT_NEAR_METHODS:Q}=await import("../../chunk-sn6pgje5.js");return await z({signer:{getPublicKey(){return Promise.reject(new L.SwapKitError("wallet_walletconnect_method_not_supported",{method:"getPublicKey"}))},signNep413Message(U,J,Y,K,r){return Promise.reject(new L.SwapKitError("wallet_walletconnect_method_not_supported",{method:"signNep413Message"}))},async signTransaction(U){if(!j)throw new L.SwapKitError("wallet_walletconnect_connection_not_established");let J=await j.client.request({topic:p.topic,chainId:$(L.Chain.Near),request:{method:Q.NEAR_SIGN_AND_SEND_TRANSACTION,params:{transaction:U}}});return[new Uint8Array(32),J]},signDelegateAction(U){return Promise.reject(new L.SwapKitError("wallet_walletconnect_method_not_supported",{method:"signDelegateAction"}))},getAddress(){return Promise.resolve(F)}}})}default:throw new L.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:O,wallet:L.WalletOption.WALLETCONNECT}})}}async function D5(O,j,F){let p;try{if(!j)throw new L.SwapKitError("wallet_walletconnect_project_id_not_specified");let z=U5(O.map($)),{WalletConnectModalSign:Q}=await import("@walletconnect/modal-sign-html"),f=new Q({logger:L5,relayUrl:n,projectId:j,metadata:F?.metadata||O5,...F?.core}),X=await f.getSession();if(X)await f.disconnect({topic:X.topic,reason:{code:0,message:"Resetting session"}});let U=await f.connect({requiredNamespaces:z}),J=Object.values(U.namespaces).flatMap((K)=>K.accounts);return{session:U,accounts:J,client:f,disconnect:async()=>{await f.disconnect({topic:U.topic,reason:{code:0,message:"User disconnected"}})}}}catch(z){}finally{if(p)p.closeModal()}return}
1
+ var r5={};E5(r5,{walletconnectWallet:()=>Z5,WC_SUPPORTED_CHAINS:()=>D5,THORCHAIN_MAINNET_ID:()=>k,POLYGON_MAINNET_ID:()=>s,OPTIMISM_MAINNET_ID:()=>l,NEAR_TESTNET_ID:()=>c,NEAR_MAINNET_ID:()=>e,MAYACHAIN_MAINNET_ID:()=>h,KUJIRA_MAINNET_ID:()=>d,ETHEREUM_MAINNET_ID:()=>g,DEFAULT_SOLANA_METHODS:()=>a,DEFAULT_SOLANA_EVENTS:()=>n,DEFAULT_RELAY_URL:()=>T,DEFAULT_POLKADOT_METHODS:()=>L5,DEFAULT_POLKADOT_EVENTS:()=>O5,DEFAULT_NEAR_METHODS:()=>j5,DEFAULT_NEAR_EVENTS:()=>F5,DEFAULT_LOGGER:()=>u,DEFAULT_EIP_155_EVENTS:()=>o,DEFAULT_EIP155_METHODS:()=>r,DEFAULT_COSMOS_METHODS:()=>H,DEFAULT_COSMOS_EVENTS:()=>_5,DEFAULT_APP_METADATA:()=>p5,COSMOS_HUB_MAINNET_ID:()=>C,BSC_MAINNET_ID:()=>A,BASE_MAINNET_ID:()=>t,AVALANCHE_MAINNET_ID:()=>N,ARBITRUM_ONE_MAINNET_ID:()=>I});module.exports=W5(r5);var L=require("@swapkit/helpers");var v=require("@swapkit/helpers"),z5=require("ethers");var U=require("@swapkit/helpers");var B=(O,j)=>{return(j.find((V)=>V.startsWith(Y(O)))||"")?.split(":")?.[2]||""},Y=(O)=>{switch(O){case U.Chain.Avalanche:return N;case U.Chain.Base:return t;case U.Chain.BinanceSmartChain:return A;case U.Chain.Ethereum:return g;case U.Chain.THORChain:return k;case U.Chain.Arbitrum:return I;case U.Chain.Optimism:return l;case U.Chain.Polygon:return s;case U.Chain.Maya:return h;case U.Chain.Cosmos:return C;case U.Chain.Kujira:return d;case U.Chain.Near:{let{isStagenet:j}=U.SKConfig.get("envs");return j?c:e}default:return""}};class i extends z5.AbstractSigner{address;chain;walletconnect;provider;constructor({chain:O,provider:j,walletconnect:F}){super(j);this.chain=O,this.walletconnect=F,this.provider=j,this.address=""}getAddress=async()=>{if(!this.walletconnect)throw new v.SwapKitError("wallet_walletconnect_connection_not_established");if(!this.address)this.address=B(this.chain,this.walletconnect.accounts||[]);return this.address};signMessage=async(O)=>{let j=await this.walletconnect?.client.request({chainId:Y(this.chain),topic:this.walletconnect.session.topic||"",request:{method:"eth_sign",params:[O]}});return j.startsWith("0x")?j:`0x${j}`};signTransaction=()=>{throw new v.SwapKitError("wallet_walletconnect_method_not_supported",{method:"signTransaction"})};signTypedData=()=>{throw new v.SwapKitError("wallet_walletconnect_method_not_supported",{method:"signTypedData"})};sendTransaction=async({from:O,to:j,value:F,data:f})=>{let{toHexString:V}=await import("@swapkit/toolboxes/evm"),p={from:O,to:j,value:V(BigInt(F||0)),data:f};return await this.walletconnect?.client.request({chainId:Y(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sendTransaction",params:[p]}})};connect=(O)=>{if(!O)throw new v.SwapKitError({errorKey:"wallet_provider_not_found",info:{wallet:v.WalletOption.WALLETCONNECT,chain:this.chain}});return new i({chain:this.chain,walletconnect:this.walletconnect,provider:O})}}var Q5=async({chain:O,walletconnect:j,provider:F})=>new i({chain:O,walletconnect:j,provider:F});var f5=require("@swapkit/helpers");var b5=(O)=>{let j=[];for(let F of O){let[f]=F.split(":");if(f&&!j.includes(f))j.push(f)}return j},k5=(O)=>{switch(O){case"eip155":return Object.values(r);case"cosmos":return Object.values(H);case"solana":return Object.values(a);case"polkadot":return Object.values(L5);case"near":return Object.values(j5);default:throw new f5.SwapKitError({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:O}})}},P5=(O)=>{switch(O){case"eip155":return Object.values(o);case"cosmos":return[];case"solana":return Object.values(n);case"polkadot":return Object.values(O5);case"near":return Object.values(F5);default:throw new f5.SwapKitError({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:O}})}},X5=(O)=>{let j=b5(O);return Object.fromEntries(j.map((F)=>[F,{methods:k5(F),chains:O.filter((f)=>f.startsWith(F)),events:P5(F)}]))};var Z5=L.createWallet({name:"connectWalletconnect",walletType:L.WalletOption.WALLETCONNECT,supportedChains:[L.Chain.Arbitrum,L.Chain.Avalanche,L.Chain.Base,L.Chain.BinanceSmartChain,L.Chain.Cosmos,L.Chain.Ethereum,L.Chain.Kujira,L.Chain.Maya,L.Chain.Near,L.Chain.Optimism,L.Chain.Polygon,L.Chain.THORChain],connect:({addChain:O,supportedChains:j,walletType:F})=>async function f(V,p){let Q=L.filterSupportedChains({chains:V,supportedChains:j,walletType:F}),{walletConnectProjectId:y}=L.SKConfig.get("apiKeys");if(!y)throw new L.SwapKitError("wallet_walletconnect_project_id_not_specified");let z=await B5(Q,y,p);if(!z)throw new L.SwapKitError("wallet_walletconnect_connection_not_established");let{accounts:K}=z;return await Promise.all(Q.map(async(X)=>{let $=B(X,K||[]),q=await R5({address:$,chain:X,walletconnect:z});O({...q,address:$,chain:X,disconnect:z.disconnect,walletType:L.WalletOption.WALLETCONNECT})})),!0}}),D5=y5(Z5);async function R5({chain:O,walletconnect:j,address:F}){let f=j?.session;if(!f)throw new L.SwapKitError("wallet_walletconnect_connection_not_established");switch(O){case L.Chain.Arbitrum:case L.Chain.Avalanche:case L.Chain.Base:case L.Chain.BinanceSmartChain:case L.Chain.Ethereum:case L.Chain.Optimism:case L.Chain.Polygon:{let{getProvider:V,getEvmToolbox:p}=await import("@swapkit/toolboxes/evm"),Q=await V(O),y=await Q5({walletconnect:j,chain:O,provider:Q});return await p(O,{provider:Q,signer:y})}case L.Chain.THORChain:{let{SignMode:V}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:p}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),{encodePubkey:Q,makeAuthInfoBytes:y}=(await import("@cosmjs/proto-signing")).default,{makeSignDoc:z}=(await import("@cosmjs/amino")).default,{getCosmosToolbox:K,buildAminoMsg:X,buildEncodedTxBody:$,createStargateClient:q,fromBase64:W,getDefaultChainFee:S,parseAminoMessageForDirectSigning:w}=await import("@swapkit/toolboxes/cosmos"),P=await K(L.Chain.THORChain);async function m(G){let D=await P.getAccount(G);if(O!==L.Chain.THORChain)return D;let[{address:J,algo:x,pubkey:R}]=await j?.client.request({chainId:k,topic:f.topic,request:{method:"cosmos_getAccounts",params:{}}});return{...D,address:J,pubkey:{type:x,value:R}}}let b=S(O),U5=(G)=>j?.client.request({chainId:k,topic:f.topic,request:{method:"cosmos_signAmino",params:{signerAddress:F,signDoc:G}}});async function E({assetValue:G,memo:_,...D}){let J=await P.getAccount(F);if(!J)throw new L.SwapKitError({errorKey:"wallet_missing_params",info:{account:J}});if(!J.pubkey)throw new L.SwapKitError({errorKey:"wallet_missing_params",info:{account:J,pubkey:J?.pubkey}});let{accountNumber:x,sequence:R=0}=J,V5=[X({assetValue:G,memo:_,sender:F,...D})],G5=L.ChainId.THORChain,J5=z(V5,b,G5,_,x?.toString(),R?.toString()||"0"),M=await U5(J5),K5=await $({chain:L.Chain.THORChain,msgs:V5.map(w),memo:_||""}),$5=Q(J.pubkey),q5=y([{pubkey:$5,sequence:R}],b.amount,Number.parseInt(b.gas),void 0,void 0,V.SIGN_MODE_LEGACY_AMINO_JSON),Y5=p.fromPartial({bodyBytes:K5,authInfoBytes:q5,signatures:[W(typeof M.signature==="string"?M.signature:M.signature.signature)]}),v5=p.encode(Y5).finish();return(await(await q(L.SKConfig.get("rpcUrls")[L.Chain.THORChain])).broadcastTx(v5)).transactionHash}return{...P,transfer:(G)=>E(G),deposit:(G)=>E(G),getAccount:m}}case L.Chain.Near:{let{getNearToolbox:V}=await import("@swapkit/toolboxes/near"),{DEFAULT_NEAR_METHODS:p}=await import("../../chunk-sn6pgje5.js");return await V({signer:{getPublicKey(){return Promise.reject(new L.SwapKitError("wallet_walletconnect_method_not_supported",{method:"getPublicKey"}))},signNep413Message(z,K,X,$,q){return Promise.reject(new L.SwapKitError("wallet_walletconnect_method_not_supported",{method:"signNep413Message"}))},async signTransaction(z){if(!j)throw new L.SwapKitError("wallet_walletconnect_connection_not_established");let K=await j.client.request({topic:f.topic,chainId:Y(L.Chain.Near),request:{method:p.NEAR_SIGN_AND_SEND_TRANSACTION,params:{transaction:z}}});return[new Uint8Array(32),K]},signDelegateAction(z){return Promise.reject(new L.SwapKitError("wallet_walletconnect_method_not_supported",{method:"signDelegateAction"}))},getAddress(){return Promise.resolve(F)}}})}default:throw new L.SwapKitError({errorKey:"wallet_chain_not_supported",info:{chain:O,wallet:L.WalletOption.WALLETCONNECT}})}}async function B5(O,j,F){let f,V,p,Q;try{if(!j)throw new L.SwapKitError("wallet_walletconnect_project_id_not_specified");let y=X5(O.map(Y)),{SignClient:z}=await import("@walletconnect/sign-client"),{WalletConnectModal:K}=await import("@walletconnect/modal"),X=new z({logger:u,relayUrl:T,projectId:j,metadata:F?.metadata||p5,...F?.core}),$=new K({logger:u,relayUrl:T,projectId:j,...F?.core}),q=await X.session.getAll()[0];if(q)await X.disconnect({topic:q.topic,reason:{code:0,message:"Resetting session"}});let{uri:W,approval:S}=await X.connect({requiredNamespaces:y});if(W){let P=function(m){let b=[];for(let[U5,E]of Object.entries(m.namespaces))b.push(...E.accounts);return b};$.openModal({uri:W}),p=await S(),$.closeModal(),Q=P(p)}let w=async()=>{p&&await X.disconnect({topic:p.topic,reason:{code:0,message:"User disconnected"}})};if(!p)throw new L.SwapKitError("wallet_walletconnect_connection_not_established");return{signer:V,session:p,accounts:Q,client:X,disconnect:w}}catch(y){}finally{if(f)f.closeModal()}return}
2
2
 
3
- //# debugId=D5502FFB2646DCA864756E2164756E21
3
+ //# debugId=F95BFF13A64F6C0864756E2164756E21
@@ -2,12 +2,12 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/walletconnect/index.ts", "../src/walletconnect/evmSigner.ts", "../src/walletconnect/helpers.ts", "../src/walletconnect/namespaces.ts"],
4
4
  "sourcesContent": [
5
- "import type { StdSignDoc } from \"@cosmjs/amino\";\nimport {\n Chain,\n ChainId,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams, createThorchainToolbox } from \"@swapkit/toolboxes/cosmos\";\nimport type { NearSigner } from \"@swapkit/toolboxes/near\";\nimport type { WalletConnectModalSign } from \"@walletconnect/modal-sign-html\";\nimport type { SessionTypes, SignClientTypes } from \"@walletconnect/types\";\nimport type { Transaction } from \"near-api-js/lib/transaction\";\n\nimport { getWalletSupportedChains } from \"../utils\";\nimport {\n DEFAULT_APP_METADATA,\n DEFAULT_COSMOS_METHODS,\n DEFAULT_LOGGER,\n DEFAULT_RELAY_URL,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\nimport { getEVMSigner } from \"./evmSigner\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport { getRequiredNamespaces } from \"./namespaces\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const walletconnectWallet = createWallet({\n name: \"connectWalletconnect\",\n walletType: WalletOption.WALLETCONNECT,\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Cosmos,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.Near,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectWalletconnect(\n chains: Chain[],\n walletconnectOptions?: SignClientTypes.Options,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const { walletConnectProjectId } = SKConfig.get(\"apiKeys\");\n\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n\n const walletconnect = await getWalletconnect(\n filteredChains,\n walletConnectProjectId,\n walletconnectOptions,\n );\n\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n const { session, accounts } = walletconnect;\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const address = getAddressByChain(chain, accounts);\n const toolbox = await getToolbox({ session, address, chain, walletconnect });\n\n addChain({\n ...toolbox,\n address,\n chain,\n disconnect: walletconnect.disconnect,\n walletType: WalletOption.WALLETCONNECT,\n });\n }),\n );\n\n return true;\n },\n});\n\nexport const WC_SUPPORTED_CHAINS = getWalletSupportedChains(walletconnectWallet);\nexport type Walletconnect = Awaited<ReturnType<typeof getWalletconnect>>;\n\nasync function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({\n chain,\n walletconnect,\n address,\n session,\n}: {\n walletconnect: Walletconnect;\n session: SessionTypes.Struct;\n chain: T;\n address: string;\n}) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ walletconnect, chain, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n\n case Chain.THORChain: {\n const { SignMode } = await import(\"cosmjs-types/cosmos/tx/signing/v1beta1/signing.js\");\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx.js\");\n const { encodePubkey, makeAuthInfoBytes } = (await import(\"@cosmjs/proto-signing\")).default;\n const { makeSignDoc } = (await import(\"@cosmjs/amino\")).default;\n const {\n getCosmosToolbox,\n buildAminoMsg,\n buildEncodedTxBody,\n createStargateClient,\n fromBase64,\n getDefaultChainFee,\n parseAminoMessageForDirectSigning,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n\n async function getAccount(accountAddress: string) {\n const cosmosToolbox = toolbox;\n const account = await (\n cosmosToolbox as Awaited<ReturnType<typeof createThorchainToolbox>>\n ).getAccount(accountAddress);\n\n if (chain !== Chain.THORChain) {\n return account;\n }\n\n const [{ address, algo, pubkey }] = (await walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,\n params: {},\n },\n })) as [{ address: string; algo: string; pubkey: string }];\n\n return { ...account, address, pubkey: { type: algo, value: pubkey } };\n }\n\n const fee = getDefaultChainFee(chain);\n\n const signRequest = (signDoc: StdSignDoc) =>\n walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_SIGN_AMINO,\n params: { signerAddress: address, signDoc },\n },\n });\n\n async function thorchainTransfer({\n assetValue,\n memo,\n ...rest\n }: GenericTransferParams | ThorchainDepositParams) {\n const account = await toolbox.getAccount(address);\n if (!account) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { account } });\n }\n\n if (!account.pubkey) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { account, pubkey: account?.pubkey },\n });\n }\n\n const { accountNumber, sequence = 0 } = account;\n\n const msgs = [buildAminoMsg({ assetValue, memo, sender: address, ...rest })];\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n msgs,\n fee,\n chainId,\n memo,\n accountNumber?.toString(),\n sequence?.toString() || \"0\",\n );\n\n const signature: any = await signRequest(signDoc);\n\n const bodyBytes = await buildEncodedTxBody({\n chain: Chain.THORChain,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n memo: memo || \"\",\n });\n const pubkey = encodePubkey(account.pubkey);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey, sequence }],\n fee.amount,\n Number.parseInt(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_LEGACY_AMINO_JSON,\n );\n\n const txRaw = TxRaw.fromPartial({\n bodyBytes,\n authInfoBytes,\n signatures: [\n fromBase64(\n typeof signature.signature === \"string\"\n ? signature.signature\n : signature.signature.signature,\n ),\n ],\n });\n const txBytes = TxRaw.encode(txRaw).finish();\n\n const broadcaster = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const result = await broadcaster.broadcastTx(txBytes);\n return result.transactionHash;\n }\n\n return {\n ...toolbox,\n transfer: (params: GenericTransferParams) => thorchainTransfer(params),\n deposit: (params: ThorchainDepositParams) => thorchainTransfer(params),\n getAccount,\n };\n }\n\n case Chain.Near: {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const { DEFAULT_NEAR_METHODS } = await import(\"./constants\");\n\n // Create a NEAR signer that uses WalletConnect\n const signer = {\n getPublicKey() {\n // WalletConnect NEAR doesn't expose public key directly\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"getPublicKey\",\n }),\n );\n },\n\n signNep413Message(\n _message: string,\n _accountId: string,\n _recipient: string,\n _nonce: Uint8Array,\n _callbackUrl?: string,\n ) {\n // WalletConnect NEAR spec doesn't include NEP-413 message signing\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signNep413Message\",\n }),\n );\n },\n\n async signTransaction(transaction: Transaction) {\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n // WalletConnect signs and sends in one operation\n const result = await walletconnect.client.request({\n topic: session.topic,\n chainId: chainToChainId(Chain.Near),\n request: {\n method: DEFAULT_NEAR_METHODS.NEAR_SIGN_AND_SEND_TRANSACTION,\n params: { transaction },\n },\n });\n // Return dummy hash and result\n return [new Uint8Array(32), result];\n },\n\n signDelegateAction(_delegateAction: any) {\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signDelegateAction\",\n }),\n );\n },\n\n getAddress() {\n return Promise.resolve(address);\n },\n } as NearSigner;\n\n const toolbox = await getNearToolbox({ signer });\n return toolbox;\n }\n\n default:\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.WALLETCONNECT },\n });\n }\n}\n\nasync function getWalletconnect(\n chains: Chain[],\n walletConnectProjectId?: string,\n walletconnectOptions?: SignClientTypes.Options,\n) {\n let modal: WalletConnectModalSign | undefined;\n try {\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));\n\n const { WalletConnectModalSign } = await import(\"@walletconnect/modal-sign-html\");\n\n const client = new WalletConnectModalSign({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n metadata: walletconnectOptions?.metadata || DEFAULT_APP_METADATA,\n ...walletconnectOptions?.core,\n });\n\n const oldSession = await client.getSession();\n\n // disconnect old Session cause we can't handle using it with current ui\n if (oldSession) {\n await client.disconnect({\n topic: oldSession.topic,\n reason: { code: 0, message: \"Resetting session\" },\n });\n }\n\n const session = await client.connect({ requiredNamespaces });\n\n const accounts = Object.values(session.namespaces).flatMap(\n (namespace: any) => namespace.accounts,\n );\n\n const disconnect = async () => {\n await client.disconnect({\n topic: session.topic,\n reason: { code: 0, message: \"User disconnected\" },\n });\n };\n\n return { session, accounts, client, disconnect };\n } catch (_e) {\n // Errors are handled by returning undefined\n } finally {\n if (modal) {\n // @ts-expect-error wrong typing\n modal.closeModal();\n }\n }\n return undefined;\n}\n",
6
- "import { type EVMChain, SwapKitError, WalletOption } from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TransactionResponse } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { DEFAULT_EIP155_METHODS } from \"./constants\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport type { Walletconnect } from \"./index\";\n\ninterface WalletconnectEVMSignerParams {\n chain: EVMChain;\n walletconnect: Walletconnect;\n provider: Provider | JsonRpcProvider;\n}\n\nclass WalletconnectSigner extends AbstractSigner {\n address: string;\n\n private chain: EVMChain;\n private walletconnect: Walletconnect;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, provider, walletconnect }: WalletconnectEVMSignerParams) {\n super(provider);\n this.chain = chain;\n this.walletconnect = walletconnect;\n this.provider = provider;\n this.address = \"\";\n }\n\n // biome-ignore lint/suspicious/useAwait: fulfil implementation type\n getAddress = async () => {\n if (!this.walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n if (!this.address) {\n this.address = getAddressByChain(this.chain, this.walletconnect.accounts);\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n // this is probably broken\n const txHash = (await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SIGN,\n params: [message],\n },\n })) as string;\n\n return txHash.startsWith(\"0x\") ? txHash : `0x${txHash}`;\n };\n\n signTransaction = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTransaction\",\n });\n\n // const baseTx = {\n // from,\n // to,\n // value: BigNumber.from(value || 0).toHexString(),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n // ANCHOR (@Towan) - Implement in future\n signTypedData = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTypedData\",\n });\n\n // const { toHexString } = await import('@swapkit/toolboxes/evm');\n\n // const baseTx = {\n // from,\n // to,\n // value: toHexString(value || 0n),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n sendTransaction = async ({ from, to, value, data }: TransactionRequest) => {\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const baseTx = {\n from,\n to,\n value: toHexString(BigInt(value || 0)),\n data,\n };\n const response = await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SEND_TRANSACTION,\n params: [baseTx],\n },\n });\n\n return response as TransactionResponse;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: { wallet: WalletOption.WALLETCONNECT, chain: this.chain },\n });\n }\n\n return new WalletconnectSigner({\n chain: this.chain,\n walletconnect: this.walletconnect,\n provider,\n });\n };\n}\nexport const getEVMSigner = async ({\n chain,\n walletconnect,\n provider,\n}: WalletconnectEVMSignerParams) => new WalletconnectSigner({ chain, walletconnect, provider });\n",
5
+ "import type { StdSignDoc } from \"@cosmjs/amino\";\nimport {\n Chain,\n ChainId,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams, createThorchainToolbox } from \"@swapkit/toolboxes/cosmos\";\nimport type { NearSigner } from \"@swapkit/toolboxes/near\";\nimport type { WalletConnectModal } from \"@walletconnect/modal\";\nimport type { SessionTypes, SignClientTypes } from \"@walletconnect/types\";\nimport type { Transaction } from \"near-api-js/lib/transaction\";\n\nimport type { SignClient } from \"@walletconnect/sign-client\";\nimport { getWalletSupportedChains } from \"../utils\";\nimport {\n DEFAULT_APP_METADATA,\n DEFAULT_COSMOS_METHODS,\n DEFAULT_LOGGER,\n DEFAULT_RELAY_URL,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\nimport { getEVMSigner } from \"./evmSigner\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport { getRequiredNamespaces } from \"./namespaces\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const walletconnectWallet = createWallet({\n name: \"connectWalletconnect\",\n walletType: WalletOption.WALLETCONNECT,\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Cosmos,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.Near,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectWalletconnect(\n chains: Chain[],\n walletconnectOptions?: SignClientTypes.Options,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const { walletConnectProjectId } = SKConfig.get(\"apiKeys\");\n\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n\n const walletconnect = await getWalletconnect(\n filteredChains,\n walletConnectProjectId,\n walletconnectOptions,\n );\n\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n const { accounts } = walletconnect;\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const address = getAddressByChain(chain, accounts || []);\n const toolbox = await getToolbox({ address, chain, walletconnect });\n\n addChain({\n ...toolbox,\n address,\n chain,\n disconnect: walletconnect.disconnect,\n walletType: WalletOption.WALLETCONNECT,\n });\n }),\n );\n\n return true;\n },\n});\n\nexport const WC_SUPPORTED_CHAINS = getWalletSupportedChains(walletconnectWallet);\nexport type Walletconnect = Awaited<ReturnType<typeof getWalletconnect>>;\n\nasync function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({\n chain,\n walletconnect,\n address,\n}: {\n walletconnect: Walletconnect;\n chain: T;\n address: string;\n}) {\n const session = walletconnect?.session;\n if (!session) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ walletconnect, chain, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n\n case Chain.THORChain: {\n const { SignMode } = await import(\"cosmjs-types/cosmos/tx/signing/v1beta1/signing.js\");\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx.js\");\n const { encodePubkey, makeAuthInfoBytes } = (await import(\"@cosmjs/proto-signing\")).default;\n const { makeSignDoc } = (await import(\"@cosmjs/amino\")).default;\n const {\n getCosmosToolbox,\n buildAminoMsg,\n buildEncodedTxBody,\n createStargateClient,\n fromBase64,\n getDefaultChainFee,\n parseAminoMessageForDirectSigning,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n\n async function getAccount(accountAddress: string) {\n const cosmosToolbox = toolbox;\n const account = await (\n cosmosToolbox as Awaited<ReturnType<typeof createThorchainToolbox>>\n ).getAccount(accountAddress);\n\n if (chain !== Chain.THORChain) {\n return account;\n }\n\n const [{ address, algo, pubkey }] = (await walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n // @ts-ignore\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,\n params: {},\n },\n })) as [{ address: string; algo: string; pubkey: string }];\n\n return { ...account, address, pubkey: { type: algo, value: pubkey } };\n }\n\n const fee = getDefaultChainFee(chain);\n\n const signRequest = (signDoc: StdSignDoc) =>\n walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_SIGN_AMINO,\n params: { signerAddress: address, signDoc },\n },\n });\n\n async function thorchainTransfer({\n assetValue,\n memo,\n ...rest\n }: GenericTransferParams | ThorchainDepositParams) {\n const account = await toolbox.getAccount(address);\n if (!account) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { account } });\n }\n\n if (!account.pubkey) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { account, pubkey: account?.pubkey },\n });\n }\n\n const { accountNumber, sequence = 0 } = account;\n\n const msgs = [buildAminoMsg({ assetValue, memo, sender: address, ...rest })];\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n msgs,\n fee,\n chainId,\n memo,\n accountNumber?.toString(),\n sequence?.toString() || \"0\",\n );\n\n const signature: any = await signRequest(signDoc);\n\n const bodyBytes = await buildEncodedTxBody({\n chain: Chain.THORChain,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n memo: memo || \"\",\n });\n const pubkey = encodePubkey(account.pubkey);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey, sequence }],\n fee.amount,\n Number.parseInt(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_LEGACY_AMINO_JSON,\n );\n\n const txRaw = TxRaw.fromPartial({\n bodyBytes,\n authInfoBytes,\n signatures: [\n fromBase64(\n typeof signature.signature === \"string\"\n ? signature.signature\n : signature.signature.signature,\n ),\n ],\n });\n const txBytes = TxRaw.encode(txRaw).finish();\n\n const broadcaster = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const result = await broadcaster.broadcastTx(txBytes);\n return result.transactionHash;\n }\n\n return {\n ...toolbox,\n transfer: (params: GenericTransferParams) => thorchainTransfer(params),\n deposit: (params: ThorchainDepositParams) => thorchainTransfer(params),\n getAccount,\n };\n }\n\n case Chain.Near: {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const { DEFAULT_NEAR_METHODS } = await import(\"./constants\");\n\n // Create a NEAR signer that uses WalletConnect\n const signer = {\n getPublicKey() {\n // WalletConnect NEAR doesn't expose public key directly\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"getPublicKey\",\n }),\n );\n },\n\n signNep413Message(\n _message: string,\n _accountId: string,\n _recipient: string,\n _nonce: Uint8Array,\n _callbackUrl?: string,\n ) {\n // WalletConnect NEAR spec doesn't include NEP-413 message signing\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signNep413Message\",\n }),\n );\n },\n\n async signTransaction(transaction: Transaction) {\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n // WalletConnect signs and sends in one operation\n const result = await walletconnect.client.request({\n topic: session.topic,\n chainId: chainToChainId(Chain.Near),\n request: {\n method: DEFAULT_NEAR_METHODS.NEAR_SIGN_AND_SEND_TRANSACTION,\n params: { transaction },\n },\n });\n // Return dummy hash and result\n return [new Uint8Array(32), result];\n },\n\n signDelegateAction(_delegateAction: any) {\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signDelegateAction\",\n }),\n );\n },\n\n getAddress() {\n return Promise.resolve(address);\n },\n } as NearSigner;\n\n const toolbox = await getNearToolbox({ signer });\n return toolbox;\n }\n\n default:\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.WALLETCONNECT },\n });\n }\n}\n\nasync function getWalletconnect(\n chains: Chain[],\n walletConnectProjectId?: string,\n walletconnectOptions?: SignClientTypes.Options,\n) {\n let modal: WalletConnectModal | undefined;\n let signer: typeof SignClient | undefined;\n let session: SessionTypes.Struct | undefined;\n let accounts: string[] | undefined;\n try {\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));\n\n const { SignClient } = await import(\"@walletconnect/sign-client\");\n const { WalletConnectModal } = await import(\"@walletconnect/modal\");\n\n const client = new SignClient({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n metadata: walletconnectOptions?.metadata || DEFAULT_APP_METADATA,\n ...walletconnectOptions?.core,\n });\n\n const modal = new WalletConnectModal({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n ...walletconnectOptions?.core,\n });\n\n const oldSession = await client.session.getAll()[0];\n\n // disconnect old Session cause we can't handle using it with current ui\n if (oldSession) {\n await client.disconnect({\n topic: oldSession.topic,\n reason: { code: 0, message: \"Resetting session\" },\n });\n }\n\n const { uri, approval } = await client.connect({\n // Optionally: pass a known prior pairing (e.g. from `client.core.pairing.getPairings()`) to skip the `uri` step.\n // pairingTopic: pairing?.topic,\n // Provide the namespaces and chains (e.g. `eip155` for EVM-based chains) we want to use in this session.\n requiredNamespaces,\n });\n\n if (uri) {\n modal.openModal({ uri });\n // Await session approval from the wallet.\n session = await approval();\n // Handle the returned session (e.g. update UI to \"connected\" state).\n // Close the QRCode modal in case it was open.\n modal.closeModal();\n\n function extractAccountsFromSession(session: SessionTypes.Struct) {\n const accounts: string[] = [];\n\n for (const [_namespace, data] of Object.entries(session.namespaces)) {\n accounts.push(...data.accounts);\n }\n\n return accounts;\n }\n\n accounts = extractAccountsFromSession(session);\n }\n\n const disconnect = async () => {\n session &&\n (await client.disconnect({\n topic: session.topic,\n reason: { code: 0, message: \"User disconnected\" },\n }));\n };\n\n if (!session) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n return { signer, session, accounts, client, disconnect };\n } catch (_e) {\n // Errors are handled by returning undefined\n } finally {\n if (modal) {\n modal.closeModal();\n }\n }\n return undefined;\n}\n",
6
+ "import { type EVMChain, SwapKitError, WalletOption } from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TransactionResponse } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { DEFAULT_EIP155_METHODS } from \"./constants\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport type { Walletconnect } from \"./index\";\n\ninterface WalletconnectEVMSignerParams {\n chain: EVMChain;\n walletconnect: Walletconnect;\n provider: Provider | JsonRpcProvider;\n}\n\nclass WalletconnectSigner extends AbstractSigner {\n address: string;\n\n private chain: EVMChain;\n private walletconnect: Walletconnect;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, provider, walletconnect }: WalletconnectEVMSignerParams) {\n super(provider);\n this.chain = chain;\n this.walletconnect = walletconnect;\n this.provider = provider;\n this.address = \"\";\n }\n\n // biome-ignore lint/suspicious/useAwait: fulfil implementation type\n getAddress = async () => {\n if (!this.walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n if (!this.address) {\n this.address = getAddressByChain(this.chain, this.walletconnect.accounts || []);\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n // this is probably broken\n const txHash = (await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic || \"\",\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SIGN,\n params: [message],\n },\n })) as string;\n\n return txHash.startsWith(\"0x\") ? txHash : `0x${txHash}`;\n };\n\n signTransaction = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTransaction\",\n });\n\n // const baseTx = {\n // from,\n // to,\n // value: BigNumber.from(value || 0).toHexString(),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n // ANCHOR (@Towan) - Implement in future\n signTypedData = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTypedData\",\n });\n\n // const { toHexString } = await import('@swapkit/toolboxes/evm');\n\n // const baseTx = {\n // from,\n // to,\n // value: toHexString(value || 0n),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n sendTransaction = async ({ from, to, value, data }: TransactionRequest) => {\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const baseTx = {\n from,\n to,\n value: toHexString(BigInt(value || 0)),\n data,\n };\n const response = await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SEND_TRANSACTION,\n params: [baseTx],\n },\n });\n\n return response as TransactionResponse;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: { wallet: WalletOption.WALLETCONNECT, chain: this.chain },\n });\n }\n\n return new WalletconnectSigner({\n chain: this.chain,\n walletconnect: this.walletconnect,\n provider,\n });\n };\n}\nexport const getEVMSigner = async ({\n chain,\n walletconnect,\n provider,\n}: WalletconnectEVMSignerParams) => new WalletconnectSigner({ chain, walletconnect, provider });\n",
7
7
  "import { Chain, type EVMChain, SKConfig } from \"@swapkit/helpers\";\n\nimport {\n ARBITRUM_ONE_MAINNET_ID,\n AVALANCHE_MAINNET_ID,\n BASE_MAINNET_ID,\n BSC_MAINNET_ID,\n COSMOS_HUB_MAINNET_ID,\n ETHEREUM_MAINNET_ID,\n KUJIRA_MAINNET_ID,\n MAYACHAIN_MAINNET_ID,\n NEAR_MAINNET_ID,\n NEAR_TESTNET_ID,\n OPTIMISM_MAINNET_ID,\n POLYGON_MAINNET_ID,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\n\nexport const getAddressByChain = (\n chain: EVMChain | Chain.THORChain | Chain.Maya | Chain.Kujira | Chain.Cosmos | Chain.Near,\n accounts: string[],\n) => {\n const account = accounts.find((account) => account.startsWith(chainToChainId(chain))) || \"\";\n const address = account?.split(\":\")?.[2];\n\n return address || \"\";\n};\n\nexport const chainToChainId = (chain: Chain) => {\n switch (chain) {\n case Chain.Avalanche:\n return AVALANCHE_MAINNET_ID;\n case Chain.Base:\n return BASE_MAINNET_ID;\n case Chain.BinanceSmartChain:\n return BSC_MAINNET_ID;\n case Chain.Ethereum:\n return ETHEREUM_MAINNET_ID;\n case Chain.THORChain:\n return THORCHAIN_MAINNET_ID;\n case Chain.Arbitrum:\n return ARBITRUM_ONE_MAINNET_ID;\n case Chain.Optimism:\n return OPTIMISM_MAINNET_ID;\n case Chain.Polygon:\n return POLYGON_MAINNET_ID;\n case Chain.Maya:\n return MAYACHAIN_MAINNET_ID;\n case Chain.Cosmos:\n return COSMOS_HUB_MAINNET_ID;\n case Chain.Kujira:\n return KUJIRA_MAINNET_ID;\n case Chain.Near: {\n // Use testnet if stagenet is enabled\n const { isStagenet } = SKConfig.get(\"envs\");\n return isStagenet ? NEAR_TESTNET_ID : NEAR_MAINNET_ID;\n }\n default:\n return \"\";\n }\n};\n",
8
8
  "import type { ProposalTypes } from \"@walletconnect/types\";\n\nimport { SwapKitError } from \"@swapkit/helpers\";\nimport {\n DEFAULT_COSMOS_METHODS,\n DEFAULT_EIP155_METHODS,\n DEFAULT_EIP_155_EVENTS,\n DEFAULT_NEAR_EVENTS,\n DEFAULT_NEAR_METHODS,\n DEFAULT_POLKADOT_EVENTS,\n DEFAULT_POLKADOT_METHODS,\n DEFAULT_SOLANA_EVENTS,\n DEFAULT_SOLANA_METHODS,\n} from \"./constants\";\n\nexport const getNamespacesFromChains = (chains: string[]) => {\n const supportedNamespaces: string[] = [];\n for (const chainId of chains) {\n const [namespace] = chainId.split(\":\");\n if (namespace && !supportedNamespaces.includes(namespace)) {\n supportedNamespaces.push(namespace);\n }\n }\n\n return supportedNamespaces;\n};\n\nexport const getSupportedMethodsByNamespace = (namespace: string) => {\n switch (namespace) {\n case \"eip155\":\n return Object.values(DEFAULT_EIP155_METHODS);\n case \"cosmos\":\n return Object.values(DEFAULT_COSMOS_METHODS);\n case \"solana\":\n return Object.values(DEFAULT_SOLANA_METHODS);\n case \"polkadot\":\n return Object.values(DEFAULT_POLKADOT_METHODS);\n case \"near\":\n return Object.values(DEFAULT_NEAR_METHODS);\n default:\n throw new SwapKitError({\n errorKey: \"wallet_walletconnect_namespace_not_supported\",\n info: { namespace },\n });\n }\n};\n\nexport const getSupportedEventsByNamespace = (namespace: string) => {\n switch (namespace) {\n case \"eip155\":\n return Object.values(DEFAULT_EIP_155_EVENTS);\n case \"cosmos\":\n return [];\n case \"solana\":\n return Object.values(DEFAULT_SOLANA_EVENTS);\n case \"polkadot\":\n return Object.values(DEFAULT_POLKADOT_EVENTS);\n case \"near\":\n return Object.values(DEFAULT_NEAR_EVENTS);\n default:\n throw new SwapKitError({\n errorKey: \"wallet_walletconnect_namespace_not_supported\",\n info: { namespace },\n });\n }\n};\n\nexport const getRequiredNamespaces = (chains: string[]): ProposalTypes.RequiredNamespaces => {\n const selectedNamespaces = getNamespacesFromChains(chains);\n\n return Object.fromEntries(\n selectedNamespaces.map((namespace) => [\n namespace,\n {\n methods: getSupportedMethodsByNamespace(namespace),\n chains: chains.filter((chain) => chain.startsWith(namespace)),\n events: getSupportedEventsByNamespace(namespace) as any[],\n },\n ]),\n );\n};\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "D5502FFB2646DCA864756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "F95BFF13A64F6C0864756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -1,3 +1,3 @@
1
- import{a as U5,b as g,c as A,d as N,e as P,f as s,g as d,h as C,i as l,j as h,k as I,l as t,m as e,n as c,o as V5,p as z5,q as H,r as i,s as T,t as FL,u as a,v as n,w as L5,x as O5,y as j5,z as F5}from"../../chunk-bexr8da2.js";import{A as X5}from"../../chunk-zfnkndsr.js";import{C as Z,D as y}from"../../chunk-qwd1kp32.js";import{Chain as j,ChainId as D5,SKConfig as Q5,SwapKitError as G,WalletOption as m,createWallet as R5,filterSupportedChains as B5}from"@swapkit/helpers";import{SwapKitError as E,WalletOption as k5}from"@swapkit/helpers";import{AbstractSigner as u5}from"ethers";import{Chain as Q,SKConfig as b5}from"@swapkit/helpers";var W=(L,O)=>{return(O.find((V)=>V.startsWith(v(L)))||"")?.split(":")?.[2]||""},v=(L)=>{switch(L){case Q.Avalanche:return N;case Q.Base:return t;case Q.BinanceSmartChain:return A;case Q.Ethereum:return g;case Q.THORChain:return P;case Q.Arbitrum:return l;case Q.Optimism:return h;case Q.Polygon:return I;case Q.Maya:return C;case Q.Cosmos:return s;case Q.Kujira:return d;case Q.Near:{let{isStagenet:O}=b5.get("envs");return O?c:e}default:return""}};class S extends u5{address;chain;walletconnect;provider;constructor({chain:L,provider:O,walletconnect:F}){super(O);this.chain=L,this.walletconnect=F,this.provider=O,this.address=""}getAddress=async()=>{if(!this.walletconnect)throw new E("wallet_walletconnect_connection_not_established");if(!this.address)this.address=W(this.chain,this.walletconnect.accounts);return this.address};signMessage=async(L)=>{let O=await this.walletconnect?.client.request({chainId:v(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sign",params:[L]}});return O.startsWith("0x")?O:`0x${O}`};signTransaction=()=>{throw new E("wallet_walletconnect_method_not_supported",{method:"signTransaction"})};signTypedData=()=>{throw new E("wallet_walletconnect_method_not_supported",{method:"signTypedData"})};sendTransaction=async({from:L,to:O,value:F,data:p})=>{let{toHexString:V}=await import("@swapkit/toolboxes/evm"),z={from:L,to:O,value:V(BigInt(F||0)),data:p};return await this.walletconnect?.client.request({chainId:v(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sendTransaction",params:[z]}})};connect=(L)=>{if(!L)throw new E({errorKey:"wallet_provider_not_found",info:{wallet:k5.WALLETCONNECT,chain:this.chain}});return new S({chain:this.chain,walletconnect:this.walletconnect,provider:L})}}var o=async({chain:L,walletconnect:O,provider:F})=>new S({chain:L,walletconnect:O,provider:F});import{SwapKitError as p5}from"@swapkit/helpers";var W5=(L)=>{let O=[];for(let F of L){let[p]=F.split(":");if(p&&!O.includes(p))O.push(p)}return O},E5=(L)=>{switch(L){case"eip155":return Object.values(H);case"cosmos":return Object.values(T);case"solana":return Object.values(a);case"polkadot":return Object.values(L5);case"near":return Object.values(j5);default:throw new p5({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:L}})}},_5=(L)=>{switch(L){case"eip155":return Object.values(i);case"cosmos":return[];case"solana":return Object.values(n);case"polkadot":return Object.values(O5);case"near":return Object.values(F5);default:throw new p5({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:L}})}},f5=(L)=>{let O=W5(L);return Object.fromEntries(O.map((F)=>[F,{methods:E5(F),chains:L.filter((p)=>p.startsWith(F)),events:_5(F)}]))};var w5=R5({name:"connectWalletconnect",walletType:m.WALLETCONNECT,supportedChains:[j.Arbitrum,j.Avalanche,j.Base,j.BinanceSmartChain,j.Cosmos,j.Ethereum,j.Kujira,j.Maya,j.Near,j.Optimism,j.Polygon,j.THORChain],connect:({addChain:L,supportedChains:O,walletType:F})=>async function p(V,z){let f=B5({chains:V,supportedChains:O,walletType:F}),{walletConnectProjectId:X}=Q5.get("apiKeys");if(!X)throw new G("wallet_walletconnect_project_id_not_specified");let U=await S5(f,X,z);if(!U)throw new G("wallet_walletconnect_connection_not_established");let{session:$,accounts:Y}=U;return await Promise.all(f.map(async(q)=>{let r=W(q,Y),_=await H5({session:$,address:r,chain:q,walletconnect:U});L({..._,address:r,chain:q,disconnect:U.disconnect,walletType:m.WALLETCONNECT})})),!0}}),n5=X5(w5);async function H5({chain:L,walletconnect:O,address:F,session:p}){switch(L){case j.Arbitrum:case j.Avalanche:case j.Base:case j.BinanceSmartChain:case j.Ethereum:case j.Optimism:case j.Polygon:{let{getProvider:V,getEvmToolbox:z}=await import("@swapkit/toolboxes/evm"),f=await V(L),X=await o({walletconnect:O,chain:L,provider:f});return await z(L,{provider:f,signer:X})}case j.THORChain:{let{SignMode:V}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:z}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),{encodePubkey:f,makeAuthInfoBytes:X}=(await import("@cosmjs/proto-signing")).default,{makeSignDoc:U}=(await import("@cosmjs/amino")).default,{getCosmosToolbox:$,buildAminoMsg:Y,buildEncodedTxBody:q,createStargateClient:r,fromBase64:_,getDefaultChainFee:Z5,parseAminoMessageForDirectSigning:y5}=await import("@swapkit/toolboxes/cosmos"),D=await $(j.THORChain);async function G5(J){let k=await D.getAccount(J);if(L!==j.THORChain)return k;let[{address:K,algo:B,pubkey:u}]=await O?.client.request({chainId:P,topic:p.topic,request:{method:"cosmos_getAccounts",params:{}}});return{...k,address:K,pubkey:{type:B,value:u}}}let R=Z5(L),J5=(J)=>O?.client.request({chainId:P,topic:p.topic,request:{method:"cosmos_signAmino",params:{signerAddress:F,signDoc:J}}});async function x({assetValue:J,memo:b,...k}){let K=await D.getAccount(F);if(!K)throw new G({errorKey:"wallet_missing_params",info:{account:K}});if(!K.pubkey)throw new G({errorKey:"wallet_missing_params",info:{account:K,pubkey:K?.pubkey}});let{accountNumber:B,sequence:u=0}=K,M=[Y({assetValue:J,memo:b,sender:F,...k})],K5=D5.THORChain,$5=U(M,R,K5,b,B?.toString(),u?.toString()||"0"),w=await J5($5),q5=await q({chain:j.THORChain,msgs:M.map(y5),memo:b||""}),v5=f(K.pubkey),Y5=X([{pubkey:v5,sequence:u}],R.amount,Number.parseInt(R.gas),void 0,void 0,V.SIGN_MODE_LEGACY_AMINO_JSON),r5=z.fromPartial({bodyBytes:q5,authInfoBytes:Y5,signatures:[_(typeof w.signature==="string"?w.signature:w.signature.signature)]}),P5=z.encode(r5).finish();return(await(await r(Q5.get("rpcUrls")[j.THORChain])).broadcastTx(P5)).transactionHash}return{...D,transfer:(J)=>x(J),deposit:(J)=>x(J),getAccount:G5}}case j.Near:{let{getNearToolbox:V}=await import("@swapkit/toolboxes/near"),{DEFAULT_NEAR_METHODS:z}=await import("../../chunk-bexr8da2.js");return await V({signer:{getPublicKey(){return Promise.reject(new G("wallet_walletconnect_method_not_supported",{method:"getPublicKey"}))},signNep413Message(U,$,Y,q,r){return Promise.reject(new G("wallet_walletconnect_method_not_supported",{method:"signNep413Message"}))},async signTransaction(U){if(!O)throw new G("wallet_walletconnect_connection_not_established");let $=await O.client.request({topic:p.topic,chainId:v(j.Near),request:{method:z.NEAR_SIGN_AND_SEND_TRANSACTION,params:{transaction:U}}});return[new Uint8Array(32),$]},signDelegateAction(U){return Promise.reject(new G("wallet_walletconnect_method_not_supported",{method:"signDelegateAction"}))},getAddress(){return Promise.resolve(F)}}})}default:throw new G({errorKey:"wallet_chain_not_supported",info:{chain:L,wallet:m.WALLETCONNECT}})}}async function S5(L,O,F){let p;try{if(!O)throw new G("wallet_walletconnect_project_id_not_specified");let V=f5(L.map(v)),{WalletConnectModalSign:z}=await import("@walletconnect/modal-sign-html"),f=new z({logger:V5,relayUrl:U5,projectId:O,metadata:F?.metadata||z5,...F?.core}),X=await f.getSession();if(X)await f.disconnect({topic:X.topic,reason:{code:0,message:"Resetting session"}});let U=await f.connect({requiredNamespaces:V}),$=Object.values(U.namespaces).flatMap((q)=>q.accounts);return{session:U,accounts:$,client:f,disconnect:async()=>{await f.disconnect({topic:U.topic,reason:{code:0,message:"User disconnected"}})}}}catch(V){}finally{if(p)p.closeModal()}return}export{w5 as walletconnectWallet,n5 as WC_SUPPORTED_CHAINS,P as THORCHAIN_MAINNET_ID,I as POLYGON_MAINNET_ID,h as OPTIMISM_MAINNET_ID,c as NEAR_TESTNET_ID,e as NEAR_MAINNET_ID,C as MAYACHAIN_MAINNET_ID,d as KUJIRA_MAINNET_ID,g as ETHEREUM_MAINNET_ID,a as DEFAULT_SOLANA_METHODS,n as DEFAULT_SOLANA_EVENTS,U5 as DEFAULT_RELAY_URL,L5 as DEFAULT_POLKADOT_METHODS,O5 as DEFAULT_POLKADOT_EVENTS,j5 as DEFAULT_NEAR_METHODS,F5 as DEFAULT_NEAR_EVENTS,V5 as DEFAULT_LOGGER,i as DEFAULT_EIP_155_EVENTS,H as DEFAULT_EIP155_METHODS,T as DEFAULT_COSMOS_METHODS,FL as DEFAULT_COSMOS_EVENTS,z5 as DEFAULT_APP_METADATA,s as COSMOS_HUB_MAINNET_ID,A as BSC_MAINNET_ID,t as BASE_MAINNET_ID,N as AVALANCHE_MAINNET_ID,l as ARBITRUM_ONE_MAINNET_ID};
1
+ import{a as A,b as I,c as l,d as s,e as W,f as t,g as e,h as c,i,j as o,k as a,l as n,m as L5,n as O5,o as N,p as y5,q as x,r as F5,s as g,t as FL,u as f5,v as p5,w as U5,x as V5,y as z5,z as Q5}from"../../chunk-bexr8da2.js";import{A as J5}from"../../chunk-th8ggrmx.js";import{C as y,D as G}from"../../chunk-qwd1kp32.js";import{Chain as j,ChainId as B5,SKConfig as G5,SwapKitError as Z,WalletOption as C,createWallet as r5,filterSupportedChains as H5}from"@swapkit/helpers";import{SwapKitError as H,WalletOption as W5}from"@swapkit/helpers";import{AbstractSigner as E5}from"ethers";import{Chain as X,SKConfig as P5}from"@swapkit/helpers";var r=(L,O)=>{return(O.find((U)=>U.startsWith(b(L)))||"")?.split(":")?.[2]||""},b=(L)=>{switch(L){case X.Avalanche:return s;case X.Base:return n;case X.BinanceSmartChain:return l;case X.Ethereum:return I;case X.THORChain:return W;case X.Arbitrum:return i;case X.Optimism:return o;case X.Polygon:return a;case X.Maya:return c;case X.Cosmos:return t;case X.Kujira:return e;case X.Near:{let{isStagenet:O}=P5.get("envs");return O?O5:L5}default:return""}};class M extends E5{address;chain;walletconnect;provider;constructor({chain:L,provider:O,walletconnect:F}){super(O);this.chain=L,this.walletconnect=F,this.provider=O,this.address=""}getAddress=async()=>{if(!this.walletconnect)throw new H("wallet_walletconnect_connection_not_established");if(!this.address)this.address=r(this.chain,this.walletconnect.accounts||[]);return this.address};signMessage=async(L)=>{let O=await this.walletconnect?.client.request({chainId:b(this.chain),topic:this.walletconnect.session.topic||"",request:{method:"eth_sign",params:[L]}});return O.startsWith("0x")?O:`0x${O}`};signTransaction=()=>{throw new H("wallet_walletconnect_method_not_supported",{method:"signTransaction"})};signTypedData=()=>{throw new H("wallet_walletconnect_method_not_supported",{method:"signTypedData"})};sendTransaction=async({from:L,to:O,value:F,data:f})=>{let{toHexString:U}=await import("@swapkit/toolboxes/evm"),p={from:L,to:O,value:U(BigInt(F||0)),data:f};return await this.walletconnect?.client.request({chainId:b(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sendTransaction",params:[p]}})};connect=(L)=>{if(!L)throw new H({errorKey:"wallet_provider_not_found",info:{wallet:W5.WALLETCONNECT,chain:this.chain}});return new M({chain:this.chain,walletconnect:this.walletconnect,provider:L})}}var j5=async({chain:L,walletconnect:O,provider:F})=>new M({chain:L,walletconnect:O,provider:F});import{SwapKitError as X5}from"@swapkit/helpers";var _5=(L)=>{let O=[];for(let F of L){let[f]=F.split(":");if(f&&!O.includes(f))O.push(f)}return O},D5=(L)=>{switch(L){case"eip155":return Object.values(x);case"cosmos":return Object.values(g);case"solana":return Object.values(f5);case"polkadot":return Object.values(U5);case"near":return Object.values(z5);default:throw new X5({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:L}})}},R5=(L)=>{switch(L){case"eip155":return Object.values(F5);case"cosmos":return[];case"solana":return Object.values(p5);case"polkadot":return Object.values(V5);case"near":return Object.values(Q5);default:throw new X5({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:L}})}},Z5=(L)=>{let O=_5(L);return Object.fromEntries(O.map((F)=>[F,{methods:D5(F),chains:L.filter((f)=>f.startsWith(F)),events:R5(F)}]))};var T5=r5({name:"connectWalletconnect",walletType:C.WALLETCONNECT,supportedChains:[j.Arbitrum,j.Avalanche,j.Base,j.BinanceSmartChain,j.Cosmos,j.Ethereum,j.Kujira,j.Maya,j.Near,j.Optimism,j.Polygon,j.THORChain],connect:({addChain:L,supportedChains:O,walletType:F})=>async function f(U,p){let z=H5({chains:U,supportedChains:O,walletType:F}),{walletConnectProjectId:J}=G5.get("apiKeys");if(!J)throw new Z("wallet_walletconnect_project_id_not_specified");let V=await S5(z,J,p);if(!V)throw new Z("wallet_walletconnect_connection_not_established");let{accounts:q}=V;return await Promise.all(z.map(async(Q)=>{let Y=r(Q,q||[]),v=await u5({address:Y,chain:Q,walletconnect:V});L({...v,address:Y,chain:Q,disconnect:V.disconnect,walletType:C.WALLETCONNECT})})),!0}}),n5=J5(T5);async function u5({chain:L,walletconnect:O,address:F}){let f=O?.session;if(!f)throw new Z("wallet_walletconnect_connection_not_established");switch(L){case j.Arbitrum:case j.Avalanche:case j.Base:case j.BinanceSmartChain:case j.Ethereum:case j.Optimism:case j.Polygon:{let{getProvider:U,getEvmToolbox:p}=await import("@swapkit/toolboxes/evm"),z=await U(L),J=await j5({walletconnect:O,chain:L,provider:z});return await p(L,{provider:z,signer:J})}case j.THORChain:{let{SignMode:U}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:p}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),{encodePubkey:z,makeAuthInfoBytes:J}=(await import("@cosmjs/proto-signing")).default,{makeSignDoc:V}=(await import("@cosmjs/amino")).default,{getCosmosToolbox:q,buildAminoMsg:Q,buildEncodedTxBody:Y,createStargateClient:v,fromBase64:E,getDefaultChainFee:T,parseAminoMessageForDirectSigning:u}=await import("@swapkit/toolboxes/cosmos"),P=await q(j.THORChain);async function S(K){let R=await P.getAccount(K);if(L!==j.THORChain)return R;let[{address:$,algo:w,pubkey:B}]=await O?.client.request({chainId:W,topic:f.topic,request:{method:"cosmos_getAccounts",params:{}}});return{...R,address:$,pubkey:{type:w,value:B}}}let k=T(L),d=(K)=>O?.client.request({chainId:W,topic:f.topic,request:{method:"cosmos_signAmino",params:{signerAddress:F,signDoc:K}}});async function _({assetValue:K,memo:D,...R}){let $=await P.getAccount(F);if(!$)throw new Z({errorKey:"wallet_missing_params",info:{account:$}});if(!$.pubkey)throw new Z({errorKey:"wallet_missing_params",info:{account:$,pubkey:$?.pubkey}});let{accountNumber:w,sequence:B=0}=$,h=[Q({assetValue:K,memo:D,sender:F,...R})],K5=B5.THORChain,$5=V(h,k,K5,D,w?.toString(),B?.toString()||"0"),m=await d($5),q5=await Y({chain:j.THORChain,msgs:h.map(u),memo:D||""}),Y5=z($.pubkey),v5=J([{pubkey:Y5,sequence:B}],k.amount,Number.parseInt(k.gas),void 0,void 0,U.SIGN_MODE_LEGACY_AMINO_JSON),b5=p.fromPartial({bodyBytes:q5,authInfoBytes:v5,signatures:[E(typeof m.signature==="string"?m.signature:m.signature.signature)]}),k5=p.encode(b5).finish();return(await(await v(G5.get("rpcUrls")[j.THORChain])).broadcastTx(k5)).transactionHash}return{...P,transfer:(K)=>_(K),deposit:(K)=>_(K),getAccount:S}}case j.Near:{let{getNearToolbox:U}=await import("@swapkit/toolboxes/near"),{DEFAULT_NEAR_METHODS:p}=await import("../../chunk-bexr8da2.js");return await U({signer:{getPublicKey(){return Promise.reject(new Z("wallet_walletconnect_method_not_supported",{method:"getPublicKey"}))},signNep413Message(V,q,Q,Y,v){return Promise.reject(new Z("wallet_walletconnect_method_not_supported",{method:"signNep413Message"}))},async signTransaction(V){if(!O)throw new Z("wallet_walletconnect_connection_not_established");let q=await O.client.request({topic:f.topic,chainId:b(j.Near),request:{method:p.NEAR_SIGN_AND_SEND_TRANSACTION,params:{transaction:V}}});return[new Uint8Array(32),q]},signDelegateAction(V){return Promise.reject(new Z("wallet_walletconnect_method_not_supported",{method:"signDelegateAction"}))},getAddress(){return Promise.resolve(F)}}})}default:throw new Z({errorKey:"wallet_chain_not_supported",info:{chain:L,wallet:C.WALLETCONNECT}})}}async function S5(L,O,F){let f,U,p,z;try{if(!O)throw new Z("wallet_walletconnect_project_id_not_specified");let J=Z5(L.map(b)),{SignClient:V}=await import("@walletconnect/sign-client"),{WalletConnectModal:q}=await import("@walletconnect/modal"),Q=new V({logger:N,relayUrl:A,projectId:O,metadata:F?.metadata||y5,...F?.core}),Y=new q({logger:N,relayUrl:A,projectId:O,...F?.core}),v=await Q.session.getAll()[0];if(v)await Q.disconnect({topic:v.topic,reason:{code:0,message:"Resetting session"}});let{uri:E,approval:T}=await Q.connect({requiredNamespaces:J});if(E){let P=function(S){let k=[];for(let[d,_]of Object.entries(S.namespaces))k.push(..._.accounts);return k};Y.openModal({uri:E}),p=await T(),Y.closeModal(),z=P(p)}let u=async()=>{p&&await Q.disconnect({topic:p.topic,reason:{code:0,message:"User disconnected"}})};if(!p)throw new Z("wallet_walletconnect_connection_not_established");return{signer:U,session:p,accounts:z,client:Q,disconnect:u}}catch(J){}finally{if(f)f.closeModal()}return}export{T5 as walletconnectWallet,n5 as WC_SUPPORTED_CHAINS,W as THORCHAIN_MAINNET_ID,a as POLYGON_MAINNET_ID,o as OPTIMISM_MAINNET_ID,O5 as NEAR_TESTNET_ID,L5 as NEAR_MAINNET_ID,c as MAYACHAIN_MAINNET_ID,e as KUJIRA_MAINNET_ID,I as ETHEREUM_MAINNET_ID,f5 as DEFAULT_SOLANA_METHODS,p5 as DEFAULT_SOLANA_EVENTS,A as DEFAULT_RELAY_URL,U5 as DEFAULT_POLKADOT_METHODS,V5 as DEFAULT_POLKADOT_EVENTS,z5 as DEFAULT_NEAR_METHODS,Q5 as DEFAULT_NEAR_EVENTS,N as DEFAULT_LOGGER,F5 as DEFAULT_EIP_155_EVENTS,x as DEFAULT_EIP155_METHODS,g as DEFAULT_COSMOS_METHODS,FL as DEFAULT_COSMOS_EVENTS,y5 as DEFAULT_APP_METADATA,t as COSMOS_HUB_MAINNET_ID,l as BSC_MAINNET_ID,n as BASE_MAINNET_ID,s as AVALANCHE_MAINNET_ID,i as ARBITRUM_ONE_MAINNET_ID};
2
2
 
3
- //# debugId=2E19DE3633C3931E64756E2164756E21
3
+ //# debugId=CF132A71D84C0D7E64756E2164756E21
@@ -2,12 +2,12 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/walletconnect/index.ts", "../src/walletconnect/evmSigner.ts", "../src/walletconnect/helpers.ts", "../src/walletconnect/namespaces.ts"],
4
4
  "sourcesContent": [
5
- "import type { StdSignDoc } from \"@cosmjs/amino\";\nimport {\n Chain,\n ChainId,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams, createThorchainToolbox } from \"@swapkit/toolboxes/cosmos\";\nimport type { NearSigner } from \"@swapkit/toolboxes/near\";\nimport type { WalletConnectModalSign } from \"@walletconnect/modal-sign-html\";\nimport type { SessionTypes, SignClientTypes } from \"@walletconnect/types\";\nimport type { Transaction } from \"near-api-js/lib/transaction\";\n\nimport { getWalletSupportedChains } from \"../utils\";\nimport {\n DEFAULT_APP_METADATA,\n DEFAULT_COSMOS_METHODS,\n DEFAULT_LOGGER,\n DEFAULT_RELAY_URL,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\nimport { getEVMSigner } from \"./evmSigner\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport { getRequiredNamespaces } from \"./namespaces\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const walletconnectWallet = createWallet({\n name: \"connectWalletconnect\",\n walletType: WalletOption.WALLETCONNECT,\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Cosmos,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.Near,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectWalletconnect(\n chains: Chain[],\n walletconnectOptions?: SignClientTypes.Options,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const { walletConnectProjectId } = SKConfig.get(\"apiKeys\");\n\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n\n const walletconnect = await getWalletconnect(\n filteredChains,\n walletConnectProjectId,\n walletconnectOptions,\n );\n\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n const { session, accounts } = walletconnect;\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const address = getAddressByChain(chain, accounts);\n const toolbox = await getToolbox({ session, address, chain, walletconnect });\n\n addChain({\n ...toolbox,\n address,\n chain,\n disconnect: walletconnect.disconnect,\n walletType: WalletOption.WALLETCONNECT,\n });\n }),\n );\n\n return true;\n },\n});\n\nexport const WC_SUPPORTED_CHAINS = getWalletSupportedChains(walletconnectWallet);\nexport type Walletconnect = Awaited<ReturnType<typeof getWalletconnect>>;\n\nasync function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({\n chain,\n walletconnect,\n address,\n session,\n}: {\n walletconnect: Walletconnect;\n session: SessionTypes.Struct;\n chain: T;\n address: string;\n}) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ walletconnect, chain, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n\n case Chain.THORChain: {\n const { SignMode } = await import(\"cosmjs-types/cosmos/tx/signing/v1beta1/signing.js\");\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx.js\");\n const { encodePubkey, makeAuthInfoBytes } = (await import(\"@cosmjs/proto-signing\")).default;\n const { makeSignDoc } = (await import(\"@cosmjs/amino\")).default;\n const {\n getCosmosToolbox,\n buildAminoMsg,\n buildEncodedTxBody,\n createStargateClient,\n fromBase64,\n getDefaultChainFee,\n parseAminoMessageForDirectSigning,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n\n async function getAccount(accountAddress: string) {\n const cosmosToolbox = toolbox;\n const account = await (\n cosmosToolbox as Awaited<ReturnType<typeof createThorchainToolbox>>\n ).getAccount(accountAddress);\n\n if (chain !== Chain.THORChain) {\n return account;\n }\n\n const [{ address, algo, pubkey }] = (await walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,\n params: {},\n },\n })) as [{ address: string; algo: string; pubkey: string }];\n\n return { ...account, address, pubkey: { type: algo, value: pubkey } };\n }\n\n const fee = getDefaultChainFee(chain);\n\n const signRequest = (signDoc: StdSignDoc) =>\n walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_SIGN_AMINO,\n params: { signerAddress: address, signDoc },\n },\n });\n\n async function thorchainTransfer({\n assetValue,\n memo,\n ...rest\n }: GenericTransferParams | ThorchainDepositParams) {\n const account = await toolbox.getAccount(address);\n if (!account) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { account } });\n }\n\n if (!account.pubkey) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { account, pubkey: account?.pubkey },\n });\n }\n\n const { accountNumber, sequence = 0 } = account;\n\n const msgs = [buildAminoMsg({ assetValue, memo, sender: address, ...rest })];\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n msgs,\n fee,\n chainId,\n memo,\n accountNumber?.toString(),\n sequence?.toString() || \"0\",\n );\n\n const signature: any = await signRequest(signDoc);\n\n const bodyBytes = await buildEncodedTxBody({\n chain: Chain.THORChain,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n memo: memo || \"\",\n });\n const pubkey = encodePubkey(account.pubkey);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey, sequence }],\n fee.amount,\n Number.parseInt(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_LEGACY_AMINO_JSON,\n );\n\n const txRaw = TxRaw.fromPartial({\n bodyBytes,\n authInfoBytes,\n signatures: [\n fromBase64(\n typeof signature.signature === \"string\"\n ? signature.signature\n : signature.signature.signature,\n ),\n ],\n });\n const txBytes = TxRaw.encode(txRaw).finish();\n\n const broadcaster = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const result = await broadcaster.broadcastTx(txBytes);\n return result.transactionHash;\n }\n\n return {\n ...toolbox,\n transfer: (params: GenericTransferParams) => thorchainTransfer(params),\n deposit: (params: ThorchainDepositParams) => thorchainTransfer(params),\n getAccount,\n };\n }\n\n case Chain.Near: {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const { DEFAULT_NEAR_METHODS } = await import(\"./constants\");\n\n // Create a NEAR signer that uses WalletConnect\n const signer = {\n getPublicKey() {\n // WalletConnect NEAR doesn't expose public key directly\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"getPublicKey\",\n }),\n );\n },\n\n signNep413Message(\n _message: string,\n _accountId: string,\n _recipient: string,\n _nonce: Uint8Array,\n _callbackUrl?: string,\n ) {\n // WalletConnect NEAR spec doesn't include NEP-413 message signing\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signNep413Message\",\n }),\n );\n },\n\n async signTransaction(transaction: Transaction) {\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n // WalletConnect signs and sends in one operation\n const result = await walletconnect.client.request({\n topic: session.topic,\n chainId: chainToChainId(Chain.Near),\n request: {\n method: DEFAULT_NEAR_METHODS.NEAR_SIGN_AND_SEND_TRANSACTION,\n params: { transaction },\n },\n });\n // Return dummy hash and result\n return [new Uint8Array(32), result];\n },\n\n signDelegateAction(_delegateAction: any) {\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signDelegateAction\",\n }),\n );\n },\n\n getAddress() {\n return Promise.resolve(address);\n },\n } as NearSigner;\n\n const toolbox = await getNearToolbox({ signer });\n return toolbox;\n }\n\n default:\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.WALLETCONNECT },\n });\n }\n}\n\nasync function getWalletconnect(\n chains: Chain[],\n walletConnectProjectId?: string,\n walletconnectOptions?: SignClientTypes.Options,\n) {\n let modal: WalletConnectModalSign | undefined;\n try {\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));\n\n const { WalletConnectModalSign } = await import(\"@walletconnect/modal-sign-html\");\n\n const client = new WalletConnectModalSign({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n metadata: walletconnectOptions?.metadata || DEFAULT_APP_METADATA,\n ...walletconnectOptions?.core,\n });\n\n const oldSession = await client.getSession();\n\n // disconnect old Session cause we can't handle using it with current ui\n if (oldSession) {\n await client.disconnect({\n topic: oldSession.topic,\n reason: { code: 0, message: \"Resetting session\" },\n });\n }\n\n const session = await client.connect({ requiredNamespaces });\n\n const accounts = Object.values(session.namespaces).flatMap(\n (namespace: any) => namespace.accounts,\n );\n\n const disconnect = async () => {\n await client.disconnect({\n topic: session.topic,\n reason: { code: 0, message: \"User disconnected\" },\n });\n };\n\n return { session, accounts, client, disconnect };\n } catch (_e) {\n // Errors are handled by returning undefined\n } finally {\n if (modal) {\n // @ts-expect-error wrong typing\n modal.closeModal();\n }\n }\n return undefined;\n}\n",
6
- "import { type EVMChain, SwapKitError, WalletOption } from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TransactionResponse } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { DEFAULT_EIP155_METHODS } from \"./constants\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport type { Walletconnect } from \"./index\";\n\ninterface WalletconnectEVMSignerParams {\n chain: EVMChain;\n walletconnect: Walletconnect;\n provider: Provider | JsonRpcProvider;\n}\n\nclass WalletconnectSigner extends AbstractSigner {\n address: string;\n\n private chain: EVMChain;\n private walletconnect: Walletconnect;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, provider, walletconnect }: WalletconnectEVMSignerParams) {\n super(provider);\n this.chain = chain;\n this.walletconnect = walletconnect;\n this.provider = provider;\n this.address = \"\";\n }\n\n // biome-ignore lint/suspicious/useAwait: fulfil implementation type\n getAddress = async () => {\n if (!this.walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n if (!this.address) {\n this.address = getAddressByChain(this.chain, this.walletconnect.accounts);\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n // this is probably broken\n const txHash = (await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SIGN,\n params: [message],\n },\n })) as string;\n\n return txHash.startsWith(\"0x\") ? txHash : `0x${txHash}`;\n };\n\n signTransaction = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTransaction\",\n });\n\n // const baseTx = {\n // from,\n // to,\n // value: BigNumber.from(value || 0).toHexString(),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n // ANCHOR (@Towan) - Implement in future\n signTypedData = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTypedData\",\n });\n\n // const { toHexString } = await import('@swapkit/toolboxes/evm');\n\n // const baseTx = {\n // from,\n // to,\n // value: toHexString(value || 0n),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n sendTransaction = async ({ from, to, value, data }: TransactionRequest) => {\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const baseTx = {\n from,\n to,\n value: toHexString(BigInt(value || 0)),\n data,\n };\n const response = await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SEND_TRANSACTION,\n params: [baseTx],\n },\n });\n\n return response as TransactionResponse;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: { wallet: WalletOption.WALLETCONNECT, chain: this.chain },\n });\n }\n\n return new WalletconnectSigner({\n chain: this.chain,\n walletconnect: this.walletconnect,\n provider,\n });\n };\n}\nexport const getEVMSigner = async ({\n chain,\n walletconnect,\n provider,\n}: WalletconnectEVMSignerParams) => new WalletconnectSigner({ chain, walletconnect, provider });\n",
5
+ "import type { StdSignDoc } from \"@cosmjs/amino\";\nimport {\n Chain,\n ChainId,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams, createThorchainToolbox } from \"@swapkit/toolboxes/cosmos\";\nimport type { NearSigner } from \"@swapkit/toolboxes/near\";\nimport type { WalletConnectModal } from \"@walletconnect/modal\";\nimport type { SessionTypes, SignClientTypes } from \"@walletconnect/types\";\nimport type { Transaction } from \"near-api-js/lib/transaction\";\n\nimport type { SignClient } from \"@walletconnect/sign-client\";\nimport { getWalletSupportedChains } from \"../utils\";\nimport {\n DEFAULT_APP_METADATA,\n DEFAULT_COSMOS_METHODS,\n DEFAULT_LOGGER,\n DEFAULT_RELAY_URL,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\nimport { getEVMSigner } from \"./evmSigner\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport { getRequiredNamespaces } from \"./namespaces\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const walletconnectWallet = createWallet({\n name: \"connectWalletconnect\",\n walletType: WalletOption.WALLETCONNECT,\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Cosmos,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.Near,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectWalletconnect(\n chains: Chain[],\n walletconnectOptions?: SignClientTypes.Options,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const { walletConnectProjectId } = SKConfig.get(\"apiKeys\");\n\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n\n const walletconnect = await getWalletconnect(\n filteredChains,\n walletConnectProjectId,\n walletconnectOptions,\n );\n\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n const { accounts } = walletconnect;\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const address = getAddressByChain(chain, accounts || []);\n const toolbox = await getToolbox({ address, chain, walletconnect });\n\n addChain({\n ...toolbox,\n address,\n chain,\n disconnect: walletconnect.disconnect,\n walletType: WalletOption.WALLETCONNECT,\n });\n }),\n );\n\n return true;\n },\n});\n\nexport const WC_SUPPORTED_CHAINS = getWalletSupportedChains(walletconnectWallet);\nexport type Walletconnect = Awaited<ReturnType<typeof getWalletconnect>>;\n\nasync function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({\n chain,\n walletconnect,\n address,\n}: {\n walletconnect: Walletconnect;\n chain: T;\n address: string;\n}) {\n const session = walletconnect?.session;\n if (!session) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ walletconnect, chain, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n\n case Chain.THORChain: {\n const { SignMode } = await import(\"cosmjs-types/cosmos/tx/signing/v1beta1/signing.js\");\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx.js\");\n const { encodePubkey, makeAuthInfoBytes } = (await import(\"@cosmjs/proto-signing\")).default;\n const { makeSignDoc } = (await import(\"@cosmjs/amino\")).default;\n const {\n getCosmosToolbox,\n buildAminoMsg,\n buildEncodedTxBody,\n createStargateClient,\n fromBase64,\n getDefaultChainFee,\n parseAminoMessageForDirectSigning,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n\n async function getAccount(accountAddress: string) {\n const cosmosToolbox = toolbox;\n const account = await (\n cosmosToolbox as Awaited<ReturnType<typeof createThorchainToolbox>>\n ).getAccount(accountAddress);\n\n if (chain !== Chain.THORChain) {\n return account;\n }\n\n const [{ address, algo, pubkey }] = (await walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n // @ts-ignore\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,\n params: {},\n },\n })) as [{ address: string; algo: string; pubkey: string }];\n\n return { ...account, address, pubkey: { type: algo, value: pubkey } };\n }\n\n const fee = getDefaultChainFee(chain);\n\n const signRequest = (signDoc: StdSignDoc) =>\n walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_SIGN_AMINO,\n params: { signerAddress: address, signDoc },\n },\n });\n\n async function thorchainTransfer({\n assetValue,\n memo,\n ...rest\n }: GenericTransferParams | ThorchainDepositParams) {\n const account = await toolbox.getAccount(address);\n if (!account) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { account } });\n }\n\n if (!account.pubkey) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { account, pubkey: account?.pubkey },\n });\n }\n\n const { accountNumber, sequence = 0 } = account;\n\n const msgs = [buildAminoMsg({ assetValue, memo, sender: address, ...rest })];\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n msgs,\n fee,\n chainId,\n memo,\n accountNumber?.toString(),\n sequence?.toString() || \"0\",\n );\n\n const signature: any = await signRequest(signDoc);\n\n const bodyBytes = await buildEncodedTxBody({\n chain: Chain.THORChain,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n memo: memo || \"\",\n });\n const pubkey = encodePubkey(account.pubkey);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey, sequence }],\n fee.amount,\n Number.parseInt(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_LEGACY_AMINO_JSON,\n );\n\n const txRaw = TxRaw.fromPartial({\n bodyBytes,\n authInfoBytes,\n signatures: [\n fromBase64(\n typeof signature.signature === \"string\"\n ? signature.signature\n : signature.signature.signature,\n ),\n ],\n });\n const txBytes = TxRaw.encode(txRaw).finish();\n\n const broadcaster = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const result = await broadcaster.broadcastTx(txBytes);\n return result.transactionHash;\n }\n\n return {\n ...toolbox,\n transfer: (params: GenericTransferParams) => thorchainTransfer(params),\n deposit: (params: ThorchainDepositParams) => thorchainTransfer(params),\n getAccount,\n };\n }\n\n case Chain.Near: {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const { DEFAULT_NEAR_METHODS } = await import(\"./constants\");\n\n // Create a NEAR signer that uses WalletConnect\n const signer = {\n getPublicKey() {\n // WalletConnect NEAR doesn't expose public key directly\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"getPublicKey\",\n }),\n );\n },\n\n signNep413Message(\n _message: string,\n _accountId: string,\n _recipient: string,\n _nonce: Uint8Array,\n _callbackUrl?: string,\n ) {\n // WalletConnect NEAR spec doesn't include NEP-413 message signing\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signNep413Message\",\n }),\n );\n },\n\n async signTransaction(transaction: Transaction) {\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n // WalletConnect signs and sends in one operation\n const result = await walletconnect.client.request({\n topic: session.topic,\n chainId: chainToChainId(Chain.Near),\n request: {\n method: DEFAULT_NEAR_METHODS.NEAR_SIGN_AND_SEND_TRANSACTION,\n params: { transaction },\n },\n });\n // Return dummy hash and result\n return [new Uint8Array(32), result];\n },\n\n signDelegateAction(_delegateAction: any) {\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signDelegateAction\",\n }),\n );\n },\n\n getAddress() {\n return Promise.resolve(address);\n },\n } as NearSigner;\n\n const toolbox = await getNearToolbox({ signer });\n return toolbox;\n }\n\n default:\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.WALLETCONNECT },\n });\n }\n}\n\nasync function getWalletconnect(\n chains: Chain[],\n walletConnectProjectId?: string,\n walletconnectOptions?: SignClientTypes.Options,\n) {\n let modal: WalletConnectModal | undefined;\n let signer: typeof SignClient | undefined;\n let session: SessionTypes.Struct | undefined;\n let accounts: string[] | undefined;\n try {\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));\n\n const { SignClient } = await import(\"@walletconnect/sign-client\");\n const { WalletConnectModal } = await import(\"@walletconnect/modal\");\n\n const client = new SignClient({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n metadata: walletconnectOptions?.metadata || DEFAULT_APP_METADATA,\n ...walletconnectOptions?.core,\n });\n\n const modal = new WalletConnectModal({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n ...walletconnectOptions?.core,\n });\n\n const oldSession = await client.session.getAll()[0];\n\n // disconnect old Session cause we can't handle using it with current ui\n if (oldSession) {\n await client.disconnect({\n topic: oldSession.topic,\n reason: { code: 0, message: \"Resetting session\" },\n });\n }\n\n const { uri, approval } = await client.connect({\n // Optionally: pass a known prior pairing (e.g. from `client.core.pairing.getPairings()`) to skip the `uri` step.\n // pairingTopic: pairing?.topic,\n // Provide the namespaces and chains (e.g. `eip155` for EVM-based chains) we want to use in this session.\n requiredNamespaces,\n });\n\n if (uri) {\n modal.openModal({ uri });\n // Await session approval from the wallet.\n session = await approval();\n // Handle the returned session (e.g. update UI to \"connected\" state).\n // Close the QRCode modal in case it was open.\n modal.closeModal();\n\n function extractAccountsFromSession(session: SessionTypes.Struct) {\n const accounts: string[] = [];\n\n for (const [_namespace, data] of Object.entries(session.namespaces)) {\n accounts.push(...data.accounts);\n }\n\n return accounts;\n }\n\n accounts = extractAccountsFromSession(session);\n }\n\n const disconnect = async () => {\n session &&\n (await client.disconnect({\n topic: session.topic,\n reason: { code: 0, message: \"User disconnected\" },\n }));\n };\n\n if (!session) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n return { signer, session, accounts, client, disconnect };\n } catch (_e) {\n // Errors are handled by returning undefined\n } finally {\n if (modal) {\n modal.closeModal();\n }\n }\n return undefined;\n}\n",
6
+ "import { type EVMChain, SwapKitError, WalletOption } from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TransactionResponse } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { DEFAULT_EIP155_METHODS } from \"./constants\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport type { Walletconnect } from \"./index\";\n\ninterface WalletconnectEVMSignerParams {\n chain: EVMChain;\n walletconnect: Walletconnect;\n provider: Provider | JsonRpcProvider;\n}\n\nclass WalletconnectSigner extends AbstractSigner {\n address: string;\n\n private chain: EVMChain;\n private walletconnect: Walletconnect;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, provider, walletconnect }: WalletconnectEVMSignerParams) {\n super(provider);\n this.chain = chain;\n this.walletconnect = walletconnect;\n this.provider = provider;\n this.address = \"\";\n }\n\n // biome-ignore lint/suspicious/useAwait: fulfil implementation type\n getAddress = async () => {\n if (!this.walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n if (!this.address) {\n this.address = getAddressByChain(this.chain, this.walletconnect.accounts || []);\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n // this is probably broken\n const txHash = (await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic || \"\",\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SIGN,\n params: [message],\n },\n })) as string;\n\n return txHash.startsWith(\"0x\") ? txHash : `0x${txHash}`;\n };\n\n signTransaction = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTransaction\",\n });\n\n // const baseTx = {\n // from,\n // to,\n // value: BigNumber.from(value || 0).toHexString(),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n // ANCHOR (@Towan) - Implement in future\n signTypedData = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTypedData\",\n });\n\n // const { toHexString } = await import('@swapkit/toolboxes/evm');\n\n // const baseTx = {\n // from,\n // to,\n // value: toHexString(value || 0n),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n sendTransaction = async ({ from, to, value, data }: TransactionRequest) => {\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const baseTx = {\n from,\n to,\n value: toHexString(BigInt(value || 0)),\n data,\n };\n const response = await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SEND_TRANSACTION,\n params: [baseTx],\n },\n });\n\n return response as TransactionResponse;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: { wallet: WalletOption.WALLETCONNECT, chain: this.chain },\n });\n }\n\n return new WalletconnectSigner({\n chain: this.chain,\n walletconnect: this.walletconnect,\n provider,\n });\n };\n}\nexport const getEVMSigner = async ({\n chain,\n walletconnect,\n provider,\n}: WalletconnectEVMSignerParams) => new WalletconnectSigner({ chain, walletconnect, provider });\n",
7
7
  "import { Chain, type EVMChain, SKConfig } from \"@swapkit/helpers\";\n\nimport {\n ARBITRUM_ONE_MAINNET_ID,\n AVALANCHE_MAINNET_ID,\n BASE_MAINNET_ID,\n BSC_MAINNET_ID,\n COSMOS_HUB_MAINNET_ID,\n ETHEREUM_MAINNET_ID,\n KUJIRA_MAINNET_ID,\n MAYACHAIN_MAINNET_ID,\n NEAR_MAINNET_ID,\n NEAR_TESTNET_ID,\n OPTIMISM_MAINNET_ID,\n POLYGON_MAINNET_ID,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\n\nexport const getAddressByChain = (\n chain: EVMChain | Chain.THORChain | Chain.Maya | Chain.Kujira | Chain.Cosmos | Chain.Near,\n accounts: string[],\n) => {\n const account = accounts.find((account) => account.startsWith(chainToChainId(chain))) || \"\";\n const address = account?.split(\":\")?.[2];\n\n return address || \"\";\n};\n\nexport const chainToChainId = (chain: Chain) => {\n switch (chain) {\n case Chain.Avalanche:\n return AVALANCHE_MAINNET_ID;\n case Chain.Base:\n return BASE_MAINNET_ID;\n case Chain.BinanceSmartChain:\n return BSC_MAINNET_ID;\n case Chain.Ethereum:\n return ETHEREUM_MAINNET_ID;\n case Chain.THORChain:\n return THORCHAIN_MAINNET_ID;\n case Chain.Arbitrum:\n return ARBITRUM_ONE_MAINNET_ID;\n case Chain.Optimism:\n return OPTIMISM_MAINNET_ID;\n case Chain.Polygon:\n return POLYGON_MAINNET_ID;\n case Chain.Maya:\n return MAYACHAIN_MAINNET_ID;\n case Chain.Cosmos:\n return COSMOS_HUB_MAINNET_ID;\n case Chain.Kujira:\n return KUJIRA_MAINNET_ID;\n case Chain.Near: {\n // Use testnet if stagenet is enabled\n const { isStagenet } = SKConfig.get(\"envs\");\n return isStagenet ? NEAR_TESTNET_ID : NEAR_MAINNET_ID;\n }\n default:\n return \"\";\n }\n};\n",
8
8
  "import type { ProposalTypes } from \"@walletconnect/types\";\n\nimport { SwapKitError } from \"@swapkit/helpers\";\nimport {\n DEFAULT_COSMOS_METHODS,\n DEFAULT_EIP155_METHODS,\n DEFAULT_EIP_155_EVENTS,\n DEFAULT_NEAR_EVENTS,\n DEFAULT_NEAR_METHODS,\n DEFAULT_POLKADOT_EVENTS,\n DEFAULT_POLKADOT_METHODS,\n DEFAULT_SOLANA_EVENTS,\n DEFAULT_SOLANA_METHODS,\n} from \"./constants\";\n\nexport const getNamespacesFromChains = (chains: string[]) => {\n const supportedNamespaces: string[] = [];\n for (const chainId of chains) {\n const [namespace] = chainId.split(\":\");\n if (namespace && !supportedNamespaces.includes(namespace)) {\n supportedNamespaces.push(namespace);\n }\n }\n\n return supportedNamespaces;\n};\n\nexport const getSupportedMethodsByNamespace = (namespace: string) => {\n switch (namespace) {\n case \"eip155\":\n return Object.values(DEFAULT_EIP155_METHODS);\n case \"cosmos\":\n return Object.values(DEFAULT_COSMOS_METHODS);\n case \"solana\":\n return Object.values(DEFAULT_SOLANA_METHODS);\n case \"polkadot\":\n return Object.values(DEFAULT_POLKADOT_METHODS);\n case \"near\":\n return Object.values(DEFAULT_NEAR_METHODS);\n default:\n throw new SwapKitError({\n errorKey: \"wallet_walletconnect_namespace_not_supported\",\n info: { namespace },\n });\n }\n};\n\nexport const getSupportedEventsByNamespace = (namespace: string) => {\n switch (namespace) {\n case \"eip155\":\n return Object.values(DEFAULT_EIP_155_EVENTS);\n case \"cosmos\":\n return [];\n case \"solana\":\n return Object.values(DEFAULT_SOLANA_EVENTS);\n case \"polkadot\":\n return Object.values(DEFAULT_POLKADOT_EVENTS);\n case \"near\":\n return Object.values(DEFAULT_NEAR_EVENTS);\n default:\n throw new SwapKitError({\n errorKey: \"wallet_walletconnect_namespace_not_supported\",\n info: { namespace },\n });\n }\n};\n\nexport const getRequiredNamespaces = (chains: string[]): ProposalTypes.RequiredNamespaces => {\n const selectedNamespaces = getNamespacesFromChains(chains);\n\n return Object.fromEntries(\n selectedNamespaces.map((namespace) => [\n namespace,\n {\n methods: getSupportedMethodsByNamespace(namespace),\n chains: chains.filter((chain) => chain.startsWith(namespace)),\n events: getSupportedEventsByNamespace(namespace) as any[],\n },\n ]),\n );\n};\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "2E19DE3633C3931E64756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "CF132A71D84C0D7E64756E2164756E21",
12
12
  "names": []
13
13
  }
package/package.json CHANGED
@@ -23,10 +23,11 @@
23
23
  "@scure/base": "1.2.6",
24
24
  "@scure/bip39": "1.6.0",
25
25
  "@solana/web3.js": "1.98.2",
26
- "@swapkit/helpers": "3.0.0-beta.17",
27
- "@swapkit/toolboxes": "1.0.0-beta.26",
26
+ "@swapkit/helpers": "3.0.0-beta.18",
27
+ "@swapkit/toolboxes": "1.0.0-beta.27",
28
28
  "@trezor/connect-web": "9.6.0",
29
- "@walletconnect/modal-sign-html": "2.7.0",
29
+ "@walletconnect/modal": "2.7.0",
30
+ "@walletconnect/sign-client": "2.21.4",
30
31
  "bitcoinjs-lib": "6.1.7",
31
32
  "blakejs": "1.2.1",
32
33
  "cosmjs-types": "0.9.0",
@@ -38,7 +39,7 @@
38
39
  "description": "SwapKit - Wallets",
39
40
  "devDependencies": {
40
41
  "@walletconnect/logger": "2.1.2",
41
- "@walletconnect/types": "2.21.2"
42
+ "@walletconnect/types": "2.21.4"
42
43
  },
43
44
  "exports": {
44
45
  ".": {
@@ -161,5 +162,5 @@
161
162
  "type-check:go": "tsgo"
162
163
  },
163
164
  "type": "module",
164
- "version": "3.0.0-beta.29"
165
+ "version": "3.0.0-beta.30"
165
166
  }
@@ -33,7 +33,7 @@ class WalletconnectSigner extends AbstractSigner {
33
33
  throw new SwapKitError("wallet_walletconnect_connection_not_established");
34
34
  }
35
35
  if (!this.address) {
36
- this.address = getAddressByChain(this.chain, this.walletconnect.accounts);
36
+ this.address = getAddressByChain(this.chain, this.walletconnect.accounts || []);
37
37
  }
38
38
 
39
39
  return this.address;
@@ -43,7 +43,7 @@ class WalletconnectSigner extends AbstractSigner {
43
43
  // this is probably broken
44
44
  const txHash = (await this.walletconnect?.client.request({
45
45
  chainId: chainToChainId(this.chain),
46
- topic: this.walletconnect.session.topic,
46
+ topic: this.walletconnect.session.topic || "",
47
47
  request: {
48
48
  method: DEFAULT_EIP155_METHODS.ETH_SIGN,
49
49
  params: [message],
@@ -11,10 +11,11 @@ import {
11
11
  } from "@swapkit/helpers";
12
12
  import type { ThorchainDepositParams, createThorchainToolbox } from "@swapkit/toolboxes/cosmos";
13
13
  import type { NearSigner } from "@swapkit/toolboxes/near";
14
- import type { WalletConnectModalSign } from "@walletconnect/modal-sign-html";
14
+ import type { WalletConnectModal } from "@walletconnect/modal";
15
15
  import type { SessionTypes, SignClientTypes } from "@walletconnect/types";
16
16
  import type { Transaction } from "near-api-js/lib/transaction";
17
17
 
18
+ import type { SignClient } from "@walletconnect/sign-client";
18
19
  import { getWalletSupportedChains } from "../utils";
19
20
  import {
20
21
  DEFAULT_APP_METADATA,
@@ -69,12 +70,12 @@ export const walletconnectWallet = createWallet({
69
70
  throw new SwapKitError("wallet_walletconnect_connection_not_established");
70
71
  }
71
72
 
72
- const { session, accounts } = walletconnect;
73
+ const { accounts } = walletconnect;
73
74
 
74
75
  await Promise.all(
75
76
  filteredChains.map(async (chain) => {
76
- const address = getAddressByChain(chain, accounts);
77
- const toolbox = await getToolbox({ session, address, chain, walletconnect });
77
+ const address = getAddressByChain(chain, accounts || []);
78
+ const toolbox = await getToolbox({ address, chain, walletconnect });
78
79
 
79
80
  addChain({
80
81
  ...toolbox,
@@ -97,13 +98,16 @@ async function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({
97
98
  chain,
98
99
  walletconnect,
99
100
  address,
100
- session,
101
101
  }: {
102
102
  walletconnect: Walletconnect;
103
- session: SessionTypes.Struct;
104
103
  chain: T;
105
104
  address: string;
106
105
  }) {
106
+ const session = walletconnect?.session;
107
+ if (!session) {
108
+ throw new SwapKitError("wallet_walletconnect_connection_not_established");
109
+ }
110
+
107
111
  switch (chain) {
108
112
  case Chain.Arbitrum:
109
113
  case Chain.Avalanche:
@@ -149,6 +153,7 @@ async function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({
149
153
 
150
154
  const [{ address, algo, pubkey }] = (await walletconnect?.client.request({
151
155
  chainId: THORCHAIN_MAINNET_ID,
156
+ // @ts-ignore
152
157
  topic: session.topic,
153
158
  request: {
154
159
  method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,
@@ -323,16 +328,20 @@ async function getWalletconnect(
323
328
  walletConnectProjectId?: string,
324
329
  walletconnectOptions?: SignClientTypes.Options,
325
330
  ) {
326
- let modal: WalletConnectModalSign | undefined;
331
+ let modal: WalletConnectModal | undefined;
332
+ let signer: typeof SignClient | undefined;
333
+ let session: SessionTypes.Struct | undefined;
334
+ let accounts: string[] | undefined;
327
335
  try {
328
336
  if (!walletConnectProjectId) {
329
337
  throw new SwapKitError("wallet_walletconnect_project_id_not_specified");
330
338
  }
331
339
  const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));
332
340
 
333
- const { WalletConnectModalSign } = await import("@walletconnect/modal-sign-html");
341
+ const { SignClient } = await import("@walletconnect/sign-client");
342
+ const { WalletConnectModal } = await import("@walletconnect/modal");
334
343
 
335
- const client = new WalletConnectModalSign({
344
+ const client = new SignClient({
336
345
  logger: DEFAULT_LOGGER,
337
346
  relayUrl: DEFAULT_RELAY_URL,
338
347
  projectId: walletConnectProjectId,
@@ -340,7 +349,14 @@ async function getWalletconnect(
340
349
  ...walletconnectOptions?.core,
341
350
  });
342
351
 
343
- const oldSession = await client.getSession();
352
+ const modal = new WalletConnectModal({
353
+ logger: DEFAULT_LOGGER,
354
+ relayUrl: DEFAULT_RELAY_URL,
355
+ projectId: walletConnectProjectId,
356
+ ...walletconnectOptions?.core,
357
+ });
358
+
359
+ const oldSession = await client.session.getAll()[0];
344
360
 
345
361
  // disconnect old Session cause we can't handle using it with current ui
346
362
  if (oldSession) {
@@ -350,25 +366,51 @@ async function getWalletconnect(
350
366
  });
351
367
  }
352
368
 
353
- const session = await client.connect({ requiredNamespaces });
369
+ const { uri, approval } = await client.connect({
370
+ // Optionally: pass a known prior pairing (e.g. from `client.core.pairing.getPairings()`) to skip the `uri` step.
371
+ // pairingTopic: pairing?.topic,
372
+ // Provide the namespaces and chains (e.g. `eip155` for EVM-based chains) we want to use in this session.
373
+ requiredNamespaces,
374
+ });
375
+
376
+ if (uri) {
377
+ modal.openModal({ uri });
378
+ // Await session approval from the wallet.
379
+ session = await approval();
380
+ // Handle the returned session (e.g. update UI to "connected" state).
381
+ // Close the QRCode modal in case it was open.
382
+ modal.closeModal();
383
+
384
+ function extractAccountsFromSession(session: SessionTypes.Struct) {
385
+ const accounts: string[] = [];
386
+
387
+ for (const [_namespace, data] of Object.entries(session.namespaces)) {
388
+ accounts.push(...data.accounts);
389
+ }
390
+
391
+ return accounts;
392
+ }
354
393
 
355
- const accounts = Object.values(session.namespaces).flatMap(
356
- (namespace: any) => namespace.accounts,
357
- );
394
+ accounts = extractAccountsFromSession(session);
395
+ }
358
396
 
359
397
  const disconnect = async () => {
360
- await client.disconnect({
361
- topic: session.topic,
362
- reason: { code: 0, message: "User disconnected" },
363
- });
398
+ session &&
399
+ (await client.disconnect({
400
+ topic: session.topic,
401
+ reason: { code: 0, message: "User disconnected" },
402
+ }));
364
403
  };
365
404
 
366
- return { session, accounts, client, disconnect };
405
+ if (!session) {
406
+ throw new SwapKitError("wallet_walletconnect_connection_not_established");
407
+ }
408
+
409
+ return { signer, session, accounts, client, disconnect };
367
410
  } catch (_e) {
368
411
  // Errors are handled by returning undefined
369
412
  } finally {
370
413
  if (modal) {
371
- // @ts-expect-error wrong typing
372
414
  modal.closeModal();
373
415
  }
374
416
  }
File without changes
File without changes