@swapkit/wallet-hardware 4.9.34 → 4.11.0

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