@swapkit/wallet-hardware 4.9.11 → 4.9.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,4 @@
1
- var A0={};f0(A0,{ledgerWallet:()=>w0,getLedgerExtendedPublicKey:()=>B0,LEDGER_SUPPORTED_CHAINS:()=>C0});module.exports=H0(A0);var B=require("@swapkit/helpers"),Q=require("@swapkit/toolboxes/utxo"),RL=require("@swapkit/wallet-core");var Z=require("@swapkit/helpers"),v=async({chain:L,ledgerClient:y})=>{if(!y)return"";switch(L){case Z.Chain.Cosmos:case Z.Chain.THORChain:return y.connect();case Z.Chain.Ethereum:case Z.Chain.BinanceSmartChain:case Z.Chain.Avalanche:case Z.Chain.Polygon:case Z.Chain.Arbitrum:case Z.Chain.Berachain:case Z.Chain.Optimism:case Z.Chain.Base:case Z.Chain.Aurora:case Z.Chain.Gnosis:case Z.Chain.Monad:case Z.Chain.XLayer:return y.getAddress();case Z.Chain.Bitcoin:case Z.Chain.BitcoinCash:case Z.Chain.Dash:case Z.Chain.Dogecoin:case Z.Chain.Litecoin:case Z.Chain.Zcash:{let _=y;await _.connect();let R=await _.getAddress();return L===Z.Chain.BitcoinCash?R.replace("bitcoincash:",""):R}case Z.Chain.Near:return await y.getAddress();case Z.Chain.Ripple:return y.getAddress();case Z.Chain.Tron:return y.getAddress();case Z.Chain.Sui:return y.connect();default:throw new Z.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:Z.WalletOption.LEDGER})}};var F=require("@swapkit/helpers");var x=require("@swapkit/helpers");var k=require("@swapkit/helpers");var ML=require("@swapkit/helpers");var d=85,FL=250;var h={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},TL={ADD:1,INIT:0,LAST:2},jL={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},u={JSON:0},I={NoError:36864},HL={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 K(L){if(L in HL)return HL[L];return`Unknown Status Code: ${L}`}function W0(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function A(L){if(L){if(W0(L)){if(Object.hasOwn(L,"statusCode"))return{error_message:K(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 WL(L){return L.send(85,h.GET_VERSION,0,0).then((y)=>{let _=y.slice(-2),R=_[0]*256+_[1],T=0;if(y.length>=9)T=(y[5]<<24)+(y[6]<<16)+(y[7]<<8)+(y[8]<<0);return{device_locked:y[4]===1,error_message:K(R),major:y[1],minor:y[2],patch:y[3],return_code:R,target_id:T.toString(16),test_mode:y[0]!==0}},A)}var p=require("@swapkit/helpers");function fL(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 R=L[_]||0;if(_<3)R|=2147483648;y.writeInt32LE(R,1+_*4)}return y}function JL(L,y,_,R,T=u.JSON){return L.transport.send(d,h.SIGN_SECP256K1,y,T,R,[I.NoError,27012,27264]).then((w)=>{let G=w.slice(-2),X=G[0]*256+G[1],O=K(X);if(X===27264||X===27012)O=`${O} : ${w.slice(0,w.length-2).toString("ascii")}`;let M=null;if(w.length>2)M=w.slice(0,w.length-2);return{error_message:O,return_code:X,signature:M}},A)}function J0(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 CL(L,y){return L.transport.send(d,h.INS_PUBLIC_KEY_SECP256K1,0,0,y,[I.NoError]).then((_)=>{let R=_.slice(-2),T=R[0]*256+R[1],w=Buffer.from(_.slice(0,65));return{compressed_pk:J0(w),error_message:K(T),pk:w,return_code:T}},A)}function mL(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 zL(L,y,_,R,T=u.JSON){let w=TL.ADD;if(y===1)w=TL.INIT;if(y===_)w=TL.LAST;return JL(L,w,0,R,T)}function AL(L,y){return L.transport.send(d,h.GET_ADDR_SECP256K1,0,0,y,[I.NoError]).then((_)=>{let R=_.slice(-2),T=R[0]*256+R[1];return{compressed_pk:Buffer.from(_.slice(0,33)),error_message:K(T),pk:"OBSOLETE PROPERTY",return_code:T}},A)}class t{transport;versionResponse;constructor(L){if(!L)throw new ML.SwapKitError("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new ML.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 WL(this.transport),this.versionResponse.return_code!==I.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return fL(L);case 2:return mL(L);default:return Buffer.alloc(0)}}async signGetChunks(L,y){let _=await this.serializePath(L),R=[];R.push(_);for(let T=0;T<y.length;T+=FL){let w=T+FL;if(T>y.length)w=y.length;R.push(y.slice(T,w))}return R}async getVersion(){try{return this.versionResponse=await WL(this.transport),this.versionResponse}catch(L){return A(L)}}appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let y=L.readUInt16BE(L.length-2),_="",R="",T=0,w=0;if(L[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let G=L[1];_=L.slice(2,2+G).toString("ascii");let X=2+G,O=L[X];X+=1,R=L.slice(X,X+O).toString("ascii"),X+=O;let M=L[X];return X+=1,T=M,w=L[X],{appName:_,appVersion:R,error_message:K(y),flag_onboarded:(w&4)!==0,flag_pin_validated:(w&128)!==0,flag_recovery:(w&1)!==0,flag_signed_mcu_code:(w&2)!==0,flagLen:T,flagsValue:w,return_code:y}},A)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[I.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 R=L.slice(0,4).toString("hex"),T=4,w=L[T];T+=1;let G=L.slice(T,T+w).toString();T+=w;let X=L[T];T+=1;let O=L.slice(T,T+X).toString("hex");T+=X;let M=L[T];T+=1;let N=L.slice(T,T+M);if(N[M-1]===0)N=L.slice(T,T+M-1);let W=N.toString();return{error_message:K(_),flag:O,mcuVersion:W,return_code:_,seVersion:G,targetId:R}},A)}async publicKey(L){try{let y=await this.serializePath(L);switch(this.versionResponse.major){case 1:return CL(this,y);case 2:{let _=Buffer.concat([t.serializeHRP("thor"),y]);return AL(this,_)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(y){return A(y)}}async getAddressAndPubKey(L,y,_=!1){try{let R=await this.serializePath(L),T=Buffer.concat([t.serializeHRP(y),R]),w=await this.transport.send(d,h.GET_ADDR_SECP256K1,_?jL.SHOW_ADDRESS_IN_DEVICE:jL.ONLY_RETRIEVE,0,T,[I.NoError]),G=Buffer.from(w.slice(0,33)),X=Buffer.from(w.slice(33,-2)).toString(),O=w.readUInt16BE(w.length-2);return{bech32_address:X,compressed_pk:G,error_message:K(O),return_code:O}}catch(R){return A(R)}}showAddressAndPubKey(L,y){return this.getAddressAndPubKey(L,y,!0)}signSendChunk(L,y,_,R=u.JSON){switch(this.versionResponse.major){case 1:return JL(this,L,y,_,R);case 2:return zL(this,L,y,_,R);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(L,y,_=u.JSON){let R=Buffer.from(y),T=[],w;try{T=await this.signGetChunks(L,R),w=await this.signSendChunk(1,T.length,T[0],_)}catch(X){A(X)}let G={error_message:w.error_message,return_code:w.return_code,signature:null};for(let X=1;X<T.length;X+=1)if(G=await this.signSendChunk(1+X,T.length,T[X],_),G.return_code!==I.NoError)break;return{error_message:G.error_message,return_code:G.return_code,signature:G.signature}}}class a{ledgerTimeout=50000;derivationPath=k.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 H();switch(this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new t(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 k.SwapKitError("wallet_ledger_connection_error",y)}};validateResponse=(L,y)=>{switch(L){case k.LedgerErrorCode.NoError:return;case k.LedgerErrorCode.LockedDevice:throw new k.SwapKitError("wallet_ledger_device_locked",{message:`Ledger is locked: ${y}`});case k.LedgerErrorCode.TC_NotFound:throw new k.SwapKitError("wallet_ledger_device_not_found");default:break}}}class ZL extends a{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:R,signature:T}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new x.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,R),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:y,signature:T}]};signAmino=async(L,y)=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.getAccounts();if(_.findIndex((Y)=>Y.address===L)===-1)throw new x.SwapKitError("wallet_ledger_address_not_found",{address:L});let T=await import("@cosmjs/amino"),w=T.encodeSecp256k1Signature??T.default?.encodeSecp256k1Signature,G=T.serializeSignDoc??T.default?.serializeSignDoc,X=await import("@cosmjs/crypto"),O=X.Secp256k1Signature??X.default?.Secp256k1Signature,M=G(y),N=await this.ledgerApp.sign(this.derivationPath,M);this.validateResponse(N.return_code,N.error_message);let W=O.fromDer(N.signature).toFixedLength();return{signature:w(_[0].pubkey,W),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 $=require("@swapkit/helpers"),SL=require("ethers");class z extends SL.AbstractSigner{chainId=$.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor({provider:L,derivationPath:y=$.NetworkDerivationPath.OP,chainId:_=$.ChainId.Optimism,transport:R}){super(L);this.chainId=_||$.ChainId.Ethereum,this.derivationPath=typeof y==="string"?y:$.derivationPathToString(y),this.injectedTransport=R,Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new z({chainId:this.chainId,derivationPath:this.derivationPath,provider:L,transport:this.injectedTransport});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=this.injectedTransport??await H(),y=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new y(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new $.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 $.SwapKitError("wallet_ledger_signing_error");return _.r=`0x${_.r}`,_.s=`0x${_.s}`,y.from(_).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new $.SwapKitError("wallet_ledger_no_provider");let y=await this.signTransaction(L);return await this.provider.broadcastTransaction(y)};signTypedData=async(L,y,_,R)=>{let{buildEIP712DomainType:T}=await import("@swapkit/toolboxes/evm"),{Signature:w,TypedDataEncoder:G}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:X,...O}=y,M=R??G.from(O).primaryType,N;try{N=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:L,message:_,primaryType:M,types:{EIP712Domain:T(L),...O}})}catch(W){let Y=W instanceof Error&&"statusCode"in W;if(!Y||Y&&W.statusCode===27013)throw W;let U=G.hashDomain(L).slice(2),f=G.from(O).hash(_).slice(2);N=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,U,f)}if(!N)throw new $.SwapKitError("wallet_ledger_signing_error");return N.r=`0x${N.r}`,N.s=`0x${N.s}`,w.from(N).serialized};signTransaction=async(L)=>{let{Transaction:y}=await import("ethers");await this.createTransportAndLedger();let _=await this.provider?.getTransactionCount(L.from||await this.getAddress()),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:L.nonce!==void 0?Number((L.nonce||_||0).toString()):_,to:L.to?.toString(),type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0,value:L.value},T=y.from(R).unsignedSerialized.slice(2),{ledgerService:w}=await import("@ledgerhq/hw-app-eth"),G=await w.resolveTransaction(T,{},{erc20:!0,externalPlugins:!0}),X=await this.ledgerApp?.signTransaction(this.derivationPath,T,G);if(!X)throw new $.SwapKitError("wallet_ledger_signing_error");let{r:O,s:M,v:N}=X;return y.from({...R,signature:{r:`0x${O}`,s:`0x${M}`,v:Number(BigInt(N))}}).serialized}}var PL=(L)=>new z({...L,chainId:$.ChainId.Arbitrum}),KL=(L)=>new z({...L,chainId:$.ChainId.Aurora}),kL=(L)=>new z({...L,chainId:$.ChainId.Avalanche}),VL=(L)=>new z({...L,chainId:$.ChainId.Base}),EL=(L)=>new z({...L,chainId:$.ChainId.Ethereum}),vL=(L)=>new z({...L,chainId:$.ChainId.Gnosis}),IL=(L)=>new z({...L,chainId:$.ChainId.Optimism}),bL=(L)=>new z({...L,chainId:$.ChainId.Polygon}),lL=(L)=>new z({...L,chainId:$.ChainId.BinanceSmartChain}),cL=(L)=>new z({...L,chainId:$.ChainId.Monad}),gL=(L)=>new z({...L,chainId:$.ChainId.XLayer}),hL=(L)=>new z({...L,chainId:$.ChainId.Berachain});async function xL(L,y){let _=(await import("@ledgerhq/hw-app-near")).default,{Chain:R,NetworkDerivationPath:T,SwapKitError:w}=await import("@swapkit/helpers"),G=y??await H(),X=new _(G),O=(L||T[R.Near]).join("'/").concat("'"),{address:M,publicKey:N}=await X.getAddress(O);return{getAddress(){return Promise.resolve(M)},async getPublicKey(){let{PublicKey:Y}=await import("@near-js/crypto");return Y.fromString(`ed25519:${N}`)},signDelegateAction(Y){return Promise.reject(new w("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(Y,U,f,D,l){return Promise.reject(new w("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(Y){let{Signature:U,SignedTransaction:f}=await import("@near-js/transactions");try{let D=await X.signTransaction(Y.encode(),O);if(!D)throw Error("Signature undefined");let l=new U({data:D,keyType:0}),c=new f({signature:l,transaction:Y});return[D,c]}catch(D){throw new w("wallet_ledger_signing_error",{error:D})}}}}var C=require("@swapkit/helpers");class dL{derivationPath;ledgerApp=null;address=null;publicKey=null;injectedTransport;constructor(L,y){this.derivationPath=typeof L==="string"?L:C.derivationPathToString(L||C.NetworkDerivationPath[C.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 H(),y=(await import("@ledgerhq/hw-app-sui")).default;this.ledgerApp=new y(L)}async connect(){if(await this.createTransportAndLedger(),!this.ledgerApp)throw new C.SwapKitError("wallet_ledger_transport_error");let L=this.getLedgerPath(),y=await this.ledgerApp.getPublicKey(L);if(!y?.publicKey)throw new C.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 C.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 C.SwapKitError("wallet_ledger_transport_error");if(!this.publicKey)throw new C.SwapKitError("wallet_ledger_failed_to_get_address");try{let _=this.getLedgerPath(),R=new Uint8Array(3+y.length);R[0]=0,R[1]=0,R[2]=0,R.set(y,3);let T=await this.ledgerApp.signTransaction(_,R);if(!T?.signature)throw new C.SwapKitError("wallet_ledger_signing_error");let w=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(w.length!==32)throw new C.SwapKitError("wallet_ledger_signing_error",{error:"Invalid public key length"});let G=new Uint8Array(97);G[0]=0,G.set(T.signature,1),G.set(w,65);let X=Buffer.from(G).toString("base64");return{bytes:Buffer.from(y).toString("base64"),signature:X}}catch(_){throw new C.SwapKitError("wallet_ledger_signing_error",{error:_})}}}var uL=(L,y)=>new dL(L,y);var BL=require("@scure/base"),i=require("@swapkit/helpers");var iL=require("@scure/base"),V=require("@swapkit/helpers"),wL=(L)=>{if(L.length<64)throw new V.SwapKitError("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new V.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new V.SwapKitError("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new V.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 V.SwapKitError("wallet_ledger_invalid_signature",{reason:"r too long"});while(_.length<32)_.unshift(0);if(L[y+4]!==2)throw new V.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let R=L[y+5];if(4+y+2+R!==L.length)throw new V.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let T=L.slice(y+6,L.length);if(T.length===33&&T[0]===0)T=T.slice(1,33);else if(T.length===33)throw new V.SwapKitError("wallet_ledger_invalid_signature",{reason:"s too long"});while(T.length<32)T.unshift(0);if(_.length!==32||T.length!==32)throw new V.SwapKitError("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return iL.base64.encode(Buffer.concat([_,T]))};function M0(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 Z0(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((R)=>({...R,asset:M0(R.asset)}))}}})}}class $L extends a{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=BL.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:R,signature:T}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new i.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,R),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:y,signature:wL(T)}]};signAmino=async(L,y)=>{await this.checkOrCreateTransportAndLedger(!0);let _=(await this.getAccounts()).find((N)=>N.address===L);if(!_)throw new i.SwapKitError("wallet_ledger_address_not_found",{address:L});let R=await import("@cosmjs/amino"),T=R.encodeSecp256k1Signature??R.default?.encodeSecp256k1Signature,w=R.serializeSignDoc??R.default?.serializeSignDoc,G=Z0(y),{return_code:X,error_message:O,signature:M}=await this.ledgerApp.sign(this.derivationPath,w(G));return this.validateResponse(X,O),{signature:T(_.pubkey,BL.base64.decode(wL(M))),signed:y}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{bech32_address:L,compressed_pk:y}=await this.getAddressAndPubKey();return this.pubKey=BL.base64.encode(y),[{address:L,algo:"secp256k1",pubkey:y}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:_,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new i.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,_),wL(R)}}var E=require("@swapkit/helpers");class nL{derivationPath;ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor(L,y){this.derivationPath=typeof L==="string"?L:E.derivationPathToString(L||E.NetworkDerivationPath.TRON),this.injectedTransport=y}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=this.injectedTransport??await H(),y=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new y(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new E.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 E.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 E.SwapKitError("wallet_ledger_transport_error");let y=JSON.stringify(L);try{let _=await this.ledgerApp.signTransaction(this.derivationPath,y,[]);if(!_)throw new E.SwapKitError("wallet_ledger_signing_error");return{...L,signature:[_]}}catch(_){throw new E.SwapKitError("wallet_ledger_signing_error",{error:_})}}}var oL=(L,y)=>new nL(L,y);var e=require("@scure/base"),b=require("@swapkit/helpers");var tL=["bitcoin-cash","dash","dogecoin","zcash"],pL=({tx:L,inputUtxos:y,btcApp:_,derivationPath:R,chain:T},w)=>{let G=y.map((W)=>{return[_.splitTransaction(W.txHex||"",!tL.includes(T),T==="zcash"),W.index,void 0,void 0]}),X=e.hex.encode(L.unsignedTx),O=_.splitTransaction(X,!0),M=_.serializeTransactionOutputs(O).toString("hex"),N={additionals:["bech32"],associatedKeysets:G.map(()=>R),inputs:G,outputScriptHex:M,segwit:!0,useTrustedInputForSegwit:!0};return _.createPaymentTransaction({...N,...w})},$0=({tx:L,inputUtxos:y,btcApp:_,derivationPaths:R,chain:T},w)=>{if(R.length!==y.length)throw new b.SwapKitError("wallet_ledger_invalid_params",{message:`Derivation paths count (${R.length}) must match inputs count (${y.length})`});let G=y.map((W)=>{return[_.splitTransaction(W.txHex||"",!tL.includes(T),T==="zcash"),W.index,void 0,void 0]}),X=e.hex.encode(L.unsignedTx),O=_.splitTransaction(X,!0),M=_.serializeTransactionOutputs(O).toString("hex"),N={additionals:["bech32"],associatedKeysets:R,inputs:G,outputScriptHex:M,segwit:!0,useTrustedInputForSegwit:!0};return _.createPaymentTransaction({...N,...w})},n=({chain:L,additionalSignParams:y})=>{return(_,R)=>{let T,w=null;async function G(N=!0){if(N&&!T)new b.SwapKitError("wallet_ledger_connection_error",{message:`Ledger connection failed:
2
- ${JSON.stringify({btcApp:T,checkBtcApp:N})}`});w||=R??await H()}async function X(){w=R??await H(),T=new(await import("@ledgerhq/hw-app-btc")).default({currency:L,transport:w})}let O=typeof _==="string"?_:b.derivationPathToString(_),M=b.getWalletFormatFor(O);return{connect:async()=>{await G(!1),T=new(await import("@ledgerhq/hw-app-btc")).default({currency:L,transport:w})},getAddress:async()=>{let{toCashAddress:N}=await import("@swapkit/toolboxes/utxo");await G(!1);let{bitcoinAddress:W}=await T.getWalletPublicKey(O,{format:M});if(!W)throw new b.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${O}`});return L==="bitcoin-cash"&&M==="legacy"?N(W).replace(/(bchtest:|bitcoincash:)/,""):W},getExtendedPublicKey:async(N="84'/0'/0'",W=76067358)=>{return await G(!1),T.getWalletXpub({path:N,xpubVersion:W})},signPCZT:async(N)=>{if(L!=="zcash")throw new b.SwapKitError("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});await X();let{ZcashTransaction:W,Script:Y}=await import("@swapkit/utxo-signer"),U=N.getGlobal(),f=new W({consensusBranchId:U.consensusBranchId,expiryHeight:U.expiryHeight,lockTime:U.lockTime,version:U.txVersion,versionGroupId:U.versionGroupId}),D=[];for(let j=0;j<N.inputsLength;j++){let J=N.getInput(j);f.addInput({index:J.index,script:new Uint8Array,sequence:J.sequence??4294967295,txid:J.txid,value:J.value}),D.push({hash:e.hex.encode(new Uint8Array([...J.txid].reverse())),index:J.index,txHex:Q0(J,U),value:Number(J.value),witnessUtxo:{script:J.scriptPubkey,value:Number(J.value)}})}for(let j=0;j<N.outputsLength;j++){let J=N.getOutput(j);f.addOutput({amount:J.value,script:J.scriptPubkey})}let l=await pL({btcApp:T,chain:L,derivationPath:O,inputUtxos:D,tx:f},{...y,expiryHeight:(()=>{let j=Buffer.alloc(4);return j.writeUInt32LE(U.expiryHeight),j})(),lockTime:U.lockTime}),c=W.fromHex(l,{allowUnknownOutputs:!0}),r=N.clone();for(let j=0;j<c.inputsLength;j++){let J=c.getInput(j);if(J.script&&J.script.length>0){let q=Y.decode(J.script);if(q.length>=2)r.addSignature(j,q[1],q[0])}}return r},signTransaction:async(N,W)=>{return await X(),pL({btcApp:T,chain:L,derivationPath:O,inputUtxos:W,tx:N},y)},signTransactionWithMultiplePaths:async(N,W,Y)=>{return await X(),$0({btcApp:T,chain:L,derivationPaths:Y,inputUtxos:W,tx:N},y)}}}};function Q0(L,y){let _=[],R=(y.txVersion|2147483648)>>>0;_.push(R&255,R>>8&255,R>>16&255,R>>24&255);let T=y.versionGroupId;_.push(T&255,T>>8&255,T>>16&255,T>>24&255),_.push(0);let w=L.index+1;if(w<253)_.push(w);else _.push(253,w&255,w>>8&255);for(let O=0;O<L.index;O++)_.push(0,0,0,0,0,0,0,0),_.push(0);let G=L.value;_.push(Number(G&0xffn),Number(G>>8n&0xffn),Number(G>>16n&0xffn),Number(G>>24n&0xffn),Number(G>>32n&0xffn),Number(G>>40n&0xffn),Number(G>>48n&0xffn),Number(G>>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 O of X)_.push(O);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 aL=n({chain:"bitcoin"}),eL=n({chain:"litecoin"}),rL=n({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),sL=n({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),L0=n({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),y0=n({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let L=Buffer.alloc(4);return L.writeUInt32LE(0),L})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});var _0=Y0(require("@ledgerhq/hw-app-xrp")),o=require("@swapkit/helpers"),QL=require("ripple-binary-codec");var U0=2147483648;function q0(L){let y={};for(let _ in L)if(L[_]!==null&&L[_]!==void 0)y[_]=L[_];return y}function D0(L){return new _0.default(L)}var T0=async(L,y)=>{let _=o.derivationPathToString(L||o.NetworkDerivationPath[o.Chain.Ripple]),R=y??await H(),T=D0(R),{address:w,publicKey:G}=await T.getAddress(_);async function X(O){let{hashes:M}=await import("@swapkit/toolboxes/ripple"),W={...q0(O),Flags:O.Flags||U0,SigningPubKey:G.toUpperCase()},Y=QL.encode(W),U=await T.signTransaction(_,Y),f=QL.encode({...W,TxnSignature:U});return{hash:M.hashSignedTx(f),tx_blob:f}}return{getAddress:()=>w,signTransaction:X}};var S=async({chain:L,derivationPath:y,transport:_})=>{let{match:R}=await import("ts-pattern");return R(L).returnType().with(F.Chain.THORChain,()=>Promise.resolve(new $L(y,_))).with(F.Chain.Cosmos,()=>Promise.resolve(new ZL(y,_))).with(F.Chain.Bitcoin,()=>Promise.resolve(aL(y,_))).with(F.Chain.BitcoinCash,()=>Promise.resolve(rL(y,_))).with(F.Chain.Dash,()=>Promise.resolve(L0(y,_))).with(F.Chain.Dogecoin,()=>Promise.resolve(sL(y,_))).with(F.Chain.Litecoin,()=>Promise.resolve(eL(y,_))).with(F.Chain.Zcash,()=>Promise.resolve(y0(y,_))).with(F.Chain.Ripple,()=>Promise.resolve(T0(y,_))).with(F.Chain.Tron,()=>Promise.resolve(oL(y,_))).with(F.Chain.Sui,()=>Promise.resolve(uL(y,_))).with(F.Chain.Near,()=>{return Promise.resolve(xL(y,_))}).with(F.Chain.Arbitrum,F.Chain.Aurora,F.Chain.Avalanche,F.Chain.Berachain,F.Chain.BinanceSmartChain,F.Chain.Ethereum,F.Chain.Gnosis,F.Chain.Monad,F.Chain.Optimism,F.Chain.Polygon,F.Chain.Base,F.Chain.XLayer,async()=>{let{getProvider:T}=await import("@swapkit/toolboxes/evm"),w={derivationPath:y,provider:await T(L),transport:_};return R(L).with(F.Chain.BinanceSmartChain,()=>lL(w)).with(F.Chain.Avalanche,()=>kL(w)).with(F.Chain.Arbitrum,()=>PL(w)).with(F.Chain.Berachain,()=>hL(w)).with(F.Chain.Optimism,()=>IL(w)).with(F.Chain.Polygon,()=>bL(w)).with(F.Chain.Base,()=>VL(w)).with(F.Chain.Aurora,()=>KL(w)).with(F.Chain.Gnosis,()=>vL(w)).with(F.Chain.Monad,()=>cL(w)).with(F.Chain.XLayer,()=>gL(w)).otherwise(()=>EL(w))}).otherwise(()=>{throw new F.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:F.WalletOption.LEDGER})})};var w0=RL.createWallet({connect:({addChain:L,supportedChains:y,walletType:_})=>async function(T,w,{address:G,transport:X}={}){let[O]=B.filterSupportedChains({chains:T,supportedChains:y,walletType:_});if(!O)return!1;let M=w??B.NetworkDerivationPath[O],N=await z0({address:G,chain:O,derivationPath:M,transport:X});return L({...N,chain:O,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:B0,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}),C0=RL.getWalletSupportedChains(w0);function m0(L,y="t"){if(!L?.includes("=:"))return L;let _=L.includes(`:${y}:`)?L.split(`:${y}:`)[0]:L;return _?.substring(0,_.lastIndexOf(":"))}async function B0(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 R=L,T=await S({chain:R,derivationPath:y});if(!T.getExtendedPublicKey)return;let w=Q.getUTXOAccountPath({accountIndex:_,chain:R,derivationPath:y}),G=B.derivationPathToString(w),X=L===B.Chain.Bitcoin||L===B.Chain.Litecoin?G:G.replace(/^m\//,""),O=Q.getNetworkForChain(R).bip32.public,M=await T.getExtendedPublicKey(X,O);return{accountIndex:Q.getUTXOAccountIndexFromPath(w),path:G,xpub:M}}async function z0({address:L,chain:y,derivationPath:_,transport:R}){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 f=function(j={}){return U(j)},{getUtxoToolbox:T}=await import("@swapkit/toolboxes/utxo"),w=y,G=await S({chain:y,derivationPath:_,transport:R}),X=L??await v({chain:y,ledgerClient:G}),O,M;if(y===B.Chain.Bitcoin){let{BitcoinPsbtLedger:j}=await import("../chunk-3gajmdgz.js"),J=j(_,R);O={getAddress:J.getAddress,signTransaction:J.signTransaction}}else if(y===B.Chain.BitcoinCash||y===B.Chain.Dogecoin||y===B.Chain.Dash||y===B.Chain.Litecoin){let{createLegacyPsbtSigner:j,signLegacyPsbtTransaction:J}=await import("../chunk-hegt01q0.js");O=j({address:X,chain:w,legacyClient:G}),M=async(q)=>{let m=await J({chain:w,legacyClient:G,tx:q});return N.broadcastTx(m)}}let N=O?await T(w,{signer:O}):T(w),W=M??N.signAndBroadcastTransaction,Y=async(j)=>{let J=j.feeRate||(await N.getFeeRates())[B.FeeOption.Average],q=[B.Chain.Bitcoin].includes(y)?j.memo:m0(j.memo),{tx:m,inputs:g}=await N.createTransaction({...j,feeRate:J,fetchTxHex:!0,memo:q,sender:X}),P=await G.signTransaction(m,g);return await N.broadcastTx(P)};async function U({accountIndex:j}={}){if(!G.getExtendedPublicKey)return;let J=Q.getUTXOAccountPath({accountIndex:j,chain:w,derivationPath:_}),q=B.derivationPathToString(J),m=y===B.Chain.Bitcoin||y===B.Chain.Litecoin?q:q.replace(/^m\//,""),g=Q.getNetworkForChain(w).bip32.public,P=await G.getExtendedPublicKey(m,g);return{accountIndex:Q.getUTXOAccountIndexFromPath(J),path:q,xpub:P}}async function D({accountIndex:j,index:J,change:q=!1}){try{let m=Q.getUTXOAddressPath({accountIndex:j,chain:w,change:q,derivationPath:_,index:J}),g=await S({chain:w,derivationPath:m,transport:R}),P=await v({chain:w,ledgerClient:g});return{accountIndex:Q.getUTXOAccountIndexFromPath(m),address:P,change:q,index:J,path:B.derivationPathToString(m),pubkey:""}}catch{return}}async function l({accountIndex:j,count:J,startIndex:q=0,change:m=!1}){return Q.assertDerivationIndex("count",J),Q.assertDerivationIndex("startIndex",q),(await Promise.all(Array.from({length:J},(P,s)=>D({accountIndex:j,change:m,index:q+s})))).filter((P)=>!!P)}let c=Q.createHDWalletHelpers({chain:w,deriveAddress:D,getBalance:N.getBalance,getUtxos:(j)=>Q.getUtxoApi(w).getUtxos({address:j,fetchTxHex:!0})});async function r({utxos:j,recipient:J,assetValue:q,memo:m,feeRate:g,feeOptionKey:P,changeAddress:s}){if(!j.length)throw new B.SwapKitError("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let R0=g||(await N.getFeeRates())[P||B.FeeOption.Fast],GL=m?Q.compileMemo(m):null,YL=[{address:J,value:q.getBaseValue("number")}];if(GL)YL.push({script:GL,value:0});let G0=j.map(({hash:yL,index:_L,value:XL,txHex:OL,witnessUtxo:NL})=>({hash:yL,index:_L,txHex:OL,value:XL,witnessUtxo:NL})),{inputs:LL,outputs:UL}=N.accumulative({chain:w,feeRate:R0,inputs:G0,outputs:YL});if(!(LL&&UL))throw new B.SwapKitError("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:X0}=await import("@swapkit/utxo-signer"),qL=new X0({allowLegacyWitnessUtxo:!0,version:1}),O0=s||j[0]?.address||J;Q.addInputsAndOutputs({chain:w,compiledMemo:GL,inputs:LL,outputs:UL,sender:O0,tx:qL});let N0=Q.getUTXOAccountPath({chain:w,derivationPath:_}),F0=LL.map((yL)=>{let _L=j.find((DL)=>DL.hash===yL.hash&&DL.index===yL.index),XL=_L?.derivationIndex??0,OL=_L?.isChange??!1,NL=[...N0,Number(OL),XL];return B.derivationPathToString(NL)});if(!G.signTransactionWithMultiplePaths)throw new B.SwapKitError("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let j0=await G.signTransactionWithMultiplePaths(qL,LL,F0);return N.broadcastTx(j0)}return{...N,...c,address:X,deriveAddressAtIndex:D,deriveAddresses:l,getExtendedPublicKey:f,getExtendedPublicKeyInfo:U,signAndBroadcastTransaction:W,transfer:Y,transferFromMultipleAddresses:r}}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:T}=await import("@swapkit/toolboxes/evm"),w=await S({chain:y,derivationPath:_,transport:R}),G=await v({chain:y,ledgerClient:w});return{...await T(y,{signer:w}),address:G}}case B.Chain.Cosmos:{let{createSigningStargateClient:T,getMsgSendDenom:w,getCosmosToolbox:G}=await import("@swapkit/toolboxes/cosmos"),X=await S({chain:y,derivationPath:_,transport:R}),O=await v({chain:y,ledgerClient:X});return{...await G(B.Chain.Cosmos,{signer:X}),address:O,transfer:async({assetValue:W,recipient:Y,memo:U})=>{if(!W)throw new B.SwapKitError("wallet_ledger_invalid_asset");let f={amount:[{amount:W.getBaseValue("string"),denom:w(`u${W.symbol}`).toLowerCase()}],fromAddress:O,toAddress:Y},D=await B.getRPCUrl(y),l=await T(D,X,"0.007uatom"),{transactionHash:c}=await l.signAndBroadcast(O,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:f}],2,U);return c}}}case B.Chain.THORChain:{let T=await S({chain:y,derivationPath:_,transport:R}),{getCosmosToolbox:w}=await import("@swapkit/toolboxes/cosmos"),G=w(y,{signer:T}),X=await v({chain:y,ledgerClient:T}),{sign:O}=T;return{...G,address:X,signMessage:O}}case B.Chain.Near:{let{getNearToolbox:T}=await import("@swapkit/toolboxes/near"),w=await S({chain:y,derivationPath:_,transport:R}),G=await w.getAddress();return{...T({signer:w}),address:G}}case B.Chain.Ripple:{let{getRippleToolbox:T}=await import("@swapkit/toolboxes/ripple"),w=await S({chain:y,derivationPath:_,transport:R}),G=w.getAddress();return{...T({signer:w}),address:G}}case B.Chain.Tron:{let{getTronToolbox:T}=await import("@swapkit/toolboxes/tron"),w=await S({chain:y,derivationPath:_,transport:R}),G=await v({chain:y,ledgerClient:w});return{...T({signer:w}),address:G}}case B.Chain.Sui:{let{getSuiToolbox:T}=await import("@swapkit/toolboxes/sui"),w=await S({chain:y,derivationPath:_,transport:R}),G=await v({chain:y,ledgerClient:w});return{...T({signer:w}),address:G}}default:throw new B.SwapKitError("wallet_ledger_chain_not_supported",{chain:y})}}
1
+ var mL={};CL(mL,{ledgerWallet:()=>GL,getLedgerExtendedPublicKey:()=>wL,LEDGER_SUPPORTED_CHAINS:()=>UL});module.exports=fL(mL);var w=require("@swapkit/helpers"),q=require("@swapkit/toolboxes/utxo"),w0=require("@swapkit/wallet-core");var j=require("@swapkit/helpers"),b=async({chain:L,ledgerClient:y})=>{if(!y)return"";switch(L){case j.Chain.Cosmos:case j.Chain.THORChain:return y.connect();case j.Chain.Ethereum:case j.Chain.BinanceSmartChain:case j.Chain.Avalanche:case j.Chain.Polygon:case j.Chain.Arbitrum:case j.Chain.Berachain:case j.Chain.Optimism:case j.Chain.Base:case j.Chain.Aurora:case j.Chain.Gnosis:case j.Chain.Monad:case j.Chain.XLayer:return y.getAddress();case j.Chain.Bitcoin:case j.Chain.BitcoinCash:case j.Chain.Dash:case j.Chain.Dogecoin:case j.Chain.Litecoin:case j.Chain.Zcash:{let _=y;await _.connect();let B=await _.getAddress();return L===j.Chain.BitcoinCash?B.replace("bitcoincash:",""):B}case j.Chain.Near:return await y.getAddress();case j.Chain.Ripple:return y.getAddress();case j.Chain.Tron:return y.getAddress();case j.Chain.Sui:return y.connect();default:throw new j.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:j.WalletOption.LEDGER})}};var W=require("@swapkit/helpers");var x=require("@swapkit/helpers");var E=require("@swapkit/helpers");var $0=require("@swapkit/helpers");var d=85,F0=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},W0={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},u={JSON:0},l={NoError:36864},f0={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 f0)return f0[L];return`Unknown Status Code: ${L}`}function JL(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function K(L){if(L){if(JL(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 J0(L){return L.send(85,h.GET_VERSION,0,0).then((y)=>{let _=y.slice(-2),B=_[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(B),major:y[1],minor:y[2],patch:y[3],return_code:B,target_id:R.toString(16),test_mode:y[0]!==0}},K)}var p=require("@swapkit/helpers");function C0(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 B=L[_]||0;if(_<3)B|=2147483648;y.writeInt32LE(B,1+_*4)}return y}function Z0(L,y,_,B,R=u.JSON){return L.transport.send(d,h.SIGN_SECP256K1,y,R,B,[l.NoError,27012,27264]).then((G)=>{let N=G.slice(-2),X=N[0]*256+N[1],O=P(X);if(X===27264||X===27012)O=`${O} : ${G.slice(0,G.length-2).toString("ascii")}`;let J=null;if(G.length>2)J=G.slice(0,G.length-2);return{error_message:O,return_code:X,signature:J}},K)}function ZL(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 U0(L,y){return L.transport.send(d,h.INS_PUBLIC_KEY_SECP256K1,0,0,y,[l.NoError]).then((_)=>{let B=_.slice(-2),R=B[0]*256+B[1],G=Buffer.from(_.slice(0,65));return{compressed_pk:ZL(G),error_message:P(R),pk:G,return_code:R}},K)}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,_,B,R=u.JSON){let G=_0.ADD;if(y===1)G=_0.INIT;if(y===_)G=_0.LAST;return Z0(L,G,0,B,R)}function m0(L,y){return L.transport.send(d,h.GET_ADDR_SECP256K1,0,0,y,[l.NoError]).then((_)=>{let B=_.slice(-2),R=B[0]*256+B[1];return{compressed_pk:Buffer.from(_.slice(0,33)),error_message:P(R),pk:"OBSOLETE PROPERTY",return_code:R}},K)}class a{transport;versionResponse;constructor(L){if(!L)throw new $0.SwapKitError("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new $0.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 J0(this.transport),this.versionResponse.return_code!==l.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return C0(L);case 2:return z0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,y){let _=await this.serializePath(L),B=[];B.push(_);for(let R=0;R<y.length;R+=F0){let G=R+F0;if(R>y.length)G=y.length;B.push(y.slice(R,G))}return B}async getVersion(){try{return this.versionResponse=await J0(this.transport),this.versionResponse}catch(L){return K(L)}}appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let y=L.readUInt16BE(L.length-2),_="",B="",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,O=L[X];X+=1,B=L.slice(X,X+O).toString("ascii"),X+=O;let J=L[X];return X+=1,R=J,G=L[X],{appName:_,appVersion:B,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}},K)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[l.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 B=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 O=L.slice(R,R+X).toString("hex");R+=X;let J=L[R];R+=1;let T=L.slice(R,R+J);if(T[J-1]===0)T=L.slice(R,R+J-1);let F=T.toString();return{error_message:P(_),flag:O,mcuVersion:F,return_code:_,seVersion:N,targetId:B}},K)}async publicKey(L){try{let y=await this.serializePath(L);switch(this.versionResponse.major){case 1:return U0(this,y);case 2:{let _=Buffer.concat([a.serializeHRP("thor"),y]);return m0(this,_)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(y){return K(y)}}async getAddressAndPubKey(L,y,_=!1){try{let B=await this.serializePath(L),R=Buffer.concat([a.serializeHRP(y),B]),G=await this.transport.send(d,h.GET_ADDR_SECP256K1,_?W0.SHOW_ADDRESS_IN_DEVICE:W0.ONLY_RETRIEVE,0,R,[l.NoError]),N=Buffer.from(G.slice(0,33)),X=Buffer.from(G.slice(33,-2)).toString(),O=G.readUInt16BE(G.length-2);return{bech32_address:X,compressed_pk:N,error_message:P(O),return_code:O}}catch(B){return K(B)}}showAddressAndPubKey(L,y){return this.getAddressAndPubKey(L,y,!0)}signSendChunk(L,y,_,B=u.JSON){switch(this.versionResponse.major){case 1:return Z0(this,L,y,_,B);case 2:return k0(this,L,y,_,B);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(L,y,_=u.JSON){let B=Buffer.from(y),R=[],G;try{R=await this.signGetChunks(L,B),G=await this.signSendChunk(1,R.length,R[0],_)}catch(X){K(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!==l.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 U();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 j0 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:B,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new x.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,B),[{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((M)=>M.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"),O=X.Secp256k1Signature??X.default?.Secp256k1Signature,J=N(y),T=await this.ledgerApp.sign(this.derivationPath,J);this.validateResponse(T.return_code,T.error_message);let F=O.fromDer(T.signature).toFixedLength();return{signature:G(_[0].pubkey,F),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 Y=require("@swapkit/helpers"),K0=require("ethers");class k extends K0.AbstractSigner{chainId=Y.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor({provider:L,derivationPath:y=Y.NetworkDerivationPath.OP,chainId:_=Y.ChainId.Optimism,transport:B}){super(L);this.chainId=_||Y.ChainId.Ethereum,this.derivationPath=typeof y==="string"?y:Y.derivationPathToString(y),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.injectedTransport});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=this.injectedTransport??await U(),y=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new y(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new Y.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 Y.SwapKitError("wallet_ledger_signing_error");return _.r=`0x${_.r}`,_.s=`0x${_.s}`,y.from(_).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new Y.SwapKitError("wallet_ledger_no_provider");let y=await this.signTransaction(L);return await this.provider.broadcastTransaction(y)};signTypedData=async(L,y,_,B)=>{let{buildEIP712DomainType:R}=await import("@swapkit/toolboxes/evm"),{Signature:G,TypedDataEncoder:N}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:X,...O}=y,J=B??N.from(O).primaryType,T;try{T=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:L,message:_,primaryType:J,types:{EIP712Domain:R(L),...O}})}catch(F){let M=F instanceof Error&&"statusCode"in F;if(!M||M&&F.statusCode===27013)throw F;let D=N.hashDomain(L).slice(2),C=N.from(O).hash(_).slice(2);T=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,D,C)}if(!T)throw new Y.SwapKitError("wallet_ledger_signing_error");return T.r=`0x${T.r}`,T.s=`0x${T.s}`,G.from(T).serialized};signTransaction=async(L)=>{let{Transaction:y}=await import("ethers");await this.createTransportAndLedger();let _=await this.provider?.getTransactionCount(L.from||await this.getAddress()),B={chainId:L.chainId||this.chainId,data:L.data,gasLimit:L.gasLimit,...L.gasPrice&&{gasPrice:L.gasPrice},...!L.gasPrice&&L.maxFeePerGas&&{maxFeePerGas:L.maxFeePerGas,maxPriorityFeePerGas:L.maxPriorityFeePerGas},nonce:L.nonce!==void 0?Number((L.nonce||_||0).toString()):_,to:L.to?.toString(),type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0,value:L.value},R=y.from(B).unsignedSerialized.slice(2),{ledgerService:G}=await import("@ledgerhq/hw-app-eth"),N=await G.resolveTransaction(R,{},{erc20:!0,externalPlugins:!0}),X=await this.ledgerApp?.signTransaction(this.derivationPath,R,N);if(!X)throw new Y.SwapKitError("wallet_ledger_signing_error");let{r:O,s:J,v:T}=X;return y.from({...B,signature:{r:`0x${O}`,s:`0x${J}`,v:Number(BigInt(T))}}).serialized}}var S0=(L)=>new k({...L,chainId:Y.ChainId.Arbitrum}),V0=(L)=>new k({...L,chainId:Y.ChainId.Aurora}),A0=(L)=>new k({...L,chainId:Y.ChainId.Avalanche}),P0=(L)=>new k({...L,chainId:Y.ChainId.Base}),E0=(L)=>new k({...L,chainId:Y.ChainId.Ethereum}),I0=(L)=>new k({...L,chainId:Y.ChainId.Gnosis}),v0=(L)=>new k({...L,chainId:Y.ChainId.Optimism}),b0=(L)=>new k({...L,chainId:Y.ChainId.Polygon}),l0=(L)=>new k({...L,chainId:Y.ChainId.BinanceSmartChain}),g0=(L)=>new k({...L,chainId:Y.ChainId.Monad}),c0=(L)=>new k({...L,chainId:Y.ChainId.XLayer}),h0=(L)=>new k({...L,chainId:Y.ChainId.Berachain});async function x0(L,y){let _=(await import("@ledgerhq/hw-app-near")).default,{Chain:B,NetworkDerivationPath:R,SwapKitError:G}=await import("@swapkit/helpers"),N=y??await U(),X=new _(N),O=(L||R[B.Near]).join("'/").concat("'"),{address:J,publicKey:T}=await X.getAddress(O);return{getAddress(){return Promise.resolve(J)},async getPublicKey(){let{PublicKey:M}=await import("@near-js/crypto");return M.fromString(`ed25519:${T}`)},signDelegateAction(M){return Promise.reject(new G("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(M,D,C,H,V){return Promise.reject(new G("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(M){let{Signature:D,SignedTransaction:C}=await import("@near-js/transactions");try{let H=await X.signTransaction(M.encode(),O);if(!H)throw Error("Signature undefined");let V=new D({data:H,keyType:0}),g=new C({signature:V,transaction:M});return[H,g]}catch(H){throw new G("wallet_ledger_signing_error",{error:H})}}}}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 U(),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(),B=new Uint8Array(3+y.length);B[0]=0,B[1]=0,B[2]=0,B.set(y,3);let R=await this.ledgerApp.signTransaction(_,B);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 B=L[y+5];if(4+y+2+B!==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 $L(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 jL(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((B)=>({...B,asset:$L(B.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:B,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new i.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,B),[{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((T)=>T.address===L);if(!_)throw new i.SwapKitError("wallet_ledger_address_not_found",{address:L});let B=await import("@cosmjs/amino"),R=B.encodeSecp256k1Signature??B.default?.encodeSecp256k1Signature,G=B.serializeSignDoc??B.default?.serializeSignDoc,N=jL(y),{return_code:X,error_message:O,signature:J}=await this.ledgerApp.sign(this.derivationPath,G(N));return this.validateResponse(X,O),{signature:R(_.pubkey,G0.base64.decode(R0(J))),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:B}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new i.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,_),R0(B)}}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 U(),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");let y=JSON.stringify(L);try{let _=await this.ledgerApp.signTransaction(this.derivationPath,y,[]);if(!_)throw new v.SwapKitError("wallet_ledger_signing_error");return{...L,signature:[_]}}catch(_){throw new v.SwapKitError("wallet_ledger_signing_error",{error:_})}}}var n0=(L,y)=>new o0(L,y);var e=require("@scure/base"),c=require("@swapkit/helpers");var a0=["bitcoin-cash","dash","dogecoin","zcash"],p0=({tx:L,inputUtxos:y,btcApp:_,derivationPath:B,chain:R},G)=>{let N=y.map((F)=>{return[_.splitTransaction(F.txHex||"",!a0.includes(R),R==="zcash"),F.index,void 0,void 0]}),X=e.hex.encode(L.unsignedTx),O=_.splitTransaction(X,!0),J=_.serializeTransactionOutputs(O).toString("hex"),T={additionals:["bech32"],associatedKeysets:N.map(()=>B),inputs:N,outputScriptHex:J,segwit:!0,useTrustedInputForSegwit:!0};return _.createPaymentTransaction({...T,...G})},ML=({tx:L,inputUtxos:y,btcApp:_,derivationPaths:B,chain:R},G)=>{if(B.length!==y.length)throw new c.SwapKitError("wallet_ledger_invalid_params",{message:`Derivation paths count (${B.length}) must match inputs count (${y.length})`});let N=y.map((F)=>{return[_.splitTransaction(F.txHex||"",!a0.includes(R),R==="zcash"),F.index,void 0,void 0]}),X=e.hex.encode(L.unsignedTx),O=_.splitTransaction(X,!0),J=_.serializeTransactionOutputs(O).toString("hex"),T={additionals:["bech32"],associatedKeysets:B,inputs:N,outputScriptHex:J,segwit:!0,useTrustedInputForSegwit:!0};return _.createPaymentTransaction({...T,...G})},o=({chain:L,additionalSignParams:y})=>{return(_,B)=>{let R,G=null;async function N(){G||=B??await U();let F=(await import("@ledgerhq/hw-app-btc")).default;return R||=new F({currency:L,transport:G}),R}async function X(){return R||await N()}async function O(){if(!B)await G?.close?.();R=void 0,G=null}let J=typeof _==="string"?_:c.derivationPathToString(_),T=c.getWalletFormatFor(J);return{connect:async()=>{await X()},disconnect:O,getAddress:async()=>{let{toCashAddress:F}=await import("@swapkit/toolboxes/utxo"),M=await X(),{bitcoinAddress:D}=await M.getWalletPublicKey(J,{format:T});if(!D)throw new c.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${J}`});return L==="bitcoin-cash"&&T==="legacy"?F(D).replace(/(bchtest:|bitcoincash:)/,""):D},getExtendedPublicKey:async(F="84'/0'/0'",M=76067358)=>{return(await X()).getWalletXpub({path:F,xpubVersion:M})},signPCZT:async(F)=>{if(L!=="zcash")throw new c.SwapKitError("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});let M=await X(),{ZcashTransaction:D,Script:C}=await import("@swapkit/utxo-signer"),H=F.getGlobal(),V=new D({consensusBranchId:H.consensusBranchId,expiryHeight:H.expiryHeight,lockTime:H.lockTime,version:H.txVersion,versionGroupId:H.versionGroupId}),g=[];for(let $=0;$<F.inputsLength;$++){let Z=F.getInput($);V.addInput({index:Z.index,script:new Uint8Array,sequence:Z.sequence??4294967295,txid:Z.txid,value:Z.value}),g.push({hash:e.hex.encode(new Uint8Array([...Z.txid].reverse())),index:Z.index,txHex:QL(Z,H),value:Number(Z.value),witnessUtxo:{script:Z.scriptPubkey,value:Number(Z.value)}})}for(let $=0;$<F.outputsLength;$++){let Z=F.getOutput($);V.addOutput({amount:Z.value,script:Z.scriptPubkey})}let B0=await p0({btcApp:M,chain:L,derivationPath:J,inputUtxos:g,tx:V},{...y,expiryHeight:(()=>{let $=Buffer.alloc(4);return $.writeUInt32LE(H.expiryHeight),$})(),lockTime:H.lockTime}),Q=D.fromHex(B0,{allowUnknownOutputs:!0}),f=F.clone();for(let $=0;$<Q.inputsLength;$++){let Z=Q.getInput($);if(Z.script&&Z.script.length>0){let m=C.decode(Z.script);if(m.length>=2)f.addSignature($,m[1],m[0])}}return f},signTransaction:async(F,M)=>{let D=await X();return p0({btcApp:D,chain:L,derivationPath:J,inputUtxos:M,tx:F},y)},signTransactionWithMultiplePaths:async(F,M,D)=>{let C=await X();return ML({btcApp:C,chain:L,derivationPaths:D,inputUtxos:M,tx:F},y)}}}};function QL(L,y){let _=[],B=(y.txVersion|2147483648)>>>0;_.push(B&255,B>>8&255,B>>16&255,B>>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 O=0;O<L.index;O++)_.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 O of X)_.push(O);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=YL(require("@ledgerhq/hw-app-xrp")),n=require("@swapkit/helpers"),Q0=require("ripple-binary-codec");var qL=2147483648;function DL(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]),B=y??await U(),R=HL(B),{address:G,publicKey:N}=await R.getAddress(_);async function X(O){let{hashes:J}=await import("@swapkit/toolboxes/ripple"),F={...DL(O),Flags:O.Flags||qL,SigningPubKey:N.toUpperCase()},M=Q0.encode(F),D=await R.signTransaction(_,M),C=Q0.encode({...F,TxnSignature:D});return{hash:J.hashSignedTx(C),tx_blob:C}}return{getAddress:()=>G,signTransaction:X}};var S=async({chain:L,derivationPath:y,transport:_})=>{let{match:B}=await import("ts-pattern");return B(L).returnType().with(W.Chain.THORChain,()=>Promise.resolve(new M0(y,_))).with(W.Chain.Cosmos,()=>Promise.resolve(new j0(y,_))).with(W.Chain.Bitcoin,()=>Promise.resolve(t0(y,_))).with(W.Chain.BitcoinCash,()=>Promise.resolve(r0(y,_))).with(W.Chain.Dash,()=>Promise.resolve(LL(y,_))).with(W.Chain.Dogecoin,()=>Promise.resolve(s0(y,_))).with(W.Chain.Litecoin,()=>Promise.resolve(e0(y,_))).with(W.Chain.Zcash,()=>Promise.resolve(yL(y,_))).with(W.Chain.Ripple,()=>Promise.resolve(RL(y,_))).with(W.Chain.Tron,()=>Promise.resolve(n0(y,_))).with(W.Chain.Sui,()=>Promise.resolve(u0(y,_))).with(W.Chain.Near,()=>{return Promise.resolve(x0(y,_))}).with(W.Chain.Arbitrum,W.Chain.Aurora,W.Chain.Avalanche,W.Chain.Berachain,W.Chain.BinanceSmartChain,W.Chain.Ethereum,W.Chain.Gnosis,W.Chain.Monad,W.Chain.Optimism,W.Chain.Polygon,W.Chain.Base,W.Chain.XLayer,async()=>{let{getProvider:R}=await import("@swapkit/toolboxes/evm"),G={derivationPath:y,provider:await R(L),transport:_};return B(L).with(W.Chain.BinanceSmartChain,()=>l0(G)).with(W.Chain.Avalanche,()=>A0(G)).with(W.Chain.Arbitrum,()=>S0(G)).with(W.Chain.Berachain,()=>h0(G)).with(W.Chain.Optimism,()=>v0(G)).with(W.Chain.Polygon,()=>b0(G)).with(W.Chain.Base,()=>P0(G)).with(W.Chain.Aurora,()=>V0(G)).with(W.Chain.Gnosis,()=>I0(G)).with(W.Chain.Monad,()=>g0(G)).with(W.Chain.XLayer,()=>c0(G)).otherwise(()=>E0(G))}).otherwise(()=>{throw new W.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:W.WalletOption.LEDGER})})};var GL=w0.createWallet({connect:({addChain:L,supportedChains:y,walletType:_})=>async function(R,G,{address:N,transport:X}={}){let[O]=w.filterSupportedChains({chains:R,supportedChains:y,walletType:_});if(!O)return!1;let J=G??w.NetworkDerivationPath[O],T=await kL({address:N,chain:O,derivationPath:J,transport:X});return L({...T,chain:O,walletType:w.WalletOption.LEDGER}),!0},directSigningSupport:{[w.Chain.Arbitrum]:!0,[w.Chain.Aurora]:!0,[w.Chain.Avalanche]:!0,[w.Chain.Base]:!0,[w.Chain.Berachain]:!0,[w.Chain.BinanceSmartChain]:!0,[w.Chain.Ethereum]:!0,[w.Chain.Gnosis]:!0,[w.Chain.Monad]:!0,[w.Chain.Bitcoin]:!0,[w.Chain.BitcoinCash]:!0,[w.Chain.Cosmos]:!0,[w.Chain.Dash]:!0,[w.Chain.Dogecoin]:!0,[w.Chain.Litecoin]:!0,[w.Chain.Near]:!0,[w.Chain.Optimism]:!0,[w.Chain.Polygon]:!0,[w.Chain.Ripple]:!0,[w.Chain.Sui]:!0,[w.Chain.THORChain]:!0,[w.Chain.Tron]:!0,[w.Chain.XLayer]:!0},getExtendedPublicKey:wL,name:"connectLedger",supportedChains:[w.Chain.Arbitrum,w.Chain.Aurora,w.Chain.Avalanche,w.Chain.Base,w.Chain.Berachain,w.Chain.BinanceSmartChain,w.Chain.Bitcoin,w.Chain.BitcoinCash,w.Chain.Cosmos,w.Chain.Dash,w.Chain.Dogecoin,w.Chain.Ethereum,w.Chain.Gnosis,w.Chain.Litecoin,w.Chain.Monad,w.Chain.Near,w.Chain.Optimism,w.Chain.Polygon,w.Chain.Ripple,w.Chain.Sui,w.Chain.THORChain,w.Chain.XLayer,w.Chain.Tron,w.Chain.Zcash],walletType:w.WalletOption.LEDGER}),UL=w0.getWalletSupportedChains(GL);function zL(L,y="t"){if(!L?.includes("=:"))return L;let _=L.includes(`:${y}:`)?L.split(`:${y}:`)[0]:L;return _?.substring(0,_.lastIndexOf(":"))}async function wL(L,y,{accountIndex:_}={}){if(![w.Chain.BitcoinCash,w.Chain.Bitcoin,w.Chain.Dash,w.Chain.Dogecoin,w.Chain.Litecoin,w.Chain.Zcash].includes(L))throw new w.SwapKitError("wallet_chain_not_supported",{chain:L,wallet:w.WalletOption.LEDGER});let B=L,R=await S({chain:B,derivationPath:y});if(!R.getExtendedPublicKey)return;let G=q.getUTXOAccountPath({accountIndex:_,chain:B,derivationPath:y}),N=w.derivationPathToString(G),X=L===w.Chain.Bitcoin||L===w.Chain.Litecoin?N:N.replace(/^m\//,""),O=q.getNetworkForChain(B).bip32.public;try{let J=await R.getExtendedPublicKey(X,O);return{accountIndex:q.getUTXOAccountIndexFromPath(G),path:N,xpub:J}}finally{await R.disconnect?.()}}async function kL({address:L,chain:y,derivationPath:_,transport:B}){switch(y){case w.Chain.BitcoinCash:case w.Chain.Bitcoin:case w.Chain.Dash:case w.Chain.Dogecoin:case w.Chain.Litecoin:case w.Chain.Zcash:{let C=function(Q={}){return D(Q)},{getUtxoToolbox:R}=await import("@swapkit/toolboxes/utxo"),G=y,N=await S({chain:y,derivationPath:_,transport:B}),X=L??await b({chain:y,ledgerClient:N}),O,J;if(y===w.Chain.Bitcoin){let{BitcoinPsbtLedger:Q}=await import("../chunk-3gajmdgz.js"),f=Q(_,B);O={getAddress:f.getAddress,signTransaction:f.signTransaction}}else if(y===w.Chain.BitcoinCash||y===w.Chain.Dogecoin||y===w.Chain.Dash||y===w.Chain.Litecoin){let{createLegacyPsbtSigner:Q,signLegacyPsbtTransaction:f}=await import("../chunk-hegt01q0.js");O=Q({address:X,chain:G,legacyClient:N}),J=async($)=>{let Z=await f({chain:G,legacyClient:N,tx:$});return T.broadcastTx(Z)}}let T=O?await R(G,{signer:O}):R(G),F=J??T.signAndBroadcastTransaction,M=async(Q)=>{let f=Q.feeRate||(await T.getFeeRates())[w.FeeOption.Average],$=[w.Chain.Bitcoin].includes(y)?Q.memo:zL(Q.memo),{tx:Z,inputs:m}=await T.createTransaction({...Q,feeRate:f,fetchTxHex:!0,memo:$,sender:X}),A=await N.signTransaction(Z,m);return await T.broadcastTx(A)};async function D({accountIndex:Q}={}){if(!N.getExtendedPublicKey)return;let f=q.getUTXOAccountPath({accountIndex:Q,chain:G,derivationPath:_}),$=w.derivationPathToString(f),Z=y===w.Chain.Bitcoin||y===w.Chain.Litecoin?$:$.replace(/^m\//,""),m=q.getNetworkForChain(G).bip32.public,A=await N.getExtendedPublicKey(Z,m);return{accountIndex:q.getUTXOAccountIndexFromPath(f),path:$,xpub:A}}async function H({accountIndex:Q,index:f,change:$=!1}){try{let Z=q.getUTXOAddressPath({accountIndex:Q,chain:G,change:$,derivationPath:_,index:f}),m=await S({chain:G,derivationPath:Z,transport:B}),A=await b({chain:G,ledgerClient:m});return{accountIndex:q.getUTXOAccountIndexFromPath(Z),address:A,change:$,index:f,path:w.derivationPathToString(Z),pubkey:""}}catch{return}}async function V({accountIndex:Q,count:f,startIndex:$=0,change:Z=!1}){return q.assertDerivationIndex("count",f),q.assertDerivationIndex("startIndex",$),(await Promise.all(Array.from({length:f},(A,r)=>H({accountIndex:Q,change:Z,index:$+r})))).filter((A)=>!!A)}let g=q.createHDWalletHelpers({chain:G,deriveAddress:H,getBalance:T.getBalance,getUtxos:(Q)=>q.getUtxoApi(G).getUtxos({address:Q,fetchTxHex:!0})});async function B0({utxos:Q,recipient:f,assetValue:$,memo:Z,feeRate:m,feeOptionKey:A,changeAddress:r}){if(!Q.length)throw new w.SwapKitError("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let BL=m||(await T.getFeeRates())[A||w.FeeOption.Fast],N0=Z?q.compileMemo(Z):null,Y0=[{address:f,value:$.getBaseValue("number")}];if(N0)Y0.push({script:N0,value:0});let NL=Q.map(({hash:L0,index:y0,value:X0,txHex:O0,witnessUtxo:T0})=>({hash:L0,index:y0,txHex:O0,value:X0,witnessUtxo:T0})),{inputs:s,outputs:q0}=T.accumulative({chain:G,feeRate:BL,inputs:NL,outputs:Y0});if(!(s&&q0))throw new w.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}),OL=r||Q[0]?.address||f;q.addInputsAndOutputs({chain:G,compiledMemo:N0,inputs:s,outputs:q0,sender:OL,tx:D0});let TL=q.getUTXOAccountPath({chain:G,derivationPath:_}),FL=s.map((L0)=>{let y0=Q.find((H0)=>H0.hash===L0.hash&&H0.index===L0.index),X0=y0?.derivationIndex??0,O0=y0?.isChange??!1,T0=[...TL,Number(O0),X0];return w.derivationPathToString(T0)});if(!N.signTransactionWithMultiplePaths)throw new w.SwapKitError("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let WL=await N.signTransactionWithMultiplePaths(D0,s,FL);return T.broadcastTx(WL)}return{...T,...g,address:X,deriveAddressAtIndex:H,deriveAddresses:V,getExtendedPublicKey:C,getExtendedPublicKeyInfo:D,signAndBroadcastTransaction:F,transfer:M,transferFromMultipleAddresses:B0}}case w.Chain.Ethereum:case w.Chain.Avalanche:case w.Chain.Arbitrum:case w.Chain.Berachain:case w.Chain.Optimism:case w.Chain.Polygon:case w.Chain.BinanceSmartChain:case w.Chain.Base:case w.Chain.Aurora:case w.Chain.Gnosis:case w.Chain.Monad:case w.Chain.XLayer:{let{getEvmToolboxAsync:R}=await import("@swapkit/toolboxes/evm"),G=await S({chain:y,derivationPath:_,transport:B}),N=await b({chain:y,ledgerClient:G});return{...await R(y,{signer:G}),address:N}}case w.Chain.Cosmos:{let{createSigningStargateClient:R,getMsgSendDenom:G,getCosmosToolbox:N}=await import("@swapkit/toolboxes/cosmos"),X=await S({chain:y,derivationPath:_,transport:B}),O=await b({chain:y,ledgerClient:X});return{...await N(w.Chain.Cosmos,{signer:X}),address:O,transfer:async({assetValue:F,recipient:M,memo:D})=>{if(!F)throw new w.SwapKitError("wallet_ledger_invalid_asset");let C={amount:[{amount:F.getBaseValue("string"),denom:G(`u${F.symbol}`).toLowerCase()}],fromAddress:O,toAddress:M},H=await w.getRPCUrl(y),V=await R(H,X,"0.007uatom"),{transactionHash:g}=await V.signAndBroadcast(O,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:C}],2,D);return g}}}case w.Chain.THORChain:{let R=await S({chain:y,derivationPath:_,transport:B}),{getCosmosToolbox:G}=await import("@swapkit/toolboxes/cosmos"),N=G(y,{signer:R}),X=await b({chain:y,ledgerClient:R}),{sign:O}=R;return{...N,address:X,signMessage:O}}case w.Chain.Near:{let{getNearToolbox:R}=await import("@swapkit/toolboxes/near"),G=await S({chain:y,derivationPath:_,transport:B}),N=await G.getAddress();return{...R({signer:G}),address:N}}case w.Chain.Ripple:{let{getRippleToolbox:R}=await import("@swapkit/toolboxes/ripple"),G=await S({chain:y,derivationPath:_,transport:B}),N=G.getAddress();return{...R({signer:G}),address:N}}case w.Chain.Tron:{let{getTronToolbox:R}=await import("@swapkit/toolboxes/tron"),G=await S({chain:y,derivationPath:_,transport:B}),N=await b({chain:y,ledgerClient:G});return{...R({signer:G}),address:N}}case w.Chain.Sui:{let{getSuiToolbox:R}=await import("@swapkit/toolboxes/sui"),G=await S({chain:y,derivationPath:_,transport:B}),N=await b({chain:y,ledgerClient:G});return{...R({signer:G}),address:N}}default:throw new w.SwapKitError("wallet_ledger_chain_not_supported",{chain:y})}}
3
2
 
4
- //# debugId=93F56E5A7C0AA68B64756E2164756E21
3
+ //# debugId=A36A2434BEB1E7B064756E2164756E21
5
4
  //# sourceMappingURL=index.cjs.map