@swapkit/wallet-hardware 4.9.30 → 4.9.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- var o={};module.exports=e(o);
1
+ var i=Object.create;var{getPrototypeOf:j,defineProperty:t,getOwnPropertyNames:f,getOwnPropertyDescriptor:k}=Object,g=Object.prototype.hasOwnProperty;function h(e){return this[e]}var l,m,v=(e,o,p)=>{var r=e!=null&&typeof e==="object";if(r){var b=o?l??=new WeakMap:m??=new WeakMap,c=b.get(e);if(c)return c}p=e!=null?i(j(e)):{};let x=o||!e||!e.__esModule?t(p,"default",{value:e,enumerable:!0}):p;for(let a of f(e))if(!g.call(x,a))t(x,a,{get:h.bind(e,a),enumerable:!0});if(r)b.set(e,x);return x},n=(e)=>{var o=(d??=new WeakMap).get(e),p;if(o)return o;if(o=t({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function"){for(var r of f(e))if(!g.call(o,r))t(o,r,{get:h.bind(e,r),enumerable:!(p=k(e,r))||p.enumerable})}return d.set(e,o),o},d;var q=(e)=>e;function s(e,o){this[e]=q.bind(null,o)}var w=(e,o)=>{for(var p in o)t(e,p,{get:o[p],enumerable:!0,configurable:!0,set:s.bind(o,p)})};var y=(e,o)=>()=>(e&&(o=e(e=0)),o);var u={};module.exports=n(u);
2
2
 
3
- //# debugId=111FF28E4452890B64756E2164756E21
3
+ //# debugId=C48C8B4D10F3D43E64756E2164756E21
4
4
  //# sourceMappingURL=index.cjs.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "111FF28E4452890B64756E2164756E21",
7
+ "debugId": "C48C8B4D10F3D43E64756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -1,4 +1,4 @@
1
- var Zz={};zz(Zz,{keepkeyWallet:()=>i,KEEPKEY_SUPPORTED_CHAINS:()=>Jz});module.exports=e(Zz);var a=require("@keepkey/keepkey-sdk"),z=require("@swapkit/helpers"),c=require("@swapkit/wallet-core");var x=require("@swapkit/helpers");async function d({sdk:Q,derivationPath:J}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:E,getFeeRateFromSwapKit:Y,createStargateClient:q}=await import("@swapkit/toolboxes/cosmos"),M=J?x.derivationPathToString(J):`${x.DerivationPath.GAIA}/0`,{address:B}=await Q.address.cosmosGetAddress({address_n:v(M)}),L=await E(x.Chain.Cosmos);if(X.amount[0])X.amount[0].amount=String(await Y(x.GAIAConfig.chainId,500));return{...L,address:B,transfer:async({assetValue:U,recipient:j,memo:F})=>{let y=U.getBaseValue("string"),b=await L.getAccount(B),K=await Q.cosmos.cosmosSignAmino({signDoc:{account_number:b?.accountNumber.toString()??"",chain_id:x.GAIAConfig.chainId,fee:X,memo:F||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:y,denom:"uatom"}],from_address:B,to_address:j}}],sequence:b?.sequence.toString()??""},signerAddress:B}),V=atob(K.serialized),k=new Uint8Array(V.length).map((_,W)=>V.charCodeAt(W)),P=await x.getRPCUrl(x.Chain.Cosmos);return(await(await q(P)).broadcastTx(k)).transactionHash}}}var A=require("@swapkit/helpers"),o=require("ethers");class p extends o.AbstractSigner{sdk;chain;derivationPath;address;provider;constructor({sdk:Q,chain:J,derivationPath:X,provider:E}){super();this.sdk=Q,this.chain=J,this.derivationPath=X||A.NetworkDerivationPath.ETH,this.address="",this.provider=E}signTypedData=async(Q,J,X,E)=>{let{buildEIP712DomainType:Y}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:q}=await import("ethers"),{EIP712Domain:M,...B}=J,L=E??q.from(B).primaryType,N=Y(Q),U=await this.getAddress(),j=await this.sdk.eth.ethSignTypedData({address:U,typedData:{domain:Q,message:X,primaryType:L,types:{EIP712Domain:N,...B}}});if(typeof j!=="string")throw new A.SwapKitError("wallet_keepkey_method_not_supported",{method:"signTypedData"});return j.startsWith("0x")?j:`0x${j}`};getAddress=async()=>{if(this.address)return this.address;let{address:Q}=await this.sdk.address.ethereumGetAddress({address_n:v(A.derivationPathToString(this.derivationPath))});return this.address=Q,Q};signMessage=(Q)=>this.sdk.eth.ethSign({address:this.address,message:Q});signTransaction=async({to:Q,value:J,gasLimit:X,nonce:E,data:Y,maxFeePerGas:q,maxPriorityFeePerGas:M,gasPrice:B})=>{if(!Q)throw new A.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new A.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!Y)throw new A.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing data"});let L=!!((q||M)&&!B);if(L&&!q)throw new A.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(L&&!M)throw new A.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(L||B))throw new A.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:N}=await import("@swapkit/toolboxes/evm"),U=E?BigInt(E):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),j={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:N(BigInt(A.ChainToChainId[this.chain])),data:Y,from:this.address,gas:N(BigInt(X)),nonce:N(U),to:Q.toString(),value:N(BigInt(J||0)),...L&&{maxFeePerGas:N(BigInt(q?.toString()||"0")),maxPriorityFeePerGas:N(BigInt(M?.toString()||"0"))},...!L&&{gasPrice:N(BigInt(B?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(j)).serialized};sendTransaction=async(Q)=>{if(!this.provider)throw new A.SwapKitError("wallet_keepkey_no_provider");let J=await this.signTransaction(Q);return await this.provider.broadcastTransaction(J)};connect=(Q)=>new p({chain:this.chain,derivationPath:this.derivationPath,provider:Q,sdk:this.sdk})}var S=require("@swapkit/helpers");async function r({sdk:Q,derivationPath:J}){let{createStargateClient:X,getCosmosToolbox:E}=await import("@swapkit/toolboxes/cosmos"),Y=await E(S.Chain.Maya),q=J?S.derivationPathToString(J):`${S.DerivationPath.MAYA}/0`,{address:M}=await Q.address.mayachainGetAddress({address_n:v(q)}),B=async({assetValue:U,recipient:j,sender:F,memo:y})=>{let b=await import("@cosmjs/amino"),K=b.makeSignDoc??b.default?.makeSignDoc,{getDenomWithChain:V}=await import("@swapkit/toolboxes/cosmos"),k=await Y.getAccount(F);if(!k)throw new S.SwapKitError("wallet_keepkey_account_not_found");let{accountNumber:P,sequence:Z=0}=k,$=U.getBaseValue("string"),_=j&&j!=="",W=_?{type:"mayachain/MsgSend",value:{amount:[{amount:$,denom:U.symbol.toLowerCase()}],from_address:F,to_address:j}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:$,asset:V(U)}],memo:y,signer:F}},H=K([W],{amount:[],gas:"500000000"},S.MAYAConfig.chainId,y,P?.toString(),Z),O=await(_?Q.mayachain.mayachainSignAminoTransfer:Q.mayachain.mayachainSignAminoDeposit)({signDoc:H,signerAddress:F}),G=atob(O.serialized);return new Uint8Array(G.length).map((T,f)=>G.charCodeAt(f))};return{...Y,address:M,deposit:async({assetValue:U,memo:j})=>{let F=await S.getRPCUrl(S.Chain.Maya),y=await X(F),b=await B({assetValue:U,memo:j,sender:M}),{transactionHash:K}=await y.broadcastTx(b);return K},transfer:async({assetValue:U,recipient:j,memo:F})=>{let y=await S.getRPCUrl(S.Chain.Maya),b=await X(y),K=await B({assetValue:U,memo:F,recipient:j,sender:M}),{transactionHash:V}=await b.broadcastTx(K);return V}}}var w=require("@swapkit/helpers");async function s({sdk:Q,derivationPath:J}){let X=await import("@cosmjs/amino"),E=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:Y,getDefaultChainFee:q,createStargateClient:M,getCosmosToolbox:B}=await import("@swapkit/toolboxes/cosmos"),L=await B(w.Chain.THORChain),N=J?w.derivationPathToString(J):`${w.DerivationPath.THOR}/0`,{address:U}=await Q.address.thorchainGetAddress({address_n:v(N)}),j=async({assetValue:b,recipient:K,sender:V,memo:k})=>{let P=await L.getAccount(V);if(!P)throw new w.SwapKitError("wallet_keepkey_account_not_found");let{accountNumber:Z,sequence:$=0}=P,_=K&&K!=="",W=Y({assetValue:b,memo:k,recipient:K,sender:V}),H=E([W],q(w.Chain.THORChain),w.THORConfig.chainId,k,Z?.toString(),$),I=_?await Q.thorchain.thorchainSignAminoTransfer({signDoc:H,signerAddress:V}):await Q.thorchain.thorchainSignAminoDeposit({signDoc:H,signerAddress:V}),O=atob(I.serialized);return new Uint8Array(O.length).map((G,T)=>O.charCodeAt(T))};return{...L,address:U,deposit:async({assetValue:b,memo:K})=>{let V=await w.getRPCUrl(w.Chain.THORChain),k=await M(V),P=await j({assetValue:b,memo:K,sender:U}),{transactionHash:Z}=await k.broadcastTx(P);return Z},transfer:async({assetValue:b,recipient:K,memo:V})=>{let k=await w.getRPCUrl(w.Chain.THORChain),P=await M(k),Z=await j({assetValue:b,memo:V,recipient:K,sender:U}),{transactionHash:$}=await P.broadcastTx(Z);return $}}}var R=require("@swapkit/helpers"),D=require("@swapkit/toolboxes/utxo");async function n({sdk:Q,chain:J,derivationPath:X}){let{getUtxoToolbox:E}=await import("@swapkit/toolboxes/utxo"),Y=await E(J),q=[R.Chain.Bitcoin,R.Chain.Litecoin].includes(J)?"p2wpkh":"p2pkh",M=X?R.derivationPathToString(X):`${R.DerivationPath[J]}/0`,B={address_n:v(M),coin:m[J],script_type:q},L=(await Q.address.utxoGetAddress(B)).address,N=D.getNetworkForChain(J),U=async(Z,$,_="")=>{let W=[];for(let O=0;O<Z.outputsLength;O++){let G=Z.getOutput(O),T=Z.getOutputAddress(O,N),f=Number(G.amount);if(T===L)W.push({addressNList:B.address_n,addressType:"change",amount:f,isChange:!0,scriptType:q});else if(T){let g=J===R.Chain.BitcoinCash?D.stripToCashAddress(T):T;if(g)W.push({address:g,addressType:"spend",amount:f})}}let H=(O)=>{return O.filter((G)=>G!==null&&typeof G==="object"&&Object.keys(G).length>0)};return(await Q.utxo.utxoSignTransaction({coin:m[J],inputs:$,opReturnData:_,outputs:H(W)})).serializedTx?.toString()},j=async({recipient:Z,feeOptionKey:$,feeRate:_,memo:W,...H})=>{if(!L)throw new R.SwapKitError("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new R.SwapKitError("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let I=J===R.Chain.BitcoinCash?Y.buildTx:Y.createTransaction,{tx:O,inputs:G}=await I({...H,feeRate:_||(await Y.getFeeRates())[$||R.FeeOption.Fast],fetchTxHex:!0,memo:W,recipient:Z,sender:L}),T=G.map(({value:g,index:C,hash:u,txHex:l})=>({addressNList:B.address_n,amount:g.toString(),hex:l||"",scriptType:q,txid:u,vout:C})),f=await U(O,T,W);return Y.broadcastTx(f)},F=async(Z,$,_="")=>{let W=v(X?R.derivationPathToString(X.slice(0,3)):R.DerivationPath[J]),H=[];for(let G=0;G<Z.outputsLength;G++){let T=Z.getOutput(G),f=Z.getOutputAddress(G,N),g=Number(T.amount);if(f===L)H.push({addressNList:B.address_n,addressType:"change",amount:g,isChange:!0,scriptType:q});else if(f){let C=J===R.Chain.BitcoinCash?D.stripToCashAddress(f):f;if(C)H.push({address:C,addressType:"spend",amount:g})}}let I=$.map(({hash:G,index:T,value:f,txHex:g,derivationIndex:C,isChange:u})=>{let l=u?1:0;return{addressNList:[...W,l,C],amount:f.toString(),hex:g||"",scriptType:q,txid:G,vout:T}});return(await Q.utxo.utxoSignTransaction({coin:m[J],inputs:I,opReturnData:_,outputs:H.filter((G)=>G!==null&&typeof G==="object"&&Object.keys(G).length>0)})).serializedTx?.toString()||""},y=async({utxos:Z,recipient:$,assetValue:_,memo:W,feeRate:H,feeOptionKey:I})=>{let O=H||(await Y.getFeeRates())[I||R.FeeOption.Fast],G=J===R.Chain.BitcoinCash?Y.buildTx:Y.createTransaction,{tx:T,inputs:f}=await G({assetValue:_,feeRate:O,fetchTxHex:!0,memo:W,recipient:$,sender:L}),g=f.map((u)=>{let l=Z.find((h)=>h.hash===u.hash&&h.index===u.index);return{...u,derivationIndex:l?.derivationIndex??0,isChange:l?.isChange??!1}}),C=await F(T,g,W);return Y.broadcastTx(C)};async function b({accountIndex:Z}={}){try{let $=D.getUTXOAccountPath({accountIndex:Z,chain:J,derivationPath:X}),_=R.derivationPathToString($),W={address_n:v(_),coin:m[J],script_type:q,showDisplay:!1,symbol:J.toUpperCase()},H=await Q.system.info.getPublicKey(W);return{accountIndex:D.getUTXOAccountIndexFromPath($),path:_,xpub:H.xpub}}catch($){throw new R.SwapKitError("wallet_keepkey_failed_to_get_public_key",{chain:J,error:$ instanceof Error?$.message:"Unknown error"})}}function K(Z={}){return b(Z)}async function V({accountIndex:Z,index:$,change:_=!1}){try{D.assertDerivationIndex("index",$);let W=D.getUTXOAddressPath({accountIndex:Z,chain:J,change:_,derivationPath:X,index:$}),H=R.derivationPathToString(W),I=await Q.address.utxoGetAddress({address_n:v(H),coin:m[J],script_type:q}),O=I.address;if(J===R.Chain.BitcoinCash)O=D.stripToCashAddress(I.address);return{accountIndex:D.getUTXOAccountIndexFromPath(W),address:O,change:_,index:$,path:H,pubkey:""}}catch{return}}async function k({accountIndex:Z,count:$,startIndex:_=0,change:W=!1}){return D.assertDerivationIndex("count",$),D.assertDerivationIndex("startIndex",_),(await Promise.all(Array.from({length:$},(I,O)=>V({accountIndex:Z,change:W,index:_+O})))).filter((I)=>!!I)}let P=D.createHDWalletHelpers({chain:J,deriveAddress:V,getBalance:Y.getBalance,getUtxos:(Z)=>D.getUtxoApi(J).getUtxos({address:Z,fetchTxHex:!0})});return{...Y,...P,address:L,deriveAddressAtIndex:V,deriveAddresses:k,getExtendedPublicKey:K,getExtendedPublicKeyInfo:b,signTransaction:U,signTransactionWithMultipleInputs:F,transfer:j,transferFromMultipleAddresses:y}}var i=c.createWallet({connect:({addChain:Q,supportedChains:J,walletType:X})=>async function(Y,q){let M=z.filterSupportedChains({chains:Y,supportedChains:J,walletType:X}),B=z.SKConfig.get("integrations").keepKey;if(!B)throw Error("KeepKey config not found");let L=z.SKConfig.get("apiKeys").keepKey||"1234";await t();let N={apiKey:L,pairingInfo:B},U=await a.KeepKeySdk.create(N);if(N.apiKey&&N.apiKey!==L)z.SKConfig.setApiKey("keepKey",N.apiKey);return await Promise.all(M.map(async(j)=>{let F=await Qz({chain:j,derivationPath:q?.[j]||z.NetworkDerivationPath[j],sdk:U}),y=await F.getAddress()||"";Q({...F,address:y,chain:j,walletType:z.WalletOption.KEEPKEY})})),!0},directSigningSupport:{[z.Chain.Arbitrum]:!0,[z.Chain.Avalanche]:!0,[z.Chain.Base]:!0,[z.Chain.Berachain]:!0,[z.Chain.BinanceSmartChain]:!0,[z.Chain.Ethereum]:!0,[z.Chain.Gnosis]:!0,[z.Chain.Monad]:!0,[z.Chain.Optimism]:!0,[z.Chain.Polygon]:!0,[z.Chain.Ripple]:!0,[z.Chain.XLayer]:!0},name:"connectKeepkey",supportedChains:[z.Chain.Arbitrum,z.Chain.Avalanche,z.Chain.Base,z.Chain.Berachain,z.Chain.BinanceSmartChain,z.Chain.Bitcoin,z.Chain.BitcoinCash,z.Chain.Cosmos,z.Chain.Dogecoin,z.Chain.Dash,z.Chain.Ethereum,z.Chain.Gnosis,z.Chain.Litecoin,z.Chain.Monad,z.Chain.Ripple,z.Chain.Optimism,z.Chain.Polygon,z.Chain.THORChain,z.Chain.Maya,z.Chain.XLayer],walletType:z.WalletOption.KEEPKEY}),Jz=c.getWalletSupportedChains(i);async function Qz({sdk:Q,chain:J,derivationPath:X}){let{getProvider:E,getEvmToolboxAsync:Y}=await import("@swapkit/toolboxes/evm");switch(J){case z.Chain.BinanceSmartChain:case z.Chain.Arbitrum:case z.Chain.Berachain:case z.Chain.Optimism:case z.Chain.Polygon:case z.Chain.Avalanche:case z.Chain.Base:case z.Chain.Ethereum:case z.Chain.Gnosis:case z.Chain.Monad:case z.Chain.XLayer:{let q=await E(J),M=new p({chain:J,derivationPath:X,provider:q,sdk:Q});return await Y(J,{provider:q,signer:M})}case z.Chain.Cosmos:return d({derivationPath:X,sdk:Q});case z.Chain.THORChain:return s({derivationPath:X,sdk:Q});case z.Chain.Maya:return r({derivationPath:X,sdk:Q});case z.Chain.Bitcoin:case z.Chain.BitcoinCash:case z.Chain.Dash:case z.Chain.Dogecoin:case z.Chain.Litecoin:return n({chain:J,derivationPath:X,sdk:Q});case z.Chain.Ripple:{let{rippleWalletMethods:q}=await import("../chunk-8sth2w05.js");return q({derivationPath:X,sdk:Q})}default:throw new z.SwapKitError("wallet_keepkey_chain_not_supported",{chain:J})}}async function t(Q=0){if(Q>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Xz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await t(Q+1)}async function Xz(Q="http://localhost:1646/spec/swagger.json"){try{return(await fetch(Q)).status===200}catch{return!1}}
1
+ var _z=Object.create;var{getPrototypeOf:Lz,defineProperty:h,getOwnPropertyNames:a,getOwnPropertyDescriptor:Rz}=Object,i=Object.prototype.hasOwnProperty;function t(z){return this[z]}var Mz,Oz,Kz=(z,J,X)=>{var $=z!=null&&typeof z==="object";if($){var Z=J?Mz??=new WeakMap:Oz??=new WeakMap,Y=Z.get(z);if(Y)return Y}X=z!=null?_z(Lz(z)):{};let q=J||!z||!z.__esModule?h(X,"default",{value:z,enumerable:!0}):X;for(let j of a(z))if(!i.call(q,j))h(q,j,{get:t.bind(z,j),enumerable:!0});if($)Z.set(z,q);return q},Vz=(z)=>{var J=(n??=new WeakMap).get(z),X;if(J)return J;if(J=h({},"__esModule",{value:!0}),z&&typeof z==="object"||typeof z==="function"){for(var $ of a(z))if(!i.call(J,$))h(J,$,{get:t.bind(z,$),enumerable:!(X=Rz(z,$))||X.enumerable})}return n.set(z,J),J},n;var Fz=(z)=>z;function Hz(z,J){this[z]=Fz.bind(null,J)}var e=(z,J)=>{for(var X in J)h(z,X,{get:J[X],enumerable:!0,configurable:!0,set:Hz.bind(J,X)})};var zz=(z,J)=>()=>(z&&(J=z(z=0)),J);function Nz(z){if(z==="m/")return!0;return/^m(((\/[0-9]+h)+|(\/[0-9]+H)+|(\/[0-9]+')*)((\/[0-9]+)*))$/.test(z)}function K(z){let J=z;if(!Nz(J))throw new d.SwapKitError("wallet_keepkey_invalid_params",{reason:`Not a bip32 path: '${J}'`});if(/^m\//i.test(J))J=J.slice(2);let X=J.split("/");if(X.length===1&&X[0]==="")return[];let $=Array(X.length);for(let Z=0;Z<X.length;Z++){let Y=X[Z];if(Y){let q=/(\d+)([hH']?)/.exec(Y);if(q===null)throw new d.SwapKitError("wallet_keepkey_invalid_params",{reason:"Invalid input"});let[,j="",B=""]=q;if($[Z]=Number.parseInt(j,10),$[Z]>=Jz)throw new d.SwapKitError("wallet_keepkey_invalid_params",{reason:"Invalid child index"});if(B==="h"||B==="H"||B==="'")$[Z]+=Jz;else if(B.length>0)throw new d.SwapKitError("wallet_keepkey_invalid_params",{reason:"Invalid modifier"})}}return $}var d,Jz=2147483648,l;var m=zz(()=>{d=require("@swapkit/helpers");((q)=>{q.BTC="Bitcoin";q.BCH="BitcoinCash";q.DOGE="Dogecoin";q.LTC="Litecoin";q.DASH="Dash";q.XRP="Ripple"})(l||={})});var jz={};e(jz,{rippleWalletMethods:()=>Dz});var p,qz,Dz=async({sdk:z,derivationPath:J})=>{let X=J?p.derivationPathToString(J):`${p.DerivationPath[p.Chain.Ripple]}/0`,{address:$}=await z.address.xrpGetAddress({address_n:K(X)}),Y=await qz.getRippleToolbox({signer:{getAddress:()=>Promise.resolve($),signTransaction:()=>{throw Error("signTransaction not supported via toolbox")}}});return{...Y,address:$,getAddress:()=>$,transfer:async({recipient:j,assetValue:B,memo:L})=>{let W=await Y.createTransaction({assetValue:B,memo:L,recipient:j,sender:$}),U={type:"auth/StdTx",value:{fee:{amount:[{amount:"1000",denom:"drop"}],gas:"28000"},memo:L&&L.length>0?L:"",msg:[{type:"ripple-sdk/MsgSend",value:{amount:[{amount:W.Amount,denom:"drop"}],from_address:$,to_address:j}}],signatures:null}},I={addressNList:K(X),flags:W.Flags===0?void 0:W.Flags,lastLedgerSequence:W.LastLedgerSequence?.toString(),payment:{amount:W.Amount,destination:W.Destination,destinationTag:(W.DestinationTag??"0").toString()},sequence:(W.Sequence??0).toString(),tx:U},E=JSON.parse(await z.xrp.xrpSignTransaction(I)),F=E.tx_blob??E.value?.signatures?.[0]?.serializedTx;if(!F)throw Error("KeepKey XRP sign failed");let H=Buffer.from(F,"base64").toString("hex");return Y.broadcastTransaction(H)}}};var Bz=zz(()=>{m();p=require("@swapkit/helpers"),qz=require("@swapkit/toolboxes/ripple")});var Ez={};e(Ez,{keepkeyWallet:()=>Gz,KEEPKEY_SUPPORTED_CHAINS:()=>Iz});module.exports=Vz(Ez);var Wz=require("@keepkey/keepkey-sdk"),Q=require("@swapkit/helpers"),r=require("@swapkit/wallet-core");m();var C=require("@swapkit/helpers");async function Qz({sdk:z,derivationPath:J}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:$,getFeeRateFromSwapKit:Z,createStargateClient:Y}=await import("@swapkit/toolboxes/cosmos"),q=J?C.derivationPathToString(J):`${C.DerivationPath.GAIA}/0`,{address:j}=await z.address.cosmosGetAddress({address_n:K(q)}),B=await $(C.Chain.Cosmos);if(X.amount[0])X.amount[0].amount=String(await Z(C.GAIAConfig.chainId,500));return{...B,address:j,transfer:async({assetValue:W,recipient:U,memo:I})=>{let E=W.getBaseValue("string"),F=await B.getAccount(j),b=await z.cosmos.cosmosSignAmino({signDoc:{account_number:F?.accountNumber.toString()??"",chain_id:C.GAIAConfig.chainId,fee:X,memo:I||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:E,denom:"uatom"}],from_address:j,to_address:U}}],sequence:F?.sequence.toString()??""},signerAddress:j}),H=atob(b.serialized),v=new Uint8Array(H.length).map((V,R)=>H.charCodeAt(R)),P=await C.getRPCUrl(C.Chain.Cosmos);return(await(await Y(P)).broadcastTx(v)).transactionHash}}}m();var T=require("@swapkit/helpers"),Xz=require("ethers");class o extends Xz.AbstractSigner{sdk;chain;derivationPath;address;provider;constructor({sdk:z,chain:J,derivationPath:X,provider:$}){super();this.sdk=z,this.chain=J,this.derivationPath=X||T.NetworkDerivationPath.ETH,this.address="",this.provider=$}signTypedData=async(z,J,X,$)=>{let{buildEIP712DomainType:Z}=await import("@swapkit/toolboxes/evm"),{TypedDataEncoder:Y}=await import("ethers"),{EIP712Domain:q,...j}=J,B=$??Y.from(j).primaryType,L=Z(z),W=await this.getAddress(),U=await this.sdk.eth.ethSignTypedData({address:W,typedData:{domain:z,message:X,primaryType:B,types:{EIP712Domain:L,...j}}});if(typeof U!=="string")throw new T.SwapKitError("wallet_keepkey_method_not_supported",{method:"signTypedData"});return U.startsWith("0x")?U:`0x${U}`};getAddress=async()=>{if(this.address)return this.address;let{address:z}=await this.sdk.address.ethereumGetAddress({address_n:K(T.derivationPathToString(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:X,nonce:$,data:Z,maxFeePerGas:Y,maxPriorityFeePerGas:q,gasPrice:j})=>{if(!z)throw new T.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new T.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!Z)throw new T.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing data"});let B=!!((Y||q)&&!j);if(B&&!Y)throw new T.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(B&&!q)throw new T.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(B||j))throw new T.SwapKitError("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:L}=await import("@swapkit/toolboxes/evm"),W=$?BigInt($):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),U={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:L(BigInt(T.ChainToChainId[this.chain])),data:Z,from:this.address,gas:L(BigInt(X)),nonce:L(W),to:z.toString(),value:L(BigInt(J||0)),...B&&{maxFeePerGas:L(BigInt(Y?.toString()||"0")),maxPriorityFeePerGas:L(BigInt(q?.toString()||"0"))},...!B&&{gasPrice:L(BigInt(j?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(U)).serialized};sendTransaction=async(z)=>{if(!this.provider)throw new T.SwapKitError("wallet_keepkey_no_provider");let J=await this.signTransaction(z);return await this.provider.broadcastTransaction(J)};connect=(z)=>new o({chain:this.chain,derivationPath:this.derivationPath,provider:z,sdk:this.sdk})}m();var k=require("@swapkit/helpers");async function Zz({sdk:z,derivationPath:J}){let{createStargateClient:X,getCosmosToolbox:$}=await import("@swapkit/toolboxes/cosmos"),Z=await $(k.Chain.Maya),Y=J?k.derivationPathToString(J):`${k.DerivationPath.MAYA}/0`,{address:q}=await z.address.mayachainGetAddress({address_n:K(Y)}),j=async({assetValue:W,recipient:U,sender:I,memo:E})=>{let F=await import("@cosmjs/amino"),b=F.makeSignDoc??F.default?.makeSignDoc,{getDenomWithChain:H}=await import("@swapkit/toolboxes/cosmos"),v=await Z.getAccount(I);if(!v)throw new k.SwapKitError("wallet_keepkey_account_not_found");let{accountNumber:P,sequence:G=0}=v,_=W.getBaseValue("string"),V=U&&U!=="",R=V?{type:"mayachain/MsgSend",value:{amount:[{amount:_,denom:W.symbol.toLowerCase()}],from_address:I,to_address:U}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:_,asset:H(W)}],memo:E,signer:I}},w=b([R],{amount:[],gas:"500000000"},k.MAYAConfig.chainId,E,P?.toString(),G),N=await(V?z.mayachain.mayachainSignAminoTransfer:z.mayachain.mayachainSignAminoDeposit)({signDoc:w,signerAddress:I}),M=atob(N.serialized);return new Uint8Array(M.length).map((S,y)=>M.charCodeAt(y))};return{...Z,address:q,deposit:async({assetValue:W,memo:U})=>{let I=await k.getRPCUrl(k.Chain.Maya),E=await X(I),F=await j({assetValue:W,memo:U,sender:q}),{transactionHash:b}=await E.broadcastTx(F);return b},transfer:async({assetValue:W,recipient:U,memo:I})=>{let E=await k.getRPCUrl(k.Chain.Maya),F=await X(E),b=await j({assetValue:W,memo:I,recipient:U,sender:q}),{transactionHash:H}=await F.broadcastTx(b);return H}}}m();var f=require("@swapkit/helpers");async function $z({sdk:z,derivationPath:J}){let X=await import("@cosmjs/amino"),$=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:Z,getDefaultChainFee:Y,createStargateClient:q,getCosmosToolbox:j}=await import("@swapkit/toolboxes/cosmos"),B=await j(f.Chain.THORChain),L=J?f.derivationPathToString(J):`${f.DerivationPath.THOR}/0`,{address:W}=await z.address.thorchainGetAddress({address_n:K(L)}),U=async({assetValue:F,recipient:b,sender:H,memo:v})=>{let P=await B.getAccount(H);if(!P)throw new f.SwapKitError("wallet_keepkey_account_not_found");let{accountNumber:G,sequence:_=0}=P,V=b&&b!=="",R=Z({assetValue:F,memo:v,recipient:b,sender:H}),w=$([R],Y(f.Chain.THORChain),f.THORConfig.chainId,v,G?.toString(),_),A=V?await z.thorchain.thorchainSignAminoTransfer({signDoc:w,signerAddress:H}):await z.thorchain.thorchainSignAminoDeposit({signDoc:w,signerAddress:H}),N=atob(A.serialized);return new Uint8Array(N.length).map((M,S)=>N.charCodeAt(S))};return{...B,address:W,deposit:async({assetValue:F,memo:b})=>{let H=await f.getRPCUrl(f.Chain.THORChain),v=await q(H),P=await U({assetValue:F,memo:b,sender:W}),{transactionHash:G}=await v.broadcastTx(P);return G},transfer:async({assetValue:F,recipient:b,memo:H})=>{let v=await f.getRPCUrl(f.Chain.THORChain),P=await q(v),G=await U({assetValue:F,memo:H,recipient:b,sender:W}),{transactionHash:_}=await P.broadcastTx(G);return _}}}m();var O=require("@swapkit/helpers"),D=require("@swapkit/toolboxes/utxo");async function Yz({sdk:z,chain:J,derivationPath:X}){let{getUtxoToolbox:$}=await import("@swapkit/toolboxes/utxo"),Z=await $(J),Y=[O.Chain.Bitcoin,O.Chain.Litecoin].includes(J)?"p2wpkh":"p2pkh",q=X?O.derivationPathToString(X):`${O.DerivationPath[J]}/0`,j={address_n:K(q),coin:l[J],script_type:Y},B=(await z.address.utxoGetAddress(j)).address,L=D.getNetworkForChain(J),W=async(G,_,V="")=>{let R=[];for(let N=0;N<G.outputsLength;N++){let M=G.getOutput(N),S=G.getOutputAddress(N,L),y=Number(M.amount);if(S===B)R.push({addressNList:j.address_n,addressType:"change",amount:y,isChange:!0,scriptType:Y});else if(S){let g=J===O.Chain.BitcoinCash?D.stripToCashAddress(S):S;if(g)R.push({address:g,addressType:"spend",amount:y})}}let w=(N)=>{return N.filter((M)=>M!==null&&typeof M==="object"&&Object.keys(M).length>0)};return(await z.utxo.utxoSignTransaction({coin:l[J],inputs:_,opReturnData:V,outputs:w(R)})).serializedTx?.toString()},U=async({recipient:G,feeOptionKey:_,feeRate:V,memo:R,...w})=>{if(!B)throw new O.SwapKitError("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!G)throw new O.SwapKitError("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let A=J===O.Chain.BitcoinCash?Z.buildTx:Z.createTransaction,{tx:N,inputs:M}=await A({...w,feeRate:V||(await Z.getFeeRates())[_||O.FeeOption.Fast],fetchTxHex:!0,memo:R,recipient:G,sender:B}),S=M.map(({value:g,index:x,hash:u,txHex:c})=>({addressNList:j.address_n,amount:g.toString(),hex:c||"",scriptType:Y,txid:u,vout:x})),y=await W(N,S,R);return Z.broadcastTx(y)},I=async(G,_,V="")=>{let R=K(X?O.derivationPathToString(X.slice(0,3)):O.DerivationPath[J]),w=[];for(let M=0;M<G.outputsLength;M++){let S=G.getOutput(M),y=G.getOutputAddress(M,L),g=Number(S.amount);if(y===B)w.push({addressNList:j.address_n,addressType:"change",amount:g,isChange:!0,scriptType:Y});else if(y){let x=J===O.Chain.BitcoinCash?D.stripToCashAddress(y):y;if(x)w.push({address:x,addressType:"spend",amount:g})}}let A=_.map(({hash:M,index:S,value:y,txHex:g,derivationIndex:x,isChange:u})=>{let c=u?1:0;return{addressNList:[...R,c,x],amount:y.toString(),hex:g||"",scriptType:Y,txid:M,vout:S}});return(await z.utxo.utxoSignTransaction({coin:l[J],inputs:A,opReturnData:V,outputs:w.filter((M)=>M!==null&&typeof M==="object"&&Object.keys(M).length>0)})).serializedTx?.toString()||""},E=async({utxos:G,recipient:_,assetValue:V,memo:R,feeRate:w,feeOptionKey:A})=>{let N=w||(await Z.getFeeRates())[A||O.FeeOption.Fast],M=J===O.Chain.BitcoinCash?Z.buildTx:Z.createTransaction,{tx:S,inputs:y}=await M({assetValue:V,feeRate:N,fetchTxHex:!0,memo:R,recipient:_,sender:B}),g=y.map((u)=>{let c=G.find((s)=>s.hash===u.hash&&s.index===u.index);return{...u,derivationIndex:c?.derivationIndex??0,isChange:c?.isChange??!1}}),x=await I(S,g,R);return Z.broadcastTx(x)};async function F({accountIndex:G}={}){try{let _=D.getUTXOAccountPath({accountIndex:G,chain:J,derivationPath:X}),V=O.derivationPathToString(_),R={address_n:K(V),coin:l[J],script_type:Y,showDisplay:!1,symbol:J.toUpperCase()},w=await z.system.info.getPublicKey(R);return{accountIndex:D.getUTXOAccountIndexFromPath(_),path:V,xpub:w.xpub}}catch(_){throw new O.SwapKitError("wallet_keepkey_failed_to_get_public_key",{chain:J,error:_ instanceof Error?_.message:"Unknown error"})}}function b(G={}){return F(G)}async function H({accountIndex:G,index:_,change:V=!1}){try{D.assertDerivationIndex("index",_);let R=D.getUTXOAddressPath({accountIndex:G,chain:J,change:V,derivationPath:X,index:_}),w=O.derivationPathToString(R),A=await z.address.utxoGetAddress({address_n:K(w),coin:l[J],script_type:Y}),N=A.address;if(J===O.Chain.BitcoinCash)N=D.stripToCashAddress(A.address);return{accountIndex:D.getUTXOAccountIndexFromPath(R),address:N,change:V,index:_,path:w,pubkey:""}}catch{return}}async function v({accountIndex:G,count:_,startIndex:V=0,change:R=!1}){return D.assertDerivationIndex("count",_),D.assertDerivationIndex("startIndex",V),(await Promise.all(Array.from({length:_},(A,N)=>H({accountIndex:G,change:R,index:V+N})))).filter((A)=>!!A)}let P=D.createHDWalletHelpers({chain:J,deriveAddress:H,getBalance:Z.getBalance,getUtxos:(G)=>D.getUtxoApi(J).getUtxos({address:G,fetchTxHex:!0})});return{...Z,...P,address:B,deriveAddressAtIndex:H,deriveAddresses:v,getExtendedPublicKey:b,getExtendedPublicKeyInfo:F,signTransaction:W,signTransactionWithMultipleInputs:I,transfer:U,transferFromMultipleAddresses:E}}var Gz=r.createWallet({connect:({addChain:z,supportedChains:J,walletType:X})=>async function(Z,Y){let q=Q.filterSupportedChains({chains:Z,supportedChains:J,walletType:X}),j=Q.SKConfig.get("integrations").keepKey;if(!j)throw Error("KeepKey config not found");let B=Q.SKConfig.get("apiKeys").keepKey||"1234";await Uz();let L={apiKey:B,pairingInfo:j},W=await Wz.KeepKeySdk.create(L);if(L.apiKey&&L.apiKey!==B)Q.SKConfig.setApiKey("keepKey",L.apiKey);return await Promise.all(q.map(async(U)=>{let I=await wz({chain:U,derivationPath:Y?.[U]||Q.NetworkDerivationPath[U],sdk:W}),E=await I.getAddress()||"";z({...I,address:E,chain:U,walletType:Q.WalletOption.KEEPKEY})})),!0},directSigningSupport:{[Q.Chain.Arbitrum]:!0,[Q.Chain.Avalanche]:!0,[Q.Chain.Base]:!0,[Q.Chain.Berachain]:!0,[Q.Chain.BinanceSmartChain]:!0,[Q.Chain.Ethereum]:!0,[Q.Chain.Gnosis]:!0,[Q.Chain.Monad]:!0,[Q.Chain.Optimism]:!0,[Q.Chain.Polygon]:!0,[Q.Chain.Ripple]:!0,[Q.Chain.XLayer]:!0},name:"connectKeepkey",supportedChains:[Q.Chain.Arbitrum,Q.Chain.Avalanche,Q.Chain.Base,Q.Chain.Berachain,Q.Chain.BinanceSmartChain,Q.Chain.Bitcoin,Q.Chain.BitcoinCash,Q.Chain.Cosmos,Q.Chain.Dogecoin,Q.Chain.Dash,Q.Chain.Ethereum,Q.Chain.Gnosis,Q.Chain.Litecoin,Q.Chain.Monad,Q.Chain.Ripple,Q.Chain.Optimism,Q.Chain.Polygon,Q.Chain.THORChain,Q.Chain.Maya,Q.Chain.XLayer],walletType:Q.WalletOption.KEEPKEY}),Iz=r.getWalletSupportedChains(Gz);async function wz({sdk:z,chain:J,derivationPath:X}){let{getProvider:$,getEvmToolboxAsync:Z}=await import("@swapkit/toolboxes/evm");switch(J){case Q.Chain.BinanceSmartChain:case Q.Chain.Arbitrum:case Q.Chain.Berachain:case Q.Chain.Optimism:case Q.Chain.Polygon:case Q.Chain.Avalanche:case Q.Chain.Base:case Q.Chain.Ethereum:case Q.Chain.Gnosis:case Q.Chain.Monad:case Q.Chain.XLayer:{let Y=await $(J),q=new o({chain:J,derivationPath:X,provider:Y,sdk:z});return await Z(J,{provider:Y,signer:q})}case Q.Chain.Cosmos:return Qz({derivationPath:X,sdk:z});case Q.Chain.THORChain:return $z({derivationPath:X,sdk:z});case Q.Chain.Maya:return Zz({derivationPath:X,sdk:z});case Q.Chain.Bitcoin:case Q.Chain.BitcoinCash:case Q.Chain.Dash:case Q.Chain.Dogecoin:case Q.Chain.Litecoin:return Yz({chain:J,derivationPath:X,sdk:z});case Q.Chain.Ripple:{let{rippleWalletMethods:Y}=await Promise.resolve().then(() => (Bz(),jz));return Y({derivationPath:X,sdk:z})}default:throw new Q.SwapKitError("wallet_keepkey_chain_not_supported",{chain:J})}}async function Uz(z=0){if(z>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await bz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await Uz(z+1)}async function bz(z="http://localhost:1646/spec/swagger.json"){try{return(await fetch(z)).status===200}catch{return!1}}
2
2
 
3
- //# debugId=45535A9905F9497364756E2164756E21
3
+ //# debugId=537033D0A54E9B7A64756E2164756E21
4
4
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/keepkey/index.ts", "../src/keepkey/chains/cosmos.ts", "../src/keepkey/chains/evm.ts", "../src/keepkey/chains/mayachain.ts", "../src/keepkey/chains/thorchain.ts", "../src/keepkey/chains/utxo.ts"],
3
+ "sources": ["../src/keepkey/coins.ts", "../src/keepkey/chains/ripple.ts", "../src/keepkey/index.ts", "../src/keepkey/chains/cosmos.ts", "../src/keepkey/chains/evm.ts", "../src/keepkey/chains/mayachain.ts", "../src/keepkey/chains/thorchain.ts", "../src/keepkey/chains/utxo.ts"],
4
4
  "sourcesContent": [
5
+ "/*\n KeepKey Specific bip32 path conventions\n*/\n\nimport { SwapKitError } from \"@swapkit/helpers\";\n\nconst HARDENED = 0x80000000;\n\nexport enum ChainToKeepKeyName {\n BTC = \"Bitcoin\",\n BCH = \"BitcoinCash\",\n DOGE = \"Dogecoin\",\n LTC = \"Litecoin\",\n DASH = \"Dash\",\n XRP = \"Ripple\",\n}\n\nexport function addressNListToBIP32(address: number[]) {\n return `m/${address.map((num) => (num >= HARDENED ? `${num - HARDENED}'` : num)).join(\"/\")}`;\n}\n\nexport function bip32Like(path: string) {\n if (path === \"m/\") return true;\n\n return /^m(((\\/[0-9]+h)+|(\\/[0-9]+H)+|(\\/[0-9]+')*)((\\/[0-9]+)*))$/.test(path);\n}\n\nexport function bip32ToAddressNList(initPath: string): number[] {\n let path = initPath;\n\n if (!bip32Like(path)) {\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: `Not a bip32 path: '${path}'` });\n }\n\n if (/^m\\//i.test(path)) {\n path = path.slice(2);\n }\n const segments = path.split(\"/\");\n\n if (segments.length === 1 && segments[0] === \"\") return [];\n\n const ret = new Array(segments.length);\n\n for (let i = 0; i < segments.length; i++) {\n // TODO: Check for better way instead of exec\n const segment = segments[i];\n if (segment) {\n const tmp = /(\\d+)([hH']?)/.exec(segment);\n if (tmp === null) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid input\" });\n\n const [, num = \"\", modifier = \"\"] = tmp;\n\n ret[i] = Number.parseInt(num, 10);\n\n if (ret[i] >= HARDENED)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid child index\" });\n\n if (modifier === \"h\" || modifier === \"H\" || modifier === \"'\") {\n ret[i] += HARDENED;\n } else if (modifier.length > 0) {\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid modifier\" });\n }\n }\n }\n\n return ret;\n}\n",
6
+ "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n} from \"@swapkit/helpers\";\nimport { getRippleToolbox } from \"@swapkit/toolboxes/ripple\";\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport const rippleWalletMethods = async ({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}) => {\n // Derivation path handling (default to standard XRP 44'/144'/0'/0/0)\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${DerivationPath[Chain.Ripple]}/0`;\n\n // Fetch address from KeepKey\n const { address } = await (sdk as any).address.xrpGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n });\n\n // Inject minimal signer so toolbox's address helpers work\n const signer = {\n getAddress: () => Promise.resolve(address),\n signTransaction: () => {\n throw new Error(\"signTransaction not supported via toolbox\");\n },\n };\n\n const toolbox = await getRippleToolbox({ signer });\n\n const transfer = async ({ recipient, assetValue, memo }: GenericTransferParams) => {\n // Build XRPL Payment tx using toolbox helper\n const tx = await toolbox.createTransaction({ assetValue, memo, recipient, sender: address });\n\n // Convert toolbox Payment tx into KeepKey StdTx wrapper (KeepKey-specific format)\n const stdTx = {\n type: \"auth/StdTx\",\n value: {\n fee: { amount: [{ amount: \"1000\", denom: \"drop\" }], gas: \"28000\" },\n memo: memo && memo.length > 0 ? memo : \"\",\n msg: [\n {\n type: \"ripple-sdk/MsgSend\",\n value: { amount: [{ amount: tx.Amount, denom: \"drop\" }], from_address: address, to_address: recipient },\n },\n ],\n signatures: null,\n },\n };\n\n const unsignedTx = {\n addressNList: bip32ToAddressNList(derivationPathString),\n flags: tx.Flags === 0 ? undefined : tx.Flags,\n lastLedgerSequence: tx.LastLedgerSequence?.toString(),\n payment: {\n amount: tx.Amount,\n destination: tx.Destination,\n destinationTag: (tx.DestinationTag ?? \"0\").toString(),\n },\n sequence: (tx.Sequence ?? 0).toString(),\n tx: stdTx,\n } as any;\n\n // Sign with KeepKey\n const responseSign = JSON.parse(await (sdk as any).xrp.xrpSignTransaction(unsignedTx));\n\n // keepkey-sdk may return either { tx_blob } or StdTx with Base64 serializedTx\n const txBlob: string | undefined =\n (responseSign as any).tx_blob ?? (responseSign as any).value?.signatures?.[0]?.serializedTx;\n if (!txBlob) throw new Error(\"KeepKey XRP sign failed\");\n\n const buffer = Buffer.from(txBlob, \"base64\");\n const txBlobHex = buffer.toString(\"hex\");\n\n // Broadcast signed tx via toolbox\n return toolbox.broadcastTransaction(txBlobHex);\n };\n\n return { ...toolbox, address, getAddress: () => address, transfer };\n};\n",
5
7
  "import { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n type DerivationPathArray,\n filterSupportedChains,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n WalletOption,\n} from \"@swapkit/helpers\";\n\nexport type { PairingInfo } from \"@keepkey/keepkey-sdk\";\n\nimport { createWallet, getWalletSupportedChains } from \"@swapkit/wallet-core\";\nimport { cosmosWalletMethods } from \"./chains/cosmos\";\nimport { KeepKeySigner } from \"./chains/evm\";\nimport { mayachainWalletMethods } from \"./chains/mayachain\";\nimport { thorchainWalletMethods } from \"./chains/thorchain\";\nimport { utxoWalletMethods } from \"./chains/utxo\";\n\nexport const keepkeyWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectKeepkey(chains: Chain[], derivationPathMap?: Record<Chain, DerivationPathArray>) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const pairingInfo = SKConfig.get(\"integrations\").keepKey;\n if (!pairingInfo) throw new Error(\"KeepKey config not found\");\n\n const initialApiKey = SKConfig.get(\"apiKeys\").keepKey || \"1234\";\n\n await checkAndLaunch();\n\n // Conform to the expected { apiKey, pairingInfo } structure\n const keepkeyConfig = { apiKey: initialApiKey, pairingInfo };\n const keepKeySdk = await KeepKeySdk.create(keepkeyConfig);\n\n // Persist the new API key via SKConfig after pairing\n if (keepkeyConfig.apiKey && keepkeyConfig.apiKey !== initialApiKey) {\n SKConfig.setApiKey(\"keepKey\", keepkeyConfig.apiKey);\n }\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const walletMethods = await getWalletMethods({\n chain,\n derivationPath: derivationPathMap?.[chain] || NetworkDerivationPath[chain],\n sdk: keepKeySdk,\n });\n const address = (await walletMethods.getAddress()) || \"\";\n\n addChain({ ...walletMethods, address, chain, walletType: WalletOption.KEEPKEY });\n }),\n );\n return true;\n },\n directSigningSupport: {\n [Chain.Arbitrum]: true,\n [Chain.Avalanche]: true,\n [Chain.Base]: true,\n [Chain.Berachain]: true,\n [Chain.BinanceSmartChain]: true,\n [Chain.Ethereum]: true,\n [Chain.Gnosis]: true,\n [Chain.Monad]: true,\n [Chain.Optimism]: true,\n [Chain.Polygon]: true,\n [Chain.Ripple]: true,\n [Chain.XLayer]: true,\n // BTC/BCH/DASH/DOGE/LTC/Cosmos/THORChain/Maya: pending KeepKey SDK signer wrappers (V3 plan PRs)\n },\n name: \"connectKeepkey\",\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.Berachain,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dogecoin,\n Chain.Dash,\n Chain.Ethereum,\n Chain.Gnosis,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Ripple,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n Chain.Maya,\n Chain.XLayer,\n ],\n walletType: WalletOption.KEEPKEY,\n});\n\nexport const KEEPKEY_SUPPORTED_CHAINS = getWalletSupportedChains(keepkeyWallet);\n\nasync function getWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n}) {\n const { getProvider, getEvmToolboxAsync } = await import(\"@swapkit/toolboxes/evm\");\n\n switch (chain) {\n case Chain.BinanceSmartChain:\n case Chain.Arbitrum:\n case Chain.Berachain:\n case Chain.Optimism:\n case Chain.Polygon:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.Ethereum:\n case Chain.Gnosis:\n case Chain.Monad:\n case Chain.XLayer: {\n const provider = await getProvider(chain);\n const signer = new KeepKeySigner({ chain, derivationPath, provider, sdk });\n const toolbox = await getEvmToolboxAsync(chain, { provider, signer });\n\n return toolbox;\n }\n case Chain.Cosmos: {\n return cosmosWalletMethods({ derivationPath, sdk });\n }\n case Chain.THORChain: {\n return thorchainWalletMethods({ derivationPath, sdk });\n }\n case Chain.Maya: {\n return mayachainWalletMethods({ derivationPath, sdk });\n }\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n return utxoWalletMethods({ chain, derivationPath, sdk });\n }\n case Chain.Ripple: {\n const { rippleWalletMethods } = await import(\"./chains/ripple\");\n return rippleWalletMethods({ derivationPath, sdk });\n }\n default:\n throw new SwapKitError(\"wallet_keepkey_chain_not_supported\", { chain });\n }\n}\n\n// kk-sdk docs: https://keepkey.com/blog/building_on_the_keepkey_sdk\n// test spec: if offline, launch keepkey-bridge\nasync function checkAndLaunch(attempts = 0) {\n if (attempts >= 3) {\n alert(\"KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started\");\n }\n const isAvailable = await checkKeepkeyAvailability();\n\n if (!isAvailable) {\n window.location.assign(\"keepkey://launch\");\n await new Promise((resolve) => setTimeout(resolve, 30000));\n await checkAndLaunch(attempts + 1);\n }\n}\n\nasync function checkKeepkeyAvailability(spec = \"http://localhost:1646/spec/swagger.json\") {\n try {\n const response = await fetch(spec);\n return response.status === 200;\n } catch {\n return false;\n }\n}\n",
6
8
  "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport type { GenericTransferParams } from \"@swapkit/helpers\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n GAIAConfig,\n getRPCUrl,\n} from \"@swapkit/helpers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport async function cosmosWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const { DEFAULT_COSMOS_FEE_MAINNET, getCosmosToolbox, getFeeRateFromSwapKit, createStargateClient } = await import(\n \"@swapkit/toolboxes/cosmos\"\n );\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.GAIA}/0`;\n\n const { address: fromAddress } = (await sdk.address.cosmosGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const toolbox = await getCosmosToolbox(Chain.Cosmos);\n\n if (DEFAULT_COSMOS_FEE_MAINNET.amount[0]) {\n DEFAULT_COSMOS_FEE_MAINNET.amount[0].amount = String(await getFeeRateFromSwapKit(GAIAConfig.chainId, 500));\n }\n\n // TODO support other cosmos assets\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const amount = assetValue.getBaseValue(\"string\");\n const accountInfo = await toolbox.getAccount(fromAddress);\n\n const keepKeySignedTx = await sdk.cosmos.cosmosSignAmino({\n signDoc: {\n account_number: accountInfo?.accountNumber.toString() ?? \"\",\n chain_id: GAIAConfig.chainId,\n fee: DEFAULT_COSMOS_FEE_MAINNET,\n memo: memo || \"\",\n msgs: [\n {\n type: \"cosmos-sdk/MsgSend\",\n value: { amount: [{ amount, denom: \"uatom\" }], from_address: fromAddress, to_address: recipient },\n },\n ],\n sequence: accountInfo?.sequence.toString() ?? \"\",\n },\n signerAddress: fromAddress,\n });\n\n const decodedBytes = atob(keepKeySignedTx.serialized);\n const uint8Array = new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n\n const rpcUrl = await getRPCUrl(Chain.Cosmos);\n const client = await createStargateClient(rpcUrl);\n const response = await client.broadcastTx(uint8Array);\n\n return response.transactionHash;\n };\n\n return { ...toolbox, address: fromAddress, transfer };\n}\n",
7
9
  "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TypedDataDomain, TypedDataField } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ninterface KeepKeyEVMSignerParams {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n}\n\nexport class KeepKeySigner extends AbstractSigner {\n private sdk: KeepKeySdk;\n private chain: Chain;\n private derivationPath: DerivationPathArray;\n private address: string;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ sdk, chain, derivationPath, provider }: KeepKeyEVMSignerParams) {\n super();\n this.sdk = sdk;\n this.chain = chain;\n this.derivationPath = derivationPath || NetworkDerivationPath.ETH;\n this.address = \"\";\n this.provider = provider;\n }\n\n signTypedData = async (\n domain: TypedDataDomain,\n types: Record<string, TypedDataField[]>,\n value: Record<string, unknown>,\n explicitPrimaryType?: string,\n ) => {\n const { buildEIP712DomainType } = await import(\"@swapkit/toolboxes/evm\");\n const { TypedDataEncoder } = await import(\"ethers\");\n\n const { EIP712Domain: _, ...filteredTypes } = types;\n const primaryType = explicitPrimaryType ?? TypedDataEncoder.from(filteredTypes).primaryType;\n const domainTypes = buildEIP712DomainType(domain);\n\n const address = await this.getAddress();\n const result = await this.sdk.eth.ethSignTypedData({\n address,\n typedData: {\n domain: domain as Record<string, unknown>,\n message: value,\n primaryType,\n types: { EIP712Domain: domainTypes, ...filteredTypes },\n },\n });\n\n if (typeof result !== \"string\") {\n throw new SwapKitError(\"wallet_keepkey_method_not_supported\", { method: \"signTypedData\" });\n }\n\n return result.startsWith(\"0x\") ? result : `0x${result}`;\n };\n\n getAddress = async () => {\n if (this.address) return this.address;\n const { address } = await this.sdk.address.ethereumGetAddress({\n address_n: bip32ToAddressNList(derivationPathToString(this.derivationPath)),\n });\n\n this.address = address;\n return address;\n };\n\n signMessage = (message: string) => this.sdk.eth.ethSign({ address: this.address, message }) as Promise<string>;\n\n signTransaction = async ({\n to,\n value,\n gasLimit,\n nonce,\n data,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n }: TransactionRequest) => {\n if (!to) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing to address\" });\n if (!gasLimit) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasLimit\" });\n if (!data) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing data\" });\n\n const isEIP1559 = !!((maxFeePerGas || maxPriorityFeePerGas) && !gasPrice);\n if (isEIP1559 && !maxFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxFeePerGas\" });\n if (isEIP1559 && !maxPriorityFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxPriorityFeePerGas\" });\n if (!(isEIP1559 || gasPrice))\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasPrice\" });\n\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const nonceValue = nonce\n ? BigInt(nonce)\n : BigInt(await this.provider.getTransactionCount(await this.getAddress(), \"pending\"));\n\n const input = {\n addressNList: [2147483692, 2147483708, 2147483648, 0, 0],\n chainId: toHexString(BigInt(ChainToChainId[this.chain])),\n data,\n from: this.address,\n gas: toHexString(BigInt(gasLimit)),\n nonce: toHexString(nonceValue),\n to: to.toString(),\n value: toHexString(BigInt(value || 0)),\n ...(isEIP1559 && {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || \"0\")),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || \"0\")),\n }),\n ...(!isEIP1559 && {\n // Fixed syntax error and structure here\n gasPrice: toHexString(BigInt(gasPrice?.toString() || \"0\")),\n }),\n };\n const responseSign = await this.sdk.eth.ethSignTransaction(input);\n return responseSign.serialized;\n };\n\n sendTransaction = async (tx: TransactionRequest): Promise<any> => {\n if (!this.provider) throw new SwapKitError(\"wallet_keepkey_no_provider\");\n\n const signedTxHex = await this.signTransaction(tx);\n\n return await this.provider.broadcastTransaction(signedTxHex);\n };\n\n connect = (provider: Provider) =>\n new KeepKeySigner({ chain: this.chain, derivationPath: this.derivationPath, provider, sdk: this.sdk });\n}\n",
@@ -9,7 +11,7 @@
9
11
  "import type { KeepKeySdk, TypesThorchainSignDocDeposit, TypesThorchainSignDocTransfer } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n SwapKitError,\n THORConfig,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function thorchainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { buildAminoMsg, getDefaultChainFee, createStargateClient, getCosmosToolbox } = await import(\n \"@swapkit/toolboxes/cosmos\"\n );\n\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.THOR}/0`;\n\n const { address: fromAddress } = (await sdk.address.thorchainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n\n const isTransfer = recipient && recipient !== \"\";\n const msg = buildAminoMsg({ assetValue, memo, recipient, sender });\n\n const signDoc = makeSignDoc(\n [msg],\n getDefaultChainFee(Chain.THORChain),\n THORConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const signedTx = isTransfer\n ? await sdk.thorchain.thorchainSignAminoTransfer({\n signDoc: signDoc as TypesThorchainSignDocTransfer,\n signerAddress: sender,\n })\n : await sdk.thorchain.thorchainSignAminoDeposit({\n signDoc: signDoc as TypesThorchainSignDocDeposit,\n signerAddress: sender,\n });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n // const signMessage = async (message: string) => {\n // const stargateClient = await createStargateClient(RPCUrl.THORChain);\n // // return signedTx;\n // };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
10
12
  "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport {\n assertDerivationIndex,\n createHDWalletHelpers,\n getNetworkForChain,\n getUTXOAccountIndexFromPath,\n getUTXOAccountPath,\n getUTXOAddressPath,\n getUtxoApi,\n stripToCashAddress,\n type UTXOToolboxes,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\nimport { bip32ToAddressNList, ChainToKeepKeyName } from \"../coins\";\n\ninterface KeepKeyInputObject {\n addressNList: number[];\n scriptType: string;\n amount: string;\n vout: number;\n txid: string;\n hex: string;\n}\n\ntype KeepKeyUTXOWalletMethods = Record<string, unknown> & { address: string };\n\nexport async function utxoWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Exclude<UTXOChain, typeof Chain.Zcash>;\n derivationPath?: DerivationPathArray;\n}): Promise<KeepKeyUTXOWalletMethods> {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n // This might not work for BCH\n const toolbox = await getUtxoToolbox(chain);\n const scriptType = [Chain.Bitcoin, Chain.Litecoin].includes(chain as typeof Chain.Bitcoin)\n ? (\"p2wpkh\" as const)\n : (\"p2pkh\" as const);\n\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath[chain]}/0`;\n\n const addressInfo = {\n address_n: bip32ToAddressNList(derivationPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n };\n\n const walletAddress: string = (await sdk.address.utxoGetAddress(addressInfo)).address;\n const network = getNetworkForChain(chain);\n\n const signTransaction = async (tx: Transaction, inputs: KeepKeyInputObject[], memo = \"\") => {\n const outputs: any[] = [];\n\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const address = tx.getOutputAddress(i, network);\n const value = Number(output.amount);\n\n if (address === walletAddress) {\n outputs.push({\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n });\n } else if (address) {\n const outputAddress = chain === Chain.BitcoinCash ? stripToCashAddress(address) : address;\n\n if (outputAddress) {\n outputs.push({ address: outputAddress, addressType: \"spend\", amount: value });\n }\n }\n }\n\n const removeNullAndEmptyObjectsFromArray = (arr: any[]) => {\n return arr.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0);\n };\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs,\n opReturnData: memo,\n outputs: removeNullAndEmptyObjectsFromArray(outputs),\n });\n\n return responseSign.serializedTx?.toString();\n };\n\n const transfer = async ({ recipient, feeOptionKey, feeRate, memo, ...rest }: GenericTransferParams) => {\n if (!walletAddress)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"From address must be provided\" });\n if (!recipient)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Recipient address must be provided\" });\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs: rawInputs } = await createTxMethod({\n ...rest,\n feeRate: feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast],\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputs = rawInputs.map(({ value, index, hash, txHex }) => ({\n //@TODO don't hardcode master, lookup on blockbook what input this is for and what path that address is!\n addressNList: addressInfo.address_n,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: index,\n }));\n\n const txHex = await signTransaction(tx, inputs, memo);\n return toolbox.broadcastTx(txHex);\n };\n\n const signTransactionWithMultipleInputs = async (\n tx: Transaction,\n inputs: Array<{\n hash: string;\n index: number;\n value: number;\n txHex?: string;\n derivationIndex: number;\n isChange: boolean;\n }>,\n memo = \"\",\n ) => {\n const accountAddressN = bip32ToAddressNList(\n derivationPath\n ? derivationPathToString(derivationPath.slice(0, 3) as DerivationPathArray)\n : DerivationPath[chain],\n );\n\n type KeepKeyOutput =\n | { addressNList: number[]; addressType: \"change\"; amount: number; isChange: true; scriptType: string }\n | { address: string; addressType: \"spend\"; amount: number };\n\n const outputs: KeepKeyOutput[] = [];\n for (let i = 0; i < tx.outputsLength; i++) {\n const output = tx.getOutput(i);\n const outputAddress = tx.getOutputAddress(i, network);\n const value = Number(output.amount);\n\n if (outputAddress === walletAddress) {\n outputs.push({\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n });\n } else if (outputAddress) {\n const finalAddress = chain === Chain.BitcoinCash ? stripToCashAddress(outputAddress) : outputAddress;\n if (finalAddress) {\n outputs.push({ address: finalAddress, addressType: \"spend\", amount: value });\n }\n }\n }\n\n const keepKeyInputs = inputs.map(({ hash, index: inputIndex, value, txHex, derivationIndex, isChange }) => {\n const changePath = isChange ? 1 : 0;\n const inputAddressN = [...accountAddressN, changePath, derivationIndex];\n return {\n addressNList: inputAddressN,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: inputIndex,\n };\n });\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs: keepKeyInputs,\n opReturnData: memo,\n outputs: outputs.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0),\n });\n\n return responseSign.serializedTx?.toString() || \"\";\n };\n\n const transferFromMultipleAddresses = async ({\n utxos,\n recipient,\n assetValue,\n memo,\n feeRate,\n feeOptionKey,\n }: {\n utxos: Array<{\n hash: string;\n index: number;\n value: number;\n txHex?: string;\n derivationIndex: number;\n isChange: boolean;\n address: string;\n }>;\n recipient: string;\n assetValue: { getBaseValue: (unit: string) => number; chain: string };\n memo?: string;\n feeRate?: number;\n feeOptionKey?: (typeof FeeOption)[keyof typeof FeeOption];\n }) => {\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { tx, inputs: selectedInputs } = await createTxMethod({\n assetValue: assetValue as any,\n feeRate: txFeeRate,\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputsWithDerivation = selectedInputs.map(\n (input: { hash: string; index: number; value: number; txHex?: string }) => {\n const utxoInfo = utxos.find((u) => u.hash === input.hash && u.index === input.index);\n return { ...input, derivationIndex: utxoInfo?.derivationIndex ?? 0, isChange: utxoInfo?.isChange ?? false };\n },\n );\n\n const signedTxHex = await signTransactionWithMultipleInputs(tx, inputsWithDerivation, memo);\n return toolbox.broadcastTx(signedTxHex);\n };\n\n async function getExtendedPublicKeyInfo({ accountIndex }: { accountIndex?: number } = {}) {\n try {\n const resolvedAccountPath = getUTXOAccountPath({ accountIndex, chain, derivationPath });\n const resolvedAccountPathString = derivationPathToString(resolvedAccountPath);\n const path = {\n address_n: bip32ToAddressNList(resolvedAccountPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n showDisplay: false,\n symbol: chain.toUpperCase(),\n };\n\n const responsePubkey = await sdk.system.info.getPublicKey(path);\n\n return {\n accountIndex: getUTXOAccountIndexFromPath(resolvedAccountPath),\n path: resolvedAccountPathString,\n xpub: responsePubkey.xpub,\n };\n } catch (error) {\n throw new SwapKitError(\"wallet_keepkey_failed_to_get_public_key\", {\n chain,\n error: error instanceof Error ? error.message : \"Unknown error\",\n });\n }\n }\n\n function getExtendedPublicKey(params: { accountIndex?: number } = {}) {\n return getExtendedPublicKeyInfo(params);\n }\n\n async function deriveAddressAtIndex({\n accountIndex,\n index,\n change = false,\n }: {\n accountIndex?: number;\n index: number;\n change?: boolean;\n }) {\n try {\n assertDerivationIndex(\"index\", index);\n const fullPath = getUTXOAddressPath({ accountIndex, chain, change, derivationPath, index });\n const fullPathString = derivationPathToString(fullPath);\n\n const result = await sdk.address.utxoGetAddress({\n address_n: bip32ToAddressNList(fullPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n });\n\n let finalAddress = result.address;\n if (chain === Chain.BitcoinCash) {\n finalAddress = stripToCashAddress(result.address);\n }\n\n return {\n accountIndex: getUTXOAccountIndexFromPath(fullPath),\n address: finalAddress,\n change,\n index,\n path: fullPathString,\n pubkey: \"\",\n };\n } catch {\n return undefined;\n }\n }\n\n async function deriveAddresses({\n accountIndex,\n count,\n startIndex = 0,\n change = false,\n }: {\n accountIndex?: number;\n count: number;\n startIndex?: number;\n change?: boolean;\n }) {\n assertDerivationIndex(\"count\", count);\n assertDerivationIndex(\"startIndex\", startIndex);\n\n const addresses = await Promise.all(\n Array.from({ length: count }, (_, i) => deriveAddressAtIndex({ accountIndex, change, index: startIndex + i })),\n );\n\n return addresses.filter((address) => !!address);\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (address: string) => getUtxoApi(chain).getUtxos({ address, fetchTxHex: true }),\n });\n\n return {\n ...toolbox,\n ...hdHelpers,\n address: walletAddress,\n deriveAddressAtIndex,\n deriveAddresses,\n getExtendedPublicKey,\n getExtendedPublicKeyInfo,\n signTransaction,\n signTransactionWithMultipleInputs,\n transfer,\n transferFromMultipleAddresses,\n };\n}\n"
11
13
  ],
12
- "mappings": "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",
13
- "debugId": "45535A9905F9497364756E2164756E21",
14
+ "mappings": "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",
15
+ "debugId": "537033D0A54E9B7A64756E2164756E21",
14
16
  "names": []
15
17
  }
@@ -1,4 +1,4 @@
1
- var SL={};fL(SL,{ledgerWallet:()=>GL,getLedgerExtendedPublicKey:()=>BL,LEDGER_SUPPORTED_CHAINS:()=>zL});module.exports=UL(SL);var B=require("@swapkit/helpers"),D=require("@swapkit/toolboxes/utxo"),B0=require("@swapkit/wallet-core");var M=require("@swapkit/helpers"),l=async({chain:L,ledgerClient:y})=>{if(!y)return"";switch(L){case M.Chain.Cosmos:case M.Chain.THORChain:return y.connect();case M.Chain.Ethereum:case M.Chain.BinanceSmartChain:case M.Chain.Avalanche:case M.Chain.Polygon:case M.Chain.Arbitrum:case M.Chain.Berachain:case M.Chain.Optimism:case M.Chain.Base:case M.Chain.Aurora:case M.Chain.Gnosis:case M.Chain.Monad:case M.Chain.XLayer:return y.getAddress();case M.Chain.Bitcoin:case M.Chain.BitcoinCash:case M.Chain.Dash:case M.Chain.Dogecoin:case M.Chain.Litecoin:case M.Chain.Zcash:{let _=y;await _.connect();let w=await _.getAddress();return L===M.Chain.BitcoinCash?w.replace("bitcoincash:",""):w}case M.Chain.Near:return await y.getAddress();case M.Chain.Ripple:return y.getAddress();case M.Chain.Tron:return y.getAddress();case M.Chain.Sui:return y.connect();default:throw new M.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:M.WalletOption.LEDGER})}};var Z=require("@swapkit/helpers");var x=require("@swapkit/helpers");var E=require("@swapkit/helpers");var W0=require("@swapkit/helpers");var d=85,J0=250;var h={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},_0={ADD:1,INIT:0,LAST:2},Z0={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},u={JSON:0},g={NoError:36864},H0={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",25600:"Execution Error",26368:"Wrong Length",26626:"Error deriving keys",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",36864:"No errors",36865:"Device is busy"};function P(L){if(L in H0)return H0[L];return`Unknown Status Code: ${L}`}function $L(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function S(L){if(L){if($L(L)){if(Object.hasOwn(L,"statusCode"))return{error_message:P(L.statusCode),return_code:L.statusCode};if(Object.hasOwn(L,"return_code")&&Object.hasOwn(L,"error_message"))return L}return{error_message:L.toString(),return_code:65535}}return{error_message:L.toString(),return_code:65535}}function $0(L){return L.send(85,h.GET_VERSION,0,0).then((y)=>{let _=y.slice(-2),w=_[0]*256+_[1],R=0;if(y.length>=9)R=(y[5]<<24)+(y[6]<<16)+(y[7]<<8)+(y[8]<<0);return{device_locked:y[4]===1,error_message:P(w),major:y[1],minor:y[2],patch:y[3],return_code:w,target_id:R.toString(16),test_mode:y[0]!==0}},S)}var p=require("@swapkit/helpers");function U0(L){if(L==null||L.length<3)throw new p.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new p.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too long"});let y=Buffer.alloc(1+4*L.length);y.writeUInt8(L.length,0);for(let _=0;_<L.length;_+=1){let w=L[_]||0;if(_<3)w|=2147483648;y.writeInt32LE(w,1+_*4)}return y}function j0(L,y,_,w,R=u.JSON){return L.transport.send(d,h.SIGN_SECP256K1,y,R,w,[g.NoError,27012,27264]).then((G)=>{let N=G.slice(-2),X=N[0]*256+N[1],T=P(X);if(X===27264||X===27012)T=`${T} : ${G.slice(0,G.length-2).toString("ascii")}`;let $=null;if(G.length>2)$=G.slice(0,G.length-2);return{error_message:T,return_code:X,signature:$}},S)}function jL(L){if(L.length!==65)throw new p.SwapKitError("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let y=L.slice(33,65),_=Buffer.from([2+(y[y.length-1]&1)]);return Buffer.concat([_,L.slice(1,33)])}function f0(L,y){return L.transport.send(d,h.INS_PUBLIC_KEY_SECP256K1,0,0,y,[g.NoError]).then((_)=>{let w=_.slice(-2),R=w[0]*256+w[1],G=Buffer.from(_.slice(0,65));return{compressed_pk:jL(G),error_message:P(R),pk:G,return_code:R}},S)}function z0(L){if(!L||L.length!==5)throw new p.SwapKitError("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let y=Buffer.alloc(20);return y.writeUInt32LE(2147483648+L[0],0),y.writeUInt32LE(2147483648+L[1],4),y.writeUInt32LE(2147483648+L[2],8),y.writeUInt32LE(L[3],12),y.writeUInt32LE(L[4],16),y}function k0(L,y,_,w,R=u.JSON){let G=_0.ADD;if(y===1)G=_0.INIT;if(y===_)G=_0.LAST;return j0(L,G,0,w,R)}function K0(L,y){return L.transport.send(d,h.GET_ADDR_SECP256K1,0,0,y,[g.NoError]).then((_)=>{let w=_.slice(-2),R=w[0]*256+w[1];return{compressed_pk:Buffer.from(_.slice(0,33)),error_message:P(R),pk:"OBSOLETE PROPERTY",return_code:R}},S)}class a{transport;versionResponse;constructor(L){if(!L)throw new W0.SwapKitError("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new W0.SwapKitError("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let y=Buffer.alloc(1+L.length);return y.writeUInt8(L.length,0),y.write(L,1),y}async serializePath(L){if(this.versionResponse=await $0(this.transport),this.versionResponse.return_code!==g.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return U0(L);case 2:return z0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,y){let _=await this.serializePath(L),w=[];w.push(_);for(let R=0;R<y.length;R+=J0){let G=R+J0;if(R>y.length)G=y.length;w.push(y.slice(R,G))}return w}async getVersion(){try{return this.versionResponse=await $0(this.transport),this.versionResponse}catch(L){return S(L)}}appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let y=L.readUInt16BE(L.length-2),_="",w="",R=0,G=0;if(L[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let N=L[1];_=L.slice(2,2+N).toString("ascii");let X=2+N,T=L[X];X+=1,w=L.slice(X,X+T).toString("ascii"),X+=T;let $=L[X];return X+=1,R=$,G=L[X],{appName:_,appVersion:w,error_message:P(y),flag_onboarded:(G&4)!==0,flag_pin_validated:(G&128)!==0,flag_recovery:(G&1)!==0,flag_signed_mcu_code:(G&2)!==0,flagLen:R,flagsValue:G,return_code:y}},S)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[g.NoError,28160]).then((L)=>{let y=L.slice(-2),_=y[0]*256+y[1];if(_===28160)return{error_message:"This command is only available in the Dashboard",return_code:_};let w=L.slice(0,4).toString("hex"),R=4,G=L[R];R+=1;let N=L.slice(R,R+G).toString();R+=G;let X=L[R];R+=1;let T=L.slice(R,R+X).toString("hex");R+=X;let $=L[R];R+=1;let O=L.slice(R,R+$);if(O[$-1]===0)O=L.slice(R,R+$-1);let J=O.toString();return{error_message:P(_),flag:T,mcuVersion:J,return_code:_,seVersion:N,targetId:w}},S)}async publicKey(L){try{let y=await this.serializePath(L);switch(this.versionResponse.major){case 1:return f0(this,y);case 2:{let _=Buffer.concat([a.serializeHRP("thor"),y]);return K0(this,_)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(y){return S(y)}}async getAddressAndPubKey(L,y,_=!1){try{let w=await this.serializePath(L),R=Buffer.concat([a.serializeHRP(y),w]),G=await this.transport.send(d,h.GET_ADDR_SECP256K1,_?Z0.SHOW_ADDRESS_IN_DEVICE:Z0.ONLY_RETRIEVE,0,R,[g.NoError]),N=Buffer.from(G.slice(0,33)),X=Buffer.from(G.slice(33,-2)).toString(),T=G.readUInt16BE(G.length-2);return{bech32_address:X,compressed_pk:N,error_message:P(T),return_code:T}}catch(w){return S(w)}}showAddressAndPubKey(L,y){return this.getAddressAndPubKey(L,y,!0)}signSendChunk(L,y,_,w=u.JSON){switch(this.versionResponse.major){case 1:return j0(this,L,y,_,w);case 2:return k0(this,L,y,_,w);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(L,y,_=u.JSON){let w=Buffer.from(y),R=[],G;try{R=await this.signGetChunks(L,w),G=await this.signSendChunk(1,R.length,R[0],_)}catch(X){S(X)}let N={error_message:G.error_message,return_code:G.return_code,signature:null};for(let X=1;X<R.length;X+=1)if(N=await this.signSendChunk(1+X,R.length,R[X],_),N.return_code!==g.NoError)break;return{error_message:N.error_message,return_code:N.return_code,signature:N.signature}}}class t{ledgerTimeout=50000;derivationPath=E.NetworkDerivationPath.GAIA;transport;ledgerApp;chain="thor";injectedTransport;constructor(L){if(this.injectedTransport=L,L)this.transport=L}checkOrCreateTransportAndLedger=async(L=!1)=>{if(!L&&this.transport&&this.ledgerApp)return;try{if(!this.transport||L&&!this.injectedTransport)this.transport=this.injectedTransport??await f();switch(this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new a(this.transport):this.ledgerApp;break}case"cosmos":{let _=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=L||!this.ledgerApp?new _(this.transport):this.ledgerApp}}return this.ledgerApp}catch(y){throw new E.SwapKitError("wallet_ledger_connection_error",y)}};validateResponse=(L,y)=>{switch(L){case E.LedgerErrorCode.NoError:return;case E.LedgerErrorCode.LockedDevice:throw new E.SwapKitError("wallet_ledger_device_locked",{message:`Ledger is locked: ${y}`});case E.LedgerErrorCode.TC_NotFound:throw new E.SwapKitError("wallet_ledger_device_not_found");default:break}}}class F0 extends t{pubKey=null;derivationPath;constructor(L=x.NetworkDerivationPath.GAIA,y){super(y);this.chain="cosmos",this.derivationPath=x.derivationPathToString(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:y}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),y};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,y="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:w,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new x.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,w),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:y,signature:R}]};signAmino=async(L,y)=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.getAccounts();if(_.findIndex((W)=>W.address===L)===-1)throw new x.SwapKitError("wallet_ledger_address_not_found",{address:L});let R=await import("@cosmjs/amino"),G=R.encodeSecp256k1Signature??R.default?.encodeSecp256k1Signature,N=R.serializeSignDoc??R.default?.serializeSignDoc,X=await import("@cosmjs/crypto"),T=X.Secp256k1Signature??X.default?.Secp256k1Signature,$=N(y),O=await this.ledgerApp.sign(this.derivationPath,$);this.validateResponse(O.return_code,O.error_message);let J=T.fromDer(O.signature).toFixedLength();return{signature:G(_[0].pubkey,J),signed:y}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}var q=require("@swapkit/helpers"),S0=require("ethers");function WL(L){if(typeof L==="number")return L;let y=L.startsWith("0x")?L.slice(2):L;return Number.parseInt(y||"0",16)}class k extends S0.AbstractSigner{chainId=q.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;transport;injectedTransport;constructor({provider:L,derivationPath:y=q.NetworkDerivationPath.OP,chainId:_=q.ChainId.Optimism,transport:w}){super(L);this.chainId=_||q.ChainId.Ethereum,this.derivationPath=typeof y==="string"?y:q.derivationPathToString(y),this.injectedTransport=w,Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new k({chainId:this.chainId,derivationPath:this.derivationPath,provider:L,transport:this.transport??this.injectedTransport});checkOrCreateTransportAndLedger=async()=>{await this.createTransportAndLedger()};createTransportAndLedger=async()=>{if(this.ledgerApp)return;this.transport||=this.injectedTransport??await f();let L=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new L(this.transport)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new q.SwapKitError("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:y}=await import("ethers");await this.createTransportAndLedger();let _=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!_)throw new q.SwapKitError("wallet_ledger_signing_error");return _.r=`0x${_.r}`,_.s=`0x${_.s}`,y.from(_).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new q.SwapKitError("wallet_ledger_no_provider");let y=await this.signTransaction(L);return await this.provider.broadcastTransaction(y)};signTypedData=async(L,y,_,w)=>{let{buildEIP712DomainType:R}=await import("@swapkit/toolboxes/evm"),{Signature:G,TypedDataEncoder:N}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:X,...T}=y,$=w??N.from(T).primaryType,O;try{O=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:L,message:_,primaryType:$,types:{EIP712Domain:R(L),...T}})}catch(J){let W=J instanceof Error&&"statusCode"in J;if(!W||W&&J.statusCode===27013)throw J;let Q=N.hashDomain(L).slice(2),U=N.from(T).hash(_).slice(2);O=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,Q,U)}if(!O)throw new q.SwapKitError("wallet_ledger_signing_error");return O.r=`0x${O.r}`,O.s=`0x${O.s}`,G.from(O).serialized};signTransaction=async(L)=>{let{Transaction:y}=await import("ethers");await this.createTransportAndLedger();let _=L.nonce??void 0,w=_===void 0?await this.provider?.getTransactionCount(L.from||await this.getAddress()):void 0,R={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:_!==void 0?Number(_.toString()):w,to:L.to?.toString(),type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0,value:L.value},G=y.from(R).unsignedSerialized.slice(2),{ledgerService:N}=await import("@ledgerhq/hw-app-eth"),X=await N.resolveTransaction(G,{},{erc20:!0,externalPlugins:!0}),T=await this.ledgerApp?.signTransaction(this.derivationPath,G,X);if(!T)throw new q.SwapKitError("wallet_ledger_signing_error");let{r:$,s:O,v:J}=T;return y.from({...R,signature:{r:`0x${$}`,s:`0x${O}`,v:WL(J)}}).serialized}}var m0=(L)=>new k({...L,chainId:q.ChainId.Arbitrum}),V0=(L)=>new k({...L,chainId:q.ChainId.Aurora}),A0=(L)=>new k({...L,chainId:q.ChainId.Avalanche}),P0=(L)=>new k({...L,chainId:q.ChainId.Base}),E0=(L)=>new k({...L,chainId:q.ChainId.Ethereum}),I0=(L)=>new k({...L,chainId:q.ChainId.Gnosis}),v0=(L)=>new k({...L,chainId:q.ChainId.Optimism}),b0=(L)=>new k({...L,chainId:q.ChainId.Polygon}),l0=(L)=>new k({...L,chainId:q.ChainId.BinanceSmartChain}),g0=(L)=>new k({...L,chainId:q.ChainId.Monad}),c0=(L)=>new k({...L,chainId:q.ChainId.XLayer}),h0=(L)=>new k({...L,chainId:q.ChainId.Berachain});async function x0(L,y){let _=(await import("@ledgerhq/hw-app-near")).default,{Chain:w,NetworkDerivationPath:R,SwapKitError:G}=await import("@swapkit/helpers"),N=y??await f(),X=new _(N),T=(L||R[w.Near]).join("'/").concat("'"),{address:$,publicKey:O}=await X.getAddress(T);return{getAddress(){return Promise.resolve($)},async getPublicKey(){let{PublicKey:W}=await import("@near-js/crypto");return W.fromString(`ed25519:${O}`)},signDelegateAction(W){return Promise.reject(new G("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(W,Q,U,C,V){return Promise.reject(new G("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(W){let{Signature:Q,SignedTransaction:U}=await import("@near-js/transactions");try{let C=await X.signTransaction(W.encode(),T);if(!C)throw Error("Signature undefined");let V=new Q({data:C,keyType:0}),c=new U({signature:V,transaction:W});return[C,c]}catch(C){throw new G("wallet_ledger_signing_error",{error:C})}}}}var z=require("@swapkit/helpers");class d0{derivationPath;ledgerApp=null;address=null;publicKey=null;injectedTransport;constructor(L,y){this.derivationPath=typeof L==="string"?L:z.derivationPathToString(L||z.NetworkDerivationPath[z.Chain.Sui]),this.injectedTransport=y}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async createTransportAndLedger(){if(this.ledgerApp)return;let L=this.injectedTransport??await f(),y=(await import("@ledgerhq/hw-app-sui")).default;this.ledgerApp=new y(L)}async connect(){if(await this.createTransportAndLedger(),!this.ledgerApp)throw new z.SwapKitError("wallet_ledger_transport_error");let L=this.getLedgerPath(),y=await this.ledgerApp.getPublicKey(L);if(!y?.publicKey)throw new z.SwapKitError("wallet_ledger_failed_to_get_address");return this.publicKey=y.publicKey,this.address=`0x${Buffer.from(y.address).toString("hex")}`,this.address}toSuiAddress(){if(!this.address)throw new z.SwapKitError("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction(L){let y=L instanceof Uint8Array?L:L.transaction;if(await this.createTransportAndLedger(),!this.ledgerApp)throw new z.SwapKitError("wallet_ledger_transport_error");if(!this.publicKey)throw new z.SwapKitError("wallet_ledger_failed_to_get_address");try{let _=this.getLedgerPath(),w=new Uint8Array(3+y.length);w[0]=0,w[1]=0,w[2]=0,w.set(y,3);let R=await this.ledgerApp.signTransaction(_,w);if(!R?.signature)throw new z.SwapKitError("wallet_ledger_signing_error");let G=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(G.length!==32)throw new z.SwapKitError("wallet_ledger_signing_error",{error:"Invalid public key length"});let N=new Uint8Array(97);N[0]=0,N.set(R.signature,1),N.set(G,65);let X=Buffer.from(N).toString("base64");return{bytes:Buffer.from(y).toString("base64"),signature:X}}catch(_){throw new z.SwapKitError("wallet_ledger_signing_error",{error:_})}}}var u0=(L,y)=>new d0(L,y);var G0=require("@scure/base"),i=require("@swapkit/helpers");var i0=require("@scure/base"),I=require("@swapkit/helpers"),R0=(L)=>{if(L.length<64)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let y=L[3],_=L.slice(4,y+4);if(_.length===33&&_[0]===0)_=_.slice(1,33);else if(_.length===33)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"r too long"});while(_.length<32)_.unshift(0);if(L[y+4]!==2)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let w=L[y+5];if(4+y+2+w!==L.length)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let R=L.slice(y+6,L.length);if(R.length===33&&R[0]===0)R=R.slice(1,33);else if(R.length===33)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"s too long"});while(R.length<32)R.unshift(0);if(_.length!==32||R.length!==32)throw new I.SwapKitError("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return i0.base64.encode(Buffer.concat([_,R]))};function FL(L){if(typeof L==="string")return L;let y=L.chain?.toUpperCase(),_=(L.symbol||L.ticker||"").toUpperCase();if(!(y&&_))return _||y||"";if(L.synth)return`${y}/${_}`;return`${y}.${_}`}function ML(L){return{...L,msgs:L.msgs.map((y)=>{if(!y.type.includes("MsgDeposit"))return y;let _=y.value.coins;if(!Array.isArray(_))return y;return{...y,value:{...y.value,coins:_.map((w)=>({...w,asset:FL(w.asset)}))}}})}}class M0 extends t{pubKey=null;derivationPath;constructor(L=i.NetworkDerivationPath.THOR,y){super(y);this.chain="thor",this.derivationPath=L}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:L,bech32_address:y}=await this.getAddressAndPubKey();return this.pubKey=G0.base64.encode(L),y};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,y="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:w,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new i.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,w),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:y,signature:R0(R)}]};signAmino=async(L,y)=>{await this.checkOrCreateTransportAndLedger(!0);let _=(await this.getAccounts()).find((O)=>O.address===L);if(!_)throw new i.SwapKitError("wallet_ledger_address_not_found",{address:L});let w=await import("@cosmjs/amino"),R=w.encodeSecp256k1Signature??w.default?.encodeSecp256k1Signature,G=w.serializeSignDoc??w.default?.serializeSignDoc,N=ML(y),{return_code:X,error_message:T,signature:$}=await this.ledgerApp.sign(this.derivationPath,G(N));return this.validateResponse(X,T),{signature:R(_.pubkey,G0.base64.decode(R0($))),signed:y}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{bech32_address:L,compressed_pk:y}=await this.getAddressAndPubKey();return this.pubKey=G0.base64.encode(y),[{address:L,algo:"secp256k1",pubkey:y}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:_,signature:w}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new i.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,_),R0(w)}}var v=require("@swapkit/helpers");class o0{derivationPath;ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor(L,y){this.derivationPath=typeof L==="string"?L:v.derivationPathToString(L||v.NetworkDerivationPath.TRON),this.injectedTransport=y}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=this.injectedTransport??await f(),y=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new y(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new v.SwapKitError("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{await this.createTransportAndLedger();let L=await this.ledgerApp?.getAddress(this.derivationPath);if(!L)throw new v.SwapKitError("wallet_ledger_failed_to_get_address");return{address:L.address,publicKey:L.publicKey}};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signTransaction=async(L)=>{if(await this.createTransportAndLedger(),!this.ledgerApp)throw new v.SwapKitError("wallet_ledger_transport_error");try{let y=await this.ledgerApp.signTransaction(this.derivationPath,L.raw_data_hex,[]);if(!y)throw new v.SwapKitError("wallet_ledger_signing_error");return{...L,signature:[y]}}catch(y){throw new v.SwapKitError("wallet_ledger_signing_error",{error:y})}}}var n0=(L,y)=>new o0(L,y);var e=require("@scure/base"),b=require("@swapkit/helpers");var a0=["bitcoin-cash","dash","dogecoin","zcash"],p0=({tx:L,inputUtxos:y,btcApp:_,derivationPath:w,chain:R},G)=>{let N=y.map((Q)=>{return[_.splitTransaction(Q.txHex||"",!a0.includes(R),R==="zcash"),Q.index,void 0,void 0]}),X=e.hex.encode(L.unsignedTx),T=_.splitTransaction(X,!0),$=_.serializeTransactionOutputs(T).toString("hex"),O=b.getWalletFormatFor(w),J=O!=="legacy",W={additionals:O==="bech32"?["bech32"]:[],associatedKeysets:N.map(()=>w),inputs:N,outputScriptHex:$,segwit:J,useTrustedInputForSegwit:J};return _.createPaymentTransaction({...W,...G})},QL=({tx:L,inputUtxos:y,btcApp:_,derivationPaths:w,chain:R},G)=>{if(w.length!==y.length)throw new b.SwapKitError("wallet_ledger_invalid_params",{message:`Derivation paths count (${w.length}) must match inputs count (${y.length})`});let N=y.map((Q)=>{return[_.splitTransaction(Q.txHex||"",!a0.includes(R),R==="zcash"),Q.index,void 0,void 0]}),X=e.hex.encode(L.unsignedTx),T=_.splitTransaction(X,!0),$=_.serializeTransactionOutputs(T).toString("hex"),O=b.getWalletFormatFor(w[0]??""),J=O!=="legacy",W={additionals:O==="bech32"?["bech32"]:[],associatedKeysets:w,inputs:N,outputScriptHex:$,segwit:J,useTrustedInputForSegwit:J};return _.createPaymentTransaction({...W,...G})},o=({chain:L,additionalSignParams:y})=>{return(_,w)=>{let R,G=null;async function N(){G||=w??await f();let J=(await import("@ledgerhq/hw-app-btc")).default;return R||=new J({currency:L,transport:G}),R}async function X(){return R||await N()}async function T(){if(!w)await G?.close?.();R=void 0,G=null}let $=typeof _==="string"?_:b.derivationPathToString(_),O=b.getWalletFormatFor($);return{connect:async()=>{await X()},disconnect:T,getAddress:async()=>{let{toCashAddress:J}=await import("@swapkit/toolboxes/utxo"),W=await X(),{bitcoinAddress:Q}=await W.getWalletPublicKey($,{format:O});if(!Q)throw new b.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${$}`});return L==="bitcoin-cash"&&O==="legacy"?J(Q).replace(/(bchtest:|bitcoincash:)/,""):Q},getExtendedPublicKey:async(J="84'/0'/0'",W=76067358)=>{return(await X()).getWalletXpub({path:J,xpubVersion:W})},signPCZT:async(J)=>{if(L!=="zcash")throw new b.SwapKitError("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});let W=await X(),{ZcashTransaction:Q,Script:U}=await import("@swapkit/utxo-signer"),C=J.getGlobal(),V=new Q({consensusBranchId:C.consensusBranchId,expiryHeight:C.expiryHeight,lockTime:C.lockTime,version:C.txVersion,versionGroupId:C.versionGroupId}),c=[];for(let F=0;F<J.inputsLength;F++){let j=J.getInput(F);V.addInput({index:j.index,script:new Uint8Array,sequence:j.sequence??4294967295,txid:j.txid,value:j.value}),c.push({hash:e.hex.encode(new Uint8Array([...j.txid].reverse())),index:j.index,txHex:YL(j,C),value:Number(j.value),witnessUtxo:{script:j.scriptPubkey,value:Number(j.value)}})}for(let F=0;F<J.outputsLength;F++){let j=J.getOutput(F);V.addOutput({amount:j.value,script:j.scriptPubkey})}let w0=await p0({btcApp:W,chain:L,derivationPath:$,inputUtxos:c,tx:V},{...y,expiryHeight:(()=>{let F=Buffer.alloc(4);return F.writeUInt32LE(C.expiryHeight),F})(),lockTime:C.lockTime}),Y=Q.fromHex(w0,{allowUnknownOutputs:!0}),H=J.clone();for(let F=0;F<Y.inputsLength;F++){let j=Y.getInput(F);if(j.script&&j.script.length>0){let K=U.decode(j.script);if(K.length>=2)H.addSignature(F,K[1],K[0])}}return H},signTransaction:async(J,W)=>{let Q=await X();return p0({btcApp:Q,chain:L,derivationPath:$,inputUtxos:W,tx:J},y)},signTransactionWithMultiplePaths:async(J,W,Q)=>{let U=await X();return QL({btcApp:U,chain:L,derivationPaths:Q,inputUtxos:W,tx:J},y)}}}};function YL(L,y){let _=[],w=(y.txVersion|2147483648)>>>0;_.push(w&255,w>>8&255,w>>16&255,w>>24&255);let R=y.versionGroupId;_.push(R&255,R>>8&255,R>>16&255,R>>24&255),_.push(0);let G=L.index+1;if(G<253)_.push(G);else _.push(253,G&255,G>>8&255);for(let T=0;T<L.index;T++)_.push(0,0,0,0,0,0,0,0),_.push(0);let N=L.value;_.push(Number(N&0xffn),Number(N>>8n&0xffn),Number(N>>16n&0xffn),Number(N>>24n&0xffn),Number(N>>32n&0xffn),Number(N>>40n&0xffn),Number(N>>48n&0xffn),Number(N>>56n&0xffn));let X=L.scriptPubkey;if(X.length<253)_.push(X.length);else _.push(253,X.length&255,X.length>>8&255);for(let T of X)_.push(T);return _.push(y.lockTime&255,y.lockTime>>8&255,y.lockTime>>16&255,y.lockTime>>24&255),_.push(y.expiryHeight&255,y.expiryHeight>>8&255,y.expiryHeight>>16&255,y.expiryHeight>>24&255),_.push(0,0,0,0,0,0,0,0),_.push(0),_.push(0),_.push(0),e.hex.encode(new Uint8Array(_))}var t0=o({chain:"bitcoin"}),e0=o({chain:"litecoin"}),r0=o({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),s0=o({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),LL=o({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),yL=o({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let L=Buffer.alloc(4);return L.writeUInt32LE(0),L})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});var _L=qL(require("@ledgerhq/hw-app-xrp")),n=require("@swapkit/helpers"),Q0=require("ripple-binary-codec");var DL=2147483648;function CL(L){let y={};for(let _ in L)if(L[_]!==null&&L[_]!==void 0)y[_]=L[_];return y}function HL(L){return new _L.default(L)}var RL=async(L,y)=>{let _=n.derivationPathToString(L||n.NetworkDerivationPath[n.Chain.Ripple]),w=y??await f(),R=HL(w),{address:G,publicKey:N}=await R.getAddress(_);async function X(T){let{hashes:$}=await import("xrpl"),J={...CL(T),Flags:T.Flags||DL,SigningPubKey:N.toUpperCase()},W=Q0.encode(J),Q=await R.signTransaction(_,W),U=Q0.encode({...J,TxnSignature:Q});return{hash:$.hashSignedTx(U),tx_blob:U}}return{getAddress:()=>G,signTransaction:X}};var m=async({chain:L,derivationPath:y,transport:_})=>{let{match:w}=await import("ts-pattern");return w(L).returnType().with(Z.Chain.THORChain,()=>Promise.resolve(new M0(y,_))).with(Z.Chain.Cosmos,()=>Promise.resolve(new F0(y,_))).with(Z.Chain.Bitcoin,()=>Promise.resolve(t0(y,_))).with(Z.Chain.BitcoinCash,()=>Promise.resolve(r0(y,_))).with(Z.Chain.Dash,()=>Promise.resolve(LL(y,_))).with(Z.Chain.Dogecoin,()=>Promise.resolve(s0(y,_))).with(Z.Chain.Litecoin,()=>Promise.resolve(e0(y,_))).with(Z.Chain.Zcash,()=>Promise.resolve(yL(y,_))).with(Z.Chain.Ripple,()=>Promise.resolve(RL(y,_))).with(Z.Chain.Tron,()=>Promise.resolve(n0(y,_))).with(Z.Chain.Sui,()=>Promise.resolve(u0(y,_))).with(Z.Chain.Near,()=>{return Promise.resolve(x0(y,_))}).with(Z.Chain.Arbitrum,Z.Chain.Aurora,Z.Chain.Avalanche,Z.Chain.Berachain,Z.Chain.BinanceSmartChain,Z.Chain.Ethereum,Z.Chain.Gnosis,Z.Chain.Monad,Z.Chain.Optimism,Z.Chain.Polygon,Z.Chain.Base,Z.Chain.XLayer,async()=>{let{getProvider:R}=await import("@swapkit/toolboxes/evm"),G={derivationPath:y,provider:await R(L),transport:_};return w(L).with(Z.Chain.BinanceSmartChain,()=>l0(G)).with(Z.Chain.Avalanche,()=>A0(G)).with(Z.Chain.Arbitrum,()=>m0(G)).with(Z.Chain.Berachain,()=>h0(G)).with(Z.Chain.Optimism,()=>v0(G)).with(Z.Chain.Polygon,()=>b0(G)).with(Z.Chain.Base,()=>P0(G)).with(Z.Chain.Aurora,()=>V0(G)).with(Z.Chain.Gnosis,()=>I0(G)).with(Z.Chain.Monad,()=>g0(G)).with(Z.Chain.XLayer,()=>c0(G)).otherwise(()=>E0(G))}).otherwise(()=>{throw new Z.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:Z.WalletOption.LEDGER})})};var GL=B0.createWallet({connect:({addChain:L,supportedChains:y,walletType:_})=>async function(R,G,{address:N,transport:X}={}){let[T]=B.filterSupportedChains({chains:R,supportedChains:y,walletType:_});if(!T)return!1;let $=G??B.NetworkDerivationPath[T],O=await KL({address:N,chain:T,derivationPath:$,transport:X});return L({...O,chain:T,walletType:B.WalletOption.LEDGER}),!0},directSigningSupport:{[B.Chain.Arbitrum]:!0,[B.Chain.Aurora]:!0,[B.Chain.Avalanche]:!0,[B.Chain.Base]:!0,[B.Chain.Berachain]:!0,[B.Chain.BinanceSmartChain]:!0,[B.Chain.Ethereum]:!0,[B.Chain.Gnosis]:!0,[B.Chain.Monad]:!0,[B.Chain.Bitcoin]:!0,[B.Chain.BitcoinCash]:!0,[B.Chain.Cosmos]:!0,[B.Chain.Dash]:!0,[B.Chain.Dogecoin]:!0,[B.Chain.Litecoin]:!0,[B.Chain.Near]:!0,[B.Chain.Optimism]:!0,[B.Chain.Polygon]:!0,[B.Chain.Ripple]:!0,[B.Chain.Sui]:!0,[B.Chain.THORChain]:!0,[B.Chain.Tron]:!0,[B.Chain.XLayer]:!0},getExtendedPublicKey:BL,name:"connectLedger",supportedChains:[B.Chain.Arbitrum,B.Chain.Aurora,B.Chain.Avalanche,B.Chain.Base,B.Chain.Berachain,B.Chain.BinanceSmartChain,B.Chain.Bitcoin,B.Chain.BitcoinCash,B.Chain.Cosmos,B.Chain.Dash,B.Chain.Dogecoin,B.Chain.Ethereum,B.Chain.Gnosis,B.Chain.Litecoin,B.Chain.Monad,B.Chain.Near,B.Chain.Optimism,B.Chain.Polygon,B.Chain.Ripple,B.Chain.Sui,B.Chain.THORChain,B.Chain.XLayer,B.Chain.Tron,B.Chain.Zcash],walletType:B.WalletOption.LEDGER}),zL=B0.getWalletSupportedChains(GL);function kL(L,y="t"){if(!L?.includes("=:"))return L;let _=L.includes(`:${y}:`)?L.split(`:${y}:`)[0]:L;return _?.substring(0,_.lastIndexOf(":"))}async function BL(L,y,{accountIndex:_}={}){if(![B.Chain.BitcoinCash,B.Chain.Bitcoin,B.Chain.Dash,B.Chain.Dogecoin,B.Chain.Litecoin,B.Chain.Zcash].includes(L))throw new B.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:B.WalletOption.LEDGER});let w=L,R=await m({chain:w,derivationPath:y});if(!R.getExtendedPublicKey)return;let G=D.getUTXOAccountPath({accountIndex:_,chain:w,derivationPath:y}),N=B.derivationPathToString(G),X=L===B.Chain.Bitcoin||L===B.Chain.Litecoin?N:N.replace(/^m\//,""),T=D.getNetworkForChain(w).bip32.public;try{let $=await R.getExtendedPublicKey(X,T);return{accountIndex:D.getUTXOAccountIndexFromPath(G),path:N,xpub:$}}finally{await R.disconnect?.()}}async function KL({address:L,chain:y,derivationPath:_,transport:w}){switch(y){case B.Chain.BitcoinCash:case B.Chain.Bitcoin:case B.Chain.Dash:case B.Chain.Dogecoin:case B.Chain.Litecoin:case B.Chain.Zcash:{let U=function(Y={}){return Q(Y)},{getUtxoToolbox:R}=await import("@swapkit/toolboxes/utxo"),G=y,N=await m({chain:y,derivationPath:_,transport:w}),X=L??await l({chain:y,ledgerClient:N}),T,$;if(y===B.Chain.Bitcoin){let{BitcoinPsbtLedger:Y}=await import("../chunk-emhkygmy.js"),H=Y(_,w);T={getAddress:H.getAddress,signTransaction:H.signTransaction}}else if(y===B.Chain.BitcoinCash||y===B.Chain.Dogecoin||y===B.Chain.Dash||y===B.Chain.Litecoin){let{createLegacyPsbtSigner:Y,signLegacyPsbtTransaction:H}=await import("../chunk-hegt01q0.js");T=Y({address:X,chain:G,legacyClient:N}),$=async(F)=>{let j=await H({chain:G,legacyClient:N,tx:F});return O.broadcastTx(j)}}let O=T?await R(G,{signer:T}):R(G),J=$??O.signAndBroadcastTransaction,W=async(Y)=>{let H=Y.feeRate||(await O.getFeeRates())[B.FeeOption.Average],F=[B.Chain.Bitcoin].includes(y)?Y.memo:kL(Y.memo),{tx:j,inputs:K}=await O.createTransaction({...Y,feeRate:H,fetchTxHex:!0,memo:F,sender:X}),A=await N.signTransaction(j,K);return await O.broadcastTx(A)};async function Q({accountIndex:Y}={}){if(!N.getExtendedPublicKey)return;let H=D.getUTXOAccountPath({accountIndex:Y,chain:G,derivationPath:_}),F=B.derivationPathToString(H),j=y===B.Chain.Bitcoin||y===B.Chain.Litecoin?F:F.replace(/^m\//,""),K=D.getNetworkForChain(G).bip32.public,A=await N.getExtendedPublicKey(j,K);return{accountIndex:D.getUTXOAccountIndexFromPath(H),path:F,xpub:A}}async function C({accountIndex:Y,index:H,change:F=!1}){try{let j=D.getUTXOAddressPath({accountIndex:Y,chain:G,change:F,derivationPath:_,index:H}),K=await m({chain:G,derivationPath:j,transport:w}),A=await l({chain:G,ledgerClient:K});return{accountIndex:D.getUTXOAccountIndexFromPath(j),address:A,change:F,index:H,path:B.derivationPathToString(j),pubkey:""}}catch{return}}async function V({accountIndex:Y,count:H,startIndex:F=0,change:j=!1}){return D.assertDerivationIndex("count",H),D.assertDerivationIndex("startIndex",F),(await Promise.all(Array.from({length:H},(A,r)=>C({accountIndex:Y,change:j,index:F+r})))).filter((A)=>!!A)}let c=D.createHDWalletHelpers({chain:G,deriveAddress:C,getBalance:O.getBalance,getUtxos:(Y)=>D.getUtxoApi(G).getUtxos({address:Y,fetchTxHex:!0})});async function w0({utxos:Y,recipient:H,assetValue:F,memo:j,feeRate:K,feeOptionKey:A,changeAddress:r}){if(!Y.length)throw new B.SwapKitError("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let wL=K||(await O.getFeeRates())[A||B.FeeOption.Fast],N0=j?D.compileMemo(j):null,Y0=[{address:H,value:F.getBaseValue("number")}];if(N0)Y0.push({script:N0,value:0});let NL=Y.map(({hash:L0,index:y0,value:X0,txHex:T0,witnessUtxo:O0})=>({hash:L0,index:y0,txHex:T0,value:X0,witnessUtxo:O0})),{inputs:s,outputs:q0}=O.accumulative({chain:G,feeRate:wL,inputs:NL,outputs:Y0});if(!(s&&q0))throw new B.SwapKitError("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:XL}=await import("@swapkit/utxo-signer"),D0=new XL({allowLegacyWitnessUtxo:!0,version:1}),TL=r||Y[0]?.address||H;D.addInputsAndOutputs({chain:G,compiledMemo:N0,inputs:s,outputs:q0,sender:TL,tx:D0});let OL=D.getUTXOAccountPath({chain:G,derivationPath:_}),JL=s.map((L0)=>{let y0=Y.find((C0)=>C0.hash===L0.hash&&C0.index===L0.index),X0=y0?.derivationIndex??0,T0=y0?.isChange??!1,O0=[...OL,Number(T0),X0];return B.derivationPathToString(O0)});if(!N.signTransactionWithMultiplePaths)throw new B.SwapKitError("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let ZL=await N.signTransactionWithMultiplePaths(D0,s,JL);return O.broadcastTx(ZL)}return{...O,...c,address:X,deriveAddressAtIndex:C,deriveAddresses:V,getExtendedPublicKey:U,getExtendedPublicKeyInfo:Q,signAndBroadcastTransaction:J,transfer:W,transferFromMultipleAddresses:w0}}case B.Chain.Ethereum:case B.Chain.Avalanche:case B.Chain.Arbitrum:case B.Chain.Berachain:case B.Chain.Optimism:case B.Chain.Polygon:case B.Chain.BinanceSmartChain:case B.Chain.Base:case B.Chain.Aurora:case B.Chain.Gnosis:case B.Chain.Monad:case B.Chain.XLayer:{let{getEvmToolboxAsync:R}=await import("@swapkit/toolboxes/evm"),G=await m({chain:y,derivationPath:_,transport:w}),N=await l({chain:y,ledgerClient:G});return{...await R(y,{signer:G}),address:N}}case B.Chain.Cosmos:{let{createSigningStargateClient:R,getMsgSendDenom:G,getCosmosToolbox:N}=await import("@swapkit/toolboxes/cosmos"),X=await m({chain:y,derivationPath:_,transport:w}),T=await l({chain:y,ledgerClient:X});return{...await N(B.Chain.Cosmos,{signer:X}),address:T,transfer:async({assetValue:J,recipient:W,memo:Q})=>{if(!J)throw new B.SwapKitError("wallet_ledger_invalid_asset");let U={amount:[{amount:J.getBaseValue("string"),denom:G(`u${J.symbol}`).toLowerCase()}],fromAddress:T,toAddress:W},C=await B.getRPCUrl(y),V=await R(C,X,"0.007uatom"),{transactionHash:c}=await V.signAndBroadcast(T,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:U}],2,Q);return c}}}case B.Chain.THORChain:{let R=await m({chain:y,derivationPath:_,transport:w}),{getCosmosToolbox:G}=await import("@swapkit/toolboxes/cosmos"),N=G(y,{signer:R}),X=await l({chain:y,ledgerClient:R}),{sign:T}=R;return{...N,address:X,signMessage:T}}case B.Chain.Near:{let{getNearToolbox:R}=await import("@swapkit/toolboxes/near"),G=await m({chain:y,derivationPath:_,transport:w}),N=await G.getAddress();return{...R({signer:G}),address:N}}case B.Chain.Ripple:{let{getRippleToolbox:R}=await import("@swapkit/toolboxes/ripple"),G=await m({chain:y,derivationPath:_,transport:w}),N=G.getAddress();return{...R({signer:G}),address:N}}case B.Chain.Tron:{let{getTronToolbox:R}=await import("@swapkit/toolboxes/tron"),G=await m({chain:y,derivationPath:_,transport:w}),N=await l({chain:y,ledgerClient:G});return{...R({signer:G}),address:N}}case B.Chain.Sui:{let{getSuiToolbox:R}=await import("@swapkit/toolboxes/sui"),G=await m({chain:y,derivationPath:_,transport:w}),N=await l({chain:y,ledgerClient:G});return{...R({signer:G}),address:N}}default:throw new B.SwapKitError("wallet_ledger_chain_not_supported",{chain:y})}}
1
+ var vL=Object.create;var{getPrototypeOf:bL,defineProperty:G0,getOwnPropertyNames:I0,getOwnPropertyDescriptor:lL}=Object,P0=Object.prototype.hasOwnProperty;function v0(L){return this[L]}var gL,hL,xL=(L,_,G)=>{var B=L!=null&&typeof L==="object";if(B){var R=_?gL??=new WeakMap:hL??=new WeakMap,y=R.get(L);if(y)return y}G=L!=null?vL(bL(L)):{};let J=_||!L||!L.__esModule?G0(G,"default",{value:L,enumerable:!0}):G;for(let O of I0(L))if(!P0.call(J,O))G0(J,O,{get:v0.bind(L,O),enumerable:!0});if(B)R.set(L,J);return J},cL=(L)=>{var _=(E0??=new WeakMap).get(L),G;if(_)return _;if(_=G0({},"__esModule",{value:!0}),L&&typeof L==="object"||typeof L==="function"){for(var B of I0(L))if(!P0.call(_,B))G0(_,B,{get:v0.bind(L,B),enumerable:!(G=lL(L,B))||G.enumerable})}return E0.set(L,_),_},E0;var uL=(L)=>L;function dL(L,_){this[L]=uL.bind(null,_)}var w0=(L,_)=>{for(var G in _)G0(L,G,{get:_[G],enumerable:!0,configurable:!0,set:dL.bind(_,G)})};var T0=(L,_)=>()=>(L&&(_=L(L=0)),_);var r,V0=()=>navigator?.usb,nL=async()=>{let L=V0();if(typeof L?.getDevices!=="function")return{};let{ledgerUSBVendorId:_}=await import("@ledgerhq/devices"),B=(await L?.getDevices()).filter((R)=>R.vendorId===_);if(B.length>0)return B[0];return L?.requestDevice({filters:[{vendorId:_}]})},C=async()=>{let L=await nL();if(!L)throw new r.SwapKitError("wallet_ledger_device_not_found");if(L.opened||await L.open(),L.configuration===null)await L.selectConfiguration(1);try{await L.reset()}catch{}let _=L.configuration??L.configurations?.[0],G=_?.interfaces.find(({alternates:$})=>$.some(({interfaceClass:M})=>M===255))||_?.interfaces.find(({alternates:$})=>$.some(({interfaceClass:M})=>M===3));if(!G)throw await L.close(),new r.SwapKitError("wallet_ledger_connection_error");let B=G.alternates?.find(({interfaceClass:$})=>$===3)?.interfaceClass,R=G.alternates?.find(({interfaceClass:$})=>$===255)?.interfaceClass;if(B&&!R){let $=(await import("@ledgerhq/hw-transport-webhid")).default;if(!await $.isSupported())throw await L.close(),new r.SwapKitError("wallet_ledger_webhid_not_supported");return await $.create()}try{await L.claimInterface(G.interfaceNumber)}catch($){throw await L.close(),new r.SwapKitError("wallet_ledger_connection_claimed",$)}let y=(await import("@ledgerhq/hw-transport-webusb")).default;if(!await y.isSupported())throw new r.SwapKitError("wallet_ledger_webusb_not_supported");let{DisconnectedDevice:O}=await import("@ledgerhq/errors"),Z=new y(L,G.interfaceNumber),X=($)=>{if(L===$.device)V0()?.removeEventListener("disconnect",X),Z._emitDisconnect(new O)};return V0()?.addEventListener("disconnect",X),Z};var P=T0(()=>{r=require("@swapkit/helpers")});var DL={};w0(DL,{LitecoinPsbtLedger:()=>J_,BitcoinPsbtLedger:()=>N_});function G_(L){switch(L){case"bech32":return"wpkh(@0/**)";case"p2sh":return"sh(wpkh(@0/**))";case"legacy":return"pkh(@0/**)";default:return"wpkh(@0/**)"}}function R_(L){return typeof L==="string"?L:p.derivationPathToString(L)}function FL(L){return L.replace(/^m\//,"").replace(/^\/+/,"")}function y_(L){return L.replace(/^m\//,"").split("/").filter(Boolean).map((_)=>{let G=_.endsWith("'"),B=Number.parseInt(G?_.slice(0,-1):_,10);return G?(B|2147483648)>>>0:B})}function B_(L,_){let G=L.getInput(_);return Boolean(G.bip32Derivation?.length)}var wL,TL,p,HL=({chain:L})=>{return(_,G)=>{let B,R;async function y(){if(!B){let Q=G??await C(),{AppClient:F}=await import("ledger-bitcoin");B=new F(Q)}return B}async function J(){if(!R)R=await(await y()).getMasterFingerprint();return R}let O=FL(_?R_(_):"84'/0'/0'/0/0"),Z=O.split("/").filter(Boolean),X=Z.slice(0,3).join("/"),$=Z.slice(3),M=Number($[0]??0),W=Number($[1]??0),w=p.getWalletFormatFor(`m/${O}`),z=G_(w),H,f;async function S(){let Q=await y(),F=await J();if(!H)H=await Q.getExtendedPubkey(`m/${X}`);let{DefaultWalletPolicy:Y}=await import("ledger-bitcoin"),q=new Y(z,`[${F}/${X}]${H}`);return{app:Q,fpr:F,policy:q,xpub:H}}async function d(){if(!f){let{xpub:Q}=await S(),Y=TL.HDKey.fromExtendedKey(Q).derive(`m/${M}/${W}`);if(!Y.publicKey)throw new p.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot derive leaf pubkey for ${L}`});f=Y.publicKey}return f}return{connect:async()=>{await y()},getAddress:async()=>{let{app:Q,policy:F}=await S(),Y=await Q.getWalletAddress(F,null,M,W,!1);if(!Y)throw new p.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${O}`});return Y},getExtendedPublicKey:async(Q=`m/${X}`)=>{return(await y()).getExtendedPubkey(`m/${FL(Q)}`)},signTransaction:async(Q)=>{let{app:F,policy:Y,fpr:q}=await S(),K=Number.parseInt(q,16)>>>0,A=y_(O),o=Array.from({length:Q.inputsLength},(h,u)=>u).filter((h)=>!B_(Q,h));if(o.length>0){let h=await d();for(let u of o)Q.updateInput(u,{bip32Derivation:[[h,{fingerprint:K,path:A}]]})}let j0=wL.base64.encode(Q.toPSBT(0)),_0=await F.signPsbt(j0,Y,null);for(let[h,u]of _0)Q.updateInput(h,{partialSig:[[new Uint8Array(u.pubkey),new Uint8Array(u.signature)]]});return Q}}}},N_,J_;var UL=T0(()=>{P();wL=require("@scure/base"),TL=require("@scure/bip32"),p=require("@swapkit/helpers");N_=HL({chain:"bitcoin"}),J_=HL({chain:"litecoin"})});var fL={};w0(fL,{signLegacyPsbtTransaction:()=>VL,extractInputsFromPsbt:()=>CL,createLegacyPsbtSigner:()=>O_});async function CL(L,_){let{RawTx:G}=await import("@swapkit/utxo-signer"),{getUtxoApi:B}=await import("@swapkit/toolboxes/utxo"),R=[];for(let y=0;y<L.inputsLength;y++){let J=L.getInput(y);if(!J.txid||J.index===void 0)throw Error(`PSBT input ${y} is missing txid/index`);let O=Q0.hex.encode(J.txid),Z=J.nonWitnessUtxo?Q0.hex.encode(G.encode(J.nonWitnessUtxo)):await B(_).getRawTx(O);if(!Z)throw new zL.SwapKitError("wallet_ledger_invalid_params",{chain:_,inputIndex:y,reason:"Unable to resolve previous transaction hex for Ledger signing",txid:O});let X=J.witnessUtxo?{script:J.witnessUtxo.script,value:Number(J.witnessUtxo.amount)}:void 0,$=J.index!==void 0?J.nonWitnessUtxo?.outputs?.[J.index]:void 0,M=X?.value??($?Number($.amount):0);R.push({hash:O,index:J.index,txHex:Z,value:M,witnessUtxo:X})}return R}async function VL({legacyClient:L,chain:_,tx:G}){let B=await CL(G,_);return L.signTransaction(G,B)}function O_({legacyClient:L,chain:_,address:G}){return{getAddress:async()=>G,signTransaction:async(B)=>{let R=await VL({chain:_,legacyClient:L,tx:B}),{Transaction:y}=await import("@swapkit/utxo-signer");return y.fromRaw(Q0.hex.decode(R))}}}var Q0,zL;var KL=T0(()=>{Q0=require("@scure/base"),zL=require("@swapkit/helpers")});var M_={};w0(M_,{ledgerWallet:()=>kL,getLedgerExtendedPublicKey:()=>SL,LEDGER_SUPPORTED_CHAINS:()=>Z_});module.exports=cL(M_);var N=require("@swapkit/helpers"),U=require("@swapkit/toolboxes/utxo"),Y0=require("@swapkit/wallet-core");var T=require("@swapkit/helpers"),x=async({chain:L,ledgerClient:_})=>{if(!_)return"";switch(L){case T.Chain.Cosmos:case T.Chain.THORChain:return _.connect();case T.Chain.Ethereum:case T.Chain.BinanceSmartChain:case T.Chain.Avalanche:case T.Chain.Polygon:case T.Chain.Arbitrum:case T.Chain.Berachain:case T.Chain.Optimism:case T.Chain.Base:case T.Chain.Aurora:case T.Chain.Gnosis:case T.Chain.Monad:case T.Chain.XLayer:return _.getAddress();case T.Chain.Bitcoin:case T.Chain.BitcoinCash:case T.Chain.Dash:case T.Chain.Dogecoin:case T.Chain.Litecoin:case T.Chain.Zcash:{let G=_;await G.connect();let B=await G.getAddress();return L===T.Chain.BitcoinCash?B.replace("bitcoincash:",""):B}case T.Chain.Near:return await _.getAddress();case T.Chain.Ripple:return _.getAddress();case T.Chain.Tron:return _.getAddress();case T.Chain.Sui:return _.connect();default:throw new T.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:T.WalletOption.LEDGER})}};var j=require("@swapkit/helpers");var n=require("@swapkit/helpers");var v=require("@swapkit/helpers");var C0=require("@swapkit/helpers");var s=85,H0=250;var i={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},$0={ADD:1,INIT:0,LAST:2},D0={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},a={JSON:0},c={NoError:36864},b0={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",25600:"Execution Error",26368:"Wrong Length",26626:"Error deriving keys",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",36864:"No errors",36865:"Device is busy"};function I(L){if(L in b0)return b0[L];return`Unknown Status Code: ${L}`}function oL(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function m(L){if(L){if(oL(L)){if(Object.hasOwn(L,"statusCode"))return{error_message:I(L.statusCode),return_code:L.statusCode};if(Object.hasOwn(L,"return_code")&&Object.hasOwn(L,"error_message"))return L}return{error_message:L.toString(),return_code:65535}}return{error_message:L.toString(),return_code:65535}}function U0(L){return L.send(85,i.GET_VERSION,0,0).then((_)=>{let G=_.slice(-2),B=G[0]*256+G[1],R=0;if(_.length>=9)R=(_[5]<<24)+(_[6]<<16)+(_[7]<<8)+(_[8]<<0);return{device_locked:_[4]===1,error_message:I(B),major:_[1],minor:_[2],patch:_[3],return_code:B,target_id:R.toString(16),test_mode:_[0]!==0}},m)}var R0=require("@swapkit/helpers");function l0(L){if(L==null||L.length<3)throw new R0.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new R0.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too long"});let _=Buffer.alloc(1+4*L.length);_.writeUInt8(L.length,0);for(let G=0;G<L.length;G+=1){let B=L[G]||0;if(G<3)B|=2147483648;_.writeInt32LE(B,1+G*4)}return _}function z0(L,_,G,B,R=a.JSON){return L.transport.send(s,i.SIGN_SECP256K1,_,R,B,[c.NoError,27012,27264]).then((y)=>{let J=y.slice(-2),O=J[0]*256+J[1],Z=I(O);if(O===27264||O===27012)Z=`${Z} : ${y.slice(0,y.length-2).toString("ascii")}`;let X=null;if(y.length>2)X=y.slice(0,y.length-2);return{error_message:Z,return_code:O,signature:X}},m)}function iL(L){if(L.length!==65)throw new R0.SwapKitError("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let _=L.slice(33,65),G=Buffer.from([2+(_[_.length-1]&1)]);return Buffer.concat([G,L.slice(1,33)])}function g0(L,_){return L.transport.send(s,i.INS_PUBLIC_KEY_SECP256K1,0,0,_,[c.NoError]).then((G)=>{let B=G.slice(-2),R=B[0]*256+B[1],y=Buffer.from(G.slice(0,65));return{compressed_pk:iL(y),error_message:I(R),pk:y,return_code:R}},m)}function h0(L){if(!L||L.length!==5)throw new R0.SwapKitError("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let _=Buffer.alloc(20);return _.writeUInt32LE(2147483648+L[0],0),_.writeUInt32LE(2147483648+L[1],4),_.writeUInt32LE(2147483648+L[2],8),_.writeUInt32LE(L[3],12),_.writeUInt32LE(L[4],16),_}function x0(L,_,G,B,R=a.JSON){let y=$0.ADD;if(_===1)y=$0.INIT;if(_===G)y=$0.LAST;return z0(L,y,0,B,R)}function c0(L,_){return L.transport.send(s,i.GET_ADDR_SECP256K1,0,0,_,[c.NoError]).then((G)=>{let B=G.slice(-2),R=B[0]*256+B[1];return{compressed_pk:Buffer.from(G.slice(0,33)),error_message:I(R),pk:"OBSOLETE PROPERTY",return_code:R}},m)}class y0{transport;versionResponse;constructor(L){if(!L)throw new C0.SwapKitError("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new C0.SwapKitError("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let _=Buffer.alloc(1+L.length);return _.writeUInt8(L.length,0),_.write(L,1),_}async serializePath(L){if(this.versionResponse=await U0(this.transport),this.versionResponse.return_code!==c.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return l0(L);case 2:return h0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,_){let G=await this.serializePath(L),B=[];B.push(G);for(let R=0;R<_.length;R+=H0){let y=R+H0;if(R>_.length)y=_.length;B.push(_.slice(R,y))}return B}async getVersion(){try{return this.versionResponse=await U0(this.transport),this.versionResponse}catch(L){return m(L)}}appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let _=L.readUInt16BE(L.length-2),G="",B="",R=0,y=0;if(L[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let J=L[1];G=L.slice(2,2+J).toString("ascii");let O=2+J,Z=L[O];O+=1,B=L.slice(O,O+Z).toString("ascii"),O+=Z;let X=L[O];return O+=1,R=X,y=L[O],{appName:G,appVersion:B,error_message:I(_),flag_onboarded:(y&4)!==0,flag_pin_validated:(y&128)!==0,flag_recovery:(y&1)!==0,flag_signed_mcu_code:(y&2)!==0,flagLen:R,flagsValue:y,return_code:_}},m)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[c.NoError,28160]).then((L)=>{let _=L.slice(-2),G=_[0]*256+_[1];if(G===28160)return{error_message:"This command is only available in the Dashboard",return_code:G};let B=L.slice(0,4).toString("hex"),R=4,y=L[R];R+=1;let J=L.slice(R,R+y).toString();R+=y;let O=L[R];R+=1;let Z=L.slice(R,R+O).toString("hex");R+=O;let X=L[R];R+=1;let $=L.slice(R,R+X);if($[X-1]===0)$=L.slice(R,R+X-1);let M=$.toString();return{error_message:I(G),flag:Z,mcuVersion:M,return_code:G,seVersion:J,targetId:B}},m)}async publicKey(L){try{let _=await this.serializePath(L);switch(this.versionResponse.major){case 1:return g0(this,_);case 2:{let G=Buffer.concat([y0.serializeHRP("thor"),_]);return c0(this,G)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(_){return m(_)}}async getAddressAndPubKey(L,_,G=!1){try{let B=await this.serializePath(L),R=Buffer.concat([y0.serializeHRP(_),B]),y=await this.transport.send(s,i.GET_ADDR_SECP256K1,G?D0.SHOW_ADDRESS_IN_DEVICE:D0.ONLY_RETRIEVE,0,R,[c.NoError]),J=Buffer.from(y.slice(0,33)),O=Buffer.from(y.slice(33,-2)).toString(),Z=y.readUInt16BE(y.length-2);return{bech32_address:O,compressed_pk:J,error_message:I(Z),return_code:Z}}catch(B){return m(B)}}showAddressAndPubKey(L,_){return this.getAddressAndPubKey(L,_,!0)}signSendChunk(L,_,G,B=a.JSON){switch(this.versionResponse.major){case 1:return z0(this,L,_,G,B);case 2:return x0(this,L,_,G,B);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(L,_,G=a.JSON){let B=Buffer.from(_),R=[],y;try{R=await this.signGetChunks(L,B),y=await this.signSendChunk(1,R.length,R[0],G)}catch(O){m(O)}let J={error_message:y.error_message,return_code:y.return_code,signature:null};for(let O=1;O<R.length;O+=1)if(J=await this.signSendChunk(1+O,R.length,R[O],G),J.return_code!==c.NoError)break;return{error_message:J.error_message,return_code:J.return_code,signature:J.signature}}}P();class B0{ledgerTimeout=50000;derivationPath=v.NetworkDerivationPath.GAIA;transport;ledgerApp;chain="thor";injectedTransport;constructor(L){if(this.injectedTransport=L,L)this.transport=L}checkOrCreateTransportAndLedger=async(L=!1)=>{if(!L&&this.transport&&this.ledgerApp)return;try{if(!this.transport||L&&!this.injectedTransport)this.transport=this.injectedTransport??await C();switch(this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new y0(this.transport):this.ledgerApp;break}case"cosmos":{let G=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=L||!this.ledgerApp?new G(this.transport):this.ledgerApp}}return this.ledgerApp}catch(_){throw new v.SwapKitError("wallet_ledger_connection_error",_)}};validateResponse=(L,_)=>{switch(L){case v.LedgerErrorCode.NoError:return;case v.LedgerErrorCode.LockedDevice:throw new v.SwapKitError("wallet_ledger_device_locked",{message:`Ledger is locked: ${_}`});case v.LedgerErrorCode.TC_NotFound:throw new v.SwapKitError("wallet_ledger_device_not_found");default:break}}}class f0 extends B0{pubKey=null;derivationPath;constructor(L=n.NetworkDerivationPath.GAIA,_){super(_);this.chain="cosmos",this.derivationPath=n.derivationPathToString(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:_}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),_};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,_="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:G,error_message:B,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new n.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(G,B),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:_,signature:R}]};signAmino=async(L,_)=>{await this.checkOrCreateTransportAndLedger(!0);let G=await this.getAccounts();if(G.findIndex((W)=>W.address===L)===-1)throw new n.SwapKitError("wallet_ledger_address_not_found",{address:L});let R=await import("@cosmjs/amino"),y=R.encodeSecp256k1Signature??R.default?.encodeSecp256k1Signature,J=R.serializeSignDoc??R.default?.serializeSignDoc,O=await import("@cosmjs/crypto"),Z=O.Secp256k1Signature??O.default?.Secp256k1Signature,X=J(_),$=await this.ledgerApp.sign(this.derivationPath,X);this.validateResponse($.return_code,$.error_message);let M=Z.fromDer($.signature).toFixedLength();return{signature:y(G[0].pubkey,M),signed:_}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}P();var D=require("@swapkit/helpers"),u0=require("ethers");function pL(L){if(typeof L==="number")return L;let _=L.startsWith("0x")?L.slice(2):L;return Number.parseInt(_||"0",16)}class k extends u0.AbstractSigner{chainId=D.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;transport;injectedTransport;constructor({provider:L,derivationPath:_=D.NetworkDerivationPath.OP,chainId:G=D.ChainId.Optimism,transport:B}){super(L);this.chainId=G||D.ChainId.Ethereum,this.derivationPath=typeof _==="string"?_:D.derivationPathToString(_),this.injectedTransport=B,Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new k({chainId:this.chainId,derivationPath:this.derivationPath,provider:L,transport:this.transport??this.injectedTransport});checkOrCreateTransportAndLedger=async()=>{await this.createTransportAndLedger()};createTransportAndLedger=async()=>{if(this.ledgerApp)return;this.transport||=this.injectedTransport??await C();let L=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new L(this.transport)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new D.SwapKitError("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:_}=await import("ethers");await this.createTransportAndLedger();let G=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!G)throw new D.SwapKitError("wallet_ledger_signing_error");return G.r=`0x${G.r}`,G.s=`0x${G.s}`,_.from(G).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new D.SwapKitError("wallet_ledger_no_provider");let _=await this.signTransaction(L);return await this.provider.broadcastTransaction(_)};signTypedData=async(L,_,G,B)=>{let{buildEIP712DomainType:R}=await import("@swapkit/toolboxes/evm"),{Signature:y,TypedDataEncoder:J}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:O,...Z}=_,X=B??J.from(Z).primaryType,$;try{$=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:L,message:G,primaryType:X,types:{EIP712Domain:R(L),...Z}})}catch(M){let W=M instanceof Error&&"statusCode"in M;if(!W||W&&M.statusCode===27013)throw M;let w=J.hashDomain(L).slice(2),z=J.from(Z).hash(G).slice(2);$=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,w,z)}if(!$)throw new D.SwapKitError("wallet_ledger_signing_error");return $.r=`0x${$.r}`,$.s=`0x${$.s}`,y.from($).serialized};signTransaction=async(L)=>{let{Transaction:_}=await import("ethers");await this.createTransportAndLedger();let G=L.nonce??void 0,B=G===void 0?await this.provider?.getTransactionCount(L.from||await this.getAddress()):void 0,R={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:G!==void 0?Number(G.toString()):B,to:L.to?.toString(),type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0,value:L.value},y=_.from(R).unsignedSerialized.slice(2),{ledgerService:J}=await import("@ledgerhq/hw-app-eth"),O=await J.resolveTransaction(y,{},{erc20:!0,externalPlugins:!0}),Z=await this.ledgerApp?.signTransaction(this.derivationPath,y,O);if(!Z)throw new D.SwapKitError("wallet_ledger_signing_error");let{r:X,s:$,v:M}=Z;return _.from({...R,signature:{r:`0x${X}`,s:`0x${$}`,v:pL(M)}}).serialized}}var d0=(L)=>new k({...L,chainId:D.ChainId.Arbitrum}),o0=(L)=>new k({...L,chainId:D.ChainId.Aurora}),i0=(L)=>new k({...L,chainId:D.ChainId.Avalanche}),n0=(L)=>new k({...L,chainId:D.ChainId.Base}),p0=(L)=>new k({...L,chainId:D.ChainId.Ethereum}),s0=(L)=>new k({...L,chainId:D.ChainId.Gnosis}),a0=(L)=>new k({...L,chainId:D.ChainId.Optimism}),r0=(L)=>new k({...L,chainId:D.ChainId.Polygon}),t0=(L)=>new k({...L,chainId:D.ChainId.BinanceSmartChain}),e0=(L)=>new k({...L,chainId:D.ChainId.Monad}),LL=(L)=>new k({...L,chainId:D.ChainId.XLayer}),_L=(L)=>new k({...L,chainId:D.ChainId.Berachain});P();async function GL(L,_){let G=(await import("@ledgerhq/hw-app-near")).default,{Chain:B,NetworkDerivationPath:R,SwapKitError:y}=await import("@swapkit/helpers"),J=_??await C(),O=new G(J),Z=(L||R[B.Near]).join("'/").concat("'"),{address:X,publicKey:$}=await O.getAddress(Z);return{getAddress(){return Promise.resolve(X)},async getPublicKey(){let{PublicKey:W}=await import("@near-js/crypto");return W.fromString(`ed25519:${$}`)},signDelegateAction(W){return Promise.reject(new y("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(W,w,z,H,f){return Promise.reject(new y("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(W){let{Signature:w,SignedTransaction:z}=await import("@near-js/transactions");try{let H=await O.signTransaction(W.encode(),Z);if(!H)throw Error("Signature undefined");let f=new w({data:H,keyType:0}),S=new z({signature:f,transaction:W});return[H,S]}catch(H){throw new y("wallet_ledger_signing_error",{error:H})}}}}P();var V=require("@swapkit/helpers");class RL{derivationPath;ledgerApp=null;address=null;publicKey=null;injectedTransport;constructor(L,_){this.derivationPath=typeof L==="string"?L:V.derivationPathToString(L||V.NetworkDerivationPath[V.Chain.Sui]),this.injectedTransport=_}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async createTransportAndLedger(){if(this.ledgerApp)return;let L=this.injectedTransport??await C(),_=(await import("@ledgerhq/hw-app-sui")).default;this.ledgerApp=new _(L)}async connect(){if(await this.createTransportAndLedger(),!this.ledgerApp)throw new V.SwapKitError("wallet_ledger_transport_error");let L=this.getLedgerPath(),_=await this.ledgerApp.getPublicKey(L);if(!_?.publicKey)throw new V.SwapKitError("wallet_ledger_failed_to_get_address");return this.publicKey=_.publicKey,this.address=`0x${Buffer.from(_.address).toString("hex")}`,this.address}toSuiAddress(){if(!this.address)throw new V.SwapKitError("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction(L){let _=L instanceof Uint8Array?L:L.transaction;if(await this.createTransportAndLedger(),!this.ledgerApp)throw new V.SwapKitError("wallet_ledger_transport_error");if(!this.publicKey)throw new V.SwapKitError("wallet_ledger_failed_to_get_address");try{let G=this.getLedgerPath(),B=new Uint8Array(3+_.length);B[0]=0,B[1]=0,B[2]=0,B.set(_,3);let R=await this.ledgerApp.signTransaction(G,B);if(!R?.signature)throw new V.SwapKitError("wallet_ledger_signing_error");let y=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(y.length!==32)throw new V.SwapKitError("wallet_ledger_signing_error",{error:"Invalid public key length"});let J=new Uint8Array(97);J[0]=0,J.set(R.signature,1),J.set(y,65);let O=Buffer.from(J).toString("base64");return{bytes:Buffer.from(_).toString("base64"),signature:O}}catch(G){throw new V.SwapKitError("wallet_ledger_signing_error",{error:G})}}}var yL=(L,_)=>new RL(L,_);var M0=require("@scure/base"),t=require("@swapkit/helpers");var BL=require("@scure/base"),b=require("@swapkit/helpers"),X0=(L)=>{if(L.length<64)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let _=L[3],G=L.slice(4,_+4);if(G.length===33&&G[0]===0)G=G.slice(1,33);else if(G.length===33)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"r too long"});while(G.length<32)G.unshift(0);if(L[_+4]!==2)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let B=L[_+5];if(4+_+2+B!==L.length)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let R=L.slice(_+6,L.length);if(R.length===33&&R[0]===0)R=R.slice(1,33);else if(R.length===33)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"s too long"});while(R.length<32)R.unshift(0);if(G.length!==32||R.length!==32)throw new b.SwapKitError("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return BL.base64.encode(Buffer.concat([G,R]))};function sL(L){if(typeof L==="string")return L;let _=L.chain?.toUpperCase(),G=(L.symbol||L.ticker||"").toUpperCase();if(!(_&&G))return G||_||"";if(L.synth)return`${_}/${G}`;return`${_}.${G}`}function aL(L){return{...L,msgs:L.msgs.map((_)=>{if(!_.type.includes("MsgDeposit"))return _;let G=_.value.coins;if(!Array.isArray(G))return _;return{..._,value:{..._.value,coins:G.map((B)=>({...B,asset:sL(B.asset)}))}}})}}class K0 extends B0{pubKey=null;derivationPath;constructor(L=t.NetworkDerivationPath.THOR,_){super(_);this.chain="thor",this.derivationPath=L}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:L,bech32_address:_}=await this.getAddressAndPubKey();return this.pubKey=M0.base64.encode(L),_};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,_="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:G,error_message:B,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new t.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(G,B),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:_,signature:X0(R)}]};signAmino=async(L,_)=>{await this.checkOrCreateTransportAndLedger(!0);let G=(await this.getAccounts()).find(($)=>$.address===L);if(!G)throw new t.SwapKitError("wallet_ledger_address_not_found",{address:L});let B=await import("@cosmjs/amino"),R=B.encodeSecp256k1Signature??B.default?.encodeSecp256k1Signature,y=B.serializeSignDoc??B.default?.serializeSignDoc,J=aL(_),{return_code:O,error_message:Z,signature:X}=await this.ledgerApp.sign(this.derivationPath,y(J));return this.validateResponse(O,Z),{signature:R(G.pubkey,M0.base64.decode(X0(X))),signed:_}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{bech32_address:L,compressed_pk:_}=await this.getAddressAndPubKey();return this.pubKey=M0.base64.encode(_),[{address:L,algo:"secp256k1",pubkey:_}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:G,signature:B}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new t.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,G),X0(B)}}P();var l=require("@swapkit/helpers");class NL{derivationPath;ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor(L,_){this.derivationPath=typeof L==="string"?L:l.derivationPathToString(L||l.NetworkDerivationPath.TRON),this.injectedTransport=_}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=this.injectedTransport??await C(),_=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new _(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new l.SwapKitError("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{await this.createTransportAndLedger();let L=await this.ledgerApp?.getAddress(this.derivationPath);if(!L)throw new l.SwapKitError("wallet_ledger_failed_to_get_address");return{address:L.address,publicKey:L.publicKey}};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signTransaction=async(L)=>{if(await this.createTransportAndLedger(),!this.ledgerApp)throw new l.SwapKitError("wallet_ledger_transport_error");try{let _=await this.ledgerApp.signTransaction(this.derivationPath,L.raw_data_hex,[]);if(!_)throw new l.SwapKitError("wallet_ledger_signing_error");return{...L,signature:[_]}}catch(_){throw new l.SwapKitError("wallet_ledger_signing_error",{error:_})}}}var JL=(L,_)=>new NL(L,_);P();var N0=require("@scure/base"),g=require("@swapkit/helpers"),ZL=["bitcoin-cash","dash","dogecoin","zcash"],OL=({tx:L,inputUtxos:_,btcApp:G,derivationPath:B,chain:R},y)=>{let J=_.map((w)=>{return[G.splitTransaction(w.txHex||"",!ZL.includes(R),R==="zcash"),w.index,void 0,void 0]}),O=N0.hex.encode(L.unsignedTx),Z=G.splitTransaction(O,!0),X=G.serializeTransactionOutputs(Z).toString("hex"),$=g.getWalletFormatFor(B),M=$!=="legacy",W={additionals:$==="bech32"?["bech32"]:[],associatedKeysets:J.map(()=>B),inputs:J,outputScriptHex:X,segwit:M,useTrustedInputForSegwit:M};return G.createPaymentTransaction({...W,...y})},rL=({tx:L,inputUtxos:_,btcApp:G,derivationPaths:B,chain:R},y)=>{if(B.length!==_.length)throw new g.SwapKitError("wallet_ledger_invalid_params",{message:`Derivation paths count (${B.length}) must match inputs count (${_.length})`});let J=_.map((w)=>{return[G.splitTransaction(w.txHex||"",!ZL.includes(R),R==="zcash"),w.index,void 0,void 0]}),O=N0.hex.encode(L.unsignedTx),Z=G.splitTransaction(O,!0),X=G.serializeTransactionOutputs(Z).toString("hex"),$=g.getWalletFormatFor(B[0]??""),M=$!=="legacy",W={additionals:$==="bech32"?["bech32"]:[],associatedKeysets:B,inputs:J,outputScriptHex:X,segwit:M,useTrustedInputForSegwit:M};return G.createPaymentTransaction({...W,...y})},e=({chain:L,additionalSignParams:_})=>{return(G,B)=>{let R,y=null;async function J(){y||=B??await C();let M=(await import("@ledgerhq/hw-app-btc")).default;return R||=new M({currency:L,transport:y}),R}async function O(){return R||await J()}async function Z(){if(!B)await y?.close?.();R=void 0,y=null}let X=typeof G==="string"?G:g.derivationPathToString(G),$=g.getWalletFormatFor(X);return{connect:async()=>{await O()},disconnect:Z,getAddress:async()=>{let{toCashAddress:M}=await import("@swapkit/toolboxes/utxo"),W=await O(),{bitcoinAddress:w}=await W.getWalletPublicKey(X,{format:$});if(!w)throw new g.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${X}`});return L==="bitcoin-cash"&&$==="legacy"?M(w).replace(/(bchtest:|bitcoincash:)/,""):w},getExtendedPublicKey:async(M="84'/0'/0'",W=76067358)=>{return(await O()).getWalletXpub({path:M,xpubVersion:W})},signPCZT:async(M)=>{if(L!=="zcash")throw new g.SwapKitError("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});let W=await O(),{ZcashTransaction:w,Script:z}=await import("@swapkit/utxo-signer"),H=M.getGlobal(),f=new w({consensusBranchId:H.consensusBranchId,expiryHeight:H.expiryHeight,lockTime:H.lockTime,version:H.txVersion,versionGroupId:H.versionGroupId}),S=[];for(let Y=0;Y<M.inputsLength;Y++){let q=M.getInput(Y);f.addInput({index:q.index,script:new Uint8Array,sequence:q.sequence??4294967295,txid:q.txid,value:q.value}),S.push({hash:N0.hex.encode(new Uint8Array([...q.txid].reverse())),index:q.index,txHex:tL(q,H),value:Number(q.value),witnessUtxo:{script:q.scriptPubkey,value:Number(q.value)}})}for(let Y=0;Y<M.outputsLength;Y++){let q=M.getOutput(Y);f.addOutput({amount:q.value,script:q.scriptPubkey})}let d=await OL({btcApp:W,chain:L,derivationPath:X,inputUtxos:S,tx:f},{..._,expiryHeight:(()=>{let Y=Buffer.alloc(4);return Y.writeUInt32LE(H.expiryHeight),Y})(),lockTime:H.lockTime}),Q=w.fromHex(d,{allowUnknownOutputs:!0}),F=M.clone();for(let Y=0;Y<Q.inputsLength;Y++){let q=Q.getInput(Y);if(q.script&&q.script.length>0){let K=z.decode(q.script);if(K.length>=2)F.addSignature(Y,K[1],K[0])}}return F},signTransaction:async(M,W)=>{let w=await O();return OL({btcApp:w,chain:L,derivationPath:X,inputUtxos:W,tx:M},_)},signTransactionWithMultiplePaths:async(M,W,w)=>{let z=await O();return rL({btcApp:z,chain:L,derivationPaths:w,inputUtxos:W,tx:M},_)}}}};function tL(L,_){let G=[],B=(_.txVersion|2147483648)>>>0;G.push(B&255,B>>8&255,B>>16&255,B>>24&255);let R=_.versionGroupId;G.push(R&255,R>>8&255,R>>16&255,R>>24&255),G.push(0);let y=L.index+1;if(y<253)G.push(y);else G.push(253,y&255,y>>8&255);for(let Z=0;Z<L.index;Z++)G.push(0,0,0,0,0,0,0,0),G.push(0);let J=L.value;G.push(Number(J&0xffn),Number(J>>8n&0xffn),Number(J>>16n&0xffn),Number(J>>24n&0xffn),Number(J>>32n&0xffn),Number(J>>40n&0xffn),Number(J>>48n&0xffn),Number(J>>56n&0xffn));let O=L.scriptPubkey;if(O.length<253)G.push(O.length);else G.push(253,O.length&255,O.length>>8&255);for(let Z of O)G.push(Z);return G.push(_.lockTime&255,_.lockTime>>8&255,_.lockTime>>16&255,_.lockTime>>24&255),G.push(_.expiryHeight&255,_.expiryHeight>>8&255,_.expiryHeight>>16&255,_.expiryHeight>>24&255),G.push(0,0,0,0,0,0,0,0),G.push(0),G.push(0),G.push(0),N0.hex.encode(new Uint8Array(G))}var $L=e({chain:"bitcoin"}),XL=e({chain:"litecoin"}),ML=e({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),QL=e({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),YL=e({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),jL=e({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let L=Buffer.alloc(4);return L.writeUInt32LE(0),L})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});P();var WL=xL(require("@ledgerhq/hw-app-xrp")),L0=require("@swapkit/helpers"),k0=require("ripple-binary-codec"),eL=2147483648;function L_(L){let _={};for(let G in L)if(L[G]!==null&&L[G]!==void 0)_[G]=L[G];return _}function __(L){return new WL.default(L)}var qL=async(L,_)=>{let G=L0.derivationPathToString(L||L0.NetworkDerivationPath[L0.Chain.Ripple]),B=_??await C(),R=__(B),{address:y,publicKey:J}=await R.getAddress(G);async function O(Z){let{hashes:X}=await import("xrpl"),M={...L_(Z),Flags:Z.Flags||eL,SigningPubKey:J.toUpperCase()},W=k0.encode(M),w=await R.signTransaction(G,W),z=k0.encode({...M,TxnSignature:w});return{hash:X.hashSignedTx(z),tx_blob:z}}return{getAddress:()=>y,signTransaction:O}};var E=async({chain:L,derivationPath:_,transport:G})=>{let{match:B}=await import("ts-pattern");return B(L).returnType().with(j.Chain.THORChain,()=>Promise.resolve(new K0(_,G))).with(j.Chain.Cosmos,()=>Promise.resolve(new f0(_,G))).with(j.Chain.Bitcoin,()=>Promise.resolve($L(_,G))).with(j.Chain.BitcoinCash,()=>Promise.resolve(ML(_,G))).with(j.Chain.Dash,()=>Promise.resolve(YL(_,G))).with(j.Chain.Dogecoin,()=>Promise.resolve(QL(_,G))).with(j.Chain.Litecoin,()=>Promise.resolve(XL(_,G))).with(j.Chain.Zcash,()=>Promise.resolve(jL(_,G))).with(j.Chain.Ripple,()=>Promise.resolve(qL(_,G))).with(j.Chain.Tron,()=>Promise.resolve(JL(_,G))).with(j.Chain.Sui,()=>Promise.resolve(yL(_,G))).with(j.Chain.Near,()=>{return Promise.resolve(GL(_,G))}).with(j.Chain.Arbitrum,j.Chain.Aurora,j.Chain.Avalanche,j.Chain.Berachain,j.Chain.BinanceSmartChain,j.Chain.Ethereum,j.Chain.Gnosis,j.Chain.Monad,j.Chain.Optimism,j.Chain.Polygon,j.Chain.Base,j.Chain.XLayer,async()=>{let{getProvider:R}=await import("@swapkit/toolboxes/evm"),y={derivationPath:_,provider:await R(L),transport:G};return B(L).with(j.Chain.BinanceSmartChain,()=>t0(y)).with(j.Chain.Avalanche,()=>i0(y)).with(j.Chain.Arbitrum,()=>d0(y)).with(j.Chain.Berachain,()=>_L(y)).with(j.Chain.Optimism,()=>a0(y)).with(j.Chain.Polygon,()=>r0(y)).with(j.Chain.Base,()=>n0(y)).with(j.Chain.Aurora,()=>o0(y)).with(j.Chain.Gnosis,()=>s0(y)).with(j.Chain.Monad,()=>e0(y)).with(j.Chain.XLayer,()=>LL(y)).otherwise(()=>p0(y))}).otherwise(()=>{throw new j.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:j.WalletOption.LEDGER})})};P();var kL=Y0.createWallet({connect:({addChain:L,supportedChains:_,walletType:G})=>async function(R,y,{address:J,transport:O}={}){let[Z]=N.filterSupportedChains({chains:R,supportedChains:_,walletType:G});if(!Z)return!1;let X=y??N.NetworkDerivationPath[Z],$=await X_({address:J,chain:Z,derivationPath:X,transport:O});return L({...$,chain:Z,walletType:N.WalletOption.LEDGER}),!0},directSigningSupport:{[N.Chain.Arbitrum]:!0,[N.Chain.Aurora]:!0,[N.Chain.Avalanche]:!0,[N.Chain.Base]:!0,[N.Chain.Berachain]:!0,[N.Chain.BinanceSmartChain]:!0,[N.Chain.Ethereum]:!0,[N.Chain.Gnosis]:!0,[N.Chain.Monad]:!0,[N.Chain.Bitcoin]:!0,[N.Chain.BitcoinCash]:!0,[N.Chain.Cosmos]:!0,[N.Chain.Dash]:!0,[N.Chain.Dogecoin]:!0,[N.Chain.Litecoin]:!0,[N.Chain.Near]:!0,[N.Chain.Optimism]:!0,[N.Chain.Polygon]:!0,[N.Chain.Ripple]:!0,[N.Chain.Sui]:!0,[N.Chain.THORChain]:!0,[N.Chain.Tron]:!0,[N.Chain.XLayer]:!0},getExtendedPublicKey:SL,name:"connectLedger",supportedChains:[N.Chain.Arbitrum,N.Chain.Aurora,N.Chain.Avalanche,N.Chain.Base,N.Chain.Berachain,N.Chain.BinanceSmartChain,N.Chain.Bitcoin,N.Chain.BitcoinCash,N.Chain.Cosmos,N.Chain.Dash,N.Chain.Dogecoin,N.Chain.Ethereum,N.Chain.Gnosis,N.Chain.Litecoin,N.Chain.Monad,N.Chain.Near,N.Chain.Optimism,N.Chain.Polygon,N.Chain.Ripple,N.Chain.Sui,N.Chain.THORChain,N.Chain.XLayer,N.Chain.Tron,N.Chain.Zcash],walletType:N.WalletOption.LEDGER}),Z_=Y0.getWalletSupportedChains(kL);function $_(L,_="t"){if(!L?.includes("=:"))return L;let G=L.includes(`:${_}:`)?L.split(`:${_}:`)[0]:L;return G?.substring(0,G.lastIndexOf(":"))}async function SL(L,_,{accountIndex:G}={}){if(![N.Chain.BitcoinCash,N.Chain.Bitcoin,N.Chain.Dash,N.Chain.Dogecoin,N.Chain.Litecoin,N.Chain.Zcash].includes(L))throw new N.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:N.WalletOption.LEDGER});let B=L,R=await E({chain:B,derivationPath:_});if(!R.getExtendedPublicKey)return;let y=U.getUTXOAccountPath({accountIndex:G,chain:B,derivationPath:_}),J=N.derivationPathToString(y),O=L===N.Chain.Bitcoin||L===N.Chain.Litecoin?J:J.replace(/^m\//,""),Z=U.getNetworkForChain(B).bip32.public;try{let X=await R.getExtendedPublicKey(O,Z);return{accountIndex:U.getUTXOAccountIndexFromPath(y),path:J,xpub:X}}finally{await R.disconnect?.()}}async function X_({address:L,chain:_,derivationPath:G,transport:B}){switch(_){case N.Chain.BitcoinCash:case N.Chain.Bitcoin:case N.Chain.Dash:case N.Chain.Dogecoin:case N.Chain.Litecoin:case N.Chain.Zcash:{let z=function(Q={}){return w(Q)},{getUtxoToolbox:R}=await import("@swapkit/toolboxes/utxo"),y=_,J=await E({chain:_,derivationPath:G,transport:B}),O=L??await x({chain:_,ledgerClient:J}),Z,X;if(_===N.Chain.Bitcoin){let{BitcoinPsbtLedger:Q}=await Promise.resolve().then(() => (UL(),DL)),F=Q(G,B);Z={getAddress:F.getAddress,signTransaction:F.signTransaction}}else if(_===N.Chain.BitcoinCash||_===N.Chain.Dogecoin||_===N.Chain.Dash||_===N.Chain.Litecoin){let{createLegacyPsbtSigner:Q,signLegacyPsbtTransaction:F}=await Promise.resolve().then(() => (KL(),fL));Z=Q({address:O,chain:y,legacyClient:J}),X=async(Y)=>{let q=await F({chain:y,legacyClient:J,tx:Y});return $.broadcastTx(q)}}let $=Z?await R(y,{signer:Z}):R(y),M=X??$.signAndBroadcastTransaction,W=async(Q)=>{let F=Q.feeRate||(await $.getFeeRates())[N.FeeOption.Average],Y=[N.Chain.Bitcoin].includes(_)?Q.memo:$_(Q.memo),{tx:q,inputs:K}=await $.createTransaction({...Q,feeRate:F,fetchTxHex:!0,memo:Y,sender:O}),A=await J.signTransaction(q,K);return await $.broadcastTx(A)};async function w({accountIndex:Q}={}){if(!J.getExtendedPublicKey)return;let F=U.getUTXOAccountPath({accountIndex:Q,chain:y,derivationPath:G}),Y=N.derivationPathToString(F),q=_===N.Chain.Bitcoin||_===N.Chain.Litecoin?Y:Y.replace(/^m\//,""),K=U.getNetworkForChain(y).bip32.public,A=await J.getExtendedPublicKey(q,K);return{accountIndex:U.getUTXOAccountIndexFromPath(F),path:Y,xpub:A}}async function H({accountIndex:Q,index:F,change:Y=!1}){try{let q=U.getUTXOAddressPath({accountIndex:Q,chain:y,change:Y,derivationPath:G,index:F}),K=await E({chain:y,derivationPath:q,transport:B}),A=await x({chain:y,ledgerClient:K});return{accountIndex:U.getUTXOAccountIndexFromPath(q),address:A,change:Y,index:F,path:N.derivationPathToString(q),pubkey:""}}catch{return}}async function f({accountIndex:Q,count:F,startIndex:Y=0,change:q=!1}){return U.assertDerivationIndex("count",F),U.assertDerivationIndex("startIndex",Y),(await Promise.all(Array.from({length:F},(A,o)=>H({accountIndex:Q,change:q,index:Y+o})))).filter((A)=>!!A)}let S=U.createHDWalletHelpers({chain:y,deriveAddress:H,getBalance:$.getBalance,getUtxos:(Q)=>U.getUtxoApi(y).getUtxos({address:Q,fetchTxHex:!0})});async function d({utxos:Q,recipient:F,assetValue:Y,memo:q,feeRate:K,feeOptionKey:A,changeAddress:o}){if(!Q.length)throw new N.SwapKitError("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let j0=K||(await $.getFeeRates())[A||N.FeeOption.Fast],_0=q?U.compileMemo(q):null,h=[{address:F,value:Y.getBaseValue("number")}];if(_0)h.push({script:_0,value:0});let u=Q.map(({hash:O0,index:Z0,value:W0,txHex:q0,witnessUtxo:F0})=>({hash:O0,index:Z0,txHex:q0,value:W0,witnessUtxo:F0})),{inputs:J0,outputs:S0}=$.accumulative({chain:y,feeRate:j0,inputs:u,outputs:h});if(!(J0&&S0))throw new N.SwapKitError("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:AL}=await import("@swapkit/utxo-signer"),A0=new AL({allowLegacyWitnessUtxo:!0,version:1}),mL=o||Q[0]?.address||F;U.addInputsAndOutputs({chain:y,compiledMemo:_0,inputs:J0,outputs:S0,sender:mL,tx:A0});let EL=U.getUTXOAccountPath({chain:y,derivationPath:G}),IL=J0.map((O0)=>{let Z0=Q.find((m0)=>m0.hash===O0.hash&&m0.index===O0.index),W0=Z0?.derivationIndex??0,q0=Z0?.isChange??!1,F0=[...EL,Number(q0),W0];return N.derivationPathToString(F0)});if(!J.signTransactionWithMultiplePaths)throw new N.SwapKitError("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let PL=await J.signTransactionWithMultiplePaths(A0,J0,IL);return $.broadcastTx(PL)}return{...$,...S,address:O,deriveAddressAtIndex:H,deriveAddresses:f,getExtendedPublicKey:z,getExtendedPublicKeyInfo:w,signAndBroadcastTransaction:M,transfer:W,transferFromMultipleAddresses:d}}case N.Chain.Ethereum:case N.Chain.Avalanche:case N.Chain.Arbitrum:case N.Chain.Berachain:case N.Chain.Optimism:case N.Chain.Polygon:case N.Chain.BinanceSmartChain:case N.Chain.Base:case N.Chain.Aurora:case N.Chain.Gnosis:case N.Chain.Monad:case N.Chain.XLayer:{let{getEvmToolboxAsync:R}=await import("@swapkit/toolboxes/evm"),y=await E({chain:_,derivationPath:G,transport:B}),J=await x({chain:_,ledgerClient:y});return{...await R(_,{signer:y}),address:J}}case N.Chain.Cosmos:{let{createSigningStargateClient:R,getDefaultChainFee:y,getMsgSendDenom:J,getCosmosToolbox:O}=await import("@swapkit/toolboxes/cosmos"),Z=await E({chain:_,derivationPath:G,transport:B}),X=await x({chain:_,ledgerClient:Z});return{...await O(N.Chain.Cosmos,{signer:Z}),address:X,transfer:async({assetValue:W,recipient:w,memo:z})=>{if(!W)throw new N.SwapKitError("wallet_ledger_invalid_asset");let H={amount:[{amount:W.getBaseValue("string"),denom:J(`u${W.symbol}`).toLowerCase()}],fromAddress:X,toAddress:w},f=await N.getRPCUrl(_),S=await R(f,Z,"0.007uatom"),{transactionHash:d}=await S.signAndBroadcast(X,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:H}],y(N.Chain.Cosmos),z);return d}}}case N.Chain.THORChain:{let R=await E({chain:_,derivationPath:G,transport:B}),{getCosmosToolbox:y}=await import("@swapkit/toolboxes/cosmos"),J=y(_,{signer:R}),O=await x({chain:_,ledgerClient:R}),{sign:Z}=R;return{...J,address:O,signMessage:Z}}case N.Chain.Near:{let{getNearToolbox:R}=await import("@swapkit/toolboxes/near"),y=await E({chain:_,derivationPath:G,transport:B}),J=await y.getAddress();return{...R({signer:y}),address:J}}case N.Chain.Ripple:{let{getRippleToolbox:R}=await import("@swapkit/toolboxes/ripple"),y=await E({chain:_,derivationPath:G,transport:B}),J=y.getAddress();return{...R({signer:y}),address:J}}case N.Chain.Tron:{let{getTronToolbox:R}=await import("@swapkit/toolboxes/tron"),y=await E({chain:_,derivationPath:G,transport:B}),J=await x({chain:_,ledgerClient:y});return{...R({signer:y}),address:J}}case N.Chain.Sui:{let{getSuiToolbox:R}=await import("@swapkit/toolboxes/sui"),y=await E({chain:_,derivationPath:G,transport:B}),J=await x({chain:_,ledgerClient:y});return{...R({signer:y}),address:J}}default:throw new N.SwapKitError("wallet_ledger_chain_not_supported",{chain:_})}}
2
2
 
3
- //# debugId=EAED602A9D2631A764756E2164756E21
3
+ //# debugId=01D4D026F8F669DA64756E2164756E21
4
4
  //# sourceMappingURL=index.cjs.map